hohmann_transfer
Calculate Hohmann transfer orbit parameters to move spacecraft between two circular orbits. Input initial and final orbit radii to compute optimal transfer trajectory for orbital maneuvers.
Instructions
Calculate Hohmann transfer orbit parameters between two circular orbits.
Args: r1_m: Initial orbit radius in meters r2_m: Final orbit radius in meters
Returns: JSON string with transfer orbit parameters
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| r1_m | Yes | ||
| r2_m | Yes |
Implementation Reference
- aerospace_mcp/tools/orbits.py:148-169 (handler)MCP tool handler function for hohmann_transfer. Wraps the core computation from integrations/orbits.py and returns formatted JSON string.def hohmann_transfer(r1_m: float, r2_m: float) -> str: """Calculate Hohmann transfer orbit parameters between two circular orbits. Args: r1_m: Initial orbit radius in meters r2_m: Final orbit radius in meters Returns: JSON string with transfer orbit parameters """ try: from ..integrations.orbits import hohmann_transfer as _hohmann result = _hohmann(r1_m, r2_m) return json.dumps(result, indent=2) except ImportError: return "Transfer orbit calculation not available - install orbital packages" except Exception as e: logger.error(f"Hohmann transfer error: {str(e)}", exc_info=True) return f"Hohmann transfer error: {str(e)}"
- Core implementation of Hohmann transfer calculation, computing delta-Vs, transfer time, and orbit parameters using two-body orbital mechanics formulas.def hohmann_transfer(r1_m: float, r2_m: float) -> dict[str, float]: """ Calculate Hohmann transfer orbit parameters. Args: r1_m: Initial circular orbit radius (m) r2_m: Final circular orbit radius (m) Returns: Transfer parameters including delta-V requirements """ # Transfer orbit semi-major axis a_transfer = (r1_m + r2_m) / 2 # Velocities v1_circular = math.sqrt(MU_EARTH / r1_m) v2_circular = math.sqrt(MU_EARTH / r2_m) v1_transfer = math.sqrt(MU_EARTH * (2 / r1_m - 1 / a_transfer)) v2_transfer = math.sqrt(MU_EARTH * (2 / r2_m - 1 / a_transfer)) # Delta-V requirements (signed values) dv1 = v1_transfer - v1_circular # Positive for prograde, negative for retrograde dv2 = v2_circular - v2_transfer # Positive for prograde, negative for retrograde dv_total = abs(dv1) + abs(dv2) # Total magnitude # Transfer time transfer_time = math.pi * math.sqrt(a_transfer**3 / MU_EARTH) return { "delta_v1_ms": dv1, "delta_v2_ms": dv2, "total_delta_v_ms": dv_total, "transfer_time_s": transfer_time, "transfer_time_h": transfer_time / 3600, "transfer_semi_major_axis_m": a_transfer, }
- aerospace_mcp/fastmcp_server.py:120-120 (registration)Registration of the hohmann_transfer tool with the FastMCP server.mcp.tool(hohmann_transfer)
- aerospace_mcp/fastmcp_server.py:56-63 (registration)Import of hohmann_transfer handler function into the FastMCP server module.from .tools.orbits import ( calculate_ground_track, elements_to_state_vector, hohmann_transfer, orbital_rendezvous_planning, propagate_orbit_j2, state_vector_to_elements, )