Latest jsbsim updates.
This commit is contained in:
parent
2aca8ca2cf
commit
94034c3081
15 changed files with 471 additions and 405 deletions
|
@ -225,8 +225,8 @@ bool FGAircraft::LoadAircraft(string aircraft_path, string engine_path, string f
|
|||
|
||||
ReadPrologue(&AC_cfg);
|
||||
|
||||
while ((AC_cfg.GetNextConfigLine() != "EOF") &&
|
||||
(token = AC_cfg.GetValue()) != "/FDM_CONFIG") {
|
||||
while ((AC_cfg.GetNextConfigLine() != string("EOF")) &&
|
||||
(token = AC_cfg.GetValue()) != string("/FDM_CONFIG")) {
|
||||
if (token == "METRICS") {
|
||||
cout << fgcyan << "\n Reading Metrics" << fgdef << endl;
|
||||
ReadMetrics(&AC_cfg);
|
||||
|
@ -455,9 +455,9 @@ void FGAircraft::ReadMetrics(FGConfigFile* AC_cfg) {
|
|||
|
||||
AC_cfg->GetNextConfigLine();
|
||||
|
||||
while ((token = AC_cfg->GetValue()) != "/METRICS") {
|
||||
while ((token = AC_cfg->GetValue()) != string("/METRICS")) {
|
||||
*AC_cfg >> parameter;
|
||||
if (parameter == "AC_WINGAREA") {
|
||||
if (parameter == string("AC_WINGAREA")) {
|
||||
*AC_cfg >> WingArea;
|
||||
cout << " WingArea: " << WingArea << endl;
|
||||
} else if (parameter == "AC_WINGSPAN") {
|
||||
|
@ -522,12 +522,12 @@ void FGAircraft::ReadAerodynamics(FGConfigFile* AC_cfg) {
|
|||
|
||||
AC_cfg->GetNextConfigLine();
|
||||
|
||||
while ((token = AC_cfg->GetValue()) != "/AERODYNAMICS") {
|
||||
while ((token = AC_cfg->GetValue()) != string("/AERODYNAMICS")) {
|
||||
if (token == "AXIS") {
|
||||
CoeffArray ca;
|
||||
axis = AC_cfg->GetValue("NAME");
|
||||
AC_cfg->GetNextConfigLine();
|
||||
while ((token = AC_cfg->GetValue()) != "/AXIS") {
|
||||
while ((token = AC_cfg->GetValue()) != string("/AXIS")) {
|
||||
ca.push_back(new FGCoefficient(FDMExec, AC_cfg));
|
||||
DisplayCoeffFactors(ca.back()->Getmultipliers());
|
||||
}
|
||||
|
@ -544,7 +544,7 @@ void FGAircraft::ReadUndercarriage(FGConfigFile* AC_cfg) {
|
|||
|
||||
AC_cfg->GetNextConfigLine();
|
||||
|
||||
while ((token = AC_cfg->GetValue()) != "/UNDERCARRIAGE") {
|
||||
while ((token = AC_cfg->GetValue()) != string("/UNDERCARRIAGE")) {
|
||||
lGear.push_back(FGLGear(AC_cfg, FDMExec));
|
||||
}
|
||||
}
|
||||
|
@ -562,7 +562,7 @@ void FGAircraft::ReadOutput(FGConfigFile* AC_cfg) {
|
|||
Output->SetType(token);
|
||||
AC_cfg->GetNextConfigLine();
|
||||
|
||||
while ((token = AC_cfg->GetValue()) != "/OUTPUT") {
|
||||
while ((token = AC_cfg->GetValue()) != string("/OUTPUT")) {
|
||||
*AC_cfg >> parameter;
|
||||
if (parameter == "RATE_IN_HZ") *AC_cfg >> OutRate;
|
||||
if (parameter == "SIMULATION") {
|
||||
|
@ -634,7 +634,7 @@ void FGAircraft::ReadPrologue(FGConfigFile* AC_cfg) {
|
|||
CFGVersion = AC_cfg->GetValue("VERSION");
|
||||
cout << " Version: " << highint << CFGVersion
|
||||
<< normint << endl;
|
||||
if (CFGVersion != NEEDED_CFG_VERSION) {
|
||||
if (CFGVersion != string(NEEDED_CFG_VERSION)) {
|
||||
cout << endl << fgred << "YOU HAVE AN INCOMPATIBLE CFG FILE FOR THIS AIRCRAFT."
|
||||
" RESULTS WILL BE UNPREDICTABLE !!" << endl;
|
||||
cout << "Current version needed is: " << NEEDED_CFG_VERSION << endl;
|
||||
|
|
|
@ -48,7 +48,11 @@ INCLUDES
|
|||
#include "FGState.h"
|
||||
#include "FGFDMExec.h"
|
||||
|
||||
#ifndef FGFS
|
||||
# include <iomanip.h>
|
||||
#else
|
||||
# include STL_IOMANIP
|
||||
#endif
|
||||
|
||||
static const char *IdSrc = "$Id$";
|
||||
static const char *IdHdr = "ID_COEFFICIENT";
|
||||
|
|
|
@ -53,8 +53,8 @@ FGControls::~FGControls() {
|
|||
|
||||
|
||||
// $Log$
|
||||
// Revision 1.22 2001/03/29 23:04:51 curt
|
||||
// Latest round of JSBSim updates.
|
||||
// Revision 1.23 2001/04/02 01:12:38 curt
|
||||
// Latest jsbsim updates.
|
||||
//
|
||||
// Revision 1.7 2001/03/22 14:10:24 jberndt
|
||||
// Fixed ID comment
|
||||
|
|
|
@ -178,8 +178,8 @@ extern FGControls controls;
|
|||
|
||||
|
||||
// $Log$
|
||||
// Revision 1.21 2001/03/29 23:04:51 curt
|
||||
// Latest round of JSBSim updates.
|
||||
// Revision 1.22 2001/04/02 01:12:38 curt
|
||||
// Latest jsbsim updates.
|
||||
//
|
||||
// Revision 1.10 2001/03/22 14:10:24 jberndt
|
||||
// Fixed ID comment
|
||||
|
|
|
@ -117,6 +117,7 @@ CLASS IMPLEMENTATION
|
|||
|
||||
FGFDMExec::FGFDMExec(void)
|
||||
{
|
||||
Frame = 0;
|
||||
FirstModel = 0;
|
||||
Error = 0;
|
||||
State = 0;
|
||||
|
@ -304,13 +305,16 @@ bool FGFDMExec::Run(void)
|
|||
if (State->Getsim_time() >= EndTime) return false;
|
||||
}
|
||||
|
||||
if (debug_lvl & 4) cout << "=========================" << endl;
|
||||
if (debug_lvl & 4)
|
||||
cout << "================== Frame: " << Frame << " Time: "
|
||||
<< State->Getsim_time() << endl;
|
||||
|
||||
while (!model_iterator->Run()) {
|
||||
model_iterator = model_iterator->NextModel;
|
||||
if (model_iterator == 0L) break;
|
||||
}
|
||||
|
||||
Frame++;
|
||||
State->IncrTime();
|
||||
|
||||
return true;
|
||||
|
|
|
@ -299,6 +299,7 @@ private:
|
|||
bool frozen;
|
||||
bool terminate;
|
||||
int Error;
|
||||
int Frame;
|
||||
bool modelLoaded;
|
||||
bool Scripted;
|
||||
|
||||
|
|
|
@ -259,7 +259,7 @@ FGColumnVector FGLGear::Force(void)
|
|||
|
||||
switch (eSteerType) {
|
||||
case stSteer:
|
||||
SteerAngle = SteerGain*RudderPedal;
|
||||
SteerAngle = SteerGain*FCS->GetDrCmd();
|
||||
break;
|
||||
case stFixed:
|
||||
SteerAngle = 0.0;
|
||||
|
@ -322,7 +322,10 @@ FGColumnVector FGLGear::Force(void)
|
|||
|
||||
// Compute the forces in the wheel ground plane.
|
||||
|
||||
RollingForce = 0;
|
||||
if(fabs(RollingWhlVel) > 1E-3) {
|
||||
RollingForce = vLocalForce(eZ) * BrakeFCoeff * fabs(RollingWhlVel)/RollingWhlVel;
|
||||
}
|
||||
SideForce = vLocalForce(eZ) * FCoeff;
|
||||
|
||||
// Transform these forces back to the local reference frame.
|
||||
|
|
|
@ -23,6 +23,12 @@ INCLUDES
|
|||
#include <stdlib.h>
|
||||
#ifdef FGFS
|
||||
# include <simgear/compiler.h>
|
||||
# include STL_STRING
|
||||
SG_USING_STD(string);
|
||||
SG_USING_STD(ostream);
|
||||
SG_USING_STD(istream);
|
||||
SG_USING_STD(cerr);
|
||||
SG_USING_STD(endl);
|
||||
# ifdef FG_HAVE_STD_INCLUDES
|
||||
# include <fstream>
|
||||
# include <cmath>
|
||||
|
@ -36,9 +42,14 @@ INCLUDES
|
|||
# include <fstream>
|
||||
# include <cmath>
|
||||
# include <iostream>
|
||||
# include <string>
|
||||
using std::string;
|
||||
using std::ostream;
|
||||
using std::istream;
|
||||
using std::cerr;
|
||||
using std::endl;
|
||||
#endif
|
||||
|
||||
#include <string>
|
||||
|
||||
/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
DEFINITIONS
|
||||
|
@ -46,12 +57,6 @@ DEFINITIONS
|
|||
|
||||
#define ID_MATRIX "$Id$"
|
||||
|
||||
using std::string;
|
||||
using std::ostream;
|
||||
using std::istream;
|
||||
using std::cerr;
|
||||
using std::endl;
|
||||
|
||||
/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
FORWARD DECLARATIONS
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
|
||||
|
@ -155,38 +160,5 @@ private:
|
|||
void Debug(void);
|
||||
};
|
||||
|
||||
/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
DECLARATION: FGMatrix3x3
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
|
||||
|
||||
class FGMatrix3x3 : public FGMatrix
|
||||
{
|
||||
public:
|
||||
FGMatrix3x3(void) {FGMatrix(3,3);}
|
||||
// ~FGMatrix3x3(void) {~FGMatrix();}
|
||||
};
|
||||
|
||||
/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
DECLARATION: FGColumnVector4
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
|
||||
|
||||
class FGColumnVector4 : public FGColumnVector
|
||||
{
|
||||
public:
|
||||
FGColumnVector4(void) {FGColumnVector(4);}
|
||||
// ~FGColumnVector4(void) {~FGColumnVector();}
|
||||
};
|
||||
|
||||
/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
DECLARATION: FGColumnVector3
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
|
||||
|
||||
class FGColumnVector3 : public FGColumnVector
|
||||
{
|
||||
public:
|
||||
FGColumnVector3(void) {FGColumnVector(3);}
|
||||
// ~FGColumnVector3(void) {~FGColumnVector();}
|
||||
};
|
||||
|
||||
//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
#endif
|
||||
|
|
|
@ -73,6 +73,8 @@ FGNozzle::FGNozzle(FGFDMExec* FDMExec, FGConfigFile* Nzl_cfg) : FGThruster(FDMEx
|
|||
}
|
||||
}
|
||||
|
||||
Thrust = 0;
|
||||
|
||||
if (debug_lvl & 2) cout << "Instantiated: FGNozzle" << endl;
|
||||
}
|
||||
|
||||
|
@ -87,7 +89,6 @@ FGNozzle::~FGNozzle()
|
|||
|
||||
float FGNozzle::Calculate(float CfPc)
|
||||
{
|
||||
float Thrust;
|
||||
float pAtm = fdmex->GetAtmosphere()->GetPressure();
|
||||
|
||||
Thrust = (CfPc + (PE - pAtm)*ExpR) * (Diameter / ExpR) * nzlEff;
|
||||
|
|
|
@ -52,8 +52,8 @@ FGPropeller::FGPropeller(FGFDMExec* exec, FGConfigFile* Prop_cfg) : FGThruster(e
|
|||
string token;
|
||||
int rows, cols;
|
||||
|
||||
PropName = Prop_cfg->GetValue("NAME");
|
||||
cout << "\n Propeller Name: " << PropName << endl;
|
||||
Name = Prop_cfg->GetValue("NAME");
|
||||
cout << "\n Propeller Name: " << Name << endl;
|
||||
Prop_cfg->GetNextConfigLine();
|
||||
while (Prop_cfg->GetValue() != "/FG_PROPELLER") {
|
||||
*Prop_cfg >> token;
|
||||
|
|
|
@ -124,9 +124,6 @@ public:
|
|||
/// Retrieves the propeller moment of inertia
|
||||
float GetIxx(void) { return Ixx; }
|
||||
|
||||
/// Retrieves the Thrust in pounds
|
||||
float GetThrust(void) { return Thrust; }
|
||||
|
||||
/// Retrieves the Torque in foot-pounds (Don't you love the English system?)
|
||||
float GetTorque(void) { return Torque; }
|
||||
|
||||
|
@ -147,7 +144,6 @@ public:
|
|||
float Calculate(float PowerAvailable);
|
||||
|
||||
private:
|
||||
string PropName;
|
||||
int numBlades;
|
||||
float RPM;
|
||||
float Ixx;
|
||||
|
@ -155,7 +151,6 @@ private:
|
|||
float MaxPitch;
|
||||
float MinPitch;
|
||||
float Pitch;
|
||||
float Thrust;
|
||||
float Torque;
|
||||
FGTable *Efficiency;
|
||||
FGTable *cThrust;
|
||||
|
|
|
@ -285,6 +285,87 @@ bool FGPropulsion::LoadPropulsion(FGConfigFile* AC_cfg)
|
|||
|
||||
//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
|
||||
string FGPropulsion::GetPropulsionStrings(void)
|
||||
{
|
||||
string PropulsionStrings = "";
|
||||
bool firstime = true;
|
||||
|
||||
for (unsigned int i=0;i<Engines.size();i++) {
|
||||
if (!firstime) {
|
||||
PropulsionStrings += ", ";
|
||||
firstime = false;
|
||||
}
|
||||
/*
|
||||
switch(Engines[i].GetType()) {
|
||||
case etPiston:
|
||||
PropulsionStrings += (Engines[i].GetName() + "_PwrAvail, ");
|
||||
break;
|
||||
case etRocket:
|
||||
break;
|
||||
case etTurboJet:
|
||||
case etTurboProp:
|
||||
case etTurboShaft:
|
||||
break;
|
||||
}
|
||||
|
||||
switch(Thrusters[i].GetType()) {
|
||||
case ttNozzle:
|
||||
PropulsionStrings += (Thrusters[i].GetName() + "_Thrust, ");
|
||||
break;
|
||||
case ttRotor:
|
||||
break;
|
||||
case ttPropeller:
|
||||
break;
|
||||
}
|
||||
*/
|
||||
}
|
||||
|
||||
return PropulsionStrings;
|
||||
}
|
||||
|
||||
//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
|
||||
string FGPropulsion::GetPropulsionValues(void)
|
||||
{
|
||||
char buff[20];
|
||||
string PropulsionValues = "";
|
||||
bool firstime = true;
|
||||
|
||||
for (unsigned int i=0;i<Engines.size();i++) {
|
||||
if (!firstime) {
|
||||
PropulsionValues += ", ";
|
||||
firstime = false;
|
||||
}
|
||||
/*
|
||||
switch(Engines[i].GetType()) {
|
||||
case etPiston:
|
||||
PropulsionValues += (string(gcvt(Thrusters[i].GetPowerAvailable(), 10, buff)) + ", ");
|
||||
break;
|
||||
case etRocket:
|
||||
break;
|
||||
case etTurboJet:
|
||||
case etTurboProp:
|
||||
case etTurboShaft:
|
||||
break;
|
||||
}
|
||||
|
||||
switch(Thrusters[i].GetType()) {
|
||||
case ttNozzle:
|
||||
PropulsionValues += (string(gcvt(Thrusters[i].GetThrust(), 10, buff)) + ", ");
|
||||
break;
|
||||
case ttRotor:
|
||||
break;
|
||||
case ttPropeller:
|
||||
break;
|
||||
}
|
||||
*/
|
||||
}
|
||||
|
||||
return PropulsionValues;
|
||||
}
|
||||
|
||||
//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
|
||||
void FGPropulsion::Debug(void)
|
||||
{
|
||||
//TODO: Add your source code here
|
||||
|
|
|
@ -157,6 +157,8 @@ public:
|
|||
|
||||
bool GetSteadyState(void);
|
||||
|
||||
string GetPropulsionStrings(void);
|
||||
string GetPropulsionValues(void);
|
||||
|
||||
inline FGColumnVector& GetForces(void) {return *Forces; }
|
||||
inline FGColumnVector& GetMoments(void) {return *Moments;}
|
||||
|
|
|
@ -63,6 +63,7 @@ public:
|
|||
void SetName(string name) {Name = name;}
|
||||
virtual float GetPowerRequired(void) {return 0.0;}
|
||||
virtual void SetdeltaT(float dt) {deltaT = dt;}
|
||||
float GetThrust(void) {return Thrust;}
|
||||
|
||||
protected:
|
||||
string Name;
|
||||
|
|
|
@ -46,6 +46,9 @@ INCLUDES
|
|||
|
||||
#ifdef FGFS
|
||||
# include <simgear/compiler.h>
|
||||
# include STL_STRING
|
||||
SG_USING_STD(cout);
|
||||
SG_USING_STD(endl);
|
||||
# ifdef FG_HAVE_STD_INCLUDES
|
||||
# include <iostream>
|
||||
# include <fstream>
|
||||
|
@ -56,9 +59,11 @@ INCLUDES
|
|||
#else
|
||||
# include <iostream>
|
||||
# include <fstream>
|
||||
# include <string>
|
||||
using std::cout;
|
||||
using std::endl;
|
||||
#endif
|
||||
|
||||
#include <string>
|
||||
#include <sys/types.h>
|
||||
|
||||
#if defined(__BORLANDC__) || defined(_MSC_VER)
|
||||
|
@ -76,9 +81,6 @@ DEFINITIONS
|
|||
|
||||
#define ID_FDMSOCKET "$Id$"
|
||||
|
||||
using std::cout;
|
||||
using std::endl;
|
||||
|
||||
/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
CLASS DECLARATION
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
|
||||
|
|
Loading…
Add table
Reference in a new issue