Template Numerical Library version\ main:978fbd2
Loading...
Searching...
No Matches
TNL::Solvers::ODE::Methods Namespace Reference

Namespace for numerical methods for ODE solvers. More...

Namespaces

namespace  Matlab
 Namespace for Matlab aliases for ODE solvers.
 

Classes

struct  BogackiShampin
 Third order Bogacki-Shampin method with adaptive time step. More...
 
struct  CashKarp
 Fifth order Cash-Karp method with adaptive time step. More...
 
struct  DormandPrince
 Fifth order Dormand-Prince method also known as ode45 from Matlab with adaptive step size. More...
 
struct  Euler
 First order Euler method. More...
 
struct  Fehlberg2
 Second order Fehlbergs's method with adaptive time step. More...
 
struct  Fehlberg5
 Fifth order Runge-Kutta-Fehlberg method with adaptive time step. More...
 
struct  Heun2
 Second order Heun's method and Heun-Euler method with adaptive time step. More...
 
struct  Heun3
 Third order Heun's method. More...
 
struct  Kutta
 Third order Kutta's method. More...
 
struct  KuttaMerson
 Fourth order Runge-Kutta-Merson method with adaptive step size. More...
 
struct  Midpoint
 Second order midpoint method. More...
 
struct  OriginalRungeKutta
 Fourth order Runge-Kutta method. More...
 
struct  Ralston2
 Second order Ralstons's method. More...
 
struct  Ralston3
 Third order Ralston's method. More...
 
struct  Ralston4
 Fourth order Ralstons's method. More...
 
struct  Rule38
 Fourth order 3/8 rule method. More...
 
struct  SSPRK3
 Third order Strong Stability Preserving Runge-Kutta method. More...
 
struct  VanDerHouwenWray
 Third order Van der Houwen's-Wray's method. More...
 

Detailed Description

Namespace for numerical methods for ODE solvers.

This namespace contains numerical methods for TNL::Solvers::ODE::ODESolver.

TNL provides several methods for ODE solution, categorized based on their order of accuracy:

1-order accuracy methods:

  1. TNL::Solvers::ODE::Methods::Euler or TNL::Solvers::ODE::Methods::Matlab::ode1 - the forward Euler method.
  2. TNL::Solvers::ODE::Methods::Midpoint - the explicit midpoint method.

2-nd order accuracy methods

  1. TNL::Solvers::ODE::Methods::Heun2 or TNL::Solvers::ODE::Methods::Matlab::ode2 - the Heun method with adaptive choice of the time step.
  2. TNL::Solvers::ODE::Methods::Ralston2 - the Ralston method.
  3. TNL::Solvers::ODE::Methods::Fehlberg2 - the Fehlberg method with adaptive choice of the time step.

3-rd order accuracy methods

  1. TNL::Solvers::ODE::Methods::Kutta - the Kutta method.
  2. TNL::Solvers::ODE::Methods::Heun3 - the Heun method.
  3. TNL::Solvers::ODE::Methods::VanDerHouwenWray - the Van der Houwen/Wray method.
  4. TNL::Solvers::ODE::Methods::Ralston3 - the Ralston method.
  5. TNL::Solvers::ODE::Methods::SSPRK3 - the Strong Stability Preserving Runge-Kutta method.
  6. TNL::Solvers::ODE::Methods::BogackiShampin or TNL::Solvers::ODE::Methods::Matlab::ode23 - Bogacki-Shampin method with adaptive choice of the time step.

4-th order accuracy method

  1. TNL::Solvers::ODE::Methods::OriginalRungeKutta - the "original" Runge-Kutta method.
  2. TNL::Solvers::ODE::Methods::Rule38 - 3/8 rule method.
  3. TNL::Solvers::ODE::Methods::Ralston4 - the Ralston method.
  4. TNL::Solvers::ODE::Methods::KuttaMerson - the Runge-Kutta-Merson * method with adaptive choice of the time step.

5-th order accuracy method

  1. TNL::Solvers::ODE::Methods::CashKarp - the Cash-Karp method with adaptive choice of the time step.
  2. TNL::Solvers::ODE::Methods::DormandPrince or TNL::Solvers::ODE::Methods::Matlab::ode45 - the Dormand-Prince with adaptive choice of the time step.
  3. TNL::Solvers::ODE::Methods::Fehlberg5 - the Fehlberg method with adaptive choice of the time step.

The vector \( \vec u(t) \) in ODE solvers can be represented using different types of containers, depending on the size and nature of the ODE system:

  1. Static vectors (TNL::Containers::StaticVector): This is suitable for small systems of ODEs with a fixed number of unknowns. Utilizing StaticVector allows the ODE solver to be executed within GPU kernels. This capability is particularly useful for scenarios like running multiple sequential solvers in parallel, as in the case of TNL::Algorithms::parallelFor.
  2. Dynamic vectors (TNL::Containers::Vector or TNL::Containers::VectorView): These are preferred when dealing with large systems of ODEs, such as those arising in the solution of parabolic partial differential equations using the method of lines. In these instances, the solver typically handles a single, large-scale problem that can be executed in parallel internally.