%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
#include "FGTank.h"
+#include "FGFDMExec.h"
#include "models/FGAuxiliary.h"
+#include "input_output/FGXMLElement.h"
+#include "input_output/FGPropertyManager.h"
+#include <iostream>
+#include <cstdlib>
-using std::cerr;
-using std::endl;
-using std::cout;
+using namespace std;
namespace JSBSim {
-static const char *IdSrc = "$Id$";
+static const char *IdSrc = "$Id: FGTank.cpp,v 1.28 2010/01/24 19:26:04 jberndt Exp $";
static const char *IdHdr = ID_TANK;
/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
FGTank::FGTank(FGFDMExec* exec, Element* el, int tank_number)
: TankNumber(tank_number), Exec(exec)
{
- string token;
+ string token, strFuelName;
Element* element;
Element* element_Grain;
Area = 1.0;
InitialTemperature = Temperature = -9999.0;
Ixx = Iyy = Izz = 0.0;
Radius = Contents = Standpipe = Length = InnerRadius = 0.0;
+ InitialStandpipe = 0.0;
Capacity = 0.00001;
Priority = InitialPriority = 1;
PropertyManager = Exec->GetPropertyManager();
InitialPriority = Priority = el->FindElementValueAsNumber("priority");
if (el->FindElement("density"))
Density = el->FindElementValueAsNumberConvertTo("density", "LBS/GAL");
+ if (el->FindElement("type"))
+ strFuelName = el->FindElementValue("type");
+
SetPriority( InitialPriority ); // this will also set the Selected flag
if (Temperature != -9999.0) InitialTemperature = Temperature = FahrenheitToCelsius(Temperature);
Area = 40.0 * pow(Capacity/1975, 0.666666667);
+ // A named fuel type will override a previous density value
+ if (!strFuelName.empty()) Density = ProcessFuelName(strFuelName);
+
Debug(0);
}
}
+//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+double FGTank::ProcessFuelName(std::string const& name)
+{
+ if (name == "AVGAS") return 6.02;
+ else if (name == "JET-A") return 6.74;
+ else if (name == "JET-A1") return 6.74;
+ else if (name == "JET-B") return 6.48;
+ else if (name == "JP-1") return 6.76;
+ else if (name == "JP-2") return 6.38;
+ else if (name == "JP-3") return 6.34;
+ else if (name == "JP-4") return 6.48;
+ else if (name == "JP-5") return 6.81;
+ else if (name == "JP-6") return 6.55;
+ else if (name == "JP-7") return 6.61;
+ else if (name == "JP-8") return 6.66;
+ else if (name == "JP-8+100") return 6.66;
+ //else if (name == "JP-9") return 6.74;
+ //else if (name == "JPTS") return 6.74;
+ else if (name == "RP-1") return 6.73;
+ else if (name == "T-1") return 6.88;
+ else if (name == "ETHANOL") return 6.58;
+ else if (name == "HYDRAZINE")return 8.61;
+ else if (name == "F-34") return 6.66;
+ else if (name == "F-35") return 6.74;
+ else if (name == "F-40") return 6.48;
+ else if (name == "F-44") return 6.81;
+ else if (name == "AVTAG") return 6.48;
+ else if (name == "AVCAT") return 6.81;
+ else {
+ cerr << "Unknown fuel type specified: "<< name << endl;
+ }
+
+ return 6.6;
+}
+
+
//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
// The bitmasked value choices are as follows:
// unset: In this case (the default) JSBSim would only print