MFEM  v3.4
Finite element discretization library
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Pages
Public Types | 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 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 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...
 
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...
 

Detailed Description

Abstract class for PETSc's ODE solvers.

Definition at line 629 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 634 of file petsc.hpp.

Constructor & Destructor Documentation

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

Definition at line 2692 of file petsc.cpp.

mfem::PetscODESolver::~PetscODESolver ( )
virtual

Definition at line 2717 of file petsc.cpp.

Member Function Documentation

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

Initialize the ODE solver.

Definition at line 2725 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 646 of file petsc.hpp.

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

Conversion function to PETSc's TS type.

Definition at line 656 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 2849 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 2816 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 2822 of file petsc.cpp.


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