|
STAR
Cal STAR — firmware, DAQ server, and engine design
|
Functions | |
| float | calculate_local_recession_rate (float heat_flux, float pressure, float velocity, float gas_temperature, float material_density, float heat_of_ablation, float specific_heat, float pyrolysis_temp, float blowing_efficiency=0.8, float char_layer_conductivity=0.2, float char_layer_thickness=0.001) |
| float | calculate_throat_heuristic_multiplier (float chamber_pressure, float chamber_velocity, float throat_velocity, float chamber_heat_flux, float gamma=1.2, float D_chamber=None, float D_throat=None) |
| Tuple[float, float, float, float, Dict[str, float]] | update_chamber_geometry_from_ablation (float V_chamber_initial, float A_throat_initial, float D_chamber_initial, float D_throat_initial, float L_chamber, float recession_thickness_chamber, Optional[float] recession_thickness_throat=None, float coverage_fraction=1.0, Optional[float] throat_recession_multiplier=None) |
| Tuple[float, float, Dict[str, float]] | update_nozzle_exit_from_ablation (float A_exit_initial, float D_exit_initial, float recession_thickness_exit, float coverage_fraction=1.0) |
| Dict[str, float] | calculate_Lstar_time_varying (float V_chamber_initial, float A_throat_initial, float recession_rate, float burn_time, float D_chamber_initial, float D_throat_initial, float L_chamber, float coverage_fraction=1.0) |
| Dict[str, float] | estimate_performance_degradation (float Lstar_initial, float Lstar_final, float efficiency_C=0.3, float efficiency_K=0.15) |
Ablative liner geometry evolution over time with physics-based recession modeling.
| float engine.pipeline.thermal.ablative_geometry.calculate_local_recession_rate | ( | float | heat_flux, |
| float | pressure, | ||
| float | velocity, | ||
| float | gas_temperature, | ||
| float | material_density, | ||
| float | heat_of_ablation, | ||
| float | specific_heat, | ||
| float | pyrolysis_temp, | ||
| float | blowing_efficiency = 0.8, | ||
| float | char_layer_conductivity = 0.2, | ||
| float | char_layer_thickness = 0.001 ) |
Calculate local ablation recession rate using physics-based heat balance.
The recession rate depends on:
1. Convective heat flux (function of Re, Pr, Mach)
2. Radiative heat flux
3. Blowing effect (pyrolysis gases blocking heat)
4. Char layer thermal resistance
5. Material properties
Energy balance:
q_net = q_conv + q_rad - q_reradiation - q_blowing - q_char
ṁ_ablation = q_net / (h_ablation + cp × ΔT_pyrolysis)
recession_rate = ṁ_ablation / ρ_material
Parameters:
-----------
heat_flux : float
Incident convective heat flux [W/m²]
pressure : float
Local static pressure [Pa]
velocity : float
Local gas velocity [m/s]
gas_temperature : float
Local gas temperature [K]
material_density : float
Ablative material density [kg/m³]
heat_of_ablation : float
Effective heat of ablation [J/kg]
specific_heat : float
Material specific heat [J/(kg·K)]
pyrolysis_temp : float
Pyrolysis temperature [K]
blowing_efficiency : float
Effectiveness of pyrolysis gases in blocking heat (0-1)
char_layer_conductivity : float
Thermal conductivity of char layer [W/(m·K)]
char_layer_thickness : float
Thickness of protective char layer [m]
Returns:
--------
recession_rate : float
Local recession rate [m/s]
Definition at line 9 of file ablative_geometry.py.
| Dict[str, float] engine.pipeline.thermal.ablative_geometry.calculate_Lstar_time_varying | ( | float | V_chamber_initial, |
| float | A_throat_initial, | ||
| float | recession_rate, | ||
| float | burn_time, | ||
| float | D_chamber_initial, | ||
| float | D_throat_initial, | ||
| float | L_chamber, | ||
| float | coverage_fraction = 1.0 ) |
Calculate how L* changes over time due to ablative recession.
Parameters:
-----------
V_chamber_initial : float
Initial chamber volume [m³]
A_throat_initial : float
Initial throat area [m²]
recession_rate : float
Ablative recession rate [m/s]
burn_time : float
Total burn time [s]
D_chamber_initial : float
Initial chamber diameter [m]
D_throat_initial : float
Initial throat diameter [m]
L_chamber : float
Chamber length [m]
coverage_fraction : float
Fraction of surface with ablative
Returns:
--------
results : dict
- Lstar_initial: Initial L* [m]
- Lstar_final: Final L* after burn_time [m]
- Lstar_change_pct: Percentage change in L*
- V_chamber_final: Final chamber volume [m³]
- A_throat_final: Final throat area [m²]
- total_recession: Total material removed [m]
Definition at line 417 of file ablative_geometry.py.
References update_chamber_geometry_from_ablation().
| float engine.pipeline.thermal.ablative_geometry.calculate_throat_heuristic_multiplier | ( | float | chamber_pressure, |
| float | chamber_velocity, | ||
| float | throat_velocity, | ||
| float | chamber_heat_flux, | ||
| float | gamma = 1.2, | ||
| float | D_chamber = None, | ||
| float | D_throat = None ) |
Calculate throat recession multiplier based on local flow conditions using heuristic scaling.
Throat recession is typically 1.2-2.0x higher than chamber due to:
1. Higher velocity → Higher convective heat transfer
2. Sonic conditions → Maximum heat flux
3. Pressure gradient → Enhanced mass transfer
4. Turbulence amplification near throat
Heuristic scaling for heat flux ratio:
q_throat / q_chamber ∝ (V_throat / V_chamber)^1.0 × (P_throat / P_chamber)^0.1
WARNING: This is not a formal Bartz correlation. Real throat heat transfer depends on
geometry (D_t, curvature), viscosity/Pr, and boundary layer state. If
heat_transfer_coefficient at the throat is already available from a CFD or
boundary-layer code, this heuristic multiplier should not be used.
Parameters:
-----------
chamber_pressure : float
Chamber pressure [Pa]
chamber_velocity : float
Chamber gas velocity [m/s]
throat_velocity : float
Throat gas velocity (sonic) [m/s]
chamber_heat_flux : float
Chamber wall heat flux [W/m²]
gamma : float
Specific heat ratio
D_chamber : float
Chamber diameter [m]
D_throat : float
Throat diameter [m]
Returns:
--------
multiplier : float
Throat recession multiplier (typically 1.2-2.0)
Definition at line 116 of file ablative_geometry.py.
| Dict[str, float] engine.pipeline.thermal.ablative_geometry.estimate_performance_degradation | ( | float | Lstar_initial, |
| float | Lstar_final, | ||
| float | efficiency_C = 0.3, | ||
| float | efficiency_K = 0.15 ) |
Estimate combustion efficiency degradation due to L* change.
Uses the exponential efficiency model:
η_c* = 1 - C × exp(-K × L*)
Parameters:
-----------
Lstar_initial : float
Initial L* [m]
Lstar_final : float
Final L* [m]
efficiency_C : float
Efficiency loss parameter (default 0.3)
efficiency_K : float
Recovery rate parameter (default 0.15)
Returns:
--------
results : dict
- eta_initial: Initial combustion efficiency
- eta_final: Final combustion efficiency
- eta_degradation_pct: Percentage drop in efficiency
- cstar_degradation_pct: Approximate c* degradation
Definition at line 509 of file ablative_geometry.py.
| Tuple[float, float, float, float, Dict[str, float]] engine.pipeline.thermal.ablative_geometry.update_chamber_geometry_from_ablation | ( | float | V_chamber_initial, |
| float | A_throat_initial, | ||
| float | D_chamber_initial, | ||
| float | D_throat_initial, | ||
| float | L_chamber, | ||
| float | recession_thickness_chamber, | ||
| Optional[float] | recession_thickness_throat = None, | ||
| float | coverage_fraction = 1.0, | ||
| Optional[float] | throat_recession_multiplier = None ) |
Update chamber volume and throat area after ablative recession.
Uses physics-based recession rates for chamber and throat separately.
Accounts for non-uniform recession patterns.
Parameters:
-----------
V_chamber_initial : float
Initial chamber volume [m³]
A_throat_initial : float
Initial throat area [m²]
D_chamber_initial : float
Initial chamber inner diameter [m]
D_throat_initial : float
Initial throat diameter [m]
L_chamber : float
Chamber length [m]
recession_thickness_chamber : float
Total thickness of ablative material removed from chamber [m]
recession_thickness_throat : float, optional
Total thickness removed from throat [m]
If None, calculated from throat_recession_multiplier
coverage_fraction : float
Fraction of chamber surface with ablative (default 1.0)
throat_recession_multiplier : float, optional
Multiplier for throat recession vs chamber (default from physics)
Typically 1.2-2.0 depending on flow conditions
Returns:
--------
V_chamber_new : float
Updated chamber volume [m³]
A_throat_new : float
Updated throat area [m²]
D_chamber_new : float
Updated chamber diameter [m]
D_throat_new : float
Updated throat diameter [m]
diagnostics : dict
Additional diagnostic information
Definition at line 226 of file ablative_geometry.py.
References max.
Referenced by calculate_Lstar_time_varying().
| Tuple[float, float, Dict[str, float]] engine.pipeline.thermal.ablative_geometry.update_nozzle_exit_from_ablation | ( | float | A_exit_initial, |
| float | D_exit_initial, | ||
| float | recession_thickness_exit, | ||
| float | coverage_fraction = 1.0 ) |
Update nozzle exit area due to ablative recession.
For graphite nozzle inserts, the exit area grows as material recedes.
This affects the expansion ratio: ε = A_exit / A_throat
Parameters:
-----------
A_exit_initial : float
Initial nozzle exit area [m²]
D_exit_initial : float
Initial nozzle exit diameter [m]
recession_thickness_exit : float
Total thickness of ablative material removed from nozzle exit [m]
coverage_fraction : float
Fraction of nozzle exit with ablative (default 1.0)
Returns:
--------
A_exit_new : float
Updated nozzle exit area [m²]
D_exit_new : float
Updated nozzle exit diameter [m]
diagnostics : dict
Additional diagnostic information
Definition at line 350 of file ablative_geometry.py.