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.
- Drag
Override - 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): - Inertia
Override - 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:
- Parallel
Stage - Where a parallel stage hangs: beside a body tube of an earlier axial stage, as a set of pods.
- Placed
Component - A component resolved into place.
- Placed
Stage - 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.
- Unresolvable
Radius - An automatic body radius that has nothing to take: where it is, and which radius
(
Rocket::unresolvable_body_radii).
Enums§
- Auto
Dimension - 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.
- Reference
Diameter - 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.