33class Epetra_RowMatrix;
34class Epetra_MultiVector;
35#include "Epetra_Import.h"
36#include "Epetra_CrsMatrix.h"
37#include "Epetra_Map.h"
38#include "Epetra_SerialDenseVector.h"
39class Epetra_IntSerialDenseVector;
40class Epetra_SerialDenseMatrix;
41class Amesos_EpetraInterface;
50#include "Epetra_LinearProblem.h"
52#include "Epetra_MpiComm.h"
54#include "Epetra_Comm.h"
56#include "Teuchos_RCP.hpp"
126 Amesos_Mumps(
const Epetra_LinearProblem& LinearProblem);
205 int ComputeSchurComplement(
bool flag,
206 int NumSchurComplementRows,
int * SchurComplementRows);
214 Epetra_CrsMatrix * GetCrsSchurComplement();
222 Epetra_SerialDenseMatrix * GetDenseSchurComplement();
304 void SetCNTL(
int pos,
double value);
312 if (
GetProblem()->GetOperator()->OperatorRangeMap().NumGlobalPoints() !=
313 GetProblem()->GetOperator()->OperatorDomainMap().NumGlobalPoints() ) OK =
false;
327 Epetra_RowMatrix&
Matrix();
329 const Epetra_RowMatrix&
Matrix()
const;
338 Epetra_RowMatrix&
RedistrMatrix(
const bool ImportMatrix =
false);
Amesos_BaseSolver: A pure virtual class for direct solution of real-valued double-precision operators...
Amesos_Control: Container for some control variables.
Amesos_Mumps: An object-oriented wrapper for the double precision version of MUMPS.
int SymbolicFactorization()
Performs SymbolicFactorization on the matrix A.
int SetUseTranspose(bool UseTranspose_in)
If set true, X will be set to the solution of AT X = B (not A X = B)
int Solve()
Solves A X = B (or AT x = B)
RCP< Epetra_Map > SerialMap_
Map with all elements on process 0 (for solution and rhs).
int NumSolve() const
Returns the number of solves performed by this object.
double * GetRINFO()
Gets the pointer to the RINFO array (defined on all processes).
bool UseTranspose_
If true, solve the problem with AT.
Epetra_RowMatrix & Matrix()
Returns a reference to the linear system matrix.
const Epetra_LinearProblem * GetProblem() const
Gets a pointer to the Epetra_LinearProblem.
void SetCNTL(int pos, double value)
Set CNTL[pos] to value. pos is expressed in FORTRAN style (starting from 1).
void SetICNTL(int pos, int value)
Set ICNTL[pos] to value. pos is expressed in FORTRAN style (starting from 1).
Epetra_Map & RedistrMap()
Returns a reference to the map for redistributed matrix.
int NumSymbolicFact() const
Returns the number of symbolic factorizations performed by this object.
double * RowSca_
Row and column scaling.
int MtxConvTime_
Quick access pointers to the internal timers.
void PrintStatus() const
Prints information about the factorization and solution phases.
std::map< int, double > CNTL
Epetra_Import & RedistrImporter()
Returns a reference for the redistributed importer.
std::map< int, int > ICNTL
int NumericFactorization()
Performs NumericFactorization on the matrix A.
Epetra_RowMatrix & RedistrMatrix(const bool ImportMatrix=false)
Returns a reference to the redistributed matrix, imports it is ImportMatrix is true.
int * GetINFO()
Gets the pointer to the INFO array (defined on all processes).
bool IsConvertToTripletOK_
true if matrix has already been converted to COO format
int * SchurComplementRows_
Rows for the Schur complement (if required)
bool IsComputeSchurComplementOK_
true if the Schur complement has been computed (need to free memory)
RCP< Epetra_CrsMatrix > CrsSchurComplement_
Pointer to the Schur complement, as CrsMatrix.
int SetColScaling(double *ColSca)
Set column scaling.
int NumSchurComplementRows_
Number of rows in the Schur complement (if required)
std::vector< double > Val
values of nonzero elements
int SetOrdering(int *PermIn)
Sets ordering.
Amesos_Mumps(const Epetra_LinearProblem &LinearProblem)
Amesos_Mumps Constructor.
int MaxProcs_
Maximum number of processors in the MUMPS' communicator.
double * GetRINFOG()
Gets the pointer to the RINFOG array (defined on host only).
RCP< Epetra_Map > RedistrMap_
Redistributed matrix.
RCP< Epetra_CrsMatrix > RedistrMatrix_
Redistributed matrix (only if MaxProcs_ > 1).
RCP< Epetra_Import > RedistrImporter_
Redistributed importer (from Matrix().RowMatrixRowMap() to RedistrMatrix().RowMatrixRowMap()).
std::vector< int > Col
column indices of nonzero elements
int * GetINFOG()
Get the pointer to the INFOG array (defined on host only).
std::vector< int > Row
row indices of nonzero elements
int NumNumericFact() const
Returns the number of numeric factorizations performed by this object.
void PrintTiming() const
Prints timing information.
bool UseTranspose() const
Returns the current UseTranspose setting.
const Epetra_Comm & Comm() const
Returns a pointer to the Epetra_Comm communicator associated with this matrix.
void GetTiming(Teuchos::ParameterList &TimingParameterList) const
Extracts timing information from the current solver and places it in the parameter list.
bool MatrixShapeOK() const
Returns true if the solver can handle this matrix shape.
int SetParameters(Teuchos::ParameterList &ParameterList)
Updates internal variables.
int SetPrecscaling(double *ColSca, double *RowSca)
Set prescaling.
int * PermIn_
PermIn for MUMPS.
Epetra_Import & SerialImporter()
Returns a reference to the importer for SerialMap().
int CheckError()
Checks for MUMPS error, prints them if any. See MUMPS' manual.
int ConvertToTriplet(const bool OnlyValues)
Converts to MUMPS format (COO format).
const Epetra_LinearProblem * Problem_
Pointer to the linear problem to be solved.
void CheckParameters()
Check input parameters.
RCP< Epetra_Import > SerialImporter_
Importer from Matrix.OperatorDomainMap() to SerialMap_.
RCP< Epetra_SerialDenseMatrix > DenseSchurComplement_
Pointer to the Schur complement,as DenseMatrix.
int SetRowScaling(double *RowSca)
Set row scaling.
Epetra_Map & SerialMap()
Returns a reference to the map with all elements on process 0.
~Amesos_Mumps(void)
Amesos_Mumps Destructor.
void Destroy()
Destroys all data associated with \sl this object.
Amesos_NoCopiable: Simple class to prevent the usage of copy constructor and operator =.
Amesos_Status: Container for some status variables.
int NumSymbolicFact_
Number of symbolic factorization phases.
int NumSolve_
Number of solves.
int NumNumericFact_
Number of numeric factorization phases.
Amesos_Time: Container for timing information.
void GetTiming(Teuchos::ParameterList &list) const
Load up the current timing information into the parameter list.
Amesos_Utils: Collections of basic utilities.