Parametric Geometry (vehicle-design/conceptual/openvsp-geometry)
Use when the task is parametric aircraft geometry modeling in the
spirit of OpenVSP: build the wing, fuselage, tail and nacelle
geometry from user parameters, then derive the areas, volumes and
centroids that feed sizing and mass estimation.
Domain quick reference
- Wing planform: trapezoid defined by span b, root chord c_r, tip
chord c_t, leading edge sweep, dihedral and twist.
- Derived wing quantities: area S = (b/2)(c_r + c_t), aspect ratio
AR = b^2/S, taper ratio lambda = c_t/c_r, mean geometric chord,
mean aerodynamic chord (MAC) and its span station.
- Fuselage: body of revolution through stationwise radii; volume and
wetted area come from the station integration.
- Wetted areas: lifting surfaces use two sides plus a thickness
allowance; the fuselage uses the surface of revolution; nacelles
use a cylinder with a hemispherical cap.
- Component volumes and centroids are the mass-property-relevant
outputs; wetted-to-planform ratios support drag buildup.
Workflow
- Collect the wing parameters (span, root and tip chord, sweep,
dihedral, twist) and call wing_planform.
- Define the fuselage as stationwise (x, r) pairs and call
fuselage_from_stations (or use fuselage_cylinder for a plain
cylinder).
- Add tail surfaces as small trapezoid wings and nacelles as
(length, diameter) pairs.
- Assemble everything with build_geometry to get the geometry
parameter table and the derived quantities.
- Hand the derived areas, volumes and centroids to the sizing and
mass properties leaves.
Geometry formulas
- Trapezoid area: S = (b/2)(c_r + c_t).
- Aspect ratio: AR = b^2/S.
- Taper ratio: lambda = c_t/c_r.
- Mean geometric chord: mgc = (c_r + c_t)/2.
- Mean aerodynamic chord (trapezoid): mac = (2/3) c_r
(1 + lambda + lambda^2)/(1 + lambda).
- MAC span station: y_mac = (b/6)(1 + 2 lambda)/(1 + lambda).
- Sweep conversion: tan(Lambda_c4) = tan(Lambda_LE) - (c_r - c_t)/(2b).
- Wetted area of a lifting surface: S_wet = 2 S (1 + 0.2 t/c).
- Fuselage segment (truncated cone): volume
V = pi dx (r1^2 + r1 r2 + r2^2)/3, wetted area
S_wet = 2 pi r_avg dx sqrt(1 + (dr/dx)^2).
- Nacelle (cylinder with hemispherical cap): S_wet = pi D L,
V = pi D^2 L/4 - pi D^3/24.
- Component centroid: lifting surfaces sit at the MAC station,
mid-chord, offset in z by y_mac tan(dihedral); the fuselage
centroid follows from the station volume integration.
Worked example
Transport-class geometry: wing b = 30 m, c_r = 4.5 m, c_t = 1.2 m,
LE sweep 28 deg. Then S = 85.5 m^2, AR = 10.5, lambda = 0.267,
mac = 3.31 m at y_mac = 6.37 m, quarter chord sweep 24.5 deg.
Fuselage stations [(0, 0.9), (12, 1.9), (24, 1.9), (34, 0.7)] give
volume ~ 300 m^3 and wetted area ~ 370 m^2; the wing wetted area is
~ 2 x 85.5 x 1.024 = 175 m^2 at t/c = 0.12. These derived quantities
feed the weight and drag buildup.
Pitfalls
- Tip chord larger than root chord (negative taper is rejected).
- Zero or negative spans, chords, radii or lengths.
- Fuselage stations that do not advance in x.
- Nacelle length shorter than the cap radius.
- Confusing wetted area with planform area: lifting surfaces are
wetted on both sides.
Behavior contract (gate 3)
The geometry logic is exercised by the gate 3 contract test:
scripts/test_openvsp_geometry.py against
scripts/openvsp_geometry_logic.py (stdlib unittest, offline). Run:
python3 scripts/test_openvsp_geometry.py
Compliance
- Standards referenced, not reproduced: FAR-25 and CS-25 appear as
reference-only context in standards-map.yaml; the geometry methods
here are common conceptual design practice, summary-only.
- compliance: STANDARDS-REF, gated: false.
1---2name: openvsp-geometry3description: Use when you must build the parametric aircraft geometry in the OpenVSP style for conceptual design: define the wing planform from the span, the root and tip chords, the sweep, the dihedral and the twist, define the fuselage from its length and stationwise radii, and add the tail surfaces and nacelles, then compute the derived geometry quantities: the wing area, the aspect ratio, the mean aerodynamic chord, the wetted areas, the component volumes and the component centroids that feed the mass properties model. Produces the geometry parameter table and the derived quantities that gate sizing and mass estimation. Trigger: parametric geometry, wing planform, mean aerodynamic chord, wetted area, component volume.4license: Apache-2.05---67# Parametric Geometry (vehicle-design/conceptual/openvsp-geometry)89Use when the task is parametric aircraft geometry modeling in the10spirit of OpenVSP: build the wing, fuselage, tail and nacelle11geometry from user parameters, then derive the areas, volumes and12centroids that feed sizing and mass estimation.1314## Domain quick reference1516- Wing planform: trapezoid defined by span b, root chord c_r, tip17 chord c_t, leading edge sweep, dihedral and twist.18- Derived wing quantities: area S = (b/2)(c_r + c_t), aspect ratio19 AR = b^2/S, taper ratio lambda = c_t/c_r, mean geometric chord,20 mean aerodynamic chord (MAC) and its span station.21- Fuselage: body of revolution through stationwise radii; volume and22 wetted area come from the station integration.23- Wetted areas: lifting surfaces use two sides plus a thickness24 allowance; the fuselage uses the surface of revolution; nacelles25 use a cylinder with a hemispherical cap.26- Component volumes and centroids are the mass-property-relevant27 outputs; wetted-to-planform ratios support drag buildup.2829## Workflow30311. Collect the wing parameters (span, root and tip chord, sweep,32 dihedral, twist) and call wing_planform.332. Define the fuselage as stationwise (x, r) pairs and call34 fuselage_from_stations (or use fuselage_cylinder for a plain35 cylinder).363. Add tail surfaces as small trapezoid wings and nacelles as37 (length, diameter) pairs.384. Assemble everything with build_geometry to get the geometry39 parameter table and the derived quantities.405. Hand the derived areas, volumes and centroids to the sizing and41 mass properties leaves.4243## Geometry formulas4445- Trapezoid area: S = (b/2)(c_r + c_t).46- Aspect ratio: AR = b^2/S.47- Taper ratio: lambda = c_t/c_r.48- Mean geometric chord: mgc = (c_r + c_t)/2.49- Mean aerodynamic chord (trapezoid): mac = (2/3) c_r50 (1 + lambda + lambda^2)/(1 + lambda).51- MAC span station: y_mac = (b/6)(1 + 2 lambda)/(1 + lambda).52- Sweep conversion: tan(Lambda_c4) = tan(Lambda_LE) - (c_r - c_t)/(2b).53- Wetted area of a lifting surface: S_wet = 2 S (1 + 0.2 t/c).54- Fuselage segment (truncated cone): volume55 V = pi dx (r1^2 + r1 r2 + r2^2)/3, wetted area56 S_wet = 2 pi r_avg dx sqrt(1 + (dr/dx)^2).57- Nacelle (cylinder with hemispherical cap): S_wet = pi D L,58 V = pi D^2 L/4 - pi D^3/24.59- Component centroid: lifting surfaces sit at the MAC station,60 mid-chord, offset in z by y_mac tan(dihedral); the fuselage61 centroid follows from the station volume integration.6263## Worked example6465Transport-class geometry: wing b = 30 m, c_r = 4.5 m, c_t = 1.2 m,66LE sweep 28 deg. Then S = 85.5 m^2, AR = 10.5, lambda = 0.267,67mac = 3.31 m at y_mac = 6.37 m, quarter chord sweep 24.5 deg.68Fuselage stations [(0, 0.9), (12, 1.9), (24, 1.9), (34, 0.7)] give69volume ~ 300 m^3 and wetted area ~ 370 m^2; the wing wetted area is70~ 2 x 85.5 x 1.024 = 175 m^2 at t/c = 0.12. These derived quantities71feed the weight and drag buildup.7273## Pitfalls7475- Tip chord larger than root chord (negative taper is rejected).76- Zero or negative spans, chords, radii or lengths.77- Fuselage stations that do not advance in x.78- Nacelle length shorter than the cap radius.79- Confusing wetted area with planform area: lifting surfaces are80 wetted on both sides.8182## Behavior contract (gate 3)8384The geometry logic is exercised by the gate 3 contract test:85scripts/test_openvsp_geometry.py against86scripts/openvsp_geometry_logic.py (stdlib unittest, offline). Run:87python3 scripts/test_openvsp_geometry.py8889## Compliance9091- Standards referenced, not reproduced: FAR-25 and CS-25 appear as92 reference-only context in standards-map.yaml; the geometry methods93 here are common conceptual design practice, summary-only.94- compliance: STANDARDS-REF, gated: false.