numerics 0.1.0
Loading...
Searching...
No Matches
ode.hpp File Reference

ODE and symplectic integrators. More...

#include "core/types.hpp"
#include "core/vector.hpp"
#include "ode/implicit.hpp"
#include <functional>

Go to the source code of this file.

Classes

struct  num::Step
 
struct  num::SymplecticStep
 
struct  num::ODEResult
 
struct  num::SymplecticResult
 
struct  num::ODEParams
 
struct  num::StepEnd
 
class  num::EulerSteps
 
struct  num::EulerSteps::iterator
 
class  num::RK4Steps
 
struct  num::RK4Steps::iterator
 
class  num::RK45Steps
 
struct  num::RK45Steps::iterator
 
class  num::VerletSteps
 
struct  num::VerletSteps::iterator
 
class  num::Yoshida4Steps
 
struct  num::Yoshida4Steps::iterator
 
class  num::RK4_2ndSteps
 
struct  num::RK4_2ndSteps::iterator
 

Namespaces

namespace  num
 

Typedefs

using num::ODERhsFn = std::function< void(real t, const Vector &y, Vector &dydt)>
 
using num::AccelFn = std::function< void(const Vector &q, Vector &acc)>
 
using num::ObserverFn = std::function< void(real t, const Vector &y)>
 
using num::SympObserverFn = std::function< void(real t, const Vector &q, const Vector &v)>
 

Functions

EulerSteps num::euler (ODERhsFn f, Vector y0, ODEParams p={})
 
RK4Steps num::rk4 (ODERhsFn f, Vector y0, ODEParams p={})
 
RK45Steps num::rk45 (ODERhsFn f, Vector y0, ODEParams p={})
 
VerletSteps num::verlet (AccelFn accel, Vector q0, Vector v0, ODEParams p={})
 
Yoshida4Steps num::yoshida4 (AccelFn accel, Vector q0, Vector v0, ODEParams p={})
 
RK4_2ndSteps num::rk4_2nd (AccelFn accel, Vector q0, Vector v0, ODEParams p={})
 
ODEResult num::ode_euler (ODERhsFn f, Vector y0, ODEParams p={}, ObserverFn obs=nullptr)
 Forward Euler, 1st-order, fixed step.
 
ODEResult num::ode_rk4 (ODERhsFn f, Vector y0, ODEParams p={}, ObserverFn obs=nullptr)
 Classic 4th-order Runge-Kutta, fixed step.
 
ODEResult num::ode_rk45 (ODERhsFn f, Vector y0, ODEParams p={}, ObserverFn obs=nullptr)
 Adaptive Dormand-Prince RK45 with FSAL and PI step-size control.
 
SymplecticResult num::ode_verlet (AccelFn accel, Vector q0, Vector v0, ODEParams p={}, SympObserverFn obs=nullptr)
 Velocity Verlet, 2nd-order symplectic, 1 force evaluation per step.
 
SymplecticResult num::ode_yoshida4 (AccelFn accel, Vector q0, Vector v0, ODEParams p={}, SympObserverFn obs=nullptr)
 Yoshida 4th-order symplectic, 3 force evaluations per step.
 
SymplecticResult num::ode_rk4_2nd (AccelFn accel, Vector q0, Vector v0, ODEParams p={}, SympObserverFn obs=nullptr)
 RK4 for second-order systems q'' = accel(q), Nystrom form.
 

Detailed Description

ODE and symplectic integrators.

Definition in file ode.hpp.