STAR
Cal STAR — firmware, DAQ server, and engine design
Loading...
Searching...
No Matches
engine.pipeline.reaction_chemistry Namespace Reference

Functions

str _fuel_name_for_kinetics (PintleEngineConfig config)
Optional[Dict[str, float]] _fuel_props_for_evaporation (PintleEngineConfig config)
float calculate_reaction_progress (float residence_time, float reaction_time_scale, float initial_progress=0.0)
float _ea_mr_factor (float MR)
float calculate_reaction_rate_constant (float Pc, float Tc, float MR, str fuel_type="RP-1", Optional[PintleEngineConfig] config=None)
float calculate_reaction_time_scale (float Pc, float Tc, float MR, str fuel_type="RP-1", Optional[PintleEngineConfig] config=None)
float calculate_evaporation_time_scale (float Pc, float Tc, float droplet_diameter, Optional[Dict] fuel_props=None, float gamma=1.2, float R_gas=300.0)
float calculate_mixing_time_scale (float L_chamber, float u_mean, float turbulence_intensity=0.1)
Dict[str, float] calculate_chamber_reaction_progress (float Lstar, float Pc, float Tc, float cstar, float gamma, float R, float MR, PintleEngineConfig config, Optional[Dict] spray_diagnostics=None, Optional[float] Tc_kinetics=None)
Dict[str, float] calculate_species_evolution (float progress, Dict[str, float] species_equilibrium, Optional[Dict[str, float]] species_initial=None)

Variables

float R_gas = 8314.462618
float _EA_MR_W = 0.10

Detailed Description

Finite-rate chemistry and reaction progress modeling for combustion chamber.

This module provides physics-based (not reference-based) models for:
1. Reaction progress tracking through chamber
2. Finite-rate chemistry effects using actual Arrhenius kinetics
3. Species evolution modeling
4. Shifting equilibrium in nozzle based on actual flow conditions

Function Documentation

◆ _ea_mr_factor()

float engine.pipeline.reaction_chemistry._ea_mr_factor ( float MR)
protected
Activation-energy multiplier vs O/F: 1.2 (fuel-rich) -> 1.0 -> 0.9 (oxidizer-rich), C1-smooth.

Definition at line 139 of file reaction_chemistry.py.

References max, and min.

Referenced by calculate_reaction_rate_constant().

◆ _fuel_name_for_kinetics()

str engine.pipeline.reaction_chemistry._fuel_name_for_kinetics ( PintleEngineConfig config)
protected
Label used for Arrhenius fuel-type branching (matches reaction_rate_constant lists).

Priority: ``combustion.cea.fuel_name`` -> ``fluids['fuel'].name`` -> generic hydrocarbon ("RP-1").

Definition at line 24 of file reaction_chemistry.py.

Referenced by calculate_chamber_reaction_progress().

◆ _fuel_props_for_evaporation()

Optional[Dict[str, float]] engine.pipeline.reaction_chemistry._fuel_props_for_evaporation ( PintleEngineConfig config)
protected
Density and boiling point for droplet evaporation time scale.

Definition at line 43 of file reaction_chemistry.py.

Referenced by calculate_chamber_reaction_progress().

◆ calculate_chamber_reaction_progress()

Dict[str, float] engine.pipeline.reaction_chemistry.calculate_chamber_reaction_progress ( float Lstar,
float Pc,
float Tc,
float cstar,
float gamma,
float R,
float MR,
PintleEngineConfig config,
Optional[Dict] spray_diagnostics = None,
Optional[float] Tc_kinetics = None )
Calculate reaction progress through chamber using actual physics.

No reference conditions - all calculations based on actual engine state.

Parameters:
-----------
Lstar : float
    Characteristic length [m]
Pc : float
    Chamber pressure [Pa]
Tc : float
    Chamber temperature [K] (Used for residence time - Ideal is conservative)
cstar : float
    Characteristic velocity [m/s]
gamma : float
    Specific heat ratio
R : float
    Gas constant [J/(kg·K)]
MR : float
    Mixture ratio
config : PintleEngineConfig
    Engine configuration
spray_diagnostics : dict, optional
    Spray diagnostics (SMD, velocities, etc.) for evaporation/mixing
Tc_kinetics : float, optional
    Temperature to use for reaction kinetics [K]. If None, uses Tc.
    (Actual/Effective is conservative)

Returns:
--------
results : dict
    Reaction progress and time scales

Definition at line 484 of file reaction_chemistry.py.

References _fuel_name_for_kinetics(), _fuel_props_for_evaporation(), calculate_evaporation_time_scale(), calculate_mixing_time_scale(), calculate_reaction_progress(), and calculate_reaction_time_scale().

◆ calculate_evaporation_time_scale()

float engine.pipeline.reaction_chemistry.calculate_evaporation_time_scale ( float Pc,
float Tc,
float droplet_diameter,
Optional[Dict] fuel_props = None,
float gamma = 1.2,
float R_gas = 300.0 )
Calculate droplet evaporation time scale from physics.

Uses D² law: τ_evap = d² / (8 × D × ln(1 + B))
where D is mass diffusivity and B is Spalding number.

Parameters:
-----------
Pc : float
    Chamber pressure [Pa]
Tc : float
    Chamber temperature [K]
droplet_diameter : float
    Droplet diameter [m] (SMD or characteristic size)
fuel_props : dict, optional
    Fuel properties (density, latent heat, etc.)
