ls1-MarDyn
ls1-MarDyn molecular dynamics code
Public Member Functions | Protected Member Functions | Protected Attributes | Friends | List of all members
NeighbourCommunicationScheme Class Referenceabstract
Inheritance diagram for NeighbourCommunicationScheme:
DirectNeighbourCommunicationScheme IndirectNeighbourCommunicationScheme

Public Member Functions

unsigned int getCommDims ()
 
 NeighbourCommunicationScheme (unsigned int commDimms, ZonalMethod *zonalMethod, bool pushPull)
 
 NeighbourCommunicationScheme (NeighbourCommunicationScheme const &)=delete
 
void operator= (NeighbourCommunicationScheme const &other)=delete
 
virtual void prepareNonBlockingStageImpl (ParticleContainer *moleculeContainer, Domain *domain, unsigned int stageNumber, MessageType msgType, bool removeRecvDuplicates, DomainDecompMPIBase *domainDecomp)=0
 
virtual void finishNonBlockingStageImpl (ParticleContainer *moleculeContainer, Domain *domain, unsigned int stageNumber, MessageType msgType, bool removeRecvDuplicates, DomainDecompMPIBase *domainDecomp)=0
 
virtual void exchangeMoleculesMPI (ParticleContainer *moleculeContainer, Domain *domain, MessageType msgType, bool removeRecvDuplicates, DomainDecompMPIBase *domainDecomp, bool doHaloPositionCheck=true)=0
 
void setCoverWholeDomain (unsigned int d, bool covers)
 
virtual void initCommunicationPartners (double cutoffRadius, Domain *domain, DomainDecompMPIBase *domainDecomp, ParticleContainer *moleculeContainer)=0
 
virtual std::vector< int > get3StageNeighbourRanks ()=0
 
virtual std::vector< int > getFullShellNeighbourRanks ()
 
virtual size_t getDynamicSize ()
 
void printCommunicationPartners (std::string filename) const
 
void setSequentialFallback (bool useSequentialFallback)
 

Protected Member Functions

void selectNeighbours (MessageType msgType, bool import)
 

Protected Attributes

std::vector< std::vector< CommunicationPartner > > * _neighbours
 vector of neighbours. The first dimension should be of size getCommDims().
 
std::vector< std::vector< CommunicationPartner > > * _haloExportForceImportNeighbours
 
std::vector< std::vector< CommunicationPartner > > * _haloImportForceExportNeighbours
 
std::vector< std::vector< CommunicationPartner > > * _leavingExportNeighbours
 
std::vector< std::vector< CommunicationPartner > > * _leavingImportNeighbours
 
bool _coversWholeDomain [3]
 
unsigned int _commDimms
 
ZonalMethod_zonalMethod
 zonal method (FullShell, HalfShell, ...)
 
std::vector< CommunicationPartner_fullShellNeighbours
 list of all neighbours (non-squeezed)
 
bool _pushPull
 
bool _useSequentialFallback {true}
 

Friends

class NeighbourCommunicationSchemeTest
 

Member Function Documentation

◆ getCommDims()

unsigned int NeighbourCommunicationScheme::getCommDims ( )
inline

Specifies the amount of sequential communication steps needed for the communication scheme. This is also the outer size of DomainDecompMPIBase::_neighbours

Returns

Member Data Documentation

◆ _coversWholeDomain

bool NeighbourCommunicationScheme::_coversWholeDomain[3]
protected

flag, which tells whether a processor covers the whole domain along a dimension if true, we will use the methods provided by the base class for handling the respective dimension, instead of packing and unpacking messages to self


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