/** * PhysicalQuantity — Branded numeric types for dimensional safety. * * Uses TypeScript's structural type system with branded intersections * to prevent mixing incompatible physical quantities at compile time. * All internal computation uses SI base units; conversion happens * only at system boundaries (user input, data export). * * References: * BIPM SI Brochure (9th ed., 2019) — base unit definitions * NIST SP 811 — Guide for the Use of the International System of Units */ /** * Encodes SI base-unit exponents: [kg, m, s, K, A, mol, cd]. * Example: Force (N = kg·m/s²) → [1, 1, -2, 0, 0, 0, 0] */ export type DimensionVector = readonly [ kg: number, m: number, s: number, K: number, A: number, mol: number, cd: number ]; declare const __brand: unique symbol; /** * A number carrying a compile-time dimensional brand. * At runtime it's just a number — zero overhead. */ export type Quantity = number & { readonly [__brand]: Brand; }; /** Temperature in Kelvin (K) */ export type Temperature = Quantity<'Temperature_K'>; /** Pressure in Pascals (Pa = kg/(m·s²)) */ export type Pressure = Quantity<'Pressure_Pa'>; /** Force in Newtons (N = kg·m/s²) */ export type Force = Quantity<'Force_N'>; /** Length in meters (m) */ export type Length = Quantity<'Length_m'>; /** Area in square meters (m²) */ export type Area = Quantity<'Area_m2'>; /** Volume in cubic meters (m³) */ export type Volume = Quantity<'Volume_m3'>; /** Time in seconds (s) */ export type Time = Quantity<'Time_s'>; /** Mass in kilograms (kg) */ export type Mass = Quantity<'Mass_kg'>; /** Density in kg/m³ */ export type Density = Quantity<'Density_kg_m3'>; /** Velocity in m/s */ export type Velocity = Quantity<'Velocity_m_s'>; /** Thermal conductivity in W/(m·K) */ export type ThermalConductivity = Quantity<'ThermalConductivity_W_mK'>; /** Specific heat capacity in J/(kg·K) */ export type SpecificHeat = Quantity<'SpecificHeat_J_kgK'>; /** Thermal diffusivity in m²/s */ export type ThermalDiffusivity = Quantity<'ThermalDiffusivity_m2_s'>; /** Heat transfer coefficient in W/(m²·K) */ export type HeatTransferCoefficient = Quantity<'HTC_W_m2K'>; /** Heat flux in W/m² */ export type HeatFlux = Quantity<'HeatFlux_W_m2'>; /** Power / heat output in Watts (W = kg·m²/s³) */ export type Power = Quantity<'Power_W'>; /** Energy in Joules (J = kg·m²/s²) */ export type Energy = Quantity<'Energy_J'>; /** Young's modulus in Pascals (Pa) */ export type YoungsModulus = Quantity<'YoungsModulus_Pa'>; /** Yield strength in Pascals (Pa) */ export type YieldStrength = Quantity<'YieldStrength_Pa'>; /** Stress in Pascals (Pa) */ export type Stress = Quantity<'Stress_Pa'>; /** Acceleration in m/s² */ export type Acceleration = Quantity<'Acceleration_m_s2'>; /** Strain (dimensionless) */ export type Strain = Quantity<'Strain'>; /** Poisson's ratio (dimensionless, 0 < v < 0.5) */ export type PoissonRatio = Quantity<'PoissonRatio'>; /** Dynamic viscosity in Pa·s */ export type DynamicViscosity = Quantity<'DynamicViscosity_Pa_s'>; /** Kinematic viscosity in m²/s */ export type KinematicViscosity = Quantity<'KinematicViscosity_m2_s'>; /** Flow rate in m³/s */ export type FlowRate = Quantity<'FlowRate_m3_s'>; /** Pipe roughness (dimensionless Darcy-Weisbach friction factor) */ export type Roughness = Quantity<'Roughness'>; /** * Wrap a raw number as a specific physical quantity. * Use at system boundaries where raw numbers enter the simulation. */ export declare function temperature(value: number): Temperature; export declare function pressure(value: number): Pressure; export declare function force(value: number): Force; export declare function length(value: number): Length; export declare function area(value: number): Area; export declare function volume(value: number): Volume; export declare function time(value: number): Time; export declare function mass(value: number): Mass; export declare function density(value: number): Density; export declare function velocity(value: number): Velocity; export declare function thermalConductivity(value: number): ThermalConductivity; export declare function specificHeat(value: number): SpecificHeat; export declare function thermalDiffusivity(value: number): ThermalDiffusivity; export declare function heatTransferCoefficient(value: number): HeatTransferCoefficient; export declare function power(value: number): Power; export declare function energy(value: number): Energy; export declare function youngsModulus(value: number): YoungsModulus; export declare function yieldStrength(value: number): YieldStrength; export declare function stress(value: number): Stress; export declare function acceleration(value: number): Acceleration; export declare function strain(value: number): Strain; export declare function poissonRatio(value: number): PoissonRatio; export declare function dynamicViscosity(value: number): DynamicViscosity; export declare function kinematicViscosity(value: number): KinematicViscosity; export declare function flowRate(value: number): FlowRate; export declare function roughness(value: number): Roughness; /** * Temperature conversions — all return Kelvin (SI base). */ export declare function celsiusToKelvin(celsius: number): Temperature; export declare function kelvinToCelsius(kelvin: Temperature): number; export declare function fahrenheitToKelvin(fahrenheit: number): Temperature; export declare function kelvinToFahrenheit(kelvin: Temperature): number; /** * Pressure conversions — all return Pascals (SI base). */ export declare function barToPascal(bar: number): Pressure; export declare function pascalToBar(pascal: Pressure): number; export declare function psiToPascal(psi: number): Pressure; export declare function pascalToPsi(pascal: Pressure): number; export declare function atmToPascal(atm: number): Pressure; export declare function pascalToAtm(pascal: Pressure): number; /** * Length conversions — all return meters (SI base). */ export declare function millimetersToMeters(mm: number): Length; export declare function metersToMillimeters(m: Length): number; export declare function inchesToMeters(inches: number): Length; export declare function metersToInches(m: Length): number; export declare function feetToMeters(feet: number): Length; export declare function metersToFeet(m: Length): number; /** * Power / energy conversions. */ export declare function kilowattsToWatts(kw: number): Power; export declare function wattsToKilowatts(w: Power): number; export declare function btuPerHourToWatts(btu_hr: number): Power; export declare function wattsToBtuPerHour(w: Power): number; /** * Flow rate conversions — all return m³/s (SI base). */ export declare function litersPerSecondToM3s(lps: number): FlowRate; export declare function m3sToLitersPerSecond(m3s: FlowRate): number; export declare function gallonsPerMinuteToM3s(gpm: number): FlowRate; export declare function m3sToGallonsPerMinute(m3s: FlowRate): number; export {}; //# sourceMappingURL=PhysicalQuantity.d.ts.map