Skip to main content

FinOutline

Struct FinOutline 

Source
pub struct FinOutline { /* private fields */ }
Expand description

A fin’s outline in its own plane, for supersonic linear theory: a simple polygon of [x, y] vertices, m, with x aft of the root leading edge and y out from the root, closed along the root.

Serialize-only: an outline is built from a planform by FinOutline::from_planform, which checks it.

Implementations§

Source§

impl FinOutline

Source

pub fn points_m(&self) -> &[[f64; 2]]

The vertices, m, from the root leading edge [0, 0] around to the root trailing edge.

Source

pub fn tip_leading_edge_m(&self) -> [f64; 2]

The tip’s leading edge, m: the foremost point at the full span, where the tip’s Mach cone starts.

Source

pub fn tip_chord_m(&self) -> f64

The tip’s chord, m: the outline’s length along the flow at the full span (0 for a pointed tip).

Source

pub fn area_m2(&self) -> f64

The polygon’s area, m².

Source

pub fn centroid_m(&self) -> f64

Its area centroid, m aft of the root leading edge.

Source

pub fn from_planform(planform: &FinPlanform) -> Result<Self, AeroError>

The outline of a planform: a trapezoid’s four corners, a freeform fin’s own points, and an ellipse as a polygon of 256 sides.

§Errors

The planform’s own validation errors, AeroError::Unsupported for a planform this model doesn’t know, and AeroError::Domain for an outline without area.

Source

pub fn tip_cone(&self, beta: f64) -> (f64, f64)

The area, m², and its centroid, m aft of the root leading edge, of the part of the fin inside the Mach cone from the tip’s leading edge at β = √(M² − 1): aft of the Mach line x − x_T = β (s − y), which runs inboard from the tip at the Mach angle atan(1/β).

The root is a reflection plane, so a cone that crosses it comes back: the part of the cone over the fin’s mirror image counts too, as the mirror fin’s cone crossing onto this one.

beta must be positive and finite; FinAero::loading checks the Mach number it comes from.

Source

pub fn supersonic(&self, beta: f64, reference_area_m2: f64) -> (f64, f64)

One fin’s supersonic normal-force slope per radian, on reference_area_m2, and its center of pressure, m aft of the root leading edge, at β = √(M² − 1).

Linear (Ackeret) theory for a flat plate: each surface carries the pressure coefficient ∓2α/β, so the loading is 4α/β over the fin, uniform along every chord. Inside the Mach cone from the tip’s leading edge it is halved, as Barrowman 1967 (appendix A, p. 84) does for each strip; for a rectangular tip that is linear theory’s exact loss, C_Lα = (4/β)(1 − 1/(2βA)). The root is a reflection plane (the body). So (C_Nα)₁ = (4/β)(A_fin − A_cone/2)/A_ref, and the CP is the loading’s centroid.

beta must be positive and finite, as for FinOutline::tip_cone.

Source§

impl FinOutline

Source

pub fn axis_moments(&self, body_radius_m: f64) -> (f64, f64)

The first and second moments of the fin’s area about the body axis, ∫ξ dA (m³) and ∫ξ² dA (m⁴), with ξ = r_t + y the distance from the axis and r_t the body radius at the fins. For a fin on a pod, r_t is how far its root lies along its span from the rocket’s axis, which may be negative.

Source

pub fn tip_cone_axis_moments(&self, beta: f64, body_radius_m: f64) -> (f64, f64)

FinOutline::axis_moments of the part of the fin inside the tip’s Mach cone at β = √(M² − 1), with the mirror fin’s cone crossing the root, as FinOutline::tip_cone takes it.

beta must be positive and finite, as for FinOutline::tip_cone.

Trait Implementations§

Source§

impl Clone for FinOutline

Source§

fn clone(&self) -> FinOutline

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for FinOutline

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl PartialEq for FinOutline

Source§

fn eq(&self, other: &FinOutline) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 (const: unstable) · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl Serialize for FinOutline

Source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more
Source§

impl StructuralPartialEq for FinOutline

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> DynClone for T
where T: Clone,

Source§

fn __clone_box(&self, _: Private) -> *mut ()

Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.