Gromacs
2024.4
|
#include "config.h"
#include <memory>
#include <vector>
#include "gromacs/domdec/localatomset.h"
#include "gromacs/mdtypes/pull_params.h"
#include "gromacs/utility/gmxmpi.h"
#include "pullcoordexpressionparser.h"
This file contains datatypes and function declarations for internal use in the pull code.
Classes | |
struct | pull_group_work_t |
Pull group data used during pulling. More... | |
struct | pull_coord_work_t |
Struct with parameters and force evaluation local data for a pull coordinate. More... | |
Enumerations | |
enum | { epgrppbcNONE, epgrppbcREFAT, epgrppbcCOS, epgrppbcPREVSTEPCOM } |
Functions | |
void | setPrevStepPullComFromState (struct pull_t *pull, const t_state *state) |
Copies the pull group COM of the previous step from the checkpoint state to the pull state. More... | |
void | allocStatePrevStepPullCom (t_state *state, const pull_t *pull) |
Resizes the vector, in the state container, containing the COMs from the previous step. More... | |
Variables | |
static const int | c_pullMaxNumLocalAtomsSingleThreaded = 1 |
Determines up to what local atom count a pull group gets processed single-threaded. More... | |
static constexpr int | c_comBufferStride = 3 |
The normal COM buffer needs 3 elements per group. | |
static constexpr int | c_cylinderBufferStride = 9 |
The cylinder buffer needs 9 elements per group. | |
void allocStatePrevStepPullCom | ( | t_state * | state, |
const pull_t * | pull | ||
) |
Resizes the vector, in the state container, containing the COMs from the previous step.
[in] | state | The global state container |
[in] | pull | The COM pull force calculation data structure |
void setPrevStepPullComFromState | ( | struct pull_t * | pull, |
const t_state * | state | ||
) |
Copies the pull group COM of the previous step from the checkpoint state to the pull state.
[in] | pull | The COM pull force calculation data structure |
[in] | state | The global state container |
|
static |
Determines up to what local atom count a pull group gets processed single-threaded.
We set this limit to 1 with debug to catch bugs. On Haswell with GCC 5 the cross-over point is around 400 atoms, independent of thread count and hyper-threading.