MFEM  v4.1.0 Finite element discretization library
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 Types

enum  Type { ODE_SOLVER_LINEAR, ODE_SOLVER_GENERAL }

## Public Member Functions

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

virtual ~PetscODESolver ()

virtual void Init (TimeDependentOperator &f_, enum PetscODESolver::Type type)
Initialize the ODE solver. More...

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

void SetType (PetscODESolver::Type)

PetscODESolver::Type GetType () const

void SetJacobianType (Operator::Type type)

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...

void SetBCHandler (PetscBCHandler *bch)
Sets the object to handle essential boundary conditions. More...

void SetPreconditionerFactory (PetscPreconditionerFactory *factory)
Sets the object for the creation of the preconditioner. More...

operator PetscObject () const
Conversion function to PetscObject. More...

MPI_Comm GetComm () const
Get the associated MPI communicator. 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 Member Functions inherited from mfem::PetscSolver
void CreatePrivateContext ()

void FreePrivateContext ()

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

PetscBCHandlerbchandler
Handler for boundary conditions. More...

void * private_ctx
Private context for solver. More...

bool operatorset
Boolean to handle SetOperator calls. More...

Protected Attributes inherited from mfem::ODESolver
TimeDependentOperatorf
Pointer to the associated TimeDependentOperator. More...

MemoryType mem_type

## Detailed Description

Abstract class for PETSc's ODE solvers.

Definition at line 797 of file petsc.hpp.

## Member Enumeration Documentation

The type of the ODE. Use ODE_SOLVER_LINEAR if the jacobians are linear and independent of time.

Enumerator
ODE_SOLVER_LINEAR
ODE_SOLVER_GENERAL

Definition at line 802 of file petsc.hpp.

## Constructor & Destructor Documentation

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

Definition at line 3455 of file petsc.cpp.

 mfem::PetscODESolver::~PetscODESolver ( )
virtual

Definition at line 3480 of file petsc.cpp.

## Member Function Documentation

 PetscODESolver::Type mfem::PetscODESolver::GetType ( ) const

Definition at line 3561 of file petsc.cpp.

 void mfem::PetscODESolver::Init ( TimeDependentOperator & f_, enum PetscODESolver::Type type )
virtual

Initialize the ODE solver.

Definition at line 3488 of file petsc.cpp.

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

Associate a TimeDependentOperator with the ODE solver.

This method has to be called:

Reimplemented from mfem::ODESolver.

Definition at line 814 of file petsc.hpp.

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

Conversion function to PETSc's TS type.

Definition at line 827 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] 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 from mfem::ODESolver.

Definition at line 3610 of file petsc.cpp.

 void mfem::PetscODESolver::SetJacobianType ( Operator::Type type )

Specifies the desired format of the Jacobian in case a PetscParMatrix is not returned by the GetGradient methods

Definition at line 3555 of file petsc.cpp.

 void mfem::PetscODESolver::SetType ( PetscODESolver::Type type )

Definition at line 3567 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] 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.

Implements mfem::ODESolver.

Definition at line 3585 of file petsc.cpp.

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