DistributorCreators.
Distributor_T: A distributor that has a constructor ( const weak_ptr<StructuredBlockStorage> & blockStorage, const IBlock & block, const BaseField_T & baseField, const FlagField_T & flagField, const flag_t & evaluationMask ) and distribution functions: template< typename ForwardIterator_T > inline void distribute( const Vector3<real_t> & position, ForwardIterator_T distributeValueBegin ) template< typename ForwardIterator_T > inline void distribute( const real_t & x, const real_t & y, const real_t & z, ForwardIterator_T distributeValueBegin )
See NearestNeighborDistributor for an example implementation.
A distributor is aware of the flag field (FlagField_T) and distributes values only to cells flagged by a given mask.
Distributors are used to spread a given value to the corresponding destination field. E.g. if a certain force has to be applied at some specific position onto the fluid, a distributor can be used to do so by distributing this force value (and conservation fo this force value is ensured) onto the force field.
#include <DistributorCreators.h>
Public Member Functions | |
DistributorHandling (const weak_ptr< StructuredBlockStorage > &blockStorage, const BlockDataID &distributionDestinationFieldID, const ConstBlockDataID &flagFieldID, const Set< FlagUID > &cellsToEvaluate) | |
Distributor_T * | initialize (IBlock *const block) override |
must be thread-safe ! More... | |
![]() | |
~AlwaysInitializeBlockDataHandling () override=default | |
void | serialize (IBlock *const, const BlockDataID &, mpi::SendBuffer &) override |
must be thread-safe ! More... | |
void | serializeCoarseToFine (Block *const, const BlockDataID &, mpi::SendBuffer &, const uint_t) override |
must be thread-safe ! More... | |
void | serializeFineToCoarse (Block *const, const BlockDataID &, mpi::SendBuffer &) override |
must be thread-safe ! More... | |
Distributor_T * | deserialize (IBlock *const block) override |
must be thread-safe ! More... | |
void | deserialize (IBlock *const, const BlockDataID &, mpi::RecvBuffer &) override |
must be thread-safe ! More... | |
Distributor_T * | deserializeCoarseToFine (Block *const block) override |
must be thread-safe ! More... | |
void | deserializeCoarseToFine (Block *const, const BlockDataID &, mpi::RecvBuffer &) override |
must be thread-safe ! More... | |
Distributor_T * | deserializeFineToCoarse (Block *const block) override |
must be thread-safe ! More... | |
void | deserializeFineToCoarse (Block *const, const BlockDataID &, mpi::RecvBuffer &, const uint_t) override |
must be thread-safe ! More... | |
![]() | |
~BlockDataHandling () override=default | |
Private Attributes | |
weak_ptr< StructuredBlockStorage > | blockStorage_ |
BlockDataID | distributionDestinationFieldID_ |
ConstBlockDataID | flagFieldID_ |
Set< FlagUID > | cellsToEvaluate_ |
Additional Inherited Members | |
![]() | |
using | value_type = Distributor_T |
|
inline |
|
inlineoverridevirtual |
must be thread-safe !
Implements walberla::domain_decomposition::BlockDataHandling< Distributor_T >.
|
private |
|
private |
|
private |
|
private |