This is the index mapping based on the DTOS MultiBlockDestToSrc. More...
#include <AMReX_NonLocalBC.H>
Public Member Functions | |
Constructors | |
template<typename DTOS , typename = std::enable_if_t<IsIndexMapping<DTOS>::value>> | |
MultiBlockCommMetaData (const FabArrayBase &dst, const Box &dstbox, const FabArrayBase &src, const IntVect &ngrow, DTOS const &dtos) | |
Build global meta data by calling the define() member function. More... | |
template<typename DTOS , typename = std::enable_if_t<IsIndexMapping<DTOS>::value>> | |
MultiBlockCommMetaData (const BoxArray &dstba, const DistributionMapping &dstdm, const Box &dstbox, const BoxArray &srcba, const DistributionMapping &srcdm, const IntVect &ngrow, DTOS const &dtos) | |
Build global meta data by calling the define() member function. More... | |
Manipulators | |
template<typename DTOS > | |
std::enable_if_t< IsIndexMapping< DTOS >::value > | define (const BoxArray &dstba, const DistributionMapping &dstdm, const Box &dstbox, const BoxArray &srcba, const DistributionMapping &srcdm, const IntVect &ngrow, DTOS const &dtos) |
Build global meta data that is being used to identify send and recv dependencies in communication routines. More... | |
Additional Inherited Members | |
Public Attributes inherited from amrex::FabArrayBase::CommMetaData | |
bool | m_threadsafe_loc = false |
bool | m_threadsafe_rcv = false |
std::unique_ptr< CopyComTagsContainer > | m_LocTags |
std::unique_ptr< MapOfCopyComTagContainers > | m_SndTags |
std::unique_ptr< MapOfCopyComTagContainers > | m_RcvTags |
This is the index mapping based on the DTOS MultiBlockDestToSrc.
This class stores data dependencies for an inter-block communication.
In communication between two blocks one might need to do an index transformation from one block to antoher.
amrex::NonLocalBC::MultiBlockCommMetaData::MultiBlockCommMetaData | ( | const FabArrayBase & | dst, |
const Box & | dstbox, | ||
const FabArrayBase & | src, | ||
const IntVect & | ngrow, | ||
DTOS const & | dtos | ||
) |
Build global meta data by calling the define() member function.
amrex::NonLocalBC::MultiBlockCommMetaData::MultiBlockCommMetaData | ( | const BoxArray & | dstba, |
const DistributionMapping & | dstdm, | ||
const Box & | dstbox, | ||
const BoxArray & | srcba, | ||
const DistributionMapping & | srcdm, | ||
const IntVect & | ngrow, | ||
DTOS const & | dtos | ||
) |
Build global meta data by calling the define() member function.
std::enable_if_t<IsIndexMapping<DTOS>::value> amrex::NonLocalBC::MultiBlockCommMetaData::define | ( | const BoxArray & | dstba, |
const DistributionMapping & | dstdm, | ||
const Box & | dstbox, | ||
const BoxArray & | srcba, | ||
const DistributionMapping & | srcdm, | ||
const IntVect & | ngrow, | ||
DTOS const & | dtos | ||
) |
Build global meta data that is being used to identify send and recv dependencies in communication routines.
This call is quadratic in the number of boxes, i.e. it is in O(dstba.size() * srcba.size()). Therefore, it might be wise to cache the construction of this object to minimize its computation.
DTOS | This parameter needs to satisfy IsIndexMapping and HasInverseImage. |
[in] | dstba | The destination box array. |
[in] | dstdm | The destination distribution mapping. |
[in] | dstbox | The box that will be filled and that lives in the destination space. |
[in] | srcba | The source box array. |
[in] | srcdm | The source distribution mapping. |
[in] | ngrow | The number of ghost cells that shall be considered when filling data. |
[in] | dtos | The dest to source index mapping that has an inverse image. |