STAR
Cal STAR — firmware, DAQ server, and engine design
Loading...
Searching...
No Matches
engine.pipeline.config_schemas.RocketConfig Class Reference
Inheritance diagram for engine.pipeline.config_schemas.RocketConfig:
[legend]
Collaboration diagram for engine.pipeline.config_schemas.RocketConfig:
[legend]

Static Public Attributes

Optional airframe_mass = Field(default=None, gt=0, description="Airframe mass (fuselage, fins, nosecone, avionics, payload) - NO propulsion [kg]")
Optional engine_mass = Field(default=None, gt=0, description="Engine + plumbing mass (chamber, nozzle, injector, valves, ALL fittings & lines) [kg]")
Optional lox_tank_structure_mass = Field(default=None, gt=0, description="Empty LOX tank only (walls, no fittings) [kg]")
Optional fuel_tank_structure_mass = Field(default=None, gt=0, description="Empty fuel tank only (walls, no fittings) [kg]")
float engine_cm_offset = Field(default=0.15, ge=0, description="Height of engine+plumbing CM above nozzle exit [m]. Typical: 0.1-0.3m.")
Optional propulsion_dry_mass = Field(default=None, gt=0, description="COMPUTED: Total propulsion dry mass (engine + tanks) [kg]")
float propulsion_cm_offset = Field(default=0.3, description="COMPUTED: Propulsion system CM above nozzle exit [m]")
Optional copv_dry_mass = Field(default=None, gt=0, description="COPV tank structure mass (tank walls only, no pressurant gas) [kg]")
List inertia = Field(description="AIRFRAME inertia only (without motor/propulsion), relative to airframe CM [Ixx, Iyy, Izz] [kg·m²]. Motor inertia is added separately by RocketPy from propulsion_dry_mass.")
float radius = Field(gt=0, description="Rocket body radius (outer diameter / 2) [m]")
Optional rocket_length = Field(default=None, gt=0, description="Total rocket length from tail to nose tip [m]. Used for MoI estimation.")
float motor_position = Field(default=0.0, description="Nozzle exit position from rocket tail (z=0 at tail, positive toward nose) [m]")
Optional fins = Field(default=None, description="Fins configuration")
str nose_kind = Field(default="vonKarman", description="Nosecone profile (RocketPy): vonKarman | lvhaack | ogive | conical | …")
float nose_fineness_ratio = Field(default=4.5, gt=0, description="Nose length / body diameter (von Kármán ~4.5:1 is near-optimal transonic). Used when nose_length is unset.")
Optional nose_length = Field(default=None, gt=0, description="Explicit nosecone length [m]. Overrides nose_fineness_ratio when set.")
float avionics_payload_length_m = Field(default=4.0, ge=0, description="Length of avionics/payload/recovery section ABOVE the propulsion stack, before the nosecone [m].")
Optional drag_curve_power_off = Field(default=None, description="Axial Cd with the motor off, [[Mach, Cd], ...]. Replaces the build-up; needs drag_curve_power_on and drag_curve_source.")
Optional drag_curve_power_on = Field(default=None, description="Axial Cd while thrusting, [[Mach, Cd], ...]. Give the power-off table again if the source has only one.")
Optional drag_curve_source = Field(default=None, description="Where the drag tables came from: tool and version, file, test.")
float surface_roughness_m = Field(default=60e-6, ge=0, description="Skin roughness height for the drag build-up [m]. Default 60 um is OpenRocket's default finish, 'regular paint' (Niskanen 2013 table 3.2); 20 um smooth paint, 0 hydraulically smooth.")
float fin_thickness_m = Field(default=0.003, gt=0, description="Fin thickness for the drag build-up [m]. Default 3 mm is OpenRocket's default fin, not the drawing.")
Literal fin_profile = Field(default="square", description="Fin edge profile for the drag build-up (Niskanen 2013 sec. 3.4.4). Default 'square' is OpenRocket's default, not the drawing.")
Optional rail_button_upper_pos_m = Field(default=None, description="Forward rail button, distance from the tail [m]. With the lower button set, rail exit is when this one leaves the rail; unset, the full rail length is flown.")
Optional rail_button_lower_pos_m = Field(default=None, description="Aft rail button, distance from the tail [m].")
Optional mass = Field(default=None, gt=0, description="LEGACY: Airframe mass. Use airframe_mass instead.")
Optional cm_wo_motor = Field(default=None, description="LEGACY: CM without motor. Now auto-calculated from airframe_mass and propulsion positions.")
Optional dry_mass = Field(default=None, gt=0, description="LEGACY: Unused field.")
Optional motor_inertia = Field(default=None, description="LEGACY: Motor inertia. Now estimated from propulsion_dry_mass.")
Optional motor = Field(default=None, description="LEGACY: Motor config. Use propulsion_dry_mass instead.")

Protected Member Functions

 _drag_tables_complete (self)

Detailed Description

