Gromacs  2026.0
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Enumerations | Functions
#include "gmxpre.h"
#include "haloexchange.h"
#include "config.h"
#include "gromacs/pbcutil/ishift.h"
#include "gromacs/pbcutil/pbc.h"
#include "gromacs/utility/basedefinitions.h"
#include "gromacs/utility/fatalerror.h"
#include "gromacs/utility/gmxmpi.h"
#include "gromacs/utility/range.h"
#include "gromacs/utility/template_mp.h"
#include "gromacs/utility/vectypes.h"
#include "domainpaircomm.h"
#include "domdec_internal.h"
+ Include dependency graph for haloexchange.cpp:

Description

Implements the HaloExchange class for halo communication of coordinates and forces.

Author
Berk Hess hess@.nosp@m.kth..nosp@m.se

Enumerations

enum  gmx::anonymous_namespace{haloexchange.cpp}::NumAtomsPerCluster : int { Four, Eight, Count }
 Enum used for templating the buffer operations on cluster size. More...
 

Functions

constexpr NumAtomsPerCluster gmx::anonymous_namespace{haloexchange.cpp}::numAtomsPerClusterFromInt (const int numAtomsPerCluster)
 Return the enum value given the number of atoms per cluster.
 
constexpr int gmx::anonymous_namespace{haloexchange.cpp}::numAtomsPerClusterToInt (const NumAtomsPerCluster numAtomsPerCluster)
 Return the int value given the enum value of the number of atoms per cluster.
 
template<typename DomainPairComm , typename T >
void gmx::anonymous_namespace{haloexchange.cpp}::ddIsendDomain (const DomainPairComm &send, ArrayRef< T > sendBuffer, const HaloMpiTag tag, std::vector< MPI_Request > *mpiRequests)
 Initiates a non-blocking send to another domain. More...
 
template<typename DomainPairComm , typename T >
void gmx::anonymous_namespace{haloexchange.cpp}::ddIreceiveDomain (const DomainPairComm &receive, ArrayRef< T > receiveBuffer, const HaloMpiTag tag, std::vector< MPI_Request > *mpiRequests)
 Initiates a non-blocking receive from another domain. More...
 
template<bool commOverPbc, bool usesScrewPbc, NumAtomsPerCluster numAtomsPerCluster>
void gmx::anonymous_namespace{haloexchange.cpp}::packCoordinatesTemplated (const DomainCommBackward &domainComm, const matrix box, const RVec &shiftVec, ArrayRef< const RVec > x, ArrayRef< RVec > sendBuffer)
 Templated version of packCoordinateSendBuffer()
 
void gmx::anonymous_namespace{haloexchange.cpp}::mpiWaitall (ArrayRef< MPI_Request > mpiRequests, ArrayRef< MPI_Status > mpiStatuses)
 Wrapper for MPI_Waitall that takes ArrayRefs.
 
template<bool usesScrewPbc, bool haveShiftForces, NumAtomsPerCluster numAtomsPerCluster>
void gmx::anonymous_namespace{haloexchange.cpp}::accumulateReceivedForcesTemplated (const DomainCommBackward &domainComm, ArrayRef< RVec > forces, RVec gmx_unused *shiftForce)
 Templated version of packCoordinateSendBuffer()