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_CommComm () const
 Returns a pointer to the Epetra_Comm communicator associated with this operator.
virtual const Epetra_MapOperatorDomainMap () const
 Returns the Epetra_Map object associated with the domain of this operator.
virtual const Epetra_MapOperatorRangeMap () 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.
Public Member Functions inherited from NOX::Epetra::Interface::Required
 Required ()
 Constructor.
virtual ~Required ()
 Destructor.
Public Member Functions inherited from NOX::Epetra::Interface::Jacobian
 Jacobian ()
 Constructor.
virtual ~Jacobian ()
 Destructor.
Public Member Functions inherited from NOX::Epetra::Interface::Preconditioner
 Preconditioner ()
 Constructor.
virtual ~Preconditioner ()
 Destructor.

Additional Inherited Members

Public Types inherited from NOX::Epetra::Interface::Required
enum  FillType {
  Residual , Jac , Prec , FD_Res ,
  MF_Res , MF_Jac , User
}
 Type of fill that a computeF() method is used for. More...

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 NOX::Epetra::Vector::CreateView, and throwError().

Member Function Documentation

◆ Apply()

int LOCA::Epetra::xyztPrec::Apply ( const Epetra_MultiVector & X,
Epetra_MultiVector & Y ) const
virtual

Apply XYZT preconditioner operator.

Implements Epetra_Operator.

◆ ApplyInverse()

int LOCA::Epetra::xyztPrec::ApplyInverse ( const Epetra_MultiVector & X,
Epetra_MultiVector & Y ) const
virtual

Apply XYZT preconditioner operator inverse.

Implements Epetra_Operator.

References NOX::Epetra::Vector::CreateView.

◆ Comm()

const Epetra_Comm & LOCA::Epetra::xyztPrec::Comm ( ) const
virtual

Returns a pointer to the Epetra_Comm communicator associated with this operator.

Implements Epetra_Operator.

◆ computeF()

bool LOCA::Epetra::xyztPrec::computeF ( const Epetra_Vector & ,
Epetra_Vector & ,
const NOX::Epetra::Interface::Required::FillType  )
virtual

Compute residual $F$.

Implements NOX::Epetra::Interface::Required.

◆ computeJacobian()

bool LOCA::Epetra::xyztPrec::computeJacobian ( const Epetra_Vector & ,
Epetra_Operator &  )
virtual

Compute Jacobian $J$.

Implements NOX::Epetra::Interface::Jacobian.

◆ computePreconditioner()

bool LOCA::Epetra::xyztPrec::computePreconditioner ( const Epetra_Vector & x,
Epetra_Operator & Prec,
Teuchos::ParameterList * p = 0 )
virtual

Compute preconditioner $M$.

Implements NOX::Epetra::Interface::Preconditioner.

◆ HasNormInf()

bool LOCA::Epetra::xyztPrec::HasNormInf ( ) const
virtual

Have norm-inf.

Implements Epetra_Operator.

◆ Label()

const char * LOCA::Epetra::xyztPrec::Label ( ) const
virtual

Label.

Implements Epetra_Operator.

◆ NormInf()

double LOCA::Epetra::xyztPrec::NormInf ( ) const
virtual

Computing infinity norm.

Implements Epetra_Operator.

◆ OperatorDomainMap()

const Epetra_Map & LOCA::Epetra::xyztPrec::OperatorDomainMap ( ) const
virtual

Returns the Epetra_Map object associated with the domain of this operator.

Implements Epetra_Operator.

◆ OperatorRangeMap()

const Epetra_Map & LOCA::Epetra::xyztPrec::OperatorRangeMap ( ) const
virtual

Returns the Epetra_Map object associated with the range of this operator.

Implements Epetra_Operator.

◆ SetUseTranspose()

int LOCA::Epetra::xyztPrec::SetUseTranspose ( bool UseTranspose)
virtual

Set transpose.

Implements Epetra_Operator.

◆ UseTranspose()

bool LOCA::Epetra::xyztPrec::UseTranspose ( ) const
virtual

Transpose.

Implements Epetra_Operator.


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