pub enum IntegratorMethod {
RungeKutta89,
DormandPrince78,
DormandPrince45,
RungeKutta4,
CashKarp45,
Verner56,
}
Expand description
Enum of supported integration methods, all of which are part of the Runge Kutta family of ordinary differential equation (ODE) solvers. Nomenclature: X-Y means that this is an X order solver with a Y order error correction step.
Variants§
RungeKutta89
Runge Kutta 8-9 is the recommended integrator for most application.
DormandPrince78
Dormand78
is a Dormand-Prince integrator. Coefficients taken from GMAT src/base/propagator/PrinceDormand78.cpp
.
DormandPrince45
Dormand45
is a Dormand-Prince integrator.
RungeKutta4
Runge Kutta 4 is a fixed step solver.
CashKarp45
Runge Kutta 4-5 Cash Karp integrator.
Verner56
Verner56 is an RK Verner integrator of order 5-6. Coefficients taken from here (PDF).
Implementations§
Source§impl IntegratorMethod
impl IntegratorMethod
Sourcepub const fn order(self) -> u8
pub const fn order(self) -> u8
Returns the order of this integrator (as u8 because there probably isn’t an order greater than 255). The order is used for the adaptive step size only to compute the error between estimates.
Sourcepub const fn stages(self) -> usize
pub const fn stages(self) -> usize
Returns the stages of this integrator, i.e. how many times the derivatives will be called
Sourcepub const fn a_coeffs(self) -> &'static [f64]
pub const fn a_coeffs(self) -> &'static [f64]
Returns a pointer to a list of f64 corresponding to the A coefficients of the Butcher table for that RK.
This module only supports implicit integrators, and as such, Self.a_coeffs().len()
must be of
size (order+1)*(order)/2.
Warning: this RK trait supposes that the implementation is consistent, i.e. c_i = \sum_j a_{ij}.
Trait Implementations§
Source§impl Clone for IntegratorMethod
impl Clone for IntegratorMethod
Source§fn clone(&self) -> IntegratorMethod
fn clone(&self) -> IntegratorMethod
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moreSource§impl Debug for IntegratorMethod
impl Debug for IntegratorMethod
Source§impl Default for IntegratorMethod
impl Default for IntegratorMethod
Source§impl<'de> Deserialize<'de> for IntegratorMethod
impl<'de> Deserialize<'de> for IntegratorMethod
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Source§impl FromStr for IntegratorMethod
impl FromStr for IntegratorMethod
Source§impl PartialEq for IntegratorMethod
impl PartialEq for IntegratorMethod
Source§impl Serialize for IntegratorMethod
impl Serialize for IntegratorMethod
impl Copy for IntegratorMethod
impl Eq for IntegratorMethod
impl StructuralPartialEq for IntegratorMethod
Auto Trait Implementations§
impl Freeze for IntegratorMethod
impl RefUnwindSafe for IntegratorMethod
impl Send for IntegratorMethod
impl Sync for IntegratorMethod
impl Unpin for IntegratorMethod
impl UnwindSafe for IntegratorMethod
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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§unsafe fn clone_to_uninit(&self, dst: *mut T)
unsafe fn clone_to_uninit(&self, dst: *mut T)
clone_to_uninit
)§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.§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
Source§impl<T> FromDhall for Twhere
T: DeserializeOwned,
impl<T> FromDhall for Twhere
T: DeserializeOwned,
fn from_dhall(v: &Value) -> Result<T, Error>
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
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§impl<T> Pointable for T
impl<T> Pointable for T
§impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
§fn to_subset(&self) -> Option<SS>
fn to_subset(&self) -> Option<SS>
self
from the equivalent element of its
superset. Read more§fn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
self
is actually part of its subset T
(and can be converted to it).§fn to_subset_unchecked(&self) -> SS
fn to_subset_unchecked(&self) -> SS
self.to_subset
but without any property checks. Always succeeds.§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
self
to the equivalent element of its superset.