Rocket Gravity Loss (propulsion/rocket/rocket-gravity-loss)
Use when the task is the gravity-loss leg of a launch-vehicle powered
ascent: the burn time from the propellant load and flow rate, the launch
thrust-to-weight ratio, the gravity loss for a vertical or pitched ascent,
and the effective and required ideal delta-v that bracket the losses. This
leaf owns the powered-ascent loss-sizing step that no other leaf computes,
turning an ideal delta-v budget into an ascent-feasible requirement. It
pairs with the sibling sizing and staging leaves: propulsion/rocket/
rocket-sizing supplies the ideal delta-v budget this leaf consumes, and
propulsion/rocket/rocket-staging allocates the required ideal delta-v
across stages.
Domain quick reference
- Standard gravity: g0 = 9.80665 m/s^2, the module constant behind every
loss relation. SI units throughout: kg, kg/s, N, s, m/s, degrees.
- Burn time: t_b = m_prop / m_dot, the propellant load divided by the
constant propellant flow rate. A 400000 kg load at 2500 kg/s burns for
160.0 s.
- Launch thrust-to-weight ratio: TWR = T / (m0 * g0), the sea-level thrust
over the initial weight. 7.355 MN on a 700000 kg vehicle gives TWR =
1.071.
- Vertical-ascent gravity loss: dv_grav = g0 * t_b. The 160.0 s burn
loses 1569.1 m/s to gravity alone.
- Pitched-ascent gravity loss: dv_grav = g0 * t_b * sin(gamma), with gamma
the constant mean flight-path angle held fixed for the whole burn (the
leaf envelope, mirroring the wave-38 regime-boundary pattern). At 45
degrees the loss drops to 1109.5 m/s; at 90 degrees it equals the
vertical value, at 0 degrees it vanishes.
- Effective ascent delta-v: dv_eff = dv_ideal - dv_grav - dv_drag, the
ideal budget minus the gravity and drag losses.
- Required ideal delta-v: dv_req = dv_target + dv_grav + dv_drag, the ideal
budget an ascent must carry to deliver a net target delta-v.
- The ideal delta-v budget itself is the sibling sizing leaf's output, not
recomputed here; this leaf only converts that budget into an
ascent-feasible requirement.
Workflow
- Fix the ascent point: propellant load m_prop, propellant flow rate
m_dot, sea-level thrust T, initial mass m0, the ideal delta-v budget
from the sizing leaf, and the constant mean flight-path angle gamma
(90 degrees by default, the vertical case).
- Burn time traverse: burn_time(propellant_mass, mass_flow) returns
t_b = m_prop / m_dot from the propellant load and flow rate.
- Launch thrust-to-weight traverse: thrust_to_weight(thrust,
initial_mass) returns TWR from the sea-level thrust and initial mass.
- Gravity-loss traverse: gravity_loss_vertical(burn_time_s) returns the
vertical-ascent loss g0 * t_b; for a pitched ascent run
gravity_loss_pitched(burn_time_s, mean_path_angle_deg) with the
constant mean flight-path angle in degrees.
- Ascent delta-v bookkeeping: effective_delta_v(ideal_delta_v,
gravity_loss, drag_loss) subtracts the losses from the ideal budget;
required_ideal_delta_v(target_delta_v, gravity_loss, drag_loss) adds
the losses to a net target.
- Ascent report: ascent_report(propellant_mass, mass_flow, thrust,
initial_mass, ideal_delta_v, target_delta_v, mean_path_angle_deg,
drag_loss) returns the dict with keys burn_time, thrust_to_weight,
gravity_loss, effective_delta_v and required_ideal_delta_v.
- Verify: run python3 scripts/test_rocket_gravity_loss.py (33 tests,
deterministic, offline) and confirm the worked-example anchors, the
loss identities, the round trips and every ValueError guard.
Worked example
Heavy-lift stage: m_prop = 400000 kg, m_dot = 2500 kg/s, T = 7.355 MN,
m0 = 700000 kg, ideal delta-v budget 2492.7 m/s. Module outputs (contract
test anchors in parentheses):
- Burn time: t_b = 400000 / 2500 = 160.0 s (160.0 within 0.1 s).
- Launch thrust-to-weight: TWR = 7354987.5 / (700000 * 9.80665) = 1.0714
(1.071 within 0.002).
- Vertical-ascent gravity loss: 9.80665 * 160.0 = 1569.1 m/s (1569.1
within 0.5 m/s), over 60 percent of the ideal budget.
- Pitched-ascent gravity loss at 45 degrees: 1569.1 * sin(45) = 1109.5
m/s (1109.5 within 0.5 m/s), so pitching the ascent cuts the loss by
459.6 m/s.
- Effective ascent delta-v: 2492.7 - 1109.5 = 1383.2 m/s (1383.2 within
0.5 m/s) for the pitched ascent with no drag loss.
- Required ideal delta-v: 1383.2 + 1109.5 = 2492.7 m/s, the exact
round trip back to the ideal budget.
- Ascent report dict: burn_time 160.0, thrust_to_weight 1.0714,
gravity_loss 1569.1 (vertical default) or 1109.5 (45 degrees),
effective_delta_v and required_ideal_delta_v as above.
Verification
- Confirm burn_time(400000, 2500) returns 160.0 s and that the burn time
scales linearly with the propellant load and inversely with the flow
rate.
- Confirm thrust_to_weight(7354987.5, 700000) returns 1.0714 and equals
T / (m0 * g0) exactly.
- Confirm gravity_loss_vertical(160.0) returns 1569.064 m/s and equals
g0 times the burn time; gravity_loss_pitched(160.0, 45) returns
1109.496 m/s and equals g0 * t_b * sin(45 deg) exactly.
- Confirm the loss ordering: the pitched loss at 45 degrees sits below
the vertical loss, equals it at 90 degrees and vanishes at 0 degrees.
- Confirm effective_delta_v plus the losses equals the ideal delta-v, and
that required_ideal_delta_v inverts effective_delta_v back to the ideal
budget.
- Confirm the ascent report returns exactly the five documented keys and
is deterministic across identical calls.
- Confirm every non-positive propellant load, flow rate, thrust and
initial mass, every negative burn time, every mean flight-path angle
outside [0, 90] degrees (95 or -5), and every loss sum that exceeds the
ideal or target delta-v raises ValueError.
- Run the contract test offline: python3 scripts/test_rocket_gravity_loss.py
(33 tests, deterministic).
Related leaves
- propulsion/rocket/rocket-sizing: the sibling that supplies the ideal
delta-v budget and mass-ratio side of the ascent sizing loop.
- propulsion/rocket/rocket-staging: allocates the required ideal delta-v
across stages once this leaf has added the gravity and drag losses.
- space-systems/mission-design/mission-delta-v-budget: spacecraft
post-injection budgeting, downstream of the launch-ascent leg.
- propulsion/rocket/rocket-nozzle-flow-separation and
propulsion/rocket/nozzle-design: the nozzle flow and thrust side of the
engine, upstream of the sea-level thrust input.
- propulsion/rocket/solid-rocket-motor and propulsion/rocket/
hybrid-rocket-motor: grain and regression burn time, distinct from this
leaf's ascent bookkeeping.
Pitfalls
- Quoting the ideal delta-v budget as the ascent delta-v: gravity alone
eats 1569.1 m/s of the 2492.7 m/s ideal budget in the worked example,
so an ascent-feasible requirement must subtract the losses, not carry
the ideal number.
- Mixing the vertical and pitched loss models: the pitched loss is g0 *
t_b * sin(gamma), which is below the vertical g0 * t_b for any positive
path angle; reporting the vertical loss for a pitched trajectory
overstates the requirement by (1 - sin(gamma)) * g0 * t_b.
- Confusing the effective and required ideal delta-v: effective
subtracts the losses from an ideal budget, required adds them to a net
target, and the two meet at the round trip only when the target equals
the effective value.
- Feeding an ideal delta-v budget smaller than the losses: the loss sum
must stay below the ideal or target delta-v, and the module raises
ValueError instead of returning a negative remainder.
- Recomputing the ideal delta-v here: the rocket-equation side belongs to
rocket-sizing, and this leaf's claim stops at the loss accounting that
converts the budget into an ascent-feasible requirement.
- Using a mean flight-path angle outside [0, 90] degrees: 95 or -5
degrees are rejected, since the constant-mean-angle envelope covers the
vertical-to-horizontal range only.
Behavior contract (gate 3)
Run the deterministic contract test (stdlib unittest, offline):
python3 scripts/test_rocket_gravity_loss.py
The test covers the worked-example anchors (burn time 160.0 s, launch
thrust-to-weight 1.071, vertical gravity loss 1569.1 m/s, pitched gravity
loss 1109.5 m/s at 45 degrees, effective delta-v 1383.2 m/s), the linear
burn time scalings, the thrust-to-weight closed form, the g0-times-burn
time vertical identity and the sine closed form for the pitched loss, the
pitched-below-vertical ordering with the 90 and 0 degree boundaries, the
effective-plus-losses-equals-ideal identity, the drag-loss reduction
trend, the required-ideal round trip, the exact ascent report keys,
determinism, and ValueError rejection of non-positive loads, flows,
thrusts and masses, negative burn times, out-of-range mean flight-path
angles and loss sums that exceed the ideal or target delta-v.
Compliance
- Standards referenced, not reproduced: ECSS space-systems standards
frame the launch-vehicle engineering context (free ESA download,
ecss.nl/standards); the ascent gravity-loss relations above are
standard engineering methodology, summary-only per standards-map.yaml.
- compliance: STANDARDS-REF, gated: false.
1---2name: rocket-gravity-loss3description: Use when you must account for gravity loss in a launch-vehicle powered ascent: compute the burn time from the propellant load and its flow rate, the launch thrust-to-weight ratio from the sea-level thrust and the initial mass, the gravity loss as g0 times the burn time for a vertical ascent or as g0 times the burn time times the sine of a constant mean flight-path angle for a pitched ascent, and the effective ascent delta-v as the ideal delta-v minus the gravity and drag losses. Produces the burn time, launch thrust-to-weight ratio, gravity loss and effective ascent delta-v that turn an ideal delta-v budget into an ascent-feasible requirement. Trigger: gravity loss, powered ascent, launch vehicle ascent, burn time, thrust-to-weight ratio, vertical ascent, pitched ascent, effective delta-v.4license: Apache-2.05---67# Rocket Gravity Loss (propulsion/rocket/rocket-gravity-loss)89Use when the task is the gravity-loss leg of a launch-vehicle powered10ascent: the burn time from the propellant load and flow rate, the launch11thrust-to-weight ratio, the gravity loss for a vertical or pitched ascent,12and the effective and required ideal delta-v that bracket the losses. This13leaf owns the powered-ascent loss-sizing step that no other leaf computes,14turning an ideal delta-v budget into an ascent-feasible requirement. It15pairs with the sibling sizing and staging leaves: propulsion/rocket/16rocket-sizing supplies the ideal delta-v budget this leaf consumes, and17propulsion/rocket/rocket-staging allocates the required ideal delta-v18across stages.1920## Domain quick reference2122- Standard gravity: g0 = 9.80665 m/s^2, the module constant behind every23 loss relation. SI units throughout: kg, kg/s, N, s, m/s, degrees.24- Burn time: t_b = m_prop / m_dot, the propellant load divided by the25 constant propellant flow rate. A 400000 kg load at 2500 kg/s burns for26 160.0 s.27- Launch thrust-to-weight ratio: TWR = T / (m0 * g0), the sea-level thrust28 over the initial weight. 7.355 MN on a 700000 kg vehicle gives TWR =29 1.071.30- Vertical-ascent gravity loss: dv_grav = g0 * t_b. The 160.0 s burn31 loses 1569.1 m/s to gravity alone.32- Pitched-ascent gravity loss: dv_grav = g0 * t_b * sin(gamma), with gamma33 the constant mean flight-path angle held fixed for the whole burn (the34 leaf envelope, mirroring the wave-38 regime-boundary pattern). At 4535 degrees the loss drops to 1109.5 m/s; at 90 degrees it equals the36 vertical value, at 0 degrees it vanishes.37- Effective ascent delta-v: dv_eff = dv_ideal - dv_grav - dv_drag, the38 ideal budget minus the gravity and drag losses.39- Required ideal delta-v: dv_req = dv_target + dv_grav + dv_drag, the ideal40 budget an ascent must carry to deliver a net target delta-v.41- The ideal delta-v budget itself is the sibling sizing leaf's output, not42 recomputed here; this leaf only converts that budget into an43 ascent-feasible requirement.4445## Workflow46471. Fix the ascent point: propellant load m_prop, propellant flow rate48 m_dot, sea-level thrust T, initial mass m0, the ideal delta-v budget49 from the sizing leaf, and the constant mean flight-path angle gamma50 (90 degrees by default, the vertical case).512. Burn time traverse: burn_time(propellant_mass, mass_flow) returns52 t_b = m_prop / m_dot from the propellant load and flow rate.533. Launch thrust-to-weight traverse: thrust_to_weight(thrust,54 initial_mass) returns TWR from the sea-level thrust and initial mass.554. Gravity-loss traverse: gravity_loss_vertical(burn_time_s) returns the56 vertical-ascent loss g0 * t_b; for a pitched ascent run57 gravity_loss_pitched(burn_time_s, mean_path_angle_deg) with the58 constant mean flight-path angle in degrees.595. Ascent delta-v bookkeeping: effective_delta_v(ideal_delta_v,60 gravity_loss, drag_loss) subtracts the losses from the ideal budget;61 required_ideal_delta_v(target_delta_v, gravity_loss, drag_loss) adds62 the losses to a net target.636. Ascent report: ascent_report(propellant_mass, mass_flow, thrust,64 initial_mass, ideal_delta_v, target_delta_v, mean_path_angle_deg,65 drag_loss) returns the dict with keys burn_time, thrust_to_weight,66 gravity_loss, effective_delta_v and required_ideal_delta_v.677. Verify: run python3 scripts/test_rocket_gravity_loss.py (33 tests,68 deterministic, offline) and confirm the worked-example anchors, the69 loss identities, the round trips and every ValueError guard.7071## Worked example7273Heavy-lift stage: m_prop = 400000 kg, m_dot = 2500 kg/s, T = 7.355 MN,74m0 = 700000 kg, ideal delta-v budget 2492.7 m/s. Module outputs (contract75test anchors in parentheses):7677- Burn time: t_b = 400000 / 2500 = 160.0 s (160.0 within 0.1 s).78- Launch thrust-to-weight: TWR = 7354987.5 / (700000 * 9.80665) = 1.071479 (1.071 within 0.002).80- Vertical-ascent gravity loss: 9.80665 * 160.0 = 1569.1 m/s (1569.181 within 0.5 m/s), over 60 percent of the ideal budget.82- Pitched-ascent gravity loss at 45 degrees: 1569.1 * sin(45) = 1109.583 m/s (1109.5 within 0.5 m/s), so pitching the ascent cuts the loss by84 459.6 m/s.85- Effective ascent delta-v: 2492.7 - 1109.5 = 1383.2 m/s (1383.2 within86 0.5 m/s) for the pitched ascent with no drag loss.87- Required ideal delta-v: 1383.2 + 1109.5 = 2492.7 m/s, the exact88 round trip back to the ideal budget.89- Ascent report dict: burn_time 160.0, thrust_to_weight 1.0714,90 gravity_loss 1569.1 (vertical default) or 1109.5 (45 degrees),91 effective_delta_v and required_ideal_delta_v as above.9293## Verification9495- Confirm burn_time(400000, 2500) returns 160.0 s and that the burn time96 scales linearly with the propellant load and inversely with the flow97 rate.98- Confirm thrust_to_weight(7354987.5, 700000) returns 1.0714 and equals99 T / (m0 * g0) exactly.100- Confirm gravity_loss_vertical(160.0) returns 1569.064 m/s and equals101 g0 times the burn time; gravity_loss_pitched(160.0, 45) returns102 1109.496 m/s and equals g0 * t_b * sin(45 deg) exactly.103- Confirm the loss ordering: the pitched loss at 45 degrees sits below104 the vertical loss, equals it at 90 degrees and vanishes at 0 degrees.105- Confirm effective_delta_v plus the losses equals the ideal delta-v, and106 that required_ideal_delta_v inverts effective_delta_v back to the ideal107 budget.108- Confirm the ascent report returns exactly the five documented keys and109 is deterministic across identical calls.110- Confirm every non-positive propellant load, flow rate, thrust and111 initial mass, every negative burn time, every mean flight-path angle112 outside [0, 90] degrees (95 or -5), and every loss sum that exceeds the113 ideal or target delta-v raises ValueError.114- Run the contract test offline: python3 scripts/test_rocket_gravity_loss.py115 (33 tests, deterministic).116117## Related leaves118119- propulsion/rocket/rocket-sizing: the sibling that supplies the ideal120 delta-v budget and mass-ratio side of the ascent sizing loop.121- propulsion/rocket/rocket-staging: allocates the required ideal delta-v122 across stages once this leaf has added the gravity and drag losses.123- space-systems/mission-design/mission-delta-v-budget: spacecraft124 post-injection budgeting, downstream of the launch-ascent leg.125- propulsion/rocket/rocket-nozzle-flow-separation and126 propulsion/rocket/nozzle-design: the nozzle flow and thrust side of the127 engine, upstream of the sea-level thrust input.128- propulsion/rocket/solid-rocket-motor and propulsion/rocket/129 hybrid-rocket-motor: grain and regression burn time, distinct from this130 leaf's ascent bookkeeping.131132## Pitfalls133134- Quoting the ideal delta-v budget as the ascent delta-v: gravity alone135 eats 1569.1 m/s of the 2492.7 m/s ideal budget in the worked example,136 so an ascent-feasible requirement must subtract the losses, not carry137 the ideal number.138- Mixing the vertical and pitched loss models: the pitched loss is g0 *139 t_b * sin(gamma), which is below the vertical g0 * t_b for any positive140 path angle; reporting the vertical loss for a pitched trajectory141 overstates the requirement by (1 - sin(gamma)) * g0 * t_b.142- Confusing the effective and required ideal delta-v: effective143 subtracts the losses from an ideal budget, required adds them to a net144 target, and the two meet at the round trip only when the target equals145 the effective value.146- Feeding an ideal delta-v budget smaller than the losses: the loss sum147 must stay below the ideal or target delta-v, and the module raises148 ValueError instead of returning a negative remainder.149- Recomputing the ideal delta-v here: the rocket-equation side belongs to150 rocket-sizing, and this leaf's claim stops at the loss accounting that151 converts the budget into an ascent-feasible requirement.152- Using a mean flight-path angle outside [0, 90] degrees: 95 or -5153 degrees are rejected, since the constant-mean-angle envelope covers the154 vertical-to-horizontal range only.155156## Behavior contract (gate 3)157158Run the deterministic contract test (stdlib unittest, offline):159160 python3 scripts/test_rocket_gravity_loss.py161162The test covers the worked-example anchors (burn time 160.0 s, launch163thrust-to-weight 1.071, vertical gravity loss 1569.1 m/s, pitched gravity164loss 1109.5 m/s at 45 degrees, effective delta-v 1383.2 m/s), the linear165burn time scalings, the thrust-to-weight closed form, the g0-times-burn166time vertical identity and the sine closed form for the pitched loss, the167pitched-below-vertical ordering with the 90 and 0 degree boundaries, the168effective-plus-losses-equals-ideal identity, the drag-loss reduction169trend, the required-ideal round trip, the exact ascent report keys,170determinism, and ValueError rejection of non-positive loads, flows,171thrusts and masses, negative burn times, out-of-range mean flight-path172angles and loss sums that exceed the ideal or target delta-v.173174## Compliance175176- Standards referenced, not reproduced: ECSS space-systems standards177 frame the launch-vehicle engineering context (free ESA download,178 ecss.nl/standards); the ascent gravity-loss relations above are179 standard engineering methodology, summary-only per standards-map.yaml.180- compliance: STANDARDS-REF, gated: false.