1
0
Fork 0

Updates to get engine working.

This commit is contained in:
curt 1999-09-07 23:15:45 +00:00
parent 4dc4764510
commit c193021346
11 changed files with 114 additions and 106 deletions

View file

@ -150,6 +150,7 @@ public:
inline float GetIyy(void) {return Iyy;}
inline float GetIzz(void) {return Izz;}
inline float GetIxz(void) {return Ixz;}
inline int GetNumEngines(void) {return numEngines;}
private:
void GetState(void);

View file

@ -51,8 +51,8 @@ FGControls::~FGControls() {
// $Log$
// Revision 1.5 1999/08/17 19:18:11 curt
// Updates from Jon.
// Revision 1.6 1999/09/07 21:15:45 curt
// Updates to get engine working.
//
// Revision 1.1 1999/02/13 01:12:03 curt
// Initial Revision.

View file

@ -177,8 +177,8 @@ extern FGControls controls;
// $Log$
// Revision 1.5 1999/08/17 19:18:11 curt
// Updates from Jon.
// Revision 1.6 1999/09/07 21:15:45 curt
// Updates to get engine working.
//
// Revision 1.1 1999/02/13 01:12:03 curt
// Initial Revision.

View file

@ -31,6 +31,8 @@ See header file.
HISTORY
--------------------------------------------------------------------------------
01/21/99 JSB Created
09/03/99 JSB Changed Rocket thrust equation to correct -= Thrust instead of
+= Thrust (thanks to Tony Peden)
********************************************************************************
INCLUDES
@ -137,7 +139,7 @@ float FGEngine::CalcRocketThrust(void)
Flameout = false;
}
Thrust += 0.8*(Thrust - lastThrust); // actual thrust
Thrust -= 0.8*(Thrust - lastThrust); // actual thrust
return Thrust;
}

View file

@ -72,3 +72,14 @@ bool FGFCS::Run(void)
}
return false;
}
void FGFCS::SetThrottle(int engineNum, float setting)
{
if (engineNum < 0) {
for (int ctr=0;ctr<Aircraft->GetNumEngines();ctr++) Throttle[ctr] = setting;
} else {
Throttle[engineNum] = setting;
}
}

View file

@ -66,7 +66,7 @@ public:
inline void SetDr(float tt) {Dr = tt;}
inline void SetDf(float tt) {Df = tt;}
inline void SetDs(float tt) {Ds = tt;}
inline void SetThrottle(int ii, float tt) {Throttle[ii] = tt;}
void SetThrottle(int ii, float tt);
protected:

View file

