Block-Structured AMR Software Framework
amrex::NonLocalBC::MultiBlockCommMetaData Struct Reference

This is the index mapping based on the DTOS MultiBlockDestToSrc. More...

#include <AMReX_NonLocalBC.H>

Inheritance diagram for amrex::NonLocalBC::MultiBlockCommMetaData:
amrex::FabArrayBase::CommMetaData

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

Detailed Description

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.

Constructor & Destructor Documentation

◆ MultiBlockCommMetaData() [1/2]

template<typename DTOS , typename = std::enable_if_t<IsIndexMapping<DTOS>::value>>
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.

See also
MultiBlockCommMetaData::define

◆ MultiBlockCommMetaData() [2/2]

template<typename DTOS , typename = std::enable_if_t<IsIndexMapping<DTOS>::value>>
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.

See also
MultiBlockCommMetaData::define

Member Function Documentation

◆ define()

template<typename DTOS >
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.

Template Parameters
DTOSThis parameter needs to satisfy IsIndexMapping and HasInverseImage.
Parameters
[in]dstbaThe destination box array.
[in]dstdmThe destination distribution mapping.
[in]dstboxThe box that will be filled and that lives in the destination space.
[in]srcbaThe source box array.
[in]srcdmThe source distribution mapping.
[in]ngrowThe number of ghost cells that shall be considered when filling data.
[in]dtosThe dest to source index mapping that has an inverse image.
Returns
Nothing.

The documentation for this struct was generated from the following file: