MFEM  v3.4
Finite element discretization library
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Pages
Public Types | Public Attributes | Protected Member Functions | List of all members
mfem::SundialsODELinearSolver Class Referenceabstract

Abstract base class, wrapping the custom linear solvers interface in SUNDIALS' CVODE and ARKODE solvers. More...

#include <sundials.hpp>

Inheritance diagram for mfem::SundialsODELinearSolver:
[legend]

Public Types

enum  { CVODE, ARKODE }
 

Public Member Functions

Linear solver interface methods.

These four functions and their parameters are documented in Section 7 of http://computation.llnl.gov/sites/default/files/public/cv_guide.pdf and Section 7.4 of http://computation.llnl.gov/sites/default/files/public/ark_guide.pdf

The first argument, sundials_mem, is one of the pointer types, CVodeMem or ARKodeMem, depending on the value of the data member type.

virtual int InitSystem (void *sundials_mem)=0
 
virtual int SetupSystem (void *sundials_mem, int conv_fail, const Vector &y_pred, const Vector &f_pred, int &jac_cur, Vector &v_temp1, Vector &v_temp2, Vector &v_temp3)=0
 
virtual int SolveSystem (void *sundials_mem, Vector &b, const Vector &w, const Vector &y_cur, const Vector &f_cur)=0
 
virtual int FreeSystem (void *sundials_mem)=0
 

Public Attributes

enum
mfem::SundialsODELinearSolver:: { ... }  
type
 Is CVODE or ARKODE using this object? More...
 

Protected Member Functions

 SundialsODELinearSolver ()
 
virtual ~SundialsODELinearSolver ()
 
double GetTimeStep (void *sundials_mem)
 Get the current scaled time step, gamma, from sundials_mem. More...
 
TimeDependentOperatorGetTimeDependentOperator (void *sundials_mem)
 Get the TimeDependentOperator associated with sundials_mem. More...
 

Detailed Description

Abstract base class, wrapping the custom linear solvers interface in SUNDIALS' CVODE and ARKODE solvers.

For a given ODE system

dx/dt = f(x,t)

the purpose of this class is to facilitate the (approximate) solution of linear systems of the form

(I - γJ) y = b,   J = J(x,t) = df/dx

for given b, x, t and γ, where γ = GetTimeStep() is a scaled time step.

Definition at line 47 of file sundials.hpp.

Member Enumeration Documentation

anonymous enum
Enumerator
CVODE 
ARKODE 

Definition at line 50 of file sundials.hpp.

Constructor & Destructor Documentation

mfem::SundialsODELinearSolver::SundialsODELinearSolver ( )
inlineprotected

Definition at line 53 of file sundials.hpp.

virtual mfem::SundialsODELinearSolver::~SundialsODELinearSolver ( )
inlineprotectedvirtual

Definition at line 54 of file sundials.hpp.

Member Function Documentation

virtual int mfem::SundialsODELinearSolver::FreeSystem ( void *  sundials_mem)
pure virtual
TimeDependentOperator * mfem::SundialsODELinearSolver::GetTimeDependentOperator ( void *  sundials_mem)
protected

Get the TimeDependentOperator associated with sundials_mem.

Definition at line 79 of file sundials.cpp.

double mfem::SundialsODELinearSolver::GetTimeStep ( void *  sundials_mem)
protected

Get the current scaled time step, gamma, from sundials_mem.

Definition at line 71 of file sundials.cpp.

virtual int mfem::SundialsODELinearSolver::InitSystem ( void *  sundials_mem)
pure virtual
virtual int mfem::SundialsODELinearSolver::SetupSystem ( void *  sundials_mem,
int  conv_fail,
const Vector y_pred,
const Vector f_pred,
int &  jac_cur,
Vector v_temp1,
Vector v_temp2,
Vector v_temp3 
)
pure virtual
virtual int mfem::SundialsODELinearSolver::SolveSystem ( void *  sundials_mem,
Vector b,
const Vector w,
const Vector y_cur,
const Vector f_cur 
)
pure virtual

Member Data Documentation

enum { ... } mfem::SundialsODELinearSolver::type

Is CVODE or ARKODE using this object?


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