MFEM  v3.3
Finite element discretization library
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Pages
Public Member Functions | List of all members
mfem::PetscODESolver Class Reference

Abstract class for PETSc's ODE solvers. More...

#include <petsc.hpp>

Inheritance diagram for mfem::PetscODESolver:
[legend]
Collaboration diagram for mfem::PetscODESolver:
[legend]

Public Member Functions

 PetscODESolver (MPI_Comm comm, const std::string &prefix=std::string())
 
virtual ~PetscODESolver ()
 
virtual void Init (TimeDependentOperator &f_)
 Associate a TimeDependentOperator with the ODE solver. More...
 
virtual void Step (Vector &x, double &t, double &dt)
 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 t_final)
 Perform time integration from time t [in] to time tf [in]. More...
 
 operator TS () const
 Conversion function to PETSc's TS type. More...
 
- Public Member Functions inherited from mfem::PetscSolver
 PetscSolver ()
 Construct an empty PetscSolver. Initialize protected objects to NULL. More...
 
virtual ~PetscSolver ()
 Destroy the PetscParVectors allocated (if any). More...
 
void Customize (bool customize=true) const
 Customize object with options set. More...
 
int GetConverged ()
 
int GetNumIterations ()
 
double GetFinalNorm ()
 
void SetMonitor (PetscSolverMonitor *ctx)
 Sets user-defined monitoring routine. More...
 
 operator PetscObject () const
 Conversion function to PetscObject. More...
 
void SetTol (double tol)
 
void SetRelTol (double tol)
 
void SetAbsTol (double tol)
 
void SetMaxIter (int max_iter)
 
void SetPrintLevel (int plev)
 
- Public Member Functions inherited from mfem::ODESolver
 ODESolver ()
 
virtual ~ODESolver ()
 

Additional Inherited Members

- Protected Attributes inherited from mfem::PetscSolver
bool clcustom
 Boolean to handle SetFromOptions calls. More...
 
PetscObject obj
 The actual PETSc object (KSP, PC, SNES or TS). More...
 
PetscClassId cid
 The class id of the actual PETSc object. More...
 
PetscParVectorB
 Right-hand side and solution vector. More...
 
PetscParVectorX
 
PetscSolverMonitormonitor_ctx
 Monitor context. More...
 
bool operatorset
 Boolean to handle SetOperator calls. More...
 
- Protected Attributes inherited from mfem::ODESolver
TimeDependentOperatorf
 Pointer to the associated TimeDependentOperator. More...
 

Detailed Description

Abstract class for PETSc's ODE solvers.

Definition at line 520 of file petsc.hpp.

Constructor & Destructor Documentation

mfem::PetscODESolver::PetscODESolver ( MPI_Comm  comm,
const std::string &  prefix = std::string() 
)

Definition at line 2250 of file petsc.cpp.

mfem::PetscODESolver::~PetscODESolver ( )
virtual

Definition at line 2269 of file petsc.cpp.

Member Function Documentation

void mfem::PetscODESolver::Init ( TimeDependentOperator f)
virtual

Associate a TimeDependentOperator with the ODE solver.

This method has to be called:

Reimplemented from mfem::ODESolver.

Definition at line 2277 of file petsc.cpp.

mfem::PetscODESolver::operator TS ( ) const
inline

Conversion function to PETSc's TS type.

Definition at line 532 of file petsc.hpp.

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

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

Parameters
[in,out]xApproximate solution.
[in,out]tTime associated with the approximate solution x.
[in,out]dtTime step size.
[in]tfRequested 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 from mfem::ODESolver.

Definition at line 2368 of file petsc.cpp.

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

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

Parameters
[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 2343 of file petsc.cpp.


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