A class library to compute - dew point - heat index - windchill - cloud base Eine Klassenbibliothek zur Ermittlung von: - Taupunkt - Hitzeindex - Windchill - Wolkenuntergrenze
$ dotnet add package WeatherCalcnamespace FIA.Lueck
{
/// <summary>
/// Klasse mit "Super"-Wettermethoden 😉
/// </summary>
public static class WeatherCalc
{
//Documentation comments - Dokumentationskommentare
//Once in English
/// <summary>
/// Determines the dew point at a given humidity and temperature.
/// </summary>
/// <param name="Temperature">Temperature in °C >= 0</param>
/// <param name="Humidity">Relative humidity in %</param>
/// <returns>Dew point in °C</returns>
public static double DewPoint(double Temperature, double Humidity)
{
//https://www.wetterochs.de/wetter/feuchte.html
double a = 7.5, b = 237.3;
double SDD = 6.1078 * Math.Pow(10, a * Temperature / (b + Temperature));
double DD = Humidity / 100 * SDD;
double v = Math.Log10(DD / 6.1078);
double TD = b * v / (a - v);
return TD;
}
//Mal auf Deutsch
/// <summary>
/// Ermittlung die Wolkenhöhe.
/// </summary>
/// <param name="Temperatur">Temperatur in °C</param>
/// <param name="Taupunkt">Taupunkt in °C</param>
/// <returns>Die Wolkenhöhe in m</returns>
public static double Wolkenhöhe(double Temperatur, double Taupunkt)
{
//https://de.wikipedia.org/wiki/Kondensationsniveau
return (Temperatur - Taupunkt) * 125;
}
/// <summary>
/// Ermittlung des Windchill für eine gegebene Temperatur bei einer
/// gegebenen Windgeschwindigkeit.
/// Gilt nur für Temperaturen <= 10°C
/// </summary>
/// <param name="Temperature">Lufttemperatur in Celsius</param>
/// <param name="WindSpeed">Windgeschwindigkeit in km/h</param>
/// <returns>Den Windchill</returns>
public static double Windchill(double Temperature, double WindSpeed)
{
//https://de.wikipedia.org/wiki/Windchill
if (WindSpeed < 5 || Temperature > 10)
{
return double.MaxValue;
}
double Windchill = 13.12 + 0.6215 *
Temperature + (0.3965 * Temperature - 11.37) *
Math.Pow(WindSpeed, 0.16);
return Windchill;
}
/// <summary>
/// Determination of the heat index at a given temperature and humidity.
/// </summary>
/// <param name="Temperature">Temperature in °C >= 20</param>
/// <param name="Humidity">Relative humidity in %</param>
/// <returns>Heat-Index</returns>
public static double HeatIndex(double Temperature, double Humidity)
{
//https://de.wikipedia.org/wiki/Hitzeindex
double c1 = -8.784695, c2 = 1.61139411, c3 = 2.338549,
c4 = -0.14611605, c5 = -1.2308094e-2, c6 = -1.6424828e-2,
c7 = 2.211732e-3, c8 = 7.2546e-4, c9 = -3.582e-6;
return c1 +
c2 * Temperature +
c3 * Humidity +
c4 * Temperature * Humidity +
c5 * Temperature * Temperature +
c6 * Humidity * Humidity +
c7 * Temperature * Temperature * Humidity +
c8 * Temperature * Humidity * Humidity +
c9 * Temperature * Temperature * Humidity * Humidity;
}
}
}