packageJP8

Jet propulsion 8, JetA with additives, typical density

Extends from ThermofluidStream.Media.myMedia.Incompressible.TableBased (Incompressible medium properties based on tables).

Information

JP8

JP8 is a jet propulsion fuel often used in military aircraft. It is essentially the same as JetA, but with some additives that e.g. allows for higher mass flows without static electricity build up. The data of this implementation comes from Handbook of Aviation Fuel properties, Coordinating Research Council Inc.(USA), 1983. There are both more detailed property models available, for example in REFPROP, or with more attention to computational robustness, for example in Modelon´s Fuel library. The data used in this model does not take into account properties important for combustion of the fuel, only those important for transportation and heat storage.

 The main source of the density gives data between -40 degC and 90 degC, linear in T, but complemetary relative density data is given as linear up to 120 degC, which implies that linear extraploation can be possible above 90 degC. Observe that the density can vary with 30% between batches or over time as the ligther fractions tend to evaporate depending on manner of storage. The typical density used here is an average of measured data.


The heat capacity data is given between 30 degC and 180 degC, linear in T.


The thermal conductivity data is given between -8 degC and 220 degC, linear in T.


The kinematic viscosity data is given between -50 and 145 degC, with log(viscosity) linear in T.


The true vapor pressure data is given between 50 degC and 140 degC, with log(VaporPressure) linear in 1/T(in Kelvin).

Density

Heat capacity

Dynamic viscosity

Thermal conductivity

Parameters

TypeNameDefaultDescription
ThermofluidStream.Media.myMedia.Interfaces.Choices.IndependentVariablesThermoStates (from PartialMedium)Enumeration type for independent variables
StringmediumName (from PartialMedium)"unusablePartialMedium"Name of the medium
String[:]substanceNames (from PartialMedium){mediumName}Names of the mixture substances. Set substanceNames={mediumName} if only one substance.
String[:]extraPropertiesNames (from PartialMedium)fill("", 0)Names of the additional (extra) transported properties. Set extraPropertiesNames=fill("",0) if unused
BooleansingleState (from PartialMedium)= true, if u and d are not a function of pressure
BooleanreducedX (from PartialMedium)true= true, if medium contains the equation sum(X) = 1.0; set reducedX=true if only one substance (see docu for details)
BooleanfixedX (from PartialMedium)false= true, if medium contains the equation X = reference_X
AbsolutePressurereference_p (from PartialMedium)101325Reference pressure of Medium: default 1 atmosphere
Temperaturereference_T (from PartialMedium)298.15Reference temperature of Medium: default 25 deg Celsius
MassFraction[nX]reference_X (from PartialMedium)fill(1/nX, nX)Default mass fractions of medium
AbsolutePressurep_default (from PartialMedium)101325Default value for pressure of medium (for initialization)
TemperatureT_default (from PartialMedium)Modelica.Units.Conversions.from_degC(20)Default value for temperature of medium (for initialization)
SpecificEnthalpyh_default (from PartialMedium)specificEnthalpy_pTX(p_default, T_default, X_default)Default value for specific enthalpy of medium (for initialization)
MassFraction[nX]X_default (from PartialMedium)reference_XDefault value for mass fractions of medium (for initialization)
ExtraProperty[nC]C_default (from PartialMedium)fill(0, nC)Default value for trace substances of medium (for initialization)
IntegernS (from PartialMedium)size(substanceNames, 1)Number of substances
IntegernX (from PartialMedium)nSNumber of mass fractions
IntegernXi (from PartialMedium)if fixedX then 0 else if reducedX then nS - 1 else nSNumber of structurally independent mass fractions (see docu for details)
IntegernC (from PartialMedium)size(extraPropertiesNames, 1)Number of extra (outside of standard mass-balance) transported properties
Real[nC]C_nominal (from PartialMedium)1.0e-6*ones(nC)Default for the nominal values for the extra properties
BooleanenthalpyOfT (from TableBased)trueTrue if enthalpy is approximated as a function of T only, (p-dependence neglected)
BooleandensityOfT (from TableBased)size(tableDensity, 1) > 1True if density is a function of temperature
SI.TemperatureT_min (from TableBased)Minimum temperature valid for medium model
SI.TemperatureT_max (from TableBased)Maximum temperature valid for medium model
TemperatureT0 (from TableBased)273.15Reference Temperature
SpecificEnthalpyh0 (from TableBased)0Reference enthalpy at T0, reference_p
SpecificEntropys0 (from TableBased)0Reference entropy at T0, reference_p
MolarMassMM_const (from TableBased)0.1Molar mass
Integernpol (from TableBased)2Degree of polynomial used for fitting
IntegernpolDensity (from TableBased)npolDegree of polynomial used for fitting rho(T)
IntegernpolHeatCapacity (from TableBased)npolDegree of polynomial used for fitting Cp(T)
IntegernpolViscosity (from TableBased)npolDegree of polynomial used for fitting eta(T)
IntegernpolVaporPressure (from TableBased)npolDegree of polynomial used for fitting pVap(T)
IntegernpolConductivity (from TableBased)npolDegree of polynomial used for fitting lambda(T)
Integerneta (from TableBased)size(tableViscosity, 1)Number of data points for viscosity
RealtableDensity (from TableBased)Table for rho(T)
RealtableHeatCapacity (from TableBased)Table for Cp(T)
RealtableViscosity (from TableBased)Table for eta(T)
RealtableVaporPressure (from TableBased)Table for pVap(T)
RealtableConductivity (from TableBased)Table for lambda(T)
BooleanTinK (from TableBased)True if T[K],Kelvin used for table temperatures
BooleanhasDensity (from TableBased)not (size(tableDensity, 1) == 0)True if table tableDensity is present
BooleanhasHeatCapacity (from TableBased)not (size(tableHeatCapacity, 1) == 0)True if table tableHeatCapacity is present
BooleanhasViscosity (from TableBased)not (size(tableViscosity, 1) == 0)True if table tableViscosity is present
BooleanhasVaporPressure (from TableBased)not (size(tableVaporPressure, 1) == 0)True if table tableVaporPressure is present
Real[neta]invTK (from TableBased)if size(tableViscosity, 1) > 0 then (if TinK then 1./tableViscosity[:, 1] else 1./Cv.from_degC(tableViscosity[:, 1])) else fill(0, neta)
Real[:]poly_rho (from TableBased)if hasDensity then Polynomials.fitting(tableDensity[:, 1], tableDensity[:, 2], npolDensity) else zeros(npolDensity + 1)
Real[:]poly_Cp (from TableBased)if hasHeatCapacity then Polynomials.fitting(tableHeatCapacity[:, 1], tableHeatCapacity[:, 2], npolHeatCapacity) else zeros(npolHeatCapacity + 1)
Real[:]poly_eta (from TableBased)if hasViscosity then Polynomials.fitting(invTK, Math.log(tableViscosity[:, 2]), npolViscosity) else zeros(npolViscosity + 1)
Real[:]poly_pVap (from TableBased)if hasVaporPressure then Polynomials.fitting(tableVaporPressure[:, 1], tableVaporPressure[:, 2], npolVaporPressure) else zeros(npolVaporPressure + 1)
Real[:]poly_lam (from TableBased)if size(tableConductivity, 1) > 0 then Polynomials.fitting(tableConductivity[:, 1], tableConductivity[:, 2], npolConductivity) else zeros(npolConductivity + 1)

Revisions

Author: Ingela Lind, M Sc, Ph D, Technical Fellow, Simulation and Thermal Analysis, Vehicle Systems, SAAB Aerosystems, 2024