Skip to main content

HamiltonianSystem

Trait HamiltonianSystem 

Source
pub trait HamiltonianSystem<F: IntegrateFloat> {
    // Required methods
    fn ndof(&self) -> usize;
    fn dq_dt(
        &self,
        t: F,
        q: &Array1<F>,
        p: &Array1<F>,
    ) -> IntegrateResult<Array1<F>>;
    fn dp_dt(
        &self,
        t: F,
        q: &Array1<F>,
        p: &Array1<F>,
    ) -> IntegrateResult<Array1<F>>;

    // Provided method
    fn hamiltonian(&self, _t: F, _q: &Array1<F>, _p: &Array1<F>) -> Option<F> { ... }
}
Expand description

Trait representing a Hamiltonian system for symplectic integration.

The system is described by Hamilton’s equations: dq/dt = dH/dp dp/dt = -dH/dq

Required Methods§

Source

fn ndof(&self) -> usize

Number of degrees of freedom (dimension of q or p).

Source

fn dq_dt( &self, t: F, q: &Array1<F>, p: &Array1<F>, ) -> IntegrateResult<Array1<F>>

Compute dq/dt = dH/dp evaluated at (t, q, p).

Source

fn dp_dt( &self, t: F, q: &Array1<F>, p: &Array1<F>, ) -> IntegrateResult<Array1<F>>

Compute dp/dt = -dH/dq evaluated at (t, q, p).

Provided Methods§

Source

fn hamiltonian(&self, _t: F, _q: &Array1<F>, _p: &Array1<F>) -> Option<F>

Optionally compute the Hamiltonian H(t, q, p) for energy monitoring. Returns None if no closed-form Hamiltonian is available.

Implementors§