def test_mee_coe_mee(self): mee = convert.mod_angles(convert.mee_coe(coe_sltn)) coe = convert.coe_mee(mee) mee2 = convert.mod_angles(convert.mee_coe(coe)) diff = convert.mod_angles(np.abs(mee - mee2), angle_indices=[5]) indices_2pi = np.where(2 * np.pi - tol < diff) diff[indices_2pi] -= 2 * np.pi np.testing.assert_allclose(diff, 0., rtol=0, atol=tol)
def test_meefl_meeMl_meefl(self): meefl = convert.mod_angles(convert.mee_coe(coe_sltn)) meeMl = convert.meeMl_meefl(meefl) meefl2 = convert.mod_angles(convert.meefl_meeMl(meeMl)) diff = convert.mod_angles(np.abs(meefl - meefl2), angle_indices=[0]) indices_2pi = np.where(2 * np.pi - tol < diff) diff[indices_2pi] -= 2 * np.pi np.testing.assert_allclose(diff, 0., rtol=0, atol=tol)
def test_coeM_coef_coeM(self): coeM = convert.mod_angles(convert.coeM_coef(coe_sltn)) coef = convert.coef_coeM(coeM) coeM2 = convert.mod_angles(convert.coeM_coef(coef)) diff = convert.mod_angles(np.abs(coeM - coeM2), angle_indices=[0]) indices_2pi = np.where(2 * np.pi - tol < diff) diff[indices_2pi] -= 2 * np.pi np.testing.assert_allclose(diff, 0., rtol=0, atol=tol)
def test_rv_meeMl0_rv(self): T = np.linspace(0, 10, num=m) rv = convert.rv_coe(coe_sltn) meeMl0 = convert.meeMl0_rv(T, rv) rv2 = convert.mod_angles(convert.rv_meeMl0(T, meeMl0)) diff = convert.mod_angles(np.abs(rv - rv2)) indices_2pi = np.where(2 * np.pi - tol < diff) diff[indices_2pi] -= 2 * np.pi np.testing.assert_allclose(diff, 0., rtol=0, atol=tol)
def test_coe_meeMl0_coe(self): T = np.linspace(0, 10, num=m) coe = coe_0 meeMl0 = convert.meeMl0_coe(T, coe) coe2 = convert.mod_angles(convert.coe_meeMl0(T, meeMl0)) diff = convert.mod_angles(np.abs(coe - coe2)) indices_2pi = np.where(2 * np.pi - tol < diff) diff[indices_2pi] -= 2 * np.pi np.testing.assert_allclose(diff, 0., rtol=0, atol=tol)
def test_mee_meeMl0_mee(self): T = np.linspace(0, 10, num=m) mee = convert.mod_angles(convert.mee_coe(coe_sltn)) meeMl0 = convert.meeMl0_mee(T, mee) mee2 = convert.mod_angles(convert.mee_meeMl0(T, meeMl0)) diff = convert.mod_angles(np.abs(mee - mee2), angle_indices=[5]) indices_2pi = np.where(2 * np.pi - tol < diff) diff[indices_2pi] -= 2 * np.pi np.testing.assert_allclose(diff, 0., rtol=0, atol=tol)
def test_compare_meeEl_meefl_to_coeE_coef(self): coef = convert.mod_angles(coe_sltn) meefl = convert.mee_coe(coef) coeE = convert.coeE_coef(coef) meeEl = convert.meeEl_meefl(meefl) El1 = convert.mee_coe(coeE)[:, 5:] El2 = meeEl[:, 5:] diff = convert.mod_angles(El1 - El2, angle_indices=[0]) indices_2pi = np.where(2 * np.pi - tol < diff) diff[indices_2pi] -= 2 * np.pi np.testing.assert_allclose(diff, 0., rtol=0, atol=tol)
def test_compare_meefl_meeEl_to_coef_coeE(self): coeE = convert.mod_angles(coe_sltn) meeEl = convert.mee_coe(coeE) coef = convert.coef_coeE(coeE) meefl = convert.meefl_meeEl(meeEl) fl1 = convert.mee_coe(coef)[:, 5:] fl2 = meefl[:, 5:] diff = convert.mod_angles(np.abs(fl1 - fl2), angle_indices=[0]) indices_2pi = np.where(2 * np.pi - tol < diff) diff[indices_2pi] -= 2 * np.pi np.testing.assert_allclose(diff, 0., rtol=0, atol=tol)
def test_rv_mee_rv(self): mee = convert.mod_angles(convert.mee_coe(coe_sltn)) rv = convert.rv_mee(mee) mee = convert.mee_rv(rv) rv2 = convert.rv_mee(mee) np.testing.assert_allclose(rv, rv2, rtol=0, atol=tol)
def test_compare_zonal_to_coe(self): X0_mee = mee_0 X0_coe = coe_0 order_H = 6 kep_dyn_mee = mee.KeplerianDynamics() zon_grav_mee = mee.ZonalGravity(order=order_H) sysmee = utl.SystemDynamics(kep_dyn_mee, zon_grav_mee) kep_dyn_coe = coe.KeplerianDynamics() zon_grav_coe = coe.ZonalGravity(order=order_H) syscoe = utl.SystemDynamics(kep_dyn_coe, zon_grav_coe) segs_per_orbit = 6 orbits = 1 segments = orbits * segs_per_orbit domains = [k * period / segs_per_orbit for k in range(segments + 1)] seg_number = len(domains) - 1 N = (order_mcpi, ) * seg_number mcpi_mee = mcpyi.MCPI(sysmee, domains, N, 'warm', X0_mee, tol) mcpi_coe = mcpyi.MCPI(syscoe, domains, N, 'warm', X0_coe, tol) X_mee = mcpi_mee.solve_serial()(T) X_coe = mcpi_coe.solve_serial()(T) diff = convert.mod_angles(np.abs(X_coe - convert.coe_mee(X_mee))) indices_2pi = np.where(2 * np.pi - tol < diff) diff[indices_2pi] -= 2 * np.pi np.testing.assert_allclose(diff, 0., rtol=0, atol=tol)
def test_coe_rv_coe(self): coe = coe_sltn rv = convert.rv_coe(coe) coe2 = convert.coe_rv(rv) diff = convert.mod_angles(np.abs(coe - coe2), angle_indices=[2, 3, 4, 5]) indices_2pi = np.where(2 * np.pi - tol < diff) diff[indices_2pi] -= 2 * np.pi np.testing.assert_allclose(diff, 0., rtol=0, atol=tol * 10)
def test_compare_zonal_to_mee(self): X0_meeMl0 = meeMl0_0 X0_mee = mee_0 order_H = 6 kep_dyn_meeMl0 = meeMl0.KeplerianDynamics() zon_grav_meeMl0 = meeMl0.ZonalGravity(order=order_H) sysmeeMl0 = utl.SystemDynamics(kep_dyn_meeMl0, zon_grav_meeMl0) kep_dyn_mee = mee.KeplerianDynamics() zon_grav_mee = mee.ZonalGravity(order=order_H) sysmee = utl.SystemDynamics(kep_dyn_mee, zon_grav_mee) segs_per_orbit = 6 segments = orbits * segs_per_orbit domains = [k * period / segs_per_orbit for k in range(segments + 1)] seg_number = len(domains) - 1 N = (order_mcpi, ) * seg_number mcpi_meeMl0 = mcpyi.MCPI(sysmeeMl0, domains, N, 'warm', X0_meeMl0, tol) mcpi_mee = mcpyi.MCPI(sysmee, domains, N, 'warm', X0_mee, tol) X_meeMl0 = mcpi_meeMl0.solve_serial()(T) X_mee = mcpi_mee.solve_serial()(T) diff = convert.mod_angles(X_mee - convert.mee_meeMl0(T, X_meeMl0)) np.testing.assert_allclose(diff, 0.0, rtol=0, atol=tol * 10)
def test_compare_constant_h_thrust_to_rv(self): X0_meeMl0 = meeMl0_0 X0_rv = rv_0 u = np.array([[0., 0., 1e-6]]) kep_dyn_meeMl0 = meeMl0.KeplerianDynamics() conthrust_meeMl0 = meeMl0.ConstantThrust(u) sysmeeMl0 = utl.SystemDynamics(kep_dyn_meeMl0, conthrust_meeMl0) kep_dyn_rv = rv.KeplerianDynamics() conthrust_rv = rv.ConstantThrust(u) sysrv = utl.SystemDynamics(kep_dyn_rv, conthrust_rv) segments = orbits * segs_per_orbit domains = [k * period / segs_per_orbit for k in range(segments + 1)] seg_number = len(domains) - 1 N = (order_mcpi, ) * seg_number mcpi_meeMl0 = mcpyi.MCPI(sysmeeMl0, domains, N, 'warm', X0_meeMl0, tol) mcpi_rv = mcpyi.MCPI(sysrv, domains, N, 'warm', X0_rv, tol) X_meeMl0 = mcpi_meeMl0.solve_serial()(T) X_rv = mcpi_rv.solve_serial()(T) diff = convert.mod_angles(X_meeMl0 - convert.meeMl0_mee(T, convert.mee_rv(X_rv))) np.testing.assert_allclose(diff, 0.0, rtol=0, atol=tol * 10)