From 1a8fe25cf409d311f836656f580537fa59e8133c Mon Sep 17 00:00:00 2001 From: curt Date: Tue, 24 Jun 2003 20:04:29 +0000 Subject: [PATCH] Previously the weather dialog box and environment system had some confusion between temperature at altitude vs. temperature at sea level. The dialog box asked for temperature at altitude which makes sense, but all the internal crunching expected temperature at sea level. However, it makes no logical sense to specify the sea level temperature for different layers so I changed the internal processing to work with temperature at altitude and then derive an approximate sea level temperature at the end. If you know the ground temperature, you can just enter this temperature for the first boundary layer and the system should do the right thing. --- src/Environment/environment.cxx | 22 ++++++++++++---------- src/Main/fg_commands.cxx | 22 +++++++++++++--------- 2 files changed, 25 insertions(+), 19 deletions(-) diff --git a/src/Environment/environment.cxx b/src/Environment/environment.cxx index 344179580..09313213a 100644 --- a/src/Environment/environment.cxx +++ b/src/Environment/environment.cxx @@ -148,7 +148,9 @@ FGEnvironment::copy (const FGEnvironment &env) elevation_ft = env.elevation_ft; visibility_m = env.visibility_m; temperature_sea_level_degc = env.temperature_sea_level_degc; + temperature_degc = env.temperature_degc; dewpoint_sea_level_degc = env.dewpoint_sea_level_degc; + dewpoint_degc = env.dewpoint_degc; pressure_sea_level_inhg = env.pressure_sea_level_inhg; wind_from_heading_deg = env.wind_from_heading_deg; wind_speed_kt = env.wind_speed_kt; @@ -179,14 +181,14 @@ FGEnvironment::read (const SGPropertyNode * node) maybe_copy_value(this, node, "visibility-m", &FGEnvironment::set_visibility_m); - if (!maybe_copy_value(this, node, "temperature-sea-level-degc", + if (!maybe_copy_value(this, node, "temperature-degc", &FGEnvironment::set_temperature_sea_level_degc)) - maybe_copy_value(this, node, "temperature-degc", + maybe_copy_value(this, node, "temperature-sea-level-degc", &FGEnvironment::set_temperature_degc); - if (!maybe_copy_value(this, node, "dewpoint-sea-level-degc", + if (!maybe_copy_value(this, node, "dewpoint-degc", &FGEnvironment::set_dewpoint_sea_level_degc)) - maybe_copy_value(this, node, "dewpoint-degc", + maybe_copy_value(this, node, "dewpoint-sea-level-degc", &FGEnvironment::set_dewpoint_degc); if (!maybe_copy_value(this, node, "pressure-sea-level-inhg", @@ -556,14 +558,14 @@ interpolate (const FGEnvironment * env1, const FGEnvironment * env2, env2->get_visibility_m(), fraction)); - result->set_temperature_sea_level_degc - (do_interp(env1->get_temperature_sea_level_degc(), - env2->get_temperature_sea_level_degc(), + result->set_temperature_degc + (do_interp(env1->get_temperature_degc(), + env2->get_temperature_degc(), fraction)); - result->set_dewpoint_sea_level_degc - (do_interp(env1->get_dewpoint_sea_level_degc(), - env2->get_dewpoint_sea_level_degc(), + result->set_dewpoint_degc + (do_interp(env1->get_dewpoint_degc(), + env2->get_dewpoint_degc(), fraction)); result->set_pressure_sea_level_inhg diff --git a/src/Main/fg_commands.cxx b/src/Main/fg_commands.cxx index 6e14ee674..a6d53cd5c 100644 --- a/src/Main/fg_commands.cxx +++ b/src/Main/fg_commands.cxx @@ -194,18 +194,22 @@ do_reinit (const SGPropertyNode * arg) bool result = true; vector subsystems = arg->getChildren("subsystem"); - if (subsystems.size() == 0) + if (subsystems.size() == 0) { globals->get_subsystem_mgr()->reinit(); - else for ( unsigned int i = 0; i < subsystems.size(); i++ ) { - const char * name = subsystems[i]->getStringValue(); - FGSubsystem * subsystem = globals->get_subsystem(name); - if (subsystem == 0) { - result = false; - SG_LOG(SG_GENERAL, SG_ALERT, "Subsystem " << name << "not found"); - } else { - subsystem->reinit(); + } else { + for ( unsigned int i = 0; i < subsystems.size(); i++ ) { + const char * name = subsystems[i]->getStringValue(); + FGSubsystem * subsystem = globals->get_subsystem(name); + if (subsystem == 0) { + result = false; + SG_LOG( SG_GENERAL, SG_ALERT, + "Subsystem " << name << "not found" ); + } else { + subsystem->reinit(); + } } } + return result; } -- 2.39.5