@ -39,21 +39,6 @@ HISTORY
INCLUDES
*******************************************************************************/
#ifdef FGFS
# include <Include/compiler.h>
# ifdef FG_HAVE_STD_INCLUDES
# include <iostream>
# else
# include <iostream.h>
# endif
#else
# include <iostream>
#endif
#ifdef HAVE_CURSES
#include <ncurses.h>
#endif
#include "FGOutput.h"
#include "FGState.h"
#include "FGFDMExec.h"
@ -73,11 +58,6 @@ FGOutput::FGOutput(FGFDMExec* fdmex) : FGModel(fdmex)
{
Name = "FGOutput";
FirstPass = true;
#ifdef HAVE_CURSES
initscr();
cbreak();
noecho();
#endif
}
@ -89,82 +69,13 @@ FGOutput::~FGOutput(void)
bool FGOutput::Run(void)
{
if (!FGModel::Run()) {
DelimitedOutput();
// ConsoleOutput();
DelimitedOutput("JSBSimData.csv");
} else {
}
return false;
}
void FGOutput::ConsoleOutput(void)
{
#ifdef HAVE_CURSES
string buffer;
clear();
move(1,1); insstr("Quaternions");
move(2,5); insstr("Q0");
move(2,16); insstr("Q1");
move(2,27); insstr("Q2");
move(2,38); insstr("Q3");
move(3,1); buffer = Rotation->GetQ0(); insstr(buffer.c_str());
move(3,12); buffer = Rotation->GetQ1(); insstr(buffer.c_str());
move(3,23); buffer = Rotation->GetQ2(); insstr(buffer.c_str());
move(3,34); buffer = Rotation->GetQ3(); insstr(buffer.c_str());
move(0,0); insstr("Time: ");
move(0,6); insstr(gcvt(State->Getsim_time(),6,buffer));
move(2,46); insstr("Phi");
move(2,55); insstr("Tht");
move(2,64); insstr("Psi");
move(3,45); buffer = Rotation->Getphi(); insstr(buffer.c_str());
move(3,54); buffer = Rotation->Gettht(); insstr(buffer.c_str());
move(3,63); buffer = Rotation->Getpsi(); insstr(buffer.c_str());
move(5,47); insstr("U");
move(5,56); insstr("V");
move(5,65); insstr("W");
move(6,45); buffer = Translation->GetU(); insstr(buffer.c_str());
move(6,54); buffer = Translation->GetV(); insstr(buffer.c_str());
move(6,63); buffer = Translation->GetW(); insstr(buffer.c_str());
move(8,47); insstr("Fx");
move(8,56); insstr("Fy");
move(8,65); insstr("Fz");
move(9,45); buffer = Aircraft->GetFx(); insstr(buffer.c_str());
move(9,54); buffer = Aircraft->GetFy(); insstr(buffer.c_str());
move(9,63); buffer = Aircraft->GetFz(); insstr(buffer.c_str());
move(11,47); insstr("Fn");
move(11,56); insstr("Fe");
move(11,65); insstr("Fd");
move(12,45); buffer = Position->GetFn(); insstr(buffer.c_str());
move(12,54); buffer = Position->GetFe(); insstr(buffer.c_str());
move(12,63); buffer = Position->GetFd(); insstr(buffer.c_str());
move(14,47); insstr("Latitude");
move(14,57); insstr("Longitude");
move(14,67); insstr("Altitude");
move(15,47); buffer = State->Getlatitude(); insstr(buffer.c_str());
move(15,57); buffer = State->Getlongitude(); insstr(buffer.c_str());
move(15,67); buffer = State->Geth(); insstr(buffer.c_str());
refresh();
move(LINES-1,1);
refresh();
#endif
}
void FGOutput::DelimitedOutput(void)
{
if (FirstPass) {
@ -227,3 +138,69 @@ void FGOutput::DelimitedOutput(void)
cout << endl;
}
void FGOutput::DelimitedOutput(string fname)
{
if (FirstPass) {
datafile.open(fname.c_str());
datafile << "Time,";
datafile << "Altitude,";
datafile << "Phi,";
datafile << "Tht,";
datafile << "Psi,";
datafile << "Rho,";
datafile << "Vtotal,";
datafile << "U,";
datafile << "V,";
datafile << "W,";
datafile << "Vn,";
datafile << "Ve,";
datafile << "Vd,";
datafile << "Udot,";
datafile << "Vdot,";
datafile << "Wdot,";
datafile << "Fx,";
datafile << "Fy,";
datafile << "Fz,";
datafile << "Latitude,";
datafile << "Longitude,";
datafile << "QBar,";
datafile << "Alpha,";
datafile << "L,";
datafile << "M,";
datafile << "N";
datafile << endl;
FirstPass = false;
}
datafile << State->Getsim_time() << ",";
datafile << State->Geth() << ",";
datafile << Rotation->Getphi() << ",";
datafile << Rotation->Gettht() << ",";
datafile << Rotation->Getpsi() << ",";
datafile << Atmosphere->Getrho() << ",";
datafile << State->GetVt() << ",";
datafile << Translation->GetU() << ",";
datafile << Translation->GetV() << ",";
datafile << Translation->GetW() << ",";
datafile << Position->GetVn() << ",";
datafile << Position->GetVe() << ",";
datafile << Position->GetVd() << ",";
datafile << Translation->GetUdot() << ",";
datafile << Translation->GetVdot() << ",";
datafile << Translation->GetWdot() << ",";
datafile << Aircraft->GetFx() << ",";
datafile << Aircraft->GetFy() << ",";
datafile << Aircraft->GetFz() << ",";
datafile << State->Getlatitude() << ",";
datafile << State->Getlongitude() << ",";
datafile << State->Getqbar() << ",";
datafile << Translation->Getalpha() << ",";
datafile << Aircraft->GetL() << ",";
datafile << Aircraft->GetM() << ",";
datafile << Aircraft->GetN() << "";
datafile << endl;
datafile.flush();
}

View file

@ -40,7 +40,21 @@ INCLUDES
#include "FGModel.h"
using namespace std;
#ifdef FGFS
# include <Include/compiler.h>
# ifdef FG_HAVE_STD_INCLUDES
# include <iostream>
# include <fstream>
# else
# include <iostream.h>
# include <fstream.h>
# endif
#else
# include <iostream>
# include <fstream>
#endif
//using namespace std;
/*******************************************************************************
CLASS DECLARATION
@ -54,13 +68,14 @@ public:
bool Run(void);
void ConsoleOutput(void);
void DelimitedOutput(void);
void DelimitedOutput(string);
protected:
private:
bool FirstPass;
ofstream datafile;
};
/******************************************************************************/

View file

@ -124,7 +124,7 @@ bool FGPosition:: Run(void)
Ve = T[1][2]*U + T[2][2]*V + T[3][2]*W;
Vd = T[1][3]*U + T[2][3]*V + T[3][3]*W;
AccelN = invMass * Fn + invRadius * (Vn*Vd - Ve*Ve*tanLat); // Eqn. 3.6
/* AccelN = invMass * Fn + invRadius * (Vn*Vd - Ve*Ve*tanLat); // Eqn. 3.6
AccelE = invMass * Fe + invRadius * (Ve*Vd + Vn*Ve*tanLat); // From
AccelD = invMass * Fd - invRadius * (Vn*Vn + Ve*Ve); // Reference [3]
@ -133,7 +133,7 @@ bool FGPosition:: Run(void)
Vd += 0.5*dt*rate*(3.0*AccelD - lastAccelD); // Reference [3]
Vee = Ve - OMEGAEARTH * (Radius) * cosLat; // From Eq. 3.8
// Reference [3]
*/ // Reference [3]
lastLatitudeDot = LatitudeDot;
lastLongitudeDot = LongitudeDot;
lastRadiusDot = RadiusDot;

View file

@ -40,14 +40,13 @@ INCLUDES
*******************************************************************************/
#if __BCPLUSPLUS__ >= 0x0540 // If compiling under Borland C++Builder
//---------------------------------------------------------------------------
#pragma hdrstop
#include <condefs.h>
//---------------------------------------------------------------------------
USEUNIT("FGAircraft.cpp");
USEUNIT("FGAtmosphere.cpp");
USEUNIT("FGAuxiliary.cpp");
USEUNIT("FGCoefficient.cpp");
USEUNIT("FGControls.cpp");
USEUNIT("FGEngine.cpp");
USEUNIT("FGFCS.cpp");
USEUNIT("FGFDMExec.cpp");
@ -114,3 +113,7 @@ int main(int argc, char** argv)
return 0;
}
WinMain()
{
}

View file

@ -1,7 +1,6 @@
JSBSim : FGAircraft.o FGAtmosphere.o FGCoefficient.o FGFCS.o FGFDMExec.o \
FGModel.o FGOutput.o FGPosition.o FGRotation.o FGState.o \
FGTranslation.o FGUtility.o FGEngine.o FGTank.o FGAuxiliary.o \
JSBSim.o FGInitialCondition.o
JSBSim : FGAircraft.o FGAtmosphere.o FGCoefficient.o FGFCS.o FGFDMExec.o\
FGModel.o FGOutput.o FGPosition.o FGRotation.o FGState.o FGTranslation.o\
FGUtility.o FGEngine.o FGTank.o FGAuxiliary.o JSBSim.o
g++ $(CCOPTS) -lm *.o -oJSBSim
FGAircraft.o : FGAircraft.cpp
g++ $(CCOPTS) -c FGAircraft.cpp