gamma : float
    Specific heat ratio from CEA
R_gas : float
    Gas constant [J/(kg·K)] from CEA

Returns:
--------
tau_evap : float
    Evaporation time scale [s]

Definition at line 346 of file reaction_chemistry.py.

Referenced by calculate_chamber_reaction_progress().

◆ calculate_mixing_time_scale()

float engine.pipeline.reaction_chemistry.calculate_mixing_time_scale ( float L_chamber,
float u_mean,
float turbulence_intensity = 0.1 )
Calculate turbulent mixing time scale from actual flow conditions.

τ_mix = L / u_turbulent, where u_turbulent = turbulence_intensity × u_mean

Parameters:
-----------
L_chamber : float
    Characteristic mixing length [m] (typically L*)
u_mean : float
    Mean flow velocity [m/s]
turbulence_intensity : float
    Turbulence intensity (typically 0.05-0.2 for rocket chambers)

Returns:
--------
tau_mix : float
    Mixing time scale [s]

Definition at line 440 of file reaction_chemistry.py.

Referenced by calculate_chamber_reaction_progress().

◆ calculate_reaction_progress()

float engine.pipeline.reaction_chemistry.calculate_reaction_progress ( float residence_time,
float reaction_time_scale,
float initial_progress = 0.0 )
Calculate reaction progress based on residence time and reaction kinetics.

Models chemical reaction progress as first-order kinetics:
dX/dt = (1 - X) / τ_chem

Solution: X(t) = 1 - (1 - X0) × exp(-t / τ)

Parameters:
-----------
residence_time : float
    Time spent in chamber [s] (must be >= 0)
reaction_time_scale : float
    Chemical reaction time scale [s] (must be > 0)
initial_progress : float
    Initial reaction progress (0-1)

Returns:
--------
progress : float
    Reaction progress (0-1), where 1 = complete equilibrium

Raises:
-------
ValueError
    If inputs are invalid (negative time, non-positive time scale, etc.)

Definition at line 60 of file reaction_chemistry.py.

Referenced by calculate_chamber_reaction_progress().

◆ calculate_reaction_rate_constant()

float engine.pipeline.reaction_chemistry.calculate_reaction_rate_constant ( float Pc,
float Tc,
float MR,
str fuel_type = "RP-1",
Optional[PintleEngineConfig] config = None )
Calculate chemical reaction rate constant using Arrhenius kinetics.

Rate constant: k = A × P^n × exp(-Ea / (R_gas × T))
Reaction time: τ = 1 / k

Uses actual Arrhenius parameters for hydrocarbon/LOX combustion:
- Pre-exponential factor A depends on fuel type and mixture ratio
- Pressure exponent n: typically 0.7-1.0 for gas-phase reactions
- Activation energy Ea: depends on fuel complexity

Parameters:
-----------
Pc : float
    Chamber pressure [Pa]
Tc : float
    Chamber temperature [K]
MR : float
    Mixture ratio (O/F)
fuel_type : str
    Fuel type ("RP-1", "Ethanol", "H2", etc.) - affects activation energy
config : PintleEngineConfig, optional
    Engine configuration for kinetics parameters. If None, uses built-in defaults.

Returns:
--------
k : float
    Reaction rate constant [1/s]

Raises:
-------
ValueError
    If inputs are invalid or result is non-physical

Definition at line 150 of file reaction_chemistry.py.

References _ea_mr_factor().

Referenced by calculate_reaction_time_scale().

◆ calculate_reaction_time_scale()

float engine.pipeline.reaction_chemistry.calculate_reaction_time_scale ( float Pc,
float Tc,
float MR,
str fuel_type = "RP-1",
Optional[PintleEngineConfig] config = None )
Calculate chemical reaction time scale from Arrhenius rate constant.

τ = 1 / k, where k is the reaction rate constant.

Parameters:
-----------
Pc : float
    Chamber pressure [Pa]
Tc : float
    Chamber temperature [K]
MR : float
    Mixture ratio (O/F)
fuel_type : str
    Fuel type
config : PintleEngineConfig, optional
    Engine configuration for kinetics parameters

Returns:
--------
tau : float
    Reaction time scale [s]

Definition at line 306 of file reaction_chemistry.py.

References calculate_reaction_rate_constant().

Referenced by calculate_chamber_reaction_progress().

◆ calculate_species_evolution()

Dict[str, float] engine.pipeline.reaction_chemistry.calculate_species_evolution ( float progress,
Dict[str, float] species_equilibrium,
Optional[Dict[str, float]] species_initial = None )
Calculate species concentrations based on reaction progress.

Linear interpolation between initial and equilibrium:
X_species = X_initial + progress × (X_equilibrium - X_initial)

Parameters:
-----------
progress : float
    Reaction progress (0-1)
species_equilibrium : dict
    Equilibrium species mole fractions {species_name: fraction}
species_initial : dict, optional
    Initial species mole fractions (default: pure reactants)

Returns:
--------
species_current : dict
    Current species mole fractions

Definition at line 622 of file reaction_chemistry.py.

Variable Documentation

◆ _EA_MR_W

float engine.pipeline.reaction_chemistry._EA_MR_W = 0.10
protected

Definition at line 136 of file reaction_chemistry.py.

◆ R_gas

float engine.pipeline.reaction_chemistry.R_gas = 8314.462618

Definition at line 21 of file reaction_chemistry.py.