Gromacs  2020.4
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Macros | Typedefs | Functions | Variables
#include "config.h"
#include "gromacs/math/gmxcomplex.h"
#include "gromacs/utility/basedefinitions.h"
#include "gromacs/utility/defaultinitializationallocator.h"
#include "gromacs/utility/gmxmpi.h"
#include "gromacs/utility/smalloc.h"
#include "pme_gpu_types_host.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

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.
 
#define PME_GRID_QA   0
 Grid indices for A state for charge and Lennard-Jones C6.
 
#define PME_GRID_C6A   2
 
#define DO_Q   2 /* Electrostatic grids have index q<2 */
 Flags that indicate the number of PME grids in use.
 
#define DO_Q_AND_LJ   4 /* non-LB LJ grids have index 2 <= q < 4 */
 
#define DO_Q_AND_LJ_LB   9 /* With LB rules we need a total of 2+7 grids */
 

Typedefs

typedef struct gmx_parallel_3dfft * gmx_parallel_3dfft_t
 A repeat of typedef from parallel_3dfft.h.
 

Functions

void gmx_pme_reinit (struct gmx_pme_t **pmedata, const t_commrec *cr, struct gmx_pme_t *pme_src, const t_inputrec *ir, const ivec grid_size, real ewaldcoeff_q, real ewaldcoeff_lj)
 As gmx_pme_init, but takes most settings, except the grid/Ewald coefficients, from pme_src. This is only called when the PME cut-off/grid size changes.
 
bool pme_gpu_active (const gmx_pme_t *pme)
 Finds out if PME is currently running on GPU. TODO: should this be removed eventually? More...
 
void gmx_pme_send_switchgrid (const t_commrec *cr, ivec grid_size, real ewaldcoeff_q, real ewaldcoeff_lj)
 Tell our PME-only node to switch to a new grid size.
 

Variables

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.
 

Function Documentation

bool pme_gpu_active ( const gmx_pme_t *  pme)
inline

Finds out if PME is currently running on GPU. TODO: should this be removed eventually?

Parameters
[in]pmeThe PME structure.
Returns
True if PME runs on GPU currently, false otherwise.

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.