test_lambertSolverMultiRev

Regression coverage for Lambert starters, transfer direction, and the minimum-time boundary.

test_lambertSolverMultiRev.lagrange_time(x, lam, revolutions)[source]

Evaluate elliptic flight time using Lagrange’s eccentric-angle formulation.

test_lambertSolverMultiRev.problem_geometry(lam, revolutions)[source]

Construct endpoints and independently minimize their Lagrange time curve.

test_lambertSolverMultiRev.propagate(r1, v1, transfer_time)[source]

Integrate the Cartesian two-body equations independently of the Lambert solver.

test_lambertSolverMultiRev.solve_problem(r1, r2, transfer_time, revolutions, method=1, module=None, *, transfer_direction=None)[source]

Run one module update and return owned solution and performance snapshots.

test_lambertSolverMultiRev.test_directed_unbound_orbit(method, eccentricity, inclination)[source]

Recover parabolic and hyperbolic Keplerian velocities in both directions.

test_lambertSolverMultiRev.test_gooding_multirevolution_branches(lam, revolutions, time_ratio)[source]

Check both roots against independent bracketing over near and distant transfers.

The geometry parameter covers short and long transfers, including the issue 1651 geometry. Time ratios cover the neighborhood of the minimum, both starter patches, and long transfers. The lam = -0.99 case exercises a minimum-time Halley step that leaves the elliptic domain without a safeguard. Each root must be on its own side of the minimum and satisfy the independently evaluated flight-time equation.

test_lambertSolverMultiRev.test_invalid_transfer_direction(method, direction)[source]

Reject unknown direction values instead of silently choosing a prograde transfer.

test_lambertSolverMultiRev.test_issue_1651_reported_orbit(method)[source]

Recover the reported orbit and propagate both distinct solutions to the target.

test_lambertSolverMultiRev.test_issue_1652_reported_retrograde_orbit(method)[source]

Recover the reported retrograde orbit while preserving the default prograde solution.

test_lambertSolverMultiRev.test_known_elliptic_orbit(method, revolutions, final_anomaly, inclination)[source]

Recover exact Keplerian velocities for zero and multiple revolutions in both angle regimes.

test_lambertSolverMultiRev.test_minimum_time_boundary(method, direction, lam, revolutions)[source]

Check infeasible, coalesced, and distinct roots on successive module updates.

At the minimum, both valid slots represent the same orbit. Values below the minimum are invalid, and values above it must recover two distinct roots. Reusing the module also checks recovery after an infeasible request.

Reject nonfinite input geometry before attempting the minimum-time search.

test_lambertSolverMultiRev.test_polar_direction_tie(method, direction)[source]

Use opposite orbit normals deterministically when their z-component is exactly zero.

test_lambertSolverMultiRev.test_resolved_near_polar_direction(method, direction, tilt)[source]

Keep a resolvable angular-momentum sign on either side of the polar tie.

test_lambertSolverMultiRev.test_rotated_polar_direction_roundoff(method, direction, revolutions, azimuth)[source]

Preserve the polar tie under rotation with unequal endpoint radii.

The unrotated endpoints have an exactly zero cross-product z-component, but normalizing them separately introduces a small negative component. Both solution branches must follow the documented tie convention and agree with an axis-aligned reference rotated about the input-frame z-axis.