Vulcan
Aerospace Engineering Utilities Built on Janus
Loading...
Searching...
No Matches
Propulsion Utilities

The vulcan/propulsion module provides fundamental propulsion model utilities for rocketry, air-breathing, and electric propulsion systems. These functions are designed to be stateless, functional, and compatible with both numeric (double) and symbolic (casadi::MX) types for trajectory optimization.

Features

  • Rocket Propulsion: Tsiolkovsky rocket equation, thrust/Isp relations.
  • Altitude Compensation: Adjusting thrust for ambient pressure.
  • Air-Breathing: Breguet range/endurance, TSFC-based fuel flow.
  • Electric Propulsion: Power-limited thrust, mass flow, and efficiency relations.

Usage

Include the main header:

Rocket Fundamentals

Calculate Delta-V or required propellant:

double Isp = 300.0;
double m0 = 1000.0;
double mf = 100.0;
double Ve = exhaust_velocity(Isp); // Uses standard g0
// Calculate Delta-V
double dV = delta_v(Ve, m0, mf);
// Calculate required propellant for a maneuver
double mp_needed = propellant_mass(500.0, m0, Ve); // for 500 m/s dV
Definition Rocket.hpp:5
Scalar exhaust_velocity(const Scalar &Isp, double g0=9.80665)
Calculates effective exhaust velocity from specific impulse.
Definition Rocket.hpp:33
Scalar delta_v(const Scalar &Ve, const Scalar &m0, const Scalar &mf)
Calculates Delta-V using the Tsiolkovsky rocket equation.
Definition Rocket.hpp:66
Scalar propellant_mass(const Scalar &delta_v, const Scalar &m0, const Scalar &Ve)
Calculates required propellant mass for a given Delta-V.
Definition Rocket.hpp:82

Altitude Compensation

Adjust thrust based on altitude (pressure):

using namespace vulcan::propulsion;
double F_vac = 50000.0; // 50 kN vacuum thrust
double P_atm = 101325.0; // Sea Level
double A_exit = 0.5; // Nozzle exit area
double F_sl = altitude_thrust(F_vac, P_atm, 0.0, A_exit);
Propulsion utilities for rocket, air-breathing, and electric systems.
Definition AirBreathing.hpp:5
Scalar altitude_thrust(const Scalar &F_vac, const Scalar &P_atm, double P_exit, double A_exit)
Calculates thrust adjusted for ambient pressure (altitude).
Definition AltitudeThrust.hpp:28

Air-Breathing

Estimate range using Breguet equation:

double V = 250.0;
double TSFC = 1.0e-4; // 1/s
double L_D = 15.0;
double W0 = 50000.0;
double W1 = 40000.0;
// Returns range in meters (if TSFC is 1/s)
double range = breguet_range(V, TSFC, L_D, W0, W1);
Definition AirBreathing.hpp:5
Scalar breguet_range(const Scalar &velocity, const Scalar &TSFC, const Scalar &L_D, const Scalar &W0, const Scalar &W1)
Calculates Breguet Range for jet aircraft.
Definition AirBreathing.hpp:44
Scalar range(const Vec3< Scalar > &r1, const Vec3< Scalar > &r2)
Definition FrameKinematics.hpp:178

Electric Propulsion

Model power-limited thrusters (e.g., Ion, Hall effect):

double Power = 5000.0; // 5 kW
double Ve = 30000.0; // 30 km/s
double efficiency = 0.6;
double Thrust = thrust_from_power(Power, Ve, efficiency);
double mdot = mass_flow_from_power(Power, Ve, efficiency);
Definition Electric.hpp:5
Scalar thrust_from_power(const Scalar &power, const Scalar &Ve, const Scalar &efficiency)
Calculates thrust for power-limited propulsion.
Definition Electric.hpp:20
Scalar mass_flow_from_power(const Scalar &power, const Scalar &Ve, const Scalar &efficiency)
Calculates mass flow rate for power-limited propulsion.
Definition Electric.hpp:37

Symbolic Compatibility

All functions are templated on Scalar and use janus:: math functions, making them compatible with casadi::MX for optimization problems constructed via Janus.

casadi::MX m_sym = casadi::MX::sym("m");
casadi::MX F = thrust_from_mdot(mdot_sym, Ve_sym);
Scalar thrust_from_mdot(const Scalar &mdot, const Scalar &Ve)
Calculates thrust from mass flow rate and effective exhaust velocity.
Definition Rocket.hpp:18