Author: Jon S. Berndt
Date started: 01/21/99
- ------------- Copyright (C) 1999 Jon S. Berndt (jsb@hal-pc.org) -------------
+ ------------- Copyright (C) 1999 Jon S. Berndt (jon@jsbsim.org) -------------
This program is free software; you can redistribute it and/or modify it under
the terms of the GNU Lesser General Public License as published by the Free Software
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
#include "FGFDMExec.h"
-#include <FGJSBBase.h>
-#include <input_output/FGXMLElement.h>
-#include <math/FGColumnVector3.h>
+#include "FGJSBBase.h"
+#include "input_output/FGXMLElement.h"
+#include "math/FGColumnVector3.h"
#include <string>
using std::string;
<contents unit="{LBS | KG}"> {number} </contents>
<temperature> {number} </temperature> <!-- must be degrees fahrenheit -->
<standpipe unit="{LBS | KG"}> {number} </standpipe>
+ <priority> {integer} </priority>
+ <density unit="{KG/L | LBS/GAL}"> {number} </density>
</tank>
@endcode
- \b contents - Initial contents, defaults to pounds.
- \b temperature - Initial temperature, defaults to degrees Fahrenheit.
- \b standpipe - Minimum contents to which tank can dump, defaults to pounds.
+- \b priority - Establishes feed sequence of tank. "1" is the highest priority.
+- \b density - Density of liquid tank contents.
location:
- \b x - Location of tank on aircraft's x-axis, defaults to inches.
- \b y - 0.0 (both full and drained CG locations)
- \b z - 0.0 (both full and drained CG locations)
- \b radius - 0.0
-- \b capacity - 0.0
+- \b capacity - 0.00001 (tank capacity must not be zero)
- \b contents - 0.0
-- \b temperature - -9999.0
-- \b standpipe - 0.0
+- \b temperature - -9999.0 (flag which indicates no temperature is set)
+- \b standpipe - 0.0 (all contents may be dumped)
+- \b priority - 1 (highest feed sequence priority)
+- \b density - 6.6
@author Jon Berndt, Dave Culp
@see Akbar, Raza et al. "A Simple Analysis of Fuel Addition to the CWT of
/** Resets the tank parameters to the initial conditions */
void ResetToIC(void);
- /** If the tank is supplying fuel, this function returns true.
- @return true if this tank is feeding an engine.*/
+ /** If the tank is set to supply fuel, this function returns true.
+ @return true if this tank is set to a non-zero priority.*/
bool GetSelected(void) {return Selected;}
/** Gets the tank fill level.
@return the capacity of the tank in pounds. */
double GetCapacity(void) {return Capacity;}
+ /** Gets the capacity of the tank.
+ @return the capacity of the tank in gallons. */
+ double GetCapacityGallons(void) {return Capacity/Density;}
+
/** Gets the contents of the tank.
@return the contents of the tank in pounds. */
double GetContents(void) const {return Contents;}
+ /** Gets the contents of the tank.
+ @return the contents of the tank in gallons. */
+ double GetContentsGallons(void) const {return Contents/Density;}
+
/** Gets the temperature of the fuel.
The temperature of the fuel is calculated if an initial tempearture is
given in the configuration file.
double GetStandpipe(void) {return Standpipe;}
+ int GetPriority(void) const {return Priority;}
+ void SetPriority(int p) { Priority = p; Selected = p>0 ? true:false; }
+
const FGColumnVector3 GetXYZ(void);
const double GetXYZ(int idx);
double Fill(double amount);
void SetContents(double amount);
+ void SetContentsGallons(double gallons);
void SetTemperature(double temp) { Temperature = temp; }
void SetStandpipe(double amount) { Standpipe = amount; }
+ void SetSelected(bool sel) { sel==true ? SetPriority(1):SetPriority(0); }
enum TankType {ttUNKNOWN, ttFUEL, ttOXIDIZER};
enum GrainType {gtUNKNOWN, gtCYLINDRICAL, gtENDBURNING};
double Temperature, InitialTemperature;
double Standpipe, InitialStandpipe;
bool Selected;
+ int Priority, InitialPriority;
FGFDMExec* Exec;
FGPropertyManager* PropertyManager;
void CalculateInertias(void);