Gromacs  2024.4
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Functions
#include "gmxpre.h"
#include "domdec_specatomcomm.h"
#include <cassert>
#include <algorithm>
#include "gromacs/domdec/dlb.h"
#include "gromacs/domdec/domdec.h"
#include "gromacs/domdec/domdec_network.h"
#include "gromacs/domdec/domdec_struct.h"
#include "gromacs/domdec/ga2la.h"
#include "gromacs/domdec/hashedmap.h"
#include "gromacs/domdec/partition.h"
#include "gromacs/math/vec.h"
#include "gromacs/mdtypes/commrec.h"
#include "gromacs/pbcutil/ishift.h"
#include "gromacs/utility/fatalerror.h"
#include "gromacs/utility/gmxassert.h"
+ Include dependency graph for domdec_specatomcomm.cpp:

Description

This file implements functions for domdec to use while managing inter-atomic constraints.

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

Functions

void dd_move_f_specat (const gmx_domdec_t *dd, gmx_domdec_specat_comm_t *spac, gmx::RVec *f, gmx::RVec *fshift)
 Communicates the force for special atoms, the shift forces are reduced with fshift != NULL.
 
void dd_move_x_specat (const gmx_domdec_t *dd, gmx_domdec_specat_comm_t *spac, const matrix box, gmx::RVec *x0, gmx::RVec *x1, bool bX1IsCoord)
 Communicates the coordinates for special atoms. More...
 
int setup_specat_communication (gmx_domdec_t *dd, std::vector< int > *ireq, gmx_domdec_specat_comm_t *spac, gmx::HashedMap< int > *ga2la_specat, int at_start, int vbuf_fac, const char *specat_type, const char *add_err)
 Sets up the communication for special atoms. More...
 

Function Documentation

void dd_move_x_specat ( const gmx_domdec_t *  dd,
gmx_domdec_specat_comm_t spac,
const matrix  box,
gmx::RVec x0,
gmx::RVec x1,
bool  bX1IsCoord 
)

Communicates the coordinates for special atoms.

Parameters
[in]ddDomain decomposition struct
[in]spacSpecial atom communication struct
[in]boxBox, used for pbc
[in,out]x0Vector to communicate
[in,out]x1Vector to communicate, when != NULL
[in]bX1IsCoordTells is x1 is a coordinate vector (needs pbc)
int setup_specat_communication ( gmx_domdec_t *  dd,
std::vector< int > *  ireq,
gmx_domdec_specat_comm_t spac,
gmx::HashedMap< int > *  ga2la_specat,
int  at_start,
int  vbuf_fac,
const char *  specat_type,
const char *  add_err 
)

Sets up the communication for special atoms.

Parameters
[in]ddDomain decomposition struct
[in,out]ireqList of requested atom indices, updated due to aggregation
[in,out]spacSpecial atom communication struct
[out]ga2la_specatGlobal to local special atom index
[in]at_startIndex in local state where to start storing communicated atoms
[in]vbuf_facBuffer factor, 1 or 2 for communicating 1 or 2 vectors
[in]specat_typeName of the special atom, used for error message
[in]add_errText to add at the end of error message when atoms can't be found