BELFEM 0.9.0
Berkeley Lab Finite Element Framework
Loading...
Searching...
No Matches
belfem::ode Namespace Reference

Classes

class  BDF
class  Integrator
class  ODE
 an object that can create an ordinary differential equation More...

Enumerations

enum class  Status { OK = 0 , TRAPPED = 1 , MAXIT = 2 }
enum class  Type { RK45 = 0 , DOP853 = 1 }

Functions

void DOP853_init (ODE &aODE, Cell< Vector< real > > &aWork)
Status DOP853 (ODE &aODE, real &aT, Vector< real > &aY, real &aStep, Cell< Vector< real > > &aWork, const real aEpsilon=1e-7, const uint aMaxIterations=1000, const real aTmax=BELFEM_REAL_MAX, const bool aAutoTimestep=true)
 Dormand-Prince 8(5,3) explicit Runge-Kutta method (DOP853).
void RK45_init (ODE &aODE, Cell< Vector< real > > &aWork)
Status RK45 (ODE &aODE, real &aT, Vector< real > &aY, real &aStep, Cell< Vector< real > > &aWork, const real aEpsilon, const uint aMaxIterations, const real aTmax, const bool aAutoTimestep)

Enumeration Type Documentation

◆ Status

enum class belfem::ode::Status
strong
Enumerator
OK 
TRAPPED 
MAXIT 

◆ Type

enum class belfem::ode::Type
strong
Enumerator
RK45 
DOP853 

Function Documentation

◆ DOP853()

Status belfem::ode::DOP853 ( ODE & aODE,
real & aT,
Vector< real > & aY,
real & aStep,
Cell< Vector< real > > & aWork,
const real aEpsilon = 1e-7,
const uint aMaxIterations = 1000,
const real aTmax = BELFEM_REAL_MAX,
const bool aAutoTimestep = true )

Dormand-Prince 8(5,3) explicit Runge-Kutta method (DOP853).

An 8th order method with embedded 5th and 3rd order error estimators. The step size controller uses the 5th order estimator. Recommended for smooth, non-stiff problems requiring high accuracy (tolerances tighter than ~1e-8). For moderate accuracy, RK45 is more efficient.

Reference: Hairer, Norsett, Wanner: Solving Ordinary Differential Equations I, 2nd ed., Springer (1993), Section II.6.

◆ DOP853_init()

void belfem::ode::DOP853_init ( ODE & aODE,
Cell< Vector< real > > & aWork )

◆ RK45()

Status belfem::ode::RK45 ( ODE & aODE,
real & aT,
Vector< real > & aY,
real & aStep,
Cell< Vector< real > > & aWork,
const real aEpsilon,
const uint aMaxIterations,
const real aTmax,
const bool aAutoTimestep )

◆ RK45_init()

void belfem::ode::RK45_init ( ODE & aODE,
Cell< Vector< real > > & aWork )