Feel++
0.91.4
|
Public Types | |
Typedefs | |
typedef MatrixBlockBase< T > | self_type |
typedef super::value_type | value_type |
typedef super::real_type | real_type |
typedef Backend< value_type > | backend_type |
typedef boost::shared_ptr < backend_type > | backend_ptrtype |
typedef super | matrix_type |
typedef boost::shared_ptr < matrix_type > | matrix_ptrtype |
typedef std::vector < matrix_ptrtype > | vector_matrix_ptrtype |
typedef super::graph_type | graph_type |
typedef super::graph_ptrtype | graph_ptrtype |
![]() | |
typedef Vector< T > | vector_type |
typedef boost::shared_ptr < Vector< T > > | vector_ptrtype |
Public Member Functions | |
Constructors, destructor | |
MatrixBlockBase (vf::BlocksBase< matrix_ptrtype > const &blockSet, backend_type &backend, bool copy_values=true, bool diag_is_nonzero=true) | |
void | mergeBlockGraph (graph_ptrtype &globGraphb, matrix_ptrtype m, size_type start_i, size_type start_j) |
MatrixBlockBase (MatrixBlockBase const &mb) | |
~MatrixBlockBase () | |
Operator overloads | |
MatrixBlockBase | operator= (MatrixBlockBase const &mb) |
Accessors | |
matrix_ptrtype | getSparseMatrix () |
![]() | |
MatrixSparse () | |
MatrixSparse (DataMap const &dmRow, DataMap const &dmCol, WorldComm const &worldComm=WorldComm()) | |
virtual | ~MatrixSparse () |
DataMap const & | mapRow () const |
DataMap const & | mapCol () const |
void | setMapRow (DataMap const &d) |
void | setMapCol (DataMap const &d) |
virtual bool | isInitialized () const |
virtual void | updateSparsityPattern (const std::vector< std::vector< size_type > > &) |
virtual void | setIndexSplit (std::vector< std::vector< int > > const &_indexSplit) |
std::vector< std::vector< int > > | indexSplit () const |
bool | hasGraph () const |
graph_ptrtype const & | graph () const |
void | setGraph (graph_ptrtype const &graph) |
void | setMatrixProperties (size_type p) |
bool | isHermitian () const |
bool | isNonHermitian () const |
bool | isHermitianPositiveDefinite () const |
bool | isSingular () const |
bool | isPositiveDefinite () const |
bool | haveConsistentProperties () const |
void | checkProperties () const |
WorldComm const & | comm () const |
void | addMatrix (const T &s, boost::shared_ptr< MatrixSparse< T > > &m) |
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 |
void | multAddVector (const Vector< T > &arg, Vector< T > &dest) const |
MatrixSparse< T > & | operator= (boost::shared_ptr< MatrixSparse< value_type > > const &M) |
void | diagonal (boost::shared_ptr< Vector< T > > &dest) const |
boost::shared_ptr < MatrixSparse< T > > | transpose () const |
void | transpose (boost::shared_ptr< MatrixSparse< value_type > > &Mt) const |
virtual void | symmetricPart (MatrixSparse< value_type > &Ms) const |
void | symmetricPart (boost::shared_ptr< MatrixSparse< value_type > > &Ms) const |
virtual real_type | energy (vector_type const &v, vector_type const &u, bool transpose=false) const =0 |
real_type | energy (vector_ptrtype const &v, vector_ptrtype const &u, bool _transpose=false) const |
void | setInitialized (bool _init) |
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 size1, size_type start2, size_type size2) |
void | close () const |
size_type | size1 () const |
size_type | size2 () const |
size_type | rowStart () const |
size_type | rowStop () const |
void | set (const size_type i, const size_type j, const value_type &value) |
void | add (const size_type i, const size_type j, const value_type &value) |
void | addMatrix (const ublas::matrix< value_type > &dm, const std::vector< size_type > &rows, const std::vector< size_type > &cols) |
void | addMatrix (int *rows, int nrows, int *cols, int ncols, value_type *data) |
void | addMatrix (const ublas::matrix< value_type > &dm, const std::vector< size_type > &dof_indices) |
void | addMatrix (const value_type, MatrixSparse< value_type > &) |
void | scale (const value_type) |
value_type | operator() (const size_type i, const size_type j) const |
self_type & | operator= (MatrixSparse< value_type > const &M) |
void | diagonal (Vector< value_type > &out) const |
void | transpose (MatrixSparse< value_type > &Mt) const |
value_type | energy (Vector< value_type > const &__v, Vector< value_type > const &__u, bool transpose=false) const |
real_type | l1Norm () const |
real_type | linftyNorm () const |
bool | closed () const |
void | print (std::ostream &os=std::cout) const |
void | printPersonal (std::ostream &=std::cout) const |
void | printMatlab (const std::string name="NULL") const |
void | createSubmatrix (MatrixSparse< value_type > &submatrix, const std::vector< size_type > &rows, const std::vector< size_type > &cols) const |
void | reinitSubmatrix (MatrixSparse< value_type > &submatrix, const std::vector< size_type > &rows, const std::vector< size_type > &cols) const |
void | zeroRows (std::vector< int > const &rows, std::vector< value_type > const &values, Vector< value_type > &rhs, Context const &on_context) |
void | updateBlockMat (boost::shared_ptr< MatrixSparse< value_type > > m, size_type start_i, size_type start_j) |
template<typename U > | |
std::ostream & | operator<< (std::ostream &os, const MatrixSparse< U > &m) |
Additional Inherited Members | |
![]() | |
virtual void | _get_submatrix (MatrixSparse< T > &, const std::vector< size_type > &, const std::vector< size_type > &, const bool) const |
![]() | |
WorldComm | M_worldComm |
mpi communicator | |
bool | _M_is_initialized |
graph_ptrtype | _M_graph |
Context | M_mprop |
std::vector< std::vector< int > > | M_IndexSplit |
DataMap | M_mapRow |
DataMap | M_mapCol |
|
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 >.
|
virtual |
Add the full matrix to the Sparse matrix. This is useful for adding an element matrix at assembly time
Implements Feel::MatrixSparse< T >.
Referenced by Feel::MatrixBlockBase< T >::addMatrix().
|
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 |
Same, but assumes the row and column maps are the same. Thus the matrix dm
must be square.
Implements Feel::MatrixSparse< T >.
References Feel::MatrixBlockBase< T >::addMatrix().
|
inlinevirtual |
Add a Sparse matrix _X
, scaled with _a
, to this
, stores the result in this:
.
Implements Feel::MatrixSparse< T >.
|
virtual |
Release all memory and return to a state just like after having called the default constructor.
Implements Feel::MatrixSparse< T >.
|
inlinevirtual |
Call the Sparse assemble routines. sends necessary messages to other processors
Implements Feel::MatrixSparse< T >.
|
inlinevirtual |
see if Sparse matrix has been closed and fully assembled yet
Implements Feel::MatrixSparse< T >.
|
inlinevirtual |
This function creates a matrix called "submatrix" which is defined by the row and column indices given in the "rows" and "cols" entries. Currently this operation is only defined for the PetscMatrix type.
Reimplemented from Feel::MatrixSparse< T >.
References Feel::MatrixSparse< T >::_get_submatrix().
|
virtual |
Returns the diagonal of the block matrix
out | the vector to store the diagonal |
Implements Feel::MatrixSparse< T >.
MatrixBlockBase< T >::value_type Feel::MatrixBlockBase< T >::energy | ( | Vector< value_type > const & | __v, |
Vector< value_type > const & | __u, | ||
bool | transpose = false |
||
) | const |
|
virtual |
Initialize a Petsc 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 |
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 >.
|
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 >.
void Feel::MatrixBlockBase< T >::print | ( | std::ostream & | os = std::cout | ) | const |
Print the contents of the matrix to the screen in a uniform style, regardless of matrix/solver package being used.
Reimplemented from 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 |
Print the contents of the matrix to the screen in a package-personalized style, if available.
Reimplemented from Feel::MatrixSparse< T >.
|
inlinevirtual |
This function is similar to the one above, but it allows you to reuse the existing sparsity pattern of "submatrix" instead of reallocating it again. This should hopefully be more efficient if you are frequently extracting submatrices of the same size.
Reimplemented from Feel::MatrixSparse< T >.
References Feel::MatrixSparse< T >::_get_submatrix().
|
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 the element (i,j) to
value
. 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
Mt | the matrix transposed |
Implements Feel::MatrixSparse< T >.
|
virtual |
update a block matrix
Implements Feel::MatrixSparse< T >.
|
virtual |
Set all entries to 0.
Implements Feel::MatrixSparse< T >.
|
virtual |
Set entries between to 0.
Implements Feel::MatrixSparse< T >.
|
virtual |
eliminate rows without change pattern, and put 1 on the diagonal entry
Implements Feel::MatrixSparse< T >.
|
friend |
Same as the print method above, but allows you to print to a stream in the standard syntax.
Reimplemented from Feel::MatrixSparse< T >.