|
STAR
Cal STAR — firmware, DAQ server, and engine design
|
Classes | |
| class | TankState |
Functions | |
| Tuple[float, float] | split_propellant_by_of (float total_kg, float of_ratio) |
| float | resolve_tank_volume_m3 (*, Optional[float] tank_volume_m3, Optional[float] ullage_volume_m3, float propellant_mass_kg, float density_kg_m3, str tank_name="tank") |
| Tuple[float, float, float, float, float, float] | resolve_blowdown_tank_state (Any config, *, Optional[float] total_propellant_kg=None, Optional[float] of_ratio=None, Optional[float] lox_tank_volume_m3=None, Optional[float] lox_ullage_volume_m3=None, Optional[float] fuel_tank_volume_m3=None, Optional[float] fuel_ullage_volume_m3=None, Optional[float] lox_propellant_mass_kg=None, Optional[float] fuel_propellant_mass_kg=None) |
| float | _config_tank_volume (Any config, str tank_attr, str h_attr, str r_attr) |
| Tuple[RegularGridInterpolator, np.ndarray, np.ndarray] | load_Z_lookup_table (str csv_path) |
| float|np.ndarray | Z_lookup (float|np.ndarray T_K, float|np.ndarray P_Pa, RegularGridInterpolator interp, float default_Z=1.0) |
| float | calculate_compressible_gas_flow (float P_up, float P_down, float T_up, float Area, float gamma, float R, float Cd=0.8) |
| Dict[str, Dict[str, np.ndarray]] | simulate_coupled_blowdown (np.ndarray times, Callable[[float, float], Tuple[float, float]] evaluate_engine_fn, float P_lox_initial_Pa, float P_fuel_initial_Pa, config, *, float R_pressurant=296.803, float T_lox_gas_K=250.0, float T_fuel_gas_K=293.0, float n_polytropic=1.2, bool use_real_gas=True, str n2_Z_csv="n2_Z_lookup.csv", Optional[float] total_propellant_kg=None, Optional[float] of_ratio=None, Optional[float] lox_tank_volume_m3=None, Optional[float] lox_ullage_volume_m3=None, Optional[float] fuel_tank_volume_m3=None, Optional[float] fuel_ullage_volume_m3=None, Optional[float] lox_propellant_mass_kg=None, Optional[float] fuel_propellant_mass_kg=None) |
Pure blowdown pressurization solver. This module simulates propellant tank pressure decay due to ullage expansion as propellant is consumed, with no COPV or external pressurant makeup. Physics model: - Fixed pressurant gas mass in each tank - Polytropic temperature relation: T(t) = T0 * (V0/V(t))^(n-1) - Real gas effects via compressibility factor Z(P,T) in EOS: P = m*Z*R*T/V - Coupled simulation: Pressure -> mdot -> Mass Depletion -> Volume Expansion -> Pressure
|
protected |
Definition at line 128 of file blowdown_solver.py.
Referenced by resolve_blowdown_tank_state().
| float copv.blowdown_solver.calculate_compressible_gas_flow | ( | float | P_up, |
| float | P_down, | ||
| float | T_up, | ||
| float | Area, | ||
| float | gamma, | ||
| float | R, | ||
| float | Cd = 0.8 ) |
Calculate compressible gas mass flow through an orifice (venting).
Definition at line 310 of file blowdown_solver.py.
References max.
Referenced by simulate_coupled_blowdown().
| Tuple[RegularGridInterpolator, np.ndarray, np.ndarray] copv.blowdown_solver.load_Z_lookup_table | ( | str | csv_path | ) |
Load compressibility factor Z(P,T) lookup table from CSV.
Definition at line 139 of file blowdown_solver.py.
Referenced by simulate_coupled_blowdown().
| Tuple[float, float, float, float, float, float] copv.blowdown_solver.resolve_blowdown_tank_state | ( | Any | config, |
| * | , | ||
| Optional[float] | total_propellant_kg = None, | ||
| Optional[float] | of_ratio = None, | ||
| Optional[float] | lox_tank_volume_m3 = None, | ||
| Optional[float] | lox_ullage_volume_m3 = None, | ||
| Optional[float] | fuel_tank_volume_m3 = None, | ||
| Optional[float] | fuel_ullage_volume_m3 = None, | ||
| Optional[float] | lox_propellant_mass_kg = None, | ||
| Optional[float] | fuel_propellant_mass_kg = None ) |
Resolve LOX/fuel (volume_m3, mass_kg, density) for blowdown simulation. Falls back to config tank fields when overrides are omitted.
Definition at line 66 of file blowdown_solver.py.
References _config_tank_volume(), resolve_tank_volume_m3(), and split_propellant_by_of().
Referenced by simulate_coupled_blowdown().
| float copv.blowdown_solver.resolve_tank_volume_m3 | ( | * | , |
| Optional[float] | tank_volume_m3, | ||
| Optional[float] | ullage_volume_m3, | ||
| float | propellant_mass_kg, | ||
| float | density_kg_m3, | ||
| str | tank_name = "tank" ) |
Resolve total tank volume from either explicit volume or ullage + liquid fill.
Definition at line 29 of file blowdown_solver.py.
References max.
Referenced by resolve_blowdown_tank_state().
| Dict[str, Dict[str, np.ndarray]] copv.blowdown_solver.simulate_coupled_blowdown | ( | np.ndarray | times, |
| Callable[[float, float], Tuple[float, float]] | evaluate_engine_fn, | ||
| float | P_lox_initial_Pa, | ||
| float | P_fuel_initial_Pa, | ||
| config, | |||
| * | , | ||
| float | R_pressurant = 296.803, | ||
| float | T_lox_gas_K = 250.0, | ||
| float | T_fuel_gas_K = 293.0, | ||
| float | n_polytropic = 1.2, | ||
| bool | use_real_gas = True, | ||
| str | n2_Z_csv = "n2_Z_lookup.csv", | ||
| Optional[float] | total_propellant_kg = None, | ||
| Optional[float] | of_ratio = None, | ||
| Optional[float] | lox_tank_volume_m3 = None, | ||
| Optional[float] | lox_ullage_volume_m3 = None, | ||
| Optional[float] | fuel_tank_volume_m3 = None, | ||
| Optional[float] | fuel_ullage_volume_m3 = None, | ||
| Optional[float] | lox_propellant_mass_kg = None, | ||
| Optional[float] | fuel_propellant_mass_kg = None ) |
Simulate coupled blowdown for both LOX and fuel tanks.
Parameters
----------
times : np.ndarray
Time points (s)
evaluate_engine_fn : function
Callback (P_lox_Pa, P_fuel_Pa) -> (mdot_lox_kg_s, mdot_fuel_kg_s)
P_lox_initial_Pa, P_fuel_initial_Pa : float
Initial tank pressures
config : EngineConfig
Configuration object with tank geometry
Returns
-------
dict with full time-series traces for both tanks
Definition at line 344 of file blowdown_solver.py.
References calculate_compressible_gas_flow(), load_Z_lookup_table(), max, and resolve_blowdown_tank_state().
| Tuple[float, float] copv.blowdown_solver.split_propellant_by_of | ( | float | total_kg, |
| float | of_ratio ) |
Split total propellant mass into (oxidizer_kg, fuel_kg) for O/F = of_ratio.
Definition at line 20 of file blowdown_solver.py.
References max.
Referenced by resolve_blowdown_tank_state().
| float | np.ndarray copv.blowdown_solver.Z_lookup | ( | float | np.ndarray | T_K, |
| float | np.ndarray | P_Pa, | ||
| RegularGridInterpolator | interp, | ||
| float | default_Z = 1.0 ) |
Lookup compressibility factor Z at given temperature and pressure.
Definition at line 156 of file blowdown_solver.py.
Referenced by copv.blowdown_solver.TankState.get_Z().