NOX Development
Loading...
Searching...
No Matches
LOCA::Epetra::xyztPrec Class Reference

Preconditioner operator class for solving space-time (XYZT) systems. More...

#include <LOCA_Epetra_xyztPrec.H>

Inheritance diagram for LOCA::Epetra::xyztPrec:
Collaboration diagram for LOCA::Epetra::xyztPrec:

Public Member Functions

 xyztPrec (EpetraExt::BlockCrsMatrix &jacobian, Epetra_CrsMatrix &splitJac, EpetraExt::BlockVector &solution, EpetraExt::BlockVector &solutionOverlap, Epetra_Import &overlapImporter, Teuchos::ParameterList &precPrintParams, Teuchos::ParameterList &precLSParams, const Teuchos::RCP< EpetraExt::MultiComm > globalComm_)
 Constructor.
virtual ~xyztPrec ()
 Destructor.
virtual int SetUseTranspose (bool UseTranspose)
 Set transpose.
virtual int Apply (const Epetra_MultiVector &X, Epetra_MultiVector &Y) const
 Apply XYZT preconditioner operator.
virtual int ApplyInverse (const Epetra_MultiVector &X, Epetra_MultiVector &Y) const
 Apply XYZT preconditioner operator inverse.
virtual double NormInf () const
 Computing infinity norm.
virtual const char * Label () const
 Label.
virtual bool UseTranspose () const
 Transpose.
virtual bool HasNormInf () const
 Have norm-inf.
virtual const Epetra_Comm & Comm () const
 Returns a pointer to the Epetra_Comm communicator associated with this operator.
virtual const Epetra_Map & OperatorDomainMap () const
 Returns the Epetra_Map object associated with the domain of this operator.
virtual const Epetra_Map & OperatorRangeMap () const
 Returns the Epetra_Map object associated with the range of this operator.
virtual bool computeF (const Epetra_Vector &, Epetra_Vector &, const NOX::Epetra::Interface::Required::FillType)
 Compute residual $F$.
virtual bool computeJacobian (const Epetra_Vector &, Epetra_Operator &)
 Compute Jacobian $J$.
virtual bool computePreconditioner (const Epetra_Vector &x, Epetra_Operator &Prec, Teuchos::ParameterList *p=0)
 Compute preconditioner $M$.
virtual void throwError (const std::string &functionName, const std::string &errorMsg) const
 Exception handler for the XYZT preconditioner class.

Detailed Description

Preconditioner operator class for solving space-time (XYZT) systems.

Implements right preconditioning operators for use in global XYZT Jacobian matrix solves.

  • Global - applies a right preconditioner to the global XYZT Jacobian matrix

  • Sequential - applies single block right preconditioning sequentially in time. This preconditioner is intended as an efficient competitor to the Global preconditioner by preconditioning using only the nonzero blocks.

  • Parallel - simultaneously applies sequential right preconditioning across the decoupled time domains. This means there is no communication of solutions between time doamins.

  • BlockDiagonal - similar to the Parallel preconditioner, simultaneously applies sequential right preconditioning across the decoupled time domains, but only using the diagonal blocks of the Jacobian matrix. Note that the BlockDiagonal and Parallel preconditioners are equivalent when each time domain contains only one time step.

  • Parareal - two pass right preconditioning applying Sequential preconditioner over a coarse time grid (first time steps of each time domain) and then Parallel preconditioning across the decoupled time domains. This can be thought of as a linearized parareal strategy for acheiving parallelism in time. The benefit over Parallel preconditioning alone is that an estimate of the solution from the time step on the previous domain is computed to help accelerate convergence.

  • BDSDT (block diagonal in space, diagonal in time)

Constructor & Destructor Documentation

◆ xyztPrec()

LOCA::Epetra::xyztPrec::xyztPrec ( EpetraExt::BlockCrsMatrix & jacobian,
Epetra_CrsMatrix & splitJac,
EpetraExt::BlockVector & solution,
EpetraExt::BlockVector & solutionOverlap,
Epetra_Import & overlapImporter,
Teuchos::ParameterList & precPrintParams,
Teuchos::ParameterList & precLSParams,
const Teuchos::RCP< EpetraExt::MultiComm > globalComm_ )

Constructor.

Builds a preconditioner operator for a full XYZT Jacobian

matrix jacobian. Right preconditioner applies are controlled using the parameters in precLSParams.

References throwError().


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