Block-Structured AMR Software Framework
Loading...
Searching...
No Matches
amrex::FabArrayCopyDescriptor< FAB > Class Template Reference

Manages multi-component copy operations out of one or more FabArrays. More...

#include <AMReX_FACopyDescriptor.H>

Public Member Functions

 FabArrayCopyDescriptor ()=default
 
 ~FabArrayCopyDescriptor ()
 
 FabArrayCopyDescriptor (const FabArrayCopyDescriptor< FAB > &)=delete
 
 FabArrayCopyDescriptor (FabArrayCopyDescriptor< FAB > &&)=delete
 
FabArrayCopyDescriptor< FAB > & operator= (const FabArrayCopyDescriptor< FAB > &)=delete
 
FabArrayCopyDescriptor< FAB > & operator= (FabArrayCopyDescriptor< FAB > &&)=delete
 
FabArrayId RegisterFabArray (FabArray< FAB > *fabarray)
 Register a FabArray from which copies may be requested.
 
FillBoxId AddBox (FabArrayId fabarrayid, const Box &destFabBox, BoxList *unfilledBoxes)
 Describe a destination box that needs to be filled.
 
FillBoxId AddBox (FabArrayId fabarrayid, const Box &destFabBox, BoxList *unfilledBoxes, int srccomp, int destcomp, int numcomp)
 Add a destination box specifying component ranges explicitly.
 
FillBoxId AddBox (FabArrayId fabarrayid, const Box &destFabBox, BoxList *unfilledBoxes, int fabarrayindex, int srccomp, int destcomp, int numcomp, bool bUseValidBox=true)
 Add a destination box but restrict fills to a specific Fab index.
 
void CollectData ()
 Exchange staged data for all FillBox entries.
 
void FillFab (FabArrayId faid, const FillBoxId &fillboxid, FAB &destFab)
 Copy staged data into the requested fill region of the destination Fab.
 
void FillFab (FabArrayId faid, const FillBoxId &fillboxid, FAB &destFab, const Box &destBox)
 Copy staged data into a user-specified sub-box of the destination Fab.
 
void PrintStats () const
 Print per-rank box-array information for each registered FabArray.
 
bool DataAvailable () const
 Return true once all requested data have been staged locally.
 
void clear ()
 Reset the descriptor, unregistering all FabArrays and outstanding boxes.
 
int CurrentNFabArrays () const
 Number of FabArrays currently registered with this descriptor.
 
int nFabComTags () const
 Number of remote-transfer FabComTag entries currently stored.
 
int nFabCopyDescs () const
 Number of per-FabArray FabCopyDescriptor maps held (one per registered FabArray).
 

Detailed Description

template<class FAB>
class amrex::FabArrayCopyDescriptor< FAB >

Manages multi-component copy operations out of one or more FabArrays.

Each descriptor registers the FabArrays it can read from, tracks boxes that still require data, and knows how to pull data either locally or via MPI.

Constructor & Destructor Documentation

◆ FabArrayCopyDescriptor() [1/3]

template<class FAB >
amrex::FabArrayCopyDescriptor< FAB >::FabArrayCopyDescriptor ( )
default

◆ ~FabArrayCopyDescriptor()

template<class FAB >
amrex::FabArrayCopyDescriptor< FAB >::~FabArrayCopyDescriptor ( )

◆ FabArrayCopyDescriptor() [2/3]

template<class FAB >
amrex::FabArrayCopyDescriptor< FAB >::FabArrayCopyDescriptor ( const FabArrayCopyDescriptor< FAB > &  )
delete

◆ FabArrayCopyDescriptor() [3/3]

template<class FAB >
amrex::FabArrayCopyDescriptor< FAB >::FabArrayCopyDescriptor ( FabArrayCopyDescriptor< FAB > &&  )
delete

Member Function Documentation

◆ AddBox() [1/3]

template<class FAB >
FillBoxId amrex::FabArrayCopyDescriptor< FAB >::AddBox ( FabArrayId  fabarrayid,
const Box destFabBox,
BoxList unfilledBoxes 
)

Describe a destination box that needs to be filled.

