Skip to main content

GeoScheme

Trait GeoScheme 

Source
pub trait GeoScheme<M, D, G>
where M: Manifold + ParallelTransport, D: Fn(&M::Point, f64) -> M::Tangent, G: Fn(&M::Point, f64) -> M::Tangent,
{ // Required method fn step_geo( &self, sde: &ManifoldSDE<M, D, G>, x: &M::Point, t: f64, dt: f64, inc: &Increment<f64>, ) -> M::Point; }
Expand description

Internal trait to unify geodesic scheme step dispatch.

Implementors provide a single step_geo method that advances x by one step. The M: ParallelTransport bound is required for the GeodesicMilstein impl; GeodesicEuler satisfies it but does not use the transport operation.

Required Methods§

Source

fn step_geo( &self, sde: &ManifoldSDE<M, D, G>, x: &M::Point, t: f64, dt: f64, inc: &Increment<f64>, ) -> M::Point

Advance x by one scheme step.

Implementors§

Source§

impl<M, D, G> GeoScheme<M, D, G> for GeodesicEuler
where M: Manifold + ParallelTransport, D: Fn(&M::Point, f64) -> M::Tangent + Send + Sync, G: Fn(&M::Point, f64) -> M::Tangent + Send + Sync,

Source§

impl<M, D, G> GeoScheme<M, D, G> for GeodesicMilstein
where M: Manifold + ParallelTransport, D: Fn(&M::Point, f64) -> M::Tangent + Send + Sync, G: Fn(&M::Point, f64) -> M::Tangent + Send + Sync,

Source§

impl<M, D, G> GeoScheme<M, D, G> for GeodesicSRI
where M: Manifold + ParallelTransport, D: Fn(&M::Point, f64) -> M::Tangent + Send + Sync, G: Fn(&M::Point, f64) -> M::Tangent + Send + Sync, M::Tangent: Add<Output = M::Tangent> + Mul<f64, Output = M::Tangent> + Sub<Output = M::Tangent> + Clone,