]> git.mxchange.org Git - flightgear.git/commitdiff
Latest JSBSim changes.
authordavid <david>
Fri, 14 Dec 2001 03:35:41 +0000 (03:35 +0000)
committerdavid <david>
Fri, 14 Dec 2001 03:35:41 +0000 (03:35 +0000)
src/FDM/JSBSim/FGFDMExec.cpp
src/FDM/JSBSim/FGLGear.cpp
src/FDM/JSBSim/FGLGear.h
src/FDM/JSBSim/FGOutput.cpp
src/FDM/JSBSim/FGPosition.cpp
src/FDM/JSBSim/FGPosition.h
src/FDM/JSBSim/FGRotation.cpp
src/FDM/JSBSim/FGState.cpp

index b679cccbc425119c0f267b69e86a3ad1809f8005..806a08b21959719cf9a26d1437be95989bd4c882 100644 (file)
@@ -71,6 +71,7 @@ INCLUDES
 #include "FGAuxiliary.h"
 #include "FGOutput.h"
 #include "FGConfigFile.h"
+#include "FGInitialCondition.h"
 
 static const char *IdSrc = "$Id$";
 static const char *IdHdr = ID_FDMEXEC;
@@ -403,8 +404,8 @@ bool FGFDMExec::LoadScript(string script)
   string token="";
   string aircraft="";
   string initialize="";
-  bool result=false;
-  double dt=0.0;
+  bool result = false;
+  double dt = 0.0;
   unsigned i;
   struct condition *newCondition;
 
@@ -507,6 +508,12 @@ bool FGFDMExec::LoadScript(string script)
          exit(-1);
   }
 
+  FGInitialCondition IC(this);
+  if ( ! IC.Load("aircraft", aircraft, initialize)) {
+    cerr << "Initialization unsuccessful" << endl;
+    exit(-1);
+  }
+
   return true;
 }
 
index e7cc9e4ef1b135d13cbb018b74ee6be0ad3ddec3..dcd9b1c42f32bc49ee1fbd8d904350c690fb36ea 100644 (file)
@@ -64,7 +64,7 @@ FGLGear::FGLGear(FGConfigFile* AC_cfg, FGFDMExec* fdmex) : Exec(fdmex)
   *AC_cfg >> tmp >> name >> vXYZ(1) >> vXYZ(2) >> vXYZ(3)
             >> kSpring >> bDamp>> dynamicFCoeff >> staticFCoeff
                   >> rollingFCoeff >> sSteerType >> sBrakeGroup 
-                     >> maxSteerAngle >> Retractable;
+                     >> maxSteerAngle >> sRetractable;
 
   if      (sBrakeGroup == "LEFT"  ) eBrakeGrp = bgLeft;
   else if (sBrakeGroup == "RIGHT" ) eBrakeGrp = bgRight;
@@ -85,13 +85,14 @@ FGLGear::FGLGear(FGConfigFile* AC_cfg, FGFDMExec* fdmex) : Exec(fdmex)
          << sSteerType << " is undefined." << endl;
   }
   
