Defiance Mk. IV - University of Toronto Aerospace - 2024#

Launched in Launch Canada 2024. Defiance Mk. IV is the fourth rocket in the defiance series of hybrid rocket from University of Toronto Aerospace Team.

Defiance Mk. IV set a new Canadian amateur rocketry record with a recorded apogee altitude of \(9308.318 m\).

With a relative error of only \(0.76\)%, the simulated apogee was of \(9238.009 m\).

Importing necessary modules#

[1]:
from rocketpy import Function, Environment, Rocket, Flight
from rocketpy.motors import CylindricalTank, Fluid, HybridMotor
from rocketpy.motors.tank import MassFlowRateBasedTank
import datetime

Creating the simulation Environment#

[2]:
flight_date = datetime.date(2024, 8, 24)
env = Environment(latitude=47.966527, longitude=-81.87413, elevation=1383.4)

env.set_date((flight_date.year, flight_date.month, flight_date.day, 0))
env.set_atmospheric_model(type="custom_atmosphere", wind_v=1.0, wind_u=-2.9)

env.info()

Gravity Details

Acceleration of gravity at surface level:    9.8046 m/s²
Acceleration of gravity at  80.000 km (ASL): 9.5667 m/s²


Launch Site Details

Launch Date: 2024-08-24 00:00:00 UTC
Launch Site Latitude: 47.96653°
Launch Site Longitude: -81.87413°
Reference Datum: SIRGAS2000
Launch Site UTM coordinates: 434751.92 W    5312949.55 N
Launch Site UTM zone: 17T
Launch Site Surface Elevation: 1383.4 m


Atmospheric Model Details

Atmospheric Model Type: custom_atmosphere
custom_atmosphere Maximum Height: 80.000 km

Surface Atmospheric Conditions

Surface Wind Speed: 3.07 m/s
Surface Wind Direction: 109.03°
Surface Wind Heading: 289.03°
Surface Pressure: 857.70 hPa
Surface Temperature: 279.17 K
Surface Air Density: 1.070 kg/m³
Surface Speed of Sound: 334.62 m/s


Earth Model Details

Earth Radius at Launch site: 6366.38 km
Semi-major Axis: 6378.14 km
Semi-minor Axis: 6356.75 km
Flattening: 0.0034


Atmospheric Model Plots

../_images/examples_defiance_flight_sim_4_1.png

Building the Hybrid Motor#

[3]:
oxidizer_liq = Fluid(name='N2O_l', density=960)
oxidizer_gas = Fluid(name='N2O_g', density=1.9277)

tank_shape = CylindricalTank(0.0665, 1.79)

oxidizer_tank = MassFlowRateBasedTank(
    name='oxidizer_tank',
    geometry=tank_shape,
    flux_time=(6.5),
    liquid=oxidizer_liq,
    gas=oxidizer_gas,
    initial_liquid_mass=17,
    initial_gas_mass=0,
    liquid_mass_flow_rate_in=0,
    liquid_mass_flow_rate_out=17 / 6.5,
    gas_mass_flow_rate_in=0,
    gas_mass_flow_rate_out=0,
)

''' Defining the thrust curve'''


def thrust_fuction(t):
    return 5750 * 2 ** (-t / 200)


hybrid_motor = HybridMotor(
    thrust_source='../../data/rockets/defiance/Thrust_curve.csv',
    dry_mass=13.832,
    dry_inertia=(1.801, 1.801, 0.0305),
    center_of_dry_mass_position=780 / 1000,
    reshape_thrust_curve=False,
    grain_number=1,
    grain_separation=0,
    grain_outer_radius=0.0665,
    grain_initial_inner_radius=0.061,
    grain_initial_height=1.25,
    grain_density=920,
    nozzle_radius=0.0447,
    throat_radius=0.0234,
    interpolation_method='linear',
    grains_center_of_mass_position=0.377,
    coordinate_system_orientation='nozzle_to_combustion_chamber',
)

hybrid_motor.add_tank(tank=oxidizer_tank, position=2.2)

Building the Rocket and adding Aero surfaces#

[4]:
defiance = Rocket(
    radius=0.07,
    mass=37.211,
    # inertia = (180.142, 180.142, 0.262),
    inertia=(94.14, 94.14, 0.09),
    center_of_mass_without_motor=3.29,
    power_off_drag='../../data/rockets/defiance/DragCurve.csv',
    power_on_drag='../../data/rockets/defiance/DragCurve.csv',
    coordinate_system_orientation='tail_to_nose',
)

defiance.add_motor(hybrid_motor, position=0.2)

defiance.add_nose(length=0.563, kind="vonKarman", position=4.947)

defiance.add_trapezoidal_fins(
    n=3, span=0.115, root_chord=0.4, tip_chord=0.2, position=0.175
)

defiance.add_tail(top_radius=0.07, bottom_radius=0.064, length=0.0597, position=0.1)

defiance.add_parachute(name='main', cd_s=2.2, trigger=305, sampling_rate=100, lag=0)

defiance.add_parachute(
    name='drogue', cd_s=1.55, trigger='apogee', sampling_rate=100, lag=0
)
[4]:
<Parachute drogue (cd_s = 1.5500 m2, trigger = apogee)>

Flight Simulation#

[5]:
test_flight = Flight(
    rocket=defiance, environment=env, inclination=85, heading=90, rail_length=10
)

test_flight.prints.apogee_conditions()
test_flight.plots.trajectory_3d()

Apogee State

Apogee Time: 44.155 s
Apogee Altitude: 10621.409 m (ASL) | 9238.009 m (AGL)
Apogee Freestream Speed: 51.397 m/s
Apogee X position: 2291.300 m
Apogee Y position: -190.030 m
Apogee latitude: 47.9648127°
Apogee longitude: -81.8433333°
../_images/examples_defiance_flight_sim_10_1.png