pub struct FinAero { /* private fields */ }Expand description
One fin’s normal force through the speed regimes: its geometry and outline, and the two ends of its transonic join, computed once.
- Subsonic,
M ≤ 0.8: Diederich’s slope with Prandtl–Glauert (FinGeometry::single_fin_slope) at the quarter mean aerodynamic chord. - Supersonic, from
M_s = max(1.2, 1/cos Γ_L, 1/cos Γ_T, √(1 + 1/A²), √(1 + (c_t/2s)²)): linear theory (FinOutline::supersonic). Its strips need supersonic leading and trailing edges, whose Mach numbers square to the edge,M cos Γ_LandM cos Γ_T, are past 1 (NACA TN 2114’s case). Its half-load tip cone holds while the mirror fin’s cone stays off this fin’s tip,β ≥ c_t/(2s)withc_tthe tip chord, and whileβA ≥ 1, withA = 2s²/A_finthe aspect ratio of the fin and its mirror image (for a rectangle the two agree, and the slope peaks there at2A). So a swept, stubby or inverse-tapered fin starts later than Mach 1.2. - Transonic, between: slope and CP each linear in
Mbetween their values at the two ends. No method in the sources gives this region in closed form (MIL-HDBK-762 reads it from transonic-similarity charts, pp. 5-104–5-105); the join keeps both continuous, with the slope’s peak atM_s, where linear theory takes over.
Implementations§
Source§impl FinAero
impl FinAero
Sourcepub fn geometry(&self) -> &FinGeometry
pub fn geometry(&self) -> &FinGeometry
The fin’s subsonic geometry.
Sourcepub fn outline(&self) -> &FinOutline
pub fn outline(&self) -> &FinOutline
Its outline.
Sourcepub fn reference_area_m2(&self) -> f64
pub fn reference_area_m2(&self) -> f64
The reference area of the slopes, m².
Sourcepub fn supersonic_mach(&self) -> f64
pub fn supersonic_mach(&self) -> f64
Where supersonic linear theory starts, M_s. It can pass Mach 5 for a stubby or a very
swept fin (a strake 0.5 m long and 0.02 m tall starts at Mach 12.5); the fin’s slope and CP
then stay on the join toward that value up to the normal force’s limit, and linear theory
is never used.
Sourcepub fn new(
planform: &FinPlanform,
reference_area_m2: f64,
) -> Result<Self, AeroError>
pub fn new( planform: &FinPlanform, reference_area_m2: f64, ) -> Result<Self, AeroError>
A planform’s normal force on reference_area_m2.
§Errors
As FinGeometry::from_planform and FinOutline::from_planform, and
AeroError::Domain for a non-positive reference area.
Sourcepub fn loading(&self, mach: f64) -> Result<FinLoading, AeroError>
pub fn loading(&self, mach: f64) -> Result<FinLoading, AeroError>
The fin’s slope and CP at mach.
§Errors
AeroError::Mach outside [0, 5) (crate::model::NORMAL_FORCE_MACH_LIMIT).
Source§impl FinAero
impl FinAero
Sourcepub fn roll(
&self,
mach: f64,
body_radius_m: f64,
reference_diameter_m: f64,
) -> Result<FinRoll, AeroError>
pub fn roll( &self, mach: f64, body_radius_m: f64, reference_diameter_m: f64, ) -> Result<FinRoll, AeroError>
One fin’s roll forcing and damping at mach on a body of radius body_radius_m, on the
reference area and the reference diameter reference_diameter_m, by strip theory
(Barrowman 1967 §3.13–3.14 and appendix A; Niskanen 2009 §3.3):
- Subsonic, to Mach 0.8: the fin’s lift at its mean aerodynamic chord,
C_lδ = (C_Nα)₁ (r_t + y_MAC)/d(Barrowman eq. 3-35, Niskanen eq. 3.66), and each strip at the local incidence−pξ/Vwith the fin’s own slope per unit area,a = (C_Nα)₁ A_ref/A_fin:C_lp = −2a ∫ξ² dA/(A_ref d²)(Barrowman eq. 3-40–3-48, Niskanen eq. 3.67–3.70). Barrowman’s text writes the airfoil’sC_Nα0fora; his computed curve for the Basic Finner, −34.2 at Mach 0 (Fig. 5-7), is this, −33.5, not the airfoil’s −69 (the roll decision, ADR-031). - Supersonic, from
M_s(FinAero::supersonic_mach): the load4α/βofFinOutline::supersonic, halved in the tip’s Mach cone,C_lδ = (4/β)(∫ξ dA − ½∫_cone ξ dA)/(A_ref d)andC_lp = −(8/β)(∫ξ² dA − ½∫_cone ξ² dA)/(A_ref d²)(Barrowman appendix A, first order). - Transonic, between: each linear in
M, as the fin’s slope is.
ξ = r_t + y is the distance from the body axis.
§Errors
AeroError::Mach outside [0, 5), as FinAero::loading, and AeroError::Domain
for a negative body radius or a non-positive reference diameter.
Sourcepub fn roll_terms(
&self,
body_radius_m: f64,
reference_diameter_m: f64,
) -> Result<FinRollTerms, AeroError>
pub fn roll_terms( &self, body_radius_m: f64, reference_diameter_m: f64, ) -> Result<FinRollTerms, AeroError>
The terms of FinAero::roll that don’t change with Mach, on a body of radius
body_radius_m and the reference diameter reference_diameter_m.
§Errors
AeroError::Domain for a negative body radius or a non-positive reference diameter.