Gromacs  2026.0-dev-20251109-f20ba35
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
List of all members | Public Member Functions | Public Attributes
PmeAtomComm Class Reference

#include <gromacs/ewald/pme_internal.h>

+ Collaboration diagram for PmeAtomComm:

Description

Data structure for coordinating transfers between PME ranks along one dimension.

Also used for passing coordinates, coefficients and forces to and from PME routines.

Public Member Functions

 PmeAtomComm (MPI_Comm PmeMpiCommunicator, int numThreads, int pmeOrder, int dimIndex, bool doSpread)
 Constructor, PmeMpiCommunicator is the communicator for this dimension.
 
void setNumAtoms (int numAtoms)
 Set the atom count and when necessary resizes atom buffers.
 
int numAtoms () const
 Returns the atom count.
 
gmx::ArrayRef< int > sendCount ()
 Returns the number of atoms to send to each rank.
 

Public Attributes

int dimind = 0
 The index of the dimension, 0=x, 1=y.
 
int nslab = 1
 The number of slabs and ranks this dimension is decomposed over.
 
int slabIndex = 0
 Our slab index, our MPI rank is equal to this number.
 
MPI_Comm mpi_comm
 Communicator for this dimension.
 
std::vector< SlabCommSetupslabCommSetup
 Communication setup for each slab, ordered as alternating forward/backward and increasing slab shift.
 
int maxshift = 0
 The maximum communication distance counted in MPI ranks.
 
std::vector< int > bufferIndices
 Working buffer indices, indexed with the slab index.
 
FastVector< int > pd
 The target slab index for each particle.
 
std::vector< std::vector< int > > count_thread
 Target particle counts for each slab, for each thread.
 
gmx::ArrayRef< const gmx::RVecx
 The coordinates.
 
gmx::ArrayRef< const realcoefficient
 The coefficient, charges or LJ C6.
 
gmx::ArrayRef< gmx::RVecf
 The forces.
 
FastVector< gmx::RVecxBuffer
 Coordinate buffer, used only with nslab > 1.
 
FastVector< realcoefficientBuffer
 Coefficient buffer, used only with nslab > 1.
 
FastVector< gmx::RVecfBuffer
 Force buffer, used only with nslab > 1.
 
bool bSpread
 Tells whether these coordinates are used for spreading.
 
int pme_order
 The PME order.
 
FastVector< gmx::IVecidx
 The grid index per atom.
 
FastVector< gmx::RVecfractx
 Fractional atom coordinates relative to the lower cell boundary.
 
int nthread
 The number of threads to use in PME.
 
FastVector< int > thread_idx
 Thread index for each atom.
 
std::vector< AtomToThreadMapthreadMap
 
std::vector< splinedata_tspline
 

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