def test_correct_pericenter_J2_exception(): ss0 = Orbit.from_classical( Mercury, 1000 * u.km, 0 * u.one, 0 * u.deg, 0 * u.deg, 0 * u.deg, 0 * u.deg, ) max_delta_r = 30 * u.km with pytest.raises(NotImplementedError) as excinfo: Maneuver.correct_pericenter(ss0, max_delta_r) assert excinfo.type == NotImplementedError assert (str( excinfo.value ) == f"The correction maneuver is not yet supported for {ss0.attractor}")
def test_correct_pericenter_ecc_exception(): ss0 = Orbit.from_classical( Earth, 1000 * u.km, 0.5 * u.one, 0 * u.deg, 0 * u.deg, 0 * u.deg, 0 * u.deg, ) max_delta_r = 30 * u.km with pytest.raises(NotImplementedError) as excinfo: Maneuver.correct_pericenter(ss0, max_delta_r) assert excinfo.type == NotImplementedError assert ( str(excinfo.value) == f"The correction maneuver is not yet supported with {ss0.ecc},it should be less than or equal to 0.001" )
def test_correct_pericenter(attractor, max_delta_r, a, ecc, inc, expected_t, expected_v): ss0 = Orbit.from_classical( attractor, a, ecc, inc, 0 * u.deg, 0 * u.deg, 0 * u.deg, ) maneuver = Maneuver.correct_pericenter(ss0, max_delta_r) assert_quantity_allclose(maneuver[0][0], expected_t) assert_quantity_allclose(maneuver[0][1].value.tolist(), expected_v.value.tolist())