Ifpack Package Browser (Single Doxygen Collection)  Development
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Protected Member Functions | Private Attributes | List of all members
Ifpack_OverlapSolveObject Class Referenceabstract

Ifpack_OverlapSolveObject: Provides Overlapped Forward/back solve services for Ifpack. More...

#include <Ifpack_OverlapSolveObject.h>

Inheritance diagram for Ifpack_OverlapSolveObject:
Inheritance graph
[legend]

Protected Member Functions

virtual int SetupXY (bool Trans, const Epetra_MultiVector &Xin, const Epetra_MultiVector &Yin, Epetra_MultiVector *&Xout, Epetra_MultiVector *&Yout) const =0
 

Private Attributes

char * Label_
 
Epetra_CrsMatrixL_
 
bool UseLTrans_
 
Epetra_VectorD_
 
bool UseDInv_
 
Epetra_CrsMatrixU_
 
bool UseUTrans_
 
bool UseTranspose_
 
const Epetra_CommComm_
 
double Condest_
 
Epetra_FlopsCounter_
 
Epetra_CombineMode OverlapMode_
 
 Ifpack_OverlapSolveObject (char *Label, const Epetra_Comm &Comm)
 Constructor. More...
 
 Ifpack_OverlapSolveObject (const Ifpack_OverlapSolveObject &Source)
 Copy constructor. More...
 
virtual ~Ifpack_OverlapSolveObject ()
 Ifpack_OverlapSolveObject Destructor. More...
 
void SetOverlapMode (Epetra_CombineMode OverlapMode)
 Generate Ifpack_OverlapGraph object using current settings. More...
 
int SetLowerOperator (Epetra_CrsMatrix *L, bool UseLTrans)
 Define the operator to be used for the lower triangle. More...
 
int SetDiagonal (Epetra_Vector *D, bool UseDInv)
 Define the vector to be used for the diagonal. More...
 
int SetUpperOperator (Epetra_CrsMatrix *U, bool UseUTrans)
 Define the operator to be used for the upper triangle. More...
 
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). More...
 
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. More...
 
int Condest (bool Trans, double &ConditionNumberEstimate) const
 Returns the maximum over all the condition number estimate for each local ILU set of factors. More...
 
Epetra_CombineMode OverlapMode () const
 Returns the overlap mode used to combine terms that are redundantly computed. More...
 
int NumGlobalNonzeros () const
 Returns the number of nonzero entries in the global graph. More...
 
int NumMyNonzeros () const
 Returns the number of nonzero entries in the local graph. More...
 
const Epetra_CrsMatrixL () const
 Returns the address of the L factor associated with this factored matrix. More...
 
const Epetra_VectorD () const
 Returns the address of the D factor associated with this factored matrix. More...
 
const Epetra_CrsMatrixU () const
 Returns the address of the L factor associated with this factored matrix. More...
 
const char * Label () const
 Returns a character string describing the operator. More...
 
int SetUseTranspose (bool UseTranspose)
 If set true, transpose of this operator will be applied. More...
 
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. More...
 
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. More...
 
double NormInf () const
 Returns 0.0 because this class cannot compute Inf-norm. More...
 
bool HasNormInf () const
 Returns false because this class cannot compute an Inf-norm. More...
 
bool UseTranspose () const
 Returns the current UseTranspose setting. More...
 
const Epetra_MapOperatorDomainMap () const
 Returns the Epetra_Map object associated with the domain of this operator. More...
 
const Epetra_MapOperatorRangeMap () const
 Returns the Epetra_Map object associated with the range of this operator. More...
 
const Epetra_CommComm () const
 Returns the Epetra_BlockMap object associated with the range of this matrix operator. More...
 

Additional Inherited Members

Detailed Description

Ifpack_OverlapSolveObject: Provides Overlapped Forward/back solve services for Ifpack.

Definition at line 54 of file Ifpack_OverlapSolveObject.h.

Constructor & Destructor Documentation

Ifpack_OverlapSolveObject::Ifpack_OverlapSolveObject ( char *  Label,
const Epetra_Comm Comm 
)

Constructor.

Definition at line 53 of file Ifpack_OverlapSolveObject.cpp.

Ifpack_OverlapSolveObject::Ifpack_OverlapSolveObject ( const Ifpack_OverlapSolveObject Source)

Copy constructor.

Definition at line 68 of file Ifpack_OverlapSolveObject.cpp.

Ifpack_OverlapSolveObject::~Ifpack_OverlapSolveObject ( )
virtual

