]> git.mxchange.org Git - flightgear.git/commitdiff
Merge branch 'jsd/atmos' into topic/atmos-merge
authorTim Moore <timoore@redhat.com>
Thu, 10 Sep 2009 10:14:30 +0000 (12:14 +0200)
committerTim Moore <timoore@redhat.com>
Thu, 10 Sep 2009 10:31:04 +0000 (12:31 +0200)
Conflicts:
src/Environment/environment.cxx
src/Environment/environment.hxx

John Denker's atmosphere changes. Original commit message:
Two-parameter physics-based model of atmosphere up to 262,467 ft i.e.
the top of the mesosphere. Correctly exhibits the HALT phenomenon.

1  2 
src/Environment/environment.cxx
src/Environment/environment.hxx

index 74e1509dcb2130cfa7cec6c67ea26cfcfd5cde10,eed66fa17cd28c5ece0da1d192b53254cc7e79c9..f915e526194fc088905ba444263fa8ce6b3c94fb
@@@ -133,14 -140,14 +140,16 @@@ void FGEnvironment::_init(
      wind_from_north_fps = 0;
      wind_from_east_fps = 0;
      wind_from_down_fps = 0;
 +    thermal_lift_fps = 0;
 +    ridge_lift_fps= 0;
      altitude_half_to_sun_m = 1000;
      altitude_tropo_top_m = 10000;
+ #ifdef USING_TABLES
      _setup_tables();
+ #endif
      _recalc_density();
      _recalc_relative_humidity();
 -    
 +    live_update = true;
  }
  
  FGEnvironment::FGEnvironment()
@@@ -231,15 -235,6 +240,14 @@@ FGEnvironment::read (const SGPropertyNo
  
      maybe_copy_value(this, node, "turbulence/rate-hz",
                       &FGEnvironment::set_turbulence_rate_hz);
-     _recalc_alt_temperature();
 +    // calculate derived properties here to avoid duplicate expensive computations
 +    _recalc_ne();
-     _recalc_alt_pressure();
++    _recalc_alt_pt();
 +    _recalc_alt_dewpoint();
 +    _recalc_density();
 +    _recalc_relative_humidity();
 +
 +    set_live_update(live_update);
  }
  
  
@@@ -396,21 -379,19 +404,23 @@@ FGEnvironment::set_temperature_sea_leve
    temperature_sea_level_degc = t;
    if (dewpoint_sea_level_degc > t)
        dewpoint_sea_level_degc = t;
 -  _recalc_alt_pt();
 -  _recalc_density();
 +  if( live_update ) {
-     _recalc_alt_temperature();
++    _recalc_alt_pt();
 +    _recalc_density();
 +  }
  }
  
  void
  FGEnvironment::set_temperature_degc (double t)
  {
    temperature_degc = t;
 -  _recalc_sl_temperature();
 -  _recalc_sl_pressure();
 -  _recalc_alt_pt();
 -  _recalc_density();
 -  _recalc_relative_humidity();
 +  if( live_update ) {
 +    _recalc_sl_temperature();
++    _recalc_sl_pressure();
++    _recalc_alt_pt();
 +    _recalc_density();
 +    _recalc_relative_humidity();
 +  }
  }
  
  void
@@@ -440,10 -417,8 +450,10 @@@ voi
  FGEnvironment::set_pressure_sea_level_inhg (double p)
  {
    pressure_sea_level_inhg = p;
 -  _recalc_alt_pt();
 -  _recalc_density();
 +  if( live_update ) {
-     _recalc_alt_pressure();
++    _recalc_alt_pt();
 +    _recalc_density();
 +  }
  }
  
  void
@@@ -535,13 -480,10 +545,12 @@@ voi
  FGEnvironment::set_elevation_ft (double e)
  {
    elevation_ft = e;
 -  _recalc_alt_dewpoint();
 -  _recalc_alt_pt();
 -  _recalc_density();
 -  _recalc_relative_humidity();
 +  if( live_update ) {
-     _recalc_alt_temperature();
 +    _recalc_alt_dewpoint();
-     _recalc_alt_pressure();
++    _recalc_alt_pt();
 +    _recalc_density();
 +    _recalc_relative_humidity();
 +  }
  }
  
  void
@@@ -608,12 -546,8 +617,14 @@@ FGEnvironment::_recalc_ne (
      sin(wind_from_heading_deg * SGD_DEGREES_TO_RADIANS);
  }
  
 +void
 +FGEnvironment::_recalc_updraft ()
 +{
 +  wind_from_down_fps = thermal_lift_fps + ridge_lift_fps ;
 +}
 +
+ // Intended to help with the interpretation of METAR data,
+ // not for random in-flight outside-air temperatures.
  void
  FGEnvironment::_recalc_sl_temperature ()
  {
@@@ -811,16 -763,6 +858,15 @@@ interpolate (const FGEnvironment * env1
          (do_interp(env1->get_turbulence_rate_hz(),
                     env2->get_turbulence_rate_hz(),
                     fraction));
-     result->_recalc_alt_temperature();
 +
 +    // calculate derived properties here to avoid duplicate expensive computations
 +    result->_recalc_ne();
-     result->_recalc_alt_pressure();
++    result->_recalc_alt_pt();
 +    result->_recalc_alt_dewpoint();
 +    result->_recalc_density();
 +    result->_recalc_relative_humidity();
 +
 +    result->set_live_update(live_update);
  }
  
  // end of environment.cxx
index 7e3e5b4b2c56fef64dcd06b429ec4348c8fd271a,38123e843885a93de70ad236840aad10a5bf020d..d9543d5ab68704813d814df6fea66544d72ee59e
@@@ -101,14 -97,6 +101,13 @@@ public
    virtual void set_altitude_half_to_sun_m (double alt);
    virtual void set_altitude_tropo_top_m (double alt);
  
-   void _recalc_alt_temperature ();
 +  virtual bool set_live_update(bool live_update);
 +
 +  void _recalc_ne ();
-   void _recalc_alt_pressure ();
 +  void _recalc_alt_dewpoint ();
 +  void _recalc_density ();
 +  void _recalc_relative_humidity ();
++  void _recalc_alt_pt ();
  private:
    void _init();
    void _recalc_hdgspd ();