Gromacs
2020.5
|
#include "gmxpre.h"
#include "pme_redistribute.h"
#include "config.h"
#include <algorithm>
#include "gromacs/math/vec.h"
#include "gromacs/mdtypes/commrec.h"
#include "gromacs/utility/exceptions.h"
#include "gromacs/utility/fatalerror.h"
#include "gromacs/utility/gmxmpi.h"
#include "gromacs/utility/smalloc.h"
#include "pme_internal.h"
This file contains function definitions for redistributing atoms over the PME domains.
Functions | |
static void | pme_calc_pidx (int start, int end, const matrix recipbox, gmx::ArrayRef< const gmx::RVec > x, PmeAtomComm *atc, int *count) |
Calculate the slab indices and store in atc , store counts in count . | |
static void | pme_calc_pidx_wrapper (gmx::ArrayRef< const gmx::RVec > x, const matrix recipbox, PmeAtomComm *atc) |
Wrapper function for calculating slab indices, stored in atc . | |
static void | pme_realloc_splinedata (splinedata_t *spline, const PmeAtomComm *atc) |
Reallocates all buffers in spline to fit atoms in atc . | |
static void | pme_dd_sendrecv (PmeAtomComm *atc, gmx_bool bBackward, int shift, void *buf_s, int nbyte_s, void *buf_r, int nbyte_r) |
Communicates buffers between rank separated by shift slabs. | |
static void | dd_pmeredist_pos_coeffs (gmx_pme_t *pme, const gmx_bool bX, gmx::ArrayRef< const gmx::RVec > x, const real *data, PmeAtomComm *atc) |
Redistristributes data and optionally coordinates between MPI ranks. | |
void | dd_pmeredist_f (struct gmx_pme_t *pme, PmeAtomComm *atc, gmx::ArrayRef< gmx::RVec > f, gmx_bool bAddF) |
Redistributes forces along the dimension gives by atc . | |
void | do_redist_pos_coeffs (struct gmx_pme_t *pme, const t_commrec *cr, gmx_bool bFirst, gmx::ArrayRef< const gmx::RVec > x, const real *data) |
Redistributes coefficients and when bFirst=true coordinates over MPI ranks. | |