def phase_0(body, h_1=1000, diameter=11.5): body.area = diameter ** 2 * pi body.c_drag = 2.5 body.r_nose = 16.7 simulation = AerobreakingSimulation(body, f_gravity + f_drag) r_1 = radius_mars + h_1 simulation.run(20000, delta_t, condition=lambda b: b.radius <= r_1) body.mass -= simulation.heat_shield_mass return simulation
def f_drag(b): return - b.direction * d(b.radius) * b.area * b.c_drag * b.speed2 / 2 AREA_HIAD_MODULE = pi * 15 ** 2 # [m^2] C_DRAG = 1.5 # [?] R_NOSE = 1.5 # [m] TIME = 10000 # [s] DT = 1 # [s] module = ShapedBody(POSITION_0, VELOCITY_0, MASS_MODULE, AREA_HIAD_MODULE, C_DRAG, R_NOSE) simulation_module = AerobreakingSimulation(module, f_gravity + f_drag) simulation_module.run( TIME, DT, condition=lambda b: b.radius2 < MARS_RADIUS2) pylab.plot(simulation_module.xs, simulation_module.ys) pylab.plot(*mars_xys(), color='r') pylab.axes().set_aspect('equal') pylab.xlabel("x [m]") pylab.ylabel("y [m]") pylab.show()