#include <matrixeigendense.hpp>
interface to eigen sparse matrix
this class is a wrapper around csr_matrix<>
and csc_matrix<>
data type from eigen:
: .
Public Types | |
Typedefs | |
typedef T | value_type |
typedef type_traits < value_type >::real_type | real_type |
typedef Eigen::Matrix< T, Eigen::Dynamic, Eigen::Dynamic > | matrix_type |
typedef super::graph_type | graph_type |
typedef super::graph_ptrtype | graph_ptrtype |
![]() | |
typedef boost::shared_ptr < datamap_type > | datamap_ptrtype |
typedef DataMap | datamap_type |
typedef boost::shared_ptr < graph_type > | graph_ptrtype |
typedef GraphCSR | graph_type |
typedef type_traits< T >::real_type | real_type |
typedef T | value_type |
typedef boost::shared_ptr < Vector< T > > | vector_ptrtype |
typedef Vector< T > | vector_type |
Public Member Functions | |
Constructors, destructor | |
MatrixEigenDense () | |
MatrixEigenDense (size_type r, size_type c) | |
MatrixEigenDense (MatrixEigenDense const &m) | |
~MatrixEigenDense () | |
Operator overloads | |
MatrixEigenDense< T > & | operator= (MatrixSparse< value_type > const &M) |
value_type | operator() (size_type i, size_type j) const |
Accessors | |
size_type | size1 () const |
size_type | size2 () const |
size_type | nnz () const |
size_type | rowStart () const |
size_type | rowStop () const |
bool | isInitialized () const |
void | close () const |
bool | closed () const |
matrix_type const & | mat () const |
matrix_type & | mat () |
Methods | |
void | init (const size_type m, const size_type n, const size_type m_l, const size_type n_l, const size_type nnz=30, const size_type noz=10) |
void | init (const size_type m, const size_type n, const size_type m_l, const size_type n_l, graph_ptrtype const &graph) |
void | clear () |
void | zero () |
void | zero (size_type start1, size_type stop1, size_type start2, size_type stop2) |
void | add (const size_type i, const size_type j, const value_type &value) |
void | set (const size_type i, const size_type j, const value_type &value) |
void | printMatlab (const std::string name="NULL") const |
void | resize (size_type nr, size_type nc, bool=false) |
void | diagonal (Vector< T > &dest) const |
value_type | energy (Vector< value_type > const &__v, Vector< value_type > const &__u, bool transpose=false) const |
void | zeroRows (std::vector< int > const &rows, Vector< value_type > const &values, Vector< value_type > &rhs, Context const &on_context) |
void | init () |
void | addMatrix (const ublas::matrix< T, ublas::row_major > &, const std::vector< size_type > &, const std::vector< size_type > &) |
void | addMatrix (const boost::numeric::ublas::matrix< T, ublas::row_major > &, const std::vector< size_type > &) |
void | addMatrix (value_type v, MatrixSparse< value_type > &_m) |
void | addMatrix (int *rows, int nrows, int *cols, int ncols, value_type *data) |
void | scale (const T a) |
void | transpose (MatrixSparse< value_type > &Mt) const |
real_type | l1Norm () const |
real_type | linftyNorm () const |
void | updateBlockMat (boost::shared_ptr< MatrixSparse< value_type > > m, std::vector< size_type > start_i, std::vector< size_type > start_j) |
![]() | |
virtual void | addMatrix (const ublas::matrix< value_type > &dm, const std::vector< size_type > &rows, const std::vector< size_type > &cols)=0 |
virtual void | addMatrix (const ublas::matrix< value_type > &dm, const std::vector< size_type > &dof_indices)=0 |
void | addMatrix (const T &s, boost::shared_ptr< MatrixSparse< T > > &m) |
void | checkProperties () const |
WorldComm const & | comm () const |
virtual void | createSubmatrix (MatrixSparse< T > &submatrix, const std::vector< size_type > &rows, const std::vector< size_type > &cols) const |
void | diagonal (boost::shared_ptr< Vector< T > > &dest) const |
real_type | energy (vector_ptrtype const &v, vector_ptrtype const &u, bool _transpose=false) const |
graph_ptrtype const & | graph () const |
bool | hasGraph () const |
bool | haveConsistentProperties () const |
std::vector< std::vector < size_type > > | indexSplit () const |
bool | isDense () const |
bool | isHermitian () const |
bool | isHermitianPositiveDefinite () const |
bool | isNonHermitian () const |
bool | isPositiveDefinite () const |
bool | isSingular () const |
datamap_type const & | mapCol () const |
datamap_ptrtype const & | mapColPtr () const |
datamap_type const & | mapRow () const |
datamap_ptrtype const & | mapRowPtr () const |
MatrixSparse () | |
MatrixSparse (datamap_ptrtype const &dmRow, datamap_ptrtype const &dmCol, WorldComm const &worldComm=Environment::worldComm()) | |
void | multAddVector (const Vector< T > &arg, Vector< T > &dest) const |
void | multVector (const Vector< T > &arg, Vector< T > &dest) const |
void | multVector (const boost::shared_ptr< Vector< T > > &arg, boost::shared_ptr< Vector< T > > &dest) const |
MatrixSparse< T > & | operator= (boost::shared_ptr< MatrixSparse< value_type > > const &M) |
void | print (std::ostream &os=std::cout) const |
virtual void | printPersonal (std::ostream &=std::cout) const |
virtual void | reinitSubmatrix (MatrixSparse< T > &submatrix, const std::vector< size_type > &rows, const std::vector< size_type > &cols) const |
void | setGraph (graph_ptrtype const &graph) |
virtual void | setIndexSplit (std::vector< std::vector< size_type > > const &_indexSplit) |
void | setInitialized (bool _init) |
void | setMapCol (datamap_ptrtype const &d) |
void | setMapRow (datamap_ptrtype const &d) |
void | setMatrixProperties (size_type p) |
virtual void | symmetricPart (MatrixSparse< value_type > &Ms) const |
void | symmetricPart (boost::shared_ptr< MatrixSparse< value_type > > &Ms) const |
boost::shared_ptr < MatrixSparse< T > > | transpose () const |
void | transpose (boost::shared_ptr< MatrixSparse< value_type > > &Mt) const |
virtual void | updateSparsityPattern (const std::vector< std::vector< size_type > > &) |
virtual | ~MatrixSparse () |
Additional Inherited Members | |
![]() | |
virtual void | _get_submatrix (MatrixSparse< T > &, const std::vector< size_type > &, const std::vector< size_type > &, const bool) const |
![]() | |
graph_ptrtype | M_graph |
std::vector< std::vector < size_type > > | M_IndexSplit |
bool | M_is_initialized |
datamap_ptrtype | M_mapCol |
datamap_ptrtype | M_mapRow |
Context | M_mprop |
WorldComm | M_worldComm |
mpi communicator | |
|
inlinevirtual |
Add value
to the element (i,j). Throws an error if the entry does not exist. Still, it is allowed to store zero values in non-existent fields.
Implements Feel::MatrixSparse< T >.
|
inline |
Add the full matrix to the Petsc matrix. This is useful for adding an element matrix at assembly time
|
inline |
Same, but assumes the row and column maps are the same. Thus the matrix dm
must be square.
|
virtual |
Add a Sparse matrix _X
, scaled with _a
, to this
, stores the result in this:
.
Implements Feel::MatrixSparse< T >.
References Feel::MatrixEigenDense< T >::closed().
|
virtual |
Add the full matrix to the Sparse matrix. This is useful for adding an element matrix at assembly time
Implements Feel::MatrixSparse< T >.
|
inlinevirtual |
Release all memory and return to a state just like after having called the default constructor.
Implements Feel::MatrixSparse< T >.
|
virtual |
close
the eigen matrix, that will copy the content of write optimized matrix into a read optimized matrix
Implements Feel::MatrixSparse< T >.
|
inlinevirtual |
see if Eigen matrix has been closed and fully assembled yet
Implements Feel::MatrixSparse< T >.
|
virtual |
Copies the diagonal part of the matrix into dest
.
Implements Feel::MatrixSparse< T >.
|
virtual |
Implements Feel::MatrixSparse< T >.
References Feel::Vector< T >::size(), and Feel::VectorUblas< T, Storage >::vec().
|
virtual |
Initialize a Eigen matrix that is of global dimension with local dimensions
.
nnz
is the number of on-processor nonzeros per row (defaults to 30). noz
is the number of on-processor nonzeros per row (defaults to 30).
Implements Feel::MatrixSparse< T >.
|
virtual |
Initialize using sparsity structure computed by dof_map
.
Implements Feel::MatrixSparse< T >.
|
inlinevirtual |
Reimplemented from Feel::MatrixSparse< T >.
|
inlinevirtual |
Return the l1-norm of the matrix, that is , (max. sum of columns).
This is the natural matrix norm that is compatible to the l1-norm for vectors, i.e. .
Implements Feel::MatrixSparse< T >.
|
inlinevirtual |
Return the linfty-norm of the matrix, that is
,
(max. sum of rows). This is the natural matrix norm that is compatible to the linfty-norm of vectors, i.e. .
Implements Feel::MatrixSparse< T >.
|
inline |
Returns the read optimized eigen matrix.
|
inline |
Returns the read optimized eigen matrix.
|
inline |
|
inlinevirtual |
Return the value of the entry (i,j). This may be an expensive operation and you should always take care where to call this function. In order to avoid abuse, this function throws an exception if the required element does not exist in the matrix.
In case you want a function that returns zero instead (for entries that are not in the sparsity pattern of the matrix), use the el
function.
Implements Feel::MatrixSparse< T >.
|
virtual |
Print the contents of the matrix in Matlab's sparse matrix format. Optionally prints the matrix to the file named name
. If name
is not specified it is dumped to the screen.
Reimplemented from Feel::MatrixSparse< T >.
|
inlinevirtual |
return row_start, the index of the first matrix row stored on this processor
Implements Feel::MatrixSparse< T >.
|
inlinevirtual |
return row_stop, the index of the last matrix row (+1) stored on this processor
Implements Feel::MatrixSparse< T >.
|
inlinevirtual |
set value
to the element (i,j). Throws an error if the entry does not exist. Still, it is allowed to store zero values in non-existent fields.
Implements Feel::MatrixSparse< T >.
|
inlinevirtual |
m
, the row-dimension of the matrix where the marix is Implements Feel::MatrixSparse< T >.
|
inlinevirtual |
n
, the column-dimension of the matrix where the marix is Implements Feel::MatrixSparse< T >.
|
virtual |
Returns the transpose of a matrix
M | the matrix to transpose |
Mt | the matrix transposed |
Implements Feel::MatrixSparse< T >.
|
virtual |
update a block matrix
Implements Feel::MatrixSparse< T >.
|
inlinevirtual |
Set all entries to 0. This method retains sparsity structure.
Implements Feel::MatrixSparse< T >.
|
inlinevirtual |
Set entries between to 0.
Implements Feel::MatrixSparse< T >.
|
virtual |
eliminates row without change pattern, and put 1 on the diagonal entry
Implements Feel::MatrixSparse< T >.
References Feel::ON_ELIMINATION_KEEP_DIAGONAL, and Feel::Vector< T >::set().