Set the inland-ice property when the mean ground temperatures get low enough
This commit is contained in:
parent
dbba5d9ad2
commit
f287bd9133
2 changed files with 15 additions and 10 deletions
|
@ -137,6 +137,7 @@ void FGClimate::reinit()
|
||||||
_dust_cover = -99999.0;
|
_dust_cover = -99999.0;
|
||||||
_wetness = -99999.0;
|
_wetness = -99999.0;
|
||||||
_lichen_cover = -99999.0;
|
_lichen_cover = -99999.0;
|
||||||
|
_inland_ice_cover = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Set all environment parameters based on the koppen-classicfication
|
// Set all environment parameters based on the koppen-classicfication
|
||||||
|
@ -837,19 +838,19 @@ void FGClimate::set_environment()
|
||||||
}
|
}
|
||||||
|
|
||||||
// Sea water will start to freeze at -2° water temperaure.
|
// Sea water will start to freeze at -2° water temperaure.
|
||||||
if (_is_autumn < 0.95 || _sl.temperature_mean > -2.0)
|
if (_is_autumn < 0.95 || _sl.temperature_mean > -2.0) {
|
||||||
{
|
|
||||||
// Inland water will start to freeze at 0⁰ water temperature.
|
|
||||||
if (_gl.temperature_mean > 0.0) {
|
|
||||||
_set(_ice_cover, 0.0);
|
_set(_ice_cover, 0.0);
|
||||||
} else {
|
} else {
|
||||||
_set(_ice_cover, 0.05);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
_set(_ice_cover, std::min(-(_sl.temperature_water+2.0)/10.0, 1.0));
|
_set(_ice_cover, std::min(-(_sl.temperature_water+2.0)/10.0, 1.0));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Inland water will start to freeze at 0⁰ water temperature.
|
||||||
|
if (_gl.temperature_mean > 0.5) {
|
||||||
|
_inland_ice_cover = false;
|
||||||
|
} else {
|
||||||
|
_inland_ice_cover = true;
|
||||||
|
}
|
||||||
|
|
||||||
// less than 20 mm/month of precipitation is considered dry.
|
// less than 20 mm/month of precipitation is considered dry.
|
||||||
if (_gl.precipitation < 20.0 || _gl.precipitation_annual < 240.0)
|
if (_gl.precipitation < 20.0 || _gl.precipitation_annual < 240.0)
|
||||||
{
|
{
|
||||||
|
@ -911,6 +912,7 @@ void FGClimate::set_environment()
|
||||||
fgSetDouble("/environment/snow-level-m", _snow_level);
|
fgSetDouble("/environment/snow-level-m", _snow_level);
|
||||||
}
|
}
|
||||||
fgSetDouble("/environment/surface/snow-thickness-factor", _snow_thickness);
|
fgSetDouble("/environment/surface/snow-thickness-factor", _snow_thickness);
|
||||||
|
fgSetBool("/environment/surface/ice-cover", _inland_ice_cover);
|
||||||
fgSetDouble("/environment/sea/surface/ice-cover", _ice_cover);
|
fgSetDouble("/environment/sea/surface/ice-cover", _ice_cover);
|
||||||
fgSetDouble("/environment/surface/dust-cover-factor", _dust_cover);
|
fgSetDouble("/environment/surface/dust-cover-factor", _dust_cover);
|
||||||
fgSetDouble("/environment/surface/wetness-set", _wetness);
|
fgSetDouble("/environment/surface/wetness-set", _wetness);
|
||||||
|
@ -1247,6 +1249,8 @@ void FGClimate::report()
|
||||||
std::cout << " Wind direction: " << _wind_direction << " degrees"
|
std::cout << " Wind direction: " << _wind_direction << " degrees"
|
||||||
<< std::endl;
|
<< std::endl;
|
||||||
std::cout << " Snow level: " << _snow_level << " m." << std::endl;
|
std::cout << " Snow level: " << _snow_level << " m." << std::endl;
|
||||||
|
std::cout << " Inland water bodies ice cover: "
|
||||||
|
<< _inland_ice_cover ? "yes" : "no" << std::endl;
|
||||||
std::cout << " Snow thickness.(0.0 = thin .. 1.0 = thick): "
|
std::cout << " Snow thickness.(0.0 = thin .. 1.0 = thick): "
|
||||||
<< _snow_thickness << std::endl;
|
<< _snow_thickness << std::endl;
|
||||||
std::cout << " Ice cover......(0.0 = none .. 1.0 = thick): " << _ice_cover
|
std::cout << " Ice cover......(0.0 = none .. 1.0 = thick): " << _ice_cover
|
||||||
|
|
|
@ -174,6 +174,7 @@ private:
|
||||||
|
|
||||||
// environment
|
// environment
|
||||||
bool _environment_adjust = false; // enable automatic adjestments
|
bool _environment_adjust = false; // enable automatic adjestments
|
||||||
|
bool _inland_ice_cover = false; // inland water bodies get frozen over
|
||||||
double _snow_level = -99999.0; // in meters
|
double _snow_level = -99999.0; // in meters
|
||||||
double _snow_thickness = -99999.0; // 0.0 = thin, 1.0 = thick
|
double _snow_thickness = -99999.0; // 0.0 = thin, 1.0 = thick
|
||||||
double _ice_cover = -99999.0; // 0.0 = none, 1.0 = thick
|
double _ice_cover = -99999.0; // 0.0 = none, 1.0 = thick
|
||||||
|
|
Loading…
Reference in a new issue