//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
//
// A private, internal function call for Tie-ing to a property, so it needs an
-// argument. Nothing is done with the argument, yet.
+// argument.
void FGFDMExec::ResetToInitialConditions(int mode)
{
+ if (mode == 1) {
+ for (unsigned int i=0; i<Outputs.size(); i++) {
+ Outputs[i]->SetStartNewFile(true);
+ }
+ }
+
ResetToInitialConditions();
}
bool RunScript(void);
void ResetEvents(void) {
- for (int i=0; i<Events.size(); i++) Events[i].reset();
+ for (unsigned int i=0; i<Events.size(); i++) Events[i].reset();
}
private:
DfPos[i] = DsbPos[i] = DspPos[i] = 0.0;
}
- for (int i=0; i<Systems.size(); i++) {
+ for (unsigned int i=0; i<Systems.size(); i++) {
if (Systems[i]->GetType() == "LAG" ||
Systems[i]->GetType() == "LEAD_LAG" ||
Systems[i]->GetType() == "WASHOUT" ||
} else if (Systems[i]->GetType() == "PID" ) {
((FGPID*)Systems[i])->ResetPastStates();
}
-
}
- for (int i=0; i<FCSComponents.size(); i++) {
+ for (unsigned int i=0; i<FCSComponents.size(); i++) {
if (FCSComponents[i]->GetType() == "LAG" ||
FCSComponents[i]->GetType() == "LEAD_LAG" ||
FCSComponents[i]->GetType() == "WASHOUT" ||
}
}
- for (int i=0; i<APComponents.size(); i++) {
+ for (unsigned int i=0; i<APComponents.size(); i++) {
if (APComponents[i]->GetType() == "LAG" ||
APComponents[i]->GetType() == "LEAD_LAG" ||
APComponents[i]->GetType() == "WASHOUT" ||
sFirstPass = dFirstPass = true;
socket = 0;
flightGearSocket = 0;
+ runID_postfix = 0;
Type = otNone;
SubSystems = 0;
enabled = true;
+ StartNewFile = false;
delimeter = ", ";
- Filename = "";
+ BaseFilename = Filename = "";
DirectivesFile = "";
output_file_name = "";
bool FGOutput::InitModel(void)
{
+ char fname[1000] = "";
+
if (!FGModel::InitModel()) return false;
+ if (Filename.size() > 0 && StartNewFile) {
+ int idx = BaseFilename.find_last_of(".");
+ int len = BaseFilename.length();
+ string extension = "";
+ if (idx != string::npos) {
+ extension = BaseFilename.substr(idx, len-idx);
+ len -= extension.length();
+ }
+ sprintf(fname, "%s_%d%s", BaseFilename.substr(0,len).c_str(), runID_postfix++, extension.c_str());
+ Filename = string(fname);
+ datafile.close();
+ StartNewFile = false;
+ dFirstPass = true;
+ }
+
return true;
}
if (fname == "COUT" || fname == "cout") {
buffer = cout.rdbuf();
} else {
- datafile.open(fname.c_str());
+ if (!datafile.is_open()) datafile.open(fname.c_str());
buffer = datafile.rdbuf();
}
else
flightGearSocket = new FGfdmSocket(name, port, FGfdmSocket::ptTCP); // create tcp socket (default)
} else {
- Filename = name;
+ BaseFilename = Filename = name;
}
if (!document->GetAttributeValue("rate").empty()) {
OutRate = (int)document->GetAttributeValueAsNumber("rate");
void SetType(string);
+ void SetStartNewFile(bool tt) {StartNewFile = tt;}
void SetSubsystems(int tt) {SubSystems = tt;}
inline void Enable(void) { enabled = true; }
inline void Disable(void) { enabled = false; }
enum {otNone, otCSV, otTab, otSocket, otTerminal, otFlightGear, otUnknown} Type;
bool sFirstPass, dFirstPass, enabled;
int SubSystems;
- string output_file_name, delimeter, Filename, DirectivesFile;
+ int runID_postfix;
+ bool StartNewFile;
+ string output_file_name, delimeter, BaseFilename, Filename, DirectivesFile;
ofstream datafile;
FGfdmSocket* socket;
FGfdmSocket* flightGearSocket;
{
if (n > 0) { // A specific engine is supposed to be initialized
- if (n >= GetNumEngines() ) {
+ if (n >= (int)GetNumEngines() ) {
cerr << "Tried to initialize a non-existent engine!" << endl;
throw;
}
/* MESO7 */
double meso_tn1[5];
double meso_tn2[4];
- double meso_tn3[3];
+ double meso_tn3[5];
double meso_tgn1[2];
double meso_tgn2[2];
double meso_tgn3[2];