Skip to main content

PressureDragCurve

Struct PressureDragCurve 

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

A nose’s, shoulder’s or step’s pressure-drag coefficient against Mach number, on its increase in area: the value at rest, eq. 3.87’s fit, and appendix B’s transonic method from M_L (the module docs). It serializes what it was built from, not its internals.

Implementations§

Source§

impl PressureDragCurve

Source

pub fn step() -> Self

A step up in radius, or a body’s bare front face: a flat face, the blunt cylinder’s 0.85 q_stag/q at every Mach number (eq. B.1–B.2), 0.85 at rest. Eq. 3.86 “does not take into account the effect of extremely blunt nose cones (length less than half of the diameter)” (Niskanen 2009 p. 47), and a step has no length.

Source

pub fn new( shape: NoseShape, fineness_ratio: f64, joint_angle_rad: f64, ) -> Result<Self, AeroError>

The curve of a nose or shoulder of shape, fineness ratio f = l/(d_aft − d_fore) and joint angle joint_angle_rad at its aft end (eq. 3.86’s φ).

  • A cone takes eq. B.4–B.6, and its value at rest from φ (for a cone nose, φ = ε).
  • An ogive takes the cone of the same fineness times eq. B.8’s factor, κ the reciprocal of its radius ratio.
  • An ellipsoid takes Hoerner’s measured forebody pressure drag below Mach 0.8 (ellipsoid_subsonic_pressure_drag), or eq. 3.86’s value at rest where that is more, Stoney’s ellipsoid scaled by eq. B.9 from its first point, Mach 1.2, and a straight line between (ADR-173, a blunt ellipsoid’s measured drag).
  • The other shapes interpolate Stoney’s fineness-3 curves linearly in their parameter, then scale by eq. B.9 (Niskanen p. 108: “If data for a particular parameter value is missing, interpolate”). A power series xⁿ runs through the blunt cylinder (n = 0), x^¼, x^½, x^¾ and the 3:1 cone (n = 1); a parabolic series through the cone (K′ = 0) and the ½, ¾ and full parabolas; a Haack series between von Kármán (C = 0) and L-V Haack (C = ⅓). M_L is the first Mach number both ends’ curves have.

Cones and ogives below fineness 1 scale by eq. B.9’s form between a flat face at fineness 0 and their closed form at fineness 1, from Mach 0.8, because the closed form passes a flat face’s drag as the cone flattens. A zero fineness ratio is a step: PressureDragCurve::step whatever the shape.

§Errors

AeroError::Domain for a negative or non-finite fineness ratio, a joint angle outside [0, π/2], or a power-series exponent, parabolic parameter or Haack parameter outside [0, 1], [0, 1] or [0, ⅓]; AeroError::Unsupported for an ogive whose radius ratio isn’t a finite number of at least 1 (a bulged secant ogive has one below 1) or a Haack series above C = ⅓, where no data reaches, and for a shape this model doesn’t know.

Source

pub fn rest_coefficient(&self) -> f64

The value at rest: eq. 3.86’s 0.8 sin² φ, or for an ellipsoid, Hoerner’s measured value where it is more (ADR-173, a blunt ellipsoid’s measured drag).

Source

pub fn transonic_lower_bound(&self) -> f64

M_L, where appendix B’s transonic method takes over from eq. 3.87; 0 for an ellipsoid, whose own curve covers every Mach number.

Source

pub fn coefficient(&self, mach: f64) -> Result<f64, AeroError>

The coefficient at mach, on the increase in area.

§Errors

AeroError::Domain for a negative or non-finite Mach number.

Trait Implementations§

Source§

impl Clone for PressureDragCurve

Source§

fn clone(&self) -> PressureDragCurve

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 Copy for PressureDragCurve

Source§

impl Debug for PressureDragCurve

Source§

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

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

impl PartialEq for PressureDragCurve

Source§

fn eq(&self, other: &PressureDragCurve) -> 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 PressureDragCurve

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 PressureDragCurve

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.