Rocket configuration for flight simulation.

NEW Mass Model (recommended):
- airframe_mass: Rocket body without propulsion (fuselage, fins, nosecone, avionics, payload)
- engine_mass: Engine + ALL plumbing (chamber, nozzle, injector, valves, fittings, lines)
- lox_tank_structure_mass: Empty LOX tank only (walls, no fittings)
- fuel_tank_structure_mass: Empty fuel tank only (walls, no fittings)
- copv_dry_mass: Empty COPV tank only (walls, no pressurant gas)
- engine_cm_offset: Height of engine CM above nozzle exit
- rocket_length: Total rocket length (tail to nose tip) for MoI estimation

propulsion_dry_mass and propulsion_cm_offset are COMPUTED from the above.

Total dry mass = airframe_mass + engine_mass + lox_tank_structure_mass + fuel_tank_structure_mass + copv_dry_mass
Total wet mass = dry mass + lox_tank.mass + fuel_tank.mass (propellants) + press_tank.initial_gas_mass

LEGACY fields (mass, motor.dry_mass) still supported for backward compatibility.

Definition at line 1488 of file config_schemas.py.

Member Function Documentation

◆ _drag_tables_complete()

engine.pipeline.config_schemas.RocketConfig._drag_tables_complete ( self)
protected

Definition at line 1549 of file config_schemas.py.

Member Data Documentation

◆ airframe_mass

Optional engine.pipeline.config_schemas.RocketConfig.airframe_mass = Field(default=None, gt=0, description="Airframe mass (fuselage, fins, nosecone, avionics, payload) - NO propulsion [kg]")
static

Definition at line 1508 of file config_schemas.py.

◆ avionics_payload_length_m

float engine.pipeline.config_schemas.RocketConfig.avionics_payload_length_m = Field(default=4.0, ge=0, description="Length of avionics/payload/recovery section ABOVE the propulsion stack, before the nosecone [m].")
static

Definition at line 1533 of file config_schemas.py.

◆ cm_wo_motor

Optional engine.pipeline.config_schemas.RocketConfig.cm_wo_motor = Field(default=None, description="LEGACY: CM without motor. Now auto-calculated from airframe_mass and propulsion positions.")
static

Definition at line 1565 of file config_schemas.py.

◆ copv_dry_mass

Optional engine.pipeline.config_schemas.RocketConfig.copv_dry_mass = Field(default=None, gt=0, description="COPV tank structure mass (tank walls only, no pressurant gas) [kg]")
static

Definition at line 1519 of file config_schemas.py.

◆ drag_curve_power_off

Optional engine.pipeline.config_schemas.RocketConfig.drag_curve_power_off = Field(default=None, description="Axial Cd with the motor off, [[Mach, Cd], ...]. Replaces the build-up; needs drag_curve_power_on and drag_curve_source.")
static

Definition at line 1539 of file config_schemas.py.

◆ drag_curve_power_on

Optional engine.pipeline.config_schemas.RocketConfig.drag_curve_power_on = Field(default=None, description="Axial Cd while thrusting, [[Mach, Cd], ...]. Give the power-off table again if the source has only one.")
static

Definition at line 1540 of file config_schemas.py.

◆ drag_curve_source

Optional engine.pipeline.config_schemas.RocketConfig.drag_curve_source = Field(default=None, description="Where the drag tables came from: tool and version, file, test.")
static

Definition at line 1541 of file config_schemas.py.

◆ dry_mass

Optional engine.pipeline.config_schemas.RocketConfig.dry_mass = Field(default=None, gt=0, description="LEGACY: Unused field.")
static

Definition at line 1566 of file config_schemas.py.

◆ engine_cm_offset

float engine.pipeline.config_schemas.RocketConfig.engine_cm_offset = Field(default=0.15, ge=0, description="Height of engine+plumbing CM above nozzle exit [m]. Typical: 0.1-0.3m.")
static

Definition at line 1512 of file config_schemas.py.

◆ engine_mass

Optional engine.pipeline.config_schemas.RocketConfig.engine_mass = Field(default=None, gt=0, description="Engine + plumbing mass (chamber, nozzle, injector, valves, ALL fittings & lines) [kg]")
static

Definition at line 1509 of file config_schemas.py.

◆ fin_profile

Literal engine.pipeline.config_schemas.RocketConfig.fin_profile = Field(default="square", description="Fin edge profile for the drag build-up (Niskanen 2013 sec. 3.4.4). Default 'square' is OpenRocket's default, not the drawing.")
static

Definition at line 1544 of file config_schemas.py.

◆ fin_thickness_m

float engine.pipeline.config_schemas.RocketConfig.fin_thickness_m = Field(default=0.003, gt=0, description="Fin thickness for the drag build-up [m]. Default 3 mm is OpenRocket's default fin, not the drawing.")
static

Definition at line 1543 of file config_schemas.py.

◆ fins