Ifpack_OverlapSolveObject Destructor.

Definition at line 82 of file Ifpack_OverlapSolveObject.cpp.

Member Function Documentation

void Ifpack_OverlapSolveObject::SetOverlapMode ( Epetra_CombineMode  OverlapMode)
inline

Generate Ifpack_OverlapGraph object using current settings.

Definition at line 71 of file Ifpack_OverlapSolveObject.h.

int Ifpack_OverlapSolveObject::SetLowerOperator ( Epetra_CrsMatrix L,
bool  UseLTrans 
)
inline

Define the operator to be used for the lower triangle.

Definition at line 74 of file Ifpack_OverlapSolveObject.h.

int Ifpack_OverlapSolveObject::SetDiagonal ( Epetra_Vector D,
bool  UseDInv 
)
inline

Define the vector to be used for the diagonal.

Definition at line 77 of file Ifpack_OverlapSolveObject.h.

int Ifpack_OverlapSolveObject::SetUpperOperator ( Epetra_CrsMatrix U,
bool  UseUTrans 
)
inline

Define the operator to be used for the upper triangle.

Definition at line 80 of file Ifpack_OverlapSolveObject.h.

int Ifpack_OverlapSolveObject::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).

Parameters
InTrans -If true, solve transpose problem.
InX - A Epetra_MultiVector of dimension NumVectors to solve for.
OutY -A Epetra_MultiVector of dimension NumVectorscontaining result.
Returns
Integer error code, set to 0 if successful.

Definition at line 86 of file Ifpack_OverlapSolveObject.cpp.

int Ifpack_OverlapSolveObject::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.

Parameters
InTrans -If true, multiply by L^T, D and U^T in that order.
InX - A Epetra_MultiVector of dimension NumVectors to solve for.
OutY -A Epetra_MultiVector of dimension NumVectorscontaining result.
Returns
Integer error code, set to 0 if successful.

Definition at line 118 of file Ifpack_OverlapSolveObject.cpp.

int Ifpack_OverlapSolveObject::Condest ( bool  Trans,
double &  ConditionNumberEstimate 
) const

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.

Parameters
InTrans -If true, solve transpose problem.
OutConditionNumberEstimate - The maximum across all processors of the infinity-norm estimate of the condition number of the inverse of LDU.

Definition at line 165 of file Ifpack_OverlapSolveObject.cpp.

Epetra_CombineMode Ifpack_OverlapSolveObject::OverlapMode ( ) const
inline

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.

Definition at line 132 of file Ifpack_OverlapSolveObject.h.

int Ifpack_OverlapSolveObject::NumGlobalNonzeros ( ) const
inline

Returns the number of nonzero entries in the global graph.

Definition at line 135 of file Ifpack_OverlapSolveObject.h.

int Ifpack_OverlapSolveObject::NumMyNonzeros ( ) const
inline

Returns the number of nonzero entries in the local graph.

Definition at line 138 of file Ifpack_OverlapSolveObject.h.

const Epetra_CrsMatrix& Ifpack_OverlapSolveObject::L ( ) const
inline

Returns the address of the L factor associated with this factored matrix.

Definition at line 141 of file Ifpack_OverlapSolveObject.h.

const Epetra_Vector& Ifpack_OverlapSolveObject::D ( ) const
inline

Returns the address of the D factor associated with this factored matrix.

Definition at line 144 of file Ifpack_OverlapSolveObject.h.

const Epetra_CrsMatrix& Ifpack_OverlapSolveObject::U ( ) const
inline

Returns the address of the L factor associated with this factored matrix.

Definition at line 147 of file Ifpack_OverlapSolveObject.h.

const char* Ifpack_OverlapSolveObject::Label ( ) const
inlinevirtual

Returns a character string describing the operator.

Implements Epetra_Operator.

Definition at line 153 of file Ifpack_OverlapSolveObject.h.

int Ifpack_OverlapSolveObject::SetUseTranspose ( bool  UseTranspose)
inlinevirtual

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.

Parameters
InUseTranspose -If true, multiply by the transpose of operator, otherwise just use operator.
Returns
Always returns 0.

Implements Epetra_Operator.

Definition at line 165 of file Ifpack_OverlapSolveObject.h.

int Ifpack_OverlapSolveObject::Apply ( const Epetra_MultiVector X,
Epetra_MultiVector Y 
) const
inlinevirtual

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.

