UNPKG

weather-formulas

Version:

A collection of atmospheric, meteorological weather calculations

92 lines (91 loc) 3.43 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const constants_1 = __importDefault(require('../constants.cjs')); /** * Calculate Relative Humidity * @param {number} temperature Temperature in K (Kelvin) * @param {number} dewPoint Dew Point in K (Kelvin) * @returns {number} Relative Humidity in percentage (%) */ function relativeHumidity(temperature, dewPoint) { const RH = 100 * (Math.exp((17.625 * (dewPoint - constants_1.default.KELVIN)) / (243.04 + (dewPoint - constants_1.default.KELVIN))) / Math.exp((17.625 * (temperature - constants_1.default.KELVIN)) / (243.04 + (temperature - constants_1.default.KELVIN)))); return RH; } /** * * @param mH20 Mass of water vapor g/m3 * @param Vnet Volume of air (m3) * @returns */ function absoluteHumidity(mH2O, Vnet) { if (Vnet <= 0) { throw new Error("Vnet must be greater than 0 to avoid division by zero."); } const AH = mH2O / Vnet; // AH: absolute humidity (mass of water vapor per unit volume) return AH; } /** * * @param RH Relative humidity % * @param T Temperature in Kelvin * @returns Absolute Humidity */ function absoluteHumidityByRelativeHumidity(RH, T) { const M_w = 18.015; // g/mol - Molar mass of water vapor const R = constants_1.default.DEFAULT_ATMOSPHERIC_CONSTANTS.gasConstant; // J/(mol·K) - Universal gas constant // Calculate saturation vapor pressure (Pa) const P_sat = saturationVaporPressure(T); // Convert RH from percentage to fraction const RH_fraction = RH / 100; // Calculate absolute humidity (g/m³) const AH = (RH_fraction * P_sat * M_w) / (R * T); return AH; } /** * Calculate Specific Humidity * @param {number} mixingRatio Mixing Ratio in g/kg (grams per kilogram) * @returns {number} Specific Humidity in kg/kg (kilograms per kilogram) */ function specificHumidity(mixingRatio) { return mixingRatio / (1 + mixingRatio); } /** * Calculate Mixing Ratio * @param {number} vaporPressure Vapor Pressure in Pa (Pascal) * @param {number} pressure Pressure in Pa (Pascal) * @returns {number} Mixing Ratio in g/kg (grams per kilogram) */ function mixingRatio(vaporPressure, pressure) { return (0.622 * vaporPressure) / (pressure - vaporPressure) * 1000; } /** * Calculate Vapor Pressure using the Clausius-Clapeyron equation. * @param {number} temperature Temperature in K (Kelvin) * @returns {number} Vapor Pressure in Pa (Pascal) */ function vaporPressure(temperature) { const T = temperature; // Keep temperature in Kelvin return 611.2 * Math.exp((17.67 * (T - constants_1.default.KELVIN)) / ((T - constants_1.default.KELVIN) + 243.5)); } /** * Calculate Saturation Vapor Pressure using the Clausius-Clapeyron equation. * @param {number} temperature Temperature in K (Kelvin) * @returns {number} Saturation Vapor Pressure in Pa (Pascal) */ function saturationVaporPressure(temperature) { const T = temperature; // Keep temperature in Kelvin return 611.2 * Math.exp((17.62 * (T - constants_1.default.KELVIN)) / (243.12 + (T - constants_1.default.KELVIN))); } exports.default = { relativeHumidity, absoluteHumidity, absoluteHumidityByRelativeHumidity, mixingRatio, vaporPressure, saturationVaporPressure, specificHumidity };