Dear Colleague,
Two bugs have been found in the Dissipative Particle Dynamics (DPD) code of
DL_MESO 2.5 related to Lees-Edwards shearing in parallel and the Langevin
barostat.
The parallel deport, export and import routines for Lees-Edwards shearing
include determining possible destination processes for beads passing through the
boundary or being in the boundary halo. For situations when the boundary does
not move in a particular direction, however, a superfluous modification to the
destination processes is made and particles are thus sent to the wrong
processes. This can result in the system temperature settling to an artificially
high value. Many thanks are due to Martin Walker (Durham University) for
identifying this bug.
This bug can be fixed by making changes to the following subroutines in
domain_module.f90: deport_shear, import_shear, importvariable_shear,
importdensity_shear, export_shear, exportvelocity_shear and exportdensity_shear.
In these subroutines, each instance of the following lines:
IF (test1==0.0_dp) THEN
id1 = id1 - 1
test1 = test1 + side1
END IF
IF (test2==0.0_dp) THEN
id2 = id2 - 1
test2 = test2 + side2
END IF
should be changed to:
IF (test1==0.0_dp) test1 = side1
IF (test2==0.0_dp) test2 = side2
The same two lines should also be inserted immediately after the line:
test2 = MOD (dimz-shove2, sidez)
for CASE (4) in deport_shear.
The current implementation of the Langevin barostat for all available
thermostats uses an incorrect value for the random parameter and a convergence
condition for particle velocity iteration that becomes increasingly difficult to
attain for very large numbers of particles. Many thanks are due to Yaser Afshar
(Johannes Gutenberg University) for identifying these problems.
To fix these problems, line 13 in constants.f90 should be changed to
REAL(KIND=dp), PARAMETER :: langepsilon=1.0e-6_dp
line 196 in config_module.f90 should be changed to
sigmalang = SQRT (2.0_dp * bbaro * psmass * temp / tstep)
and for each Langevin barostat implementation in integrate_module.f90, i.e. each
subroutine ending with _lang, the two separate expressions in the DO-WHILE
loops:
conv = conv + ABS (vxx (i) - nvx (i)) + ABS (vyy (i) - nvy (i)) + ABS (vzz (i) - nvz (i))
converg = conv
should be respectively changed to
conv = conv + (vxx (i) - nvx (i)) * (vxx (i) - nvx (i)) + (vyy (i) - nvy (i)) * (vyy (i) - nvy (i)) + &
&(vzz (i) - nvz (i)) * (vzz (i) - nvz (i))
converg = conv / REAL(3*(nsyst-nfsyst), KIND=dp)
The above changes to the Langevin barostat are also described in a revised
version of the user manual, which can be downloaded from the DL_MESO website.
The revised version of the package with all of the above changes can be
downloaded and decrypted using the same procedure as outlined in the original
instructions emailed to registered users. Re-registration is not necessary if
you are a current DL_MESO version 2.5 user.
Michael Seaton