20 #ifndef LIBMESH_TRILINOS_EPETRA_MATRIX_H 21 #define LIBMESH_TRILINOS_EPETRA_MATRIX_H 23 #include "libmesh/libmesh_common.h" 25 #ifdef LIBMESH_TRILINOS_HAVE_EPETRA 28 #include "libmesh/ignore_warnings.h" 29 #include <Epetra_FECrsMatrix.h> 30 #include <Epetra_Map.h> 31 #include <Epetra_MpiComm.h> 34 #ifdef LIBMESH_TRILINOS_HAVE_EPETRAEXT 35 # include <EpetraExt_MatrixMatrix.h> 37 #include "libmesh/restore_warnings.h" 40 #include "libmesh/sparse_matrix.h" 50 template <
typename T>
class DenseMatrix;
126 virtual void clear () noexcept override;
128 virtual
void zero () override;
134 virtual
void close () override;
150 const T
value) override;
154 const T
value) override;
182 virtual
bool closed() const override;
192 std::vector<T> & values) const override;
244 #endif // LIBMESH_TRILINOS_HAVE_EPETRA 245 #endif // LIBMESH_TRILINOS_EPETRA_MATRIX_H
virtual std::unique_ptr< SparseMatrix< T > > clone() const override
virtual numeric_index_type row_stop() const override
virtual void get_transpose(SparseMatrix< T > &dest) const override
Copies the transpose of the matrix into dest, which may be *this.
virtual void clear() noexcept override
clear() is called from the destructor, so it should not throw.
bool _destroy_mat_on_exit
This boolean value should only be set to false for the constructor which takes an Epetra_FECrsMatrix ...
Provides a uniform interface to vector storage schemes for different linear algebra libraries...
const Parallel::Communicator & comm() const
bool _use_transpose
Epetra has no GetUseTranspose so we need to keep track of whether we're transposed manually...
virtual std::unique_ptr< SparseMatrix< T > > zero_clone() const override
The libMesh namespace provides an interface to certain functionality in the library.
virtual void init(const numeric_index_type m, const numeric_index_type n, const numeric_index_type m_l, const numeric_index_type n_l, const numeric_index_type nnz=30, const numeric_index_type noz=10, const numeric_index_type blocksize=1) override
Initialize SparseMatrix with the specified sizes.
virtual numeric_index_type col_stop() const override
virtual void get_row(numeric_index_type i, std::vector< numeric_index_type > &indices, std::vector< T > &values) const override
Get a row from the matrix.
virtual void add_matrix(const DenseMatrix< T > &dm, const std::vector< numeric_index_type > &rows, const std::vector< numeric_index_type > &cols) override
Add the full matrix dm to the SparseMatrix.
virtual numeric_index_type n() const override
virtual void set(const numeric_index_type i, const numeric_index_type j, const T value) override
Set the element (i,j) to value.
virtual numeric_index_type col_start() const override
dof_id_type numeric_index_type
Epetra_CrsGraph * _graph
Holds the sparsity pattern.
virtual numeric_index_type m() const override
EpetraMatrix & operator=(const EpetraMatrix &)=delete
virtual numeric_index_type row_start() const override
virtual void close() override
Calls the SparseMatrix's internal assembly routines, ensuring that the values are consistent across p...
virtual void print_personal(std::ostream &os=libMesh::out) const override
Print the contents of the matrix to the screen in a package-personalized style, if available...
EpetraMatrix(const Parallel::Communicator &comm)
Constructor; initializes the matrix to be empty, without any structure, i.e.
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
virtual Real l1_norm() const override
virtual Real linfty_norm() const override
virtual void get_diagonal(NumericVector< T > &dest) const override
Copies the diagonal part of the matrix into dest.
virtual bool closed() const override
virtual void zero() override
Set all entries to 0.
Epetra_FECrsMatrix * _mat
Actual Epetra datatype to hold matrix entries.
virtual void add(const numeric_index_type i, const numeric_index_type j, const T value) override
Add value to the element (i,j).
Epetra_FECrsMatrix * mat()
Defines a dense matrix for use in Finite Element-type computations.
void swap(EpetraMatrix< T > &)
Swaps the internal data pointers, no actual values are swapped.
Epetra_Map * _map
Holds the distributed Map.
This class provides a nice interface to the Epetra data structures for parallel, sparse matrices...
virtual void update_sparsity_pattern(const SparsityPattern::Graph &) override
Updates the matrix sparsity pattern.
const Epetra_FECrsMatrix * mat() const
virtual bool need_full_sparsity_pattern() const override
The EpetraMatrix needs the full sparsity pattern.
ParallelType
Defines an enum for parallel data structure types.