Parameters
fabarrayidHandle returned by RegisterFabArray.
destFabBoxRegion to fill.
unfilledBoxesOptional list to receive regions still missing data.

◆ AddBox() [2/3]

template<class FAB >
FillBoxId amrex::FabArrayCopyDescriptor< FAB >::AddBox ( FabArrayId  fabarrayid,
const Box destFabBox,
BoxList unfilledBoxes,
int  fabarrayindex,
int  srccomp,
int  destcomp,
int  numcomp,
bool  bUseValidBox = true 
)

Add a destination box but restrict fills to a specific Fab index.

Parameters
fabarrayidHandle returned by RegisterFabArray.
destFabBoxRegion to fill.
unfilledBoxesOptional list to receive regions still missing data.
fabarrayindexSource Fab index to pull data from.
srccompFirst component to copy from the source.
destcompFirst destination component to write.
numcompNumber of components to copy.
bUseValidBoxRestrict to valid-box intersection if true.

◆ AddBox() [3/3]

template<class FAB >
FillBoxId amrex::FabArrayCopyDescriptor< FAB >::AddBox ( FabArrayId  fabarrayid,
const Box destFabBox,
BoxList unfilledBoxes,
int  srccomp,
int  destcomp,
int  numcomp 
)

Add a destination box specifying component ranges explicitly.

◆ clear()

template<class FAB >
void amrex::FabArrayCopyDescriptor< FAB >::clear ( )

Reset the descriptor, unregistering all FabArrays and outstanding boxes.

◆ CollectData()

template<class FAB >
void amrex::FabArrayCopyDescriptor< FAB >::CollectData ( )

Exchange staged data for all FillBox entries.

◆ CurrentNFabArrays()

template<class FAB >
int amrex::FabArrayCopyDescriptor< FAB >::CurrentNFabArrays ( ) const
inline

Number of FabArrays currently registered with this descriptor.

◆ DataAvailable()

template<class FAB >
bool amrex::FabArrayCopyDescriptor< FAB >::DataAvailable ( ) const
inline

Return true once all requested data have been staged locally.

◆ FillFab() [1/2]

template<class FAB >
void amrex::FabArrayCopyDescriptor< FAB >::FillFab ( FabArrayId  faid,
const FillBoxId fillboxid,
FAB &  destFab 
)

Copy staged data into the requested fill region of the destination Fab.

◆ FillFab() [2/2]

template<class FAB >
void amrex::FabArrayCopyDescriptor< FAB >::FillFab ( FabArrayId  faid,
const FillBoxId fillboxid,
FAB &  destFab,
const Box destBox 
)

Copy staged data into a user-specified sub-box of the destination Fab.

◆ nFabComTags()

template<class FAB >
int amrex::FabArrayCopyDescriptor< FAB >::nFabComTags ( ) const
inline

Number of remote-transfer FabComTag entries currently stored.

◆ nFabCopyDescs()

template<class FAB >
int amrex::FabArrayCopyDescriptor< FAB >::nFabCopyDescs ( ) const
inline

Number of per-FabArray FabCopyDescriptor maps held (one per registered FabArray).

◆ operator=() [1/2]

template<class FAB >
FabArrayCopyDescriptor< FAB > & amrex::FabArrayCopyDescriptor< FAB >::operator= ( const FabArrayCopyDescriptor< FAB > &  )
delete

◆ operator=() [2/2]

template<class FAB >
FabArrayCopyDescriptor< FAB > & amrex::FabArrayCopyDescriptor< FAB >::operator= ( FabArrayCopyDescriptor< FAB > &&  )
delete

◆ PrintStats()

template<class FAB >
void amrex::FabArrayCopyDescriptor< FAB >::PrintStats ( ) const

Print per-rank box-array information for each registered FabArray.

◆ RegisterFabArray()

template<class FAB >
FabArrayId amrex::FabArrayCopyDescriptor< FAB >::RegisterFabArray ( FabArray< FAB > *  fabarray)

Register a FabArray from which copies may be requested.

Returns
Handle used in subsequent AddBox/FillFab calls.

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