MFEM v4.7.0
Finite element discretization library
No Matches
Public Member Functions | List of all members
mfem::ExplicitRKSolver Class Reference

#include <ode.hpp>

Inheritance diagram for mfem::ExplicitRKSolver:
Collaboration diagram for mfem::ExplicitRKSolver:

Public Member Functions

 ExplicitRKSolver (int s_, const real_t *a_, const real_t *b_, const real_t *c_)
void Init (TimeDependentOperator &f_) override
 Associate a TimeDependentOperator with the ODE solver.
void Step (Vector &x, real_t &t, real_t &dt) override
 Perform a time step from time t [in] to time t [out] based on the requested step size dt [in].
virtual ~ExplicitRKSolver ()
- Public Member Functions inherited from mfem::ODESolver
 ODESolver ()
virtual void Init (TimeDependentOperator &f_)
 Associate a TimeDependentOperator with the ODE solver.
virtual void Step (Vector &x, real_t &t, real_t &dt)=0
 Perform a time step from time t [in] to time t [out] based on the requested step size dt [in].
virtual void Run (Vector &x, real_t &t, real_t &dt, real_t tf)
 Perform time integration from time t [in] to time tf [in].
virtual int GetMaxStateSize ()
 Function for getting and setting the state vectors.
virtual int GetStateSize ()
virtual const VectorGetStateVector (int i)
virtual void GetStateVector (int i, Vector &state)
virtual void SetStateVector (int i, Vector &state)
virtual ~ODESolver ()

Additional Inherited Members

- Protected Attributes inherited from mfem::ODESolver
 Pointer to the associated TimeDependentOperator.
MemoryType mem_type

Detailed Description

An explicit Runge-Kutta method corresponding to a general Butcher tableau +-----—+-------------------—+ | c[0] | a[0] | | c[1] | a[1] a[2] | | ... | ... | | c[s-2] | ... a[s(s-1)/2-1] | +-----—+-------------------—+ | | b[0] b[1] ... b[s-1] | +-----—+-------------------—+

Definition at line 184 of file ode.hpp.

Constructor & Destructor Documentation

◆ ExplicitRKSolver()

mfem::ExplicitRKSolver::ExplicitRKSolver ( int  s_,
const real_t a_,
const real_t b_,
const real_t c_ 

Definition at line 138 of file ode.cpp.

◆ ~ExplicitRKSolver()

mfem::ExplicitRKSolver::~ExplicitRKSolver ( )

Definition at line 189 of file ode.cpp.

Member Function Documentation

◆ Init()

void mfem::ExplicitRKSolver::Init ( TimeDependentOperator f_)

Associate a TimeDependentOperator with the ODE solver.

This method has to be called:

Reimplemented from mfem::ODESolver.

Definition at line 148 of file ode.cpp.

◆ Step()

void mfem::ExplicitRKSolver::Step ( Vector x,
real_t t,
real_t dt 

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

[in,out]xApproximate solution.
[in,out]tTime associated with the approximate solution x.
[in,out]dtTime 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.

Implements mfem::ODESolver.

Definition at line 159 of file ode.cpp.

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