Extension: Matrix functions
#include "dg/matrix/matrix.h"
dg::mat::ConvertsToFunctionalButcherTableau< real_type > Struct Template Reference

Convert identifiers to their corresponding dg::mat::FunctionalButcherTableau. More...

Public Types

using value_type = real_type
 

Public Member Functions

 ConvertsToFunctionalButcherTableau (FunctionalButcherTableau< real_type > tableau)
 
 ConvertsToFunctionalButcherTableau (enum tableau_identifier id)
 Create FunctionalButcherTableau from dg::mat::func_tableau_identifier. More...
 
 ConvertsToFunctionalButcherTableau (std::string name)
 Create FunctionalButcherTableau from its name (very useful) More...
 
 ConvertsToFunctionalButcherTableau (const char *name)
 Create FunctionalButcherTableau from its name (very useful) More...
 
 operator FunctionalButcherTableau< real_type > () const
 

Detailed Description

template<class real_type>
struct dg::mat::ConvertsToFunctionalButcherTableau< real_type >

Convert identifiers to their corresponding dg::mat::FunctionalButcherTableau.

This is a helper class to simplify the interfaces of our timestepper functions and classes. The sole purpose is to implicitly convert either a FunctionalButcherTableau or one of the following identifiers to an instance of a FunctionalButcherTableau.

We follow the naming convention of the ARKode library http://runge.math.smu.edu/arkode_dev/doc/guide/build/html/Butcher.html (They also provide nice stability plots for their methods) as NAME-S-P-Q or NAME-S-Q, where

  • NAME is the author or name of the method
  • S is the number of stages in the method
  • P is the global order of the embedding
  • Q is the global order of the method
Name Identifier Description
Euler dg::mat::EXPLICIT_EULER_1_1 Hochbruck and Ostermann, Exponential Integrators, Acta Numerica (2010)
Midpoint-2-2 dg::mat::MIDPOINT_2_2 Hochbruck and Ostermann, Exponential Integrators, Acta Numerica (2010)
Runge-Kutta-4-4 dg::mat::CLASSIC_4_4 Cox and Matthews, J. Comput. Phys., 176 (2002)
Hochbruck-3-3-4 dg::mat::HOCHBRUCK_3_3_4 Hochbruck and Ostermann, Exponential Integrators, Acta Numerica (2010) (The exprb43 method)
Note
In exponential Rosenbrock type schemes it is assumed that \( A\) (the matrix) is the Jacobian of the system. If it is not, then the order conditions are different and the order and embedded orders are not what is indicated in our names.
Parameters
real_typeThe type of the coefficients in the FunctionalButcherTableau

Member Typedef Documentation

◆ value_type

template<class real_type >
using dg::mat::ConvertsToFunctionalButcherTableau< real_type >::value_type = real_type

Constructor & Destructor Documentation

◆ ConvertsToFunctionalButcherTableau() [1/4]

template<class real_type >
dg::mat::ConvertsToFunctionalButcherTableau< real_type >::ConvertsToFunctionalButcherTableau ( FunctionalButcherTableau< real_type >  tableau)
inline

Of course a FunctionalButcherTableau converts to a FunctionalButcherTableau Useful if you constructed your very own coefficients

◆ ConvertsToFunctionalButcherTableau() [2/4]

template<class real_type >
dg::mat::ConvertsToFunctionalButcherTableau< real_type >::ConvertsToFunctionalButcherTableau ( enum tableau_identifier  id)
inline

Create FunctionalButcherTableau from dg::mat::func_tableau_identifier.

The use of this constructor might be a bit awkward because you'll have to write all caps.

Parameters
idthe identifier, for example dg::mat::RUNGE_KUTTA_4_4

◆ ConvertsToFunctionalButcherTableau() [3/4]

template<class real_type >
dg::mat::ConvertsToFunctionalButcherTableau< real_type >::ConvertsToFunctionalButcherTableau ( std::string  name)
inline

Create FunctionalButcherTableau from its name (very useful)

Note
In some of the links in the Description below you might want to use the search function of your browser to find the indicated method

Explicit methods

We follow the naming convention of the ARKode library http://runge.math.smu.edu/arkode_dev/doc/guide/build/html/Butcher.html (They also provide nice stability plots for their methods) as NAME-S-P-Q or NAME-S-Q, where

  • NAME is the author or name of the method
  • S is the number of stages in the method
  • P is the global order of the embedding
  • Q is the global order of the method
Name Identifier Description
Euler dg::mat::EXPLICIT_EULER_1_1 Hochbruck and Ostermann, Exponential Integrators, Acta Numerica (2010)
Midpoint-2-2 dg::mat::MIDPOINT_2_2 Hochbruck and Ostermann, Exponential Integrators, Acta Numerica (2010)
Runge-Kutta-4-4 dg::mat::CLASSIC_4_4 Cox and Matthews, J. Comput. Phys., 176 (2002)
Hochbruck-3-3-4 dg::mat::HOCHBRUCK_3_3_4 Hochbruck and Ostermann, Exponential Integrators, Acta Numerica (2010) (The exprb43 method)
Note
In exponential Rosenbrock type schemes it is assumed that \( A\) (the matrix) is the Jacobian of the system. If it is not, then the order conditions are different and the order and embedded orders are not what is indicated in our names.
Parameters
nameThe name of the tableau as stated in the Name column above, as a string, for example "Euler"

◆ ConvertsToFunctionalButcherTableau() [4/4]

template<class real_type >
dg::mat::ConvertsToFunctionalButcherTableau< real_type >::ConvertsToFunctionalButcherTableau ( const char *  name)
inline

Create FunctionalButcherTableau from its name (very useful)

Note
In some of the links in the Description below you might want to use the search function of your browser to find the indicated method

Explicit methods

We follow the naming convention of the ARKode library http://runge.math.smu.edu/arkode_dev/doc/guide/build/html/Butcher.html (They also provide nice stability plots for their methods) as NAME-S-P-Q or NAME-S-Q, where

  • NAME is the author or name of the method
  • S is the number of stages in the method
  • P is the global order of the embedding
  • Q is the global order of the method
Name Identifier Description
Euler dg::mat::EXPLICIT_EULER_1_1 Hochbruck and Ostermann, Exponential Integrators, Acta Numerica (2010)
Midpoint-2-2 dg::mat::MIDPOINT_2_2 Hochbruck and Ostermann, Exponential Integrators, Acta Numerica (2010)
Runge-Kutta-4-4 dg::mat::CLASSIC_4_4 Cox and Matthews, J. Comput. Phys., 176 (2002)
Hochbruck-3-3-4 dg::mat::HOCHBRUCK_3_3_4 Hochbruck and Ostermann, Exponential Integrators, Acta Numerica (2010) (The exprb43 method)
Note
In exponential Rosenbrock type schemes it is assumed that \( A\) (the matrix) is the Jacobian of the system. If it is not, then the order conditions are different and the order and embedded orders are not what is indicated in our names.
Parameters
nameThe name of the tableau as stated in the Name column above, as a string, for example "Euler"

Member Function Documentation

◆ operator FunctionalButcherTableau< real_type >()

template<class real_type >
dg::mat::ConvertsToFunctionalButcherTableau< real_type >::operator FunctionalButcherTableau< real_type > ( ) const
inline

Convert to FunctionalButcherTableau

which means an object can be directly assigned to a FunctionalButcherTableau


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