diff --git a/src/FDM/JSBSim/FGFDMExec.cpp b/src/FDM/JSBSim/FGFDMExec.cpp index b679cccbc..806a08b21 100644 --- a/src/FDM/JSBSim/FGFDMExec.cpp +++ b/src/FDM/JSBSim/FGFDMExec.cpp @@ -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; } diff --git a/src/FDM/JSBSim/FGLGear.cpp b/src/FDM/JSBSim/FGLGear.cpp index e7cc9e4ef..dcd9b1c42 100644 --- a/src/FDM/JSBSim/FGLGear.cpp +++ b/src/FDM/JSBSim/FGLGear.cpp @@ -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 diff --git a/src/FDM/JSBSim/FGLGear.h b/src/FDM/JSBSim/FGLGear.h index 575a78146..1c4857b16 100644 --- a/src/FDM/JSBSim/FGLGear.h +++ b/src/FDM/JSBSim/FGLGear.h @@ -268,7 +268,7 @@ private: string name; string sSteerType; string sBrakeGroup; - string Retractable; + string sRetractable; BrakeGroup eBrakeGrp; SteerType eSteerType; diff --git a/src/FDM/JSBSim/FGOutput.cpp b/src/FDM/JSBSim/FGOutput.cpp index 02f8eff17..5cc3d6e13 100644 --- a/src/FDM/JSBSim/FGOutput.cpp +++ b/src/FDM/JSBSim/FGOutput.cpp @@ -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 << ", "; diff --git a/src/FDM/JSBSim/FGPosition.cpp b/src/FDM/JSBSim/FGPosition.cpp index 33f244dfb..741d9cd4a 100644 --- a/src/FDM/JSBSim/FGPosition.cpp +++ b/src/FDM/JSBSim/FGPosition.cpp @@ -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); diff --git a/src/FDM/JSBSim/FGPosition.h b/src/FDM/JSBSim/FGPosition.h index 0e91ab26f..7287ff993 100644 --- a/src/FDM/JSBSim/FGPosition.h +++ b/src/FDM/JSBSim/FGPosition.h @@ -123,7 +123,6 @@ private: FGColumnVector3 vVelDot; FGColumnVector3 vRunwayNormal; - double Vee, invMass, invRadius; double Radius, h; double LatitudeDot, LongitudeDot, RadiusDot; double lastLatitudeDot, lastLongitudeDot, lastRadiusDot; diff --git a/src/FDM/JSBSim/FGRotation.cpp b/src/FDM/JSBSim/FGRotation.cpp index e56205b02..a3712e00c 100644 --- a/src/FDM/JSBSim/FGRotation.cpp +++ b/src/FDM/JSBSim/FGRotation.cpp @@ -80,7 +80,7 @@ FGRotation::FGRotation(FGFDMExec* fdmex) : FGModel(fdmex) Name = "FGRotation"; cTht=cPhi=cPsi=1.0; sTht=sPhi=sPsi=0.0; - + Debug(0); } diff --git a/src/FDM/JSBSim/FGState.cpp b/src/FDM/JSBSim/FGState.cpp index c36af44e8..a3222f43f 100644 --- a/src/FDM/JSBSim/FGState.cpp +++ b/src/FDM/JSBSim/FGState.cpp @@ -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;