Skip to main content

Module tree

Module tree 

Source
Expand description

The design tree: a rocket of stages, each a stack of body components from the nose aft with parts attached to them, and how the tree resolves into placed parts and the rocket’s structural mass properties.

Stations and the body origin. A station s is a distance aft of the nose tip, the way design files state positions. The body frame’s origin is the nose tip (z_ref = 0 in docs/physics/frames.md), so station s is body z = −s. A part’s own frame has its origin at its forward end (crate::mass), so a part whose forward end is at station s is translated by (0, 0, −s).

Body components (nose cones, body tubes and transitions) are the stages’ component lists. They stack: each starts where the one before it ends, through every stage, from s = 0. Shoulders don’t count toward the stack.

Parallel stages (ParallelStage) don’t stack: a stage strapped beside a body tube of an axial stage, such as a set of boosters, is laid out as a pod set on that tube (PodSet), its body components each pod’s stack, while its parts and their mass stay its own stage’s, so a separation after the stage it hangs on drops it (the decision record on parallel stages, ADR-171).

Attached parts are children of a component, placed along it by a Position. Fins, tube fins, launch lugs and rail buttons attach to the outside of a body tube and take its outer radius. Inner tubes, centering rings, mass components and recovery parts go inside a body component or an inner tube. Only inner tubes have children of their own. Radial offsets are always measured from the body axis.

Automatic radii (AutoDimension) are taken from neighbours and parents when the tree resolves; a stored value for an automatic dimension is ignored.

Mass. A component’s own mass properties come from its part’s geometry, placed. Overrides (Overrides) replace them, or the component together with everything attached to it; a stage’s overrides replace the whole stage. Overrides nested deeper apply first. Motors are never part of the structure (crate::config).

See docs/physics/design.md and the decision record on the design tree, ADR-007.

Structs§

Component
A node of the design tree: a part, where it sits, and what hangs off it.
DragOverride
A drag coefficient stated in place of the one a component’s geometry gives: OpenRocket’s drag-coefficient override (<overridecd>, <overridesubcomponentscd>), as OpenRocket 24.12 flies it, measured on probe designs (validation/oracles/openrocket/drag_override.py, ADR-167):
InertiaOverride
An inertia tensor about the center of mass in body axes, kg·m². The off-diagonal entries are the tensor’s, I_xy = −∫ x y dm (crate::mass); they default to zero.
Layout
A design resolved into placed parts, with its structural mass properties (no motors).
Overrides
Values that replace the mass properties computed from geometry. Each applies in turn:
ParallelStage
Where a parallel stage hangs: beside a body tube of an earlier axial stage, as a set of pods.
PlacedComponent
A component resolved into place.
PlacedStage
A stage resolved into place.
Rocket
A rocket design: its stages, how its reference diameter is chosen, and its motor configurations.
Stage
A stage: body components stacked from its forward end aft, on the airframe’s axis or, for a parallel stage, along each of its pods.
UnresolvableRadius
An automatic body radius that has nothing to take: where it is, and which radius (Rocket::unresolvable_body_radii).

Enums§

AutoDimension
A dimension resolved from the tree instead of stored in the part.
Part
A part in the tree. Serialized as an object with one key, the part’s kind.
Position
Where an attached part sits along its parent. Offsets are positive aft.
ReferenceDiameter
How the reference diameter (for aerodynamic coefficients) is chosen.

Constants§

LENGTH_TOLERANCE_M
Slack when comparing lengths that should agree, m: far below any build tolerance and far above the round-off in stations summed from millimeter inputs.
MAX_DEPTH
How many levels a body component and the parts nested in it may span, the body component being the first: inner tubes in inner tubes far beyond any real rocket, and shallow enough that resolving never exhausts a small (wasm) stack.