[gmx-developers] Excluded charges and PME correction

Berk Hess hess at cbr.su.se
Mon May 3 16:33:17 CEST 2010


David van der Spoel wrote:
> On 5/3/10 2:54 PM, Berk Hess wrote:
>> David van der Spoel wrote:
>>> On 5/3/10 11:39 AM, Berk Hess wrote:
>>>> David van der Spoel wrote:
>>>>> On 5/3/10 11:15 AM, Berk Hess wrote:
>>>>>> If you have exclusions in your topology, the ewald_LRcorrection will
>>>>>> completely remove
>>>>>> the mesh electrostatic forces, up to the mesh precision.
>>>>>> But a single dipole in a box will feel the effect of the periodic
>>>>>> images.
>>>>>> Depending on the size of your box, this can be a large force.
>>>>>
>>>>> OK, but isn't it strange that this leads to forces perpendicular to
>>>>> the dipole as well (the box is cubic)? And shouldn't the dipole
>>>>> correction (epsilon_surface != 0) take care of this force?
>>>> It all depends on your box matrix and PME accuracy settings.
>>>> The dipole correction never fully takes care of this, it simply
>>>> reduces
>>>> it by 1/epsilon.
>>>> The 3dc geometry will remove most of it, but not everything.
>>>>
>>>> I guess the perpendicular forces should be (close to) zero, unless
>>>> your
>>>> box is triclinic.
>>> It seems that it is worse, forces are position-dependent. If my
>>> molecule is in the center of a cubic box of 2 nm I get the
>>> perpendicular force close to zero (step 0):
>>>     x (2x3):
>>>        x[    0]={ 1.00000e+00,  1.20000e+00,  1.00000e+00}
>>>        x[    1]={ 1.00000e+00,  8.00000e-01,  1.00000e+00}
>>>     v (2x3):
>>>        v[    0]={ 0.00000e+00,  0.00000e+00,  0.00000e+00}
>>>        v[    1]={ 0.00000e+00,  0.00000e+00,  0.00000e+00}
>>>     f (2x3):
>>>        f[    0]={ 0.00000e+00,  3.17667e+03,  8.47711e-04}
>>>        f[    1]={-2.28882e-03, -3.17667e+03, -8.47711e-04}
>>>
>>> If I change the grid spacing from 20 (0.1 nm) to 21
>>>     f (2x3):
>>>        f[    0]={-4.50611e-03,  3.12076e+03,  6.21270e-03}
>>>        f[    1]={-5.40733e-03, -3.12078e+03,  2.74640e-03}
>>>
>>> to 22
>>>     f (2x3):
>>>        f[    0]={ 6.34670e-03,  3.37936e+03,  0.00000e+00}
>>>        f[    1]={ 2.51770e-03, -3.37933e+03,  0.00000e+00}
>>>
>>> to 23
>>>     f (2x3):
>>>        f[    0]={-3.29018e-03,  3.05586e+03,  5.31634e-03}
>>>        f[    1]={ 1.07188e-02, -3.05586e+03,  5.31634e-03}
>>>
>>> Now if I move the coordinates by 0.3 nm in the X-direction I get:
>>>     f (2x3):
>>>        f[    0]={-3.65754e+01,  3.04537e+03, -4.07583e-04}
>>>        f[    1]={-3.65607e+01, -3.04536e+03, -4.07583e-04}
>>>
>>> Or by 0.5 nm in X:
>>>     f (2x3):
>>>        f[    0]={ 8.38358e+01,  3.05105e+03,  1.18744e-03}
>>>        f[    1]={ 8.38223e+01, -3.05105e+03,  1.18744e-03}
>>>
>>> Or  by 05 nm in X and 0.5 nm in Z:
>>>     f (2x3):
>>>        f[    0]={ 8.38596e+01,  3.04622e+03,  8.38235e+01}
>>>        f[    1]={ 8.38329e+01, -3.04621e+03,  8.38232e+01}
>>>
>>>
>>> So the force in the Y direction depends on grid spacing and in X and Z
>>> on the position.
>>> As you see, the above force will lead to a net translation.
>>>
>>>
>> Can you post the box and all PME parameters?
>> These are all things I would expect, but the magnitude depends on your
>> settings.
>>
>> Berk
>>
> Same with molecule displaced to smaller X yields negative force:
>    box (3x3):
>       box[    0]={ 2.00000e+00,  0.00000e+00,  0.00000e+00}
>       box[    1]={ 0.00000e+00,  2.00000e+00,  0.00000e+00}
>       box[    2]={ 0.00000e+00,  0.00000e+00,  2.00000e+00}
>    x (2x3):
>       x[    0]={ 5.00000e-01,  1.20000e+00,  1.50000e+00}
>       x[    1]={ 5.00000e-01,  8.00000e-01,  1.50000e+00}
>    v (2x3):
>       v[    0]={ 0.00000e+00,  0.00000e+00,  0.00000e+00}
>       v[    1]={ 0.00000e+00,  0.00000e+00,  0.00000e+00}
>    f (2x3):
>       f[    0]={-8.38504e+01,  3.04622e+03,  8.38234e+01}
>       f[    1]={-8.38604e+01, -3.04622e+03,  8.38232e+01}
>
>
>    nkx                  = 23
>    nky                  = 23
>    nkz                  = 23
>    pme_order            = 4
>    ewald_rtol           = 1e-05
>    ewald_geometry       = 0
>    epsilon_surface      = 80
>    rlist                = 0.9
>    rlistlong            = 0.9
>    rtpi                 = 0.05
>    coulombtype          = PME
>    rcoulomb_switch      = 0
>    rcoulomb             = 0.9
>    vdwtype              = Cut-off
>
> OK, I now made a series with different X-coordinates for the molecule
> and I plotted the force for different grid spacing. Results are here:
> http://folding.bmc.uu.se/images/forceX-all.png
> http://folding.bmc.uu.se/images/forceX-all.xvg
>
> It seems that the forces go down systematically with decreasing
> spacing (as they should of course). However in magnitude they are
> still big, even though the dipole is huge in this case (4D, 0.4 nm
> distance charge +/- 10). Then this probably means that all is fine
> anyway.
>
Yes, the length of your dipole is only a fifth of your box size.
Make the box ten times as large and the effect will be orders of
magnitude smaller.

Berk




More information about the gromacs.org_gmx-developers mailing list