weather-formulas
Version:
A collection of atmospheric, meteorological weather calculations
238 lines (237 loc) • 8.48 kB
TypeScript
import { Reading } from '../common';
export interface IValuationSet {
a: number;
b: number;
c: number;
d: number;
}
/**
*
* @param {number} temperature Temperature in K (Kelvin)
* @param {number} humidity Humidity in RH (Relative Humidity)
* @param {IValuationSet} valuationSet The valuation set to use in the calculation
* @returns {number} Dew Point in Kelvin
*/
declare function dewPointMagnusFormula(temperature: number, humidity: number, valuationSet?: IValuationSet): number;
/**
*
* @param {number} temperature Temperature in K (Kelvin)
* @param {number} humidity Humidity in RH (Relative Humidity)
* @param {IValuationSet} valuationSet The valuation set to use in the calculation
* @returns {number} Dew Point in Kelvin
*/
declare function dewPointArdenBuckEquation(temperature: number, humidity: number, valuationSet?: IValuationSet): number;
/**
* Calculate Potential Temperature
* @param {number} temperature Temperature in K (Kelvin)
* @param {number} pressure Pressure in Pa (Pascal)
* @returns {number} Potential Temperature in K (Kelvin)
*/
declare function potentialTemperature(temperature: number, pressure: number): number;
/**
* Calculate Virtual Temperature
* @param {number} temperature Temperature in K (Kelvin)
* @param {number} mixingRatio Mixing Ratio in g/kg (grams per kilogram)
* @returns {number} Virtual Temperature in K (Kelvin)
*/
declare function virtualTemperature(temperature: number, mixingRatio: number): number;
/**
*
* @param {number} temperature Temperature in K (Kelvin)
* @param {number} windSpeed Windspeed in M/S (meter per second)
* @returns {number} Wind Chill Index in Kelvin
*/
declare function windChillIndex(temperature: number, windSpeed: number): number;
/**
* @param {number} temperature Temperature in K (Kelvin)
* @param {number} humidity Humidity in RH (Relative Humidity)
* @param {number} windspeed Windspeed in M/S (meter per second)
* @returns {number} Apparent Temperature in Kelvin
*/
declare function australianAapparentTemperature(temperature: number, humidity: number, windspeed: number): number;
/**
*
* @param {number} temperature Temperature in K (Kelvin)
* @param {number} humidity Humidity in RH (Relative Humidity)
* @returns {number} Heat Index in Kelvin
*/
declare function heatIndex(temperature: number, humidity: number): number;
/**
*
* @param {number} heatIndexTemperature Temperature in K (Kelvin)
* @returns {string} Heat Index Warning
*/
declare function heatIndexText(heatIndexTemperature: number): null | {
lowerLimit: number;
text: string;
warning: string;
};
/**
* Gets the Humidex temperature
* @param {number} temperature Temperature in K (Kelvin)
* @param {number} humidity Humidity in RH (Relative Humidity)
* @returns {number} Humidex in Kelvin
*/
declare function humidex(temperature: number, humidity: number): number;
/**
* Gets the Humidex test warning
* @param {number} humidex Temperature in K (Kelvin)
* @returns {string} Humidex Warning
*/
declare function humidexText(humidex: number): null | {
lowerLimit: number;
text: string;
};
/**
* Calculate the lapse rate
* @param altitude1 Lower or higher altitude 1
* @param T1 Temperature at altitude 1
* @param altitude2 Lower or higher altitude 2
* @param T2 Temperature at altitude 2
* @returns Lapse rate
*/
declare function calculateLapseRate(altitude1: number, T1: number, altitude2: number, T2: number): number;
/**
* Calculate dynamic lapse rate based on a range of altitude and temperature data
* @param readings Readings data
* @param hours Number of hours to read
* @param filterByLastReading Filter by the datetime in the most recent reading
* @returns Dynamic lapse rate, or default.
*/
declare function calculateDynamicLapseRate(readings: Reading[], hours?: number, filterByLastReading?: boolean): number;
/**
*
* @param readings Readings data
* @param hours Hours to filter
* @returns Weighted average temperature
*/
declare function calculateWeightedAverageTemperature(readings: Reading[], hours?: number): number;
/**
*
* @param altitude1 Lower or higher altitude 1
* @param T1 Temperature at altitude 1
* @param altitude2 Lower og higher altitude 2
* @param T2 Temperature at altitude 2
* @returns True if inversion is detected
*/
declare function isTemperatureInversion(altitude1: number, T1: number, altitude2: number, T2: number): boolean;
/**
* Adjust pressure to sea level by fixed lapse ratio.
* @param {number} altitude altitude in meters.
* @param {number} temperature temperature at altitude in Celcius|Kelvin|Fahrenheit.
* @param {number} lapseRate Custom lapse rate. Defaults to standard lapse rate.
* @returns Adjusted pressure
*/
declare function adjustTemperatureByLapseRate(altitude: number, temperature: number, lapseRate?: number): number;
/**
* Convert Kelvin to Celcius
* @param {number} temperature Temperature in K (Kelvin)
* @returns {number} Celcius
*/
declare function kelvinToCelcius(temperature: number): number;
/**
* Convert Celcius to Kelvin
* @param {number} temperature Temperature in C (Celcius)
* @returns {number} Kelvin
*/
declare function celciusToKelvin(temperature: number): number;
/**
*
* @param celcius Celcius degrees
* @returns Fahrenheit degrees
*/
declare function celciusToFahrenheit(celcius: number): number;
/**
*
* @param fahrenheit Fahrenheit degrees
* @returns Celcius degrees
*/
declare function fahrenheitToCelcius(fahrenheit: number): number;
/**
*
* @param kelvin Kelvin degrees
* @returns Fahrenheit degrees
*/
declare function kelvinToFahrenheit(kelvin: number): number;
/**
*
* @param fahrenheit Fahrenheit degrees
* @returns Kelvin degrees
*/
declare function fahrenheitToKelvin(fahrenheit: number): number;
/**
* Round decimal number to two decimals
* @param {number} num Number
* @returns {number} num rounded to two decimals
*/
declare function roundToTwoDecimals(num: number): number;
/**
* Convert M/S to KM/H
* @param {number} mps Meter Per Second
* @returns {number} KM/H
*/
declare function meterPerSecondToKilometerPerHour(mps: number): number;
declare const _default: {
dewPointMagnusFormula: typeof dewPointMagnusFormula;
dewPointArdenBuckEquation: typeof dewPointArdenBuckEquation;
windChillIndex: typeof windChillIndex;
australianAapparentTemperature: typeof australianAapparentTemperature;
heatIndex: typeof heatIndex;
heatIndexText: typeof heatIndexText;
humidex: typeof humidex;
humidexText: typeof humidexText;
roundToTwoDecimals: typeof roundToTwoDecimals;
kelvinToCelcius: typeof kelvinToCelcius;
celciusToKelvin: typeof celciusToKelvin;
celciusToFahrenheit: typeof celciusToFahrenheit;
fahrenheitToCelcius: typeof fahrenheitToCelcius;
kelvinToFahrenheit: typeof kelvinToFahrenheit;
fahrenheitToKelvin: typeof fahrenheitToKelvin;
meterPerSecondToKilometerPerHour: typeof meterPerSecondToKilometerPerHour;
potentialTemperature: typeof potentialTemperature;
virtualTemperature: typeof virtualTemperature;
DEW_POINT_VALUATIONS: {
readonly ARDENBUCK_DEFAULT: {
readonly a: 6.1121;
readonly b: 18.678;
readonly c: 257.14;
readonly d: 234.5;
};
readonly DAVID_BOLTON: {
readonly a: 6.112;
readonly b: 17.67;
readonly c: 234.5;
readonly d: 234.5;
};
readonly SONNTAG1990: {
readonly a: 6.112;
readonly b: 17.62;
readonly c: 243.12;
readonly d: 234.5;
};
readonly PAROSCIENTIFIC: {
readonly a: 6.105;
readonly b: 17.27;
readonly c: 237.7;
readonly d: 234.5;
};
readonly ARDENBUCK_PLUS: {
readonly a: 6.1121;
readonly b: 17.368;
readonly c: 238.88;
readonly d: 234.5;
};
readonly ARDENBUCK_MINUS: {
readonly a: 6.1121;
readonly b: 17.966;
readonly c: 247.15;
readonly d: 234.5;
};
};
calculateLapseRate: typeof calculateLapseRate;
calculateDynamicLapseRate: typeof calculateDynamicLapseRate;
calculateWeightedAverageTemperature: typeof calculateWeightedAverageTemperature;
isTemperatureInversion: typeof isTemperatureInversion;
adjustTemperatureByLapseRate: typeof adjustTemperatureByLapseRate;
};
export default _default;