MFEM v4.10.0
Finite element discretization library
Loading...
Searching...
No Matches
mfem::HypreParMatrix Class Reference

Wrapper for hypre's ParCSR matrix class. More...

#include <hypre.hpp>

Inheritance diagram for mfem::HypreParMatrix:
[legend]
Collaboration diagram for mfem::HypreParMatrix:
[legend]

Public Member Functions

 HypreParMatrix ()
 An empty matrix to be used as a reference to an existing matrix.
 
void WrapHypreParCSRMatrix (hypre_ParCSRMatrix *a, bool owner=true)
 Converts hypre's format to HypreParMatrix.
 
 HypreParMatrix (hypre_ParCSRMatrix *a, bool owner=true)
 Converts hypre's format to HypreParMatrix.
 
 HypreParMatrix (MPI_Comm comm, HYPRE_BigInt glob_size, HYPRE_BigInt *row_starts, SparseMatrix *diag)
 Creates block-diagonal square parallel matrix.
 
 HypreParMatrix (MPI_Comm comm, HYPRE_BigInt global_num_rows, HYPRE_BigInt global_num_cols, HYPRE_BigInt *row_starts, HYPRE_BigInt *col_starts, SparseMatrix *diag)
 Creates block-diagonal rectangular parallel matrix.
 
 HypreParMatrix (MPI_Comm comm, HYPRE_BigInt global_num_rows, HYPRE_BigInt global_num_cols, HYPRE_BigInt *row_starts, HYPRE_BigInt *col_starts, SparseMatrix *diag, SparseMatrix *offd, HYPRE_BigInt *cmap, bool own_diag_offd=false)
 Creates general (rectangular) parallel matrix.
 
 HypreParMatrix (MPI_Comm comm, HYPRE_BigInt global_num_rows, HYPRE_BigInt global_num_cols, HYPRE_BigInt *row_starts, HYPRE_BigInt *col_starts, HYPRE_Int *diag_i, HYPRE_Int *diag_j, real_t *diag_data, HYPRE_Int *offd_i, HYPRE_Int *offd_j, real_t *offd_data, HYPRE_Int offd_num_cols, HYPRE_BigInt *offd_col_map, bool hypre_arrays=false)
 Creates general (rectangular) parallel matrix.
 
 HypreParMatrix (MPI_Comm comm, HYPRE_BigInt *row_starts, HYPRE_BigInt *col_starts, const SparseMatrix *a)
 Creates a parallel matrix from SparseMatrix on processor 0.
 
 HypreParMatrix (MPI_Comm comm, HYPRE_BigInt global_num_rows, HYPRE_BigInt global_num_cols, HYPRE_BigInt *row_starts, HYPRE_BigInt *col_starts, Table *diag)
 Creates boolean block-diagonal rectangular parallel matrix.
 
 HypreParMatrix (MPI_Comm comm, int id, int np, HYPRE_BigInt *row, HYPRE_BigInt *col, HYPRE_Int *i_diag, HYPRE_Int *j_diag, HYPRE_Int *i_offd, HYPRE_Int *j_offd, HYPRE_BigInt *cmap, HYPRE_Int cmap_size)
 Creates boolean rectangular parallel matrix.
 
 HypreParMatrix (MPI_Comm comm, int nrows, HYPRE_BigInt glob_nrows, HYPRE_BigInt glob_ncols, const int *I, const HYPRE_BigInt *J, const real_t *data, const HYPRE_BigInt *rows, const HYPRE_BigInt *cols)
 Creates a general parallel matrix from a local CSR matrix on each processor described by the I, J and data arrays.
 
 HypreParMatrix (const HypreParMatrix &P)
 Copy constructor for a ParCSR matrix which creates a deep copy of structure and data from P.
 
void MakeRef (const HypreParMatrix &master)
 Make this HypreParMatrix a reference to 'master'.
 
MPI_Comm GetComm () const
 MPI communicator.
 
 operator hypre_ParCSRMatrix * () const
 Typecasting to hypre's hypre_ParCSRMatrix*.
 
 operator HYPRE_ParCSRMatrix ()
 Typecasting to hypre's HYPRE_ParCSRMatrix, a.k.a. void *.
 
hypre_ParCSRMatrix * StealData ()
 Changes the ownership of the matrix.
 
void SetOwnerFlags (signed char diag, signed char offd, signed char colmap)
 Explicitly set the three ownership flags, see docs for diagOwner etc.
 
signed char OwnsDiag () const
 Get diag ownership flag.
 
signed char OwnsOffd () const
 Get offd ownership flag.
 
signed char OwnsColMap () const
 Get colmap ownership flag.
 
void CopyRowStarts ()
 
void CopyColStarts ()
 
HYPRE_BigInt NNZ () const
 Returns the global number of nonzeros.
 
HYPRE_BigIntRowPart ()
 Returns the row partitioning.
 
HYPRE_BigIntColPart ()
 Returns the column partitioning.
 
const HYPRE_BigIntRowPart () const
 Returns the row partitioning (const version)
 
const HYPRE_BigIntColPart () const
 Returns the column partitioning (const version)
 
HYPRE_BigInt M () const
 Returns the global number of rows.
 
HYPRE_BigInt N () const
 Returns the global number of columns.
 
void GetDiag (Vector &diag) const
 Get the local diagonal of the matrix.
 
void GetDiag (SparseMatrix &diag) const
 Get the local diagonal block. NOTE: 'diag' will not own any data.
 
void GetOffd (SparseMatrix &offd, HYPRE_BigInt *&cmap) const
 Get the local off-diagonal block. NOTE: 'offd' will not own any data.
 
void GetOffdColMap (HYPRE_BigInt *&cmap, HYPRE_Int &num_cols) const
 Get the global column mapping for the local off-diagonal block.
 
void MergeDiagAndOffd (SparseMatrix &merged)
 Get a single SparseMatrix containing all rows from this processor, merged from the diagonal and off-diagonal blocks stored by the HypreParMatrix.
 
void AssembleDiagonal (Vector &diag) const override
 Return the diagonal of the matrix (Operator interface).
 
void GetBlocks (Array2D< HypreParMatrix * > &blocks, bool interleaved_rows=false, bool interleaved_cols=false) const
 
HypreParMatrixTranspose () const
 Returns the transpose of *this.
 
HypreParMatrixExtractSubmatrix (const Array< int > &indices, real_t threshold=0.0) const
 
int GetNumRows () const
 Returns the number of rows in the diagonal block of the ParCSRMatrix.
 
int GetNumCols () const
 Returns the number of columns in the diagonal block of the ParCSRMatrix.
 
HYPRE_BigInt GetGlobalNumRows () const
 Return the global number of rows.
 
