29 #ifndef AMESOS_MUMPS_H 
   30 #define AMESOS_MUMPS_H 
   41 class Amesos_EpetraInterface;
 
   58 using namespace Teuchos;
 
  109 #include "dmumps_c.h" 
  136   int SymbolicFactorization() ;
 
  138   int NumericFactorization() ;
 
  147     UseTranspose_ = UseTranspose_in;
 
  179   void PrintTiming() 
const;
 
  185   void PrintStatus() 
const;
 
  205   int ComputeSchurComplement(
bool flag,
 
  206            int NumSchurComplementRows, 
int * SchurComplementRows);
 
  280   double * GetRINFO() ;
 
  292   double * GetRINFOG() ;
 
  301   void SetICNTL(
int pos, 
int value);
 
  304   void SetCNTL(
int pos, 
double value);
 
  312   if ( GetProblem()->GetOperator()->OperatorRangeMap().NumGlobalPoints() != 
 
  313        GetProblem()->GetOperator()->OperatorDomainMap().NumGlobalPoints() ) OK = 
false;
 
  347   int ConvertToTriplet(
const bool OnlyValues);     
 
  353   void CheckParameters();
 
  355   void SetICNTLandCNTL();
 
RCP< Epetra_Import > SerialImporter_
Importer from Matrix.OperatorDomainMap() to SerialMap_. 
 
int NumSymbolicFact_
Number of symbolic factorization phases. 
 
Amesos_Control: Container for some control variables. 
 
bool MatrixShapeOK() const 
Returns true if the solver can handle this matrix shape. 
 
bool UseTranspose() const 
Returns the current UseTranspose setting. 
 
std::map< int, int > ICNTL
 
RCP< Epetra_CrsMatrix > CrsSchurComplement_
Pointer to the Schur complement, as CrsMatrix. 
 
RCP< Epetra_Map > SerialMap_
Map with all elements on process 0 (for solution and rhs). 
 
int NumSchurComplementRows_
Number of rows in the Schur complement (if required) 
 
Amesos_Mumps: An object-oriented wrapper for the double precision version of MUMPS. 
 
std::map< int, double > CNTL
 
int * PermIn_
PermIn for MUMPS. 
 
int * SchurComplementRows_
Rows for the Schur complement (if required) 
 
int NumNumericFact() const 
Returns the number of numeric factorizations performed by this object. 
 
RCP< Epetra_Map > RedistrMap_
Redistributed matrix. 
 
const Epetra_Comm & Comm() const 
Returns a pointer to the Epetra_Comm communicator associated with this matrix. 
 
const Epetra_LinearProblem * Problem_
Pointer to the linear problem to be solved. 
 
std::vector< int > Col
column indices of nonzero elements 
 
int NumNumericFact_
Number of numeric factorization phases. 
 
void GetTiming(Teuchos::ParameterList &TimingParameterList) const 
Extracts timing information from the current solver and places it in the parameter list...
 
bool IsConvertToTripletOK_
true if matrix has already been converted to COO format 
 
int NumSymbolicFact() const 
Returns the number of symbolic factorizations performed by this object. 
 
int NumSolve_
Number of solves. 
 
int NumSolve() const 
Returns the number of solves performed by this object. 
 
int SetPrecscaling(double *ColSca, double *RowSca)
Set prescaling. 
 
int SetUseTranspose(bool UseTranspose_in)
If set true, X will be set to the solution of AT X = B (not A X = B) 
 
int SetColScaling(double *ColSca)
Set column scaling. 
 
void GetTiming(Teuchos::ParameterList &list) const 
Load up the current timing information into the parameter list. 
 
int MaxProcs_
Maximum number of processors in the MUMPS' communicator. 
 
Amesos_Status: Container for some status variables. 
 
Amesos_Time: Container for timing information. 
 
RCP< Epetra_CrsMatrix > RedistrMatrix_
Redistributed matrix (only if MaxProcs_ > 1). 
 
int SetOrdering(int *PermIn)
Sets ordering. 
 
std::vector< int > Row
row indices of nonzero elements 
 
RCP< Epetra_SerialDenseMatrix > DenseSchurComplement_
Pointer to the Schur complement,as DenseMatrix. 
 
std::vector< double > Val
values of nonzero elements 
 
const Epetra_LinearProblem * GetProblem() const 
Gets a pointer to the Epetra_LinearProblem. 
 
bool IsComputeSchurComplementOK_
true if the Schur complement has been computed (need to free memory) 
 
bool CheckError(const std::string SolverType, const std::string Descriptor, const Epetra_RowMatrix &A, const Epetra_MultiVector &x, const Epetra_MultiVector &b, const Epetra_MultiVector &x_exact)
 
int Solve(int, TYPE *, TYPE *, TYPE *)
 
int SetRowScaling(double *RowSca)
Set row scaling. 
 
RCP< Epetra_Import > RedistrImporter_
Redistributed importer (from Matrix().RowMatrixRowMap() to RedistrMatrix().RowMatrixRowMap()). 
 
Amesos_BaseSolver: A pure virtual class for direct solution of real-valued double-precision operators...
 
double * RowSca_
Row and column scaling. 
 
Amesos_NoCopiable: Simple class to prevent the usage of copy constructor and operator =...
 
bool UseTranspose_
If true, solve the problem with AT. 
 
Amesos_Utils: Collections of basic utilities.