-  if ( Retractable == "RETRACT" ) {
-    isRetractable=true;
+  if ( sRetractable == "RETRACT" ) {
+    isRetractable = true;
   } else  {
-    isRetractable=false;
+    isRetractable = false;
   }  
   
-  GearUp=false; GearDown=true;
+  GearUp = false;
+  GearDown = true;
 
 // Add some AI here to determine if gear is located properly according to its
 // brake group type ??
@@ -159,6 +160,7 @@ FGLGear::FGLGear(const FGLGear& lgear)
   Reported        = lgear.Reported;
   name            = lgear.name;
   sSteerType      = lgear.sSteerType;
+  sRetractable    = lgear.sRetractable;
   eSteerType      = lgear.eSteerType;
   sBrakeGroup     = lgear.sBrakeGroup;
   eBrakeGrp       = lgear.eBrakeGrp;
@@ -166,8 +168,6 @@ FGLGear::FGLGear(const FGLGear& lgear)
   isRetractable   = lgear.isRetractable;
   GearUp          = lgear.GearUp;
   GearDown        = lgear.GearDown;
-
-  Debug(0);
 }
 
 //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -474,17 +474,17 @@ void FGLGear::Debug(int from)
 
   if (debug_lvl & 1) { // Standard console startup message output
     if (from == 0) { // Constructor
-      cout << "    Name: " << name << endl;
-      cout << "      Location: " << vXYZ << endl;
-      cout << "      Spring Constant:  " << kSpring << endl;
-      cout << "      Damping Constant: " << bDamp << endl;
+      cout << "    Name: "               << name          << endl;
+      cout << "      Location: "         << vXYZ          << endl;
+      cout << "      Spring Constant:  " << kSpring       << endl;
+      cout << "      Damping Constant: " << bDamp         << endl;
       cout << "      Dynamic Friction: " << dynamicFCoeff << endl;
-      cout << "      Static Friction:  " << staticFCoeff << endl;
+      cout << "      Static Friction:  " << staticFCoeff  << endl;
       cout << "      Rolling Friction: " << rollingFCoeff << endl;
-      cout << "      Steering Type:    " << sSteerType << endl;
-      cout << "      Grouping:         " << sBrakeGroup << endl;
+      cout << "      Steering Type:    " << sSteerType    << endl;
+      cout << "      Grouping:         " << sBrakeGroup   << endl;
       cout << "      Max Steer Angle:  " << maxSteerAngle << endl;
-      cout << "      Retractable:      " << Retractable << endl;
+      cout << "      Retractable:      " << sRetractable  << endl;
     }
   }
   if (debug_lvl & 2 ) { // Instantiation/Destruction notification
index 575a7814618af814575f167ee73b7f4c2d5d04d4..1c4857b169fcfc9f2edce65f86a9c8f6342a1505 100644 (file)
@@ -268,7 +268,7 @@ private:
   string name;
   string sSteerType;
   string sBrakeGroup;
-  string Retractable;
+  string sRetractable;
   
   BrakeGroup eBrakeGrp;
   SteerType  eSteerType;
index 02f8eff1782326bc148e3a6753f4300e1bafc65a..5cc3d6e1344784905f9483658d65df78ca14f9be 100644 (file)
@@ -157,7 +157,8 @@ void FGOutput::DelimitedOutput(string fname)
     }
     if (SubSystems & ssRates) {
       outstream << ", ";
-      outstream << "P, Q, R";
+      outstream << "P, Q, R, ";
+      outstream << "Pdot, Qdot, Rdot";
     }
     if (SubSystems & ssVelocities) {
       outstream << ", ";
@@ -179,7 +180,8 @@ void FGOutput::DelimitedOutput(string fname)
     }
     if (SubSystems & ssAtmosphere) {
       outstream << ", ";
-      outstream << "Rho";
+      outstream << "Rho, ";
+      outstream << "NWind, EWind, DWind";
     }
     if (SubSystems & ssMassProps) {
       outstream << ", ";
@@ -232,7 +234,8 @@ void FGOutput::DelimitedOutput(string fname)
   }
   if (SubSystems & ssRates) {
     outstream << ", ";
-    outstream << Rotation->GetPQR();
+    outstream << Rotation->GetPQR() << ", ";
+    outstream << Rotation->GetPQRdot();
   }
   if (SubSystems & ssVelocities) {
     outstream << ", ";
@@ -254,7 +257,8 @@ void FGOutput::DelimitedOutput(string fname)
   }
   if (SubSystems & ssAtmosphere) {
     outstream << ", ";
-    outstream << Atmosphere->GetDensity();
+    outstream << Atmosphere->GetDensity() << ", ";
+    outstream << Atmosphere->GetWindNED();
   }
   if (SubSystems & ssMassProps) {
     outstream << ", ";
index 33f244dfbc5bfe8431ee4c2ff48dad6878dd0387..741d9cd4a6e34b4f8f042706fe9d31505898aa37 100644 (file)
@@ -102,6 +102,8 @@ FGPosition::FGPosition(FGFDMExec* fdmex) : FGModel(fdmex)
   lastLongitudeDot = lastLatitudeDot = lastRadiusDot = 0.0;
   Longitude = Latitude = 0.0;
   gamma = Vt = Vground = 0.0;
+  hoverbmac = hoverbcg = 0.0;
+  psigt = 0.0;
 
   Debug(0);
 }
@@ -148,17 +150,15 @@ bool FGPosition::Run(void) {
 
     Vground = sqrt( vVel(eNorth)*vVel(eNorth) + vVel(eEast)*vVel(eEast) );
     psigt =  atan2(vVel(eEast), vVel(eNorth));
-    if(psigt < 0.0)
+    if (psigt < 0.0)
       psigt += 2*M_PI;
 
-    invMass   = 1.0 / MassBalance->GetMass();
     Radius    = h + SeaLevelRadius;
-    invRadius = 1.0 / Radius;
 
     cosLat = cos(Latitude);
     if (cosLat != 0) LongitudeDot = vVel(eEast) / (Radius * cosLat);
 
-    LatitudeDot = vVel(eNorth) * invRadius;
+    LatitudeDot = vVel(eNorth) Radius;
     RadiusDot   = -vVel(eDown);
 
     Longitude += 0.5*dt*rate*(LongitudeDot + lastLongitudeDot);
index 0e91ab26f1b61b28d14dabcb571dfc66ff248f52..7287ff993b45eb4657830d5bfc2e53922ad85c99 100644 (file)
@@ -123,7 +123,6 @@ private:
   FGColumnVector3 vVelDot;
   FGColumnVector3 vRunwayNormal;
   
-  double Vee, invMass, invRadius;
   double Radius, h;
   double LatitudeDot, LongitudeDot, RadiusDot;
   double lastLatitudeDot, lastLongitudeDot, lastRadiusDot;
index e56205b02a8e48672cd171f367223f838c9d5837..a3712e00ca1412cb0d841ace758b30ef8968eb68 100644 (file)
@@ -80,7 +80,7 @@ FGRotation::FGRotation(FGFDMExec* fdmex) : FGModel(fdmex)
   Name = "FGRotation";
   cTht=cPhi=cPsi=1.0;
   sTht=sPhi=sPsi=0.0;
-
+  
   Debug(0);
 }
 
index c36af44e8ad5057e2b1f7a0423622933a758b915..a3222f43f4a7fb4990a959e1dad5400e809e6626 100644 (file)
@@ -477,10 +477,12 @@ bool FGState::Reset(string path, string acname, string fname)
     cerr << "The reset file " << resetDef
          << " does not appear to be a reset file" << endl;
     return false;
+  } else {
+    resetfile.GetNextConfigLine();
+    resetfile >> token;
+    cout << "Resetting using: " << token << endl << endl;
   }
   
-  resetfile.GetNextConfigLine();
-  resetfile >> token;
   while (token != string("/initialize") && token != string("EOF")) {
     if (token == "UBODY") resetfile >> U;
     if (token == "VBODY") resetfile >> V;