HYPRE_BigInt GetGlobalNumCols () const
 Return the global number of columns.
 
HYPRE_BigIntGetRowStarts () const
 Return the parallel row partitioning array.
 
HYPRE_BigIntGetColStarts () const
 Return the parallel column partitioning array.
 
MemoryClass GetMemoryClass () const override
 Return the MemoryClass preferred by the Operator.
 
void EnsureMultTranspose () const
 Ensure the action of the transpose is performed fast.
 
void ResetTranspose () const
 Reset (destroy) the internal transpose matrix that is created by EnsureMultTranspose() and MultTranspose().
 
HYPRE_Int Mult (HypreParVector &x, HypreParVector &y, real_t alpha=1.0, real_t beta=0.0) const
 Computes y = alpha * A * x + beta * y.
 
HYPRE_Int Mult (HYPRE_ParVector x, HYPRE_ParVector y, real_t alpha=1.0, real_t beta=0.0) const
 Computes y = alpha * A * x + beta * y.
 
HYPRE_Int MultTranspose (HypreParVector &x, HypreParVector &y, real_t alpha=1.0, real_t beta=0.0) const
 Computes y = alpha * A^t * x + beta * y.
 
void Mult (real_t a, const Vector &x, real_t b, Vector &y) const
 
void MultTranspose (real_t a, const Vector &x, real_t b, Vector &y) const
 Computes y = alpha * A^t * x + beta * y.
 
void Mult (const Vector &x, Vector &y) const override
 Operator application: y=A(x).
 
void MultTranspose (const Vector &x, Vector &y) const override
 Computes y = A^t * x.
 
void AddMult (const Vector &x, Vector &y, const real_t a=1.0) const override
 Operator application: y+=A(x) (default) or y+=a*A(x).
 
void AddMultTranspose (const Vector &x, Vector &y, const real_t a=1.0) const override
 Operator transpose application: y+=A^t(x) (default) or y+=a*A^t(x).
 
void AbsMult (real_t a, const Vector &x, real_t b, Vector &y) const
 Computes y = a * |A| * x + b * y, using entry-wise absolute values of the matrix A.
 
void AbsMult (const Vector &x, Vector &y) const override
 Computes y = |A| * x, using entry-wise absolute values of the matrix A.
 
void AbsMultTranspose (real_t a, const Vector &x, real_t b, Vector &y) const
 Computes y = a * |At| * x + b * y, using entry-wise absolute values of the transpose of the matrix A.
 
void AbsMultTranspose (const Vector &x, Vector &y) const override
 Computes y = |At| * x, using entry-wise absolute values of the matrix A.
 
void BooleanMult (int alpha, const int *x, int beta, int *y)
 The "Boolean" analog of y = alpha * A * x + beta * y, where elements in the sparsity pattern of the matrix are treated as "true".
 
void BooleanMultTranspose (int alpha, const int *x, int beta, int *y)
 The "Boolean" analog of y = alpha * A^T * x + beta * y, where elements in the sparsity pattern of the matrix are treated as "true".
 
HypreParMatrixoperator= (real_t value)
 Initialize all entries with value.
 
HypreParMatrixoperator+= (const HypreParMatrix &B)
 
HypreParMatrixAdd (const real_t beta, const HypreParMatrix &B)
 
HypreParMatrixLeftDiagMult (const SparseMatrix &D, HYPRE_BigInt *row_starts=NULL) const
 Multiply the HypreParMatrix on the left by a block-diagonal parallel matrix D and return the result as a new HypreParMatrix.
 
void ScaleRows (const Vector &s)
 Scale the local row i by s(i).
 
void InvScaleRows (const Vector &s)
 Scale the local row i by 1./s(i)
 
void operator*= (real_t s)
 Scale all entries by s: A_scaled = s*A.
 
void Threshold (real_t threshold=0.0)
 Remove values smaller in absolute value than some threshold.
 
void DropSmallEntries (real_t tol)
 Wrapper for hypre_ParCSRMatrixDropSmallEntries in different versions of hypre. Drop off-diagonal entries that are smaller than tol * l2 norm of its row.
 
void EliminateZeroRows ()
 If a row contains only zeros, set its diagonal to 1.
 
void EliminateRowsCols (const Array< int > &rows_cols, const HypreParVector &X, HypreParVector &B)
 
HypreParMatrixEliminateRowsCols (const Array< int > &rows_cols)
 
HypreParMatrixEliminateCols (const Array< int > &cols)
 
void EliminateRows (const Array< int > &rows)
 Eliminate rows from the diagonal and off-diagonal blocks of the matrix.
 
void EliminateBC (const HypreParMatrix &Ae, const Array< int > &ess_dof_list, const Vector &X, Vector &B) const
 Eliminate essential BC specified by ess_dof_list from the solution X to the r.h.s. B.
 
void EliminateBC (const Array< int > &ess_dofs, DiagonalPolicy diag_policy)
 Eliminate essential (Dirichlet) boundary conditions.
 
void HostRead () const
 Update the internal hypre_ParCSRMatrix object, A, to be on host.
 
void HostReadWrite ()
 Update the internal hypre_ParCSRMatrix object, A, to be on host.
 
void HostWrite ()
 Update the internal hypre_ParCSRMatrix object, A, to be on host.
 
void HypreRead () const
 Update the internal hypre_ParCSRMatrix object, A, to be in hypre memory space.
 
void HypreReadWrite ()
 Update the internal hypre_ParCSRMatrix object, A, to be in hypre memory space.
 
void HypreWrite ()
 Update the internal hypre_ParCSRMatrix object, A, to be in hypre memory space.
 
Memory< HYPRE_Int > & GetDiagMemoryI ()
 
Memory< HYPRE_Int > & GetDiagMemoryJ ()
 
Memory< real_t > & GetDiagMemoryData ()
 
const Memory< HYPRE_Int > & GetDiagMemoryI () const
 
const Memory< HYPRE_Int > & GetDiagMemoryJ () const
 
const Memory< real_t > & GetDiagMemoryData () const
 
Memory< HYPRE_Int > & GetOffdMemoryI ()
 
Memory< HYPRE_Int > & GetOffdMemoryJ ()
 
Memory< real_t > & GetOffdMemoryData ()
 
const Memory< HYPRE_Int > & GetOffdMemoryI () const
 
const Memory< HYPRE_Int > & GetOffdMemoryJ () const
 
const Memory< real_t > & GetOffdMemoryData () const
 
void Print (const std::string &fname, HYPRE_Int offi=0, HYPRE_Int offj=0) const
 Prints the locally owned rows in parallel. The resulting files can be read with Read_IJMatrix().
 
void Read (MPI_Comm comm, const std::string &fname)
 Reads the matrix from a file.
 
void Read_IJMatrix (MPI_Comm comm, const std::string &fname)
 Read a matrix saved as a HYPRE_IJMatrix.
 
void PrintCommPkg (std::ostream &out=mfem::out) const
 Print information about the hypre_ParCSRCommPkg of the HypreParMatrix.
 
void PrintHash (std::ostream &out) const
 Print sizes and hashes for all data arrays of the HypreParMatrix from the local MPI rank.
 
real_t FNorm () const
 Return the Frobenius norm of the matrix (or 0 if the underlying hypre matrix is NULL)
 
virtual ~HypreParMatrix ()
 Calls hypre's destroy function.
 
Type GetType () const
 
- Public Member Functions inherited from mfem::Operator
void InitTVectors (const Operator *Po, const Operator *Ri, const Operator *Pi, Vector &x, Vector &b, Vector &X, Vector &B) const
 Initializes memory for true vectors of linear system.
 
 Operator (int s=0)
 Construct a square Operator with given size s (default 0).
 
 Operator (int h, int w)
 Construct an Operator with the given height (output size) and width (input size).
 
int Height () const
 Get the height (size of output) of the Operator. Synonym with NumRows().
 
int NumRows () const
 Get the number of rows (size of output) of the Operator. Synonym with Height().
 
int Width () const
 Get the width (size of input) of the Operator. Synonym with NumCols().
 
int NumCols () const
 Get the number of columns (size of input) of the Operator. Synonym with Width().
 
virtual void ArrayMult (const Array< const Vector * > &X, Array< Vector * > &Y) const
 Operator application on a matrix: Y=A(X).
 
virtual void ArrayMultTranspose (const Array< const Vector * > &X, Array< Vector * > &Y) const
 Action of the transpose operator on a matrix: Y=A^t(X).
 
virtual void ArrayAddMult (const Array< const Vector * > &X, Array< Vector * > &Y, const real_t a=1.0) const
 Operator application on a matrix: Y+=A(X) (default) or Y+=a*A(X).
 
virtual void ArrayAddMultTranspose (const Array< const Vector * > &X, Array< Vector * > &Y, const real_t a=1.0) const
 Operator transpose application on a matrix: Y+=A^t(X) (default) or Y+=a*A^t(X).
 
virtual void MultMV (const MultiVector &x, MultiVector &y) const
 Operator application, y = A(x), where the input x and the output y are MultiVector objects, i.e. they generally use non-contiguous memory representation.
 
virtual void MultTransposeMV (const MultiVector &x, MultiVector &y) const
 Action of the transpose operator, y = A^t(x), where the input x and the output y are MultiVector objects, i.e. they generally use non-contiguous memory representation.
 
virtual OperatorGetGradient (const Vector &x) const
 Evaluate the gradient operator at the point x. The default behavior in class Operator is to generate an error.
 
virtual OperatorGetGradientMV (const MultiVector &x) const
 Evaluate the gradient operator at the point x. The input x is provided as a MultiVector, i.e. it generally uses non-contiguous memory representation.
 
virtual const OperatorGetProlongation () const
 Prolongation operator from linear algebra (linear system) vectors, to input vectors for the operator. NULL means identity.
 
virtual const OperatorGetRestriction () const
 Restriction operator from input vectors for the operator to linear algebra (linear system) vectors. NULL means identity.
 
virtual const OperatorGetOutputProlongation () const
 Prolongation operator from linear algebra (linear system) vectors, to output vectors for the operator. NULL means identity.
 
virtual const OperatorGetOutputRestrictionTranspose () const
 Transpose of GetOutputRestriction, directly available in this form to facilitate matrix-free RAP-type operators.
 
virtual const OperatorGetOutputRestriction () const
 Restriction operator from output vectors for the operator to linear algebra (linear system) vectors. NULL means identity.
 
void FormLinearSystem (const Array< int > &ess_tdof_list, Vector &x, Vector &b, Operator *&A, Vector &X, Vector &B, int copy_interior=0)
 Form a constrained linear system using a matrix-free approach.
 
void FormRectangularLinearSystem (const Array< int > &trial_tdof_list, const Array< int > &test_tdof_list, Vector &x, Vector &b, Operator *&A, Vector &X, Vector &B)
 Form a column-constrained linear system using a matrix-free approach.
 
virtual void RecoverFEMSolution (const Vector &X, const Vector &b, Vector &x)
 Reconstruct a solution vector x (e.g. a GridFunction) from the solution X of a constrained linear system obtained from Operator::FormLinearSystem() or Operator::FormRectangularLinearSystem().
 
void FormSystemOperator (const Array< int > &ess_tdof_list, Operator *&A)
 Return in A a parallel (on truedofs) version of this square operator.
 
void FormRectangularSystemOperator (const Array< int > &trial_tdof_list, const Array< int > &test_tdof_list, Operator *&A)
 Return in A a parallel (on truedofs) version of this rectangular operator (including constraints).
 
void FormDiscreteOperator (Operator *&A)
 Return in A a parallel (on truedofs) version of this rectangular operator.
 
void PrintMatlab (std::ostream &out, int n, int m=0) const
 Prints operator with input size n and output size m in Matlab format.
 
virtual void PrintMatlab (std::ostream &out) const
 Prints operator in Matlab format.
 
virtual ~Operator ()
 Virtual destructor.
 
Type GetType () const
 Return the type ID of the Operator class.
 

Additional Inherited Members

- Public Types inherited from mfem::Operator
enum  DiagonalPolicy { DIAG_ZERO , DIAG_ONE , DIAG_KEEP }
 Defines operator diagonal policy upon elimination of rows and/or columns. More...
 
enum  Type {
  ANY_TYPE , MFEM_SPARSEMAT , Hypre_ParCSR , PETSC_MATAIJ ,
  PETSC_MATIS , PETSC_MATSHELL , PETSC_MATNEST , PETSC_MATHYPRE ,
  PETSC_MATGENERIC , Complex_Operator , MFEM_ComplexSparseMat , Complex_Hypre_ParCSR ,
  Complex_DenseMat , MFEM_Block_Matrix , MFEM_Block_Operator
}
 Enumeration defining IDs for some classes derived from Operator. More...
 
- Protected Member Functions inherited from mfem::Operator
void FormConstrainedSystemOperator (const Array< int > &ess_tdof_list, ConstrainedOperator *&Aout)
 see FormSystemOperator()
 
void FormRectangularConstrainedSystemOperator (const Array< int > &trial_tdof_list, const Array< int > &test_tdof_list, RectangularConstrainedOperator *&Aout)
 see FormRectangularSystemOperator()
 
OperatorSetupRAP (const Operator *Pi, const Operator *Po)
 Returns RAP Operator of this, using input/output Prolongation matrices Pi corresponds to "P", Po corresponds to "Rt".
 
- Protected Attributes inherited from mfem::Operator
int height
 Dimension of the output / number of rows in the matrix.
 
int width
 Dimension of the input / number of columns in the matrix.
 

Detailed Description

Wrapper for hypre's ParCSR matrix class.

Definition at line 418 of file hypre.hpp.

Constructor & Destructor Documentation

◆ HypreParMatrix() [1/11]

mfem::HypreParMatrix::HypreParMatrix ( )

An empty matrix to be used as a reference to an existing matrix.

Definition at line 685 of file hypre.cpp.

◆ HypreParMatrix() [2/11]

mfem::HypreParMatrix::HypreParMatrix ( hypre_ParCSRMatrix * a,
bool owner = true )
inlineexplicit

Converts hypre's format to HypreParMatrix.

If owner is false, ownership of a is not transferred

Definition at line 502 of file hypre.hpp.

◆ HypreParMatrix() [3/11]

mfem::HypreParMatrix::HypreParMatrix ( MPI_Comm comm,
HYPRE_BigInt glob_size,
HYPRE_BigInt * row_starts,
SparseMatrix * diag )

Creates block-diagonal square parallel matrix.

Diagonal is given by diag which must be in CSR format (finalized). The new HypreParMatrix does not take ownership of any of the input arrays. See here for a description of the row partitioning array row_starts.

Warning
The ordering of the columns in each row in *diag may be changed by this constructor to ensure that the first entry in each row is the diagonal one. This is expected by most hypre functions.

Definition at line 932 of file hypre.cpp.

◆ HypreParMatrix() [4/11]

mfem::HypreParMatrix::HypreParMatrix ( MPI_Comm comm,
HYPRE_BigInt global_num_rows,
HYPRE_BigInt global_num_cols,
HYPRE_BigInt * row_starts,
HYPRE_BigInt * col_starts,
SparseMatrix * diag )

Creates block-diagonal rectangular parallel matrix.

Diagonal is given by diag which must be in CSR format (finalized). The new HypreParMatrix does not take ownership of any of the input arrays. See here for a description of the partitioning arrays row_starts and col_starts.

Definition at line 969 of file hypre.cpp.

◆ HypreParMatrix() [5/11]

mfem::HypreParMatrix::HypreParMatrix ( MPI_Comm comm,
HYPRE_BigInt global_num_rows,
HYPRE_BigInt global_num_cols,
HYPRE_BigInt * row_starts,
HYPRE_BigInt * col_starts,
SparseMatrix * diag,
SparseMatrix * offd,
HYPRE_BigInt * cmap,
bool own_diag_offd = false )

Creates general (rectangular) parallel matrix.

The new HypreParMatrix does not take ownership of any of the input arrays, if own_diag_offd is false (default). If own_diag_offd is true, ownership of diag and offd is transferred to the HypreParMatrix.

See here for a description of the partitioning arrays row_starts and col_starts.

Definition at line 1010 of file hypre.cpp.

◆ HypreParMatrix() [6/11]

mfem::HypreParMatrix::HypreParMatrix ( MPI_Comm comm,
HYPRE_BigInt global_num_rows,
HYPRE_BigInt global_num_cols,
HYPRE_BigInt * row_starts,
HYPRE_BigInt * col_starts,
HYPRE_Int * diag_i,
HYPRE_Int * diag_j,
real_t * diag_data,
HYPRE_Int * offd_i,
HYPRE_Int * offd_j,
real_t * offd_data,
HYPRE_Int offd_num_cols,
HYPRE_BigInt * offd_col_map,
bool hypre_arrays = false )

Creates general (rectangular) parallel matrix.

The new HypreParMatrix takes ownership of all input arrays, except col_starts and row_starts. See here for a description of the partitioning arrays row_starts and col_starts.

If hypre_arrays is false, all arrays (except row_starts and col_starts) are assumed to be allocated according to the MemoryType returned by Device::GetHostMemoryType(). If hypre_arrays is true, then the same arrays are assumed to be allocated by hypre as host arrays.

Definition at line 1061 of file hypre.cpp.

◆ HypreParMatrix() [7/11]

mfem::HypreParMatrix::HypreParMatrix ( MPI_Comm comm,
HYPRE_BigInt * row_starts,
HYPRE_BigInt * col_starts,
const SparseMatrix * a )

Creates a parallel matrix from SparseMatrix on processor 0.

See here for a description of the partitioning arrays row_starts and col_starts.

Definition at line 1135 of file hypre.cpp.

◆ HypreParMatrix() [8/11]

mfem::HypreParMatrix::HypreParMatrix ( MPI_Comm comm,
HYPRE_BigInt global_num_rows,
HYPRE_BigInt global_num_cols,
HYPRE_BigInt * row_starts,
HYPRE_BigInt * col_starts,
Table * diag )

Creates boolean block-diagonal rectangular parallel matrix.

The new HypreParMatrix does not take ownership of any of the input arrays. See here for a description of the partitioning arrays row_starts and col_starts.

Definition at line 1179 of file hypre.cpp.

◆ HypreParMatrix() [9/11]

mfem::HypreParMatrix::HypreParMatrix ( MPI_Comm comm,
int id,
int np,
HYPRE_BigInt * row,
HYPRE_BigInt * col,
HYPRE_Int * i_diag,
HYPRE_Int * j_diag,
HYPRE_Int * i_offd,
HYPRE_Int * j_offd,
HYPRE_BigInt * cmap,
HYPRE_Int cmap_size )

Creates boolean rectangular parallel matrix.

The new HypreParMatrix takes ownership of the arrays i_diag, j_diag, i_offd, j_offd, and cmap; does not take ownership of the arrays row and col. See here for a description of the partitioning arrays row and col.

Definition at line 1222 of file hypre.cpp.

◆ HypreParMatrix() [10/11]

mfem::HypreParMatrix::HypreParMatrix ( MPI_Comm comm,
int nrows,
HYPRE_BigInt glob_nrows,
HYPRE_BigInt glob_ncols,
const int * I,
const HYPRE_BigInt * J,
const real_t * data,
const HYPRE_BigInt * rows,
const HYPRE_BigInt * cols )

Creates a general parallel matrix from a local CSR matrix on each processor described by the I, J and data arrays.

The local matrix should be of size (local) nrows by (global) glob_ncols. The new parallel matrix contains copies of all input arrays (so they can be deleted). See here for a description of the partitioning arrays rows and cols.

Definition at line 1311 of file hypre.cpp.

◆ HypreParMatrix() [11/11]

mfem::HypreParMatrix::HypreParMatrix ( const HypreParMatrix & P)

Copy constructor for a ParCSR matrix which creates a deep copy of structure and data from P.

Definition at line 1454 of file hypre.cpp.

◆ ~HypreParMatrix()

virtual mfem::HypreParMatrix::~HypreParMatrix ( )
inlinevirtual

Calls hypre's destroy function.

Definition at line 997 of file hypre.hpp.

Member Function Documentation

◆ AbsMult() [1/2]

void mfem::HypreParMatrix::AbsMult ( const Vector & x,
Vector & y ) const
inlineoverridevirtual

Computes y = |A| * x, using entry-wise absolute values of the matrix A.

Reimplemented from mfem::Operator.

Definition at line 796 of file hypre.hpp.

◆ AbsMult() [2/2]

void mfem::HypreParMatrix::AbsMult ( real_t a,
const Vector & x,
real_t b,
Vector & y ) const

Computes y = a * |A| * x + b * y, using entry-wise absolute values of the matrix A.

Definition at line 2018 of file hypre.cpp.

◆ AbsMultTranspose() [1/2]

void mfem::HypreParMatrix::AbsMultTranspose ( const Vector & x,
Vector & y ) const
inlineoverridevirtual

Computes y = |At| * x, using entry-wise absolute values of the matrix A.

Reimplemented from mfem::Operator.

Definition at line 805 of file hypre.hpp.

◆ AbsMultTranspose() [2/2]

void mfem::HypreParMatrix::AbsMultTranspose ( real_t a,
const Vector & x,
real_t b,
Vector & y ) const

Computes y = a * |At| * x + b * y, using entry-wise absolute values of the transpose of the matrix A.

Definition at line 2035 of file hypre.cpp.

◆ Add()

HypreParMatrix & mfem::HypreParMatrix::Add ( const real_t beta,
const HypreParMatrix & B )
inline

Perform the operation *this += beta*B, assuming that both matrices use the same row and column partitions and the same col_map_offd arrays, or B has an empty off-diagonal block. We also assume that the sparsity pattern of *this contains that of B. For a more general case consider the stand-alone function ParAdd described below.

Definition at line 850 of file hypre.hpp.

◆ AddMult()

void mfem::HypreParMatrix::AddMult ( const Vector & x,
Vector & y,
const real_t a = 1.0 ) const
inlineoverridevirtual

Operator application: y+=A(x) (default) or y+=a*A(x).

Reimplemented from mfem::Operator.

Definition at line 782 of file hypre.hpp.

◆ AddMultTranspose()

void mfem::HypreParMatrix::AddMultTranspose ( const Vector & x,
Vector & y,
const real_t a = 1.0 ) const
inlineoverridevirtual

Operator transpose application: y+=A^t(x) (default) or y+=a*A^t(x).

Reimplemented from mfem::Operator.

Definition at line 784 of file hypre.hpp.

◆ AssembleDiagonal()

void mfem::HypreParMatrix::AssembleDiagonal ( Vector & diag) const
inlineoverridevirtual

Return the diagonal of the matrix (Operator interface).

Reimplemented from mfem::Operator.

Definition at line 680 of file hypre.hpp.

◆ BooleanMult()

void mfem::HypreParMatrix::BooleanMult ( int alpha,
const int * x,
int beta,
int * y )
inline

The "Boolean" analog of y = alpha * A * x + beta * y, where elements in the sparsity pattern of the matrix are treated as "true".

Definition at line 810 of file hypre.hpp.

◆ BooleanMultTranspose()

void mfem::HypreParMatrix::BooleanMultTranspose ( int alpha,
const int * x,
int beta,
int * y )
inline

The "Boolean" analog of y = alpha * A^T * x + beta * y, where elements in the sparsity pattern of the matrix are treated as "true".

Definition at line 820 of file hypre.hpp.

◆ ColPart() [1/2]

HYPRE_BigInt * mfem::HypreParMatrix::ColPart ( )
inline

Returns the column partitioning.

See here for a description of the partitioning array.

Definition at line 649 of file hypre.hpp.

◆ ColPart() [2/2]

const HYPRE_BigInt * mfem::HypreParMatrix::ColPart ( ) const
inline

Returns the column partitioning (const version)

See here for a description of the partitioning array.

Definition at line 657 of file hypre.hpp.

◆ CopyColStarts()

void mfem::HypreParMatrix::CopyColStarts ( )

If the HypreParMatrix does not own the col-starts array, make a copy of it that the HypreParMatrix will own. If the row-starts array is the same as the col-starts array, row-starts is also replaced.

Definition at line 1575 of file hypre.cpp.

◆ CopyRowStarts()

void mfem::HypreParMatrix::CopyRowStarts ( )

If the HypreParMatrix does not own the row-starts array, make a copy of it that the HypreParMatrix will own. If the col-starts array is the same as the row-starts array, col-starts is also replaced.

Definition at line 1544 of file hypre.cpp.

◆ DropSmallEntries()

void mfem::HypreParMatrix::DropSmallEntries ( real_t tol)

Wrapper for hypre_ParCSRMatrixDropSmallEntries in different versions of hypre. Drop off-diagonal entries that are smaller than tol * l2 norm of its row.

For HYPRE versions < 2.14, this method just calls Threshold() with threshold = tol * max(l2 row norm).

Definition at line 2362 of file hypre.cpp.

◆ EliminateBC() [1/2]

void mfem::HypreParMatrix::EliminateBC ( const Array< int > & ess_dofs,
DiagonalPolicy diag_policy )

Eliminate essential (Dirichlet) boundary conditions.

Parameters
[in]ess_dofsindices of the degrees of freedom belonging to the essential boundary conditions.
[in]diag_policypolicy for diagonal entries.

Definition at line 2519 of file hypre.cpp.

◆ EliminateBC() [2/2]

void mfem::HypreParMatrix::EliminateBC ( const HypreParMatrix & Ae,
const Array< int > & ess_dof_list,
const Vector & X,
Vector & B ) const

Eliminate essential BC specified by ess_dof_list from the solution X to the r.h.s. B.

This matrix is the matrix with eliminated BC, while Ae is such that (A+Ae) is the original (Neumann) matrix before elimination.

Definition at line 2461 of file hypre.cpp.

◆ EliminateCols()

HypreParMatrix * mfem::HypreParMatrix::EliminateCols ( const Array< int > & cols)

Eliminate columns from the matrix and store the eliminated elements in a new matrix Ae (returned) so that the modified matrix and Ae sum to the original matrix.

Definition at line 2434 of file hypre.cpp.

◆ EliminateRows()

void mfem::HypreParMatrix::EliminateRows ( const Array< int > & rows)

Eliminate rows from the diagonal and off-diagonal blocks of the matrix.

Definition at line 2448 of file hypre.cpp.

◆ EliminateRowsCols() [1/2]

HypreParMatrix * mfem::HypreParMatrix::EliminateRowsCols ( const Array< int > & rows_cols)

Eliminate rows and columns from the matrix and store the eliminated elements in a new matrix Ae (returned), so that the modified matrix and Ae sum to the original matrix.

Definition at line 2420 of file hypre.cpp.

◆ EliminateRowsCols() [2/2]

void mfem::HypreParMatrix::EliminateRowsCols ( const Array< int > & rows_cols,
const HypreParVector & X,
HypreParVector & B )

Eliminate rows and columns from the matrix, and rows from the vector B. Modify B with the BC values in X.

Definition at line 2409 of file hypre.cpp.

◆ EliminateZeroRows()

void mfem::HypreParMatrix::EliminateZeroRows ( )
inline

If a row contains only zeros, set its diagonal to 1.

Definition at line 886 of file hypre.hpp.

◆ EnsureMultTranspose()

void mfem::HypreParMatrix::EnsureMultTranspose ( ) const

Ensure the action of the transpose is performed fast.

When HYPRE is built for GPUs, this method will construct and store the transposes of the 'diag' and 'offd' CSR matrices. When HYPRE is not built for GPUs, this method is a no-op.

This method is automatically called by MultTranspose().

If the matrix is modified the old transpose blocks can be deleted by calling ResetTranspose().

Definition at line 1838 of file hypre.cpp.

◆ ExtractSubmatrix()

HypreParMatrix * mfem::HypreParMatrix::ExtractSubmatrix ( const Array< int > & indices,
real_t threshold = 0.0 ) const

Returns principle submatrix given by array of indices of connections with relative size > threshold in *this.

Definition at line 1761 of file hypre.cpp.

◆ FNorm()

real_t mfem::HypreParMatrix::FNorm ( ) const

Return the Frobenius norm of the matrix (or 0 if the underlying hypre matrix is NULL)

Definition at line 2828 of file hypre.cpp.

◆ GetBlocks()

void mfem::HypreParMatrix::GetBlocks ( Array2D< HypreParMatrix * > & blocks,
bool interleaved_rows = false,
bool interleaved_cols = false ) const

Split the matrix into M x N equally sized blocks of parallel matrices. The size of 'blocks' must already be set to M x N.

Definition at line 1718 of file hypre.cpp.

◆ GetColStarts()

HYPRE_BigInt * mfem::HypreParMatrix::GetColStarts ( ) const
inline

Return the parallel column partitioning array.

See here for a description of the partitioning array.

Definition at line 728 of file hypre.hpp.

◆ GetComm()

MPI_Comm mfem::HypreParMatrix::GetComm ( ) const
inline

MPI communicator.

Definition at line 610 of file hypre.hpp.

◆ GetDiag() [1/2]

void mfem::HypreParMatrix::GetDiag ( SparseMatrix & diag) const

Get the local diagonal block. NOTE: 'diag' will not own any data.

Definition at line 1676 of file hypre.cpp.

◆ GetDiag() [2/2]

void mfem::HypreParMatrix::GetDiag ( Vector & diag) const

Get the local diagonal of the matrix.

Definition at line 1610 of file hypre.cpp.

◆ GetDiagMemoryData() [1/2]

Memory< real_t > & mfem::HypreParMatrix::GetDiagMemoryData ( )
inline

Definition at line 959 of file hypre.hpp.

◆ GetDiagMemoryData() [2/2]

const Memory< real_t > & mfem::HypreParMatrix::GetDiagMemoryData ( ) const
inline

Definition at line 963 of file hypre.hpp.

◆ GetDiagMemoryI() [1/2]

Memory< HYPRE_Int > & mfem::HypreParMatrix::GetDiagMemoryI ( )
inline

Definition at line 957 of file hypre.hpp.

◆ GetDiagMemoryI() [2/2]

const Memory< HYPRE_Int > & mfem::HypreParMatrix::GetDiagMemoryI ( ) const
inline

Definition at line 961 of file hypre.hpp.

◆ GetDiagMemoryJ() [1/2]

Memory< HYPRE_Int > & mfem::HypreParMatrix::GetDiagMemoryJ ( )
inline

Definition at line 958 of file hypre.hpp.

◆ GetDiagMemoryJ() [2/2]

const Memory< HYPRE_Int > & mfem::HypreParMatrix::GetDiagMemoryJ ( ) const
inline

Definition at line 962 of file hypre.hpp.

◆ GetGlobalNumCols()

HYPRE_BigInt mfem::HypreParMatrix::GetGlobalNumCols ( ) const
inline

Return the global number of columns.

Definition at line 717 of file hypre.hpp.

◆ GetGlobalNumRows()

HYPRE_BigInt mfem::HypreParMatrix::GetGlobalNumRows ( ) const
inline

Return the global number of rows.

Definition at line 713 of file hypre.hpp.

◆ GetMemoryClass()

MemoryClass mfem::HypreParMatrix::GetMemoryClass ( ) const
inlineoverridevirtual

Return the MemoryClass preferred by the Operator.

This is the MemoryClass that will be used to access the input and output vectors in the Mult() and MultTranspose() methods.

For example, classes using the mfem::forall macro for implementation can return the value returned by Device::GetMemoryClass().

The default implementation of this method in class Operator returns MemoryClass::HOST.

Reimplemented from mfem::Operator.

Definition at line 730 of file hypre.hpp.

◆ GetNumCols()

int mfem::HypreParMatrix::GetNumCols ( ) const
inline

Returns the number of columns in the diagonal block of the ParCSRMatrix.

Definition at line 706 of file hypre.hpp.

◆ GetNumRows()

int mfem::HypreParMatrix::GetNumRows ( ) const
inline

Returns the number of rows in the diagonal block of the ParCSRMatrix.

Definition at line 699 of file hypre.hpp.

◆ GetOffd()

void mfem::HypreParMatrix::GetOffd ( SparseMatrix & offd,
HYPRE_BigInt *& cmap ) const

Get the local off-diagonal block. NOTE: 'offd' will not own any data.

Definition at line 1681 of file hypre.cpp.

◆ GetOffdColMap()

void mfem::HypreParMatrix::GetOffdColMap ( HYPRE_BigInt *& cmap,
HYPRE_Int & num_cols ) const

Get the global column mapping for the local off-diagonal block.

Definition at line 1687 of file hypre.cpp.

◆ GetOffdMemoryData() [1/2]

Memory< real_t > & mfem::HypreParMatrix::GetOffdMemoryData ( )
inline

Definition at line 967 of file hypre.hpp.

◆ GetOffdMemoryData() [2/2]

const Memory< real_t > & mfem::HypreParMatrix::GetOffdMemoryData ( ) const
inline

Definition at line 971 of file hypre.hpp.

◆ GetOffdMemoryI() [1/2]

Memory< HYPRE_Int > & mfem::HypreParMatrix::GetOffdMemoryI ( )
inline

Definition at line 965 of file hypre.hpp.

◆ GetOffdMemoryI() [2/2]

const Memory< HYPRE_Int > & mfem::HypreParMatrix::GetOffdMemoryI ( ) const
inline

Definition at line 969 of file hypre.hpp.

◆ GetOffdMemoryJ() [1/2]

Memory< HYPRE_Int > & mfem::HypreParMatrix::GetOffdMemoryJ ( )
inline

Definition at line 966 of file hypre.hpp.

◆ GetOffdMemoryJ() [2/2]

const Memory< HYPRE_Int > & mfem::HypreParMatrix::GetOffdMemoryJ ( ) const
inline

Definition at line 970 of file hypre.hpp.

◆ GetRowStarts()

HYPRE_BigInt * mfem::HypreParMatrix::GetRowStarts ( ) const
inline

Return the parallel row partitioning array.

See here for a description of the partitioning array.

Definition at line 723 of file hypre.hpp.

◆ GetType()

Type mfem::HypreParMatrix::GetType ( ) const
inline

Definition at line 999 of file hypre.hpp.

◆ HostRead()

void mfem::HypreParMatrix::HostRead ( ) const
inline

Update the internal hypre_ParCSRMatrix object, A, to be on host.

After this call A's diagonal and off-diagonal should not be modified until after a suitable call to {Host,Hypre}{Write,ReadWrite}.

Definition at line 924 of file hypre.hpp.

◆ HostReadWrite()

void mfem::HypreParMatrix::HostReadWrite ( )
inline

Update the internal hypre_ParCSRMatrix object, A, to be on host.

After this call A's diagonal and off-diagonal can be modified on host and subsequent calls to Hypre{Read,Write,ReadWrite} will require a deep copy of the data if hypre is built with device support.

Definition at line 930 of file hypre.hpp.

◆ HostWrite()

void mfem::HypreParMatrix::HostWrite ( )
inline

Update the internal hypre_ParCSRMatrix object, A, to be on host.

Similar to HostReadWrite(), except that the data will never be copied from device to host to ensure host contains the correct current data.

Definition at line 935 of file hypre.hpp.

◆ HypreRead()

void mfem::HypreParMatrix::HypreRead ( ) const
inline

Update the internal hypre_ParCSRMatrix object, A, to be in hypre memory space.

After this call A's diagonal and off-diagonal should not be modified until after a suitable call to {Host,Hypre}{Write,ReadWrite}.

Definition at line 941 of file hypre.hpp.

◆ HypreReadWrite()

void mfem::HypreParMatrix::HypreReadWrite ( )
inline

Update the internal hypre_ParCSRMatrix object, A, to be in hypre memory space.

After this call A's diagonal and off-diagonal can be modified in hypre memory space and subsequent calls to Host{Read,Write,ReadWrite} will require a deep copy of the data if hypre is built with device support.

Definition at line 948 of file hypre.hpp.

◆ HypreWrite()

void mfem::HypreParMatrix::HypreWrite ( )
inline

Update the internal hypre_ParCSRMatrix object, A, to be in hypre memory space.

Similar to HostReadWrite(), except that the data will never be copied from host to hypre memory space to ensure the latter contains the correct current data.

Definition at line 955 of file hypre.hpp.

◆ InvScaleRows()

void mfem::HypreParMatrix::InvScaleRows ( const Vector & s)

Scale the local row i by 1./s(i)

Definition at line 2193 of file hypre.cpp.

◆ LeftDiagMult()

HypreParMatrix * mfem::HypreParMatrix::LeftDiagMult ( const SparseMatrix & D,
HYPRE_BigInt * row_starts = NULL ) const

Multiply the HypreParMatrix on the left by a block-diagonal parallel matrix D and return the result as a new HypreParMatrix.

If D has a different number of rows than A (this matrix), D's row starts array needs to be given (as returned by the methods GetDofOffsets/GetTrueDofOffsets of ParFiniteElementSpace). The new matrix D*A uses copies of the row- and column-starts arrays, so "this" matrix and row_starts can be deleted.

Note
This operation is local and does not require communication.

Definition at line 2052 of file hypre.cpp.

◆ M()

HYPRE_BigInt mfem::HypreParMatrix::M ( ) const
inline

Returns the global number of rows.

Definition at line 659 of file hypre.hpp.

◆ MakeRef()

void mfem::HypreParMatrix::MakeRef ( const HypreParMatrix & master)

Make this HypreParMatrix a reference to 'master'.

Definition at line 1479 of file hypre.cpp.

◆ MergeDiagAndOffd()

void mfem::HypreParMatrix::MergeDiagAndOffd ( SparseMatrix & merged)

Get a single SparseMatrix containing all rows from this processor, merged from the diagonal and off-diagonal blocks stored by the HypreParMatrix.

Note
The number of columns in the SparseMatrix will be the global number of columns in the parallel matrix, so using this method may result in an integer overflow in the column indices.

Definition at line 1694 of file hypre.cpp.

◆ Mult() [1/4]

void mfem::HypreParMatrix::Mult ( const Vector & x,
Vector & y ) const
inlineoverridevirtual

Operator application: y=A(x).

Implements mfem::Operator.

Definition at line 772 of file hypre.hpp.

◆ Mult() [2/4]

HYPRE_Int mfem::HypreParMatrix::Mult ( HYPRE_ParVector x,
HYPRE_ParVector y,
real_t alpha = 1.0,
real_t beta = 0.0 ) const

Computes y = alpha * A * x + beta * y.

Definition at line 2002 of file hypre.cpp.

◆ Mult() [3/4]

HYPRE_Int mfem::HypreParMatrix::Mult ( HypreParVector & x,
HypreParVector & y,
real_t alpha = 1.0,
real_t beta = 0.0 ) const

Computes y = alpha * A * x + beta * y.

Definition at line 1873 of file hypre.cpp.

◆ Mult() [4/4]

void mfem::HypreParMatrix::Mult ( real_t a,
const Vector & x,
real_t b,
Vector & y ) const

Definition at line 1881 of file hypre.cpp.

◆ MultTranspose() [1/3]

void mfem::HypreParMatrix::MultTranspose ( const Vector & x,
Vector & y ) const
inlineoverridevirtual

Computes y = A^t * x.

If the matrix is modified, call ResetTranspose() and optionally EnsureMultTranspose() to make sure this method uses the correct updated transpose.

Reimplemented from mfem::Operator.

Definition at line 779 of file hypre.hpp.

◆ MultTranspose() [2/3]

HYPRE_Int mfem::HypreParMatrix::MultTranspose ( HypreParVector & x,
HypreParVector & y,
real_t alpha = 1.0,
real_t beta = 0.0 ) const

Computes y = alpha * A^t * x + beta * y.

If the matrix is modified, call ResetTranspose() and optionally EnsureMultTranspose() to make sure this method uses the correct updated transpose.

Definition at line 2009 of file hypre.cpp.

◆ MultTranspose() [3/3]

void mfem::HypreParMatrix::MultTranspose ( real_t a,
const Vector & x,
real_t b,
Vector & y ) const

Computes y = alpha * A^t * x + beta * y.

If the matrix is modified, call ResetTranspose() and optionally EnsureMultTranspose() to make sure this method uses the correct updated transpose.

Definition at line 1938 of file hypre.cpp.

◆ N()

HYPRE_BigInt mfem::HypreParMatrix::N ( ) const
inline

Returns the global number of columns.

Definition at line 661 of file hypre.hpp.

◆ NNZ()

HYPRE_BigInt mfem::HypreParMatrix::NNZ ( ) const
inline

Returns the global number of nonzeros.

Definition at line 641 of file hypre.hpp.

◆ operator HYPRE_ParCSRMatrix()

mfem::HypreParMatrix::operator HYPRE_ParCSRMatrix ( )
inline

Typecasting to hypre's HYPRE_ParCSRMatrix, a.k.a. void *.

Definition at line 616 of file hypre.hpp.

◆ operator hypre_ParCSRMatrix *()

mfem::HypreParMatrix::operator hypre_ParCSRMatrix * ( ) const
inline

Typecasting to hypre's hypre_ParCSRMatrix*.

Definition at line 613 of file hypre.hpp.

◆ operator*=()

void mfem::HypreParMatrix::operator*= ( real_t s)

Scale all entries by s: A_scaled = s*A.

Definition at line 2239 of file hypre.cpp.

◆ operator+=()

HypreParMatrix & mfem::HypreParMatrix::operator+= ( const HypreParMatrix & B)
inline

Perform the operation *this += B, assuming that both matrices use the same row and column partitions and the same col_map_offd arrays, or B has an empty off-diagonal block. We also assume that the sparsity pattern of *this contains that of B.

Definition at line 843 of file hypre.hpp.

◆ operator=()

HypreParMatrix & mfem::HypreParMatrix::operator= ( real_t value)
inline

Initialize all entries with value.

Definition at line 829 of file hypre.hpp.

◆ OwnsColMap()

signed char mfem::HypreParMatrix::OwnsColMap ( ) const
inline

Get colmap ownership flag.

Definition at line 629 of file hypre.hpp.

◆ OwnsDiag()

signed char mfem::HypreParMatrix::OwnsDiag ( ) const
inline

Get diag ownership flag.

Definition at line 625 of file hypre.hpp.

◆ OwnsOffd()

signed char mfem::HypreParMatrix::OwnsOffd ( ) const
inline

Get offd ownership flag.

Definition at line 627 of file hypre.hpp.

◆ Print()

void mfem::HypreParMatrix::Print ( const std::string & fname,
HYPRE_Int offi = 0,
HYPRE_Int offj = 0 ) const

Prints the locally owned rows in parallel. The resulting files can be read with Read_IJMatrix().

Definition at line 2691 of file hypre.cpp.

◆ PrintCommPkg()

void mfem::HypreParMatrix::PrintCommPkg ( std::ostream & out = mfem::out) const

Print information about the hypre_ParCSRCommPkg of the HypreParMatrix.

Definition at line 2725 of file hypre.cpp.

◆ PrintHash()

void mfem::HypreParMatrix::PrintHash ( std::ostream & out) const

Print sizes and hashes for all data arrays of the HypreParMatrix from the local MPI rank.

This is a compact text representation of the local data of the HypreParMatrix that can be used to compare matrices from different runs without the need to save the whole matrix.

Definition at line 2762 of file hypre.cpp.

◆ Read()

void mfem::HypreParMatrix::Read ( MPI_Comm comm,
const std::string & fname )

Reads the matrix from a file.

Definition at line 2699 of file hypre.cpp.

◆ Read_IJMatrix()

void mfem::HypreParMatrix::Read_IJMatrix ( MPI_Comm comm,
const std::string & fname )

Read a matrix saved as a HYPRE_IJMatrix.

Definition at line 2711 of file hypre.cpp.

◆ ResetTranspose()

void mfem::HypreParMatrix::ResetTranspose ( ) const

Reset (destroy) the internal transpose matrix that is created by EnsureMultTranspose() and MultTranspose().

If the matrix is modified, this method should be called to delete the out-of-date transpose that is stored internally.

Definition at line 1851 of file hypre.cpp.

◆ RowPart() [1/2]

HYPRE_BigInt * mfem::HypreParMatrix::RowPart ( )
inline

Returns the row partitioning.

See here for a description of the partitioning array.

Definition at line 645 of file hypre.hpp.

◆ RowPart() [2/2]

const HYPRE_BigInt * mfem::HypreParMatrix::RowPart ( ) const
inline

Returns the row partitioning (const version)

See here for a description of the partitioning array.

Definition at line 653 of file hypre.hpp.

◆ ScaleRows()

void mfem::HypreParMatrix::ScaleRows ( const Vector & s)

Scale the local row i by s(i).

Definition at line 2154 of file hypre.cpp.

◆ SetOwnerFlags()

void mfem::HypreParMatrix::SetOwnerFlags ( signed char diag,
signed char offd,
signed char colmap )

Explicitly set the three ownership flags, see docs for diagOwner etc.

Definition at line 1519 of file hypre.cpp.

◆ StealData()

hypre_ParCSRMatrix * mfem::HypreParMatrix::StealData ( )

Changes the ownership of the matrix.

Definition at line 1497 of file hypre.cpp.

◆ Threshold()

void mfem::HypreParMatrix::Threshold ( real_t threshold = 0.0)

Remove values smaller in absolute value than some threshold.

Definition at line 2282 of file hypre.cpp.

◆ Transpose()

HypreParMatrix * mfem::HypreParMatrix::Transpose ( ) const

Returns the transpose of *this.

Definition at line 1742 of file hypre.cpp.

◆ WrapHypreParCSRMatrix()

void mfem::HypreParMatrix::WrapHypreParCSRMatrix ( hypre_ParCSRMatrix * a,
bool owner = true )

Converts hypre's format to HypreParMatrix.

If owner is false, ownership of a is not transferred

Definition at line 691 of file hypre.cpp.


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