lamberthub

Lambert's problem solvers for orbital mechanics.

Version

arora Module

Summary

Functions

arora2013

Solves Lambert problem using Arora’s devised algorithm

Description

A module hosting all algorithms devised by Arora

Module Details

lamberthub.universal_solvers.arora.arora2013(mu, r1, r2, tof, M=0, is_prograde=True, is_low_path=True, maxiter=35, atol=1e-05, rtol=1e-07, full_output=False)[source]

Solves Lambert problem using Arora’s devised algorithm

Parameters:
mu: float

Gravitational parameter, equivalent to \(GM\) of attractor body.

r1: numpy.array

Initial position vector.

r2: numpy.array

Final position vector.

tof: float

Time of flight between initial and final position vectors.

M: int

Number of revolutions. Must be equal or greater than 0 value.

is_prograde: bool

If True, specifies prograde motion. Otherwise, retrograde motion is imposed.

is_low_path: bool

If two solutions are available, it selects between high or low path.

maxiter: int

Maximum number of iterations.

atol: float

Absolute tolerance \(abs(x_{i+1} - x_{i})\)

rtol: float

Relative tolerance \(abs(\frac{x_{i+1}}{x_{i}} - 1)\)

full_output: bool

If True, the number of iterations and time per iteration are also returned.

Returns:
v1: numpy.array

Initial velocity vector

v2: numpy.array

Final velocity vector

numiter: int

Number of iterations.

tpi: float

Time per iteration in seconds.

Notes

Lambert’s problem solver using the method proposed by Nitin Arora and Ryan P. Rusell in 2013, see [1]. This algorithm exploits the universal formulae by defining a new cosine-based transformation and developing a robust initial guess. Although based on arbitrary conditions, the algorithm shows a high performance.

References

[1] Arora, N., & Russell, R. P. (2013). A fast and robust multiple revolution Lambert algorithm using a cosine transformation. Paper AAS, 13, 728.