GEOSX
|
Abstract view of a block operator. More...
#include <BlockOperatorView.hpp>
Public Types | |
using | Base = LinearOperator< BlockVectorView< VECTOR > > |
Alias for base type. | |
using | Vector = typename Base::Vector |
Alias for vector type. | |
Public Types inherited from geosx::LinearOperator< BlockVectorView< VECTOR > > | |
using | Vector = BlockVectorView< VECTOR > |
Alias for template parameter. | |
Public Member Functions | |
Constructors/destructors | |
virtual | ~BlockOperatorView () override=default |
Destructor. | |
BlockOperatorView & | operator= (BlockOperatorView const &)=delete |
Deleted copy assignment. More... | |
BlockOperatorView & | operator= (BlockOperatorView &&)=delete |
Deleted move assignment. More... | |
LinearOperator interface | |
virtual void | apply (Vector const &src, Vector &dst) const override |
Apply operator to a vector. More... | |
template<typename OP = OPERATOR> | |
std::enable_if_t< HasMemberFunction_applyTranspose< OP > > | applyTranspose (BlockVectorView< VECTOR > const &src, BlockVectorView< VECTOR > &dst) const |
Apply the transpose of block operator to a block vector. More... | |
virtual globalIndex | numGlobalRows () const override |
Get the number of global rows. More... | |
virtual globalIndex | numGlobalCols () const override |
Get the number of global columns. More... | |
template<typename OP = OPERATOR> | |
std::enable_if_t< HasMemberFunction_numLocalRows< OP >, localIndex > | numLocalRows () const |
Get the number of local rows. More... | |
template<typename OP = OPERATOR> | |
std::enable_if_t< HasMemberFunction_numLocalCols< OP >, localIndex > | numLocalCols () const |
Get the number of local columns. More... | |
Getters | |
localIndex | numBlockRows () const |
Get number of block rows. More... | |
localIndex | numBlockCols () const |
Get number of block columns. More... | |
OPERATOR const & | block (localIndex const blockRowIndex, localIndex const blockColIndex) const |
Get the operator corresponding to a sub-block. More... | |
OPERATOR & | block (localIndex const blockRowIndex, localIndex const blockColIndex) |
Get the operator corresponding to a sub-block. More... | |
OPERATOR const & | operator() (localIndex const blockRowIndex, localIndex const blockColIndex=0) const |
Get the operator corresponding to a sub-block. More... | |
OPERATOR & | operator() (localIndex const blockRowIndex, localIndex const blockColIndex=0) |
Get the operator corresponding to a sub-block. More... | |
Public Member Functions inherited from geosx::LinearOperator< BlockVectorView< VECTOR > > | |
LinearOperator ()=default | |
Constructor. | |
virtual | ~LinearOperator ()=default |
Destructor. | |
virtual void | apply (Vector const &src, Vector &dst) const=0 |
Apply operator to a vector. More... | |
virtual void | residual (Vector const &x, Vector const &b, Vector &r) const |
Compute residual r = Ax - b . More... | |
Protected Member Functions | |
BlockOperatorView (localIndex const nRows, localIndex const nCols) | |
Create an operator with given number of block rows and columns. More... | |
BlockOperatorView (BlockOperatorView< VECTOR, OPERATOR > const &x)=default | |
Copy constructor. More... | |
BlockOperatorView (BlockOperatorView< VECTOR, OPERATOR > &&x)=default | |
Move constructor. More... | |
void | setPointer (localIndex const blockRowIndex, localIndex const blockColIndex, OPERATOR *op) |
Set/replace a pointer to a block. More... | |
Abstract view of a block operator.
VECTOR | type of vector that sub-blocks of this view can operate on |
OPERATOR | type of operator that can operate on VECTOR (can be base class or a more specialized derived class) |
This class does not deal with constructing or storing sub-blocks, only provides high-level access functions. See derived classes BlockOperator and BlockOperatorWrapper for ways to construct a block operator.
Definition at line 39 of file BlockOperatorView.hpp.
|
inlineprotected |
Create an operator with given number of block rows and columns.
nRows | number of block rows |
nCols | number of block columns |
Definition at line 254 of file BlockOperatorView.hpp.
|
protecteddefault |
Copy constructor.
x | the block vector to copy |
|
protecteddefault |
Move constructor.
x | the block vector to move from |
|
inlineoverridevirtual |
Apply operator to a vector.
src | Input vector (x). |
dst | Output vector (b). |
src
and dst
cannot alias the same vector (some implementations may allow this). Definition at line 94 of file BlockOperatorView.hpp.
|
inline |
Apply the transpose of block operator to a block vector.
OP | dummy template parameter to enable SFINAE, do not provide |
src | source vector (rhs) |
dst | target vector (lhs) |
Definition at line 123 of file BlockOperatorView.hpp.
|
inline |
Get the operator corresponding to a sub-block.
blockRowIndex | block row index |
blockColIndex | block column index |
Definition at line 214 of file BlockOperatorView.hpp.
|
inline |
Get the operator corresponding to a sub-block.
blockRowIndex | block row index |
blockColIndex | block column index |
Definition at line 223 of file BlockOperatorView.hpp.
|
inline |
Get number of block columns.
Definition at line 203 of file BlockOperatorView.hpp.
|
inline |
Get number of block rows.
Definition at line 194 of file BlockOperatorView.hpp.
|
inlineoverridevirtual |
Get the number of global columns.
Implements geosx::LinearOperator< BlockVectorView< VECTOR > >.
Definition at line 154 of file BlockOperatorView.hpp.
|
inlineoverridevirtual |
Get the number of global rows.
Implements geosx::LinearOperator< BlockVectorView< VECTOR > >.
Definition at line 145 of file BlockOperatorView.hpp.
|
inline |
Get the number of local columns.
Definition at line 178 of file BlockOperatorView.hpp.
|
inline |
Get the number of local rows.
Definition at line 166 of file BlockOperatorView.hpp.
|
inline |
Get the operator corresponding to a sub-block.
blockRowIndex | block row index |
blockColIndex | block column index |
Definition at line 232 of file BlockOperatorView.hpp.
|
inline |
Get the operator corresponding to a sub-block.
blockRowIndex | block row index |
blockColIndex | block column index |
Definition at line 240 of file BlockOperatorView.hpp.
|
delete |
Deleted copy assignment.
|
delete |
Deleted move assignment.
|
inlineprotected |
Set/replace a pointer to a block.
blockRowIndex | row index of the block |
blockColIndex | column index of the block |
op | the new pointer |
Definition at line 279 of file BlockOperatorView.hpp.