From 4ecd1462581fea597c45b9a445f828a51e196adc Mon Sep 17 00:00:00 2001
From: david <david>
Date: Wed, 12 Feb 2003 00:30:24 +0000
Subject: [PATCH] Connect the FlightGear /environment/turbulence-norm property
 to the turbulence gain in JSBSim's FGAtmosphere class.

Latest FGAtmosphere from JSBSim with working turbulence support.
---
 src/FDM/JSBSim/FGAtmosphere.cpp | 11 ++++++-----
 src/FDM/JSBSim/JSBSim.cxx       |  3 +++
 src/FDM/JSBSim/JSBSim.hxx       |  1 +
 3 files changed, 10 insertions(+), 5 deletions(-)

diff --git a/src/FDM/JSBSim/FGAtmosphere.cpp b/src/FDM/JSBSim/FGAtmosphere.cpp
index e6f58d8f2..979c1f498 100644
--- a/src/FDM/JSBSim/FGAtmosphere.cpp
+++ b/src/FDM/JSBSim/FGAtmosphere.cpp
@@ -88,9 +88,9 @@ FGAtmosphere::FGAtmosphere(FGFDMExec* fdmex) : FGModel(fdmex)
   htab[7]=259186.352; //ft.
 
   MagnitudedAccelDt = MagnitudeAccel = Magnitude = 0.0;
-  turbType = ttNone;
-//  turbType = ttBerndt; // temporarily disable turbulence until fully tested
-  TurbGain = 100.0;
+//   turbType = ttNone;
+  turbType = ttBerndt;
+  TurbGain = 0.0;
   
   bind();
   Debug(0);
@@ -266,10 +266,11 @@ void FGAtmosphere::Turbulence(void)
     vDirectiondAccelDt(eY) = 1 - 2.0*(((double)(rand()))/RAND_MAX);
     vDirectiondAccelDt(eZ) = 1 - 2.0*(((double)(rand()))/RAND_MAX);
 
-    MagnitudedAccelDt = 1 - 2.0*(((double)(rand()))/RAND_MAX);
+    
+    MagnitudedAccelDt = 1 - 2.0*(((double)(rand()))/RAND_MAX) - Magnitude;
     MagnitudeAccel    += MagnitudedAccelDt*rate*State->Getdt();
     Magnitude         += MagnitudeAccel*rate*State->Getdt();
-
+    
     vDirectiondAccelDt.Normalize();
     vDirectionAccel += vDirectiondAccelDt*rate*State->Getdt();
     vDirectionAccel.Normalize();
diff --git a/src/FDM/JSBSim/JSBSim.cxx b/src/FDM/JSBSim/JSBSim.cxx
index a114dcc13..2633332df 100644
--- a/src/FDM/JSBSim/JSBSim.cxx
+++ b/src/FDM/JSBSim/JSBSim.cxx
@@ -178,6 +178,7 @@ FGJSBsim::FGJSBsim( double dt )
     temperature = fgGetNode("/environment/temperature-degc",true);
     pressure = fgGetNode("/environment/pressure-inhg",true);
     density = fgGetNode("/environment/density-slugft3",true);
+    turbulence = fgGetNode("environment/turbulence-norm",true);
     
     wind_from_north= fgGetNode("/environment/wind-from-north-fps",true);
     wind_from_east = fgGetNode("/environment/wind-from-east-fps" ,true);
@@ -211,6 +212,7 @@ void FGJSBsim::init() {
                   9.0/5.0*(temperature->getDoubleValue()+273.15) );
       Atmosphere->SetExPressure(pressure->getDoubleValue()*70.726566);
       Atmosphere->SetExDensity(density->getDoubleValue());
+      Atmosphere->SetTurbGain(turbulence->getDoubleValue()*100.0);
     } else {
       Atmosphere->UseInternal();
     }
@@ -398,6 +400,7 @@ bool FGJSBsim::copy_to_JSBsim() {
                   9.0/5.0*(temperature->getDoubleValue()+273.15) );
     Atmosphere->SetExPressure(pressure->getDoubleValue()*70.726566);
     Atmosphere->SetExDensity(density->getDoubleValue());
+    Atmosphere->SetTurbGain(turbulence->getDoubleValue()*100.0);
 
     Atmosphere->SetWindNED( wind_from_north->getDoubleValue(),
                             wind_from_east->getDoubleValue(),
diff --git a/src/FDM/JSBSim/JSBSim.hxx b/src/FDM/JSBSim/JSBSim.hxx
index cdbc3c768..dff07bc06 100644
--- a/src/FDM/JSBSim/JSBSim.hxx
+++ b/src/FDM/JSBSim/JSBSim.hxx
@@ -263,6 +263,7 @@ private:
     SGPropertyNode *temperature;
     SGPropertyNode *pressure;
     SGPropertyNode *density;
+    SGPropertyNode *turbulence;
     
     SGPropertyNode *wind_from_north;
     SGPropertyNode *wind_from_east;