66#ifndef AMESOS_SUPERLU_H
67#define AMESOS_SUPERLU_H
76#include "Teuchos_RCP.hpp"
80class Epetra_CrsMatrix;
81class Epetra_LinearProblem;
199 std::vector<double>
R_;
200 std::vector<double>
C_;
Amesos_BaseSolver: A pure virtual class for direct solution of real-valued double-precision operators...
Amesos_Control: Container for some control variables.
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_Superlu: Amesos interface to Xioye Li's SuperLU 3.0 serial code.
bool FactorizationOK_
If true, the factorization has been successfully computed.
std::vector< double > Aval_
Teuchos::RCP< Epetra_Import > ImportToSerial_
Importer from distributed to SerialMap_.
const Epetra_Import & ImportToSerial() const
Returns a reference to the importer.
std::vector< int > Ai_
stores the matrix in SuperLU format.
Teuchos::RCP< Epetra_CrsMatrix > SerialCrsMatrixA_
Contains a matrix with all rows assigned to processor 0.
long long NumGlobalNonzeros_
Global number of nonzeros in the matrix.
const Epetra_LinearProblem * GetProblem() const
Returns the Epetra_LinearProblem.
std::vector< int > perm_r_
SLUData * data_
Main structure for SuperLU.
int SetParameters(Teuchos::ParameterList &ParameterList)
Updates internal variables.
int MtxConvTime_
Quick access pointer to internal timing data.
~Amesos_Superlu()
Amesos_Superlu Destructor.
std::vector< int > Ap_
stores the matrix in SuperLU format.
std::vector< int > perm_c_
bool MatrixShapeOK() const
Returns true if the solver can handle this matrix shape.
Teuchos::RCP< Epetra_Map > SerialMap_
Contains a map with all elements assigned to processor 0.
Amesos_Superlu(const Epetra_LinearProblem &LinearProblem)
Amesos_Superlu Constructor.
int ConvertToSerial()
Sets up the matrix on processor 0.
const Epetra_Comm & Comm() const
Returns a pointer to the Epetra_Comm communicator associated with this operator.
bool UseTranspose_
If true, solve the linear system with the transpose of the matrix.
int iam_
Process number (i.e. Comm().MyPID()
void PrintTiming() const
Prints timing information.
std::vector< double > berr_
bool UseTranspose() const
Returns the current UseTranspose setting.
int NumNumericFact() const
Returns the number of numeric factorizations performed by this object.
const Epetra_Map & SerialMap() const
Returns a reference to the serial map.
std::vector< double > ferr_
void GetTiming(Teuchos::ParameterList &TimingParameterList) const
Extracts timing information from the current solver and places it in the parameter list.
int Factor()
Factors the matrix, no previous factorization available.
std::vector< int > etree_
void PrintStatus() const
Prints status information.
Epetra_RowMatrix * RowMatrixA_
Pointer to the linear system matrix.
Epetra_RowMatrix * SerialMatrix_
For parallel runs, stores the matrix defined on SerialMap_.
long long NumGlobalRows_
Global size of the matrix.
int NumSymbolicFact() const
Returns the number of symbolic factorizations performed by this object.
const Epetra_LinearProblem * Problem_
Pointer to the user's defined linear problem.
int SymbolicFactorization()
Performs SymbolicFactorization on the matrix A.
int NumericFactorization()
Performs NumericFactorization on the matrix A.
int NumSolve() const
Returns the number of solves performed by this object.
int PerformNumericFactorization()
PerformNumericFactorization - Call Superlu to perform numeric factorization.
int SetUseTranspose(bool useTheTranspose)
If set true, X will be set to the solution of AT X = B (not A X = B)
double * DummyArray
stores the matrix in SuperLU format.
int Solve()
Solves A X = B (or AT x = B)
int ReFactor()
Re-factors the matrix.
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.