Parameters
InX - A Epetra_MultiVector of dimension NumVectors to multiply with matrix.
OutY -A Epetra_MultiVector of dimension NumVectors containing result.
Returns
Integer error code, set to 0 if successful.

Implements Epetra_Operator.

Definition at line 179 of file Ifpack_OverlapSolveObject.h.

int Ifpack_OverlapSolveObject::ApplyInverse ( const Epetra_MultiVector X,
Epetra_MultiVector Y 
) const
inlinevirtual

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.

Parameters
InX - A Epetra_MultiVector of dimension NumVectors to solve for.
OutY -A Epetra_MultiVector of dimension NumVectors containing result.
Returns
Integer error code, set to 0 if successful.

Implements Epetra_Operator.

Definition at line 196 of file Ifpack_OverlapSolveObject.h.

double Ifpack_OverlapSolveObject::NormInf ( ) const
inlinevirtual

Returns 0.0 because this class cannot compute Inf-norm.

Implements Epetra_Operator.

Definition at line 200 of file Ifpack_OverlapSolveObject.h.

bool Ifpack_OverlapSolveObject::HasNormInf ( ) const
inlinevirtual

Returns false because this class cannot compute an Inf-norm.

Implements Epetra_Operator.

Definition at line 203 of file Ifpack_OverlapSolveObject.h.

bool Ifpack_OverlapSolveObject::UseTranspose ( ) const
inlinevirtual

Returns the current UseTranspose setting.

Implements Epetra_Operator.

Definition at line 206 of file Ifpack_OverlapSolveObject.h.

const Epetra_Map& Ifpack_OverlapSolveObject::OperatorDomainMap ( ) const
inlinevirtual

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

Implements Epetra_Operator.

Definition at line 209 of file Ifpack_OverlapSolveObject.h.

const Epetra_Map& Ifpack_OverlapSolveObject::OperatorRangeMap ( ) const
inlinevirtual

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

Implements Epetra_Operator.

Definition at line 212 of file Ifpack_OverlapSolveObject.h.

const Epetra_Comm& Ifpack_OverlapSolveObject::Comm ( ) const
inlinevirtual

Returns the Epetra_BlockMap object associated with the range of this matrix operator.

Implements Epetra_Operator.

Definition at line 215 of file Ifpack_OverlapSolveObject.h.

int Ifpack_OverlapSolveObject::SetupXY ( bool  Trans,
const Epetra_MultiVector Xin,
const Epetra_MultiVector Yin,
Epetra_MultiVector *&  Xout,
Epetra_MultiVector *&  Yout 
) const
protectedpure virtual

Definition at line 151 of file Ifpack_OverlapSolveObject.cpp.

Member Data Documentation

char* Ifpack_OverlapSolveObject::Label_
private

Definition at line 223 of file Ifpack_OverlapSolveObject.h.

Epetra_CrsMatrix* Ifpack_OverlapSolveObject::L_
private

Definition at line 224 of file Ifpack_OverlapSolveObject.h.

bool Ifpack_OverlapSolveObject::UseLTrans_
private

Definition at line 225 of file Ifpack_OverlapSolveObject.h.

Epetra_Vector* Ifpack_OverlapSolveObject::D_
private

Definition at line 226 of file Ifpack_OverlapSolveObject.h.

bool Ifpack_OverlapSolveObject::UseDInv_
private

Definition at line 227 of file Ifpack_OverlapSolveObject.h.

Epetra_CrsMatrix* Ifpack_OverlapSolveObject::U_
private

Definition at line 228 of file Ifpack_OverlapSolveObject.h.

bool Ifpack_OverlapSolveObject::UseUTrans_
private

Definition at line 229 of file Ifpack_OverlapSolveObject.h.

bool Ifpack_OverlapSolveObject::UseTranspose_
private

Definition at line 230 of file Ifpack_OverlapSolveObject.h.

const Epetra_Comm& Ifpack_OverlapSolveObject::Comm_
private

Definition at line 231 of file Ifpack_OverlapSolveObject.h.

double Ifpack_OverlapSolveObject::Condest_
mutableprivate

Definition at line 232 of file Ifpack_OverlapSolveObject.h.

Epetra_Flops* Ifpack_OverlapSolveObject::Counter_
private

Definition at line 233 of file Ifpack_OverlapSolveObject.h.

Epetra_CombineMode Ifpack_OverlapSolveObject::OverlapMode_
private

Definition at line 234 of file Ifpack_OverlapSolveObject.h.


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