Updated documentation, updated log files
This commit is contained in:
@ -26,6 +26,7 @@ Syntax
|
||||
*vhalf* = use half-step velocity
|
||||
*method* value = *1-8*
|
||||
*1-8* = choose one of the many GJ formulations
|
||||
*7* = requires input of additional scalar between 0 and 1
|
||||
|
||||
Examples
|
||||
""""""""
|
||||
@ -34,32 +35,34 @@ Examples
|
||||
|
||||
fix 3 boundary langevin/gjf 10.0 10.0 1.0 699483
|
||||
fix 1 all langevin/gjf 10.0 100.0 100.0 48279 vel vfull method 4
|
||||
fix 2 all langevin/gjf 10.0 10.0 1.0 26488 method 7 0.95
|
||||
|
||||
Description
|
||||
"""""""""""
|
||||
|
||||
Apply a Langevin thermostat as described in :ref:`(Gronbech-Jensen-2024) <Gronbech-Jensen-2024>`
|
||||
Apply a Langevin thermostat as described in :ref:`(Gronbech-Jensen-2020) <Gronbech-Jensen-2020>`
|
||||
to a group of atoms which models an interaction with a background
|
||||
implicit solvent. As described in the papers cited below, the purpose of this method is to
|
||||
enable longer timesteps to be used (up to the numerical stability
|
||||
limit of the integrator), while still producing the correct Boltzmann
|
||||
distribution of atom positions.
|
||||
implicit solvent. As described in the papers cited below, the GJ methods
|
||||
provide exact diffusion, drift, and Boltzmann sampling for linear systems for
|
||||
any time step within the stability limit. The purpose of this set of methods
|
||||
is therefore to significantly improve statistical accuracy at longer time steps
|
||||
compared to other thermostats.
|
||||
|
||||
The current implementation provides the user with the option to output
|
||||
the velocity in one of two forms: *vfull* or *vhalf*. The option *vfull* outputs the
|
||||
on-site velocity given in :ref:`Gronbech-Jensen/Farago
|
||||
the velocity in one of two forms: *vfull* or *vhalf*. The option *vhalf*
|
||||
outputs the 2GJ half-step velocity given in :ref:`Gronbech Jensen/Gronbech-Jensen
|
||||
<Gronbech-Jensen-2019>`; for linear systems, this velocity is shown to not
|
||||
have any statistical errors for any stable time step. The option *vfull*
|
||||
outputs the on-site velocity given in :ref:`Gronbech-Jensen/Farago
|
||||
<Gronbech-Jensen-Farago>`; this velocity is shown to be systematically lower
|
||||
than the target temperature by a small amount, which grows
|
||||
quadratically with the timestep. The option *vhalf* outputs the
|
||||
2GJ half-step velocity given in :ref:`Gronbech Jensen/Gronbech-Jensen
|
||||
<Gronbech-Jensen-2019>`; for linear systems, this velocity is shown to not
|
||||
have any statistical errors for any stable time step. An overview of
|
||||
statistically correct Boltzmann and Maxwell-Boltzmann sampling of true
|
||||
on-site and true half-step velocities is given in
|
||||
:ref:`Gronbech-Jensen-2020 <Gronbech-Jensen-2020>`.
|
||||
quadratically with the timestep. An overview of statistically correct Boltzmann
|
||||
and Maxwell-Boltzmann sampling of true on-site and true half-step velocities is
|
||||
given in :ref:`Gronbech-Jensen-2020 <Gronbech-Jensen-2020>`.
|
||||
|
||||
This fix allows the use of any of the GJ methods as listed in :ref:`Gronbech-Jensen-2020 <Gronbech-Jensen-2020>`.
|
||||
The GJ-VII method is described in :ref:`Finkelstein <Finkelstein>`.
|
||||
This fix allows the use of several GJ methods as listed in :ref:`Gronbech-Jensen-2020 <Gronbech-Jensen-2020>`.
|
||||
The GJ-VII method is described in :ref:`Finkelstein <Finkelstein>` and GJ-VIII
|
||||
is described in :ref:`Gronbech-Jensen-2024 <Gronbech-Jensen-2024>`.
|
||||
The implementation follows the splitting form provided in Eqs. (24) and (25)
|
||||
in :ref:`Gronbech-Jensen-2024 <Gronbech-Jensen-2024>`, including the application
|
||||
of Gaussian noise values, per the description in
|
||||
@ -129,13 +132,11 @@ different numbers of processors.
|
||||
|
||||
The keyword/value option pairs are used in the following ways.
|
||||
|
||||
The keyword *vel* determine which velocity is used to determine
|
||||
The keyword *vel* determines which velocity is used to determine
|
||||
quantities of interest in the simulation.
|
||||
|
||||
The keyword *method* selects one of the eight GJ-methods implemented in LAMMPS.
|
||||
|
||||
*Insert brief explanation for each method*
|
||||
|
||||
----------
|
||||
|
||||
Restart, fix_modify, output, run start/stop, minimize info
|
||||
@ -146,9 +147,10 @@ Because the state of the random number generator is not saved in restart files,
|
||||
this means you cannot do "exact" restarts with this fix, where the simulation
|
||||
continues on the same as if no restart had taken place. However, in a
|
||||
statistical sense, a restarted simulation should produce the same behavior.
|
||||
The "exact" restart is done with either vfull or vhalf velocity output for as
|
||||
long as the choice of vfull/vhalf is the same for the simulation as it is in
|
||||
the restart file.
|
||||
additionally, the GJ methods implement noise exclusively within each time step
|
||||
(unlike the BBK thermostat of the fix-langevin). The restart is done with
|
||||
either vfull or vhalf velocity output for as long as the choice of vfull/vhalf
|
||||
is the same for the simulation as it is in the restart file.
|
||||
|
||||
The :doc:`fix_modify <fix_modify>` *temp* option is supported by this
|
||||
fix. You can use it to assign a temperature :doc:`compute <compute>`
|
||||
@ -165,7 +167,8 @@ This fix is not invoked during :doc:`energy minimization <minimize>`.
|
||||
Restrictions
|
||||
""""""""""""
|
||||
|
||||
This fix is not compatible with run_style respa.
|
||||
This fix is not compatible with run_style respa. It is not compatible with
|
||||
accelerated packages such as KOKKOS.
|
||||
|
||||
Related commands
|
||||
""""""""""""""""
|
||||
@ -179,27 +182,26 @@ The option defaults are vel = vhalf, method = 1.
|
||||
|
||||
----------
|
||||
|
||||
.. _Gronbech-Jensen-2024:
|
||||
.. _Gronbech-Jensen-2020:
|
||||
|
||||
**(Gronbech-Jensen-2024)** Gronbech-Jensen, J. Stat. Phys. 191, 137 (2024).
|
||||
|
||||
.. _Gronbech-Jensen-Farago:
|
||||
|
||||
**(Gronbech-Jensen/Farago)** Gronbech-Jensen and Farago, Mol Phys, 111, 983
|
||||
(2013).
|
||||
**(Gronbech-Jensen-2020)** Gronbech-Jensen, Mol Phys 118, e1662506 (2020).
|
||||
|
||||
.. _Gronbech-Jensen-2019:
|
||||
|
||||
**(Gronbech Jensen/Gronbech-Jensen)** Gronbech Jensen and Gronbech-Jensen, Mol Phys, 117, 2511 (2019)
|
||||
|
||||
.. _Gronbech-Jensen-2020:
|
||||
.. _Gronbech-Jensen-Farago:
|
||||
|
||||
**(Gronbech-Jensen-2020)** Gronbech-Jensen, Mol Phys 118, e1662506 (2020).
|
||||
**(Gronbech-Jensen/Farago)** Gronbech-Jensen and Farago, Mol Phys, 111, 983 (2013).
|
||||
|
||||
.. _Finkelstein:
|
||||
|
||||
**(Finkelstein)** Finkelstein, Cheng, Florin, Seibold, Gronbech-Jensen, J. Chem. Phys., 155, 18 (2021)
|
||||
|
||||
.. _Gronbech-Jensen-2024:
|
||||
|
||||
**(Gronbech-Jensen-2024)** Gronbech-Jensen, J. Stat. Phys. 191, 137 (2024).
|
||||
|
||||
.. _Gronbech-Jensen-2023:
|
||||
|
||||
**(Gronbech-Jensen-2023)** Gronbech-Jensen, J. Stat. Phys. 190, 96 (2023).
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
LAMMPS (2 Apr 2025 - Development - e4c3b0c05e-modified)
|
||||
LAMMPS (2 Apr 2025 - Development - 648cd3f0c6-modified)
|
||||
OMP_NUM_THREADS environment is not set. Defaulting to 1 thread. (src/comm.cpp:99)
|
||||
using 1 OpenMP thread(s) per MPI task
|
||||
# GJ thermostat
|
||||
@ -21,7 +21,7 @@ Finding 1-2 1-3 1-4 neighbors ...
|
||||
0 = max # of 1-4 neighbors
|
||||
1 = max # of special neighbors
|
||||
special bonds CPU = 0.000 seconds
|
||||
read_data CPU = 0.007 seconds
|
||||
read_data CPU = 0.009 seconds
|
||||
include ff-argon.lmp
|
||||
#############################
|
||||
#Atoms types - mass - charge#
|
||||
@ -74,6 +74,20 @@ author = {Grønbech-Jensen, Niels},
|
||||
year = {2020}
|
||||
}
|
||||
|
||||
- Langevin GJ-I vfull method: doi:10.1080/00268976.2012.760055
|
||||
|
||||
@Article{gronbech-jensen_simple_2013,
|
||||
title = {A simple and effective Verlet-type algorithm for simulating Langevin dynamics},
|
||||
volume = {111},
|
||||
url = {http://www.tandfonline.com/doi/abs/10.1080/00268976.2012.760055},
|
||||
doi = {10.1080/00268976.2012.760055},
|
||||
pages = {983-991},
|
||||
number = {8},
|
||||
journal = {Molecular Physics},
|
||||
author = {Grønbech-Jensen, Niels and Farago, Oded},
|
||||
year = {2013}
|
||||
}
|
||||
|
||||
CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE
|
||||
|
||||
Generated 0 of 0 mixed pair_coeff terms from geometric mixing rule
|
||||
@ -93,21 +107,21 @@ Per MPI rank memory allocation (min/avg/max) = 6.481 | 6.481 | 6.481 Mbytes
|
||||
Step Temp E_pair E_mol TotEng Press
|
||||
0 10 -56.207652 0 -55.092137 33.341103
|
||||
5000 8.4535562 -55.150518 0 -54.207511 318.20862
|
||||
Loop time of 2.32365 on 1 procs for 5000 steps with 864 atoms
|
||||
Loop time of 2.27448 on 1 procs for 5000 steps with 864 atoms
|
||||
|
||||
Performance: 18591.401 ns/day, 0.001 hours/ns, 2151.782 timesteps/s, 1.859 Matom-step/s
|
||||
99.9% CPU use with 1 MPI tasks x 1 OpenMP threads
|
||||
Performance: 18993.378 ns/day, 0.001 hours/ns, 2198.308 timesteps/s, 1.899 Matom-step/s
|
||||
100.0% CPU use with 1 MPI tasks x 1 OpenMP threads
|
||||
|
||||
MPI task timing breakdown:
|
||||
Section | min time | avg time | max time |%varavg| %total
|
||||
---------------------------------------------------------------
|
||||
Pair | 1.3067 | 1.3067 | 1.3067 | 0.0 | 56.23
|
||||
Bond | 0.00027472 | 0.00027472 | 0.00027472 | 0.0 | 0.01
|
||||
Neigh | 0.28218 | 0.28218 | 0.28218 | 0.0 | 12.14
|
||||
Comm | 0.057388 | 0.057388 | 0.057388 | 0.0 | 2.47
|
||||
Output | 5.6019e-05 | 5.6019e-05 | 5.6019e-05 | 0.0 | 0.00
|
||||
Modify | 0.65159 | 0.65159 | 0.65159 | 0.0 | 28.04
|
||||
Other | | 0.02549 | | | 1.10
|
||||
Pair | 1.2877 | 1.2877 | 1.2877 | 0.0 | 56.61
|
||||
Bond | 0.00049357 | 0.00049357 | 0.00049357 | 0.0 | 0.02
|
||||
Neigh | 0.28068 | 0.28068 | 0.28068 | 0.0 | 12.34
|
||||
Comm | 0.055813 | 0.055813 | 0.055813 | 0.0 | 2.45
|
||||
Output | 5.5144e-05 | 5.5144e-05 | 5.5144e-05 | 0.0 | 0.00
|
||||
Modify | 0.62478 | 0.62478 | 0.62478 | 0.0 | 27.47
|
||||
Other | | 0.02499 | | | 1.10
|
||||
|
||||
Nlocal: 864 ave 864 max 864 min
|
||||
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||
@ -148,21 +162,21 @@ Per MPI rank memory allocation (min/avg/max) = 6.481 | 6.481 | 6.481 Mbytes
|
||||
36000 8.3048574 -55.079475 0 -54.153056 338.04291
|
||||
38000 8.8708544 -55.108991 0 -54.119434 330.70097
|
||||
40000 8.4012779 -55.080817 0 -54.143642 338.54326
|
||||
Loop time of 19.3834 on 1 procs for 35000 steps with 864 atoms
|
||||
Loop time of 19.0379 on 1 procs for 35000 steps with 864 atoms
|
||||
|
||||
Performance: 15601.000 ns/day, 0.002 hours/ns, 1805.671 timesteps/s, 1.560 Matom-step/s
|
||||
99.9% CPU use with 1 MPI tasks x 1 OpenMP threads
|
||||
Performance: 15884.146 ns/day, 0.002 hours/ns, 1838.443 timesteps/s, 1.588 Matom-step/s
|
||||
100.0% CPU use with 1 MPI tasks x 1 OpenMP threads
|
||||
|
||||
MPI task timing breakdown:
|
||||
Section | min time | avg time | max time |%varavg| %total
|
||||
---------------------------------------------------------------
|
||||
Pair | 11.828 | 11.828 | 11.828 | 0.0 | 61.02
|
||||
Bond | 0.0024424 | 0.0024424 | 0.0024424 | 0.0 | 0.01
|
||||
Neigh | 2.3519 | 2.3519 | 2.3519 | 0.0 | 12.13
|
||||
Comm | 0.42251 | 0.42251 | 0.42251 | 0.0 | 2.18
|
||||
Output | 0.00056686 | 0.00056686 | 0.00056686 | 0.0 | 0.00
|
||||
Modify | 4.5987 | 4.5987 | 4.5987 | 0.0 | 23.73
|
||||
Other | | 0.1793 | | | 0.93
|
||||
Pair | 11.641 | 11.641 | 11.641 | 0.0 | 61.14
|
||||
Bond | 0.003055 | 0.003055 | 0.003055 | 0.0 | 0.02
|
||||
Neigh | 2.3613 | 2.3613 | 2.3613 | 0.0 | 12.40
|
||||
Comm | 0.41299 | 0.41299 | 0.41299 | 0.0 | 2.17
|
||||
Output | 0.00055686 | 0.00055686 | 0.00055686 | 0.0 | 0.00
|
||||
Modify | 4.442 | 4.442 | 4.442 | 0.0 | 23.33
|
||||
Other | | 0.1775 | | | 0.93
|
||||
|
||||
Nlocal: 864 ave 864 max 864 min
|
||||
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
LAMMPS (2 Apr 2025 - Development - e4c3b0c05e-modified)
|
||||
LAMMPS (2 Apr 2025 - Development - 648cd3f0c6-modified)
|
||||
OMP_NUM_THREADS environment is not set. Defaulting to 1 thread. (src/comm.cpp:99)
|
||||
using 1 OpenMP thread(s) per MPI task
|
||||
# GJ thermostat
|
||||
@ -74,6 +74,20 @@ author = {Grønbech-Jensen, Niels},
|
||||
year = {2020}
|
||||
}
|
||||
|
||||
- Langevin GJ-I vfull method: doi:10.1080/00268976.2012.760055
|
||||
|
||||
@Article{gronbech-jensen_simple_2013,
|
||||
title = {A simple and effective Verlet-type algorithm for simulating Langevin dynamics},
|
||||
volume = {111},
|
||||
url = {http://www.tandfonline.com/doi/abs/10.1080/00268976.2012.760055},
|
||||
doi = {10.1080/00268976.2012.760055},
|
||||
pages = {983-991},
|
||||
number = {8},
|
||||
journal = {Molecular Physics},
|
||||
author = {Grønbech-Jensen, Niels and Farago, Oded},
|
||||
year = {2013}
|
||||
}
|
||||
|
||||
CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE
|
||||
|
||||
Generated 0 of 0 mixed pair_coeff terms from geometric mixing rule
|
||||
@ -93,21 +107,21 @@ Per MPI rank memory allocation (min/avg/max) = 6.427 | 6.427 | 6.427 Mbytes
|
||||
Step Temp E_pair E_mol TotEng Press
|
||||
0 10 -56.207652 0 -55.092137 33.341103
|
||||
5000 7.946377 -55.076514 0 -54.190084 337.31999
|
||||
Loop time of 2.0791 on 4 procs for 5000 steps with 864 atoms
|
||||
Loop time of 2.10015 on 4 procs for 5000 steps with 864 atoms
|
||||
|
||||
Performance: 20778.210 ns/day, 0.001 hours/ns, 2404.885 timesteps/s, 2.078 Matom-step/s
|
||||
64.9% CPU use with 4 MPI tasks x 1 OpenMP threads
|
||||
Performance: 20570.001 ns/day, 0.001 hours/ns, 2380.787 timesteps/s, 2.057 Matom-step/s
|
||||
64.0% CPU use with 4 MPI tasks x 1 OpenMP threads
|
||||
|
||||
MPI task timing breakdown:
|
||||
Section | min time | avg time | max time |%varavg| %total
|
||||
---------------------------------------------------------------
|
||||
Pair | 0.52985 | 0.53809 | 0.54586 | 0.8 | 25.88
|
||||
Bond | 0.00054599 | 0.00057676 | 0.00061668 | 0.0 | 0.03
|
||||
Neigh | 0.10872 | 0.10965 | 0.11044 | 0.2 | 5.27
|
||||
Comm | 0.95581 | 0.96284 | 0.97025 | 0.5 | 46.31
|
||||
Output | 0.00027472 | 0.00028374 | 0.00029435 | 0.0 | 0.01
|
||||
Modify | 0.25077 | 0.25198 | 0.2529 | 0.2 | 12.12
|
||||
Other | | 0.2157 | | | 10.37
|
||||
Pair | 0.54244 | 0.54516 | 0.54794 | 0.3 | 25.96
|
||||
Bond | 0.00056978 | 0.00065706 | 0.00071013 | 0.0 | 0.03
|
||||
Neigh | 0.10885 | 0.11 | 0.11178 | 0.4 | 5.24
|
||||
Comm | 0.96848 | 0.97341 | 0.97775 | 0.3 | 46.35
|
||||
Output | 0.00028754 | 0.00029437 | 0.00030094 | 0.0 | 0.01
|
||||
Modify | 0.25125 | 0.25293 | 0.25477 | 0.3 | 12.04
|
||||
Other | | 0.2177 | | | 10.37
|
||||
|
||||
Nlocal: 216 ave 216 max 216 min
|
||||
Histogram: 4 0 0 0 0 0 0 0 0 0
|
||||
@ -148,21 +162,21 @@ Per MPI rank memory allocation (min/avg/max) = 6.428 | 6.428 | 6.428 Mbytes
|
||||
36000 8.0936615 -55.152202 0 -54.249342 316.20169
|
||||
38000 7.999652 -55.048407 0 -54.156034 345.07945
|
||||
40000 8.6699753 -55.087634 0 -54.120485 337.23709
|
||||
Loop time of 17.5212 on 4 procs for 35000 steps with 864 atoms
|
||||
Loop time of 17.6531 on 4 procs for 35000 steps with 864 atoms
|
||||
|
||||
Performance: 17259.111 ns/day, 0.001 hours/ns, 1997.582 timesteps/s, 1.726 Matom-step/s
|
||||
63.6% CPU use with 4 MPI tasks x 1 OpenMP threads
|
||||
Performance: 17130.136 ns/day, 0.001 hours/ns, 1982.655 timesteps/s, 1.713 Matom-step/s
|
||||
63.9% CPU use with 4 MPI tasks x 1 OpenMP threads
|
||||
|
||||
MPI task timing breakdown:
|
||||
Section | min time | avg time | max time |%varavg| %total
|
||||
---------------------------------------------------------------
|
||||
Pair | 4.9924 | 5.0801 | 5.1446 | 2.4 | 28.99
|
||||
Bond | 0.0041975 | 0.0044234 | 0.0046863 | 0.3 | 0.03
|
||||
Neigh | 0.85805 | 0.86369 | 0.87021 | 0.5 | 4.93
|
||||
Comm | 6.7339 | 6.8008 | 6.8891 | 2.1 | 38.81
|
||||
Output | 0.0044786 | 0.0046306 | 0.0050572 | 0.4 | 0.03
|
||||
Modify | 3.2849 | 3.2919 | 3.2981 | 0.3 | 18.79
|
||||
Other | | 1.476 | | | 8.42
|
||||
Pair | 5.0485 | 5.078 | 5.11 | 1.0 | 28.77
|
||||
Bond | 0.0038244 | 0.0043855 | 0.0047706 | 0.6 | 0.02
|
||||
Neigh | 0.8487 | 0.86408 | 0.87685 | 1.1 | 4.89
|
||||
Comm | 6.8368 | 6.8833 | 6.9317 | 1.4 | 38.99
|
||||
Output | 0.004493 | 0.0045296 | 0.0045945 | 0.1 | 0.03
|
||||
Modify | 3.3123 | 3.3253 | 3.3366 | 0.5 | 18.84
|
||||
Other | | 1.494 | | | 8.46
|
||||
|
||||
Nlocal: 216 ave 222 max 210 min
|
||||
Histogram: 2 0 0 0 0 0 0 0 0 2
|
||||
|
||||
@ -94,7 +94,20 @@ static const char cite_langevin_gjf_vhalf[] =
|
||||
"author = {Jensen, Lucas Frese Grønbech and Grønbech-Jensen, Niels},\n"
|
||||
"year = {2019}\n"
|
||||
"}\n\n";
|
||||
|
||||
|
||||
static const char cite_langevin_gjf_vfull[] =
|
||||
"Langevin GJ-I vfull method: doi:10.1080/00268976.2012.760055\n\n"
|
||||
"@Article{gronbech-jensen_simple_2013,\n"
|
||||
"title = {A simple and effective Verlet-type algorithm for simulating Langevin dynamics},\n"
|
||||
"volume = {111},\n"
|
||||
"url = {http://www.tandfonline.com/doi/abs/10.1080/00268976.2012.760055},\n"
|
||||
"doi = {10.1080/00268976.2012.760055},\n"
|
||||
"pages = {983-991},\n"
|
||||
"number = {8},\n"
|
||||
"journal = {Molecular Physics},\n"
|
||||
"author = {Grønbech-Jensen, Niels and Farago, Oded},\n"
|
||||
"year = {2013}\n"
|
||||
"}\n\n";
|
||||
|
||||
/* ---------------------------------------------------------------------- */
|
||||
|
||||
@ -166,6 +179,7 @@ FixLangevinGJF::FixLangevinGJF(LAMMPS *lmp, int narg, char **arg) :
|
||||
error->all(FLERR, "Illegal fix langevin/gjf command");
|
||||
}
|
||||
if (GJmethod == 1 && osflag == 0) if (lmp->citeme) lmp->citeme->add(cite_langevin_gjf_vhalf);
|
||||
if (GJmethod == 1 && osflag == 1) if (lmp->citeme) lmp->citeme->add(cite_langevin_gjf_vfull);
|
||||
|
||||
// set temperature = nullptr, user can override via fix_modify if wants bias
|
||||
id_temp = nullptr;
|
||||
|
||||
Reference in New Issue
Block a user