Skip to main content

ReductionTurns

Struct ReductionTurns 

Source
#[non_exhaustive]
pub struct ReductionTurns { pub crossing_rad: f64, pub crossing_residual_p0: f64, pub balance_rad: f64, pub balance_residual_p0_per_m: f64, pub crossing_loading_gap_per_rad: f64, }
Expand description

The two turns that bound where the second-order method’s exponential form does not hold at a corner behind a body (flare_reduction_turns_rad).

Fields (Non-exhaustive)§

This struct is marked as non-exhaustive
Non-exhaustive structs could have additional fields added in future. Therefore, non-exhaustive structs cannot be constructed in external crates using the traditional Struct { .. } syntax; cannot be matched against without a wildcard ..; and struct update syntax will not work.
§crossing_rad: f64

The turn whose pressure just behind the corner lands exactly on its tangent cone’s, p₂ = p_c. η has a pole here, because eq. 9 divides by that gap.

§crossing_residual_p0: f64

What the crossing’s solution left behind: p₂ − p_c there, in units of the free stream’s pressure. Read it before trusting the turn. How small it can be made is the tangent cone’s accuracy, not the solver’s: below SLENDER_CONE_RAD the cone flow is slender-cone theory’s closed form and this closes to the last bits of an f64, while above it the cone flow is an integration and what is left is that integration’s own.

§balance_rad: f64

The turn whose own compression exactly cancels the pressure gradient the body ahead delivers to the corner, (∂p/∂s)₂ = 0 (TN 3527 eq. 4). η is zero here, so the method is already the generalized one.

§balance_residual_p0_per_m: f64

What the balance’s solution left behind: (∂p/∂s)₂ there, p₀ per m of axial distance.

§crossing_loading_gap_per_rad: f64

Λ₂ − Λ_c at Self::crossing_rad, per radian of angle of attack: the whole size of the step the crossing leaves, before it is integrated over the element that holds it.

At the crossing η has a pole, and the two sides of it take the two constants eq. 19 relaxes between: the side the method still owns sheds the corner’s loading onto its tangent cone’s at once (Λ_c = tan δ₂ (dC_N/dα)_tc), and the reduced side holds the corner’s (Λ₂ = (λ₂/λ₁) Λ₁). Both are constant along a conical flare, so eq. 19’s C_Nα = (2π/A_ref) ∫ Λ r dx integrates a constant and the step in the body’s slope is

ΔC_Nα = (2π/A_ref) (Λ₂ − Λ_c) · ½(r_fore + r_aft) · L

for a flare of length L between those radii. It is exact, not a sample, and the one number a reader needs to work out what the crossing costs on their own body (ADR-050).

Trait Implementations§

Source§

impl Clone for ReductionTurns

Source§

fn clone(&self) -> ReductionTurns

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 ReductionTurns

Source§

impl Debug for ReductionTurns

Source§

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

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

impl<'de> Deserialize<'de> for ReductionTurns

Source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
Source§

impl PartialEq for ReductionTurns

Source§

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

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 ReductionTurns

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> DeserializeOwned for T
where T: for<'de> Deserialize<'de>,

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.