Feel++  0.91.0
Public Types | Public Member Functions
Feel::MatrixPetscMPI< T > Class Template Reference
Inheritance diagram for Feel::MatrixPetscMPI< T >:
Feel::MatrixPetsc< T > Feel::MatrixSparse< T >

List of all members.

Public Types

typedef super::graph_type graph_type
typedef super::graph_ptrtype graph_ptrtype
typedef super::value_type value_type

Public Member Functions

 MatrixPetscMPI (DataMap const &dmRow, DataMap const &dmCol, WorldComm const &worldComm=WorldComm())
 MatrixPetscMPI (Mat m, DataMap const &dmRow, DataMap const &dmCol)
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)
size_type size1 () const
size_type size2 () const
size_type rowStart () const
size_type rowStop () const
size_type colStart () const
size_type colStop () 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 zero ()
void zero (size_type start1, size_type stop1, size_type start2, size_type stop2)
void zeroRows (std::vector< int > const &rows, std::vector< value_type > const &values, Vector< value_type > &rhs, Context const &on_context)

template<typename T>
class Feel::MatrixPetscMPI< T >


Member Function Documentation

template<typename T >
void Feel::MatrixPetscMPI< T >::add ( const size_type  i,
const size_type  j,
const value_type &  value 
) [inline, virtual]

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.

Reimplemented from Feel::MatrixPetsc< T >.

template<typename T >
void Feel::MatrixPetscMPI< T >::addMatrix ( const ublas::matrix< value_type > &  dm,
const std::vector< size_type > &  rows,
const std::vector< size_type > &  cols 
) [virtual]

Add the full matrix to the Petsc matrix. This is useful for adding an element matrix at assembly time

Reimplemented from Feel::MatrixPetsc< T >.

template<typename T >
void Feel::MatrixPetscMPI< T >::addMatrix ( int *  rows,
int  nrows,
int *  cols,
int  ncols,
value_type *  data 
) [virtual]

Add the full matrix to the Petsc matrix. This is useful for adding an element matrix at assembly time

Reimplemented from Feel::MatrixPetsc< T >.

template<typename T >
void Feel::MatrixPetscMPI< T >::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 
) [virtual]

Initialize a Petsc matrix that is of global dimension $ m \times n $ with local dimensions $ m_l \times n_l $. 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).

n_nz, PETSC_NULL, n_oz, PETSC_NULL, &_M_mat);

Reimplemented from Feel::MatrixPetsc< T >.

template<typename T >
void Feel::MatrixPetscMPI< T >::init ( const size_type  m,
const size_type  n,
const size_type  m_l,
const size_type  n_l,
graph_ptrtype const &  graph 
) [virtual]

Initialize using sparsity structure computed by dof_map.

Reimplemented from Feel::MatrixPetsc< T >.

template<typename T >
size_type Feel::MatrixPetscMPI< T >::rowStart ( ) const [inline, virtual]

return row_start, the index of the first matrix row stored on this processor

Reimplemented from Feel::MatrixPetsc< T >.

template<typename T >
size_type Feel::MatrixPetscMPI< T >::rowStop ( ) const [inline, virtual]

return row_stop, the index of the last matrix row (+1) stored on this processor

Reimplemented from Feel::MatrixPetsc< T >.

template<typename T >
void Feel::MatrixPetscMPI< T >::set ( const size_type  i,
const size_type  j,
const value_type &  value 
) [inline, virtual]

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.

Reimplemented from Feel::MatrixPetsc< T >.

template<typename T >
size_type Feel::MatrixPetscMPI< T >::size1 ( ) const [inline, virtual]
Returns:
m, the row-dimension of the matrix where the marix is $ M \times N $.

Reimplemented from Feel::MatrixPetsc< T >.

template<typename T >
size_type Feel::MatrixPetscMPI< T >::size2 ( ) const [inline, virtual]
Returns:
n, the column-dimension of the matrix where the marix is $ M \times N $.

Reimplemented from Feel::MatrixPetsc< T >.

template<typename T >
void Feel::MatrixPetscMPI< T >::zero ( ) [virtual]

Set all entries to 0. This method retains sparsity structure.

Reimplemented from Feel::MatrixPetsc< T >.

template<typename T >
void Feel::MatrixPetscMPI< T >::zero ( size_type  start1,
size_type  stop1,
size_type  start2,
size_type  stop2 
) [virtual]

Set all entries to 0 in the range [start1-stop1,start2-stop2]. This method retains sparsity structure.

Reimplemented from Feel::MatrixPetsc< T >.

template<typename T >
void Feel::MatrixPetscMPI< T >::zeroRows ( std::vector< int > const &  rows,
std::vector< value_type > const &  values,
Vector< value_type > &  rhs,
Context const &  on_context 
) [virtual]

eliminate row without change pattern, and put 1 on the diagonal entry

Warning:
if the matrix was symmetric before this operation, it won't be afterwards. So use the proper solver (nonsymmetric)

Reimplemented from Feel::MatrixPetsc< T >.

References Feel::VectorPetscMPI< T >::close(), Feel::Vector< T >::set(), and Feel::VectorPetsc< T >::vec().