// 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.15–1.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 3–10', }, 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: 12–18°.', 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.85–0.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.3–1.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 15–30% 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', }, }