MathTL
 All Classes Functions Variables Typedefs Enumerations
Public Types | Public Member Functions | Protected Attributes
MathTL::Rosenbrock< VECTOR, IVP > Class Template Reference

#include <rosenbrock.h>

List of all members.

Public Types

enum  Method {
  Euler, ROS2, ROS3, ROWDA3,
  RODAS3
}

Public Member Functions

 Rosenbrock (const Method method=Euler)
void increment (const IVP &ivp, const double t_m, const VECTOR &u_m, const double tau, VECTOR &u_mplus1) const
void increment (const IVP &ivp, const double t_m, const VECTOR &u_m, const double tau, VECTOR &u_mplus1, VECTOR &error_estimate) const

Protected Attributes

LowerTriangularMatrix< double > alpha_
LowerTriangularMatrix< double > gamma_
Vector< double > b_
Method method_

Detailed Description

template<class VECTOR, class IVP>
class MathTL::Rosenbrock< VECTOR, IVP >

The following class models an s-stage Rosenbrock-type method for the numerical solution of (abstract) nonautonomous initial value problems of the form

u'(t) = F(t, u(t)), u(0) = u_0.

The numerical method solves the following s linear stage equations:

(I-*{i,i}*J)(k_i + {j=1}^{i-1}{{i,j}}{{i,i}}k_j) = F(t_m+*, u^{(m)}+ * {j=1}^{i-1}{i,j} * k_j) + {j=1}^{i-1} {{i,j}}{{i,i}} * k_j + * * (t_m,u^{(m)})

Here = {j=1}^i{i,j}, = {j=1}^i{i,j}. J is the exact Jacobian F_u(t_n, u_n) or an approximation of it. In the latter case, one speaks of W-methods. The value at the new time node t_{m+1}=t_m+ is then determined by

u^{(m+1)} = u^{(m)} + * {i=1}^s b_i*k_i

The template parameter VECTOR stands for an element of the Banach space X under consideration. For finite-dimensional problems, this will almost always be a vector class like Vector<double>. In the infinite-dimensional case, VECTOR models elements of X as (finite) linear combinations of a wavelet basis. IVP provides the underlying initial value problem, this class should follow the signature

class IVP { void apply_f(const double t, const VECTOR& v, VECTOR& result) const; void apply_ft(const double t, const VECTOR& v, VECTOR& result) const; void solve_jacobian(const double t, const VECTOR& v, const double tau, VECTOR& result) const; }

The methods under consideration provide embedded lower order error estimators.


Member Enumeration Documentation

template<class VECTOR , class IVP >
enum MathTL::Rosenbrock::Method

enum type for the different builtin methods (in ascending stage order s)

References: [Euler] Deuflhard/Bornemann, Numerik II [ROS2] Blom, Hundsdorfer, Spee, Verwer: A Second-Order Rosenbrock Method Applied to Photochemical Dispersion Problems, SIAM J. Sci. Comput. 20(1999), 1456-1480 [ROS3], [RODAS3] Blom, Carmichael, Potra, Sandu, Spee, Verwer: Benchmarking Stiff ODE Solvers for Atmospheric Chemistry Problems II: Rosenbrock Solvers, Atmos. Environ. 31(1997), 3459-3472 [ROWDA3] Roche: Rosenbrock Methods for Differential Algebraic Equations, Numer. Math. 52(1988), 45-63


Constructor & Destructor Documentation

template<class VECTOR , class IVP >
MathTL::Rosenbrock< VECTOR, IVP >::Rosenbrock ( const Method  method = Euler)

construct one of the builtin Rosenbrock methods


Member Function Documentation

template<class VECTOR , class IVP >
void MathTL::Rosenbrock< VECTOR, IVP >::increment ( const IVP ivp,
const double  t_m,
const VECTOR &  u_m,
const double  tau,
VECTOR &  u_mplus1 
) const

increment function u^{(m)} -> u^{(m+1)}

template<class VECTOR , class IVP >
void MathTL::Rosenbrock< VECTOR, IVP >::increment ( const IVP ivp,
const double  t_m,
const VECTOR &  u_m,
const double  tau,
VECTOR &  u_mplus1,
VECTOR &  error_estimate 
) const

increment function u^{(m)} -> u^{(m+1)}, also returns a local error estimator


Member Data Documentation

template<class VECTOR , class IVP >
LowerTriangularMatrix<double> MathTL::Rosenbrock< VECTOR, IVP >::alpha_ [protected]

the Rosenbrock coefficients

template<class VECTOR , class IVP >
Method MathTL::Rosenbrock< VECTOR, IVP >::method_ [protected]

toggle method


The documentation for this class was generated from the following files:
 All Classes Functions Variables Typedefs Enumerations