17#ifdef MFEM_USE_SUPERLU
31#ifdef MFEM_USE_SUPERLU5
133 MFEM_ABORT(
"SuperLURowLocMatrix::Mult: Matrix vector products are not "
271 void Init(MPI_Comm comm);
274 void HandleError(
int info)
const;
A class to initialize the size of a Tensor.
SuperLURowLocMatrix(MPI_Comm comm, int num_loc_rows, HYPRE_BigInt first_loc_row, HYPRE_BigInt glob_nrows, HYPRE_BigInt glob_ncols, int *I, HYPRE_BigInt *J, double *data)
Creates a general parallel matrix from a local CSR matrix on each processor described by the I,...
void Mult(const Vector &x, Vector &y) const
Matrix Vector products are not supported for this type of matrix.
void * InternalData() const
HYPRE_BigInt GetGlobalNumColumns() const
Get the number of global columns in this matrix.
MPI_Comm GetComm() const
Get the MPI communicator for this matrix.
HYPRE_BigInt GetGlobalNumRows() const
Get the number of global rows in this matrix.
SuperLUSolver(MPI_Comm comm, int npdep=1)
Constructor with MPI_Comm parameter.
void ArrayMultTranspose(const Array< const Vector * > &X, Array< Vector * > &Y) const
Factor and solve the transposed linear systems for all i in the X and Y arrays.
void SetColumnPermutation(superlu::ColPerm col_perm)
Specify how to permute the columns of the matrix.
void SetRowPermutation(superlu::RowPerm row_perm)
Specify how to permute the rows of the matrix.
void SetParSymbFact(bool par)
Specify whether to perform parallel symbolic factorization.
void * ScalePermstructPtr_
~SuperLUSolver()
Default destructor.
const SuperLURowLocMatrix * APtr_
void SetReplaceTinyPivot(bool rtp)
Specify whether to replace tiny diagonals encountered during pivot with (default false)
void SetNumLookAheads(int num_lookaheads)
Specify the number of levels in the look-ahead factorization (default 10)
void MultTranspose(const Vector &x, Vector &y) const
Factor and solve the transposed linear system .
void SetFact(superlu::Fact fact)
Specify what information has been provided ahead of time about the factorization of A.
void ArrayMult(const Array< const Vector * > &X, Array< Vector * > &Y) const
Factor and solve the linear systems for all i in the X and Y arrays.
void SetEquilibriate(bool equil)
Specify whether to equibrate the system scaling to make the rows and columns have unit norms....
void Mult(const Vector &x, Vector &y) const
Factor and solve the linear system .
void SetLookAheadElimTree(bool etree)
Specifies whether to use the elimination tree computed from the serial symbolic factorization to perf...
void SetSymmetricPattern(bool sym)
Specify whether the matrix has a symmetric pattern to avoid extra work (default false)
void SetOperator(const Operator &op)
Set the operator/matrix.
void SetIterativeRefine(superlu::IterRefine iter_ref)
Specify how to handle iterative refinement.
void SetPrintStatistics(bool print_stat)
Specify whether to print the solver statistics (default true)
ColPerm
Define the type of column permutation.
@ NATURAL
Natural ordering.
@ MMD_ATA
Minimum degree ordering on structure of .
@ METIS_AT_PLUS_A
Sequential ordering on structure of using the METIS package.
@ MMD_AT_PLUS_A
Minimum degree ordering on structure of .
@ PARMETIS
Sequential ordering on structure of using the PARMETIS package.
@ MY_PERMC
User defined column permutation.
@ ZOLTAN
Use the Zoltan library from Sandia to define the column ordering.
@ COLAMD
Approximate minimum degree column ordering.
IterRefine
Define how to do iterative refinement.
@ SLU_SINGLE
Iterative refinement accumulating residuals in a float.
@ SLU_DOUBLE
Iterative refinement accumulating residuals in a double.
@ SLU_EXTRA
Iterative refinement accumulating residuals in a higher precision variable.
@ NOREFINE
No interative refinement.
@ NOROWPERM
No row permutation.
@ LargeDiag_MC64
Duff/Koster algorithm to make the diagonals large compared to the off-diagonals. Use LargeDiag for Su...
@ LargeDiag_HWPM
Parallel approximate weight perfect matching to make the diagonals large compared to the off-diagonal...
@ MY_PERMR
User defined row permutation.
Fact
Define the information that is provided about the matrix factorization ahead of time.
@ DOFACT
No information is provided, do the full factorization.
@ SamePattern_SameRowPerm
Matrix A will be factored assuming the sparsity is the same and the matrix as a previous are similar ...
@ FACTORED
The matrix A was provided in fully factored form and no factorization is needed.
@ SamePattern
Matrix A will be factored assuming the sparsity is the same as a previous factorization....