SMILE  v2.5
Schwarzschild Modelling Interactive expLoratory Environment
Classes | Namespaces | Typedefs
odeint.h File Reference

ODE integration classes. More...

#include "common.h"
#include <boost/numeric/odeint.hpp>
#include "runge_kutta_bogacki_shampine32.hpp"
Include dependency graph for odeint.h:

Classes

class  smile::COdeIntegratorDOP853
 8th order Runge-Kutta integrator from Hairer,Norsett&Wanner. More...
 
class  smile::COdeIntegratorIAS15
 15-th order implicit Runge-Kutta scheme from Rein & Spiegel, 2014, MNRAS (adapted from Rebound). More...
 
class  smile::COdeIntegratorHermite
 Hermite integrator that uses information about force derivatives (jerk) in a 4th-order predictor-corrector scheme with only two force evaluations per timestep. More...
 
class  smile::COdeIntegratorOdeint< Stepper >
 A template class for integrators based on the boost::numeric::odeint library. More...
 
class  smile::COdeIntegratorLeapfrog
 low-order leapfrog method provided for treecode, which has discontinuous potential/forces and is poorly handled by Runge-Kutta integrator. More...
 

Namespaces

 smile
 common namespace for all core SMILE classes, functions and variables
 

Typedefs

typedef
boost::numeric::odeint::bulirsch_stoer_dense_out
< OdeStateType > 
smile::StepperBS
 Implementation of Bulirsch-Stoer method with dense output.
 
typedef
boost::numeric::odeint::dense_output_runge_kutta
< boost::numeric::odeint::controlled_runge_kutta
< boost::numeric::odeint::runge_kutta_dopri5
< OdeStateType >
, my_error_checker > > 
smile::StepperDP5
 Implementation of the Dormand-Prince 5th order Runge-Kutta method with adaptive timestep and dense output.
 
typedef
boost::numeric::odeint::controlled_runge_kutta
< boost::numeric::odeint::runge_kutta_cash_karp54
< OdeStateType >
, my_error_checker > 
smile::StepperCK5
 Implementation of the Cash-Karp 5th order Runge-Kutta method with adaptive timestep.
 
typedef
boost::numeric::odeint::controlled_runge_kutta
< boost::numeric::odeint::runge_kutta_bogacki_shampine32
< OdeStateType >
, my_error_checker > 
smile::StepperBS3
 Implementation of the Bogacki-Shampine 3rd order Runge-Kutta method with adaptive timestep.
 
typedef
boost::numeric::odeint::runge_kutta4
< OdeStateType > 
smile::StepperRK4
 Implementation of the standard fixed-timestep 4th order Runge-Kutta method.
 
typedef
boost::numeric::odeint::symplectic_rkn_sb3a_mclachlan
< OdeStateType > 
smile::StepperSympl4
 Implementation of the fixed-timestep 4th order symplectic Runge-Kutta method.
 

Functions

const char * smile::getIntegratorNameByType (CBasicOdeIntegrator::STEPPERKIND integratorType)
 
CBasicOdeIntegrator::STEPPERKIND smile::getIntegratorTypeByName (const std::string &integratorName)
 return integrator type associated with the text name
 

Detailed Description

ODE integration classes.

Author
EV
Date
2008-2014

Classes for orbit integration, derived from smile::CBasicOdeIntegrator, are declared in this module. The integrators call smile::CPotential::DiffEq for obtaining accelerations, adaptively adjust timestep to maintain desired accuracy, and call runtime functions derived from smile::CBasicOrbitRuntimeFnc after each timestep.

The COrbitIntegratorDOP853 contains code of the 8th order Runge-Kutta integrator from Hairer, Norsett & Wanner, "Solving ordinary differential equations", 1987, Berlin:Springer. Based on the C version (by J.Colinge) of the original Fortran code by E.Hairer & G.Wanner.

The COrbitIntegratorIAS15 is an adapted version of the 15th order integrator from Rebound: Rein & Spiegel, 2014, MNRAS.