|
FEAT 3
Finite Element Analysis Toolbox
|
Global grid-transfer operator class template. More...
#include <transfer.hpp>
Public Types | |
| typedef LocalTransfer_::MatrixType | LocalMatrixType |
| our internal local matrix type More... | |
| typedef LocalTransfer_ | LocalTransferType |
| our local transfer More... | |
| typedef LocalTransfer_::VectorType | LocalVectorType |
| our internal local vector type More... | |
| typedef Global::Muxer< LocalVectorType, Mirror_ > | MuxerType |
| our coarse grid multiplexer type More... | |
| template<typename DT2_ , typename IT2_ > | |
| using | TransferTypeByDI = Transfer< typename LocalTransfer_::template TransferTypeByDI< DT2_, IT2_ >, typename Mirror_::template MirrorType< DT2_, IT2_ > > |
| Our 'base' class type. More... | |
| typedef Global::Vector< LocalVectorType, Mirror_ > | VectorType |
| our global vector type More... | |
Public Member Functions | |
| Transfer () | |
| standard constructor More... | |
| template<typename... Args_> | |
| Transfer (const MuxerType *coarse_muxer, Args_ &&... args) | |
| Constructor. More... | |
| Transfer (Transfer &&other) | |
| move-constructor More... | |
| virtual | ~Transfer () |
| virtual destructor More... | |
| std::size_t | bytes () const |
| Transfer | clone (LAFEM::CloneMode clone_mode=LAFEM::CloneMode::Weak) const |
| Creates a clone of this object. More... | |
| void | compile () |
| template<typename LocalTransfer2_ , typename Mirror2_ > | |
| void | convert (MuxerType *coarse_muxer, const Transfer< LocalTransfer2_, Mirror2_ > &other) |
| container conversion function More... | |
| bool | is_ghost () const |
| Checks whether this transfer is a ghost-operator. More... | |
| LocalTransfer_ & | local () |
| const LocalTransfer_ & | local () const |
| Transfer & | operator= (Transfer &&other) |
| move-assign operator More... | |
| bool | prol (VectorType &vec_fine, const VectorType &vec_coarse) const |
| Applies the prolongation operator. More... | |
| void | prol_cancel () const |
| Cancels the prolongation. More... | |
| bool | prol_recv (VectorType &vec_fine) const |
| Receives the prolongation for a ghost operator. More... | |
| bool | rest (const VectorType &vec_fine, VectorType &vec_coarse) const |
| Applies the restriction operator. More... | |
| bool | rest_send (const VectorType &vec_fine) const |
| Sends the restriction for a ghost operator. More... | |
| bool | trunc (const VectorType &vec_fine, VectorType &vec_coarse) const |
| Applies the truncation operator. More... | |
| bool | trunc_send (const VectorType &vec_fine) const |
| Sends the truncation for a ghost operator. More... | |
Public Attributes | |
| const MuxerType * | _coarse_muxer |
| the coarse-level multiplexer More... | |
| LocalTransfer_ | _transfer |
| the local transfer operator More... | |
| LocalVectorType | _vec_tmp |
| a temporary local vector More... | |
Static Public Attributes | |
| static constexpr bool | is_global = true |
| static constexpr bool | is_local = false |
Global grid-transfer operator class template.
Definition at line 22 of file transfer.hpp.
| typedef LocalTransfer_::MatrixType FEAT::Global::Transfer< LocalTransfer_, Mirror_ >::LocalMatrixType |
our internal local matrix type
Definition at line 28 of file transfer.hpp.
| typedef LocalTransfer_ FEAT::Global::Transfer< LocalTransfer_, Mirror_ >::LocalTransferType |
our local transfer
Definition at line 26 of file transfer.hpp.
| typedef LocalTransfer_::VectorType FEAT::Global::Transfer< LocalTransfer_, Mirror_ >::LocalVectorType |
our internal local vector type
Definition at line 30 of file transfer.hpp.
| typedef Global::Muxer<LocalVectorType, Mirror_> FEAT::Global::Transfer< LocalTransfer_, Mirror_ >::MuxerType |
our coarse grid multiplexer type
Definition at line 36 of file transfer.hpp.
| using FEAT::Global::Transfer< LocalTransfer_, Mirror_ >::TransferTypeByDI = Transfer< typename LocalTransfer_::template TransferTypeByDI<DT2_, IT2_>, typename Mirror_::template MirrorType<DT2_, IT2_> > |
Our 'base' class type.
Definition at line 40 of file transfer.hpp.
| typedef Global::Vector<LocalVectorType, Mirror_> FEAT::Global::Transfer< LocalTransfer_, Mirror_ >::VectorType |
our global vector type
Definition at line 33 of file transfer.hpp.
|
inline |
standard constructor
Definition at line 57 of file transfer.hpp.
Referenced by FEAT::Global::Transfer< LocalTransfer_, Mirror_ >::clone().
|
inline |
move-constructor
Definition at line 63 of file transfer.hpp.
|
inlineexplicit |
Constructor.
| [in] | coarse_muxer | The coarse-level muxer. |
| [in] | args | The arguments that are passed to the local transfer operator constructor. |
Definition at line 80 of file transfer.hpp.
|
inlinevirtual |
virtual destructor
Definition at line 88 of file transfer.hpp.
|
inline |
Definition at line 143 of file transfer.hpp.
References FEAT::Global::Transfer< LocalTransfer_, Mirror_ >::_transfer, and FEAT::Global::Transfer< LocalTransfer_, Mirror_ >::_vec_tmp.
Referenced by FEAT::Control::BlockedBasicSystemLevel< dim_, DataType_, IndexType_, BlockedMatrix_, TransferMatrix_ >::bytes(), FEAT::Control::ScalarBasicSystemLevel< DataType_, IndexType_, ScalarMatrix_, TransferMatrix_ >::bytes(), FEAT::Control::ScalarMixedSystemLevel< dim_, DataType_, IndexType_, MatrixBlockA_, MatrixBlockB_, MatrixBlockD_, ScalarMatrix_, TransferMatrixV_, TransferMatrixP_ >::bytes(), FEAT::Control::Stokes3FieldSystemLevel< dim_, nsc_, DataType_, IndexType_, MatrixBlockA_, MatrixBlockB_, MatrixBlockD_, MatrixBlockM_, MatrixBlockK_, MatrixBlockL_, ScalarMatrix_, TransferMatrixV_, TransferMatrixP_, TransferMatrixS_ >::bytes(), and FEAT::Control::StokesBlockedSystemLevel< dim_, DataType_, IndexType_, MatrixBlockA_, MatrixBlockB_, MatrixBlockD_, ScalarMatrix_, TransferMatrixV_, TransferMatrixP_, TransferMatrixS_ >::bytes().
|
inline |
Creates a clone of this object.
| [in] | clone_mode | The desired clone mode |
Definition at line 125 of file transfer.hpp.
References FEAT::Global::Transfer< LocalTransfer_, Mirror_ >::Transfer(), FEAT::Global::Transfer< LocalTransfer_, Mirror_ >::_coarse_muxer, and FEAT::Global::Transfer< LocalTransfer_, Mirror_ >::_transfer.
|
inline |
Definition at line 148 of file transfer.hpp.
|
inline |
container conversion function
Definition at line 107 of file transfer.hpp.
References FEAT::Global::Transfer< LocalTransfer_, Mirror_ >::_coarse_muxer, FEAT::Global::Transfer< LocalTransfer_, Mirror_ >::_transfer, and FEAT::Global::Transfer< LocalTransfer_, Mirror_ >::_vec_tmp.
|
inline |
Checks whether this transfer is a ghost-operator.
Definition at line 194 of file transfer.hpp.
References FEAT::Global::Transfer< LocalTransfer_, Mirror_ >::_coarse_muxer, and FEAT::Global::Muxer< LocalVector_, Mirror_ >::is_ghost().
|
inline |
Definition at line 131 of file transfer.hpp.
References FEAT::Global::Transfer< LocalTransfer_, Mirror_ >::_transfer.
Referenced by FEAT::Control::Meshopt::MeshoptSystemLevel< DT_, IT_, Functional_ >::assemble_system_transfer().
|
inline |
Definition at line 137 of file transfer.hpp.
References FEAT::Global::Transfer< LocalTransfer_, Mirror_ >::_transfer.
|
inline |
move-assign operator
Definition at line 93 of file transfer.hpp.
References FEAT::Global::Transfer< LocalTransfer_, Mirror_ >::_coarse_muxer, FEAT::Global::Transfer< LocalTransfer_, Mirror_ >::_transfer, and FEAT::Global::Transfer< LocalTransfer_, Mirror_ >::_vec_tmp.
|
inline |
Applies the prolongation operator.
| [out] | vec_fine | The prolonged fine-mesh primal vector. |
| [in] | vec_coarse | The coarse-mesh primal vector to be prolonged. |
true Definition at line 294 of file transfer.hpp.
References FEAT::Global::Transfer< LocalTransfer_, Mirror_ >::_coarse_muxer, FEAT::Global::Transfer< LocalTransfer_, Mirror_ >::_transfer, FEAT::Global::Transfer< LocalTransfer_, Mirror_ >::_vec_tmp, FEAT::Global::Muxer< LocalVector_, Mirror_ >::is_child(), FEAT::Global::Muxer< LocalVector_, Mirror_ >::is_parent(), FEAT::Global::Vector< LocalVector_, Mirror_ >::local(), FEAT::Global::Muxer< LocalVector_, Mirror_ >::split(), FEAT::Global::Vector< LocalVector_, Mirror_ >::sync_0(), and XASSERT.
|
inline |
|
inline |
Receives the prolongation for a ghost operator.
| [out] | vec_fine | The prolonged fine-mesh primal vector. |
Definition at line 325 of file transfer.hpp.
References FEAT::Global::Transfer< LocalTransfer_, Mirror_ >::_coarse_muxer, FEAT::Global::Transfer< LocalTransfer_, Mirror_ >::_transfer, FEAT::Global::Transfer< LocalTransfer_, Mirror_ >::_vec_tmp, FEAT::Global::Muxer< LocalVector_, Mirror_ >::is_ghost(), FEAT::Global::Vector< LocalVector_, Mirror_ >::local(), FEAT::Global::Muxer< LocalVector_, Mirror_ >::split_recv(), FEAT::Global::Vector< LocalVector_, Mirror_ >::sync_0(), and XASSERT.
|
inline |
Applies the restriction operator.
| [in] | vec_fine | The fine-mesh dual vector to be restricted. |
| [out] | vec_coarse | The restricted coarse-mesh dual vector. |
true Definition at line 252 of file transfer.hpp.
References FEAT::Global::Transfer< LocalTransfer_, Mirror_ >::_coarse_muxer, FEAT::Global::Transfer< LocalTransfer_, Mirror_ >::_transfer, FEAT::Global::Transfer< LocalTransfer_, Mirror_ >::_vec_tmp, FEAT::Global::Muxer< LocalVector_, Mirror_ >::is_child(), FEAT::Global::Muxer< LocalVector_, Mirror_ >::is_parent(), FEAT::Global::Muxer< LocalVector_, Mirror_ >::join(), FEAT::Global::Vector< LocalVector_, Mirror_ >::local(), FEAT::Global::Vector< LocalVector_, Mirror_ >::sync_0(), and XASSERT.
|
inline |
Sends the restriction for a ghost operator.
| [in] | vec_fine | The fine-mesh dual vector to be restricted. |
Definition at line 274 of file transfer.hpp.
References FEAT::Global::Transfer< LocalTransfer_, Mirror_ >::_coarse_muxer, FEAT::Global::Transfer< LocalTransfer_, Mirror_ >::_transfer, FEAT::Global::Transfer< LocalTransfer_, Mirror_ >::_vec_tmp, FEAT::Global::Muxer< LocalVector_, Mirror_ >::is_ghost(), FEAT::Global::Muxer< LocalVector_, Mirror_ >::join_send(), FEAT::Global::Vector< LocalVector_, Mirror_ >::local(), and XASSERT.
|
inline |
Applies the truncation operator.
| [in] | vec_fine | The fine-mesh dual vector to be truncated. |
| [out] | vec_coarse | The truncated coarse-mesh dual vector. |
true Definition at line 210 of file transfer.hpp.
References FEAT::Global::Transfer< LocalTransfer_, Mirror_ >::_coarse_muxer, FEAT::Global::Transfer< LocalTransfer_, Mirror_ >::_transfer, FEAT::Global::Transfer< LocalTransfer_, Mirror_ >::_vec_tmp, FEAT::Global::Muxer< LocalVector_, Mirror_ >::is_child(), FEAT::Global::Muxer< LocalVector_, Mirror_ >::is_parent(), FEAT::Global::Muxer< LocalVector_, Mirror_ >::join(), FEAT::Global::Vector< LocalVector_, Mirror_ >::local(), FEAT::Global::Vector< LocalVector_, Mirror_ >::sync_0(), and XASSERT.
|
inline |
Sends the truncation for a ghost operator.
| [in] | vec_fine | The fine-mesh dual vector to be truncated. |
Definition at line 232 of file transfer.hpp.
References FEAT::Global::Transfer< LocalTransfer_, Mirror_ >::_coarse_muxer, FEAT::Global::Transfer< LocalTransfer_, Mirror_ >::_transfer, FEAT::Global::Transfer< LocalTransfer_, Mirror_ >::_vec_tmp, FEAT::Global::Muxer< LocalVector_, Mirror_ >::is_ghost(), FEAT::Global::Muxer< LocalVector_, Mirror_ >::join_send(), FEAT::Global::Vector< LocalVector_, Mirror_ >::local(), and XASSERT.
| const MuxerType* FEAT::Global::Transfer< LocalTransfer_, Mirror_ >::_coarse_muxer |
the coarse-level multiplexer
Definition at line 49 of file transfer.hpp.
Referenced by FEAT::Global::Transfer< LocalTransfer_, Mirror_ >::clone(), FEAT::Global::Transfer< LocalTransfer_, Mirror_ >::convert(), FEAT::Global::Transfer< LocalTransfer_, Mirror_ >::is_ghost(), FEAT::Global::Transfer< LocalTransfer_, Mirror_ >::operator=(), FEAT::Global::Transfer< LocalTransfer_, Mirror_ >::prol(), FEAT::Global::Transfer< LocalTransfer_, Mirror_ >::prol_recv(), FEAT::Global::Transfer< LocalTransfer_, Mirror_ >::rest(), FEAT::Global::Transfer< LocalTransfer_, Mirror_ >::rest_send(), FEAT::Global::Transfer< LocalTransfer_, Mirror_ >::trunc(), and FEAT::Global::Transfer< LocalTransfer_, Mirror_ >::trunc_send().
| LocalTransfer_ FEAT::Global::Transfer< LocalTransfer_, Mirror_ >::_transfer |
the local transfer operator
Definition at line 51 of file transfer.hpp.
Referenced by FEAT::Global::Transfer< LocalTransfer_, Mirror_ >::bytes(), FEAT::Global::Transfer< LocalTransfer_, Mirror_ >::clone(), FEAT::Global::Transfer< LocalTransfer_, Mirror_ >::convert(), FEAT::Global::Transfer< LocalTransfer_, Mirror_ >::local(), FEAT::Global::Transfer< LocalTransfer_, Mirror_ >::operator=(), FEAT::Global::Transfer< LocalTransfer_, Mirror_ >::prol(), FEAT::Global::Transfer< LocalTransfer_, Mirror_ >::prol_recv(), FEAT::Global::Transfer< LocalTransfer_, Mirror_ >::rest(), FEAT::Global::Transfer< LocalTransfer_, Mirror_ >::rest_send(), FEAT::Global::Transfer< LocalTransfer_, Mirror_ >::trunc(), and FEAT::Global::Transfer< LocalTransfer_, Mirror_ >::trunc_send().
|
mutable |
a temporary local vector
Definition at line 53 of file transfer.hpp.
Referenced by FEAT::Global::Transfer< LocalTransfer_, Mirror_ >::bytes(), FEAT::Global::Transfer< LocalTransfer_, Mirror_ >::convert(), FEAT::Global::Transfer< LocalTransfer_, Mirror_ >::operator=(), FEAT::Global::Transfer< LocalTransfer_, Mirror_ >::prol(), FEAT::Global::Transfer< LocalTransfer_, Mirror_ >::prol_recv(), FEAT::Global::Transfer< LocalTransfer_, Mirror_ >::rest(), FEAT::Global::Transfer< LocalTransfer_, Mirror_ >::rest_send(), FEAT::Global::Transfer< LocalTransfer_, Mirror_ >::trunc(), and FEAT::Global::Transfer< LocalTransfer_, Mirror_ >::trunc_send().
|
staticconstexpr |
Definition at line 44 of file transfer.hpp.
|
staticconstexpr |
Definition at line 45 of file transfer.hpp.