Source code for RCAIDE.Library.Attributes.Propellants.Liquid_Natural_Gas

# RCAIDE/Library/Attributes/Propellants/Liquid_Natural_Gas.py
# 
#
# Created:  April 2026, S. Shekar, S. Sharma

# ---------------------------------------------------------------------------------------------------------------------- 
#  Imports
# ---------------------------------------------------------------------------------------------------------------------- 
import RCAIDE
from .Propellant import Propellant   

import os
import numpy as np
from scipy.interpolate  import interp1d 
# ----------------------------------------------------------------------------------------------------------------------
#  Liquid_Natural_Gas Class
# ----------------------------------------------------------------------------------------------------------------------
[docs] class Liquid_Natural_Gas(Propellant): """ A class representing Liquid Natural Gas (LNG) fuel properties and composition for propulsion applications. Attributes ---------- tag : str Identifier for the propellant ('Liquid_Natural_Gas') reactant : str Oxidizer used for combustion ('O2') density : float Fuel density in kg/m³ (414.2) specific_energy : float Lower heating value (LHV) specific energy content in J/kg (48.632e6) energy_density : float Energy density in J/m³ (22200.0e6) stoichiometric_fuel_air_ratio : float Stoichiometric fuel-to-air ratio [-] (0, placeholder) heat_of_vaporization : float Heat of vaporization at standard conditions in J/kg (0, placeholder) temperature : float Temperature of fuel in K (0, placeholder) pressure : float Pressure of fuel in Pa (0, placeholder) fuel_surrogate_S1 : dict Mole fractions of fuel surrogate species [-] kinetic_mechanism : str Kinetic mechanism name for fuel surrogate combustion oxidizer : str Oxidizer species name emission_indices : Data Emission indices in kg/kg fuel - Production : float Upstream extraction and liquefaction CO2 (0.35) - CO2 : float Carbon dioxide (2.75) - CO : float Carbon monoxide (0.00100) - H2O : float Water vapor (2.20) - SO2 : float Sulfur dioxide (0.0) - NOx : float Nitrogen oxides (0.0126) - Soot : float Particulate matter (0.0) global_warming_potential_100 : Data 100-year global warming potentials (CO2-equivalent per kg of species) - CO2 : float Carbon dioxide (1) - H2O : float Water vapor (0.06) - CO : float Carbon monoxide (1) - SO2 : float Sulfur dioxide (-226) - NOx : float Nitrogen oxides (52) - Soot : float Particulate matter (1166) - Contrails : float Contrail formation factor in kg CO2e/km (11) materials_properties : dict Interpolated thermophysical property data loaded from ``LNG_properties.res`` Notes ----- LNG is a cryogenic fuel consisting primarily of methane with small amounts of heavier hydrocarbons. It requires storage at approximately -162°C (-111 K) but offers reduced carbon emissions compared to conventional jet fuels. The ``specific_energy`` value uses the lower heating value (LHV) of LNG, which excludes the latent heat of water condensation in combustion products. **Definitions** 'Global Warming Potential (GWP-100)' Relative measure of heat trapped in the atmosphere over 100 years compared to an equivalent mass of CO2 'Energy Density' Energy content per unit volume, dependent on cryogenic storage conditions **Major Assumptions** * Properties are for saturated liquid at atmospheric pressure * Composition represents a typical LNG mixture References ---------- [1] Lower and Higher Heating Values of Gas, Liquid, and Solid Fuels. NPRE 470 course resource, University of Illinois Urbana-Champaign, 2018. https://courses.grainger.illinois.edu/npre470/sp2018/web/Lower_and_Higher_Heating_Values_of_Gas_Liquid_and_Solid_Fuels.pdf """ def __defaults__(self): """Set default values for Liquid Natural Gas propellant properties. Assumptions ----------- * Density and energy properties correspond to saturated liquid LNG at atmospheric pressure. * Specific energy is based on the lower heating value (LHV) of LNG. * GWP-100 values follow standard aviation emission indices. * Placeholder values of 0 are assigned to fields that must be set by the user or a higher-fidelity model before use. Source ------ Lower Heating Value: NPRE 470, University of Illinois Urbana-Champaign (2018). https://courses.grainger.illinois.edu/npre470/sp2018/web/ Lower_and_Higher_Heating_Values_of_Gas_Liquid_and_Solid_Fuels.pdf """ self.tag = 'Liquid_Natural_Gas' self.reactant = 'O2' self.density = 414.2 # [kg/m^3] saturated liquid at ~111 K self.specific_energy = 48.632e6 # [J/kg] lower heating value (LHV) self.energy_density = 22200.0e6 # [J/m^3] self.stoichiometric_fuel_air_ratio = 0 # [-] stoichiometric fuel-to-air ratio (placeholder) self.heat_of_vaporization = 0 # [J/kg] heat of vaporization at standard conditions (placeholder) self.temperature = 0 # [K] fuel temperature (placeholder) self.pressure = 0 # [Pa] fuel pressure (placeholder) self.fuel_surrogate_S1 = {} # [-] mole fractions of fuel surrogate species self.kinetic_mechanism = '' # kinetic mechanism name for combustion model self.oxidizer = '' # oxidizer species name self.emission_indices.Production = 0.35 # kg/kg upstream extraction + liquefaction (GREET) self.emission_indices.CO2 = 2.75 # kg/kg stoichiometric floor for CH4 (44/16); LNG blend ≈ 2.75–2.78 self.emission_indices.CO = 0.00100 # kg/kg ~1.0 g/kg, typical gas turbine at cruise self.emission_indices.H2O = 2.20 # kg/kg self.emission_indices.SO2 = 0.0 # kg/kg self.emission_indices.NOx = 0.0126 # kg/kg self.emission_indices.Soot = 0.0 # kg/kg self.global_warming_potential_100.CO2 = 1 # [CO2e/kg] carbon dioxide self.global_warming_potential_100.H2O = 0.06 # [CO2e/kg] water vapor self.global_warming_potential_100.CO = 1 # [CO2e/kg] carbon monoxide self.global_warming_potential_100.SO2 = -226 # [CO2e/kg] sulfur dioxide (cooling effect) self.global_warming_potential_100.NOx = 52 # [CO2e/kg] nitrogen oxides self.global_warming_potential_100.Soot = 1166 # [CO2e/kg] soot / black carbon self.global_warming_potential_100.Contrails = 11 # [CO2e/km] contrail radiative forcing self.materials_properties = self.cryogen_properties()
[docs] def cryogen_properties(self, T, prop_name): """ Return an interpolated LNG thermophysical property value at a given temperature. Parameters ---------- T : float or ndarray Temperature(s) in Kelvin at which the property is requested. prop_name : str Name of the property column to retrieve from the LNG data file. Valid keys include: - ``"Temperature (K)"`` - ``"Pressure (MPa)"`` - ``"Density (kg/m3)"`` - ``"Volume (m3/kg)"`` - ``"Internal Energy (kJ/kg)"`` - ``"Enthalpy (kJ/kg)"`` - ``"Entropy (J/g*K)"`` - ``"Cv (J/g*K)"`` - ``"Cp (J/g*K)"`` - ``"Sound Spd. (m/s)"`` - ``"Joule-Thomson (K/MPa)"`` - ``"Viscosity (Pa*s)"`` - ``"Therm. Cond. (W/m*K)"`` - ``"Phase"`` Returns ------- prop_value : float or ndarray Interpolated property value(s) corresponding to the input temperature(s). Notes ----- * Property data is loaded from ``LNG_properties.res`` via :func:`load_lng_properties`. * Linear interpolation is applied between tabulated data points. * Extrapolation outside the tabulated temperature range is not supported (``fill_value=None``). * The ``"Phase"`` column is categorical and is not suitable for numerical interpolation. See Also -------- load_lng_properties """ data = load_lng_properties() temps = np.array(data["Temperature (K)"], dtype=float) props = np.array(data[prop_name], dtype=float) interp = interp1d(temps, props, kind="linear", fill_value=None) return interp(T)
[docs] def load_lng_properties(): """ Load liquid natural gas property data from the RES file. Parameters ---------- None Returns ------- lng_data : dict Raw liquid natural gas property data loaded from ``LNG_properties.res``. Notes ----- Assumes liquid natural gas is pure Methane and behaves as an ideal fluid for the stored properties. Source ------ Internal RCAIDE resource file: ``LNG_properties.res`` See Also -------- RCAIDE.load : Function used to load RES files """ ospath = os.path.abspath(__file__) separator = os.path.sep rel_path = os.path.dirname(ospath) + separator return RCAIDE.load(rel_path+ 'LNG_properties.res')