MFEM  v3.4 Finite element discretization library
mfem::ODESolver Class Referenceabstract

Abstract class for solving systems of ODEs: dx/dt = f(x,t) More...

#include <ode.hpp>

Collaboration diagram for mfem::ODESolver:
[legend]

## Public Member Functions

ODESolver ()

virtual void Init (TimeDependentOperator &f)
Associate a TimeDependentOperator with the ODE solver. More...

virtual void Step (Vector &x, double &t, double &dt)=0
Perform a time step from time t [in] to time t [out] based on the requested step size dt [in]. More...

virtual void Run (Vector &x, double &t, double &dt, double tf)
Perform time integration from time t [in] to time tf [in]. More...

virtual ~ODESolver ()

## Protected Attributes

TimeDependentOperatorf
Pointer to the associated TimeDependentOperator. More...

## Detailed Description

Abstract class for solving systems of ODEs: dx/dt = f(x,t)

Definition at line 22 of file ode.hpp.

## ◆ ODESolver()

 mfem::ODESolver::ODESolver ( )
inline

Definition at line 29 of file ode.hpp.

## ◆ ~ODESolver()

 virtual mfem::ODESolver::~ODESolver ( )
inlinevirtual

Definition at line 96 of file ode.hpp.

## ◆ Init()

 virtual void mfem::ODESolver::Init ( TimeDependentOperator & f )
inlinevirtual

Associate a TimeDependentOperator with the ODE solver.

This method has to be called:

Definition at line 37 of file ode.hpp.

## ◆ Run()

 virtual void mfem::ODESolver::Run ( Vector & x, double & t, double & dt, double tf )
inlinevirtual

Perform time integration from time t [in] to time tf [in].

Parameters
 [in,out] x Approximate solution. [in,out] t Time associated with the approximate solution x. [in,out] dt Time step size. [in] tf Requested final time.

The default implementation makes consecutive calls to Step() until reaching tf. The following rules describe the common behavior of the method:

• The input x [in] is the approximate solution for the input time t [in].
• The input dt [in] is the initial time step size.
• The output dt [out] is the last time step taken by the method which may be smaller or larger than the input dt [in] value, e.g. because of time step control.
• The output value of t [out] is not smaller than tf [in].

Reimplemented in mfem::PetscODESolver.

Definition at line 91 of file ode.hpp.

## ◆ Step()

 virtual void mfem::ODESolver::Step ( Vector & x, double & t, double & dt )
pure virtual

Perform a time step from time t [in] to time t [out] based on the requested step size dt [in].

Parameters
 [in,out] x Approximate solution. [in,out] t Time associated with the approximate solution x. [in,out] dt Time step size.

The following rules describe the common behavior of the method:

• The input x [in] is the approximate solution for the input time t [in].
• The input dt [in] is the desired time step size, defining the desired target time: t [target] = t [in] + dt [in].
• The output x [out] is the approximate solution for the output time t [out].
• The output dt [out] is the last time step taken by the method which may be smaller or larger than the input dt [in] value, e.g. because of time step control.
• The method may perform more than one time step internally; in this case dt [out] is the last internal time step size.
• The output value of t [out] may be smaller or larger than t [target], however, it is not smaller than t [in] + dt [out], if at least one internal time step was performed.
• The value x [out] may be obtained by interpolation using internally stored data.
• In some cases, the contents of x [in] may not be used, e.g. when x [out] from a previous Step() call was obtained by interpolation.
• In consecutive calls to this method, the output t [out] of one Step() call has to be the same as the input t [in] to the next Step() call.
• If the previous rule has to be broken, e.g. to restart a time stepping sequence, then the ODE solver must be re-initialized by calling Init() between the two Step() calls.

## ◆ f

 TimeDependentOperator* mfem::ODESolver::f
protected

Pointer to the associated TimeDependentOperator.

Definition at line 26 of file ode.hpp.

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