[gmx-users] g_tune_pme scalevdw option not working?

João Rodrigues anaryin at gmail.com
Thu Mar 13 14:39:01 CET 2014

Hi all,

I've been playing with g_tune_pme (neat tool!) for the last couple of days.
If I understood correctly, it can also be used to iterate over different
rcoulomb values using the -rmin and -rmax options. Using the Verlet scheme
requires rvdw = rcoulomb, so I used the -scalevdw option (which should be
true by default) to keep these equal. This does not seem to happen..

The (partial) contents of a tpr file of such a failed run show the

   verlet-buffer-drift  = 0.005
*   rlist                = 1.213*
   rlistlong            = 1.213
   nstcalclr            = 15
   rtpi                 = 0.05
   coulombtype          = PME
   coulomb-modifier     = Potential-shift
   rcoulomb-switch = 0
*   rcoulomb             = 1*
   vdwtype              = Cut-off
   vdw-modifier         = Potential-shift
   rvdw-switch   = 0
*   rvdw                 = 1.2*

The original mdp has the following parameters:

; Neighborsearching
ns_type         = grid          ; search neighboring grid cels
nstlist         = 15                ; 10 fs
*rlist           = 1.2           ; short-range neighborlist cutoff (in nm)*
*rcoulomb        = 1.2           ; short-range electrostatic cutoff (in nm)*
*rvdw            = 1.2           ; short-range van der Waals cutoff (in nm)*
cutoff-scheme   = Verlet

; Electrostatics
coulombtype     = PME           ; Particle Mesh Ewald for long-range
pme_order = 4                 ; cubic interpolation
fourierspacing  = 0.16          ; grid spacing for FFT

I searched a bit in the source code of gmx_tune_pme.c (4.6.5) and found
that the only check done between these parameters (rvdw and rcoulomb) is if
rvdw != rcoulomb in the original file, keep them as is (line 875). Other
than that, rvdw is checked against rlist to ensure that it keeps the
highest value of the two (rvdw >= rlist) (line 1012). This seems to make
sense since rlist was modified based on rcoulomb, in case of plain PME
(line 1004). However, this only ensures both values are equal if the new
rcoulomb is larger than the original. In case we start with rcoulomb 1.2
and ask g_tune_pme to range from 1.0 to 1.4, those below 1.2 will fail.

Also, why is my rlist changing since it is equal to rcoulomb? It should be
kept the same (line 1004) right?

Am I doing something wrong here, which is totally possible.. or is there
something that g_tune_pme is somehow missing?



More information about the gromacs.org_gmx-users mailing list