This commit is contained in:
2026-03-03 16:43:30 +00:00
commit 03452517b5
58 changed files with 13181 additions and 0 deletions

View File

@@ -0,0 +1,512 @@
// Per-field descriptions for the Engine Design page info popups.
// Each entry: { name, description, higher, lower }
export const ENGINE_FIELD_INFO = {
/* ── Thermodynamic Inputs ─────────────────────────────────────── */
p0: {
name: 'Chamber Pressure (p₀)',
description: 'Total stagnation pressure in the combustion chamber. One of the most critical design parameters — sets the thermodynamic cycle for the entire engine.',
higher: 'Higher Isp and CF, smaller throat for same flow — but heavier chamber walls and higher required feed pressure',
lower: 'Lighter structure and lower feed pressure — at the cost of performance and a larger throat',
},
T0: {
name: 'Adiabatic Flame Temperature (T₀)',
description: 'Total stagnation temperature of the combustion gases. Set primarily by propellant chemistry and O/F ratio; not a free design variable for real propellants.',
higher: 'Higher c* and Isp — but greater thermal loads demanding better cooling and higher-temperature materials',
lower: 'Reduced thermal stress and cooling requirements — at the cost of performance',
},
gamma: {
name: 'Ratio of Specific Heats (γ)',
description: 'Ratio of Cp to Cv for the combustion gas mixture. Governs how efficiently the gas expands through the nozzle.',
higher: 'Steeper isentropic expansion for a given ε — slightly higher CF',
lower: 'Flatter expansion profile; combustion products typically fall in the range γ ≈ 1.151.30',
},
R_gas: {
name: 'Specific Gas Constant (R)',
description: 'R = R_universal / M_molecular. Reflects the mean molecular weight of the combustion products. Linked to propellant chemistry.',
higher: 'Lower molecular weight gas → higher c* and Isp (e.g. hydrogen propellants)',
lower: 'Heavier exhaust gas → lower performance (e.g. storable propellants)',
},
mdot: {
name: 'Total Mass Flow Rate (ṁ)',
description: 'Total propellant flow through the engine. Combined with exhaust velocity it determines thrust. Sets the size of all flow-path components.',
higher: 'More thrust and a larger engine — greater propellant consumption',
lower: 'Smaller, lighter engine with lower thrust',
},
F_input: {
name: 'Thrust (F) — input',
description: 'Desired thrust level. Specify this instead of mass flow rate; the solver will derive ṁ from F, p₀, and nozzle conditions.',
higher: 'Larger engine, higher propellant consumption, greater structural loads',
lower: 'Smaller engine, lower propellant consumption',
},
OF: {
name: 'Oxidiser-to-Fuel Mass Ratio (O/F)',
description: 'Mass of oxidiser consumed per unit mass of fuel. Affects flame temperature, gas properties, and specific impulse. Peak Isp often occurs slightly fuel-rich.',
higher: 'More oxidiser-rich — can reduce peak temperature but may move away from optimum Isp',
lower: 'More fuel-rich — often closer to peak Isp; excess fuel reduces combustion temperature',
},
At_input: {
name: 'Throat Area (Aₜ) — input',
description: 'Cross-sectional area at the nozzle throat. You can specify it manually to override the solver, or leave it blank and let ṁ and p₀ determine it.',
higher: 'Higher flow capacity — needed for greater thrust or lower chamber pressure',
lower: 'Smaller throat — requires higher chamber pressure to sustain the same flow',
},
eps_input: {
name: 'Expansion Ratio (ε = Aₑ/Aₜ) — input',
description: 'Ratio of exit area to throat area. Controls how far the exhaust gas expands. The optimum ε matches exit pressure to ambient pressure for maximum efficiency.',
higher: 'More expansion, lower exit pressure, higher Isp — but a longer, heavier nozzle',
lower: 'Less expansion, shorter nozzle — under-expanded at altitude',
},
pa: {
name: 'Ambient Pressure (pₐ)',
description: 'Ambient back pressure at the nozzle exit plane. Used to compute the pressure thrust component and the optimum expansion ratio.',
higher: 'Greater back pressure reduces pressure thrust — lower effective Isp',
lower: 'Vacuum conditions maximise the pressure thrust term',
},
/* ── Combustion Chamber ───────────────────────────────────────── */
Lstar: {
name: 'Characteristic Chamber Length (L*)',
description: 'L* = V_chamber / A_throat. A geometric proxy for propellant residence time. Must be long enough for complete combustion — propellant-dependent.',
higher: 'Longer residence time, more complete combustion — but a heavier chamber',
lower: 'Shorter, lighter chamber — risk of incomplete combustion and acoustic instability',
},
contractionRatio: {
name: 'Contraction Ratio (Ac / At)',
description: 'Ratio of the chamber cross-section to the throat area. Determines chamber diameter for a given throat size.',
higher: 'Larger chamber relative to the throat — better flow uniformity, but heavier',
lower: 'More compact chamber — may cause flow maldistribution; typical range is 310',
},
convAngleDeg: {
name: 'Convergent Half-Angle',
description: 'Half-angle of the nozzle convergent section. Affects the length and pressure recovery of the converging part of the chamber.',
higher: 'Steeper convergence → shorter chamber — risk of flow separation or higher losses',
lower: 'Gentler convergence → smoother flow transition, but longer and heavier',
},
/* ── Nozzle ───────────────────────────────────────────────────── */
nozzleType: {
name: 'Nozzle Contour Type',
description: 'Conical nozzles are simple but have divergence losses. Bell (Rao) nozzles are contoured to straighten the flow, achieving ~99% efficiency at 80% of the equivalent conical length.',
higher: null,
lower: null,
},
divAngleDeg: {
name: 'Divergence Half-Angle (Conical)',
description: 'Half-angle of the conical nozzle diverging section. A divergence loss factor λ ≈ (1 + cos α) / 2 applies. Typical range: 1218°.',
higher: 'Shorter nozzle — but higher divergence losses reduce effective CF',
lower: 'Better axial momentum alignment, higher CF — but longer and heavier nozzle',
},
/* ── Injector ─────────────────────────────────────────────────── */
injectorType: {
name: 'Injector Element Type',
description: 'Determines the mixing and atomisation mechanism. Impinging doublets/triplets use jet impingement; coaxial elements rely on shear; pintles use an annular gap.',
higher: null,
lower: null,
},
injectorN: {
name: 'Number of Injector Elements (N)',
description: 'Total number of fuel/oxidiser element pairs on the injector face. More elements give finer atomisation and better mixing uniformity.',
higher: 'Finer spray, better mixing, more stable combustion — but more complex to manufacture',
lower: 'Simpler injector — risk of poor atomisation and combustion instability',
},
dpFraction: {
name: 'Pressure Drop Fraction (ΔP / p₀)',
description: 'Injector pressure drop as a fraction of chamber pressure. Acts as the primary stability margin — higher ΔP makes the injector less sensitive to combustion pressure oscillations.',
higher: 'Better atomisation and stability margin — requires higher tank/feed pressure',
lower: 'Reduces feed-system pressure requirement — risk of combustion instability',
},
Cd: {
name: 'Discharge Coefficient (Cd)',
description: 'Ratio of actual to ideal orifice mass flow. Accounts for vena contracta and flow path losses. Sharp-edged orifices typically have Cd ≈ 0.61; rounded inlets approach 0.850.95.',
higher: 'More efficient orifice → smaller hole needed for the same mass flow',
lower: 'More restricted flow → larger orifice required',
},
rhoFuel_inj: {
name: 'Fuel Density (ρ_f) — injector',
description: 'Liquid fuel density at injection conditions. Used alongside mass flow and jet velocity to size the fuel orifice area.',
higher: 'Denser fuel → smaller orifice diameter for the same mass flow',
lower: 'Less dense fuel → larger orifice required',
},
rhoOx_inj: {
name: 'Oxidiser Density (ρ_ox) — injector',
description: 'Liquid oxidiser density at injection conditions. Used to size the oxidiser orifice area.',
higher: 'Denser oxidiser → smaller orifice diameter',
lower: 'Less dense oxidiser → larger orifice',
},
/* ── Cooling ──────────────────────────────────────────────────── */
coolingMethod: {
name: 'Cooling Method',
description: 'Regenerative cooling circulates propellant through channels to absorb heat. Film cooling injects a thin fuel layer along the wall. Ablative liners sacrifice material. Uncooled engines are for very short burns.',
higher: null,
lower: null,
},
channelCount: {
name: 'Cooling Channel Count',
description: 'Number of regenerative cooling channels around the chamber and nozzle wall. More channels distribute heat pickup across more passages.',
higher: 'Better heat distribution, smaller per-channel flow area — more complex manufacture',
lower: 'Fewer, larger channels — simpler but each must handle more heat load',
},
filmFraction: {
name: 'Film Cooling Mass Fraction',
description: 'Fraction of total propellant flow injected as a film along the chamber walls to protect them from peak heat flux.',
higher: 'Better wall protection — but more unburned propellant reduces Isp',
lower: 'Less Isp penalty — risk of wall overheating at high heat flux',
},
/* ── Feed System ──────────────────────────────────────────────── */
feedType: {
name: 'Feed System Type',
description: 'Pressure-fed systems use pressurised tanks to push propellant to the chamber. Pump-fed systems use turbopumps for much higher chamber pressures at lower tank mass.',
higher: null,
lower: null,
},
feedFactor: {
name: 'Feed Pressure Factor',
description: 'Tank pressure as a multiple of chamber pressure for pressure-fed systems. Must be >1 to overcome injector ΔP and line losses. Typical range: 1.31.6.',
higher: 'More pressure margin — heavier tank walls and more pressurant required',
lower: 'Lighter system — less margin against feed-line or injector flow interruption',
},
rhoFuel_feed: {
name: 'Fuel Density (ρ_f) — feed system',
description: 'Bulk fuel density used to compute the fuel tank volume from the required fuel mass.',
higher: 'Denser fuel → smaller tank volume for the same mass',
lower: 'Less dense fuel → larger tank',
},
rhoOx_feed: {
name: 'Oxidiser Density (ρ_ox) — feed system',
description: 'Bulk oxidiser density used to compute the oxidiser tank volume.',
higher: 'Denser oxidiser → smaller tank volume',
lower: 'Less dense oxidiser → larger tank',
},
burnTime: {
name: 'Burn Time',
description: 'Total engine burn duration. Used to compute total propellant mass and volumes, and pressurant requirements.',
higher: 'More propellant, larger tanks, potentially more pressurant',
lower: 'Less propellant, smaller system — shorter mission or more stages',
},
/* ── Thermodynamic Results ────────────────────────────────────── */
At_result: {
name: 'Throat Area (Aₜ)',
description: 'Choked-flow cross-section that sets the engine mass flow capacity. The most thermally critical point in the nozzle.',
higher: 'Higher flow capacity for a given chamber pressure',
lower: 'Smaller, lighter throat — requires higher p₀ for the same ṁ',
},
Ae_result: {
name: 'Exit Area (Aₑ)',
description: 'Nozzle exit cross-section. Determined by ε × Aₜ. Sets nozzle bell diameter and integration envelope.',
higher: 'Larger exit for higher expansion ratio — heavier and harder to package',
lower: 'More compact nozzle exit — under-expanded at altitude',
},
eps_result: {
name: 'Expansion Ratio (ε)',
description: 'Aₑ / Aₜ. The optimum ε matches exit pressure to ambient for maximum thrust coefficient.',
higher: 'Better vacuum Isp — diminishing returns above ε ≈ 100',
lower: 'Shorter, lighter nozzle — better suited to sea-level operation',
},
Me_result: {
name: 'Exit Mach Number (Mₑ)',
description: 'Exhaust speed at the nozzle exit relative to the local sound speed. Indicates how fully the gas has expanded.',
higher: 'More complete expansion → higher Isp',
lower: 'Under-expanded — flow still has kinetic energy to give',
},
Te_result: {
name: 'Exit Temperature (Tₑ)',
description: 'Static temperature of the exhaust at the nozzle exit plane. Indicates how much thermal energy has been converted to kinetic energy.',
higher: 'More thermal energy remaining → less efficient conversion to velocity',
lower: 'More energy converted to exhaust velocity → higher Isp',
},
pe_result: {
name: 'Exit Pressure (pₑ)',
description: 'Static pressure at the nozzle exit. Ideally matches ambient pressure for maximum CF. Mismatch causes under- or over-expansion losses.',
higher: 'Under-expanded — nozzle too short; pressure thrust wasted',
lower: 'Over-expanded — risk of flow separation at sea level',
},
Ve_result: {
name: 'Exhaust Velocity (Vₑ)',
description: 'Actual gas velocity at the nozzle exit. Primary contributor to specific impulse (Isp ≈ Vₑ / g₀ for perfectly expanded nozzle).',
higher: 'Higher Isp and better propulsive efficiency',
lower: 'Lower performance — more propellant needed for the same Δv',
},
F_result: {
name: 'Thrust (F)',
description: 'Total thrust = momentum thrust + pressure thrust. F = ṁ·Vₑ + (pₑ pₐ)·Aₑ.',
higher: 'Faster vehicle acceleration or higher payload capability',
lower: 'Lower structural loads, easier integration',
},
Isp_result: {
name: 'Specific Impulse (Isp)',
description: 'Thrust per unit weight flow: Isp = F / (ṁ · g₀). The fundamental measure of propellant efficiency.',
higher: 'More Δv per kg of propellant — less propellant mass fraction needed',
lower: 'Less efficient — more propellant mass required for the same mission',
},
cstar_result: {
name: 'Characteristic Velocity (c*)',
description: 'c* = p₀ · Aₜ / ṁ. Measures combustion chamber performance independently of nozzle shape.',
higher: 'Better combustion efficiency or higher-energy propellants',
lower: 'Combustion inefficiency, off-design mixture ratio, or low-energy propellants',
},
CF_result: {
name: 'Thrust Coefficient (CF)',
description: 'Dimensionless nozzle efficiency factor: F = CF · p₀ · Aₜ. Combines expansion efficiency and pressure matching.',
higher: 'Better nozzle performance — closer to the optimum expansion condition',
lower: 'Under- or over-expansion losses, or flow separation in over-expanded nozzle',
},
mdot_f_result: {
name: 'Fuel Mass Flow Rate (ṁ_f)',
description: 'Fuel propellant consumption rate, derived from total ṁ and O/F: ṁ_f = ṁ / (1 + O/F).',
higher: 'More fuel consumption — larger fuel tank and feed system required',
lower: 'Less fuel flow — smaller fuel system',
},
mdot_ox_result: {
name: 'Oxidiser Mass Flow Rate (ṁ_ox)',
description: 'Oxidiser consumption rate: ṁ_ox = ṁ · O/F / (1 + O/F).',
higher: 'More oxidiser consumption — larger oxidiser tank required',
lower: 'Less oxidiser flow — smaller oxidiser system',
},
/* ── Chamber Geometry Results ─────────────────────────────────── */
Dc_result: {
name: 'Chamber Diameter (Dc)',
description: 'Inner diameter of the cylindrical combustion chamber. Determined by Dt × √(contraction ratio).',
higher: 'Larger chamber volume per unit length — can achieve the required L* in a shorter chamber',
lower: 'More compact chamber — requires greater axial length to reach the target L*',
},
Dt_result: {
name: 'Throat Diameter (Dt)',
description: 'Diameter of the nozzle throat. The most thermally and mechanically stressed location in the engine.',
higher: 'Higher mass flow capacity for the given chamber pressure',
lower: 'More concentrated heat flux at the throat — harder to cool',
},
contractionRatio_result: {
name: 'Contraction Ratio (Ac / At)',
description: 'Ratio of chamber cross-section to throat area. Determines how much the flow contracts before the throat.',
higher: 'Wider chamber relative to the throat — better flow uniformity',
lower: 'Tighter contraction — risk of flow distortion entering the throat',
},
Lc_result: {
name: 'Total Chamber Length (Lc)',
description: 'Combined axial length of the cylindrical and convergent chamber sections.',
higher: 'Longer chamber — more complete combustion, but heavier',
lower: 'Shorter, lighter chamber — may need a high-energy propellant to reach required L*',
},
L_cyl_result: {
name: 'Cylindrical Section Length',
description: 'Length of the straight cylindrical portion where most combustion occurs.',
higher: 'More mixing and dwell time in the cylindrical zone',
lower: 'Shorter cylinder — the convergent section supplies additional volume',
},
L_conv_result: {
name: 'Convergent Section Length',
description: 'Axial length of the nozzle convergent section from the cylindrical chamber to the throat.',
higher: 'Gentler convergence angle or wider chamber upstream',
lower: 'Steeper convergence — risk of flow separation or higher losses',
},
Vc_result: {
name: 'Chamber Volume (Vc)',
description: 'Total internal volume of the combustion chamber. Combined with throat area gives L* = Vc / At.',
higher: 'Greater residence time → more complete combustion',
lower: 'Shorter, lighter chamber — needs high-energy propellant for complete combustion',
},
/* ── Nozzle Geometry Results ──────────────────────────────────── */
De_result: {
name: 'Exit Diameter (De)',
description: 'Outer diameter of the nozzle exit plane. Sets the integration envelope for the nozzle.',
higher: 'Larger exit for higher expansion — heavier and harder to package',
lower: 'More compact nozzle — under-expanded at altitude, over-expanded at sea level',
},
Ln_result: {
name: 'Nozzle Length (Ln)',
description: 'Axial length of the diverging nozzle section from throat to exit plane.',
higher: 'More axial length needed for high expansion ratios — adds mass',
lower: 'Shorter nozzle — less expansion, but lighter and easier to integrate',
},
/* ── Injector Results ─────────────────────────────────────────── */
deltaP_result: {
name: 'Injector Pressure Drop (ΔP)',
description: 'Pressure difference across the injector face. A key stability parameter — typically 1530% of chamber pressure.',
higher: 'Better atomisation and stability margin — requires higher feed pressure',
lower: 'Reduced feed pressure requirement — risk of combustion instability',
},
v_f_result: {
name: 'Fuel Jet Velocity',
description: 'Velocity of the fuel stream as it exits the orifice. Higher velocity improves atomisation at impingement.',
higher: 'Better atomisation and mixing — finer spray droplets',
lower: 'Coarser spray — may need more injector elements to compensate',
},
v_ox_result: {
name: 'Oxidiser Jet Velocity',
description: 'Velocity of the oxidiser stream exiting the orifice.',
higher: 'Better atomisation — but higher pressure drop across the orifice',
lower: 'Coarser spray — may impair mixing quality',
},
d_f_result: {
name: 'Fuel Orifice Diameter',
description: 'Diameter of each individual fuel injector orifice. Sized from ṁ_f, Cd, ρ_f, and jet velocity.',
higher: 'Larger, easier-to-manufacture orifice — coarser atomisation',
lower: 'Finer spray — but more susceptible to clogging',
},
d_ox_result: {
name: 'Oxidiser Orifice Diameter',
description: 'Diameter of each oxidiser orifice. Sized from ṁ_ox, Cd, ρ_ox, and jet velocity.',
higher: 'Larger orifice — coarser oxidiser spray',
lower: 'Finer spray — tighter manufacturing tolerances required',
},
/* ── Cooling Results ──────────────────────────────────────────── */
q_est_result: {
name: 'Estimated Heat Flux (q″)',
description: 'Estimated peak heat flux at the throat region based on a simplified Bartz-style correlation.',
higher: 'More aggressive thermal environment — demands greater coolant flow or better channel geometry',
lower: 'Easier cooling problem — more design margin',
},
q_total_result: {
name: 'Total Heat Load',
description: 'Total heat power absorbed by the coolant, integrated over the chamber and nozzle surface area.',
higher: 'More coolant flow or a larger temperature rise in the coolant required',
lower: 'Easier to manage with available coolant flow',
},
channelCount_result: {
name: 'Cooling Channel Count',
description: 'Number of regenerative cooling channels (reflects the input setting).',
higher: 'Distributed heat pickup — less flow per channel',
lower: 'Fewer channels — each must carry more coolant',
},
channelArea_result: {
name: 'Cooling Channel Area (per channel)',
description: 'Cross-sectional flow area of each cooling channel. Determines coolant velocity and pressure drop.',
higher: 'Lower coolant velocity — lower pressure drop but less turbulent heat transfer',
lower: 'Higher velocity — better heat transfer coefficient but larger pressure drop',
},
mdot_film_result: {
name: 'Film Coolant Mass Flow',
description: 'Mass flow rate of propellant injected as a film layer along the chamber walls.',
higher: 'Better wall protection — more effective at high heat flux',
lower: 'Less Isp penalty from film dilution',
},
ispPenalty_result: {
name: 'Isp Penalty (Film Cooling)',
description: 'Estimated percentage reduction in specific impulse due to film coolant that does not participate fully in combustion.',
higher: 'Significant Isp loss — consider reducing film fraction if thermally feasible',
lower: 'Minimal performance impact — film cooling is efficient for this design',
},
/* ── Feed System Results ──────────────────────────────────────── */
p_tank_result: {
name: 'Tank Pressure',
description: 'Required propellant tank pressure to sustain the desired chamber pressure through the injector and feed lines.',
higher: 'Heavier tank walls and more pressurant — may require a composite tank',
lower: 'Lighter structure — check that there is sufficient margin over chamber pressure',
},
V_fuel_result: {
name: 'Fuel Volume',
description: 'Required fuel tank volume for the specified burn time and fuel density.',
higher: 'Larger, heavier fuel tank — may need to be distributed or jettisoned',
lower: 'Compact fuel system — allows a smaller vehicle',
},
V_ox_result: {
name: 'Oxidiser Volume',
description: 'Required oxidiser tank volume for the specified burn time and oxidiser density.',
higher: 'Larger oxidiser tank — often the dominant volume for high-O/F propellants',
lower: 'Compact oxidiser system',
},
V_prop_result: {
name: 'Total Propellant Volume',
description: 'Combined fuel + oxidiser volume. Determines the overall propellant tankage size.',
higher: 'More propellant for longer burns or higher thrust',
lower: 'Smaller, lighter vehicle',
},
m_press_result: {
name: 'Pressurant Mass',
description: 'Mass of pressurising gas (typically helium or nitrogen) needed to maintain tank pressure throughout the burn. Estimated assuming isothermal blowdown.',
higher: 'Heavier pressurant load — consider a regulated or blowdown feed system',
lower: 'Lightweight pressurant — efficient feed system design',
},
dP_pump_result: {
name: 'Pump ΔP',
description: 'Required pump pressure rise across the propellant pump(s) in a pump-fed system.',
higher: 'More pump work — larger, heavier turbopump needed',
lower: 'Lighter pump — may indicate lower chamber pressure or very efficient feed lines',
},
P_turbine_result: {
name: 'Est. Turbine Power',
description: 'Estimated turbopump turbine shaft power required to drive the propellant pumps.',
higher: 'Larger turbine and more turbine propellant bleed — heavier turbopump assembly',
lower: 'Smaller turbine — more efficient or lower chamber pressure design',
},
}