#include <Ifpack_OverlapSolveObject.h>
Inheritance diagram for Ifpack_OverlapSolveObject:
Public Member Functions  
Constructors/Destructor  
Ifpack_OverlapSolveObject (char *Label, const Epetra_Comm &Comm)  
Constructor.  
Ifpack_OverlapSolveObject (const Ifpack_OverlapSolveObject &Source)  
Copy constructor.  
virtual  ~Ifpack_OverlapSolveObject () 
Ifpack_OverlapSolveObject Destructor.  
Initialization methods.  
void  SetOverlapMode (Epetra_CombineMode OverlapMode) 
Generate Ifpack_OverlapGraph object using current settings.  
int  SetLowerOperator (Epetra_CrsMatrix *L, bool UseLTrans) 
Define the operator to be used for the lower triangle.  
int  SetDiagonal (Epetra_Vector *D, bool UseDInv) 
Define the vector to be used for the diagonal.  
int  SetUpperOperator (Epetra_CrsMatrix *U, bool UseUTrans) 
Define the operator to be used for the upper triangle.  
Mathematical functions.  
int  Solve (bool Trans, const Epetra_MultiVector &X, Epetra_MultiVector &Y) const 
Returns the result of a Ifpack_CrsIlut forward/back solve on a Epetra_MultiVector X in Y (works for Epetra_Vectors also).  
int  Multiply (bool Trans, const Epetra_MultiVector &X, Epetra_MultiVector &Y) const 
Returns the result of multiplying U, D and L in that order on an Epetra_MultiVector X in Y.  
int  Condest (bool Trans, double &ConditionNumberEstimate) const 
Returns the maximum over all the condition number estimate for each local ILU set of factors.  
Attribute access methods.  
Epetra_CombineMode  OverlapMode () const 
Returns the overlap mode used to combine terms that are redundantly computed.  
int  NumGlobalNonzeros () const 
Returns the number of nonzero entries in the global graph.  
int  NumMyNonzeros () const 
Returns the number of nonzero entries in the local graph.  
const Epetra_CrsMatrix &  L () const 
Returns the address of the L factor associated with this factored matrix.  
const Epetra_Vector &  D () const 
Returns the address of the D factor associated with this factored matrix.  
const Epetra_CrsMatrix &  U () const 
Returns the address of the L factor associated with this factored matrix.  
Additional methods required to support the Epetra_Operator interface.  
char *  Label () const 
Returns a character string describing the operator.  
int  SetUseTranspose (bool UseTranspose) 
If set true, transpose of this operator will be applied.  
int  Apply (const Epetra_MultiVector &X, Epetra_MultiVector &Y) const 
Returns the result of a Epetra_Operator applied to a Epetra_MultiVector X in Y.  
int  ApplyInverse (const Epetra_MultiVector &X, Epetra_MultiVector &Y) const 
Returns the result of a Epetra_Operator inverse applied to an Epetra_MultiVector X in Y.  
double  NormInf () const 
Returns 0.0 because this class cannot compute Infnorm.  
bool  HasNormInf () const 
Returns false because this class cannot compute an Infnorm.  
bool  UseTranspose () const 
Returns the current UseTranspose setting.  
const Epetra_Map &  OperatorDomainMap () const 
Returns the Epetra_Map object associated with the domain of this operator.  
const Epetra_Map &  OperatorRangeMap () const 
Returns the Epetra_Map object associated with the range of this operator.  
const Epetra_Comm &  Comm () const 
Returns the Epetra_BlockMap object associated with the range of this matrix operator.  
Protected Member Functions  
virtual int  SetupXY (bool Trans, const Epetra_MultiVector &Xin, const Epetra_MultiVector &Yin, Epetra_MultiVector *&Xout, Epetra_MultiVector *&Yout) const =0 

Returns the result of a Epetra_Operator applied to a Epetra_MultiVector X in Y. Note that this implementation of Apply does NOT perform a forward back solve with the LDU factorization. Instead it applies these operators via multiplication with U, D and L respectively. The ApplyInverse() method performs a solve.
Implements Epetra_Operator. 

Returns the result of a Epetra_Operator inverse applied to an Epetra_MultiVector X in Y. In this implementation, we use several existing attributes to determine how virtual method ApplyInverse() should call the concrete method Solve(). We pass in the UpperTriangular(), the Epetra_CrsMatrix::UseTranspose(), and NoDiagonal() methods. The most notable warning is that if a matrix has no diagonal values we assume that there is an implicit unit diagonal that should be accounted for when doing a triangular solve.
Implements Epetra_Operator. 

Returns the maximum over all the condition number estimate for each local ILU set of factors. This functions computes a local condition number estimate on each processor and return the maximum over all processor of the estimate.


Returns the result of multiplying U, D and L in that order on an Epetra_MultiVector X in Y.


Returns the overlap mode used to combine terms that are redundantly computed. Since rows of the graph, and any related matrices are multiply owned, some values in the subdomain solves will be computed on multiple processors. The overlap mode is used to determine how the redundant values that come in from other processors will be handled. 

If set true, transpose of this operator will be applied. This flag allows the transpose of the given operator to be used implicitly. Setting this flag affects only the Apply() and ApplyInverse() methods. If the implementation of this interface does not support transpose use, this method should return a value of 1.
Implements Epetra_Operator. 

Returns the result of a Ifpack_CrsIlut forward/back solve on a Epetra_MultiVector X in Y (works for Epetra_Vectors also).
