Template Numerical Library version\ main:4e58ea6
Loading...
Searching...
No Matches
TNL::Solvers::ODE::Methods::DormandPrince< Value > Struct Template Reference

Fifth order Dormand-Prince method also known as ode45 from Matlab with adaptive step size. More...

#include <TNL/Solvers/ODE/Methods/DormandPrince.h>

Collaboration diagram for TNL::Solvers::ODE::Methods::DormandPrince< Value >:

Public Types

using ValueType = Value
 

Static Public Member Functions

static constexpr ValueType getCoefficient (const std::size_t stage, const std::size_t i)
 
static constexpr ValueType getErrorCoefficient (std::size_t i)
 
static constexpr std::size_t getStages ()
 
static constexpr ValueType getTimeCoefficient (std::size_t i)
 
static constexpr ValueType getUpdateCoefficient (std::size_t i)
 
static constexpr bool isAdaptive ()
 

Static Protected Attributes

static constexpr std::array< Value, Stages > higher_order_update_coefficients { 35.0/384.0, 0.0, 500.0/1113.0, 125.0/192.0, -2187.0/6784.0, 11.0/84.0, 0.0 }
 
static constexpr std::array< std::array< Value, Stages >, Stages > k_coefficients
 
static constexpr std::array< Value, Stages > lower_order_update_coefficients { 5179.0/57600.0, 0.0, 7571.0/16695.0, 393.0/640.0, -92097.0/339200.0, 187.0/2100.0, 1.0/40.0 }
 
static constexpr std::size_t Stages = 7
 
static constexpr std::array< Value, Stages > time_coefficients { 0.0, 1.0/5.0, 3.0/10.0, 4.0/5.0, 8.0/9.0, 1.0, 1.0 }
 

Detailed Description

template<typename Value = double>
struct TNL::Solvers::ODE::Methods::DormandPrince< Value >

Fifth order Dormand-Prince method also known as ode45 from Matlab with adaptive step size.

Template Parameters
Valueis arithmetic type used for computations.

Member Data Documentation

◆ k_coefficients

template<typename Value = double>
std::array< std::array< Value, Stages>, Stages > TNL::Solvers::ODE::Methods::DormandPrince< Value >::k_coefficients
staticconstexprprotected
Initial value:
{
std::array< Value, Stages >{ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 },
std::array< Value, Stages >{ 1.0/5.0, 0.0, 0.0, 0.0, 0.0, 0.0 },
std::array< Value, Stages >{ 3.0/40.0, 9.0/40.0, 0.0, 0.0, 0.0, 0.0 },
std::array< Value, Stages >{ 44.0/45.0, -56.0/15.0, 32.0/9.0, 0.0, 0.0, 0.0 },
std::array< Value, Stages >{ 19372.0/6561.0, -25360.0/2187.0, 64448.0/6561.0, -212.0/729.0, 0.0, 0.0 },
std::array< Value, Stages >{ 9017.0/3168.0, -355.0/33.0, 46732.0/5247.0, 49.0/176.0, -5103.0/18656.0, 0.0 },
std::array< Value, Stages >{ 35.0/384.0, 0.0, 500.0/1113.0, 125.0/192.0, -2187.0/6784.0, 11.0/84.0 }
}

The documentation for this struct was generated from the following file: