#include "FGAuxiliary.h"
#include "FGOutput.h"
#include "FGConfigFile.h"
+#include "FGInitialCondition.h"
static const char *IdSrc = "$Id$";
static const char *IdHdr = ID_FDMEXEC;
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;
exit(-1);
}
+ FGInitialCondition IC(this);
+ if ( ! IC.Load("aircraft", aircraft, initialize)) {
+ cerr << "Initialization unsuccessful" << endl;
+ exit(-1);
+ }
+
return true;
}
*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;
<< 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 ??
Reported = lgear.Reported;
name = lgear.name;
sSteerType = lgear.sSteerType;
+ sRetractable = lgear.sRetractable;
eSteerType = lgear.eSteerType;
sBrakeGroup = lgear.sBrakeGroup;
eBrakeGrp = lgear.eBrakeGrp;
isRetractable = lgear.isRetractable;
GearUp = lgear.GearUp;
GearDown = lgear.GearDown;
-
- Debug(0);
}
//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
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
string name;
string sSteerType;
string sBrakeGroup;
- string Retractable;
+ string sRetractable;
BrakeGroup eBrakeGrp;
SteerType eSteerType;
}
if (SubSystems & ssRates) {
outstream << ", ";
- outstream << "P, Q, R";
+ outstream << "P, Q, R, ";
+ outstream << "Pdot, Qdot, Rdot";
}
if (SubSystems & ssVelocities) {
outstream << ", ";
}
if (SubSystems & ssAtmosphere) {
outstream << ", ";
- outstream << "Rho";
+ outstream << "Rho, ";
+ outstream << "NWind, EWind, DWind";
}
if (SubSystems & ssMassProps) {
outstream << ", ";
}
if (SubSystems & ssRates) {
outstream << ", ";
- outstream << Rotation->GetPQR();
+ outstream << Rotation->GetPQR() << ", ";
+ outstream << Rotation->GetPQRdot();
}
if (SubSystems & ssVelocities) {
outstream << ", ";
}
if (SubSystems & ssAtmosphere) {
outstream << ", ";
- outstream << Atmosphere->GetDensity();
+ outstream << Atmosphere->GetDensity() << ", ";
+ outstream << Atmosphere->GetWindNED();
}
if (SubSystems & ssMassProps) {
outstream << ", ";
lastLongitudeDot = lastLatitudeDot = lastRadiusDot = 0.0;
Longitude = Latitude = 0.0;
gamma = Vt = Vground = 0.0;
+ hoverbmac = hoverbcg = 0.0;
+ psigt = 0.0;
Debug(0);
}
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);
FGColumnVector3 vVelDot;
FGColumnVector3 vRunwayNormal;
- double Vee, invMass, invRadius;
double Radius, h;
double LatitudeDot, LongitudeDot, RadiusDot;
double lastLatitudeDot, lastLongitudeDot, lastRadiusDot;
Name = "FGRotation";
cTht=cPhi=cPsi=1.0;
sTht=sPhi=sPsi=0.0;
-
+
Debug(0);
}
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;