19 #ifndef GEOSX_LINEARALGEBRA_INTERFACES_EPETRAMATRIX_HPP_ 20 #define GEOSX_LINEARALGEBRA_INTERFACES_EPETRAMATRIX_HPP_ 29 class Epetra_CrsMatrix;
31 class Epetra_FECrsMatrix;
40 private MatrixBase< EpetraMatrix, EpetraVector >
90 MPI_Comm
const & comm )
override;
95 MPI_Comm
const & comm )
override;
97 virtual void open()
override;
99 virtual void close()
override;
104 virtual bool created()
const override;
106 virtual void reset()
override;
108 virtual void set(
real64 const value )
override;
110 virtual void zero()
override;
114 real64 const value )
override;
118 real64 const value )
override;
122 real64 const value )
override;
219 bool useTranspose =
false )
const override;
221 virtual void scale(
real64 const scalingFactor )
override;
233 bool const keepDiag =
false,
234 real64 const diagValue = 0.0 )
override;
238 bool const samePattern =
true )
override;
331 virtual MPI_Comm
getComm()
const override;
333 virtual void print( std::ostream & os = std::cout )
const override;
335 virtual void write(
string const & filename,
344 Epetra_FECrsMatrix
const &
unwrapped()
const;
366 void create( Epetra_CrsMatrix
const & src );
369 std::unique_ptr< Epetra_FECrsMatrix > m_matrix;
372 std::unique_ptr< Epetra_Map > m_src_map;
375 std::unique_ptr< Epetra_Map > m_dst_map;
Wrapper class for Epetra's CrsMatrix.
virtual void applyTranspose(EpetraVector const &src, EpetraVector &dst) const override
Apply transpose of the matrix to a vector.
virtual void createWithLocalSize(localIndex const localSize, localIndex const maxEntriesPerRow, MPI_Comm const &comm)
Create a square matrix from local number of rows.
bool assembled() const
Query matrix assembled status.
virtual bool created() const override
Query matrix creation status.
virtual localIndex maxRowLength() const override
Returns the number of nonzero entries in the longest row of the matrix.
virtual localIndex localRowLength(localIndex localRowIndex) const override
Get row length via local row index.
long long int globalIndex
Global index type (for indexing objects across MPI partitions).
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.
This class serves to provide a sliced multidimensional interface to the family of LvArray classes...
virtual void zero() override
Set all elements to zero.
std::string format(int NDIM, INDEX_TYPE const *const dims)
This function returns a string that may be used as the "type" in a call to TV_ttf_add_row(). This will either be a single value or an array.
virtual void reset() override
Reset the matrix to default state.
virtual void write(string const &filename, LAIOutputFormat const format=LAIOutputFormat::MATRIX_MARKET) const override
Write the matrix to filename in a matlab-compatible format.
virtual real64 norm1() const override
Returns the one norm of the matrix.
virtual globalIndex ilower() const override
Returns the index of the first global row owned by that processor.
bool ready() const
Query matrix ready status.
virtual void getRowCopy(globalIndex globalRow, arraySlice1d< globalIndex > const &colIndices, arraySlice1d< real64 > const &values) const override
Returns a copy of the data in row globalRow.
virtual globalIndex jlower() const override
Returns the index of the first global col owned by that processor.
virtual void leftMultiplyTranspose(EpetraMatrix const &src, EpetraMatrix &dst) const override
Matrix/Matrix transpose multiplication.
virtual void extractDiagonal(EpetraVector &dst) const override
Extract diagonal values into a vector.
virtual void addEntries(EpetraMatrix const &src, real64 const scale=1.0, bool const samePattern=true) override
Add entries of another matrix to this.
virtual real64 normInf() const override
Returns the infinity norm of the matrix.
double real64
64-bit floating point type.
virtual real64 getDiagValue(globalIndex globalRow) const override
get diagonal element value on a given row
virtual void add(globalIndex const rowIndex, globalIndex const colIndex, real64 const value) override
Add to one element.
virtual void transpose(EpetraMatrix &dst) const override
Matrix transposition.
virtual void rightMultiplyTranspose(EpetraMatrix const &src, EpetraMatrix &dst) const override
Matrix/Matrix transpose multiplication.
virtual localIndex numLocalNonzeros() const override
Returns the number of nonzeros in the local portion of the matrix.
virtual real64 normFrobenius() const override
Returns the Frobenius norm of the matrix.
virtual ~EpetraMatrix() override
Virtual destructor.
virtual void leftRightScale(EpetraVector const &vecLeft, EpetraVector const &vecRight) override
Post-multiplies (right) with diagonal matrix consisting of the values in vecRight and pre-multiplies ...
EpetraMatrix()
Empty matrix constructor.
virtual void gemv(real64 const alpha, EpetraVector const &x, real64 const beta, EpetraVector &y, bool useTranspose=false) const override
Compute gemv y = alpha*A*x + beta*y.
virtual void leftScale(EpetraVector const &vec) override
Pre-multiplies (left) with diagonal matrix consisting of the values in vec.
virtual void create(CRSMatrixView< real64 const, globalIndex const > const &localMatrix, MPI_Comm const &comm)
Create parallel matrix from a local CRS matrix.
virtual localIndex numLocalRows() const override
Return the local number of columns on each processor.
virtual void multiply(EpetraMatrix const &src, EpetraMatrix &dst) const override
Matrix/Matrix multiplication.
virtual globalIndex numGlobalRows() const override
Returns the number of global rows.
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.
virtual void createWithGlobalSize(globalIndex const globalSize, localIndex const maxEntriesPerRow, MPI_Comm const &comm)
Create a square matrix from global number of rows.
virtual void open() override
Open matrix for adding new entries.
virtual void rightScale(EpetraVector const &vec) override
Post-multiplies (right) with diagonal matrix consisting of the values in vec.
virtual globalIndex numGlobalCols() const override
Returns the number of global columns.
bool closed() const
Query matrix closed status.
virtual MPI_Comm getComm() const override
Get the MPI communicator the matrix was created with.
virtual localIndex globalRowLength(globalIndex globalRowIndex) const override
Get row length via global row index.
virtual void close() override
Assemble and compress the matrix.
virtual void print(std::ostream &os=std::cout) const override
Print the matrix in Trilinos format to a stream.
bool modifiable() const
Query matrix status.
virtual void multiplyPtAP(EpetraMatrix const &P, EpetraMatrix &dst) const override
Compute the triple product dst = P^T * this * P
virtual void multiplyRAP(EpetraMatrix const &R, EpetraMatrix const &P, EpetraMatrix &dst) const override
Compute the triple product dst = R * this * P
virtual globalIndex getGlobalRowID(localIndex const index) const override
Map a local row index to global row index.
bool insertable() const
Query matrix status.
std::ptrdiff_t localIndex
Local index type (for indexing objects within an MPI partition).
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.
virtual globalIndex numGlobalNonzeros() const override
Returns the total number of nonzeros in the matrix.
virtual void residual(Vector const &x, Vector const &b, Vector &r) const override
Compute residual r = Ax - b.
virtual localIndex getLocalRowID(globalIndex const index) const override
Map a global row index to local row index.
virtual globalIndex iupper() const override
Returns index one past the last global row owned by that processor.
virtual void scale(real64 const scalingFactor) override
Multiply all elements by scalingFactor.
virtual void insert(globalIndex const rowIndex, globalIndex const colIndex, real64 const value) override
Insert one element.
This class creates and provides basic support for the Epetra_FEVector vector object type used in Tril...
Epetra_FECrsMatrix const & unwrapped() const
Returns a const pointer to the underlying matrix.
Abstract base class for linear operators.
virtual globalIndex jupper() const override
Returns index one past the last global col owned by that processor.
virtual void apply(EpetraVector const &src, EpetraVector &dst) const override
Apply operator to a vector.
virtual localIndex numLocalCols() const override
Return the local number of columns on each processor.
virtual void addDiagonal(EpetraVector const &src) override
Add entries of a vector to the diagonal of this matrix.
Common base template for all matrix wrapper types.