|
Gromacs
2026.0-dev-20251119-5f0a571d
|
#include "gmxpre.h"#include "domdec_specatomcomm.h"#include <cassert>#include <cstdio>#include <algorithm>#include <array>#include <filesystem>#include <memory>#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/mdtypes/commrec.h"#include "gromacs/pbcutil/ishift.h"#include "gromacs/utility/arrayref.h"#include "gromacs/utility/fatalerror.h"#include "gromacs/utility/gmxassert.h"#include "gromacs/utility/vec.h"
Include dependency graph for domdec_specatomcomm.cpp:This file implements functions for domdec to use while managing inter-atomic constraints.
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... | |
| 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.
| [in] | dd | Domain decomposition struct |
| [in] | spac | Special atom communication struct |
| [in] | box | Box, used for pbc |
| [in,out] | x0 | Vector to communicate |
| [in,out] | x1 | Vector to communicate, when != NULL |
| [in] | bX1IsCoord | Tells 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.
| [in] | dd | Domain decomposition struct |
| [in,out] | ireq | List of requested atom indices, updated due to aggregation |
| [in,out] | spac | Special atom communication struct |
| [out] | ga2la_specat | Global to local special atom index |
| [in] | at_start | Index in local state where to start storing communicated atoms |
| [in] | vbuf_fac | Buffer factor, 1 or 2 for communicating 1 or 2 vectors |
| [in] | specat_type | Name of the special atom, used for error message |
| [in] | add_err | Text to add at the end of error message when atoms can't be found |
1.8.5