Gromacs  2026.0-dev-20251119-5f0a571d
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Classes | Macros | Typedefs | Functions | Variables
#include "config.h"
#include <memory>
#include <vector>
#include "gromacs/math/gmxcomplex.h"
#include "gromacs/utility/alignedallocator.h"
#include "gromacs/utility/arrayref.h"
#include "gromacs/utility/defaultinitializationallocator.h"
#include "gromacs/utility/gmxassert.h"
#include "gromacs/utility/gmxmpi.h"
#include "gromacs/utility/mpicomm.h"
#include "gromacs/utility/unique_cptr.h"
#include "gromacs/utility/vectypes.h"
+ Include dependency graph for pme_internal.h:
+ This graph shows which files directly or indirectly include this file:

Description

This file contains function declarations necessary for computing energies and forces for the PME long-ranged part (Coulomb and LJ).

Author
Berk Hess hess@.nosp@m.kth..nosp@m.se
Mark Abraham mark..nosp@m.j.ab.nosp@m.raham.nosp@m.@gma.nosp@m.il.co.nosp@m.m

Classes

struct  pme_grid_comm_t
 Data structure for grid communication. More...
 
struct  pme_overlap_t
 Data structure for grid overlap communication in a single dimension. More...
 
struct  AtomToThreadMap
 Data structure for organizing particle allocation to threads. More...
 
class  SplineCoefficients
 Coefficients for theta or dtheta. More...
 
struct  splinedata_t
 Data structure for beta-spline interpolation. More...
 
struct  SlabCommSetup
 PME slab MPI communication setup. More...
 
class  PmeAtomComm
 Data structure for coordinating transfers between PME ranks along one dimension. More...
 
struct  pmegrid_t
 Data structure for a single PME grid. More...
 
struct  pmegrids_t
 Data structures for PME grids. More...
 
struct  PmeAndFftGrids
 The data for PME spread/gather plus FFT grids for one set of coefficients. More...
 
struct  gmx_pme_t
 Main PME data structure. More...
 

Macros

#define PME_ORDER_MAX   12
 We only define a maximum to be able to use local arrays without allocation. An order larger than 12 should never be needed, even for test cases. If needed it can be changed here.
 

Typedefs

typedef struct gmx_parallel_3dfft * gmx_parallel_3dfft_t
 A repeat of typedef from parallel_3dfft.h.
 
template<typename T >
using AlignedVector = std::vector< T, gmx::AlignedAllocator< T >>
 
template<typename T >
using FastVector = std::vector< T, gmx::DefaultInitializationAllocator< T >>
 

Functions

void parallel_3dfft_destroy (gmx_parallel_3dfft *pfft_setup)
 Wrapper for gmx_parallel_3dfft_destroy to use as destructor with return type void.
 

Variables

static constexpr int sc_numGridsLJLB = 7
 The number of grids for LJ-PME with LB combination rules.
 
static const real lb_scale_factor []
 Pascal triangle coefficients scaled with (1/2)^6 for LJ-PME with LB-rules. More...
 
static const real lb_scale_factor_symm [] = { 2.0 / 64, 12.0 / 64, 30.0 / 64, 20.0 / 64 }
 Pascal triangle coefficients used in solve_pme_lj_yzx, only need to do 4 calculations due to symmetry.
 

Variable Documentation

const real lb_scale_factor[]
static
Initial value:
= { 1.0 / 64, 6.0 / 64, 15.0 / 64, 20.0 / 64,
15.0 / 64, 6.0 / 64, 1.0 / 64 }

Pascal triangle coefficients scaled with (1/2)^6 for LJ-PME with LB-rules.