#[non_exhaustive]pub enum CanopyType {
Show 13 variants
FlatCircular,
Conical,
Biconical,
Triconical,
ExtendedSkirt10Flat,
ExtendedSkirt14Full,
Hemispherical,
Annular,
Cross,
FlatRibbon,
ConicalRibbon,
Ringslot,
Ringsail,
}Expand description
A canopy type with printed data in Knacke’s tables.
Solid textile canopies come from Table 5-1 (printed page 5-3), slotted ones from Table 5-2 (5-4).
Variants (Non-exhaustive)§
This enum is marked as non-exhaustive
FlatCircular
Flat circular (solid textile).
Conical
Conical (solid textile).
Biconical
Biconical (solid textile).
Triconical
Triconical or polyconical (solid textile).
ExtendedSkirt10Flat
Extended skirt, 10% flat (solid textile).
ExtendedSkirt14Full
Extended skirt, 14.3% full (solid textile).
Hemispherical
Hemispherical (solid textile).
Annular
Annular (solid textile).
Cross
Cross, or cruciform (solid textile).
FlatRibbon
Flat (FIST) ribbon (slotted).
ConicalRibbon
Conical ribbon (slotted).
Ringslot
Ringslot (slotted).
Ringsail
Ringsail (slotted).
Implementations§
Source§impl CanopyType
impl CanopyType
Sourcepub const fn drag_coefficient_range(self) -> (f64, f64)
pub const fn drag_coefficient_range(self) -> (f64, f64)
Knacke’s printed range of C_D0, the drag coefficient on the nominal area S₀
(Tables 5-1 and 5-2, printed pages 5-3 and 5-4).
Sourcepub const fn drag_coefficient(self) -> f64
pub const fn drag_coefficient(self) -> f64
The middle of Self::drag_coefficient_range, which is what hpr uses when the user gives
no C_D0. Knacke prints a range for every type and no single value; the middle is hpr’s
choice, not his (the decision record on recovery, ADR-012).
Sourcepub const fn fill_constant(self) -> Option<f64>
pub const fn fill_constant(self) -> Option<f64>
The canopy fill constant n of t_f = n D₀/v (Table 5-6, printed page 5-44, unreefed
column), where Knacke prints one. None where the table has no unreefed value for the
type, which for five of these is because it has no row there at all.
Knacke’s rows cover types, not every variant: the ribbon row serves both ribbon entries. (The ringsail row prints 7 unreefed; its 7 to 8 is the reefed column.)
Sourcepub const fn growth_exponent(self) -> Option<f64>
pub const fn growth_exponent(self) -> Option<f64>
The drag-area growth exponent j of (C_D S)(t) = (C_D S)₀ (t/t_f)^j, for the types
Pflanz’s method names (Figure 5-51, printed page 5-59): j = 2 for solid cloth (flat
circular, conical, extended skirt, triconical) and j = 1 for ribbon and ringslot.
None for the types he doesn’t name, which need a measured exponent.
Sourcepub const fn opening_force_coefficient(self) -> f64
pub const fn opening_force_coefficient(self) -> f64
The infinite-mass opening-force coefficient C_x = F_x/F_c (Tables 5-1 and 5-2; the cross
canopy’s printed 1.1 to 1.2 is taken at its middle). hpr reports it; it is not used in the
equations, which integrate the opening force instead.
Trait Implementations§
Source§impl Clone for CanopyType
impl Clone for CanopyType
Source§fn clone(&self) -> CanopyType
fn clone(&self) -> CanopyType
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreimpl Copy for CanopyType
Source§impl Debug for CanopyType
impl Debug for CanopyType
Source§impl<'de> Deserialize<'de> for CanopyType
impl<'de> Deserialize<'de> for CanopyType
Source§fn deserialize<__D>(
__deserializer: __D,
) -> Result<CanopyType, <__D as Deserializer<'de>>::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(
__deserializer: __D,
) -> Result<CanopyType, <__D as Deserializer<'de>>::Error>where
__D: Deserializer<'de>,
impl Eq for CanopyType
Source§impl Hash for CanopyType
impl Hash for CanopyType
Source§impl PartialEq for CanopyType
impl PartialEq for CanopyType
Source§fn eq(&self, other: &CanopyType) -> bool
fn eq(&self, other: &CanopyType) -> bool
self and other values to be equal, and is used by ==.Source§impl Serialize for CanopyType
impl Serialize for CanopyType
Source§fn serialize<__S>(
&self,
__serializer: __S,
) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error>where
__S: Serializer,
fn serialize<__S>(
&self,
__serializer: __S,
) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error>where
__S: Serializer,
impl StructuralPartialEq for CanopyType
Auto Trait Implementations§
impl Freeze for CanopyType
impl RefUnwindSafe for CanopyType
impl Send for CanopyType
impl Sync for CanopyType
impl Unpin for CanopyType
impl UnsafeUnpin for CanopyType
impl UnwindSafe for CanopyType
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> DeserializeOwned for Twhere
T: for<'de> Deserialize<'de>,
§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more