packageJP8
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
| Type | Name | Default | Description |
|---|---|---|---|
| ThermofluidStream.Media.myMedia.Interfaces.Choices.IndependentVariables | ThermoStates (from PartialMedium) | Enumeration type for independent variables | |
| String | mediumName (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 |
| Boolean | singleState (from PartialMedium) | = true, if u and d are not a function of pressure | |
| Boolean | reducedX (from PartialMedium) | true | = true, if medium contains the equation sum(X) = 1.0; set reducedX=true if only one substance (see docu for details) |
| Boolean | fixedX (from PartialMedium) | false | = true, if medium contains the equation X = reference_X |
| AbsolutePressure | reference_p (from PartialMedium) | 101325 | Reference pressure of Medium: default 1 atmosphere |
| Temperature | reference_T (from PartialMedium) | 298.15 | Reference temperature of Medium: default 25 deg Celsius |
| MassFraction[nX] | reference_X (from PartialMedium) | fill(1/nX, nX) | Default mass fractions of medium |
| AbsolutePressure | p_default (from PartialMedium) | 101325 | Default value for pressure of medium (for initialization) |
| Temperature | T_default (from PartialMedium) | Modelica.Units.Conversions.from_degC(20) | Default value for temperature of medium (for initialization) |
| SpecificEnthalpy | h_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_X | Default 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) |
| Integer | nS (from PartialMedium) | size(substanceNames, 1) | Number of substances |
| Integer | nX (from PartialMedium) | nS | Number of mass fractions |
| Integer | nXi (from PartialMedium) | if fixedX then 0 else if reducedX then nS - 1 else nS | Number of structurally independent mass fractions (see docu for details) |
| Integer | nC (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 |
| Boolean | enthalpyOfT (from TableBased) | true | True if enthalpy is approximated as a function of T only, (p-dependence neglected) |
| Boolean | densityOfT (from TableBased) | size(tableDensity, 1) > 1 | True if density is a function of temperature |
| SI.Temperature | T_min (from TableBased) | Minimum temperature valid for medium model | |
| SI.Temperature | T_max (from TableBased) | Maximum temperature valid for medium model | |
| Temperature | T0 (from TableBased) | 273.15 | Reference Temperature |
| SpecificEnthalpy | h0 (from TableBased) | 0 | Reference enthalpy at T0, reference_p |
| SpecificEntropy | s0 (from TableBased) | 0 | Reference entropy at T0, reference_p |
| MolarMass | MM_const (from TableBased) | 0.1 | Molar mass |
| Integer | npol (from TableBased) | 2 | Degree of polynomial used for fitting |
| Integer | npolDensity (from TableBased) | npol | Degree of polynomial used for fitting rho(T) |
| Integer | npolHeatCapacity (from TableBased) | npol | Degree of polynomial used for fitting Cp(T) |
| Integer | npolViscosity (from TableBased) | npol | Degree of polynomial used for fitting eta(T) |
| Integer | npolVaporPressure (from TableBased) | npol | Degree of polynomial used for fitting pVap(T) |
| Integer | npolConductivity (from TableBased) | npol | Degree of polynomial used for fitting lambda(T) |
| Integer | neta (from TableBased) | size(tableViscosity, 1) | Number of data points for viscosity |
| Real | tableDensity (from TableBased) | Table for rho(T) | |
| Real | tableHeatCapacity (from TableBased) | Table for Cp(T) | |
| Real | tableViscosity (from TableBased) | Table for eta(T) | |
| Real | tableVaporPressure (from TableBased) | Table for pVap(T) | |
| Real | tableConductivity (from TableBased) | Table for lambda(T) | |
| Boolean | TinK (from TableBased) | True if T[K],Kelvin used for table temperatures | |
| Boolean | hasDensity (from TableBased) | not (size(tableDensity, 1) == 0) | True if table tableDensity is present |
| Boolean | hasHeatCapacity (from TableBased) | not (size(tableHeatCapacity, 1) == 0) | True if table tableHeatCapacity is present |
| Boolean | hasViscosity (from TableBased) | not (size(tableViscosity, 1) == 0) | True if table tableViscosity is present |
| Boolean | hasVaporPressure (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