Gromacs  2025.0-dev-20241009-5c23d5f
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
List of all members | Public Member Functions
gmx::DomdecZones Class Reference

#include <gromacs/domdec/domdec_zones.h>

Description

Class for handling atom ranges and dimensions of domain decomposition zones.

In the eighth-shell domain decomposition there is a home zone and up to seven zones in the halo. Along each dimension which is decomposed, there are two rows of zones, resulting in a maximum of 2^3=8 zones. For computing pair interactions, each pair only once, we take atom pairs between pairs of zones where the two zones are labelled "i" and "j", like atom pairs in the pair list. This class provides a list of zone pairs (i,j) from which to collect atom pairs for computing all pair interactions within a given cut-off distance. These pairs are provided as range of consecutive j-zones for each i-zone.

Public Member Functions

 DomdecZones (ArrayRef< const int > ddDims)
 
int numZones () const
 Returns the number of zones.
 
int numIZones () const
 Returns the number of "i-zones" for non-bonded pair interactions.
 
const Range< int > & jZoneRange (int iZone) const
 Returns the j-zone range for i-zone iZone.
 
const IVecshift (int zone) const
 Returns the shift of zone zone with respect to the home zone.
 
const Range< int > atomRange (int zone) const
 Returns the atom index range for zone zone.
 
int directNeighborAtomRangeEnd (int zone) const
 Returns the atom index range end for atoms from directly neighboring domains for zone zone.
 
Range< int > jAtomRange (const int iZone) const
 Returns the j-atom index range for i-zone iZone.
 
const gmx_domdec_zone_size_tsizes (int zone) const
 Returns the sizes for zone zone.
 
void setAtomRangeEnd (const int zone, const int atomRangeEnd, const bool rangeIsFromDirectNeighbor)
 Sets the end of the atom range for zone zone. More...
 
void setSizes (const gmx_domdec_t &dd, const matrix box, const gmx_ddbox_t *ddbox, const gmx::Range< int > zoneRange)
 Set zone dimensions for a range of zones. More...
 

Member Function Documentation

void gmx::DomdecZones::setAtomRangeEnd ( const int  zone,
const int  atomRangeEnd,
const bool  rangeIsFromDirectNeighbor 
)
inline

Sets the end of the atom range for zone zone.

Parameters
[in]zoneThe zone to set the range for
[in]atomRangeEndThe end of the atom range
[in]rangeIsFromDirectNeighborWhether this range comes from directly neighboring domains only
void gmx::DomdecZones::setSizes ( const gmx_domdec_t &  dd,
const matrix  box,
const gmx_ddbox_t *  ddbox,
const gmx::Range< int >  zoneRange 
)

Set zone dimensions for a range of zones.

Parameters
[in,out]ddThe domain decomposition struct
[in]boxThe box
[in]ddboxThe domain decomposition box struct
[in]zoneRangeThe range of zones to set sizes for

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