1
0
Fork 0

Latest JSBSim changes.

This commit is contained in:
david 2001-12-14 03:35:41 +00:00
parent 5c3f4e999d
commit fbccfab5ff
8 changed files with 42 additions and 30 deletions

View file

@ -71,6 +71,7 @@ INCLUDES
#include "FGAuxiliary.h" #include "FGAuxiliary.h"
#include "FGOutput.h" #include "FGOutput.h"
#include "FGConfigFile.h" #include "FGConfigFile.h"
#include "FGInitialCondition.h"
static const char *IdSrc = "$Id$"; static const char *IdSrc = "$Id$";
static const char *IdHdr = ID_FDMEXEC; static const char *IdHdr = ID_FDMEXEC;
@ -403,8 +404,8 @@ bool FGFDMExec::LoadScript(string script)
string token=""; string token="";
string aircraft=""; string aircraft="";
string initialize=""; string initialize="";
bool result=false; bool result = false;
double dt=0.0; double dt = 0.0;
unsigned i; unsigned i;
struct condition *newCondition; struct condition *newCondition;
@ -507,6 +508,12 @@ bool FGFDMExec::LoadScript(string script)
exit(-1); exit(-1);
} }
FGInitialCondition IC(this);
if ( ! IC.Load("aircraft", aircraft, initialize)) {
cerr << "Initialization unsuccessful" << endl;
exit(-1);
}
return true; return true;
} }

View file

