def lambert_leg(P1, P2, i, j, t1, t2, tof, vrel=None, dv_launch=0.): """Compute a lambert leg from planet to planet. Arguments: p1 -- starting planet (str or PyKEP.planet object) p2 -- final planet (str or PyKEP.planet object) t0 -- start time of leg in MJD2000 tof -- time of flight in days Keyword arguments: vrel -- caresian coordinates of the relative velocity before the flyby at p1 dv_launch -- dv discounted at lunch (i.e. if vrel is None) rendezvous -- add final dv Returns: dV, vrel_out, where vrel_out is the relative velocity at the end of the leg at p2 """ ast1 = ASTEROIDS[P1] ast2 = ASTEROIDS[P2] r1 = state_asteroids.EPH[i][t1][0] v1 = state_asteroids.EPH[i][t1][1] r2 = state_asteroids.EPH[j][t2][0] v2 = state_asteroids.EPH[j][t2][1] lambert = kep.lambert_problem(r1, r2, tof * kep.DAY2SEC, ast1.mu_central_body, False, 0) vrel_in = tuple(map(lambda x, y: x - y, lambert.get_v1()[0], v1)) vrel_out = tuple(map(lambda x, y: x - y, lambert.get_v2()[0], v2)) dv_lambert = np.linalg.norm(vrel_out) + np.linalg.norm(vrel_in) a, _, _, dv_damon = kep.damon(vrel_in, vrel_out, tof*kep.DAY2SEC) m_star = kep.max_start_mass(np.linalg.norm(a), dv_damon, T_max, Isp) return dv_lambert, dv_damon, m_star
def lambert_leg(P1, P2, t0, tof): ast1 = ASTEROIDS[P1] ast2 = ASTEROIDS[P2] r1, v1 = ast1.eph(kep.epoch(t0)) r2, v2 = ast2.eph(kep.epoch(t0 + tof)) lambert = kep.lambert_problem(r1, r2, tof * kep.DAY2SEC, ast1.mu_central_body) vrel_in = tuple(map(lambda x, y: -x + y, lambert.get_v1()[0], v1)) vrel_out = tuple(map(lambda x, y: -x + y, lambert.get_v2()[0], v2)) dv_lambert = np.linalg.norm(vrel_out) + np.linalg.norm(vrel_in) a, _, _, dv_damon = kep.damon(vrel_in, vrel_out, tof*kep.DAY2SEC) m_star = kep.max_start_mass(np.linalg.norm(a), dv_damon, T_max, Isp) return dv_lambert, dv_damon, m_star
def lambert_leg(P1, P2, i, j, t1, t2, tof): ast1 = ASTEROIDS[P1] ast2 = ASTEROIDS[P2] r1 = state_asteroids.EPH[i][t1][0] v1 = state_asteroids.EPH[i][t1][1] r2 = state_asteroids.EPH[j][t2][0] v2 = state_asteroids.EPH[j][t2][1] lambert = kep.lambert_problem(r1, r2, tof * kep.DAY2SEC, ast1.mu_central_body) vrel_in = tuple(map(lambda x, y: -x + y, lambert.get_v1()[0], v1)) vrel_out = tuple(map(lambda x, y: -x + y, lambert.get_v2()[0], v2)) dv_lambert = np.linalg.norm(vrel_out) + np.linalg.norm(vrel_in) a, _, _, dv_damon = kep.damon(vrel_in, vrel_out, tof*kep.DAY2SEC) m_star = kep.max_start_mass(np.linalg.norm(a), dv_damon, T_max, Isp) return dv_lambert, dv_damon, m_star