diff --git a/doc/src/fix_langevin_gjf.rst b/doc/src/fix_langevin_gjf.rst index 08e6c1c87b..e58b4305bd 100644 --- a/doc/src/fix_langevin_gjf.rst +++ b/doc/src/fix_langevin_gjf.rst @@ -107,9 +107,7 @@ This is not done by default, but only if the :doc:`fix_modify ` command is used to assign a temperature compute to this fix that includes such a bias term. See the doc pages for individual :doc:`compute temp commands ` to determine which ones include -a bias. In this case, the thermostat works in the following manner: -bias is removed from each atom, thermostatting is performed on the -remaining thermal degrees of freedom, and the bias is added back in. +a bias. The *damp* parameter is specified in time units and determines how rapidly the temperature is relaxed. For example, a value of 100.0 means @@ -148,13 +146,13 @@ Restart, fix_modify, output, run start/stop, minimize info """"""""""""""""""""""""""""""""""""""""""""""""""""""""""" No information about this fix is written to :doc:`binary restart files `. -For the Bruenger thermostat: 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. +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. The :doc:`fix_modify ` *temp* option is supported by this fix. You can use it to assign a temperature :doc:`compute ` diff --git a/examples/gjf/README b/examples/gjf/README new file mode 100644 index 0000000000..fdbc843522 --- /dev/null +++ b/examples/gjf/README @@ -0,0 +1,46 @@ +LAMMPS GJ THERMOSTAT EXAMPLE + +Required LAMMPS packages: EXTRA-FIX, MOLECULE, EXTRA-PAIR + +This directory contains the ingredients to run an NVT simulation using the +GJ thermostats. + +Example: + +NP=4 #number of processors +mpirun -np $NP lmp_mpi -in.gjf.vhalf + +Compared to other thermostats, the GJ thermostat allows for larger timesteps +with the correct Boltzmann statistics. A comparison using averaged properties +from this example's input file is shown below. 'X' denotes a failed simulation. + +KINETIC ENERGY (eV) +| Δt || 0.01 | 0.05 | 0.10 | 0.11 | 0.12 | 0.13 | 0.14 | +|==============||========|========|========|========|========|========|========| +| langevin/gjf || 1.112 | 1.108 | 1.114 | 1.118 | 1.111 | 1.133 | 1.168 | +| langevin || 1.113 | 1.125 | 1.121 | 1.135 | 1.152 | X | X | +| nvt || 1.094 | 1.114 | 1.117 | 1.113 | 1.121 | X | X | +|--------------||--------|--------|--------|--------|--------|--------|--------| + +POTENTIAL ENERGY (eV) +| Δt || 0.01 | 0.05 | 0.10 | 0.11 | 0.12 | 0.13 | 0.14 | +|==============||========|========|========|========|========|========|========| +| langevin/gjf || -55.16 | -55.16 | -55.15 | -55.15 | -55.15 | -55.14 | -55.12 | +| langevin || -55.16 | -55.12 | -54.93 | -54.85 | -54.71 | X | X | +| nvt || -55.17 | -55.10 | -54.95 | -54.88 | -54.82 | X | X | +|--------------||--------|--------|--------|--------|--------|--------|--------| + + +Script Commands: +-- +fix nve all nve +fix lang all langevin 10 10 1 26488 +-- +vs +-- +fix noho all nvt temp 10 10 1 +-- +vs +-- +fix lang all langevin/gjf 10 10 1 26488 +-- \ No newline at end of file diff --git a/examples/gjf/README.md b/examples/gjf/README.md deleted file mode 100644 index e6886cb2dd..0000000000 --- a/examples/gjf/README.md +++ /dev/null @@ -1,13 +0,0 @@ -# LAMMPS GJF-2GJ THERMOSTAT EXAMPLE - -## GJF-2GJ THERMOSTAT - -This directory contains the ingredients to run an NVT simulation using the GJF-2GJ thermostat. - -Example: -``` -NP=4 #number of processors -mpirun -np $NP lmp_mpi -in.gjf.vhalf -``` - -## Required LAMMPS packages: MOLECULE package diff --git a/examples/gjf/in.gjf.vfull b/examples/gjf/in.gjf.vfull index 40512ac37a..8512dad837 100644 --- a/examples/gjf/in.gjf.vfull +++ b/examples/gjf/in.gjf.vfull @@ -1,4 +1,4 @@ -# GJF-2GJ thermostat +# GJ thermostat units metal atom_style full @@ -14,8 +14,7 @@ neighbor 1 bin timestep 0.1 -fix lang all langevin 10 10 1 26488 gjf vfull -fix nve all nve +fix lang all langevin/gjf 10 10 1 26488 vel vfull method 4 thermo 200 run 5000 diff --git a/examples/gjf/in.gjf.vhalf b/examples/gjf/in.gjf.vhalf index 63fb8bd467..08b0b45c8c 100644 --- a/examples/gjf/in.gjf.vhalf +++ b/examples/gjf/in.gjf.vhalf @@ -1,4 +1,4 @@ -# GJF-2GJ thermostat +# GJ thermostat units metal atom_style full @@ -14,8 +14,7 @@ neighbor 1 bin timestep 0.1 -fix lang all langevin 10 10 1 26488 gjf vhalf -fix nve all nve +fix lang all langevin/gjf 10 10 1 26488 thermo 200 run 5000 diff --git a/examples/gjf/log.15Oct19.gjf.vfull.g++.1 b/examples/gjf/log.15Oct19.gjf.vfull.g++.1 deleted file mode 100644 index e3e9cce124..0000000000 --- a/examples/gjf/log.15Oct19.gjf.vfull.g++.1 +++ /dev/null @@ -1,125 +0,0 @@ -LAMMPS (19 Sep 2019) - using 1 OpenMP thread(s) per MPI task -# GJF-2GJ thermostat - -units metal -atom_style full - -boundary p p p -read_data argon.lmp - orthogonal box = (0 0 0) to (32.146 32.146 32.146) - 1 by 1 by 1 MPI processor grid - reading atoms ... - 864 atoms - 0 = max # of 1-2 neighbors - 0 = max # of 1-3 neighbors - 0 = max # of 1-4 neighbors - 1 = max # of special neighbors - special bonds CPU = 0.000150019 secs - read_data CPU = 0.001946 secs - -include ff-argon.lmp -############################# -#Atoms types - mass - charge# -############################# -#@ 1 atom types #!THIS LINE IS NECESSARY DON'T SPEND HOURS FINDING THAT OUT!# - -variable Ar equal 1 - -############# -#Atom Masses# -############# - -mass ${Ar} 39.903 -mass 1 39.903 - -########################### -#Pair Potentials - Tersoff# -########################### - -pair_style lj/cubic -pair_coeff * * 0.0102701 3.42 - - -velocity all create 10 2357 mom yes dist gaussian - -neighbor 1 bin - -timestep 0.1 - -fix lang all langevin 10 10 1 26488 gjf vfull -fix nve all nve - -thermo 200 -run 5000 -Neighbor list info ... - update every 1 steps, delay 10 steps, check yes - max neighbors/atom: 2000, page size: 100000 - master list distance cutoff = 6.94072 - ghost atom cutoff = 6.94072 - binsize = 3.47036, bins = 10 10 10 - 1 neighbor lists, perpetual/occasional/extra = 1 0 0 - (1) pair lj/cubic, perpetual - attributes: half, newton on - pair build: half/bin/newton - stencil: half/bin/3d/newton - bin: standard -Per MPI rank memory allocation (min/avg/max) = 6.875 | 6.875 | 6.875 Mbytes -Step Temp E_pair E_mol TotEng Press - 0 11.080223 -56.207655 0 -54.97164 37.215524 - 200 8.2588471 -55.073602 0 -54.152316 339.80416 - 400 8.1427292 -55.072244 0 -54.16391 338.91883 - 600 8.7595618 -55.066739 0 -54.089596 344.25426 - 800 8.550633 -55.148315 0 -54.194479 318.9385 - 1000 8.5394337 -55.125709 0 -54.173122 326.59471 - 1200 8.565973 -55.114892 0 -54.159345 328.5193 - 1400 8.2092914 -55.109233 0 -54.193475 329.56161 - 1600 8.209495 -55.138161 0 -54.22238 321.39971 - 1800 8.4039924 -55.13355 0 -54.196072 322.64214 - 2000 8.4548937 -55.062994 0 -54.119838 343.29888 - 2200 8.3775139 -55.13364 0 -54.199116 323.63744 - 2400 8.537332 -55.163702 0 -54.21135 315.62864 - 2600 8.672488 -55.112054 0 -54.144625 330.1106 - 2800 8.3000218 -55.147275 0 -54.221396 318.73112 - 3000 8.3552421 -55.135164 0 -54.203124 323.53075 - 3200 8.4126798 -55.135753 0 -54.197306 321.48817 - 3400 8.4986413 -55.135408 0 -54.187372 323.42951 - 3600 8.38431 -55.103932 0 -54.16865 330.68929 - 3800 8.8262454 -55.103648 0 -54.119067 332.97779 - 4000 7.9658136 -55.120402 0 -54.231803 324.9595 - 4200 8.2265544 -55.129011 0 -54.211327 323.87069 - 4400 8.1253738 -55.153089 0 -54.246691 316.304 - 4600 8.2010823 -55.124053 0 -54.20921 325.98402 - 4800 8.5512149 -55.075877 0 -54.121976 338.30137 - 5000 8.4737659 -55.158604 0 -54.213343 316.22418 -Loop time of 2.73236 on 1 procs for 5000 steps with 864 atoms - -Performance: 15810.507 ns/day, 0.002 hours/ns, 1829.920 timesteps/s -99.7% 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.4262 | 1.4262 | 1.4262 | 0.0 | 52.20 -Bond | 0.00042836 | 0.00042836 | 0.00042836 | 0.0 | 0.02 -Neigh | 0.12819 | 0.12819 | 0.12819 | 0.0 | 4.69 -Comm | 0.058611 | 0.058611 | 0.058611 | 0.0 | 2.15 -Output | 0.00047283 | 0.00047283 | 0.00047283 | 0.0 | 0.02 -Modify | 1.0924 | 1.0924 | 1.0924 | 0.0 | 39.98 -Other | | 0.02605 | | | 0.95 - -Nlocal: 864 ave 864 max 864 min -Histogram: 1 0 0 0 0 0 0 0 0 0 -Nghost: 1593 ave 1593 max 1593 min -Histogram: 1 0 0 0 0 0 0 0 0 0 -Neighs: 18143 ave 18143 max 18143 min -Histogram: 1 0 0 0 0 0 0 0 0 0 - -Total # of neighbors = 18143 -Ave neighs/atom = 20.9988 -Ave special neighs/atom = 0 -Neighbor list builds = 158 -Dangerous builds = 5 - - -Total wall time: 0:00:02 diff --git a/examples/gjf/log.15Oct19.gjf.vfull.g++.4 b/examples/gjf/log.15Oct19.gjf.vfull.g++.4 deleted file mode 100644 index 95caed5dc9..0000000000 --- a/examples/gjf/log.15Oct19.gjf.vfull.g++.4 +++ /dev/null @@ -1,125 +0,0 @@ -LAMMPS (19 Sep 2019) - using 1 OpenMP thread(s) per MPI task -# GJF-2GJ thermostat - -units metal -atom_style full - -boundary p p p -read_data argon.lmp - orthogonal box = (0 0 0) to (32.146 32.146 32.146) - 1 by 2 by 2 MPI processor grid - reading atoms ... - 864 atoms - 0 = max # of 1-2 neighbors - 0 = max # of 1-3 neighbors - 0 = max # of 1-4 neighbors - 1 = max # of special neighbors - special bonds CPU = 0.000556268 secs - read_data CPU = 0.003817 secs - -include ff-argon.lmp -############################# -#Atoms types - mass - charge# -############################# -#@ 1 atom types #!THIS LINE IS NECESSARY DON'T SPEND HOURS FINDING THAT OUT!# - -variable Ar equal 1 - -############# -#Atom Masses# -############# - -mass ${Ar} 39.903 -mass 1 39.903 - -########################### -#Pair Potentials - Tersoff# -########################### - -pair_style lj/cubic -pair_coeff * * 0.0102701 3.42 - - -velocity all create 10 2357 mom yes dist gaussian - -neighbor 1 bin - -timestep 0.1 - -fix lang all langevin 10 10 1 26488 gjf vfull -fix nve all nve - -thermo 200 -run 5000 -Neighbor list info ... - update every 1 steps, delay 10 steps, check yes - max neighbors/atom: 2000, page size: 100000 - master list distance cutoff = 6.94072 - ghost atom cutoff = 6.94072 - binsize = 3.47036, bins = 10 10 10 - 1 neighbor lists, perpetual/occasional/extra = 1 0 0 - (1) pair lj/cubic, perpetual - attributes: half, newton on - pair build: half/bin/newton - stencil: half/bin/3d/newton - bin: standard -Per MPI rank memory allocation (min/avg/max) = 6.808 | 6.808 | 6.808 Mbytes -Step Temp E_pair E_mol TotEng Press - 0 11.080228 -56.207655 0 -54.971639 37.215541 - 200 8.4818184 -55.127334 0 -54.181174 324.96159 - 400 8.5960916 -55.09236 0 -54.133453 334.83136 - 600 8.1607556 -55.073136 0 -54.162791 339.035 - 800 8.8350489 -55.133382 0 -54.147819 324.48149 - 1000 8.5692704 -55.118463 0 -54.162548 327.26328 - 1200 8.4174147 -55.126297 0 -54.187322 324.4248 - 1400 8.6362603 -55.123075 0 -54.159688 326.7798 - 1600 8.222512 -55.153799 0 -54.236565 317.8147 - 1800 8.324523 -55.116698 0 -54.188085 327.35373 - 2000 7.9615959 -55.155825 0 -54.267697 315.37215 - 2200 8.495968 -55.083943 0 -54.136205 336.67775 - 2400 7.7926986 -55.044816 0 -54.175529 344.87758 - 2600 8.1551351 -55.069404 0 -54.159687 339.60901 - 2800 8.2593599 -55.084151 0 -54.162807 336.54935 - 3000 8.2860869 -55.110296 0 -54.185971 328.99074 - 3200 8.4074534 -55.123576 0 -54.185712 326.06823 - 3400 8.6694364 -55.128925 0 -54.161836 324.67512 - 3600 8.5718984 -55.129861 0 -54.173653 325.20586 - 3800 8.508102 -55.099093 0 -54.150001 333.91437 - 4000 8.2966658 -55.117782 0 -54.192276 327.13516 - 4200 8.7641728 -55.135792 0 -54.158136 324.00844 - 4400 8.8827909 -55.096369 0 -54.10548 335.08467 - 4600 8.7666577 -55.127213 0 -54.149279 326.15539 - 4800 8.6670762 -55.163395 0 -54.19657 316.48383 - 5000 8.1893094 -55.073756 0 -54.160226 337.95271 -Loop time of 0.870594 on 4 procs for 5000 steps with 864 atoms - -Performance: 49621.267 ns/day, 0.000 hours/ns, 5743.202 timesteps/s -96.5% 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.33582 | 0.35125 | 0.3724 | 2.3 | 40.35 -Bond | 0.00030267 | 0.00031316 | 0.00033538 | 0.0 | 0.04 -Neigh | 0.034246 | 0.03479 | 0.035904 | 0.4 | 4.00 -Comm | 0.15068 | 0.17419 | 0.19191 | 3.6 | 20.01 -Output | 0.00044776 | 0.00054703 | 0.00083177 | 0.0 | 0.06 -Modify | 0.27679 | 0.28079 | 0.28849 | 0.9 | 32.25 -Other | | 0.02871 | | | 3.30 - -Nlocal: 216 ave 216 max 216 min -Histogram: 4 0 0 0 0 0 0 0 0 0 -Nghost: 888.75 ave 899 max 876 min -Histogram: 1 0 1 0 0 0 0 0 0 2 -Neighs: 4536 ave 4737 max 4335 min -Histogram: 2 0 0 0 0 0 0 0 0 2 - -Total # of neighbors = 18144 -Ave neighs/atom = 21 -Ave special neighs/atom = 0 -Neighbor list builds = 178 -Dangerous builds = 11 - - -Total wall time: 0:00:00 diff --git a/examples/gjf/log.15Oct19.gjf.vhalf.g++.1 b/examples/gjf/log.15Oct19.gjf.vhalf.g++.1 deleted file mode 100644 index a87b20a887..0000000000 --- a/examples/gjf/log.15Oct19.gjf.vhalf.g++.1 +++ /dev/null @@ -1,125 +0,0 @@ -LAMMPS (19 Sep 2019) - using 1 OpenMP thread(s) per MPI task -# GJF-2GJ thermostat - -units metal -atom_style full - -boundary p p p -read_data argon.lmp - orthogonal box = (0 0 0) to (32.146 32.146 32.146) - 1 by 1 by 1 MPI processor grid - reading atoms ... - 864 atoms - 0 = max # of 1-2 neighbors - 0 = max # of 1-3 neighbors - 0 = max # of 1-4 neighbors - 1 = max # of special neighbors - special bonds CPU = 0.000147804 secs - read_data CPU = 0.00194898 secs - -include ff-argon.lmp -############################# -#Atoms types - mass - charge# -############################# -#@ 1 atom types #!THIS LINE IS NECESSARY DON'T SPEND HOURS FINDING THAT OUT!# - -variable Ar equal 1 - -############# -#Atom Masses# -############# - -mass ${Ar} 39.903 -mass 1 39.903 - -########################### -#Pair Potentials - Tersoff# -########################### - -pair_style lj/cubic -pair_coeff * * 0.0102701 3.42 - - -velocity all create 10 2357 mom yes dist gaussian - -neighbor 1 bin - -timestep 0.1 - -fix lang all langevin 10 10 1 26488 gjf vhalf -fix nve all nve - -thermo 200 -run 5000 -Neighbor list info ... - update every 1 steps, delay 10 steps, check yes - max neighbors/atom: 2000, page size: 100000 - master list distance cutoff = 6.94072 - ghost atom cutoff = 6.94072 - binsize = 3.47036, bins = 10 10 10 - 1 neighbor lists, perpetual/occasional/extra = 1 0 0 - (1) pair lj/cubic, perpetual - attributes: half, newton on - pair build: half/bin/newton - stencil: half/bin/3d/newton - bin: standard -Per MPI rank memory allocation (min/avg/max) = 6.5 | 6.5 | 6.5 Mbytes -Step Temp E_pair E_mol TotEng Press - 0 11.080223 -56.207655 0 -54.97164 37.215524 - 200 9.8808568 -55.073602 0 -53.971378 345.62207 - 400 9.8712816 -55.072244 0 -53.971088 345.11889 - 600 10.528988 -55.066739 0 -53.892214 350.60093 - 800 10.167171 -55.148315 0 -54.014152 324.73679 - 1000 10.029026 -55.125709 0 -54.006956 331.93766 - 1200 10.194424 -55.114892 0 -53.977688 334.36032 - 1400 9.3473846 -55.109233 0 -54.066518 333.64378 - 1600 9.7774071 -55.138161 0 -54.047477 327.02358 - 1800 9.9814275 -55.13355 0 -54.020107 328.30017 - 2000 10.2515 -55.062994 0 -53.919424 349.74304 - 2200 9.8126922 -55.13364 0 -54.039019 328.78521 - 2400 10.044314 -55.163702 0 -54.043244 321.03397 - 2600 10.543316 -55.112054 0 -53.935932 336.82099 - 2800 9.7874375 -55.147275 0 -54.055472 324.06626 - 3000 9.7703821 -55.135164 0 -54.045263 328.60665 - 3200 10.141958 -55.135753 0 -54.004402 327.69084 - 3400 10.160576 -55.135408 0 -54.00198 329.39063 - 3600 10.044652 -55.103932 0 -53.983436 336.64469 - 3800 10.662403 -55.103648 0 -53.914241 339.56382 - 4000 9.2921047 -55.120402 0 -54.083853 329.71671 - 4200 9.8744553 -55.129011 0 -54.027501 329.78147 - 4400 9.4085964 -55.153089 0 -54.103546 320.90673 - 4600 9.5463801 -55.124053 0 -54.05914 330.80941 - 4800 10.223884 -55.075877 0 -53.935387 344.30099 - 5000 9.6243338 -55.158604 0 -54.084996 320.3511 -Loop time of 2.29551 on 1 procs for 5000 steps with 864 atoms - -Performance: 18819.358 ns/day, 0.001 hours/ns, 2178.166 timesteps/s -99.7% 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.4393 | 1.4393 | 1.4393 | 0.0 | 62.70 -Bond | 0.0004441 | 0.0004441 | 0.0004441 | 0.0 | 0.02 -Neigh | 0.12136 | 0.12136 | 0.12136 | 0.0 | 5.29 -Comm | 0.059342 | 0.059342 | 0.059342 | 0.0 | 2.59 -Output | 0.00046968 | 0.00046968 | 0.00046968 | 0.0 | 0.02 -Modify | 0.64937 | 0.64937 | 0.64937 | 0.0 | 28.29 -Other | | 0.02522 | | | 1.10 - -Nlocal: 864 ave 864 max 864 min -Histogram: 1 0 0 0 0 0 0 0 0 0 -Nghost: 1593 ave 1593 max 1593 min -Histogram: 1 0 0 0 0 0 0 0 0 0 -Neighs: 18143 ave 18143 max 18143 min -Histogram: 1 0 0 0 0 0 0 0 0 0 - -Total # of neighbors = 18143 -Ave neighs/atom = 20.9988 -Ave special neighs/atom = 0 -Neighbor list builds = 158 -Dangerous builds = 5 - - -Total wall time: 0:00:02 diff --git a/examples/gjf/log.15Oct19.gjf.vhalf.g++.4 b/examples/gjf/log.15Oct19.gjf.vhalf.g++.4 deleted file mode 100644 index a70a67a89c..0000000000 --- a/examples/gjf/log.15Oct19.gjf.vhalf.g++.4 +++ /dev/null @@ -1,125 +0,0 @@ -LAMMPS (19 Sep 2019) - using 1 OpenMP thread(s) per MPI task -# GJF-2GJ thermostat - -units metal -atom_style full - -boundary p p p -read_data argon.lmp - orthogonal box = (0 0 0) to (32.146 32.146 32.146) - 1 by 2 by 2 MPI processor grid - reading atoms ... - 864 atoms - 0 = max # of 1-2 neighbors - 0 = max # of 1-3 neighbors - 0 = max # of 1-4 neighbors - 1 = max # of special neighbors - special bonds CPU = 0.000315903 secs - read_data CPU = 0.0653752 secs - -include ff-argon.lmp -############################# -#Atoms types - mass - charge# -############################# -#@ 1 atom types #!THIS LINE IS NECESSARY DON'T SPEND HOURS FINDING THAT OUT!# - -variable Ar equal 1 - -############# -#Atom Masses# -############# - -mass ${Ar} 39.903 -mass 1 39.903 - -########################### -#Pair Potentials - Tersoff# -########################### - -pair_style lj/cubic -pair_coeff * * 0.0102701 3.42 - - -velocity all create 10 2357 mom yes dist gaussian - -neighbor 1 bin - -timestep 0.1 - -fix lang all langevin 10 10 1 26488 gjf vhalf -fix nve all nve - -thermo 200 -run 5000 -Neighbor list info ... - update every 1 steps, delay 10 steps, check yes - max neighbors/atom: 2000, page size: 100000 - master list distance cutoff = 6.94072 - ghost atom cutoff = 6.94072 - binsize = 3.47036, bins = 10 10 10 - 1 neighbor lists, perpetual/occasional/extra = 1 0 0 - (1) pair lj/cubic, perpetual - attributes: half, newton on - pair build: half/bin/newton - stencil: half/bin/3d/newton - bin: standard -Per MPI rank memory allocation (min/avg/max) = 6.433 | 6.433 | 6.433 Mbytes -Step Temp E_pair E_mol TotEng Press - 0 11.080228 -56.207655 0 -54.971639 37.215541 - 200 9.8046716 -55.127334 0 -54.033608 329.70647 - 400 10.174622 -55.09236 0 -53.957366 340.49331 - 600 9.9812299 -55.073136 0 -53.959714 345.56477 - 800 10.512874 -55.133382 0 -53.960655 330.4996 - 1000 9.9587885 -55.118463 0 -54.007545 332.24728 - 1200 10.236607 -55.126297 0 -53.984388 330.94998 - 1400 10.134679 -55.123075 0 -53.992537 332.15441 - 1600 9.8934078 -55.153799 0 -54.050174 323.80795 - 1800 10.064966 -55.116698 0 -53.993936 333.59644 - 2000 9.6736107 -55.155825 0 -54.076719 321.5129 - 2200 10.264537 -55.083943 0 -53.938918 343.02135 - 2400 9.5640032 -55.044816 0 -53.977937 351.23099 - 2600 9.6581077 -55.069404 0 -53.992028 344.99996 - 2800 9.9622575 -55.084151 0 -53.972846 342.6574 - 3000 9.8724909 -55.110296 0 -54.009005 334.68094 - 3200 10.032027 -55.123576 0 -54.004488 331.89534 - 3400 10.221132 -55.128925 0 -53.988742 330.24082 - 3600 10.085802 -55.129861 0 -54.004774 330.63601 - 3800 10.098545 -55.099093 0 -53.972585 339.61905 - 4000 10.000257 -55.117782 0 -54.002238 333.24569 - 4200 10.20477 -55.135792 0 -53.997435 329.17565 - 4400 10.545132 -55.096369 0 -53.920044 341.04725 - 4600 10.376108 -55.127213 0 -53.969743 331.92825 - 4800 10.247392 -55.163395 0 -54.020283 322.15219 - 5000 9.7753102 -55.073756 0 -53.983305 343.64146 -Loop time of 1.19785 on 4 procs for 5000 steps with 864 atoms - -Performance: 36064.674 ns/day, 0.001 hours/ns, 4174.152 timesteps/s -88.6% 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.36387 | 0.38652 | 0.44086 | 5.1 | 32.27 -Bond | 0.00028847 | 0.00030833 | 0.000338 | 0.0 | 0.03 -Neigh | 0.033934 | 0.034959 | 0.036917 | 0.6 | 2.92 -Comm | 0.39292 | 0.47821 | 0.52198 | 7.3 | 39.92 -Output | 0.00050343 | 0.0012343 | 0.0023338 | 1.9 | 0.10 -Modify | 0.1605 | 0.17963 | 0.19457 | 2.9 | 15.00 -Other | | 0.117 | | | 9.77 - -Nlocal: 216 ave 216 max 216 min -Histogram: 4 0 0 0 0 0 0 0 0 0 -Nghost: 888.75 ave 899 max 876 min -Histogram: 1 0 1 0 0 0 0 0 0 2 -Neighs: 4536 ave 4737 max 4335 min -Histogram: 2 0 0 0 0 0 0 0 0 2 - -Total # of neighbors = 18144 -Ave neighs/atom = 21 -Ave special neighs/atom = 0 -Neighbor list builds = 178 -Dangerous builds = 11 - - -Total wall time: 0:00:01 diff --git a/examples/gjf/log.2Apr25.gjf.vfull.g++.1 b/examples/gjf/log.2Apr25.gjf.vfull.g++.1 new file mode 100644 index 0000000000..a1cb4de702 --- /dev/null +++ b/examples/gjf/log.2Apr25.gjf.vfull.g++.1 @@ -0,0 +1,152 @@ +LAMMPS (2 Apr 2025 - Development - 4dd8c66390-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 + +units metal +atom_style full + +boundary p p p +read_data argon.lmp +Reading data file ... + orthogonal box = (0 0 0) to (32.146 32.146 32.146) + 1 by 1 by 1 MPI processor grid + reading atoms ... + 864 atoms +Finding 1-2 1-3 1-4 neighbors ... + special bond factors lj: 0 0 0 + special bond factors coul: 0 0 0 + 0 = max # of 1-2 neighbors + 0 = max # of 1-3 neighbors + 0 = max # of 1-4 neighbors + 1 = max # of special neighbors + special bonds CPU = 0.000 seconds + read_data CPU = 0.007 seconds + +include ff-argon.lmp +############################# +#Atoms types - mass - charge# +############################# +#@ 1 atom types #!THIS LINE IS NECESSARY DON'T SPEND HOURS FINDING THAT OUT!# + +variable Ar equal 1 + +############# +#Atom Masses# +############# + +mass ${Ar} 39.903 +mass 1 39.903 + +########################### +#Pair Potentials - Tersoff# +########################### + +pair_style lj/cubic +pair_coeff * * 0.0102701 3.42 + + +velocity all create 10 2357 mom yes dist gaussian + +neighbor 1 bin + +timestep 0.1 + +fix lang all langevin/gjf 10 10 1 26488 vel vfull method 4 + +thermo 200 +run 5000 + +CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE + +Your simulation uses code contributions which should be cited: + +- Langevin GJF methods: doi:10.1007/s10955-024-03345-1 + +@Article{gronbech_jensen_2024, +title = {On the Definition of Velocity in Discrete-Time, Stochastic Langevin Simulations}, +volume = {191}, +number = {10}, +url = {https://doi.org/10.1007/s10955-024-03345-1}, +doi = {10.1007/s10955-024-03345-1}, +urldate = {2024-10-22}, +journal = {J. Stat. Phys.}, +author = {Gronbech-Jensen, Niels}, +year = {2024}, +pages = {137} +} + +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 +Neighbor list info ... + update: every = 1 steps, delay = 0 steps, check = yes + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 6.9407173 + ghost atom cutoff = 6.9407173 + binsize = 3.4703587, bins = 10 10 10 + 1 neighbor lists, perpetual/occasional/extra = 1 0 0 + (1) pair lj/cubic, perpetual + attributes: half, newton on + pair build: half/bin/newton + stencil: half/bin/3d + bin: standard +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 + 200 8.3566091 -55.074758 0 -54.142565 340.34804 + 400 8.5550582 -55.098903 0 -54.144573 333.63174 + 600 8.7873675 -55.044559 0 -54.064315 350.7384 + 800 8.7258741 -55.149735 0 -54.17635 318.83613 + 1000 8.3748307 -55.059754 0 -54.125529 343.7989 + 1200 8.6082188 -55.156326 0 -54.196066 316.8728 + 1400 8.9291902 -55.11836 0 -54.122295 328.12488 + 1600 8.3386383 -55.119788 0 -54.189601 325.81369 + 1800 8.0698034 -55.076285 0 -54.176086 338.69767 + 2000 8.5103978 -55.084479 0 -54.135131 338.12197 + 2200 8.3201517 -55.104858 0 -54.176733 329.95905 + 2400 8.7070407 -55.120649 0 -54.149366 328.06488 + 2600 8.4244379 -55.147583 0 -54.207824 321.45013 + 2800 8.7911907 -55.127309 0 -54.146638 325.76049 + 3000 8.250829 -55.1039 0 -54.183508 332.05048 + 3200 8.693979 -55.155552 0 -54.185726 318.29736 + 3400 8.9806023 -55.127303 0 -54.125504 327.48861 + 3600 8.8313967 -55.081076 0 -54.09592 339.16793 + 3800 8.8008688 -55.176748 0 -54.194998 313.08151 + 4000 8.1780418 -55.105368 0 -54.193096 330.04164 + 4200 8.3772045 -55.128813 0 -54.194323 324.29069 + 4400 8.3580983 -55.086979 0 -54.154621 335.63911 + 4600 8.1493124 -55.096648 0 -54.18758 332.51502 + 4800 9.0189389 -55.126828 0 -54.120752 326.36041 + 5000 8.7587383 -55.084993 0 -54.107943 337.17399 +Loop time of 2.34344 on 1 procs for 5000 steps with 864 atoms + +Performance: 18434.456 ns/day, 0.001 hours/ns, 2133.618 timesteps/s, 1.843 Matom-step/s +99.9% 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.3044 | 1.3044 | 1.3044 | 0.0 | 55.66 +Bond | 0.00055276 | 0.00055276 | 0.00055276 | 0.0 | 0.02 +Neigh | 0.27376 | 0.27376 | 0.27376 | 0.0 | 11.68 +Comm | 0.055077 | 0.055077 | 0.055077 | 0.0 | 2.35 +Output | 0.00055401 | 0.00055401 | 0.00055401 | 0.0 | 0.02 +Modify | 0.68502 | 0.68502 | 0.68502 | 0.0 | 29.23 +Other | | 0.02412 | | | 1.03 + +Nlocal: 864 ave 864 max 864 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Nghost: 1593 ave 1593 max 1593 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Neighs: 18143 ave 18143 max 18143 min +Histogram: 1 0 0 0 0 0 0 0 0 0 + +Total # of neighbors = 18143 +Ave neighs/atom = 20.998843 +Ave special neighs/atom = 0 +Neighbor list builds = 257 +Dangerous builds = 0 + + +Total wall time: 0:00:02 diff --git a/examples/gjf/log.2Apr25.gjf.vfull.g++.4 b/examples/gjf/log.2Apr25.gjf.vfull.g++.4 new file mode 100644 index 0000000000..6d9543c087 --- /dev/null +++ b/examples/gjf/log.2Apr25.gjf.vfull.g++.4 @@ -0,0 +1,152 @@ +LAMMPS (2 Apr 2025 - Development - 4dd8c66390-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 + +units metal +atom_style full + +boundary p p p +read_data argon.lmp +Reading data file ... + orthogonal box = (0 0 0) to (32.146 32.146 32.146) + 1 by 2 by 2 MPI processor grid + reading atoms ... + 864 atoms +Finding 1-2 1-3 1-4 neighbors ... + special bond factors lj: 0 0 0 + special bond factors coul: 0 0 0 + 0 = max # of 1-2 neighbors + 0 = max # of 1-3 neighbors + 0 = max # of 1-4 neighbors + 1 = max # of special neighbors + special bonds CPU = 0.002 seconds + read_data CPU = 0.014 seconds + +include ff-argon.lmp +############################# +#Atoms types - mass - charge# +############################# +#@ 1 atom types #!THIS LINE IS NECESSARY DON'T SPEND HOURS FINDING THAT OUT!# + +variable Ar equal 1 + +############# +#Atom Masses# +############# + +mass ${Ar} 39.903 +mass 1 39.903 + +########################### +#Pair Potentials - Tersoff# +########################### + +pair_style lj/cubic +pair_coeff * * 0.0102701 3.42 + + +velocity all create 10 2357 mom yes dist gaussian + +neighbor 1 bin + +timestep 0.1 + +fix lang all langevin/gjf 10 10 1 26488 vel vfull method 4 + +thermo 200 +run 5000 + +CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE + +Your simulation uses code contributions which should be cited: + +- Langevin GJF methods: doi:10.1007/s10955-024-03345-1 + +@Article{gronbech_jensen_2024, +title = {On the Definition of Velocity in Discrete-Time, Stochastic Langevin Simulations}, +volume = {191}, +number = {10}, +url = {https://doi.org/10.1007/s10955-024-03345-1}, +doi = {10.1007/s10955-024-03345-1}, +urldate = {2024-10-22}, +journal = {J. Stat. Phys.}, +author = {Gronbech-Jensen, Niels}, +year = {2024}, +pages = {137} +} + +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 +Neighbor list info ... + update: every = 1 steps, delay = 0 steps, check = yes + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 6.9407173 + ghost atom cutoff = 6.9407173 + binsize = 3.4703587, bins = 10 10 10 + 1 neighbor lists, perpetual/occasional/extra = 1 0 0 + (1) pair lj/cubic, perpetual + attributes: half, newton on + pair build: half/bin/newton + stencil: half/bin/3d + bin: standard +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 + 200 8.3950866 -55.088994 0 -54.15251 334.90536 + 400 8.6408464 -55.090811 0 -54.126912 335.23135 + 600 8.3101447 -55.121286 0 -54.194277 325.43222 + 800 8.5045003 -55.090513 0 -54.141824 335.05857 + 1000 8.7236378 -55.101455 0 -54.12832 331.96596 + 1200 8.7063561 -55.109371 0 -54.138164 331.62683 + 1400 8.7935957 -55.089763 0 -54.108824 336.89842 + 1600 8.454418 -55.105207 0 -54.162104 330.18927 + 1800 8.7989267 -55.142078 0 -54.160544 322.47021 + 2000 8.7823094 -55.153625 0 -54.173945 318.95028 + 2200 8.6201117 -55.11511 0 -54.153524 329.13488 + 2400 9.1165215 -55.161069 0 -54.144107 318.48524 + 2600 8.7636341 -55.142401 0 -54.164805 322.46493 + 2800 8.4876731 -55.111528 0 -54.164715 329.66127 + 3000 8.7005957 -55.149445 0 -54.178881 319.92878 + 3200 8.1711364 -55.137611 0 -54.226108 322.83713 + 3400 8.7172512 -55.143449 0 -54.171026 322.68918 + 3600 8.6262526 -55.1002 0 -54.137928 333.02737 + 3800 8.1680259 -55.166423 0 -54.255267 313.66684 + 4000 8.8340067 -55.121759 0 -54.136312 328.58235 + 4200 8.427926 -55.126903 0 -54.186755 324.95528 + 4400 8.6352614 -55.193826 0 -54.23055 307.14392 + 4600 8.7381405 -55.120503 0 -54.14575 327.73985 + 4800 8.3857194 -55.081944 0 -54.146505 337.38629 + 5000 8.1179517 -55.162247 0 -54.256677 314.50176 +Loop time of 2.08834 on 4 procs for 5000 steps with 864 atoms + +Performance: 20686.324 ns/day, 0.001 hours/ns, 2394.250 timesteps/s, 2.069 Matom-step/s +63.4% 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.53532 | 0.5439 | 0.54781 | 0.7 | 26.04 +Bond | 0.0006347 | 0.00066042 | 0.00068198 | 0.0 | 0.03 +Neigh | 0.10879 | 0.11194 | 0.118 | 1.1 | 5.36 +Comm | 0.94935 | 0.96017 | 0.97155 | 0.8 | 45.98 +Output | 0.0060135 | 0.006061 | 0.0061217 | 0.1 | 0.29 +Modify | 0.2483 | 0.24911 | 0.25049 | 0.2 | 11.93 +Other | | 0.2165 | | | 10.37 + +Nlocal: 216 ave 216 max 216 min +Histogram: 4 0 0 0 0 0 0 0 0 0 +Nghost: 884.25 ave 892 max 875 min +Histogram: 1 1 0 0 0 0 0 0 0 2 +Neighs: 4535.5 ave 4737 max 4333 min +Histogram: 2 0 0 0 0 0 0 0 0 2 + +Total # of neighbors = 18142 +Ave neighs/atom = 20.997685 +Ave special neighs/atom = 0 +Neighbor list builds = 280 +Dangerous builds = 0 + + +Total wall time: 0:00:02 diff --git a/examples/gjf/log.2Apr25.gjf.vhalf.g++.1 b/examples/gjf/log.2Apr25.gjf.vhalf.g++.1 new file mode 100644 index 0000000000..fed8f271e5 --- /dev/null +++ b/examples/gjf/log.2Apr25.gjf.vhalf.g++.1 @@ -0,0 +1,152 @@ +LAMMPS (2 Apr 2025 - Development - 4dd8c66390-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 + +units metal +atom_style full + +boundary p p p +read_data argon.lmp +Reading data file ... + orthogonal box = (0 0 0) to (32.146 32.146 32.146) + 1 by 1 by 1 MPI processor grid + reading atoms ... + 864 atoms +Finding 1-2 1-3 1-4 neighbors ... + special bond factors lj: 0 0 0 + special bond factors coul: 0 0 0 + 0 = max # of 1-2 neighbors + 0 = max # of 1-3 neighbors + 0 = max # of 1-4 neighbors + 1 = max # of special neighbors + special bonds CPU = 0.000 seconds + read_data CPU = 0.008 seconds + +include ff-argon.lmp +############################# +#Atoms types - mass - charge# +############################# +#@ 1 atom types #!THIS LINE IS NECESSARY DON'T SPEND HOURS FINDING THAT OUT!# + +variable Ar equal 1 + +############# +#Atom Masses# +############# + +mass ${Ar} 39.903 +mass 1 39.903 + +########################### +#Pair Potentials - Tersoff# +########################### + +pair_style lj/cubic +pair_coeff * * 0.0102701 3.42 + + +velocity all create 10 2357 mom yes dist gaussian + +neighbor 1 bin + +timestep 0.1 + +fix lang all langevin/gjf 10 10 1 26488 + +thermo 200 +run 5000 + +CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE + +Your simulation uses code contributions which should be cited: + +- Langevin GJF methods: doi:10.1007/s10955-024-03345-1 + +@Article{gronbech_jensen_2024, +title = {On the Definition of Velocity in Discrete-Time, Stochastic Langevin Simulations}, +volume = {191}, +number = {10}, +url = {https://doi.org/10.1007/s10955-024-03345-1}, +doi = {10.1007/s10955-024-03345-1}, +urldate = {2024-10-22}, +journal = {J. Stat. Phys.}, +author = {Gronbech-Jensen, Niels}, +year = {2024}, +pages = {137} +} + +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 +Neighbor list info ... + update: every = 1 steps, delay = 0 steps, check = yes + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 6.9407173 + ghost atom cutoff = 6.9407173 + binsize = 3.4703587, bins = 10 10 10 + 1 neighbor lists, perpetual/occasional/extra = 1 0 0 + (1) pair lj/cubic, perpetual + attributes: half, newton on + pair build: half/bin/newton + stencil: half/bin/3d + bin: standard +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 + 200 9.8808461 -55.073599 0 -53.971376 345.62224 + 400 9.8712816 -55.072241 0 -53.971084 345.11909 + 600 10.528988 -55.066736 0 -53.892211 350.60112 + 800 10.167171 -55.148312 0 -54.014149 324.73698 + 1000 10.029026 -55.125705 0 -54.006952 331.93785 + 1200 9.8898479 -55.086642 0 -53.983414 342.04309 + 1400 10.610014 -55.076793 0 -53.89323 346.34338 + 1600 9.9402137 -55.111688 0 -54.002842 335.04779 + 1800 9.8078801 -55.140475 0 -54.046391 325.88652 + 2000 10.472791 -55.06102 0 -53.892765 349.97306 + 2200 9.877248 -55.191201 0 -54.089379 312.77421 + 2400 9.9739487 -55.108904 0 -53.996295 335.9089 + 2600 10.131803 -55.149444 0 -54.019226 325.44115 + 2800 9.6980127 -55.118395 0 -54.036568 331.2097 + 3000 9.7193425 -55.149785 0 -54.065577 323.32384 + 3200 10.27638 -55.083302 0 -53.936957 342.56458 + 3400 9.9253941 -55.082368 0 -53.975175 342.28594 + 3600 10.665862 -55.056774 0 -53.866981 352.03551 + 3800 10.011077 -55.084664 0 -53.967913 341.45122 + 4000 9.4182671 -55.128803 0 -54.078181 327.81846 + 4200 10.02466 -55.106046 0 -53.98778 336.56944 + 4400 9.3721033 -55.146068 0 -54.100596 322.38199 + 4600 9.5485537 -55.118577 0 -54.053421 332.04274 + 4800 10.039726 -55.074068 0 -53.954122 344.76817 + 5000 9.7731898 -55.150518 0 -54.060304 322.94195 +Loop time of 2.28614 on 1 procs for 5000 steps with 864 atoms + +Performance: 18896.448 ns/day, 0.001 hours/ns, 2187.089 timesteps/s, 1.890 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.2918 | 1.2918 | 1.2918 | 0.0 | 56.51 +Bond | 0.00048345 | 0.00048345 | 0.00048345 | 0.0 | 0.02 +Neigh | 0.2776 | 0.2776 | 0.2776 | 0.0 | 12.14 +Comm | 0.055375 | 0.055375 | 0.055375 | 0.0 | 2.42 +Output | 0.00054609 | 0.00054609 | 0.00054609 | 0.0 | 0.02 +Modify | 0.63625 | 0.63625 | 0.63625 | 0.0 | 27.83 +Other | | 0.02408 | | | 1.05 + +Nlocal: 864 ave 864 max 864 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Nghost: 1593 ave 1593 max 1593 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Neighs: 18143 ave 18143 max 18143 min +Histogram: 1 0 0 0 0 0 0 0 0 0 + +Total # of neighbors = 18143 +Ave neighs/atom = 20.998843 +Ave special neighs/atom = 0 +Neighbor list builds = 258 +Dangerous builds = 0 + + +Total wall time: 0:00:02 diff --git a/examples/gjf/log.2Apr25.gjf.vhalf.g++.4 b/examples/gjf/log.2Apr25.gjf.vhalf.g++.4 new file mode 100644 index 0000000000..aa90fb779b --- /dev/null +++ b/examples/gjf/log.2Apr25.gjf.vhalf.g++.4 @@ -0,0 +1,152 @@ +LAMMPS (2 Apr 2025 - Development - 4dd8c66390-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 + +units metal +atom_style full + +boundary p p p +read_data argon.lmp +Reading data file ... + orthogonal box = (0 0 0) to (32.146 32.146 32.146) + 1 by 2 by 2 MPI processor grid + reading atoms ... + 864 atoms +Finding 1-2 1-3 1-4 neighbors ... + special bond factors lj: 0 0 0 + special bond factors coul: 0 0 0 + 0 = max # of 1-2 neighbors + 0 = max # of 1-3 neighbors + 0 = max # of 1-4 neighbors + 1 = max # of special neighbors + special bonds CPU = 0.002 seconds + read_data CPU = 0.014 seconds + +include ff-argon.lmp +############################# +#Atoms types - mass - charge# +############################# +#@ 1 atom types #!THIS LINE IS NECESSARY DON'T SPEND HOURS FINDING THAT OUT!# + +variable Ar equal 1 + +############# +#Atom Masses# +############# + +mass ${Ar} 39.903 +mass 1 39.903 + +########################### +#Pair Potentials - Tersoff# +########################### + +pair_style lj/cubic +pair_coeff * * 0.0102701 3.42 + + +velocity all create 10 2357 mom yes dist gaussian + +neighbor 1 bin + +timestep 0.1 + +fix lang all langevin/gjf 10 10 1 26488 + +thermo 200 +run 5000 + +CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE + +Your simulation uses code contributions which should be cited: + +- Langevin GJF methods: doi:10.1007/s10955-024-03345-1 + +@Article{gronbech_jensen_2024, +title = {On the Definition of Velocity in Discrete-Time, Stochastic Langevin Simulations}, +volume = {191}, +number = {10}, +url = {https://doi.org/10.1007/s10955-024-03345-1}, +doi = {10.1007/s10955-024-03345-1}, +urldate = {2024-10-22}, +journal = {J. Stat. Phys.}, +author = {Gronbech-Jensen, Niels}, +year = {2024}, +pages = {137} +} + +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 +Neighbor list info ... + update: every = 1 steps, delay = 0 steps, check = yes + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 6.9407173 + ghost atom cutoff = 6.9407173 + binsize = 3.4703587, bins = 10 10 10 + 1 neighbor lists, perpetual/occasional/extra = 1 0 0 + (1) pair lj/cubic, perpetual + attributes: half, newton on + pair build: half/bin/newton + stencil: half/bin/3d + bin: standard +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 + 200 9.8046819 -55.12733 0 -54.033603 329.70683 + 400 10.174622 -55.092357 0 -53.957363 340.4935 + 600 9.6157634 -55.174205 0 -54.101552 316.68047 + 800 9.9617862 -55.097525 0 -53.986273 339.257 + 1000 10.373198 -55.116484 0 -53.959338 335.09796 + 1200 10.064779 -55.17366 0 -54.050919 318.66487 + 1400 10.562182 -55.067856 0 -53.889628 349.23452 + 1600 9.7696935 -55.081542 0 -53.991718 342.92593 + 1800 10.454466 -55.130637 0 -53.964426 330.88658 + 2000 10.253701 -55.154093 0 -54.010277 323.15259 + 2200 9.6688957 -55.143479 0 -54.064899 325.16815 + 2400 10.059787 -55.134941 0 -54.012756 329.83534 + 2600 9.9050905 -55.096231 0 -53.991303 338.94947 + 2800 9.663551 -55.130202 0 -54.052218 328.77571 + 3000 9.950484 -55.123447 0 -54.013455 332.00143 + 3200 9.7210637 -55.120005 0 -54.035606 331.39812 + 3400 9.6457139 -55.080953 0 -54.004959 341.95838 + 3600 10.42249 -55.102379 0 -53.939734 339.66808 + 3800 10.276893 -55.126271 0 -53.979868 332.40943 + 4000 10.135481 -55.091551 0 -53.960922 340.60675 + 4200 10.129209 -55.084189 0 -53.95426 343.39315 + 4400 10.006953 -55.120704 0 -54.004413 331.57121 + 4600 10.497483 -55.144898 0 -53.973888 327.22996 + 4800 9.9230954 -55.126028 0 -54.019091 330.70489 + 5000 9.3726166 -55.076514 0 -54.030985 342.43571 +Loop time of 2.0887 on 4 procs for 5000 steps with 864 atoms + +Performance: 20682.713 ns/day, 0.001 hours/ns, 2393.833 timesteps/s, 2.068 Matom-step/s +62.5% 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.53905 | 0.54518 | 0.5484 | 0.5 | 26.10 +Bond | 0.00062355 | 0.00066183 | 0.0007207 | 0.0 | 0.03 +Neigh | 0.10715 | 0.10937 | 0.11212 | 0.5 | 5.24 +Comm | 0.94637 | 0.95041 | 0.95905 | 0.5 | 45.50 +Output | 0.0061059 | 0.0061286 | 0.0061661 | 0.0 | 0.29 +Modify | 0.26086 | 0.26355 | 0.26979 | 0.7 | 12.62 +Other | | 0.2134 | | | 10.22 + +Nlocal: 216 ave 216 max 216 min +Histogram: 4 0 0 0 0 0 0 0 0 0 +Nghost: 884.75 ave 885 max 884 min +Histogram: 1 0 0 0 0 0 0 0 0 3 +Neighs: 4536 ave 4737 max 4335 min +Histogram: 2 0 0 0 0 0 0 0 0 2 + +Total # of neighbors = 18144 +Ave neighs/atom = 21 +Ave special neighs/atom = 0 +Neighbor list builds = 273 +Dangerous builds = 0 + + +Total wall time: 0:00:02 diff --git a/src/EXTRA-FIX/fix_langevin_gjf.cpp b/src/EXTRA-FIX/fix_langevin_gjf.cpp index 59d5cff1c5..95d67fb15f 100644 --- a/src/EXTRA-FIX/fix_langevin_gjf.cpp +++ b/src/EXTRA-FIX/fix_langevin_gjf.cpp @@ -15,17 +15,16 @@ Contributing authors: Tim Linke & Niels Gronbech-Jensen (UC Davis) ------------------------------------------------------------------------- */ -#include "fix_langevin.h" +#include "fix_langevin_gjf.h" #include "atom.h" -#include "atom_vec_ellipsoid.h" +#include "citeme.h" #include "comm.h" #include "compute.h" #include "error.h" #include "force.h" #include "group.h" #include "input.h" -#include "math_extra.h" #include "memory.h" #include "modify.h" #include "random_mars.h" @@ -42,21 +41,33 @@ using namespace FixConst; enum { NOBIAS, BIAS }; enum { CONSTANT, EQUAL, ATOM }; +static const char cite_langevin_gjf[] = + "Langevin GJF methods: doi:10.1007/s10955-024-03345-1\n\n" + "@Article{gronbech_jensen_2024,\n" + "title = {On the Definition of Velocity in Discrete-Time, Stochastic Langevin Simulations},\n" + "volume = {191},\n" + "number = {10},\n" + "url = {https://doi.org/10.1007/s10955-024-03345-1},\n" + "doi = {10.1007/s10955-024-03345-1},\n" + "urldate = {2024-10-22},\n" + "journal = {J. Stat. Phys.},\n" + "author = {Gronbech-Jensen, Niels},\n" + "year = {2024},\n" + "pages = {137}\n" + "}\n\n"; + + /* ---------------------------------------------------------------------- */ FixLangevinGJF::FixLangevinGJF(LAMMPS *lmp, int narg, char **arg) : - Fix(lmp, narg, arg), gjfflag(0), - tstr(nullptr), flangevin(nullptr), tforce(nullptr), lv(nullptr), id_temp(nullptr), random(nullptr) + Fix(lmp, narg, arg), tstr(nullptr), tforce(nullptr), lv(nullptr), id_temp(nullptr), random(nullptr) { - if (narg < 8) error->all(FLERR, "Illegal fix langevin/gjf command"); + if (lmp->citeme) lmp->citeme->add(cite_langevin_gjf); + if (narg < 7) error->all(FLERR, "Illegal fix langevin/gjf command"); time_integrate = 1; restart_peratom = 1; - // dynamic_group_allow = 1; - // scalar_flag = 1; - // global_freq = 1; - // extscalar = 1; - // ecouple_flag = 1; + global_freq = 1; nevery = 1; if (utils::strmatch(arg[3], "^v_")) { @@ -75,15 +86,17 @@ FixLangevinGJF::FixLangevinGJF(LAMMPS *lmp, int narg, char **arg) : if (seed <= 0) error->all(FLERR, "Illegal fix langevin/gjf command"); // initialize Marsaglia RNG with processor-unique seed - random = new RanMars(lmp, seed + comm->me); - int GJmethods = 8 // number of currently implemented GJ methods + int GJmethods = 8; // number of currently implemented GJ methods + maxatom = 0; // optional args + // per default, use half step and GJ-I osflag = 0; - GJmethod = 0; + GJmethod = 1; + lv_allocated = 0; int iarg = 7; while (iarg < narg) { @@ -120,7 +133,7 @@ FixLangevinGJF::FixLangevinGJF(LAMMPS *lmp, int narg, char **arg) : FixLangevinGJF::grow_arrays(atom->nmax); atom->add_callback(Atom::GROW); - // initialize lv to zero + // initialize lv to onsite velocity int nlocal = atom->nlocal; for (int i = 0; i < nlocal; i++) { lv[i][0] = 0.0; @@ -181,14 +194,8 @@ void FixLangevinGJF::init() error->all(FLERR, "Variable {} for fix langevin/gjf is invalid style", tstr); } - if (temperature && temperature->tempbias) - tbiasflag = BIAS; - else - tbiasflag = NOBIAS; - if (utils::strmatch(update->integrate_style, "^respa")) { - nlevels_respa = (static_cast(update->integrate))->nlevels; - error->all(FLERR, "Fix langevin gjf and run style respa are not compatible"); + error->all(FLERR, "Fix langevin/gjf and run style respa are not compatible"); } // Complete set of thermostats is given in Gronbech-Jensen, Molecular Physics, 118 (2020) @@ -215,7 +222,7 @@ void FixLangevinGJF::init() gjfc2 = 1; // TODO: correct this break; case 8: // provided in Gronbech-Jensen (2024) - gjfc2 = sqrt( (update->dt / t_period)*(update->dt / t_period) + 1.0 ) - update->dt / t_period; + gjfc2 = sqrt( (update->dt / t_period) * (update->dt / t_period) + 1.0 ) - update->dt / t_period; break; case 0: gjfc2 = 0.0; @@ -239,7 +246,7 @@ void FixLangevinGJF::init() void FixLangevinGJF::initial_integrate(int /* vflag */) { - // This function provides the integration of the GJ formulation 24a-e + // This function provides the integration of the GJ formulation 24 a-e double **x = atom->x; double **v = atom->v; double **f = atom->f; @@ -258,13 +265,13 @@ void FixLangevinGJF::initial_integrate(int /* vflag */) double dtf = 0.5 * dt * ftm2v; double dtfm; - double c1sq = sqrt(gjfc1); - double c3sq = sqrt(gjfc3); + double c1sqrt = sqrt(gjfc1); + double c3sqrt = sqrt(gjfc3); double csq = sqrt(gjfc3 / gjfc1); double m, beta; // If user elected vhalf, v needs to be reassigned to onsite velocity for integration - if (!osflag) { + if (!osflag && lv_allocated) { for (int i = 0; i < nlocal; i++) if (mask[i] & groupbit) { // lv is Eq. 24f from previous time step @@ -275,8 +282,6 @@ void FixLangevinGJF::initial_integrate(int /* vflag */) } compute_target(); - - if (tbiasflag == BIAS) temperature->compute_scalar(); for (int i = 0; i < nlocal; i++) { if (mask[i] & groupbit) { @@ -284,10 +289,10 @@ void FixLangevinGJF::initial_integrate(int /* vflag */) if (tstyle == ATOM) tsqrt = sqrt(tforce[i]); if (rmass) { m = rmass[i]; - beta = tsqrt * sqrt(2.0*dt*rmass[i]*boltz/t_period/mvv2e) / ftm2v; + beta = tsqrt * sqrt(2.0*dt*m*boltz/t_period/mvv2e) / ftm2v; } else { m = mass[type[i]]; - beta = tsqrt * sqrt(2.0*dt*atom->mass[i]*boltz/t_period/mvv2e) / ftm2v; + beta = tsqrt * sqrt(2.0*dt*m*boltz/t_period/mvv2e) / ftm2v; } fran[0] = beta*random->gaussian(); @@ -304,24 +309,14 @@ void FixLangevinGJF::initial_integrate(int /* vflag */) x[i][2] += 0.5 * csq * dt * v[i][2]; // Calculate Eq. 24c: - if (tbiasflag == BIAS) - temperature->remove_bias(i,v[i]); lv[i][0] = c1sqrt*v[i][0] + ftm2v * (c3sqrt / (2.0 * m)) * fran[0]; lv[i][1] = c1sqrt*v[i][1] + ftm2v * (c3sqrt / (2.0 * m)) * fran[1]; lv[i][2] = c1sqrt*v[i][2] + ftm2v * (c3sqrt / (2.0 * m)) * fran[2]; - if (tbiasflag == BIAS) - temperature->restore_bias(i,v[i]); - if (tbiasflag == BIAS) - temperature->restore_bias(i,lv[i]); - // Calculate Eq. 24d - if (tbiasflag == BIAS) temperature->remove_bias(i, v[i]); - v[i][0] = (gjfc2 / c1sqrt) * lv[i][0] + ftm2v * csq * (0.5 / m) * fran[0]; v[i][1] = (gjfc2 / c1sqrt) * lv[i][1] + ftm2v * csq * (0.5 / m) * fran[1]; v[i][2] = (gjfc2 / c1sqrt) * lv[i][2] + ftm2v * csq * (0.5 / m) * fran[2]; - if (tbiasflag == BIAS) temperature->restore_bias(i, v[i]); // Calculate Eq. 24e. Final integrator then calculates Eq. 24f after force update. x[i][0] += 0.5 * csq * dt * v[i][0]; @@ -337,9 +332,9 @@ void FixLangevinGJF::final_integrate() double dt = update->dt; double ftm2v = force->ftm2v; double dtf = 0.5 * dt * ftm2v; + double csq = sqrt(gjfc3 / gjfc1); // update v of atoms in group - double **v = atom->v; double **f = atom->f; double *rmass = atom->rmass; @@ -367,6 +362,8 @@ void FixLangevinGJF::final_integrate() v[i][2] += csq * dtfm * f[i][2]; } } + + lv_allocated = 1; } /* ---------------------------------------------------------------------- @@ -395,10 +392,10 @@ void FixLangevinGJF::compute_target() error->one(FLERR, "Fix langevin/gjf variable returned negative temperature"); tsqrt = sqrt(t_target); } else { - if (atom->nmax > maxatom2) { - maxatom2 = atom->nmax; + if (atom->nmax > maxatom) { + maxatom = atom->nmax; memory->destroy(tforce); - memory->create(tforce,maxatom2,"langevin:tforce"); + memory->create(tforce,maxatom,"langevin_gjf:tforce"); } input->variable->compute_atom(tvar,igroup,tforce,1,0); for (int i = 0; i < nlocal; i++) diff --git a/src/EXTRA-FIX/fix_langevin_gjf.h b/src/EXTRA-FIX/fix_langevin_gjf.h index df6b80e1b7..4b65051cf5 100644 --- a/src/EXTRA-FIX/fix_langevin_gjf.h +++ b/src/EXTRA-FIX/fix_langevin_gjf.h @@ -13,12 +13,12 @@ #ifdef FIX_CLASS // clang-format off -FixStyle(langevin,FixLangevin); +FixStyle(langevin/gjf,FixLangevinGJF); // clang-format on #else -#ifndef LMP_FIX_LANGEVIN_H -#define LMP_FIX_LANGEVIN_H +#ifndef LMP_FIX_LANGEVINGJF_H +#define LMP_FIX_LANGEVINGJF_H #include "fix.h" @@ -30,7 +30,6 @@ class FixLangevinGJF : public Fix { ~FixLangevinGJF() override; int setmask() override; void init() override; - void setup(int) override; void initial_integrate(int) override; void final_integrate() override; void end_of_step() override; @@ -45,10 +44,8 @@ class FixLangevinGJF : public Fix { int unpack_exchange(int, double *) override; protected: - int osflag, GJmethod; - double t_start, t_stop, t_period, t_target; - double *gfactor2; - double tsqrt; + int osflag, GJmethod, maxatom, lv_allocated; + double t_start, t_stop, t_period, t_target, tsqrt; double gjfc1, gjfc2, gjfc3; int tstyle, tvar; char *tstr; @@ -59,7 +56,6 @@ class FixLangevinGJF : public Fix { char *id_temp; class Compute *temperature; - int nlevels_respa; class RanMars *random; int seed;