NOX
Development
|
Preconditioner operator class for solving space-time (XYZT) systems. More...
#include <LOCA_Epetra_xyztPrec.H>
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. More... | |
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 . | |
virtual bool | computeJacobian (const Epetra_Vector &, Epetra_Operator &) |
Compute Jacobian . | |
virtual bool | computePreconditioner (const Epetra_Vector &x, Epetra_Operator &Prec, Teuchos::ParameterList *p=0) |
Compute preconditioner . | |
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... | |
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)
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, Teuchos::ParameterList::get(), Teuchos::rcp(), Epetra_CrsMatrix::RowMap(), and throwError().