Hohmann Transfer (space-systems/orbit-mechanics/hohmann-transfer)
Use when the task is sizing a two-impulse Hohmann transfer between two
coplanar circular orbits: transfer-orbit geometry, circular and
transfer-ellipse velocities, the departure and arrival burn impulses,
the total delta-v budget, the transfer time, and the rendezvous lead
angle.
Domain quick reference
- Circular orbit velocity: v = sqrt(mu / r), with mu the gravitational
parameter (3.986004418e14 m^3/s^2 for Earth) and r the orbit radius
in meters. A low earth orbit at 6878 km radius flies at about 7613
m/s; a geostationary orbit at 42164 km radius flies at about 3075
m/s.
- Transfer-orbit semimajor axis: a = (r1 + r2) / 2. The transfer
ellipse is tangent to the inner circular orbit at periapsis and to
the outer circular orbit at apoapsis, so the semimajor axis is the
mean of the two radii.
- Transfer period: T = 2 * pi * sqrt(a^3 / mu). The Hohmann transfer
covers half the ellipse, so the one-way transfer time is T / 2. A
low-earth to geostationary transfer takes about 19107 s, roughly
5.31 hours.
- Vis-viva on the transfer ellipse: v = sqrt(mu * (2 / r - 1 / a)).
At r1 this is the periapsis speed, at r2 the apoapsis speed.
- Departure burn impulse: dv1 = |v_transfer(r1) - v_circular(r1)|.
The first impulse at periapsis raises the spacecraft from the inner
circular orbit onto the transfer ellipse; for an outward transfer it
is prograde, for an inward transfer retrograde.
- Arrival burn impulse: dv2 = |v_circular(r2) - v_transfer(r2)|. The
second impulse at apoapsis circularizes the transfer ellipse into
the outer circular orbit.
- Total delta-v budget: dv_total = dv1 + dv2. The low-earth to
geostationary coplanar transfer totals about 3816 m/s, the classic
reference of about 3.9 km/s before any plane change.
- Burn timing: the departure burn fires at periapsis of the transfer
ellipse (tangent to the inner orbit) and the arrival burn fires at
apoapsis (tangent to the outer orbit); both burns are impulsive and
aligned with the velocity vector for a coplanar transfer.
- Rendezvous phase angle: the chaser covers 180 degrees of true
anomaly during the transfer while the target in the outer circular
orbit sweeps (t_transfer / T2) * 360 degrees, so the chaser must
lead the target by lead = 180 - (t_transfer / T2) * 360 degrees at
departure. For the low-earth to geostationary case the lead angle is
about 100.2 degrees.
- Specific orbital energy: epsilon = -mu / (2 * a). The transfer
ellipse energy sits between the energies of the inner and outer
circular orbits, which is why both impulses add energy for an
outward transfer.
- Circular orbit period: T = 2 * pi * sqrt(r^3 / mu). A geostationary
orbit period is about 86164 s, one sidereal day.
Workflow
- Establish the two circular orbit radii r1 and r2 in meters (radius,
not altitude) and the gravitational parameter mu of the central
body.
- Compute the circular-orbit velocities at both radii with
circular_velocity to know what the spacecraft has before and after
the transfer.
- Build the transfer ellipse with transfer_semimajor_axis, then the
one-way transfer time with transfer_time (or the full period with
transfer_period).
- Evaluate the periapsis and apoapsis speeds on the transfer ellipse
with vis_viva_velocity and confirm they bracket the circular
speeds.
- Compute the departure and arrival burns with departure_delta_v and
arrival_delta_v, then the total with total_delta_v; check the
budget against the propulsion capability.
- For a rendezvous, compute the departure lead angle with
rendezvous_phase_angle so the target is met at the outer orbit.
- Sanity-check the result: the total delta-v for a low-earth to
geostationary coplanar transfer is about 3.9 km/s and the transfer
time about 5.3 hours.
Pitfalls
- Using altitude instead of radius: the formulas take the distance
from the body center; a 500 km altitude orbit has radius 6878 km,
and mixing the two changes every velocity and time.
- Summing the impulses with the wrong sign: dv1 and dv2 are both
positive magnitudes; the burn directions differ (prograde at
departure, prograde at arrival for an outward transfer, retrograde
for an inward transfer), and the budget never subtracts them.
- Using the full transfer period as the transfer time: the Hohmann
arc is half the ellipse, so the time is T / 2; using the full period
doubles the coast and breaks the rendezvous phase angle.
- Burning at the wrong point: the departure burn must fire at
periapsis of the transfer ellipse and the arrival burn at apoapsis;
an off-tangent burn wastes delta-v and leaves the transfer ellipse
misaligned.
- Ignoring the plane change: the numbers above are for coplanar
transfers; an inclination change between the two orbits adds its own
delta-v on top of the Hohmann budget.
- Forgetting the target motion in a rendezvous: the chaser must lead
the target by the rendezvous phase angle at departure, or the target
has moved past the meeting point when the chaser arrives.
- Confusing the Hohmann transfer with the rocket equation: the rocket
equation converts a delta-v budget into propellant mass through the
specific impulse; the Hohmann transfer sizes the delta-v itself, and
the two models are separate steps in the maneuver design.
- Assuming equal radii are a transfer: r1 equal to r2 means the
spacecraft is already on the target orbit and no Hohmann burn
exists; the logic rejects that input.
Behavior contract (gate 3)
The Hohmann transfer math is exercised by the gate 3 contract test:
scripts/test_hohmann_transfer.py against
scripts/hohmann_transfer_logic.py (stdlib unittest, offline). Run:
python3 scripts/test_hohmann_transfer.py
Compliance
- Standards referenced, not reproduced: ECSS-E-ST-10C (systems
engineering general requirements) frames mission analysis and orbit
design within the ECSS lifecycle, and the transfer geometry and
vis-viva relationships above are common astrodynamics methodology,
summary-only per standards-map.yaml.
- compliance: STANDARDS-REF, gated: false.
1---2name: hohmann-transfer3description: Use when you must size a Hohmann transfer between two coplanar circular orbits of a spacecraft: compute the transfer-orbit semimajor axis and period, the circular-orbit velocity at the departure and arrival radii, the periapsis and apoapsis speeds on the transfer ellipse with the vis-viva equation, and the departure and arrival burn impulses that make up the hohmann-transfer delta-v budget. Produces the transfer time, the two impulse burns, and the total delta-v that gate orbit-raising and orbit-lowering maneuver planning and the rendezvous phase angle for a target in the outer orbit. Trigger: hohmann-transfer, delta-v, transfer-orbit, burn-impulse, vis-viva, coplanar-transfer, orbit-raising, transfer-time.4license: Apache-2.05---67# Hohmann Transfer (space-systems/orbit-mechanics/hohmann-transfer)89Use when the task is sizing a two-impulse Hohmann transfer between two10coplanar circular orbits: transfer-orbit geometry, circular and11transfer-ellipse velocities, the departure and arrival burn impulses,12the total delta-v budget, the transfer time, and the rendezvous lead13angle.1415## Domain quick reference1617- Circular orbit velocity: v = sqrt(mu / r), with mu the gravitational18 parameter (3.986004418e14 m^3/s^2 for Earth) and r the orbit radius19 in meters. A low earth orbit at 6878 km radius flies at about 761320 m/s; a geostationary orbit at 42164 km radius flies at about 307521 m/s.22- Transfer-orbit semimajor axis: a = (r1 + r2) / 2. The transfer23 ellipse is tangent to the inner circular orbit at periapsis and to24 the outer circular orbit at apoapsis, so the semimajor axis is the25 mean of the two radii.26- Transfer period: T = 2 * pi * sqrt(a^3 / mu). The Hohmann transfer27 covers half the ellipse, so the one-way transfer time is T / 2. A28 low-earth to geostationary transfer takes about 19107 s, roughly29 5.31 hours.30- Vis-viva on the transfer ellipse: v = sqrt(mu * (2 / r - 1 / a)).31 At r1 this is the periapsis speed, at r2 the apoapsis speed.32- Departure burn impulse: dv1 = |v_transfer(r1) - v_circular(r1)|.33 The first impulse at periapsis raises the spacecraft from the inner34 circular orbit onto the transfer ellipse; for an outward transfer it35 is prograde, for an inward transfer retrograde.36- Arrival burn impulse: dv2 = |v_circular(r2) - v_transfer(r2)|. The37 second impulse at apoapsis circularizes the transfer ellipse into38 the outer circular orbit.39- Total delta-v budget: dv_total = dv1 + dv2. The low-earth to40 geostationary coplanar transfer totals about 3816 m/s, the classic41 reference of about 3.9 km/s before any plane change.42- Burn timing: the departure burn fires at periapsis of the transfer43 ellipse (tangent to the inner orbit) and the arrival burn fires at44 apoapsis (tangent to the outer orbit); both burns are impulsive and45 aligned with the velocity vector for a coplanar transfer.46- Rendezvous phase angle: the chaser covers 180 degrees of true47 anomaly during the transfer while the target in the outer circular48 orbit sweeps (t_transfer / T2) * 360 degrees, so the chaser must49 lead the target by lead = 180 - (t_transfer / T2) * 360 degrees at50 departure. For the low-earth to geostationary case the lead angle is51 about 100.2 degrees.52- Specific orbital energy: epsilon = -mu / (2 * a). The transfer53 ellipse energy sits between the energies of the inner and outer54 circular orbits, which is why both impulses add energy for an55 outward transfer.56- Circular orbit period: T = 2 * pi * sqrt(r^3 / mu). A geostationary57 orbit period is about 86164 s, one sidereal day.5859## Workflow60611. Establish the two circular orbit radii r1 and r2 in meters (radius,62 not altitude) and the gravitational parameter mu of the central63 body.642. Compute the circular-orbit velocities at both radii with65 circular_velocity to know what the spacecraft has before and after66 the transfer.673. Build the transfer ellipse with transfer_semimajor_axis, then the68 one-way transfer time with transfer_time (or the full period with69 transfer_period).704. Evaluate the periapsis and apoapsis speeds on the transfer ellipse71 with vis_viva_velocity and confirm they bracket the circular72 speeds.735. Compute the departure and arrival burns with departure_delta_v and74 arrival_delta_v, then the total with total_delta_v; check the75 budget against the propulsion capability.766. For a rendezvous, compute the departure lead angle with77 rendezvous_phase_angle so the target is met at the outer orbit.787. Sanity-check the result: the total delta-v for a low-earth to79 geostationary coplanar transfer is about 3.9 km/s and the transfer80 time about 5.3 hours.8182## Pitfalls8384- Using altitude instead of radius: the formulas take the distance85 from the body center; a 500 km altitude orbit has radius 6878 km,86 and mixing the two changes every velocity and time.87- Summing the impulses with the wrong sign: dv1 and dv2 are both88 positive magnitudes; the burn directions differ (prograde at89 departure, prograde at arrival for an outward transfer, retrograde90 for an inward transfer), and the budget never subtracts them.91- Using the full transfer period as the transfer time: the Hohmann92 arc is half the ellipse, so the time is T / 2; using the full period93 doubles the coast and breaks the rendezvous phase angle.94- Burning at the wrong point: the departure burn must fire at95 periapsis of the transfer ellipse and the arrival burn at apoapsis;96 an off-tangent burn wastes delta-v and leaves the transfer ellipse97 misaligned.98- Ignoring the plane change: the numbers above are for coplanar99 transfers; an inclination change between the two orbits adds its own100 delta-v on top of the Hohmann budget.101- Forgetting the target motion in a rendezvous: the chaser must lead102 the target by the rendezvous phase angle at departure, or the target103 has moved past the meeting point when the chaser arrives.104- Confusing the Hohmann transfer with the rocket equation: the rocket105 equation converts a delta-v budget into propellant mass through the106 specific impulse; the Hohmann transfer sizes the delta-v itself, and107 the two models are separate steps in the maneuver design.108- Assuming equal radii are a transfer: r1 equal to r2 means the109 spacecraft is already on the target orbit and no Hohmann burn110 exists; the logic rejects that input.111112## Behavior contract (gate 3)113114The Hohmann transfer math is exercised by the gate 3 contract test:115scripts/test_hohmann_transfer.py against116scripts/hohmann_transfer_logic.py (stdlib unittest, offline). Run:117python3 scripts/test_hohmann_transfer.py118119## Compliance120121- Standards referenced, not reproduced: ECSS-E-ST-10C (systems122 engineering general requirements) frames mission analysis and orbit123 design within the ECSS lifecycle, and the transfer geometry and124 vis-viva relationships above are common astrodynamics methodology,125 summary-only per standards-map.yaml.126- compliance: STANDARDS-REF, gated: false.