Optional engine.pipeline.config_schemas.RocketConfig.fins = Field(default=None, description="Fins configuration")
static

Definition at line 1526 of file config_schemas.py.

◆ fuel_tank_structure_mass

Optional engine.pipeline.config_schemas.RocketConfig.fuel_tank_structure_mass = Field(default=None, gt=0, description="Empty fuel tank only (walls, no fittings) [kg]")
static

Definition at line 1511 of file config_schemas.py.

◆ inertia

List engine.pipeline.config_schemas.RocketConfig.inertia = Field(description="AIRFRAME inertia only (without motor/propulsion), relative to airframe CM [Ixx, Iyy, Izz] [kg·m²]. Motor inertia is added separately by RocketPy from propulsion_dry_mass.")
static

Definition at line 1522 of file config_schemas.py.

◆ lox_tank_structure_mass

Optional engine.pipeline.config_schemas.RocketConfig.lox_tank_structure_mass = Field(default=None, gt=0, description="Empty LOX tank only (walls, no fittings) [kg]")
static

Definition at line 1510 of file config_schemas.py.

◆ mass

Optional engine.pipeline.config_schemas.RocketConfig.mass = Field(default=None, gt=0, description="LEGACY: Airframe mass. Use airframe_mass instead.")
static

◆ motor

Optional engine.pipeline.config_schemas.RocketConfig.motor = Field(default=None, description="LEGACY: Motor config. Use propulsion_dry_mass instead.")
static

Definition at line 1568 of file config_schemas.py.

◆ motor_inertia

Optional engine.pipeline.config_schemas.RocketConfig.motor_inertia = Field(default=None, description="LEGACY: Motor inertia. Now estimated from propulsion_dry_mass.")
static

Definition at line 1567 of file config_schemas.py.

◆ motor_position

float engine.pipeline.config_schemas.RocketConfig.motor_position = Field(default=0.0, description="Nozzle exit position from rocket tail (z=0 at tail, positive toward nose) [m]")
static

Definition at line 1525 of file config_schemas.py.

◆ nose_fineness_ratio

float engine.pipeline.config_schemas.RocketConfig.nose_fineness_ratio = Field(default=4.5, gt=0, description="Nose length / body diameter (von Kármán ~4.5:1 is near-optimal transonic). Used when nose_length is unset.")
static

Definition at line 1531 of file config_schemas.py.

◆ nose_kind

str engine.pipeline.config_schemas.RocketConfig.nose_kind = Field(default="vonKarman", description="Nosecone profile (RocketPy): vonKarman | lvhaack | ogive | conical | …")
static

Definition at line 1530 of file config_schemas.py.

◆ nose_length

Optional engine.pipeline.config_schemas.RocketConfig.nose_length = Field(default=None, gt=0, description="Explicit nosecone length [m]. Overrides nose_fineness_ratio when set.")
static

Definition at line 1532 of file config_schemas.py.

◆ propulsion_cm_offset

float engine.pipeline.config_schemas.RocketConfig.propulsion_cm_offset = Field(default=0.3, description="COMPUTED: Propulsion system CM above nozzle exit [m]")
static

Definition at line 1516 of file config_schemas.py.

◆ propulsion_dry_mass

Optional engine.pipeline.config_schemas.RocketConfig.propulsion_dry_mass = Field(default=None, gt=0, description="COMPUTED: Total propulsion dry mass (engine + tanks) [kg]")
static

Definition at line 1515 of file config_schemas.py.

◆ radius

float engine.pipeline.config_schemas.RocketConfig.radius = Field(gt=0, description="Rocket body radius (outer diameter / 2) [m]")
static

◆ rail_button_lower_pos_m

Optional engine.pipeline.config_schemas.RocketConfig.rail_button_lower_pos_m = Field(default=None, description="Aft rail button, distance from the tail [m].")
static

Definition at line 1546 of file config_schemas.py.

◆ rail_button_upper_pos_m

Optional engine.pipeline.config_schemas.RocketConfig.rail_button_upper_pos_m = Field(default=None, description="Forward rail button, distance from the tail [m]. With the lower button set, rail exit is when this one leaves the rail; unset, the full rail length is flown.")
static

Definition at line 1545 of file config_schemas.py.

◆ rocket_length

Optional engine.pipeline.config_schemas.RocketConfig.rocket_length = Field(default=None, gt=0, description="Total rocket length from tail to nose tip [m]. Used for MoI estimation.")
static

◆ surface_roughness_m

float engine.pipeline.config_schemas.RocketConfig.surface_roughness_m = Field(default=60e-6, ge=0, description="Skin roughness height for the drag build-up [m]. Default 60 um is OpenRocket's default finish, 'regular paint' (Niskanen 2013 table 3.2); 20 um smooth paint, 0 hydraulically smooth.")
static

Definition at line 1542 of file config_schemas.py.


The documentation for this class was generated from the following file: