GEOSX
Public Types | Public Member Functions | List of all members
geosx::PetscMatrix Class Referencefinal

This class creates and provides basic support for the Mat matrix object type used in PETSc. More...

#include <PetscMatrix.hpp>

Inheritance diagram for geosx::PetscMatrix:
Inheritance graph
[legend]

Public Types

using Vector = PetscVector
 Compatible vector type.
 
using Export = PetscExport
 Associated exporter type.
 
using Mat = struct _p_Mat *
 Alias for PETSc matrix struct pointer.
 
- Public Types inherited from geosx::LinearOperator< PetscVector >
using Vector = PetscVector
 Alias for template parameter.
 

Public Member Functions

const Matunwrapped () const
 Returns a const pointer to the underlying matrix. More...
 
Matunwrapped ()
 Returns a non-const pointer to the underlying matrix. More...
 
Constructor/Destructor Methods
 PetscMatrix ()
 Empty matrix constructor.
 
 PetscMatrix (PetscMatrix const &src)
 Copy constructor. More...
 
 PetscMatrix (PetscMatrix &&src) noexcept
 Move constructor. More...
 
PetscMatrixoperator= (PetscMatrix const &src)
 Copy assignment. More...
 
PetscMatrixoperator= (PetscMatrix &&src) noexcept
 Move assignment. More...
 
 ~PetscMatrix () override
 Destructor.
 
MatrixBase interface
virtual void createWithLocalSize (localIndex const localRows, localIndex const localCols, localIndex const maxEntriesPerRow, MPI_Comm const &comm) override
 Create a rectangular matrix from number of rows/columns. More...
 
virtual void createWithGlobalSize (globalIndex const globalRows, globalIndex const globalCols, localIndex const maxEntriesPerRow, MPI_Comm const &comm) override
 Create a rectangular matrix from number of rows/columns. More...
 
virtual bool created () const override
 Get the number of global rows. More...
 
virtual void reset () override
 Reset the matrix to default state.
 
virtual void set (real64 const value) override
 Set all non-zero elements to a value. More...
 
virtual void zero () override
 Set all elements to zero.
 
virtual void open () override
 Open matrix for adding new entries. More...
 
virtual void close () override
 Assemble and compress the matrix. More...
 
virtual void add (globalIndex const rowIndex, globalIndex const colIndex, real64 const value) override
 Add to one element. More...
 
virtual void set (globalIndex const rowIndex, globalIndex const colIndex, real64 const value) override
 Set one element. More...
 
virtual void insert (globalIndex const rowIndex, globalIndex const colIndex, real64 const value) override
 Insert one element. More...
 
virtual void add (globalIndex const rowIndex, globalIndex const *colIndices, real64 const *values, localIndex const size) override
 Add elements to one row using c-style arrays. More...
 
virtual void set (globalIndex const rowIndex, globalIndex const *colIndices, real64 const *values, localIndex const size) override
 Set elements to one row using c-style arrays. More...
 
virtual void insert (globalIndex const rowIndex, globalIndex const *colIndices, real64 const *values, localIndex const size) override
 Insert elements to one row using c-style arrays. More...
 
virtual void add (globalIndex const rowIndex, arraySlice1d< globalIndex const > const &colIndices, arraySlice1d< real64 const > const &values) override
 Add elements to one row using array1d. More...
 
virtual void set (globalIndex const rowIndex, arraySlice1d< globalIndex const > const &colIndices, arraySlice1d< real64 const > const &values) override
 Set elements of one row using array1d. More...
 
virtual void insert (globalIndex const rowIndex, arraySlice1d< globalIndex const > const &colIndices, arraySlice1d< real64 const > const &values) override
 Insert elements of one row using array1d. More...
 
virtual void add (arraySlice1d< globalIndex const > const &rowIndices, arraySlice1d< globalIndex const > const &colIndices, arraySlice2d< real64 const > const &values) override
 Add a dense block of values. More...
 
virtual void set (arraySlice1d< globalIndex const > const &rowIndices, arraySlice1d< globalIndex const > const &colIndices, arraySlice2d< real64 const > const &values) override
 Set a dense block of values. More...
 
virtual void insert (arraySlice1d< globalIndex const > const &rowIndices, arraySlice1d< globalIndex const > const &colIndices, arraySlice2d< real64 const > const &values) override
 Insert a dense block of values. More...
 
virtual void add (globalIndex const *rowIndices, globalIndex const *colIndices, real64 const *values, localIndex const numRows, localIndex const numCols) override
 Add a dense block of values. More...
 
virtual void set (globalIndex const *rowIndices, globalIndex const *colIndices, real64 const *values, localIndex const numRows, localIndex const numCols) override
 Set a dense block of values. More...
 
virtual void insert (globalIndex const *rowIndices, globalIndex const *colIndices, real64 const *values, localIndex const numRows, localIndex const numCols) override
 Insert dense matrix. More...
 
virtual void insert (arrayView1d< globalIndex const > const &rowIndices, arrayView1d< globalIndex const > const &colIndices, arrayView1d< real64 const > const &values) override
 Insert values stored in 3 linear vectors. More...
 
virtual void apply (PetscVector const &src, PetscVector &dst) const override
 Apply operator to a vector, dst = this(src). More...
 
virtual void multiply (PetscMatrix const &src, PetscMatrix &dst) const override
 Matrix/Matrix multiplication. More...
 
virtual void applyTranspose (Vector const &src, Vector &dst) const override
 Apply transpose of the matrix to a vector. More...
 
virtual void leftMultiplyTranspose (PetscMatrix const &src, PetscMatrix &dst) const override
 Matrix/Matrix transpose multiplication. More...
 
virtual void rightMultiplyTranspose (PetscMatrix const &src, PetscMatrix &dst) const override
 Matrix/Matrix transpose multiplication. More...
 
virtual void multiplyRAP (PetscMatrix const &R, PetscMatrix const &P, PetscMatrix &dst) const override
 Compute the triple product dst = R * this * P More...
 
virtual void multiplyPtAP (PetscMatrix const &P, PetscMatrix &dst) const override
 Compute the triple product dst = P^T * this * P More...
 
virtual void gemv (real64 const alpha, PetscVector const &x, real64 const beta, PetscVector &y, bool useTranspose=false) const override
 Compute gemv y = alpha*A*x + beta*y. More...
 
virtual void scale (real64 const scalingFactor) override
 Multiply all elements by scalingFactor. More...
 
virtual void leftScale (PetscVector const &vec) override
 Pre-multiplies (left) with diagonal matrix consisting of the values in vec. More...
 
virtual void rightScale (PetscVector const &vec) override
 Post-multiplies (right) with diagonal matrix consisting of the values in vec. More...
 
virtual void leftRightScale (PetscVector const &vecLeft, PetscVector const &vecRight) override
 Post-multiplies (right) with diagonal matrix consisting of the values in vecRight and pre-multiplies (left) with diagonal matrix consisting of the values in vec. More...
 
virtual void transpose (PetscMatrix &dst) const override
 Matrix transposition. More...
 
virtual void separateComponentFilter (PetscMatrix &dst, localIndex const dofPerPoint) const override
 Apply a separate component approximation (filter) to this matrix. More...
 
virtual real64 clearRow (globalIndex const row, bool const keepDiag=false, real64 const diagValue=0.0) override
 Clear a row, and optionally set diagonal element to diagValue. More...
 
virtual void addEntries (PetscMatrix const &src, real64 const scale=1.0, bool const samePattern=true) override
 Add entries of another matrix to this. More...
 
virtual void addDiagonal (PetscVector const &src) override
 Add entries of a vector to the diagonal of this matrix. More...
 
virtual localIndex maxRowLength () const override
 Returns the number of nonzero entries in the longest row of the matrix. More...
 
virtual localIndex localRowLength (localIndex localRowIndex) const override
 Get row length via local row index. More...
 
virtual localIndex globalRowLength (globalIndex globalRowIndex) const override
 Get row length via global row index. More...
 
virtual real64 getDiagValue (globalIndex globalRow) const override
 get diagonal element value on a given row More...
 
virtual void extractDiagonal (PetscVector &dst) const override
 Extract diagonal values into a vector. More...
 
virtual void getRowCopy (globalIndex globalRow, arraySlice1d< globalIndex > const &colIndices, arraySlice1d< real64 > const &values) const override
 Returns a copy of the data in row globalRow. More...
 
virtual globalIndex numGlobalRows () const override
 Get the number of global rows. More...
 
virtual globalIndex numGlobalCols () const override
 Get the number of global columns. More...
 
virtual localIndex numLocalRows () const override
 Get the number of local rows. More...
 
virtual localIndex numLocalCols () const override
 Get the number of local columns. More...
 
virtual globalIndex ilower () const override
 Returns the index of the first global row owned by that processor. More...
 
virtual globalIndex iupper () const override
 Returns index one past the last global row owned by that processor. More...
 
virtual globalIndex jlower () const override
 Returns the index of the first global col owned by that processor. More...
 
virtual globalIndex jupper () const override
 Returns index one past the last global col owned by that processor. More...
 
virtual localIndex numLocalNonzeros () const override
 Returns the number of nonzeros in the local portion of the matrix. More...
 
virtual globalIndex numGlobalNonzeros () const override
 Returns the total number of nonzeros in the matrix. More...
 
virtual real64 normInf () const override
 Returns the infinity norm of the matrix. More...
 
virtual real64 norm1 () const override
 Returns the one norm of the matrix. More...
 
virtual real64 normFrobenius () const override
 Returns the Frobenius norm of the matrix. More...
 
virtual localIndex getLocalRowID (globalIndex const index) const override
 Map a global row index to local row index. More...
 
virtual globalIndex getGlobalRowID (localIndex const index) const override
 Map a local row index to global row index. More...
 
virtual MPI_Comm getComm () const override
 Get the MPI communicator the matrix was created with. More...
 
virtual void print (std::ostream &os=std::cout) const override
 Print the matrix in Trilinos format to a stream. More...
 
virtual void write (string const &filename, LAIOutputFormat const format=LAIOutputFormat::MATRIX_MARKET) const override
 Write the matrix to filename in a matlab-compatible format. More...
 
- Public Member Functions inherited from geosx::LinearOperator< PetscVector >
 LinearOperator ()=default
 Constructor.
 
virtual ~LinearOperator ()=default
 Destructor.
 

Detailed Description

This class creates and provides basic support for the Mat matrix object type used in PETSc.

Definition at line 48 of file PetscMatrix.hpp.

Constructor & Destructor Documentation

◆ PetscMatrix() [1/2]

geosx::PetscMatrix::PetscMatrix ( PetscMatrix const &  src)

Copy constructor.

Parameters
[in]srcthe matrix to be copied

◆ PetscMatrix() [2/2]

geosx::PetscMatrix::PetscMatrix ( PetscMatrix &&  src)
noexcept

Move constructor.

Parameters
[in]srcthe matrix to be copied

Member Function Documentation

◆ add() [1/5]

virtual void geosx::PetscMatrix::add ( globalIndex const  rowIndex,
globalIndex const  colIndex,
real64 const  value 
)
overridevirtual

Add to one element.

Parameters
rowIndexGlobal row index
colIndexGlobal column index
valueValue to add to prescribed location

Implements geosx::MatrixBase< PetscMatrix, PetscVector >.

◆ add() [2/5]

virtual void geosx::PetscMatrix::add ( globalIndex const  rowIndex,
globalIndex const *  colIndices,
real64 const *  values,
localIndex const  size 
)
overridevirtual

Add elements to one row using c-style arrays.

Parameters
rowIndexGlobal row index
colIndicesGlobal column indices
valuesValues to add to prescribed locations
sizeNumber of elements

Implements geosx::MatrixBase< PetscMatrix, PetscVector >.

◆ add() [3/5]

virtual void geosx::PetscMatrix::add ( globalIndex const  rowIndex,
arraySlice1d< globalIndex const > const &  colIndices,
arraySlice1d< real64 const > const &  values 
)
overridevirtual

Add elements to one row using array1d.

Parameters
rowIndexGlobal row index
colIndicesGlobal column indices
valuesValues to add to prescribed locations

Implements geosx::MatrixBase< PetscMatrix, PetscVector >.

◆ add() [4/5]

virtual void geosx::PetscMatrix::add ( arraySlice1d< globalIndex const > const &  rowIndices,
arraySlice1d< globalIndex const > const &  colIndices,
arraySlice2d< real64 const > const &  values 
)
overridevirtual

Add a dense block of values.

Parameters
rowIndicesGlobal row indices
colIndicesGlobal col indices
valuesDense local matrix of values

Implements geosx::MatrixBase< PetscMatrix, PetscVector >.

◆ add() [5/5]

virtual void geosx::PetscMatrix::add ( globalIndex const *  rowIndices,
globalIndex const *  colIndices,
real64 const *  values,
localIndex const  numRows,
localIndex const  numCols 
)
overridevirtual

Add a dense block of values.

Parameters
rowIndicesGlobal row indices
colIndicesGlobal col indices
valuesDense local matrix of values
numRowsNumber of row indices
numColsNumber of column indices
Note
Row major layout assumed in values

Implements geosx::MatrixBase< PetscMatrix, PetscVector >.

◆ addDiagonal()

virtual void geosx::PetscMatrix::addDiagonal ( PetscVector const &  src)
overridevirtual

Add entries of a vector to the diagonal of this matrix.

Parameters
srcthe source vector
Note
this must be square and have a (possibly zero) diagonal entry in every row. this and src must have the same parallel row distribution.

Implements geosx::MatrixBase< PetscMatrix, PetscVector >.

◆ addEntries()

virtual void geosx::PetscMatrix::addEntries ( PetscMatrix const &  src,
real64 const  scale = 1.0,
bool const  samePattern = true 
)
overridevirtual

Add entries of another matrix to this.

Parameters
srcthe source matrix
scalefactor to scale entries of src by
samePatternwhether to keep the original pattern or to extend it
Note
Sparsity pattern of this must be a superset of sparsity of src. this and src must have the same parallel row distribution.

Implements geosx::MatrixBase< PetscMatrix, PetscVector >.

◆ apply()

virtual void geosx::PetscMatrix::apply ( PetscVector const &  src,
PetscVector dst 
) const
overridevirtual

Apply operator to a vector, dst = this(src).

Parameters
srcinput vector
dstoutput vector
Warning
src and dst cannot alias the same vector (some implementations may allow this).

Implements geosx::LinearOperator< PetscVector >.

◆ applyTranspose()

virtual void geosx::PetscMatrix::applyTranspose ( Vector const &  src,
Vector dst 
) const
overridevirtual

Apply transpose of the matrix to a vector.

Parameters
srcInput vector (x).
dstOutput vector (b).

Implements geosx::MatrixBase< PetscMatrix, PetscVector >.

◆ clearRow()

virtual real64 geosx::PetscMatrix::clearRow ( globalIndex const  row,
bool const  keepDiag = false,
real64 const  diagValue = 0.0 
)
overridevirtual

Clear a row, and optionally set diagonal element to diagValue.

Parameters
rowglobalIndex of the row to be cleared.
diagValue(Optional) set diagonal element to desired value.
keepDiagif true, diagValue is ignored and original diagonal is preserved
Returns
original diagonal value if matrix is square; zero otherwise
Note
diagValue and keepDiag are ignored if the matrix is not square

Implements geosx::MatrixBase< PetscMatrix, PetscVector >.

◆ close()

virtual void geosx::PetscMatrix::close ( )
overridevirtual

Assemble and compress the matrix.

Compresses the matrix to CSR format with contiguous memory on each processor. Prevents from adding new entries in the sparsity pattern but allows for modification of existing entries.

Implements geosx::MatrixBase< PetscMatrix, PetscVector >.

◆ created()

virtual bool geosx::PetscMatrix::created ( ) const
overridevirtual

Get the number of global rows.

Returns
Number of global rows in the operator.

Implements geosx::MatrixBase< PetscMatrix, PetscVector >.

◆ createWithGlobalSize()

virtual void geosx::PetscMatrix::createWithGlobalSize ( globalIndex const  globalRows,
globalIndex const  globalCols,
localIndex const  maxEntriesPerRow,
MPI_Comm const &  comm 
)
overridevirtual

Create a rectangular matrix from number of rows/columns.

Parameters
commMPI communicator.
globalRowsGlobal number of rows.
globalColsGlobal number of columns.
maxEntriesPerRowMaximum number of entries per row (hint).

Implements geosx::MatrixBase< PetscMatrix, PetscVector >.

◆ createWithLocalSize()

virtual void geosx::PetscMatrix::createWithLocalSize ( localIndex const  localRows,
localIndex const  localCols,
localIndex const  maxEntriesPerRow,
MPI_Comm const &  comm 
)
overridevirtual

Create a rectangular matrix from number of rows/columns.

Parameters
commMPI communicator.
localRowsLocal number of rows.
localColsLocal number of columns.
maxEntriesPerRowMaximum number of entries per row (hint).

Implements geosx::MatrixBase< PetscMatrix, PetscVector >.

◆ extractDiagonal()

virtual void geosx::PetscMatrix::extractDiagonal ( PetscVector dst) const
overridevirtual

Extract diagonal values into a vector.

Parameters
dstthe target vector, must have the same row partitioning as this

Implements geosx::MatrixBase< PetscMatrix, PetscVector >.

◆ gemv()

virtual void geosx::PetscMatrix::gemv ( real64 const  alpha,
PetscVector const &  x,
real64 const  beta,
PetscVector y,
bool  useTranspose = false 
) const
overridevirtual

Compute gemv y = alpha*A*x + beta*y.

Note
The naming convention follows the BLAS library.
Parameters
alphaScalar factor for added matvec product.
xInput vector.
betaScalar factor for right hand side.
yOutput vector.
useTransposeBoolean, set to true to use A^T.
Warning
x and y cannot alias the same vector.

Implements geosx::MatrixBase< PetscMatrix, PetscVector >.

◆ getComm()

virtual MPI_Comm geosx::PetscMatrix::getComm ( ) const
overridevirtual

Get the MPI communicator the matrix was created with.

Returns
MPI communicator passed in create...()
Note
when build without MPI, may return anything (MPI_Comm will be a mock type defined in MpiWrapper)

Implements geosx::LinearOperator< PetscVector >.

◆ getDiagValue()

virtual real64 geosx::PetscMatrix::getDiagValue ( globalIndex  globalRow) const
overridevirtual

get diagonal element value on a given row

Parameters
globalRowglobal row index
Returns
value of diagonal element on the row

Implements geosx::MatrixBase< PetscMatrix, PetscVector >.

◆ getGlobalRowID()

virtual globalIndex geosx::PetscMatrix::getGlobalRowID ( localIndex const  index) const
overridevirtual

Map a local row index to global row index.

Parameters
indexthe local row index (between 0 and number of local rows)
Returns
the global row index corresponding to index

Implements geosx::MatrixBase< PetscMatrix, PetscVector >.

◆ getLocalRowID()

virtual localIndex geosx::PetscMatrix::getLocalRowID ( globalIndex const  index) const
overridevirtual

Map a global row index to local row index.

Parameters
indexthe global row index
Returns
the local row index corresponding to index, or -1 if not a local row

Implements geosx::MatrixBase< PetscMatrix, PetscVector >.

◆ getRowCopy()

virtual void geosx::PetscMatrix::getRowCopy ( globalIndex  globalRow,
arraySlice1d< globalIndex > const &  colIndices,
arraySlice1d< real64 > const &  values 
) const
overridevirtual

Returns a copy of the data in row globalRow.

Parameters
[in]globalRowthe index of global row to extract
[out]colIndicesthe output array of global column indices (must have a large enough size)
[out]valuesthe output array of values (must have a large enough size)

Implements geosx::MatrixBase< PetscMatrix, PetscVector >.

◆ globalRowLength()

virtual localIndex geosx::PetscMatrix::globalRowLength ( globalIndex  globalRowIndex) const
overridevirtual

Get row length via global row index.

Parameters
[in]globalRowIndexthe global row index
Returns
the number of nonzero entries in the row

Implements geosx::MatrixBase< PetscMatrix, PetscVector >.

◆ ilower()

virtual globalIndex geosx::PetscMatrix::ilower ( ) const
overridevirtual

Returns the index of the first global row owned by that processor.

Returns
the index of the first global row owned by that processor

Implements geosx::MatrixBase< PetscMatrix, PetscVector >.

◆ insert() [1/6]

virtual void geosx::PetscMatrix::insert ( globalIndex const  rowIndex,
globalIndex const  colIndex,
real64 const  value 
)
overridevirtual

Insert one element.

Parameters
rowIndexGlobal row index
colIndexGlobal column index
valueValue to insert at prescribed location

Implements geosx::MatrixBase< PetscMatrix, PetscVector >.

◆ insert() [2/6]

virtual void geosx::PetscMatrix::insert ( globalIndex const  rowIndex,
globalIndex const *  colIndices,
real64 const *  values,
localIndex const  size 
)
overridevirtual

Insert elements to one row using c-style arrays.

Parameters
rowIndexGlobal row index
colIndicesGlobal column indices
valuesValues to add to prescribed locations
sizeNumber of elements

Implements geosx::MatrixBase< PetscMatrix, PetscVector >.

◆ insert() [3/6]

virtual void geosx::PetscMatrix::insert ( globalIndex const  rowIndex,
arraySlice1d< globalIndex const > const &  colIndices,
arraySlice1d< real64 const > const &  values 
)
overridevirtual

Insert elements of one row using array1d.

Parameters
rowIndexGlobal row index
colIndicesGlobal column indices
valuesValues to add to prescribed locations

Implements geosx::MatrixBase< PetscMatrix, PetscVector >.

◆ insert() [4/6]

virtual void geosx::PetscMatrix::insert ( arraySlice1d< globalIndex const > const &  rowIndices,
arraySlice1d< globalIndex const > const &  colIndices,
arraySlice2d< real64 const > const &  values 
)
overridevirtual

Insert a dense block of values.

Parameters
rowIndicesGlobal row indices
colIndicesGlobal col indices
valuesDense local matrix of values

Implements geosx::MatrixBase< PetscMatrix, PetscVector >.

◆ insert() [5/6]

virtual void geosx::PetscMatrix::insert ( globalIndex const *  rowIndices,
globalIndex const *  colIndices,
real64 const *  values,
localIndex const  numRows,
localIndex const  numCols 
)
overridevirtual

Insert dense matrix.

Parameters
rowIndicesGlobal row indices
colIndicesGlobal col indices
valuesDense local matrix of values
numRowsNumber of row indices
numColsNumber of column indices
Note
Row major layout assumed in values

Implements geosx::MatrixBase< PetscMatrix, PetscVector >.

◆ insert() [6/6]

virtual void geosx::PetscMatrix::insert ( arrayView1d< globalIndex const > const &  rowIndices,
arrayView1d< globalIndex const > const &  colIndices,
arrayView1d< real64 const > const &  values 
)
inlineoverridevirtual

Insert values stored in 3 linear vectors.

Parameters
rowIndicesArray of global row indices
colIndicesArray of global column indices
valuesArray of values

Implements geosx::MatrixBase< PetscMatrix, PetscVector >.

Definition at line 216 of file PetscMatrix.hpp.

◆ iupper()

virtual globalIndex geosx::PetscMatrix::iupper ( ) const
overridevirtual

Returns index one past the last global row owned by that processor.

Returns
the next index after last global row owned by that processor
Note
The intention is for [ilower; iupper) to be used as a half-open index range

Implements geosx::MatrixBase< PetscMatrix, PetscVector >.

◆ jlower()

virtual globalIndex geosx::PetscMatrix::jlower ( ) const
overridevirtual

Returns the index of the first global col owned by that processor.

Returns
index of the first owned global col
Note
Matrix implementations don't physically "own" column ranges the same way they do row ranges. Instead, the column range refers to the "diagonal" block of columns which would correspond to the local range of entries of a vector created with the same local/global size as the number of matrix columns.

Implements geosx::MatrixBase< PetscMatrix, PetscVector >.

◆ jupper()

virtual globalIndex geosx::PetscMatrix::jupper ( ) const
overridevirtual

Returns index one past the last global col owned by that processor.

Returns
index one past the last owned global col
Note
The intention is for [jlower; jupper) to be used as a half-open index range.
Also see note for jlower() about the meaning of "owned" columns.

Implements geosx::MatrixBase< PetscMatrix, PetscVector >.

◆ leftMultiplyTranspose()

virtual void geosx::PetscMatrix::leftMultiplyTranspose ( PetscMatrix const &  src,
PetscMatrix dst 
) const
overridevirtual

Matrix/Matrix transpose multiplication.

Compute this^T * B = C.

Parameters
srcInput matrix (B).
dstOutput matrix (C).
Note
The output matrix dst doesn't need to be created beforehand.

Implements geosx::MatrixBase< PetscMatrix, PetscVector >.

◆ leftRightScale()

virtual void geosx::PetscMatrix::leftRightScale ( PetscVector const &  vecLeft,
PetscVector const &  vecRight 
)
overridevirtual

Post-multiplies (right) with diagonal matrix consisting of the values in vecRight and pre-multiplies (left) with diagonal matrix consisting of the values in vec.

Parameters
vecLeftvec to pre-multiply with.
vecRightvec to post-multiply with.

Implements geosx::MatrixBase< PetscMatrix, PetscVector >.

◆ leftScale()

virtual void geosx::PetscMatrix::leftScale ( PetscVector const &  vec)
overridevirtual

Pre-multiplies (left) with diagonal matrix consisting of the values in vec.

Parameters
vecVector to pre-multiply with.

Implements geosx::MatrixBase< PetscMatrix, PetscVector >.

◆ localRowLength()

virtual localIndex geosx::PetscMatrix::localRowLength ( localIndex  localRowIndex) const
overridevirtual

Get row length via local row index.

Parameters
[in]localRowIndexthe local row index
Returns
the number of nonzero entries in the row

TODO: Breaks the goal of hiding local row indexing from user. Revise use cases to use ilower() and iupper().

Implements geosx::MatrixBase< PetscMatrix, PetscVector >.

◆ maxRowLength()

virtual localIndex geosx::PetscMatrix::maxRowLength ( ) const
overridevirtual

Returns the number of nonzero entries in the longest row of the matrix.

Returns
the max length of a row

Collective.

Implements geosx::MatrixBase< PetscMatrix, PetscVector >.

◆ multiply()

virtual void geosx::PetscMatrix::multiply ( PetscMatrix const &  src,
PetscMatrix dst 
) const
overridevirtual

Matrix/Matrix multiplication.

Compute this * B = C.

Parameters
srcInput matrix (B).
dstOutput matrix (C).
Note
The output matrix dst doesn't need to be created beforehand.

Implements geosx::MatrixBase< PetscMatrix, PetscVector >.

◆ multiplyPtAP()

virtual void geosx::PetscMatrix::multiplyPtAP ( PetscMatrix const &  P,
PetscMatrix dst 
) const
overridevirtual

Compute the triple product dst = P^T * this * P

Parameters
Pthe "prolongation" matrix
dstthe resulting product matrix (will be re-created as needed)

Reimplemented from geosx::MatrixBase< PetscMatrix, PetscVector >.

◆ multiplyRAP()

virtual void geosx::PetscMatrix::multiplyRAP ( PetscMatrix const &  R,
PetscMatrix const &  P,
PetscMatrix dst 
) const
overridevirtual

Compute the triple product dst = R * this * P

Parameters
Rthe "restriction" matrix
Pthe "prolongation" matrix
dstthe resulting product matrix (will be re-created as needed)

Reimplemented from geosx::MatrixBase< PetscMatrix, PetscVector >.

◆ norm1()

virtual real64 geosx::PetscMatrix::norm1 ( ) const
overridevirtual

Returns the one norm of the matrix.

Returns
the value of 1-norm

Implements geosx::MatrixBase< PetscMatrix, PetscVector >.

◆ normFrobenius()

virtual real64 geosx::PetscMatrix::normFrobenius ( ) const
overridevirtual

Returns the Frobenius norm of the matrix.

Returns
the value of Frobenius norm

Implements geosx::MatrixBase< PetscMatrix, PetscVector >.

◆ normInf()

virtual real64 geosx::PetscMatrix::normInf ( ) const
overridevirtual

Returns the infinity norm of the matrix.

Returns
the value of infinity norm

Implements geosx::MatrixBase< PetscMatrix, PetscVector >.

◆ numGlobalCols()

virtual globalIndex geosx::PetscMatrix::numGlobalCols ( ) const
overridevirtual

Get the number of global columns.

Returns
Number of global columns in the operator.

Implements geosx::LinearOperator< PetscVector >.

◆ numGlobalNonzeros()

virtual globalIndex geosx::PetscMatrix::numGlobalNonzeros ( ) const
overridevirtual

Returns the total number of nonzeros in the matrix.

Returns
the total number of nonzeros in the matrix

Implements geosx::MatrixBase< PetscMatrix, PetscVector >.

◆ numGlobalRows()

virtual globalIndex geosx::PetscMatrix::numGlobalRows ( ) const
overridevirtual

Get the number of global rows.

Returns
Number of global rows in the operator.

Implements geosx::LinearOperator< PetscVector >.

◆ numLocalCols()

virtual localIndex geosx::PetscMatrix::numLocalCols ( ) const
overridevirtual

Get the number of local columns.

Returns
Number of local columns in the operator.
Note
The use of term "local columns" refers not to physical partitioning of columns across ranks (as e.g. matrices are partitioned by rows and typically physically store all column entries), but to the partitioning of a compatible vector object that this operator can be applied to.

Implements geosx::LinearOperator< PetscVector >.

◆ numLocalNonzeros()

virtual localIndex geosx::PetscMatrix::numLocalNonzeros ( ) const
overridevirtual

Returns the number of nonzeros in the local portion of the matrix.

Returns
the number of nonzeros in the local portion of the matrix

Implements geosx::MatrixBase< PetscMatrix, PetscVector >.

◆ numLocalRows()

virtual localIndex geosx::PetscMatrix::numLocalRows ( ) const
overridevirtual

Get the number of local rows.

Returns
Number of local rows in the operator.

Implements geosx::LinearOperator< PetscVector >.

◆ open()

virtual void geosx::PetscMatrix::open ( )
overridevirtual

Open matrix for adding new entries.

Note
Adding entries that result in modifications of sparsity pattern may not be allowed by most implementations. An error will be raised in that case.

Implements geosx::MatrixBase< PetscMatrix, PetscVector >.

◆ operator=() [1/2]

PetscMatrix& geosx::PetscMatrix::operator= ( PetscMatrix const &  src)

Copy assignment.

Parameters
srcmatrix to be copied.
Returns
the new vector.

◆ operator=() [2/2]

PetscMatrix& geosx::PetscMatrix::operator= ( PetscMatrix &&  src)
noexcept

Move assignment.

Parameters
srcmatrix to be moved from.
Returns
the new matrix.

◆ print()

virtual void geosx::PetscMatrix::print ( std::ostream &  os = std::cout) const
overridevirtual

Print the matrix in Trilinos format to a stream.

Parameters
osthe output stream

Implements geosx::MatrixBase< PetscMatrix, PetscVector >.

◆ rightMultiplyTranspose()

virtual void geosx::PetscMatrix::rightMultiplyTranspose ( PetscMatrix const &  src,
PetscMatrix dst 
) const
overridevirtual

Matrix/Matrix transpose multiplication.

Compute B * this^T = C.

Parameters
srcInput matrix (B).
dstOutput matrix (C).
Note
The output matrix dst doesn't need to be created beforehand.

Implements geosx::MatrixBase< PetscMatrix, PetscVector >.

◆ rightScale()

virtual void geosx::PetscMatrix::rightScale ( PetscVector const &  vec)
overridevirtual

Post-multiplies (right) with diagonal matrix consisting of the values in vec.

Parameters
vecVector to post-multiply with.

Implements geosx::MatrixBase< PetscMatrix, PetscVector >.

◆ scale()

virtual void geosx::PetscMatrix::scale ( real64 const  scalingFactor)
overridevirtual

Multiply all elements by scalingFactor.

Parameters
scalingFactorScaling factor.

Implements geosx::MatrixBase< PetscMatrix, PetscVector >.

◆ separateComponentFilter()

virtual void geosx::PetscMatrix::separateComponentFilter ( PetscMatrix dst,
localIndex const  dofPerPoint 
) const
inlineoverridevirtual

Apply a separate component approximation (filter) to this matrix.

Template Parameters
MATRIXthe type of matrices
Parameters
dstthe target (filtered) matrix
dofPerPointnumber of degrees-of-freedom per node

Implements geosx::MatrixBase< PetscMatrix, PetscVector >.

Definition at line 265 of file PetscMatrix.hpp.

◆ set() [1/6]

virtual void geosx::PetscMatrix::set ( real64 const  value)
overridevirtual

Set all non-zero elements to a value.

Parameters
valuethe value to set all elements to

Implements geosx::MatrixBase< PetscMatrix, PetscVector >.

◆ set() [2/6]

virtual void geosx::PetscMatrix::set ( globalIndex const  rowIndex,
globalIndex const  colIndex,
real64 const  value 
)
overridevirtual

Set one element.

Parameters
rowIndexGlobal row index
colIndexGlobal column index
valueValue to set at prescribed location

Implements geosx::MatrixBase< PetscMatrix, PetscVector >.

◆ set() [3/6]

virtual void geosx::PetscMatrix::set ( globalIndex const  rowIndex,
globalIndex const *  colIndices,
real64 const *  values,
localIndex const  size 
)
overridevirtual

Set elements to one row using c-style arrays.

Parameters
rowIndexGlobal row index
colIndicesGlobal column indices
valuesValues to add to prescribed locations
sizeNumber of elements

Implements geosx::MatrixBase< PetscMatrix, PetscVector >.

◆ set() [4/6]

virtual void geosx::PetscMatrix::set ( globalIndex const  rowIndex,
arraySlice1d< globalIndex const > const &  colIndices,
arraySlice1d< real64 const > const &  values 
)
overridevirtual

Set elements of one row using array1d.

Parameters
rowIndexGlobal row index
colIndicesGlobal column indices
valuesValues to add to prescribed locations

Implements geosx::MatrixBase< PetscMatrix, PetscVector >.

◆ set() [5/6]

virtual void geosx::PetscMatrix::set ( arraySlice1d< globalIndex const > const &  rowIndices,
arraySlice1d< globalIndex const > const &  colIndices,
arraySlice2d< real64 const > const &  values 
)
overridevirtual

Set a dense block of values.

Parameters
rowIndicesGlobal row indices
colIndicesGlobal col indices
valuesDense local matrix of values

Implements geosx::MatrixBase< PetscMatrix, PetscVector >.

◆ set() [6/6]

virtual void geosx::PetscMatrix::set ( globalIndex const *  rowIndices,
globalIndex const *  colIndices,
real64 const *  values,
localIndex const  numRows,
localIndex const  numCols 
)
overridevirtual

Set a dense block of values.

Parameters
rowIndicesGlobal row indices
colIndicesGlobal col indices
valuesDense local matrix of values
numRowsNumber of row indices
numColsNumber of column indices
Note
Row major layout assumed in values

Implements geosx::MatrixBase< PetscMatrix, PetscVector >.

◆ transpose()

virtual void geosx::PetscMatrix::transpose ( PetscMatrix dst) const
overridevirtual

Matrix transposition.

Compute B = this^T.

Parameters
dstOutput matrix (B).

Implements geosx::MatrixBase< PetscMatrix, PetscVector >.

◆ unwrapped() [1/2]

const Mat& geosx::PetscMatrix::unwrapped ( ) const

Returns a const pointer to the underlying matrix.

Returns
the const pointer to the underlying matrix.

◆ unwrapped() [2/2]

Mat& geosx::PetscMatrix::unwrapped ( )

Returns a non-const pointer to the underlying matrix.

Returns
the non-const pointer to the underlying matrix.

◆ write()

virtual void geosx::PetscMatrix::write ( string const &  filename,
LAIOutputFormat const  format = LAIOutputFormat::MATRIX_MARKET 
) const
overridevirtual

Write the matrix to filename in a matlab-compatible format.

Parameters
filenamename of the output file
formatoutput format

Within octave / matlab:

load filename M = spconvert(filename_root)

Implements geosx::MatrixBase< PetscMatrix, PetscVector >.


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