Go to the documentation of this file.
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;
87 const Parallel::Communicator &
comm);
121 virtual void init ()
override;
123 virtual void clear ()
override;
125 virtual void zero ()
override;
127 virtual void close ()
override;
139 const T
value)
override;
143 const T
value)
override;
146 const std::vector<numeric_index_type> & rows,
147 const std::vector<numeric_index_type> & cols)
override;
150 const std::vector<numeric_index_type> & dof_indices)
override;
171 virtual bool closed()
const override;
229 #endif // LIBMESH_TRILINOS_HAVE_EPETRA
230 #endif // LIBMESH_TRILINOS_EPETRA_MATRIX_H
virtual void init() override
Initialize this matrix using the sparsity structure computed by dof_map.
Epetra_FECrsMatrix * _mat
Actual Epetra datatype to hold matrix entries.
const Epetra_FECrsMatrix * mat() const
The libMesh namespace provides an interface to certain functionality in the library.
virtual void set(const numeric_index_type i, const numeric_index_type j, const T value) override
Set the element (i,j) to value.
const Parallel::Communicator & comm() const
Defines a dense matrix for use in Finite Element-type computations.
virtual numeric_index_type row_stop() const override
virtual Real linfty_norm() const override
virtual void get_transpose(SparseMatrix< T > &dest) const override
Copies the transpose of the matrix into dest, which may be *this.
Provides a uniform interface to vector storage schemes for different linear algebra libraries.
Epetra_Map * _map
Holds the distributed Map.
virtual void close() override
Calls the SparseMatrix's internal assembly routines, ensuring that the values are consistent across p...
EpetraMatrix(const Parallel::Communicator &comm)
Constructor; initializes the matrix to be empty, without any structure, i.e.
This class provides a nice interface to the Epetra data structures for parallel, sparse matrices.
bool _use_transpose
Epetra has no GetUseTranspose so we need to keep track of whether we're transposed manually.
virtual numeric_index_type row_start() const override
virtual numeric_index_type m() const override
virtual bool closed() const override
Epetra_FECrsMatrix * mat()
dof_id_type numeric_index_type
virtual void zero() override
Set all entries to 0.
virtual void update_sparsity_pattern(const SparsityPattern::Graph &) override
Updates the matrix sparsity pattern.
Epetra_CrsGraph * _graph
Holds the sparsity pattern.
virtual numeric_index_type n() const override
virtual bool need_full_sparsity_pattern() const override
The EpetraMatrix needs the full sparsity pattern.
virtual void add(const numeric_index_type i, const numeric_index_type j, const T value) override
Add value to the element (i,j).
virtual void clear() override
Restores the SparseMatrix<T> to a pristine state.
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 void get_diagonal(NumericVector< T > &dest) const override
Copies the diagonal part of the matrix into dest.
void swap(EpetraMatrix< T > &)
Swaps the internal data pointers, no actual values are swapped.
EpetraMatrix & operator=(const EpetraMatrix &)=delete
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
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.
virtual Real l1_norm() const override
bool _destroy_mat_on_exit
This boolean value should only be set to false for the constructor which takes an Epetra_FECrsMatrix ...
virtual T operator()(const numeric_index_type i, const numeric_index_type j) const override