コード例 #1
0
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
コード例 #2
0
    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()