@ -64,7 +64,7 @@ FGLGear::FGLGear(FGConfigFile* AC_cfg, FGFDMExec* fdmex) : Exec(fdmex)
*AC_cfg >> tmp >> name >> vXYZ(1) >> vXYZ(2) >> vXYZ(3) *AC_cfg >> tmp >> name >> vXYZ(1) >> vXYZ(2) >> vXYZ(3)
>> kSpring >> bDamp>> dynamicFCoeff >> staticFCoeff >> kSpring >> bDamp>> dynamicFCoeff >> staticFCoeff
>> rollingFCoeff >> sSteerType >> sBrakeGroup >> rollingFCoeff >> sSteerType >> sBrakeGroup
>> maxSteerAngle >> Retractable; >> maxSteerAngle >> sRetractable;
if (sBrakeGroup == "LEFT" ) eBrakeGrp = bgLeft; if (sBrakeGroup == "LEFT" ) eBrakeGrp = bgLeft;
else if (sBrakeGroup == "RIGHT" ) eBrakeGrp = bgRight; else if (sBrakeGroup == "RIGHT" ) eBrakeGrp = bgRight;
@ -85,13 +85,14 @@ FGLGear::FGLGear(FGConfigFile* AC_cfg, FGFDMExec* fdmex) : Exec(fdmex)
<< sSteerType << " is undefined." << endl; << sSteerType << " is undefined." << endl;
} }
if ( Retractable == "RETRACT" ) { if ( sRetractable == "RETRACT" ) {
isRetractable=true; isRetractable = true;
} else { } 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 // Add some AI here to determine if gear is located properly according to its
// brake group type ?? // brake group type ??
@ -159,6 +160,7 @@ FGLGear::FGLGear(const FGLGear& lgear)
Reported = lgear.Reported; Reported = lgear.Reported;
name = lgear.name; name = lgear.name;
sSteerType = lgear.sSteerType; sSteerType = lgear.sSteerType;
sRetractable = lgear.sRetractable;
eSteerType = lgear.eSteerType; eSteerType = lgear.eSteerType;
sBrakeGroup = lgear.sBrakeGroup; sBrakeGroup = lgear.sBrakeGroup;
eBrakeGrp = lgear.eBrakeGrp; eBrakeGrp = lgear.eBrakeGrp;
@ -166,8 +168,6 @@ FGLGear::FGLGear(const FGLGear& lgear)
isRetractable = lgear.isRetractable; isRetractable = lgear.isRetractable;
GearUp = lgear.GearUp; GearUp = lgear.GearUp;
GearDown = lgear.GearDown; GearDown = lgear.GearDown;
Debug(0);
} }
//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@ -474,17 +474,17 @@ void FGLGear::Debug(int from)
if (debug_lvl & 1) { // Standard console startup message output if (debug_lvl & 1) { // Standard console startup message output
if (from == 0) { // Constructor if (from == 0) { // Constructor
cout << " Name: " << name << endl; cout << " Name: " << name << endl;
cout << " Location: " << vXYZ << endl; cout << " Location: " << vXYZ << endl;
cout << " Spring Constant: " << kSpring << endl; cout << " Spring Constant: " << kSpring << endl;
cout << " Damping Constant: " << bDamp << endl; cout << " Damping Constant: " << bDamp << endl;
cout << " Dynamic Friction: " << dynamicFCoeff << endl; cout << " Dynamic Friction: " << dynamicFCoeff << endl;
cout << " Static Friction: " << staticFCoeff << endl; cout << " Static Friction: " << staticFCoeff << endl;
cout << " Rolling Friction: " << rollingFCoeff << endl; cout << " Rolling Friction: " << rollingFCoeff << endl;
cout << " Steering Type: " << sSteerType << endl; cout << " Steering Type: " << sSteerType << endl;
cout << " Grouping: " << sBrakeGroup << endl; cout << " Grouping: " << sBrakeGroup << endl;
cout << " Max Steer Angle: " << maxSteerAngle << endl; cout << " Max Steer Angle: " << maxSteerAngle << endl;
cout << " Retractable: " << Retractable << endl; cout << " Retractable: " << sRetractable << endl;
} }
} }
if (debug_lvl & 2 ) { // Instantiation/Destruction notification if (debug_lvl & 2 ) { // Instantiation/Destruction notification

View file

@ -268,7 +268,7 @@ private:
string name; string name;
string sSteerType; string sSteerType;
string sBrakeGroup; string sBrakeGroup;
string Retractable; string sRetractable;
BrakeGroup eBrakeGrp; BrakeGroup eBrakeGrp;
SteerType eSteerType; SteerType eSteerType;

View file

@ -157,7 +157,8 @@ void FGOutput::DelimitedOutput(string fname)
} }
if (SubSystems & ssRates) { if (SubSystems & ssRates) {
outstream << ", "; outstream << ", ";
outstream << "P, Q, R"; outstream << "P, Q, R, ";
outstream << "Pdot, Qdot, Rdot";
} }
if (SubSystems & ssVelocities) { if (SubSystems & ssVelocities) {
outstream << ", "; outstream << ", ";
@ -179,7 +180,8 @@ void FGOutput::DelimitedOutput(string fname)
} }
if (SubSystems & ssAtmosphere) { if (SubSystems & ssAtmosphere) {
outstream << ", "; outstream << ", ";
outstream << "Rho"; outstream << "Rho, ";
outstream << "NWind, EWind, DWind";
} }
if (SubSystems & ssMassProps) { if (SubSystems & ssMassProps) {
outstream << ", "; outstream << ", ";
@ -232,7 +234,8 @@ void FGOutput::DelimitedOutput(string fname)
} }
if (SubSystems & ssRates) { if (SubSystems & ssRates) {
outstream << ", "; outstream << ", ";
outstream << Rotation->GetPQR(); outstream << Rotation->GetPQR() << ", ";
outstream << Rotation->GetPQRdot();
} }
if (SubSystems & ssVelocities) { if (SubSystems & ssVelocities) {
outstream << ", "; outstream << ", ";
@ -254,7 +257,8 @@ void FGOutput::DelimitedOutput(string fname)
} }
if (SubSystems & ssAtmosphere) { if (SubSystems & ssAtmosphere) {
outstream << ", "; outstream << ", ";
outstream << Atmosphere->GetDensity(); outstream << Atmosphere->GetDensity() << ", ";
outstream << Atmosphere->GetWindNED();
} }
if (SubSystems & ssMassProps) { if (SubSystems & ssMassProps) {
outstream << ", "; outstream << ", ";

View file

@ -102,6 +102,8 @@ FGPosition::FGPosition(FGFDMExec* fdmex) : FGModel(fdmex)
lastLongitudeDot = lastLatitudeDot = lastRadiusDot = 0.0; lastLongitudeDot = lastLatitudeDot = lastRadiusDot = 0.0;
Longitude = Latitude = 0.0; Longitude = Latitude = 0.0;
gamma = Vt = Vground = 0.0; gamma = Vt = Vground = 0.0;
hoverbmac = hoverbcg = 0.0;
psigt = 0.0;
Debug(0); Debug(0);
} }
@ -148,17 +150,15 @@ bool FGPosition::Run(void) {
Vground = sqrt( vVel(eNorth)*vVel(eNorth) + vVel(eEast)*vVel(eEast) ); Vground = sqrt( vVel(eNorth)*vVel(eNorth) + vVel(eEast)*vVel(eEast) );
psigt = atan2(vVel(eEast), vVel(eNorth)); psigt = atan2(vVel(eEast), vVel(eNorth));
if(psigt < 0.0) if (psigt < 0.0)
psigt += 2*M_PI; psigt += 2*M_PI;
invMass = 1.0 / MassBalance->GetMass();
Radius = h + SeaLevelRadius; Radius = h + SeaLevelRadius;
invRadius = 1.0 / Radius;
cosLat = cos(Latitude); cosLat = cos(Latitude);
if (cosLat != 0) LongitudeDot = vVel(eEast) / (Radius * cosLat); if (cosLat != 0) LongitudeDot = vVel(eEast) / (Radius * cosLat);
LatitudeDot = vVel(eNorth) * invRadius; LatitudeDot = vVel(eNorth) / Radius;
RadiusDot = -vVel(eDown); RadiusDot = -vVel(eDown);
Longitude += 0.5*dt*rate*(LongitudeDot + lastLongitudeDot); Longitude += 0.5*dt*rate*(LongitudeDot + lastLongitudeDot);

View file

@ -123,7 +123,6 @@ private:
FGColumnVector3 vVelDot; FGColumnVector3 vVelDot;
FGColumnVector3 vRunwayNormal; FGColumnVector3 vRunwayNormal;
double Vee, invMass, invRadius;
double Radius, h; double Radius, h;
double LatitudeDot, LongitudeDot, RadiusDot; double LatitudeDot, LongitudeDot, RadiusDot;
double lastLatitudeDot, lastLongitudeDot, lastRadiusDot; double lastLatitudeDot, lastLongitudeDot, lastRadiusDot;

View file

@ -80,7 +80,7 @@ FGRotation::FGRotation(FGFDMExec* fdmex) : FGModel(fdmex)
Name = "FGRotation"; Name = "FGRotation";
cTht=cPhi=cPsi=1.0; cTht=cPhi=cPsi=1.0;
sTht=sPhi=sPsi=0.0; sTht=sPhi=sPsi=0.0;
Debug(0); Debug(0);
} }

View file

@ -477,10 +477,12 @@ bool FGState::Reset(string path, string acname, string fname)
cerr << "The reset file " << resetDef cerr << "The reset file " << resetDef
<< " does not appear to be a reset file" << endl; << " does not appear to be a reset file" << endl;
return false; return false;
} else {
resetfile.GetNextConfigLine();
resetfile >> token;
cout << "Resetting using: " << token << endl << endl;
} }
resetfile.GetNextConfigLine();
resetfile >> token;
while (token != string("/initialize") && token != string("EOF")) { while (token != string("/initialize") && token != string("EOF")) {
if (token == "UBODY") resetfile >> U; if (token == "UBODY") resetfile >> U;
if (token == "VBODY") resetfile >> V; if (token == "VBODY") resetfile >> V;