Compare commits

...

19 Commits

Author SHA1 Message Date
04f5eadcf1 added LAST option to dump_modify thresh, more restart info printed out to screen 2016-10-11 12:39:52 -06:00
e70d530c46 Merge pull request #203 from rbberger/txt2rst-external-link-fix
txt2rst external link fix
2016-10-10 13:59:27 -06:00
ed8cc82713 Merge pull request #211 from akohlmey/add-respa-to-fix-flow-gauss
Add respa support to fix flow/gauss
2016-10-10 13:59:01 -06:00
27dac02466 Merge pull request #209 from akohlmey/static-double-deallocation-workaround
workaround for double free issue when using USER-COLVARS with with lammps python wrapper and python package
2016-10-10 13:58:16 -06:00
467bcad0a0 Merge pull request #204 from rbberger/fix-user-omp
Migrate changes from GRANULAR to USER-OMP
2016-10-10 13:57:37 -06:00
144e6a8091 whitespace cleanup 2016-10-10 09:40:09 -04:00
72ac073412 edited documentation
(cherry picked from commit eff14c74b0)
2016-10-10 09:38:54 -04:00
49c45ab03b edited documentation
(cherry picked from commit fd560889c3)
2016-10-10 09:38:53 -04:00
c2cd439944 first draft of documentation for respa
(cherry picked from commit d7dcbcfbd9)
2016-10-10 09:38:53 -04:00
e96ebb29bc adjusted default respa level to be outermost
(cherry picked from commit 7fc4d46a41)
2016-10-10 09:38:53 -04:00
3ce178d43f now understand how respa works in lammps
(cherry picked from commit c829027e83)
2016-10-10 09:38:52 -04:00
23781d6ec9 added respa to fix_flow_gauss, not fully understood yet
(cherry picked from commit 8d9737b04d)
2016-10-10 09:38:52 -04:00
fca6d721c0 completed synchronization with non-threaded version 2016-10-10 09:16:21 -04:00
dd192ca7ea whitespace cleanup 2016-10-10 09:15:42 -04:00
683689c808 revert to previous style conventions for size_t constants 2016-10-08 11:00:23 -04:00
e01e90eb96 workaround for double free issue when using USER-COLVARS with lammps code loaded as shared library into a standalone executable 2016-10-08 10:45:22 -04:00
615a2da044 Migrate changes from GRANULAR to USER-OMP 2016-10-06 21:48:06 -04:00
7f3a7c5cbe Fix broken link 2016-10-06 20:33:24 -04:00
e78b4267b7 Fix issue with external links containing anchors 2016-10-06 20:29:07 -04:00
87 changed files with 678 additions and 401 deletions

View File

@ -1,4 +1,4 @@
LAMMPS (15 Feb 2016)
LAMMPS (6 Oct 2016)
# FENE beadspring benchmark
units lj
@ -43,25 +43,25 @@ Neighbor list info ...
master list distance cutoff = 1.52
ghost atom cutoff = 1.52
binsize = 0.76 -> bins = 45 45 45
Memory usage per processor = 11.5189 Mbytes
Memory usage per processor = 12.0423 Mbytes
Step Temp E_pair E_mol TotEng Press
0 0.97029772 0.44484087 20.494523 22.394765 4.6721833
100 0.9729966 0.4361122 20.507698 22.40326 4.6548819
Loop time of 0.978585 on 1 procs for 100 steps with 32000 atoms
Loop time of 0.977647 on 1 procs for 100 steps with 32000 atoms
Performance: 105948.895 tau/day, 102.188 timesteps/s
100.0% CPU use with 1 MPI tasks x no OpenMP threads
Performance: 106050.541 tau/day, 102.286 timesteps/s
99.9% CPU use with 1 MPI tasks x no OpenMP threads
MPI task timing breakdown:
Section | min time | avg time | max time |%varavg| %total
---------------------------------------------------------------
Pair | 0.19562 | 0.19562 | 0.19562 | 0.0 | 19.99
Bond | 0.087475 | 0.087475 | 0.087475 | 0.0 | 8.94
Neigh | 0.44861 | 0.44861 | 0.44861 | 0.0 | 45.84
Comm | 0.032932 | 0.032932 | 0.032932 | 0.0 | 3.37
Output | 0.00010395 | 0.00010395 | 0.00010395 | 0.0 | 0.01
Modify | 0.19413 | 0.19413 | 0.19413 | 0.0 | 19.84
Other | | 0.01972 | | | 2.02
Pair | 0.19421 | 0.19421 | 0.19421 | 0.0 | 19.86
Bond | 0.08741 | 0.08741 | 0.08741 | 0.0 | 8.94
Neigh | 0.45791 | 0.45791 | 0.45791 | 0.0 | 46.84
Comm | 0.032649 | 0.032649 | 0.032649 | 0.0 | 3.34
Output | 0.00012207 | 0.00012207 | 0.00012207 | 0.0 | 0.01
Modify | 0.18071 | 0.18071 | 0.18071 | 0.0 | 18.48
Other | | 0.02464 | | | 2.52
Nlocal: 32000 ave 32000 max 32000 min
Histogram: 1 0 0 0 0 0 0 0 0 0

View File

@ -1,4 +1,4 @@
LAMMPS (15 Feb 2016)
LAMMPS (6 Oct 2016)
# FENE beadspring benchmark
units lj
@ -43,25 +43,25 @@ Neighbor list info ...
master list distance cutoff = 1.52
ghost atom cutoff = 1.52
binsize = 0.76 -> bins = 45 45 45
Memory usage per processor = 3.91518 Mbytes
Memory usage per processor = 4.14663 Mbytes
Step Temp E_pair E_mol TotEng Press
0 0.97029772 0.44484087 20.494523 22.394765 4.6721833
100 0.97145835 0.43803883 20.502691 22.397872 4.626988
Loop time of 0.271187 on 4 procs for 100 steps with 32000 atoms
Loop time of 0.269205 on 4 procs for 100 steps with 32000 atoms
Performance: 382319.453 tau/day, 368.749 timesteps/s
99.6% CPU use with 4 MPI tasks x no OpenMP threads
Performance: 385133.446 tau/day, 371.464 timesteps/s
99.8% CPU use with 4 MPI tasks x no OpenMP threads
MPI task timing breakdown:
Section | min time | avg time | max time |%varavg| %total
---------------------------------------------------------------
Pair | 0.048621 | 0.050076 | 0.051229 | 0.4 | 18.47
Bond | 0.022254 | 0.022942 | 0.023567 | 0.3 | 8.46
Neigh | 0.11873 | 0.11881 | 0.11887 | 0.0 | 43.81
Comm | 0.019066 | 0.021357 | 0.024297 | 1.3 | 7.88
Output | 5.0068e-05 | 5.5015e-05 | 6.1035e-05 | 0.1 | 0.02
Modify | 0.048737 | 0.050198 | 0.051231 | 0.4 | 18.51
Other | | 0.007751 | | | 2.86
Pair | 0.049383 | 0.049756 | 0.049988 | 0.1 | 18.48
Bond | 0.022701 | 0.022813 | 0.022872 | 0.0 | 8.47
Neigh | 0.11982 | 0.12002 | 0.12018 | 0.0 | 44.58
Comm | 0.020274 | 0.021077 | 0.022348 | 0.5 | 7.83
Output | 5.3167e-05 | 5.6148e-05 | 6.3181e-05 | 0.1 | 0.02
Modify | 0.046276 | 0.046809 | 0.047016 | 0.1 | 17.39
Other | | 0.008669 | | | 3.22
Nlocal: 8000 ave 8030 max 7974 min
Histogram: 1 0 0 1 0 1 0 0 0 1

View File

@ -1,4 +1,4 @@
LAMMPS (15 Feb 2016)
LAMMPS (6 Oct 2016)
# FENE beadspring benchmark
variable x index 1
@ -59,25 +59,25 @@ Neighbor list info ...
master list distance cutoff = 1.52
ghost atom cutoff = 1.52
binsize = 0.76 -> bins = 89 89 45
Memory usage per processor = 12.8735 Mbytes
Memory usage per processor = 13.2993 Mbytes
Step Temp E_pair E_mol TotEng Press
0 0.97027498 0.44484087 20.494523 22.394765 4.6721833
100 0.97682955 0.44239968 20.500229 22.407862 4.6527025
Loop time of 1.20889 on 4 procs for 100 steps with 128000 atoms
Loop time of 1.14845 on 4 procs for 100 steps with 128000 atoms
Performance: 85764.410 tau/day, 82.720 timesteps/s
99.8% CPU use with 4 MPI tasks x no OpenMP threads
Performance: 90277.919 tau/day, 87.074 timesteps/s
99.9% CPU use with 4 MPI tasks x no OpenMP threads
MPI task timing breakdown:
Section | min time | avg time | max time |%varavg| %total
---------------------------------------------------------------
Pair | 0.21738 | 0.23306 | 0.23926 | 1.9 | 19.28
Bond | 0.094536 | 0.10196 | 0.10534 | 1.4 | 8.43
Neigh | 0.52311 | 0.52392 | 0.52519 | 0.1 | 43.34
Comm | 0.090161 | 0.10022 | 0.12557 | 4.7 | 8.29
Output | 0.00012207 | 0.00017327 | 0.00019598 | 0.2 | 0.01
Modify | 0.19662 | 0.20262 | 0.20672 | 0.8 | 16.76
Other | | 0.04694 | | | 3.88
Pair | 0.2203 | 0.22207 | 0.22386 | 0.3 | 19.34
Bond | 0.094861 | 0.095302 | 0.095988 | 0.1 | 8.30
Neigh | 0.52127 | 0.5216 | 0.52189 | 0.0 | 45.42
Comm | 0.079585 | 0.082159 | 0.084366 | 0.7 | 7.15
Output | 0.00013304 | 0.00015306 | 0.00018501 | 0.2 | 0.01
Modify | 0.18351 | 0.18419 | 0.1856 | 0.2 | 16.04
Other | | 0.04298 | | | 3.74
Nlocal: 32000 ave 32015 max 31983 min
Histogram: 1 0 1 0 0 0 0 0 1 1

View File

@ -1,4 +1,4 @@
LAMMPS (15 Feb 2016)
LAMMPS (6 Oct 2016)
# LAMMPS benchmark of granular flow
# chute flow of 32000 atoms with frozen base at 26 degrees
@ -47,24 +47,24 @@ Neighbor list info ...
master list distance cutoff = 1.1
ghost atom cutoff = 1.1
binsize = 0.55 -> bins = 73 37 68
Memory usage per processor = 15.567 Mbytes
Step Atoms KinEng 1 Volume
Memory usage per processor = 16.0904 Mbytes
Step Atoms KinEng c_1 Volume
0 32000 784139.13 1601.1263 29833.783
100 32000 784292.08 1571.0968 29834.707
Loop time of 0.550482 on 1 procs for 100 steps with 32000 atoms
Loop time of 0.534174 on 1 procs for 100 steps with 32000 atoms
Performance: 1569.534 tau/day, 181.659 timesteps/s
100.1% CPU use with 1 MPI tasks x no OpenMP threads
Performance: 1617.451 tau/day, 187.205 timesteps/s
99.8% CPU use with 1 MPI tasks x no OpenMP threads
MPI task timing breakdown:
Section | min time | avg time | max time |%varavg| %total
---------------------------------------------------------------
Pair | 0.33849 | 0.33849 | 0.33849 | 0.0 | 61.49
Neigh | 0.040353 | 0.040353 | 0.040353 | 0.0 | 7.33
Comm | 0.018023 | 0.018023 | 0.018023 | 0.0 | 3.27
Output | 0.00020385 | 0.00020385 | 0.00020385 | 0.0 | 0.04
Modify | 0.13155 | 0.13155 | 0.13155 | 0.0 | 23.90
Other | | 0.02186 | | | 3.97
Pair | 0.33346 | 0.33346 | 0.33346 | 0.0 | 62.43
Neigh | 0.043902 | 0.043902 | 0.043902 | 0.0 | 8.22
Comm | 0.018391 | 0.018391 | 0.018391 | 0.0 | 3.44
Output | 0.00022411 | 0.00022411 | 0.00022411 | 0.0 | 0.04
Modify | 0.11666 | 0.11666 | 0.11666 | 0.0 | 21.84
Other | | 0.02153 | | | 4.03
Nlocal: 32000 ave 32000 max 32000 min
Histogram: 1 0 0 0 0 0 0 0 0 0

View File

@ -1,4 +1,4 @@
LAMMPS (15 Feb 2016)
LAMMPS (6 Oct 2016)
# LAMMPS benchmark of granular flow
# chute flow of 32000 atoms with frozen base at 26 degrees
@ -47,24 +47,24 @@ Neighbor list info ...
master list distance cutoff = 1.1
ghost atom cutoff = 1.1
binsize = 0.55 -> bins = 73 37 68
Memory usage per processor = 6.81783 Mbytes
Step Atoms KinEng 1 Volume
Memory usage per processor = 7.04927 Mbytes
Step Atoms KinEng c_1 Volume
0 32000 784139.13 1601.1263 29833.783
100 32000 784292.08 1571.0968 29834.707
Loop time of 0.13141 on 4 procs for 100 steps with 32000 atoms
Loop time of 0.171815 on 4 procs for 100 steps with 32000 atoms
Performance: 6574.833 tau/day, 760.976 timesteps/s
99.3% CPU use with 4 MPI tasks x no OpenMP threads
Performance: 5028.653 tau/day, 582.020 timesteps/s
99.7% CPU use with 4 MPI tasks x no OpenMP threads
MPI task timing breakdown:
Section | min time | avg time | max time |%varavg| %total
---------------------------------------------------------------
Pair | 0.062505 | 0.067 | 0.07152 | 1.5 | 50.99
Neigh | 0.010041 | 0.0101 | 0.010178 | 0.1 | 7.69
Comm | 0.012347 | 0.012895 | 0.013444 | 0.5 | 9.81
Output | 6.3896e-05 | 0.00010294 | 0.00014091 | 0.3 | 0.08
Modify | 0.031802 | 0.032348 | 0.032897 | 0.3 | 24.62
Other | | 0.008965 | | | 6.82
Pair | 0.093691 | 0.096898 | 0.10005 | 0.8 | 56.40
Neigh | 0.011976 | 0.012059 | 0.012146 | 0.1 | 7.02
Comm | 0.016384 | 0.017418 | 0.018465 | 0.8 | 10.14
Output | 7.7963e-05 | 0.00010747 | 0.00013304 | 0.2 | 0.06
Modify | 0.031744 | 0.031943 | 0.032167 | 0.1 | 18.59
Other | | 0.01339 | | | 7.79
Nlocal: 8000 ave 8008 max 7992 min
Histogram: 2 0 0 0 0 0 0 0 0 2

View File

@ -1,4 +1,4 @@
LAMMPS (15 Feb 2016)
LAMMPS (6 Oct 2016)
# LAMMPS benchmark of granular flow
# chute flow of 32000 atoms with frozen base at 26 degrees
@ -57,24 +57,24 @@ Neighbor list info ...
master list distance cutoff = 1.1
ghost atom cutoff = 1.1
binsize = 0.55 -> bins = 146 73 68
Memory usage per processor = 15.7007 Mbytes
Step Atoms KinEng 1 Volume
Memory usage per processor = 16.1265 Mbytes
Step Atoms KinEng c_1 Volume
0 128000 3136556.5 6404.5051 119335.13
100 128000 3137168.3 6284.3873 119338.83
Loop time of 0.906913 on 4 procs for 100 steps with 128000 atoms
Loop time of 0.832365 on 4 procs for 100 steps with 128000 atoms
Performance: 952.683 tau/day, 110.264 timesteps/s
99.7% CPU use with 4 MPI tasks x no OpenMP threads
Performance: 1038.006 tau/day, 120.140 timesteps/s
99.8% CPU use with 4 MPI tasks x no OpenMP threads
MPI task timing breakdown:
Section | min time | avg time | max time |%varavg| %total
---------------------------------------------------------------
Pair | 0.51454 | 0.53094 | 0.55381 | 2.0 | 58.54
Neigh | 0.042597 | 0.043726 | 0.045801 | 0.6 | 4.82
Comm | 0.063027 | 0.064657 | 0.067367 | 0.7 | 7.13
Output | 0.00024891 | 0.00059718 | 0.00086498 | 1.0 | 0.07
Modify | 0.16508 | 0.17656 | 0.1925 | 2.6 | 19.47
Other | | 0.09043 | | | 9.97
Pair | 0.5178 | 0.52208 | 0.52793 | 0.5 | 62.72
Neigh | 0.047003 | 0.047113 | 0.047224 | 0.0 | 5.66
Comm | 0.05233 | 0.052988 | 0.053722 | 0.2 | 6.37
Output | 0.00024986 | 0.00032717 | 0.00036693 | 0.3 | 0.04
Modify | 0.15517 | 0.15627 | 0.15808 | 0.3 | 18.77
Other | | 0.0536 | | | 6.44
Nlocal: 32000 ave 32000 max 32000 min
Histogram: 4 0 0 0 0 0 0 0 0 0
@ -87,4 +87,4 @@ Total # of neighbors = 460532
Ave neighs/atom = 3.59791
Neighbor list builds = 2
Dangerous builds = 0
Total wall time: 0:00:01
Total wall time: 0:00:00

View File

@ -1,4 +1,4 @@
LAMMPS (15 Feb 2016)
LAMMPS (6 Oct 2016)
# bulk Cu lattice
variable x index 1
@ -49,25 +49,25 @@ Neighbor list info ...
master list distance cutoff = 5.95
ghost atom cutoff = 5.95
binsize = 2.975 -> bins = 25 25 25
Memory usage per processor = 10.2238 Mbytes
Memory usage per processor = 11.2238 Mbytes
Step Temp E_pair E_mol TotEng Press
0 1600 -113280 0 -106662.09 18703.573
50 781.69049 -109873.35 0 -106640.13 52273.088
100 801.832 -109957.3 0 -106640.77 51322.821
Loop time of 5.90097 on 1 procs for 100 steps with 32000 atoms
Loop time of 5.96529 on 1 procs for 100 steps with 32000 atoms
Performance: 7.321 ns/day, 3.278 hours/ns, 16.946 timesteps/s
Performance: 7.242 ns/day, 3.314 hours/ns, 16.764 timesteps/s
99.9% CPU use with 1 MPI tasks x no OpenMP threads
MPI task timing breakdown:
Section | min time | avg time | max time |%varavg| %total
---------------------------------------------------------------
Pair | 5.2121 | 5.2121 | 5.2121 | 0.0 | 88.33
Neigh | 0.58212 | 0.58212 | 0.58212 | 0.0 | 9.86
Comm | 0.030392 | 0.030392 | 0.030392 | 0.0 | 0.52
Output | 0.00023389 | 0.00023389 | 0.00023389 | 0.0 | 0.00
Modify | 0.060871 | 0.060871 | 0.060871 | 0.0 | 1.03
Other | | 0.01527 | | | 0.26
Pair | 5.2743 | 5.2743 | 5.2743 | 0.0 | 88.42
Neigh | 0.59212 | 0.59212 | 0.59212 | 0.0 | 9.93
Comm | 0.030399 | 0.030399 | 0.030399 | 0.0 | 0.51
Output | 0.00026202 | 0.00026202 | 0.00026202 | 0.0 | 0.00
Modify | 0.050487 | 0.050487 | 0.050487 | 0.0 | 0.85
Other | | 0.01776 | | | 0.30
Nlocal: 32000 ave 32000 max 32000 min
Histogram: 1 0 0 0 0 0 0 0 0 0

View File

@ -1,4 +1,4 @@
LAMMPS (15 Feb 2016)
LAMMPS (6 Oct 2016)
# bulk Cu lattice
variable x index 1
@ -49,25 +49,25 @@ Neighbor list info ...
master list distance cutoff = 5.95
ghost atom cutoff = 5.95
binsize = 2.975 -> bins = 25 25 25
Memory usage per processor = 5.09629 Mbytes
Memory usage per processor = 5.59629 Mbytes
Step Temp E_pair E_mol TotEng Press
0 1600 -113280 0 -106662.09 18703.573
50 781.69049 -109873.35 0 -106640.13 52273.088
100 801.832 -109957.3 0 -106640.77 51322.821
Loop time of 1.58019 on 4 procs for 100 steps with 32000 atoms
Loop time of 1.64562 on 4 procs for 100 steps with 32000 atoms
Performance: 27.338 ns/day, 0.878 hours/ns, 63.284 timesteps/s
Performance: 26.252 ns/day, 0.914 hours/ns, 60.767 timesteps/s
99.8% CPU use with 4 MPI tasks x no OpenMP threads
MPI task timing breakdown:
Section | min time | avg time | max time |%varavg| %total
---------------------------------------------------------------
Pair | 1.3617 | 1.366 | 1.3723 | 0.4 | 86.45
Neigh | 0.15123 | 0.15232 | 0.15374 | 0.2 | 9.64
Comm | 0.033429 | 0.041275 | 0.047066 | 2.7 | 2.61
Output | 0.00011301 | 0.0001573 | 0.000211 | 0.3 | 0.01
Modify | 0.014694 | 0.015085 | 0.015421 | 0.2 | 0.95
Other | | 0.005342 | | | 0.34
Pair | 1.408 | 1.4175 | 1.4341 | 0.9 | 86.14
Neigh | 0.15512 | 0.15722 | 0.16112 | 0.6 | 9.55
Comm | 0.029105 | 0.049986 | 0.061822 | 5.8 | 3.04
Output | 0.00010991 | 0.00011539 | 0.00012302 | 0.0 | 0.01
Modify | 0.013383 | 0.013573 | 0.013883 | 0.2 | 0.82
Other | | 0.007264 | | | 0.44
Nlocal: 8000 ave 8008 max 7993 min
Histogram: 2 0 0 0 0 0 0 0 1 1

View File

@ -1,4 +1,4 @@
LAMMPS (15 Feb 2016)
LAMMPS (6 Oct 2016)
# bulk Cu lattice
variable x index 1
@ -49,25 +49,25 @@ Neighbor list info ...
master list distance cutoff = 5.95
ghost atom cutoff = 5.95
binsize = 2.975 -> bins = 49 49 25
Memory usage per processor = 10.1402 Mbytes
Memory usage per processor = 11.1402 Mbytes
Step Temp E_pair E_mol TotEng Press
0 1600 -453120 0 -426647.73 18704.012
50 779.50001 -439457.02 0 -426560.06 52355.276
100 797.97828 -439764.76 0 -426562.07 51474.74
Loop time of 6.46849 on 4 procs for 100 steps with 128000 atoms
Loop time of 6.60121 on 4 procs for 100 steps with 128000 atoms
Performance: 6.679 ns/day, 3.594 hours/ns, 15.460 timesteps/s
Performance: 6.544 ns/day, 3.667 hours/ns, 15.149 timesteps/s
99.9% CPU use with 4 MPI tasks x no OpenMP threads
MPI task timing breakdown:
Section | min time | avg time | max time |%varavg| %total
---------------------------------------------------------------
Pair | 5.581 | 5.5997 | 5.6265 | 0.8 | 86.57
Neigh | 0.65287 | 0.658 | 0.66374 | 0.5 | 10.17
Comm | 0.075706 | 0.11015 | 0.13655 | 7.2 | 1.70
Output | 0.00026488 | 0.00028312 | 0.00029302 | 0.1 | 0.00
Modify | 0.069607 | 0.072407 | 0.074555 | 0.7 | 1.12
Other | | 0.02794 | | | 0.43
Pair | 5.6676 | 5.7011 | 5.7469 | 1.3 | 86.36
Neigh | 0.66423 | 0.67119 | 0.68082 | 0.7 | 10.17
Comm | 0.079367 | 0.13668 | 0.1791 | 10.5 | 2.07
Output | 0.00026989 | 0.00028622 | 0.00031209 | 0.1 | 0.00
Modify | 0.060046 | 0.062203 | 0.065009 | 0.9 | 0.94
Other | | 0.02974 | | | 0.45
Nlocal: 32000 ave 32092 max 31914 min
Histogram: 1 0 0 1 0 1 0 0 0 1

View File

@ -1,4 +1,4 @@
LAMMPS (15 Feb 2016)
LAMMPS (6 Oct 2016)
# 3d Lennard-Jones melt
variable x index 1
@ -50,20 +50,20 @@ Memory usage per processor = 8.21387 Mbytes
Step Temp E_pair E_mol TotEng Press
0 1.44 -6.7733681 0 -4.6134356 -5.0197073
100 0.7574531 -5.7585055 0 -4.6223613 0.20726105
Loop time of 2.26309 on 1 procs for 100 steps with 32000 atoms
Loop time of 2.26185 on 1 procs for 100 steps with 32000 atoms
Performance: 19088.920 tau/day, 44.187 timesteps/s
Performance: 19099.377 tau/day, 44.212 timesteps/s
99.9% CPU use with 1 MPI tasks x no OpenMP threads
MPI task timing breakdown:
Section | min time | avg time | max time |%varavg| %total
---------------------------------------------------------------
Pair | 1.9341 | 1.9341 | 1.9341 | 0.0 | 85.46
Neigh | 0.2442 | 0.2442 | 0.2442 | 0.0 | 10.79
Comm | 0.024158 | 0.024158 | 0.024158 | 0.0 | 1.07
Output | 0.00011611 | 0.00011611 | 0.00011611 | 0.0 | 0.01
Modify | 0.053222 | 0.053222 | 0.053222 | 0.0 | 2.35
Other | | 0.007258 | | | 0.32
Pair | 1.9328 | 1.9328 | 1.9328 | 0.0 | 85.45
Neigh | 0.2558 | 0.2558 | 0.2558 | 0.0 | 11.31
Comm | 0.024061 | 0.024061 | 0.024061 | 0.0 | 1.06
Output | 0.00012612 | 0.00012612 | 0.00012612 | 0.0 | 0.01
Modify | 0.040887 | 0.040887 | 0.040887 | 0.0 | 1.81
Other | | 0.008214 | | | 0.36
Nlocal: 32000 ave 32000 max 32000 min
Histogram: 1 0 0 0 0 0 0 0 0 0

View File

@ -1,4 +1,4 @@
LAMMPS (15 Feb 2016)
LAMMPS (6 Oct 2016)
# 3d Lennard-Jones melt
variable x index 1
@ -50,20 +50,20 @@ Memory usage per processor = 4.09506 Mbytes
Step Temp E_pair E_mol TotEng Press
0 1.44 -6.7733681 0 -4.6134356 -5.0197073
100 0.7574531 -5.7585055 0 -4.6223613 0.20726105
Loop time of 0.640733 on 4 procs for 100 steps with 32000 atoms
Loop time of 0.635957 on 4 procs for 100 steps with 32000 atoms
Performance: 67422.779 tau/day, 156.071 timesteps/s
99.7% CPU use with 4 MPI tasks x no OpenMP threads
Performance: 67929.172 tau/day, 157.243 timesteps/s
99.9% CPU use with 4 MPI tasks x no OpenMP threads
MPI task timing breakdown:
Section | min time | avg time | max time |%varavg| %total
---------------------------------------------------------------
Pair | 0.49487 | 0.51733 | 0.5322 | 1.9 | 80.74
Neigh | 0.061131 | 0.063685 | 0.065433 | 0.6 | 9.94
Comm | 0.02457 | 0.042349 | 0.069598 | 8.1 | 6.61
Output | 5.9843e-05 | 6.3181e-05 | 6.6996e-05 | 0.0 | 0.01
Modify | 0.012961 | 0.013863 | 0.014491 | 0.5 | 2.16
Other | | 0.003448 | | | 0.54
Pair | 0.51335 | 0.51822 | 0.52569 | 0.7 | 81.49
Neigh | 0.063695 | 0.064309 | 0.065397 | 0.3 | 10.11
Comm | 0.027525 | 0.03629 | 0.041959 | 3.1 | 5.71
Output | 6.3896e-05 | 6.6698e-05 | 7.081e-05 | 0.0 | 0.01
Modify | 0.012472 | 0.01254 | 0.012618 | 0.1 | 1.97
Other | | 0.004529 | | | 0.71
Nlocal: 8000 ave 8037 max 7964 min
Histogram: 2 0 0 0 0 0 0 0 1 1

View File

@ -1,4 +1,4 @@
LAMMPS (15 Feb 2016)
LAMMPS (6 Oct 2016)
# 3d Lennard-Jones melt
variable x index 1
@ -50,20 +50,20 @@ Memory usage per processor = 8.13678 Mbytes
Step Temp E_pair E_mol TotEng Press
0 1.44 -6.7733681 0 -4.6133849 -5.0196788
100 0.75841891 -5.759957 0 -4.6223375 0.20008866
Loop time of 2.57914 on 4 procs for 100 steps with 128000 atoms
Loop time of 2.55762 on 4 procs for 100 steps with 128000 atoms
Performance: 16749.768 tau/day, 38.773 timesteps/s
Performance: 16890.677 tau/day, 39.099 timesteps/s
99.8% CPU use with 4 MPI tasks x no OpenMP threads
MPI task timing breakdown:
Section | min time | avg time | max time |%varavg| %total
---------------------------------------------------------------
Pair | 2.042 | 2.1092 | 2.1668 | 3.1 | 81.78
Neigh | 0.23982 | 0.24551 | 0.25233 | 1.0 | 9.52
Comm | 0.067088 | 0.13887 | 0.22681 | 15.7 | 5.38
Output | 0.00013185 | 0.00021666 | 0.00027108 | 0.4 | 0.01
Modify | 0.060348 | 0.071269 | 0.077063 | 2.5 | 2.76
Other | | 0.01403 | | | 0.54
Pair | 2.0583 | 2.0988 | 2.1594 | 2.6 | 82.06
Neigh | 0.24411 | 0.24838 | 0.25585 | 0.9 | 9.71
Comm | 0.066397 | 0.13872 | 0.1863 | 11.9 | 5.42
Output | 0.00012994 | 0.00021023 | 0.00025702 | 0.3 | 0.01
Modify | 0.055533 | 0.058343 | 0.061791 | 1.2 | 2.28
Other | | 0.0132 | | | 0.52
Nlocal: 32000 ave 32060 max 31939 min
Histogram: 1 0 1 0 0 0 0 1 0 1

View File

@ -1,4 +1,4 @@
LAMMPS (15 Feb 2016)
LAMMPS (6 Oct 2016)
# Rhodopsin model
units real
@ -56,6 +56,7 @@ timestep 2.0
run 100
PPPM initialization ...
WARNING: Using 12-bit tables for long-range coulomb (../kspace.cpp:316)
G vector (1/distance) = 0.248835
grid = 25 32 32
stencil order = 5
@ -70,41 +71,41 @@ Neighbor list info ...
master list distance cutoff = 12
ghost atom cutoff = 12
binsize = 6 -> bins = 10 13 13
Memory usage per processor = 91.7487 Mbytes
Memory usage per processor = 93.2721 Mbytes
---------------- Step 0 ----- CPU = 0.0000 (sec) ----------------
TotEng = -25356.2064 KinEng = 21444.8313 Temp = 299.0397
PotEng = -46801.0377 E_bond = 2537.9940 E_angle = 10921.3742
E_dihed = 5211.7865 E_impro = 213.5116 E_vdwl = -2307.8634
E_coul = 207025.8927 E_long = -270403.7333 Press = -142.6035
E_coul = 207025.8927 E_long = -270403.7333 Press = -149.3301
Volume = 307995.0335
---------------- Step 50 ----- CPU = 17.6362 (sec) ----------------
TotEng = -25330.0828 KinEng = 21501.0029 Temp = 299.8230
PotEng = -46831.0857 E_bond = 2471.7004 E_angle = 10836.4975
E_dihed = 5239.6299 E_impro = 227.1218 E_vdwl = -1993.2754
E_coul = 206797.6331 E_long = -270410.3930 Press = 237.6701
Volume = 308031.5639
---------------- Step 100 ----- CPU = 35.9089 (sec) ----------------
TotEng = -25290.7593 KinEng = 21592.0117 Temp = 301.0920
PotEng = -46882.7709 E_bond = 2567.9807 E_angle = 10781.9408
E_dihed = 5198.7432 E_impro = 216.7834 E_vdwl = -1902.4783
E_coul = 206659.2326 E_long = -270404.9733 Press = 6.9960
Volume = 308133.9888
Loop time of 35.9089 on 1 procs for 100 steps with 32000 atoms
---------------- Step 50 ----- CPU = 17.2007 (sec) ----------------
TotEng = -25330.0321 KinEng = 21501.0036 Temp = 299.8230
PotEng = -46831.0357 E_bond = 2471.7033 E_angle = 10836.5108
E_dihed = 5239.6316 E_impro = 227.1219 E_vdwl = -1993.2763
E_coul = 206797.6655 E_long = -270410.3927 Press = 237.6866
Volume = 308031.5640
---------------- Step 100 ----- CPU = 35.0315 (sec) ----------------
TotEng = -25290.7387 KinEng = 21591.9096 Temp = 301.0906
PotEng = -46882.6484 E_bond = 2567.9789 E_angle = 10781.9556
E_dihed = 5198.7493 E_impro = 216.7863 E_vdwl = -1902.6458
E_coul = 206659.5006 E_long = -270404.9733 Press = 6.7898
Volume = 308133.9933
Loop time of 35.0316 on 1 procs for 100 steps with 32000 atoms
Performance: 0.481 ns/day, 49.874 hours/ns, 2.785 timesteps/s
Performance: 0.493 ns/day, 48.655 hours/ns, 2.855 timesteps/s
99.9% CPU use with 1 MPI tasks x no OpenMP threads
MPI task timing breakdown:
Section | min time | avg time | max time |%varavg| %total
---------------------------------------------------------------
Pair | 25.731 | 25.731 | 25.731 | 0.0 | 71.66
Bond | 1.2771 | 1.2771 | 1.2771 | 0.0 | 3.56
Kspace | 3.2094 | 3.2094 | 3.2094 | 0.0 | 8.94
Neigh | 4.4538 | 4.4538 | 4.4538 | 0.0 | 12.40
Comm | 0.068507 | 0.068507 | 0.068507 | 0.0 | 0.19
Output | 0.00025916 | 0.00025916 | 0.00025916 | 0.0 | 0.00
Modify | 1.1417 | 1.1417 | 1.1417 | 0.0 | 3.18
Other | | 0.027 | | | 0.08
Pair | 25.021 | 25.021 | 25.021 | 0.0 | 71.42
Bond | 1.2834 | 1.2834 | 1.2834 | 0.0 | 3.66
Kspace | 3.2116 | 3.2116 | 3.2116 | 0.0 | 9.17
Neigh | 4.2767 | 4.2767 | 4.2767 | 0.0 | 12.21
Comm | 0.069283 | 0.069283 | 0.069283 | 0.0 | 0.20
Output | 0.00028205 | 0.00028205 | 0.00028205 | 0.0 | 0.00
Modify | 1.14 | 1.14 | 1.14 | 0.0 | 3.25
Other | | 0.02938 | | | 0.08
Nlocal: 32000 ave 32000 max 32000 min
Histogram: 1 0 0 0 0 0 0 0 0 0
@ -113,9 +114,9 @@ Histogram: 1 0 0 0 0 0 0 0 0 0
Neighs: 1.20281e+07 ave 1.20281e+07 max 1.20281e+07 min
Histogram: 1 0 0 0 0 0 0 0 0 0
Total # of neighbors = 12028107
Total # of neighbors = 12028098
Ave neighs/atom = 375.878
Ave special neighs/atom = 7.43187
Neighbor list builds = 11
Dangerous builds = 0
Total wall time: 0:00:37
Total wall time: 0:00:36

View File

@ -1,4 +1,4 @@
LAMMPS (15 Feb 2016)
LAMMPS (6 Oct 2016)
# Rhodopsin model
units real
@ -56,6 +56,7 @@ timestep 2.0
run 100
PPPM initialization ...
WARNING: Using 12-bit tables for long-range coulomb (../kspace.cpp:316)
G vector (1/distance) = 0.248835
grid = 25 32 32
stencil order = 5
@ -70,52 +71,52 @@ Neighbor list info ...
master list distance cutoff = 12
ghost atom cutoff = 12
binsize = 6 -> bins = 10 13 13
Memory usage per processor = 36.629 Mbytes
Memory usage per processor = 37.3604 Mbytes
---------------- Step 0 ----- CPU = 0.0000 (sec) ----------------
TotEng = -25356.2064 KinEng = 21444.8313 Temp = 299.0397
PotEng = -46801.0377 E_bond = 2537.9940 E_angle = 10921.3742
E_dihed = 5211.7865 E_impro = 213.5116 E_vdwl = -2307.8634
E_coul = 207025.8927 E_long = -270403.7333 Press = -142.6035
E_coul = 207025.8927 E_long = -270403.7333 Press = -149.3301
Volume = 307995.0335
---------------- Step 50 ----- CPU = 4.7461 (sec) ----------------
TotEng = -25330.0828 KinEng = 21501.0029 Temp = 299.8230
PotEng = -46831.0857 E_bond = 2471.7004 E_angle = 10836.4975
E_dihed = 5239.6299 E_impro = 227.1218 E_vdwl = -1993.2754
E_coul = 206797.6331 E_long = -270410.3930 Press = 237.6701
Volume = 308031.5639
---------------- Step 100 ----- CPU = 9.6332 (sec) ----------------
TotEng = -25290.7591 KinEng = 21592.0117 Temp = 301.0920
PotEng = -46882.7708 E_bond = 2567.9807 E_angle = 10781.9408
E_dihed = 5198.7432 E_impro = 216.7834 E_vdwl = -1902.4783
E_coul = 206659.2327 E_long = -270404.9733 Press = 6.9960
Volume = 308133.9888
Loop time of 9.63322 on 4 procs for 100 steps with 32000 atoms
---------------- Step 50 ----- CPU = 4.6056 (sec) ----------------
TotEng = -25330.0321 KinEng = 21501.0036 Temp = 299.8230
PotEng = -46831.0357 E_bond = 2471.7033 E_angle = 10836.5108
E_dihed = 5239.6316 E_impro = 227.1219 E_vdwl = -1993.2763
E_coul = 206797.6655 E_long = -270410.3927 Press = 237.6866
Volume = 308031.5640
---------------- Step 100 ----- CPU = 9.3910 (sec) ----------------
TotEng = -25290.7386 KinEng = 21591.9096 Temp = 301.0906
PotEng = -46882.6482 E_bond = 2567.9789 E_angle = 10781.9556
E_dihed = 5198.7493 E_impro = 216.7863 E_vdwl = -1902.6458
E_coul = 206659.5007 E_long = -270404.9733 Press = 6.7898
Volume = 308133.9933
Loop time of 9.39107 on 4 procs for 100 steps with 32000 atoms
Performance: 1.794 ns/day, 13.379 hours/ns, 10.381 timesteps/s
99.9% CPU use with 4 MPI tasks x no OpenMP threads
Performance: 1.840 ns/day, 13.043 hours/ns, 10.648 timesteps/s
99.8% CPU use with 4 MPI tasks x no OpenMP threads
MPI task timing breakdown:
Section | min time | avg time | max time |%varavg| %total
---------------------------------------------------------------
Pair | 6.4364 | 6.5993 | 6.7208 | 4.7 | 68.51
Bond | 0.30755 | 0.32435 | 0.35704 | 3.4 | 3.37
Kspace | 0.92248 | 1.0782 | 1.2597 | 13.0 | 11.19
Neigh | 1.1669 | 1.1672 | 1.1675 | 0.0 | 12.12
Comm | 0.094674 | 0.098065 | 0.10543 | 1.4 | 1.02
Output | 0.00015521 | 0.00016224 | 0.00018215 | 0.1 | 0.00
Modify | 0.32982 | 0.34654 | 0.35365 | 1.6 | 3.60
Other | | 0.01943 | | | 0.20
Pair | 6.2189 | 6.3266 | 6.6072 | 6.5 | 67.37
Bond | 0.30793 | 0.32122 | 0.3414 | 2.4 | 3.42
Kspace | 0.87994 | 1.1644 | 1.2855 | 15.3 | 12.40
Neigh | 1.1358 | 1.136 | 1.1362 | 0.0 | 12.10
Comm | 0.08292 | 0.084935 | 0.087077 | 0.5 | 0.90
Output | 0.00015712 | 0.00016558 | 0.00018501 | 0.1 | 0.00
Modify | 0.33717 | 0.34246 | 0.34794 | 0.7 | 3.65
Other | | 0.01526 | | | 0.16
Nlocal: 8000 ave 8143 max 7933 min
Histogram: 1 2 0 0 0 0 0 0 0 1
Nghost: 22733.5 ave 22769 max 22693 min
Histogram: 1 0 0 0 0 2 0 0 0 1
Neighs: 3.00703e+06 ave 3.0975e+06 max 2.96493e+06 min
Neighs: 3.00702e+06 ave 3.0975e+06 max 2.96492e+06 min
Histogram: 1 2 0 0 0 0 0 0 0 1
Total # of neighbors = 12028107
Total # of neighbors = 12028098
Ave neighs/atom = 375.878
Ave special neighs/atom = 7.43187
Neighbor list builds = 11
Dangerous builds = 0
Total wall time: 0:00:10
Total wall time: 0:00:09

View File

@ -1,4 +1,4 @@
LAMMPS (15 Feb 2016)
LAMMPS (6 Oct 2016)
# Rhodopsin model
variable x index 1
@ -77,6 +77,7 @@ timestep 2.0
run 100
PPPM initialization ...
WARNING: Using 12-bit tables for long-range coulomb (../kspace.cpp:316)
G vector (1/distance) = 0.248593
grid = 48 60 36
stencil order = 5
@ -91,52 +92,52 @@ Neighbor list info ...
master list distance cutoff = 12
ghost atom cutoff = 12
binsize = 6 -> bins = 19 26 13
Memory usage per processor = 95.5339 Mbytes
Memory usage per processor = 96.9597 Mbytes
---------------- Step 0 ----- CPU = 0.0000 (sec) ----------------
TotEng = -101425.4887 KinEng = 85779.3251 Temp = 299.0304
PotEng = -187204.8138 E_bond = 10151.9760 E_angle = 43685.4968
E_dihed = 20847.1460 E_impro = 854.0463 E_vdwl = -9231.4537
E_coul = 827053.5824 E_long = -1080565.6077 Press = -142.3092
E_coul = 827053.5824 E_long = -1080565.6077 Press = -149.0358
Volume = 1231980.1340
---------------- Step 50 ----- CPU = 18.7806 (sec) ----------------
TotEng = -101320.2677 KinEng = 86003.4837 Temp = 299.8118
PotEng = -187323.7514 E_bond = 9887.1072 E_angle = 43346.7922
E_dihed = 20958.7032 E_impro = 908.4715 E_vdwl = -7973.4457
E_coul = 826141.3831 E_long = -1080592.7629 Press = 238.0161
Volume = 1232126.1855
---------------- Step 100 ----- CPU = 38.3684 (sec) ----------------
TotEng = -101158.1849 KinEng = 86355.6149 Temp = 301.0393
PotEng = -187513.7998 E_bond = 10272.0693 E_angle = 43128.6454
E_dihed = 20793.9759 E_impro = 867.0826 E_vdwl = -7586.7186
E_coul = 825583.7122 E_long = -1080572.5667 Press = 15.2151
Volume = 1232535.8423
Loop time of 38.3684 on 4 procs for 100 steps with 128000 atoms
---------------- Step 50 ----- CPU = 18.1689 (sec) ----------------
TotEng = -101320.0211 KinEng = 86003.4933 Temp = 299.8118
PotEng = -187323.5144 E_bond = 9887.1189 E_angle = 43346.8448
E_dihed = 20958.7108 E_impro = 908.4721 E_vdwl = -7973.4486
E_coul = 826141.5493 E_long = -1080592.7617 Press = 238.0404
Volume = 1232126.1814
---------------- Step 100 ----- CPU = 37.2027 (sec) ----------------
TotEng = -101157.9546 KinEng = 86355.7413 Temp = 301.0398
PotEng = -187513.6959 E_bond = 10272.0456 E_angle = 43128.7018
E_dihed = 20794.0107 E_impro = 867.0928 E_vdwl = -7587.2409
E_coul = 825584.2416 E_long = -1080572.5474 Press = 15.1729
Volume = 1232535.8440
Loop time of 37.2028 on 4 procs for 100 steps with 128000 atoms
Performance: 0.450 ns/day, 53.289 hours/ns, 2.606 timesteps/s
Performance: 0.464 ns/day, 51.671 hours/ns, 2.688 timesteps/s
99.9% CPU use with 4 MPI tasks x no OpenMP threads
MPI task timing breakdown:
Section | min time | avg time | max time |%varavg| %total
---------------------------------------------------------------
Pair | 26.205 | 26.538 | 26.911 | 5.0 | 69.17
Bond | 1.298 | 1.3125 | 1.3277 | 1.0 | 3.42
Kspace | 3.7099 | 4.0992 | 4.4422 | 13.3 | 10.68
Neigh | 4.6137 | 4.6144 | 4.615 | 0.0 | 12.03
Comm | 0.21398 | 0.21992 | 0.22886 | 1.2 | 0.57
Output | 0.00030518 | 0.00031543 | 0.00033307 | 0.1 | 0.00
Modify | 1.5066 | 1.5232 | 1.5388 | 1.0 | 3.97
Other | | 0.06051 | | | 0.16
Pair | 25.431 | 25.738 | 25.984 | 4.0 | 69.18
Bond | 1.2966 | 1.3131 | 1.3226 | 0.9 | 3.53
Kspace | 3.7563 | 4.0123 | 4.3127 | 10.0 | 10.79
Neigh | 4.3778 | 4.378 | 4.3782 | 0.0 | 11.77
Comm | 0.1903 | 0.19549 | 0.20485 | 1.3 | 0.53
Output | 0.00031805 | 0.00037521 | 0.00039601 | 0.2 | 0.00
Modify | 1.4861 | 1.5051 | 1.5122 | 0.9 | 4.05
Other | | 0.05992 | | | 0.16
Nlocal: 32000 ave 32000 max 32000 min
Histogram: 4 0 0 0 0 0 0 0 0 0
Nghost: 47957 ave 47957 max 47957 min
Histogram: 4 0 0 0 0 0 0 0 0 0
Neighs: 1.20281e+07 ave 1.20572e+07 max 1.1999e+07 min
Neighs: 1.20281e+07 ave 1.20572e+07 max 1.19991e+07 min
Histogram: 2 0 0 0 0 0 0 0 0 2
Total # of neighbors = 48112472
Total # of neighbors = 48112540
Ave neighs/atom = 375.879
Ave special neighs/atom = 7.43187
Neighbor list builds = 11
Dangerous builds = 0
Total wall time: 0:00:39
Total wall time: 0:00:38

View File

@ -1,7 +1,7 @@
<!-- HTML_ONLY -->
<HEAD>
<TITLE>LAMMPS Users Manual</TITLE>
<META NAME="docnumber" CONTENT="6 Oct 2016 version">
<META NAME="docnumber" CONTENT="11 Oct 2016 version">
<META NAME="author" CONTENT="http://lammps.sandia.gov - Sandia National Laboratories">
<META NAME="copyright" CONTENT="Copyright (2003) Sandia Corporation. This software and manual is distributed under the GNU General Public License.">
</HEAD>
@ -21,7 +21,7 @@
<H1></H1>
LAMMPS Documentation :c,h3
6 Oct 2016 version :c,h4
11 Oct 2016 version :c,h4
Version info: :h4

View File

@ -475,9 +475,6 @@ be generated by variable formulas that use comparison or Boolean math
operators or special functions like gmask() and rmask() and grmask().
See the "variable"_variable.html command doc page for details.
NOTE: The LAST option, discussed below, is not yet implemented. It
will be soon.
The specified value must be a simple numeric value or the word LAST.
If LAST is used, it refers to the value of the attribute the last time
the dump command was invoked to produce a snapshot. This is a way to

View File

@ -63,7 +63,7 @@ applied by GD before computing a pressure drop or comparing it to
other methods, such as the pump method "(Zhu)"_#Zhu. The pressure
correction is discussed and described in "(Strong)"_#Strong.
NOTE: For a complete example including the considerations discussed
For a complete example including the considerations discussed
above, see the examples/USER/flow_gauss directory.
NOTE: Only the flux of the atoms in group-ID will be conserved. If the
@ -93,6 +93,19 @@ work on the system must have {fix_modify energy yes} set as well. This
includes thermostat fixes and any constraints that hold the positions
of wall atoms fixed, such as "fix spring/self"_fix_spring_self.html.
If this fix is used in a simulation with the "rRESPA"_run_style.html
integrator, the applied acceleration must be computed and applied at the same
rRESPA level as the interactions between the flowing fluid and the obstacle.
The rRESPA level at which the acceleration is applied can be changed using
the "fix_modify"_fix_modify.html {respa} option discussed below. If the
flowing fluid and the obstacle interact through multiple interactions that are
computed at different rRESPA levels, then there must be a separate flow/gauss
fix for each level. For example, if the flowing fluid and obstacle interact
through pairwise and long-range Coulomb interactions, which are computed at
rRESPA levels 3 and 4, respectively, then there must be two separate
flow/gauss fixes, one that specifies {fix_modify respa 3} and one with
{fix_modify respa 4}.
:line
[Restart, fix_modify, output, run start/stop, minimize info:]
@ -109,6 +122,11 @@ fix to subtract the work done from the
system's potential energy as part of "thermodynamic
output"_thermo_style.html.
The "fix_modify"_fix_modify.html {respa} option is supported by this
fix. This allows the user to set at which level of the "rRESPA"_run_style.html
integrator the fix computes and adds the external acceleration. Default is the
outermost level.
This fix computes a global scalar and a global 3-vector of forces,
which can be accessed by various "output
commands"_Section_howto.html#howto_15. The scalar is the negative of the

View File

@ -42,7 +42,7 @@ Here are snapshots of example models using this command.
Corresponding input scripts can be found in examples/granregion.
Click on the images to see a bigger picture. Movies of these
simulations are "here on the Movies
page"_http://lammps.sandia.gov/movies.html#granregion.html of the
page"_http://lammps.sandia.gov/movies.html#granregion of the
LAMMPS web site.
:image(JPG/gran_funnel_small.jpg,JPG/gran_funnel.png)

View File

@ -191,13 +191,18 @@ input script should specify all fixes it will use. However, note that
some fixes store an internal "state" which is written to the restart
file. This allows the fix to continue on with its calculations in a
restarted simulation. To re-enable such a fix, the fix command in the
new input script must use the same fix-ID and group-ID as was used in
the input script that wrote the restart file. If a match is found,
LAMMPS prints a message indicating that the fix is being re-enabled.
If no match is found before the first run or minimization is performed
by the new script, the "state" information for the saved fix is
discarded. See the doc pages for individual fixes for info on which
ones can be restarted in this manner.
new input script must be of the same style and use the same fix-ID as
was used in the input script that wrote the restart file.
If a match is found, LAMMPS prints a message indicating that the fix
is being re-enabled. If no match is found before the first run or
minimization is performed by the new script, the "state" information
for the saved fix is discarded. LAMMPS will also print a list of
fixes for which the information is being discarded. See the doc pages
for individual fixes for info on which ones can be restarted in this
manner. Note that fixes which are created internally by other LAMMPS
commands (computes, fixes, etc) will have style names which are
all-capitalized, and IDs which are generated internally.
Likewise, the "computes"_fix.html used for a simulation are not stored
in the restart file. This means the new input script should specify
@ -213,6 +218,14 @@ re-created fix will be re-enabled with the stored state information as
described in the previous paragraph, so that the compute can continue
its calculations in a consistent manner.
NOTE: There are a handful of commands which can be used before or
between runs which require a system initialization. Examples include
the "balance", "displace_atoms", and "delete_atoms" commands. This is
because they may migrate atoms to new processors. Thus they will also
discard unused "state" information from fixes. This means that, if
desired, you must re-specify the relevant fixes and computes (which
create fixes) before those commands are used.
Some pair styles, like the "granular pair styles"_pair_gran.html, also
use a fix to store "state" information that persists from timestep to
timestep. In the case of granular potentials, it is contact

View File

@ -104,7 +104,7 @@ class RSTMarkup(Markup):
anchor_pos = href.find('#')
if anchor_pos >= 0:
if anchor_pos >= 0 and not href.startswith('http'):
href = href[anchor_pos+1:]
return ":ref:`%s <%s>`" % (content, href)

View File

@ -424,6 +424,11 @@ class TestSpecialCommands(unittest.TestCase):
"one \n\n"
"a :ref:`link <name>` to above\n\n", s)
def test_external_anchor_link(self):
s = self.txt2rst.convert('some text "containing a\n'
'link"_http://lammps.sandia.gov/movies.html#granregion with an anchor')
self.assertEqual('some text `containing a link <http://lammps.sandia.gov/movies.html#granregion>`_ with an anchor\n\n', s)
def test_define_link_alias(self):
s = self.txt2rst.convert("one :link(alias,value)\n"
"\"test\"_alias\n")

View File

@ -1557,5 +1557,5 @@ size_t const colvarmodule::cv_prec = 14;
size_t const colvarmodule::cv_width = 21;
size_t const colvarmodule::en_prec = 14;
size_t const colvarmodule::en_width = 21;
std::string const colvarmodule::line_marker =
const char * const colvarmodule::line_marker = (const char *)
"----------------------------------------------------------------------\n";

View File

@ -366,7 +366,7 @@ public:
/// Number of characters to represent the collective variables energy
static size_t const en_width;
/// Line separator in the log output
static std::string const line_marker;
static const char * const line_marker;
// proxy functions

View File

@ -37,7 +37,7 @@ using namespace MathConst;
// XYZ PLANE need to be 0,1,2
enum{XPLANE=0,YPLANE=1,ZPLANE=2,ZCYLINDER,REGION};
enum{XPLANE=0,YPLANE=1,ZPLANE=2,ZCYLINDER,REGION};
enum{HOOKE,HOOKE_HISTORY,HERTZ_HISTORY,BONDED_HISTORY};
enum{NONE,CONSTANT,EQUAL};
@ -78,21 +78,21 @@ FixWallGran::FixWallGran(LAMMPS *lmp, int narg, char **arg) :
kn = force->numeric(FLERR,arg[4]);
if (strcmp(arg[5],"NULL") == 0) kt = kn * 2.0/7.0;
else kt = force->numeric(FLERR,arg[5]);
gamman = force->numeric(FLERR,arg[6]);
if (strcmp(arg[7],"NULL") == 0) gammat = 0.5 * gamman;
else gammat = force->numeric(FLERR,arg[7]);
xmu = force->numeric(FLERR,arg[8]);
int dampflag = force->inumeric(FLERR,arg[9]);
if (dampflag == 0) gammat = 0.0;
if (kn < 0.0 || kt < 0.0 || gamman < 0.0 || gammat < 0.0 ||
xmu < 0.0 || xmu > 10000.0 || dampflag < 0 || dampflag > 1)
error->all(FLERR,"Illegal fix wall/gran command");
// convert Kn and Kt from pressure units to force/distance^2 if Hertzian
if (pairstyle == HERTZ_HISTORY) {
kn /= force->nktv2p;
kt /= force->nktv2p;
@ -119,7 +119,7 @@ FixWallGran::FixWallGran(LAMMPS *lmp, int narg, char **arg) :
}
// wallstyle args
idregion = NULL;
if (strcmp(arg[iarg],"xplane") == 0) {
@ -160,12 +160,12 @@ FixWallGran::FixWallGran(LAMMPS *lmp, int narg, char **arg) :
strcpy(idregion,arg[iarg+1]);
iarg += 2;
}
// optional args
wiggle = 0;
wshear = 0;
while (iarg < narg) {
if (strcmp(arg[iarg],"wiggle") == 0) {
if (iarg+4 > narg) error->all(FLERR,"Illegal fix wall/gran command");
@ -188,7 +188,7 @@ FixWallGran::FixWallGran(LAMMPS *lmp, int narg, char **arg) :
iarg += 3;
} else error->all(FLERR,"Illegal fix wall/gran command");
}
if (wallstyle == XPLANE && domain->xperiodic)
error->all(FLERR,"Cannot use wall in periodic dimension");
if (wallstyle == YPLANE && domain->yperiodic)
@ -197,7 +197,7 @@ FixWallGran::FixWallGran(LAMMPS *lmp, int narg, char **arg) :
error->all(FLERR,"Cannot use wall in periodic dimension");
if (wallstyle == ZCYLINDER && (domain->xperiodic || domain->yperiodic))
error->all(FLERR,"Cannot use wall in periodic dimension");
if (wiggle && wshear)
error->all(FLERR,"Cannot wiggle and shear fix wall/gran");
if (wiggle && wallstyle == ZCYLINDER && axis != 2)
@ -212,15 +212,15 @@ FixWallGran::FixWallGran(LAMMPS *lmp, int narg, char **arg) :
error->all(FLERR,"Cannot wiggle or shear with fix wall/gran/region");
// setup oscillations
if (wiggle) omega = 2.0*MY_PI / period;
// perform initial allocation of atom-based arrays
// register with Atom class
if (pairstyle == BONDED_HISTORY) sheardim = 7;
else sheardim = 3;
shearone = NULL;
grow_arrays(atom->nmax);
atom->add_callback(0);
@ -348,7 +348,7 @@ void FixWallGran::post_force(int vflag)
}
vwall[axis] = amplitude*omega*sin(arg);
} else if (wshear) vwall[axis] = vshear;
// loop over all my atoms
// rsq = distance from wall
// dx,dy,dz = signed distance from wall
@ -358,7 +358,7 @@ void FixWallGran::post_force(int vflag)
// compute force and torque on atom if close enough to wall
// via wall potential matched to pair potential
// set shear if pair potential stores history
double **x = atom->x;
double **v = atom->v;
double **f = atom->f;
@ -368,14 +368,14 @@ void FixWallGran::post_force(int vflag)
double *rmass = atom->rmass;
int *mask = atom->mask;
int nlocal = atom->nlocal;
rwall = 0.0;
for (int i = 0; i < nlocal; i++) {
if (mask[i] & groupbit) {
dx = dy = dz = 0.0;
if (wallstyle == XPLANE) {
del1 = x[i][0] - wlo;
del2 = whi - x[i][0];
@ -401,7 +401,7 @@ void FixWallGran::post_force(int vflag)
dx = -delr/delxy * x[i][0];
dy = -delr/delxy * x[i][1];
// rwall = -2r_c if inside cylinder, 2r_c outside
rwall = 2*(1-2*(delxy < cylradius))*cylradius;
rwall = (delxy < cylradius) ? -2*cylradius : 2*cylradius;
if (wshear && axis != 2) {
vwall[0] += vshear * x[i][1]/delxy;
vwall[1] += -vshear * x[i][0]/delxy;
@ -409,12 +409,12 @@ void FixWallGran::post_force(int vflag)
}
}
}
rsq = dx*dx + dy*dy + dz*dz;
if (rsq > radius[i]*radius[i]) {
if (history)
for (j = 0; j < sheardim; j++)
for (j = 0; j < sheardim; j++)
shearone[i][j] = 0.0;
} else {
@ -467,66 +467,66 @@ void FixWallGran::hooke(double rsq, double dx, double dy, double dz,
rsqinv = 1.0/rsq;
// relative translational velocity
vr1 = v[0] - vwall[0];
vr2 = v[1] - vwall[1];
vr3 = v[2] - vwall[2];
// normal component
vnnr = vr1*dx + vr2*dy + vr3*dz;
vn1 = dx*vnnr * rsqinv;
vn2 = dy*vnnr * rsqinv;
vn3 = dz*vnnr * rsqinv;
// tangential component
vt1 = vr1 - vn1;
vt2 = vr2 - vn2;
vt3 = vr3 - vn3;
// relative rotational velocity
wr1 = radius*omega[0] * rinv;
wr2 = radius*omega[1] * rinv;
wr3 = radius*omega[2] * rinv;
// normal forces = Hookian contact + normal velocity damping
damp = meff*gamman*vnnr*rsqinv;
ccel = kn*(radius-r)*rinv - damp;
// relative velocities
vtr1 = vt1 - (dz*wr2-dy*wr3);
vtr2 = vt2 - (dx*wr3-dz*wr1);
vtr3 = vt3 - (dy*wr1-dx*wr2);
vrel = vtr1*vtr1 + vtr2*vtr2 + vtr3*vtr3;
vrel = sqrt(vrel);
// force normalization
fn = xmu * fabs(ccel*r);
fs = meff*gammat*vrel;
if (vrel != 0.0) ft = MIN(fn,fs) / vrel;
else ft = 0.0;
// tangential force due to tangential velocity damping
fs1 = -ft*vtr1;
fs2 = -ft*vtr2;
fs3 = -ft*vtr3;
// forces & torques
fx = dx*ccel + fs1;
fy = dy*ccel + fs2;
fz = dz*ccel + fs3;
f[0] += fx;
f[1] += fy;
f[2] += fz;
tor1 = rinv * (dy*fs3 - dz*fs2);
tor2 = rinv * (dz*fs1 - dx*fs3);
tor3 = rinv * (dx*fs2 - dy*fs1);
@ -546,60 +546,60 @@ void FixWallGran::hooke_history(double rsq, double dx, double dy, double dz,
double wr1,wr2,wr3,damp,ccel,vtr1,vtr2,vtr3,vrel;
double fn,fs,fs1,fs2,fs3,fx,fy,fz,tor1,tor2,tor3;
double shrmag,rsht,rinv,rsqinv;
r = sqrt(rsq);
rinv = 1.0/r;
rsqinv = 1.0/rsq;
// relative translational velocity
vr1 = v[0] - vwall[0];
vr2 = v[1] - vwall[1];
vr3 = v[2] - vwall[2];
// normal component
vnnr = vr1*dx + vr2*dy + vr3*dz;
vn1 = dx*vnnr * rsqinv;
vn2 = dy*vnnr * rsqinv;
vn3 = dz*vnnr * rsqinv;
// tangential component
vt1 = vr1 - vn1;
vt2 = vr2 - vn2;
vt3 = vr3 - vn3;
// relative rotational velocity
wr1 = radius*omega[0] * rinv;
wr2 = radius*omega[1] * rinv;
wr3 = radius*omega[2] * rinv;
// normal forces = Hookian contact + normal velocity damping
damp = meff*gamman*vnnr*rsqinv;
ccel = kn*(radius-r)*rinv - damp;
// relative velocities
vtr1 = vt1 - (dz*wr2-dy*wr3);
vtr2 = vt2 - (dx*wr3-dz*wr1);
vtr3 = vt3 - (dy*wr1-dx*wr2);
vrel = vtr1*vtr1 + vtr2*vtr2 + vtr3*vtr3;
vrel = sqrt(vrel);
// shear history effects
if (shearupdate) {
shear[0] += vtr1*dt;
shear[1] += vtr2*dt;
shear[2] += vtr3*dt;
}
shrmag = sqrt(shear[0]*shear[0] + shear[1]*shear[1] + shear[2]*shear[2]);
// rotate shear displacements
rsht = shear[0]*dx + shear[1]*dy + shear[2]*dz;
rsht = rsht*rsqinv;
if (shearupdate) {
@ -607,18 +607,18 @@ void FixWallGran::hooke_history(double rsq, double dx, double dy, double dz,
shear[1] -= rsht*dy;
shear[2] -= rsht*dz;
}
// tangential forces = shear + tangential velocity damping
fs1 = - (kt*shear[0] + meff*gammat*vtr1);
fs2 = - (kt*shear[1] + meff*gammat*vtr2);
fs3 = - (kt*shear[2] + meff*gammat*vtr3);
// rescale frictional displacements and forces if needed
fs = sqrt(fs1*fs1 + fs2*fs2 + fs3*fs3);
fn = xmu * fabs(ccel*r);
if (fs > fn) {
if (shrmag != 0.0) {
shear[0] = (fn/fs) * (shear[0] + meff*gammat*vtr1/kt) -
@ -632,17 +632,17 @@ void FixWallGran::hooke_history(double rsq, double dx, double dy, double dz,
fs3 *= fn/fs;
} else fs1 = fs2 = fs3 = 0.0;
}
// forces & torques
fx = dx*ccel + fs1;
fy = dy*ccel + fs2;
fz = dz*ccel + fs3;
f[0] += fx;
f[1] += fy;
f[2] += fz;
tor1 = rinv * (dy*fs3 - dz*fs2);
tor2 = rinv * (dz*fs1 - dx*fs3);
tor3 = rinv * (dx*fs2 - dy*fs1);
@ -662,56 +662,56 @@ void FixWallGran::hertz_history(double rsq, double dx, double dy, double dz,
double wr1,wr2,wr3,damp,ccel,vtr1,vtr2,vtr3,vrel;
double fn,fs,fs1,fs2,fs3,fx,fy,fz,tor1,tor2,tor3;
double shrmag,rsht,polyhertz,rinv,rsqinv;
r = sqrt(rsq);
rinv = 1.0/r;
rsqinv = 1.0/rsq;
// relative translational velocity
vr1 = v[0] - vwall[0];
vr2 = v[1] - vwall[1];
vr3 = v[2] - vwall[2];
// normal component
vnnr = vr1*dx + vr2*dy + vr3*dz;
vn1 = dx*vnnr / rsq;
vn2 = dy*vnnr / rsq;
vn3 = dz*vnnr / rsq;
// tangential component
vt1 = vr1 - vn1;
vt2 = vr2 - vn2;
vt3 = vr3 - vn3;
// relative rotational velocity
wr1 = radius*omega[0] * rinv;
wr2 = radius*omega[1] * rinv;
wr3 = radius*omega[2] * rinv;
// normal forces = Hertzian contact + normal velocity damping
// rwall = 0 is flat wall case
// rwall positive or negative is curved wall
// will break (as it should) if rwall is negative and
// will break (as it should) if rwall is negative and
// its absolute value < radius of particle
damp = meff*gamman*vnnr*rsqinv;
ccel = kn*(radius-r)*rinv - damp;
if (rwall == 0.0) polyhertz = sqrt((radius-r)*radius);
else polyhertz = sqrt((radius-r)*radius*rwall/(rwall+radius));
ccel *= polyhertz;
// relative velocities
vtr1 = vt1 - (dz*wr2-dy*wr3);
vtr2 = vt2 - (dx*wr3-dz*wr1);
vtr3 = vt3 - (dy*wr1-dx*wr2);
vrel = vtr1*vtr1 + vtr2*vtr2 + vtr3*vtr3;
vrel = sqrt(vrel);
// shear history effects
if (shearupdate) {
@ -720,9 +720,9 @@ void FixWallGran::hertz_history(double rsq, double dx, double dy, double dz,
shear[2] += vtr3*dt;
}
shrmag = sqrt(shear[0]*shear[0] + shear[1]*shear[1] + shear[2]*shear[2]);
// rotate shear displacements
rsht = shear[0]*dx + shear[1]*dy + shear[2]*dz;
rsht = rsht*rsqinv;
if (shearupdate) {
@ -730,18 +730,18 @@ void FixWallGran::hertz_history(double rsq, double dx, double dy, double dz,
shear[1] -= rsht*dy;
shear[2] -= rsht*dz;
}
// tangential forces = shear + tangential velocity damping
fs1 = -polyhertz * (kt*shear[0] + meff*gammat*vtr1);
fs2 = -polyhertz * (kt*shear[1] + meff*gammat*vtr2);
fs3 = -polyhertz * (kt*shear[2] + meff*gammat*vtr3);
// rescale frictional displacements and forces if needed
fs = sqrt(fs1*fs1 + fs2*fs2 + fs3*fs3);
fn = xmu * fabs(ccel*r);
if (fs > fn) {
if (shrmag != 0.0) {
shear[0] = (fn/fs) * (shear[0] + meff*gammat*vtr1/kt) -
@ -757,7 +757,7 @@ void FixWallGran::hertz_history(double rsq, double dx, double dy, double dz,
}
// forces & torques
fx = dx*ccel + fs1;
fy = dy*ccel + fs2;
fz = dz*ccel + fs3;
@ -765,7 +765,7 @@ void FixWallGran::hertz_history(double rsq, double dx, double dy, double dz,
f[0] += fx;
f[1] += fy;
f[2] += fz;
tor1 = rinv * (dy*fs3 - dz*fs2);
tor2 = rinv * (dz*fs1 - dx*fs3);
tor3 = rinv * (dx*fs2 - dy*fs1);
@ -864,8 +864,8 @@ void FixWallGran::bonded_history(double rsq, double dx, double dy, double dz,
// use Tsuji et al form
polyhertz = 1.2728- 4.2783*0.9 + 11.087*0.9*0.9 - 22.348*0.9*0.9*0.9 +
27.467*0.9*0.9*0.9*0.9 - 18.022*0.9*0.9*0.9*0.9*0.9 +
polyhertz = 1.2728- 4.2783*0.9 + 11.087*0.9*0.9 - 22.348*0.9*0.9*0.9 +
27.467*0.9*0.9*0.9*0.9 - 18.022*0.9*0.9*0.9*0.9*0.9 +
4.8218*0.9*0.9*0.9*0.9*0.9*0.9;
gammatsuji = 0.2*sqrt(meff*kn);
@ -969,7 +969,7 @@ void FixWallGran::bonded_history(double rsq, double dx, double dy, double dz,
shear[6] += magtwist*dt;
ktwist = 0.5*kt*(a0*aovera0)*(a0*aovera0);
magtortwist = -ktwist*shear[6] -
magtortwist = -ktwist*shear[6] -
0.5*polyhertz*gammatsuji*(a0*aovera0)*(a0*aovera0)*magtwist;
twistcrit=TWOTHIRDS*a0*aovera0*Fcrit;
@ -1113,11 +1113,11 @@ void FixWallGran::unpack_restart(int nlocal, int nth)
double **extra = atom->extra;
// skip to Nth set of extra values
int m = 0;
for (int i = 0; i < nth; i++) m += static_cast<int> (extra[nlocal][m]);
m++;
for (int i = 0; i < sheardim; i++)
shearone[nlocal][i] = extra[nlocal][m++];
}

View File

@ -193,7 +193,7 @@ double colvarproxy_lammps::compute()
previous_step = _lmp->update->ntimestep;
if (cvm::debug()) {
cvm::log(cvm::line_marker+
cvm::log(std::string(cvm::line_marker)+
"colvarproxy_lammps, step no. "+cvm::to_str(colvars->it)+"\n"+
"Updating internal data.\n");
}

View File

@ -27,6 +27,7 @@
#include "domain.h"
#include "error.h"
#include "citeme.h"
#include "respa.h"
using namespace LAMMPS_NS;
using namespace FixConst;
@ -63,6 +64,8 @@ FixFlowGauss::FixFlowGauss(LAMMPS *lmp, int narg, char **arg) :
extvector = 1;
size_vector = 3;
global_freq = 1; //data available every timestep
respa_level_support = 1;
//default respa level=outermost level is set in init()
dimension = domain->dimension;
@ -109,9 +112,23 @@ int FixFlowGauss::setmask()
int mask = 0;
mask |= POST_FORCE;
mask |= THERMO_ENERGY;
mask |= POST_FORCE_RESPA;
return mask;
}
/* ---------------------------------------------------------------------- */
void FixFlowGauss::init()
{
//if respa level specified by fix_modify, then override default (outermost)
//if specified level too high, set to max level
if (strstr(update->integrate_style,"respa")) {
ilevel_respa = ((Respa *) update->integrate)->nlevels-1;
if (respa_level >= 0)
ilevel_respa = MIN(respa_level,ilevel_respa);
}
}
/* ----------------------------------------------------------------------
setup is called after the initial evaluation of forces before a run, so we
must remove the total force here too
@ -127,7 +144,13 @@ void FixFlowGauss::setup(int vflag)
if (mTot <= 0.0)
error->all(FLERR,"Invalid group mass in fix flow/gauss");
post_force(vflag);
if (strstr(update->integrate_style,"respa")) {
((Respa *) update->integrate)->copy_flevel_f(ilevel_respa);
post_force_respa(vflag,ilevel_respa,0);
((Respa *) update->integrate)->copy_f_flevel(ilevel_respa);
}
else
post_force(vflag);
}
/* ----------------------------------------------------------------------
@ -148,7 +171,6 @@ void FixFlowGauss::post_force(int vflag)
int ii,jj;
//find the total force on all atoms
//initialize to zero
double f_thisProc[3];
for (ii=0; ii<3; ii++)
@ -201,6 +223,11 @@ void FixFlowGauss::post_force(int vflag)
}
void FixFlowGauss::post_force_respa(int vflag, int ilevel, int iloop)
{
if (ilevel == ilevel_respa) post_force(vflag);
}
/* ----------------------------------------------------------------------
negative of work done by this fix
This is only computed if requested, either with fix_modify energy yes, or with the energy keyword. Otherwise returns 0.

View File

@ -30,10 +30,12 @@ FixStyle(flow/gauss,FixFlowGauss)
public:
FixFlowGauss(class LAMMPS *, int, char **);
int setmask();
void init();
void setup(int);
void post_force(int);
void post_force_respa(int, int, int);
double compute_scalar();
double compute_vector(int n);
void post_force(int);
void setup(int);
protected:
int dimension;
@ -44,6 +46,7 @@ FixStyle(flow/gauss,FixFlowGauss)
double pe_tot; //total added energy
double dt; //timestep
bool workflag; //if calculate work done by fix
int ilevel_respa;
};

View File

@ -25,8 +25,8 @@
using namespace LAMMPS_NS;
using namespace FixConst;
enum{XPLANE=0,YPLANE=1,ZPLANE=2,ZCYLINDER}; // XYZ PLANE need to be 0,1,2
enum{HOOKE,HOOKE_HISTORY,HERTZ_HISTORY};
enum{XPLANE=0,YPLANE=1,ZPLANE=2,ZCYLINDER,REGION}; // XYZ PLANE need to be 0,1,2
enum{HOOKE,HOOKE_HISTORY,HERTZ_HISTORY,BONDED_HISTORY};
#define BIG 1.0e20
@ -107,6 +107,7 @@ void FixWallGranOMP::post_force(int vflag)
if (mask[i] & groupbit) {
double dx,dy,dz,del1,del2,delxy,delr,rsq;
double rwall = 0.0;
dx = dy = dz = 0.0;
@ -128,13 +129,16 @@ void FixWallGranOMP::post_force(int vflag)
} else if (wallstyle == ZCYLINDER) {
delxy = sqrt(x[i][0]*x[i][0] + x[i][1]*x[i][1]);
delr = cylradius - delxy;
if (delr > radius[i]) dz = cylradius;
else {
if (delr > radius[i]) {
dz = cylradius;
rwall = 0.0;
} else {
dx = -delr/delxy * x[i][0];
dy = -delr/delxy * x[i][1];
rwall = (delxy < cylradius) ? -2*cylradius : 2*cylradius;
if (wshear && axis != 2) {
vwall[0] = vshear * x[i][1]/delxy;
vwall[1] = -vshear * x[i][0]/delxy;
vwall[0] += vshear * x[i][1]/delxy;
vwall[1] += -vshear * x[i][0]/delxy;
vwall[2] = 0.0;
}
}
@ -143,11 +147,10 @@ void FixWallGranOMP::post_force(int vflag)
rsq = dx*dx + dy*dy + dz*dz;
if (rsq > radius[i]*radius[i]) {
if (pairstyle != HOOKE) {
shear[i][0] = 0.0;
shear[i][1] = 0.0;
shear[i][2] = 0.0;
}
if (history)
for (int j = 0; j < sheardim; j++)
shearone[i][j] = 0.0;
} else {
// meff = effective mass of sphere
@ -156,17 +159,20 @@ void FixWallGranOMP::post_force(int vflag)
double meff = rmass[i];
if (fix_rigid && mass_rigid[i] > 0.0) meff = mass_rigid[i];
// inovke sphere/wall interaction
// invoke sphere/wall interaction
if (pairstyle == HOOKE)
hooke(rsq,dx,dy,dz,vwall,v[i],f[i],omega[i],torque[i],
radius[i],meff);
hooke(rsq,dx,dy,dz,vwall,v[i],f[i],
omega[i],torque[i],radius[i],meff);
else if (pairstyle == HOOKE_HISTORY)
hooke_history(rsq,dx,dy,dz,vwall,v[i],f[i],omega[i],torque[i],
radius[i],meff,shear[i]);
hooke_history(rsq,dx,dy,dz,vwall,v[i],f[i],
omega[i],torque[i],radius[i],meff,shearone[i]);
else if (pairstyle == HERTZ_HISTORY)
hertz_history(rsq,dx,dy,dz,vwall,v[i],f[i],omega[i],torque[i],
radius[i],meff,shear[i]);
hertz_history(rsq,dx,dy,dz,vwall,rwall,v[i],f[i],
omega[i],torque[i],radius[i],meff,shearone[i]);
else if (pairstyle == BONDED_HISTORY)
bonded_history(rsq,dx,dy,dz,vwall,rwall,v[i],f[i],
omega[i],torque[i],radius[i],meff,shearone[i]);
}
}
}

View File

@ -26,6 +26,7 @@
#include "modify.h"
#include "compute.h"
#include "fix.h"
#include "fix_store.h"
#include "memory.h"
#include "error.h"
@ -82,10 +83,17 @@ DumpCustom::DumpCustom(LAMMPS *lmp, int narg, char **arg) :
buffer_flag = 1;
iregion = -1;
idregion = NULL;
nthresh = 0;
thresh_array = NULL;
thresh_op = NULL;
thresh_value = NULL;
thresh_last = NULL;
nthreshlast = 0;
thresh_fix = NULL;
thresh_fixID = NULL;
thresh_first = NULL;
// computes, fixes, variables which the dump accesses
@ -193,6 +201,17 @@ DumpCustom::~DumpCustom()
memory->destroy(thresh_array);
memory->destroy(thresh_op);
memory->destroy(thresh_value);
memory->destroy(thresh_last);
// check nfix in case all fixes have already been deleted
for (int i = 0; i < nthreshlast; i++) {
if (modify->nfix) modify->delete_fix(thresh_fixID[i]);
delete [] thresh_fixID[i];
}
memory->sfree(thresh_fix);
memory->sfree(thresh_fixID);
memory->destroy(thresh_first);
for (int i = 0; i < ncompute; i++) delete [] id_compute[i];
memory->sfree(id_compute);
@ -498,9 +517,10 @@ int DumpCustom::count()
// un-choose if any threshold criterion isn't met
if (nthresh) {
double *ptr;
double *ptr,*ptrhold;
double *values;
double value;
int nstride;
int nstride,lastflag;
int nlocal = atom->nlocal;
for (int ithresh = 0; ithresh < nthresh; ithresh++) {
@ -926,32 +946,91 @@ int DumpCustom::count()
}
// unselect atoms that don't meet threshold criterion
// compare to single value or values stored in threshfix
// copy ptr attribute into thresh_fix if this is first comparison
value = thresh_value[ithresh];
if (thresh_last[ithresh] < 0) {
lastflag = 0;
value = thresh_value[ithresh];
} else {
lastflag = 1;
int ilast = thresh_last[ithresh];
values = thresh_fix[ilast]->vstore;
ptrhold = ptr;
if (thresh_first[ilast]) {
thresh_first[ilast] = 0;
for (i = 0; i < nlocal; i++, ptr += nstride) values[i] = *ptr;
ptr = ptrhold;
}
}
if (thresh_op[ithresh] == LT) {
for (i = 0; i < nlocal; i++, ptr += nstride)
if (choose[i] && *ptr >= value) choose[i] = 0;
if (lastflag) {
for (i = 0; i < nlocal; i++, ptr += nstride)
if (choose[i] && *ptr >= values[i]) choose[i] = 0;
} else {
for (i = 0; i < nlocal; i++, ptr += nstride)
if (choose[i] && *ptr >= value) choose[i] = 0;
}
} else if (thresh_op[ithresh] == LE) {
for (i = 0; i < nlocal; i++, ptr += nstride)
if (choose[i] && *ptr > value) choose[i] = 0;
if (lastflag) {
for (i = 0; i < nlocal; i++, ptr += nstride)
if (choose[i] && *ptr > values[i]) choose[i] = 0;
} else {
for (i = 0; i < nlocal; i++, ptr += nstride)
if (choose[i] && *ptr > value) choose[i] = 0;
}
} else if (thresh_op[ithresh] == GT) {
for (i = 0; i < nlocal; i++, ptr += nstride)
if (choose[i] && *ptr <= value) choose[i] = 0;
if (lastflag) {
for (i = 0; i < nlocal; i++, ptr += nstride)
if (choose[i] && *ptr <= values[i]) choose[i] = 0;
} else {
for (i = 0; i < nlocal; i++, ptr += nstride)
if (choose[i] && *ptr <= value) choose[i] = 0;
}
} else if (thresh_op[ithresh] == GE) {
for (i = 0; i < nlocal; i++, ptr += nstride)
if (choose[i] && *ptr < value) choose[i] = 0;
if (lastflag) {
for (i = 0; i < nlocal; i++, ptr += nstride)
if (choose[i] && *ptr < values[i]) choose[i] = 0;
} else {
for (i = 0; i < nlocal; i++, ptr += nstride)
if (choose[i] && *ptr < value) choose[i] = 0;
}
} else if (thresh_op[ithresh] == EQ) {
for (i = 0; i < nlocal; i++, ptr += nstride)
if (choose[i] && *ptr != value) choose[i] = 0;
if (lastflag) {
for (i = 0; i < nlocal; i++, ptr += nstride)
if (choose[i] && *ptr != values[i]) choose[i] = 0;
} else {
for (i = 0; i < nlocal; i++, ptr += nstride)
if (choose[i] && *ptr != value) choose[i] = 0;
}
} else if (thresh_op[ithresh] == NEQ) {
for (i = 0; i < nlocal; i++, ptr += nstride)
if (choose[i] && *ptr == value) choose[i] = 0;
if (lastflag) {
for (i = 0; i < nlocal; i++, ptr += nstride)
if (choose[i] && *ptr == values[i]) choose[i] = 0;
} else {
for (i = 0; i < nlocal; i++, ptr += nstride)
if (choose[i] && *ptr == value) choose[i] = 0;
}
} else if (thresh_op[ithresh] == XOR) {
for (i = 0; i < nlocal; i++, ptr += nstride)
if (choose[i] && (*ptr == 0.0 && value == 0.0) ||
(*ptr != 0.0 && value != 0.0))
choose[i] = 0;
if (lastflag) {
for (i = 0; i < nlocal; i++, ptr += nstride)
if (choose[i] && (*ptr == 0.0 && values[i] == 0.0) ||
(*ptr != 0.0 && values[i] != 0.0))
choose[i] = 0;
} else {
for (i = 0; i < nlocal; i++, ptr += nstride)
if (choose[i] && (*ptr == 0.0 && value == 0.0) ||
(*ptr != 0.0 && value != 0.0))
choose[i] = 0;
}
}
// update values stored in threshfix
if (lastflag) {
ptr = ptrhold;
for (i = 0; i < nlocal; i++, ptr += nstride) values[i] = *ptr;
}
}
}
@ -1594,8 +1673,16 @@ int DumpCustom::modify_param(int narg, char **arg)
thresh_array = NULL;
thresh_op = NULL;
thresh_value = NULL;
thresh_last = NULL;
for (int i = 0; i < nthreshlast; i++) {
modify->delete_fix(thresh_fixID[i]);
delete [] thresh_fixID[i];
}
thresh_fix = NULL;
thresh_fixID = NULL;
thresh_first = NULL;
}
nthresh = 0;
nthresh = nthreshlast = 0;
return 2;
}
@ -1606,7 +1693,8 @@ int DumpCustom::modify_param(int narg, char **arg)
memory->grow(thresh_array,nthresh+1,"dump:thresh_array");
memory->grow(thresh_op,(nthresh+1),"dump:thresh_op");
memory->grow(thresh_value,(nthresh+1),"dump:thresh_value");
memory->grow(thresh_last,(nthresh+1),"dump:thresh_last");
// set attribute type of threshold
// customize by adding to if statement
@ -1830,7 +1918,7 @@ int DumpCustom::modify_param(int narg, char **arg)
field2index[nfield+nthresh] = add_custom(suffix,0);
delete [] suffix;
} else error->all(FLERR,"Invalid dump_modify threshhold operator");
} else error->all(FLERR,"Invalid dump_modify threshold operator");
// set operation type of threshold
@ -1843,9 +1931,43 @@ int DumpCustom::modify_param(int narg, char **arg)
else if (strcmp(arg[2],"|^") == 0) thresh_op[nthresh] = XOR;
else error->all(FLERR,"Invalid dump_modify threshold operator");
// set threshold value
// set threshold value as number or special LAST keyword
// create FixStore to hold LAST values, should work with restart
// id = dump-ID + nthreshlast + DUMP_STORE, fix group = dump group
thresh_value[nthresh] = force->numeric(FLERR,arg[3]);
if (strcmp(arg[3],"LAST") != 0) {
thresh_value[nthresh] = force->numeric(FLERR,arg[3]);
thresh_last[nthresh] = -1;
} else {
thresh_fix = (FixStore **)
memory->srealloc(thresh_fix,(nthreshlast+1)*sizeof(FixStore *),
"dump:thresh_fix");
thresh_fixID = (char **)
memory->srealloc(thresh_fixID,(nthreshlast+1)*sizeof(char *),
"dump:thresh_fixID");
memory->grow(thresh_first,(nthreshlast+1),"dump:thresh_first");
int n = strlen(id) + strlen("_DUMP_STORE") + 8;
thresh_fixID[nthreshlast] = new char[n];
strcpy(thresh_fixID[nthreshlast],id);
sprintf(&thresh_fixID[nthreshlast][strlen(id)],"%d",nthreshlast);
strcat(thresh_fixID[nthreshlast],"_DUMP_STORE");
char **newarg = new char*[6];
newarg[0] = thresh_fixID[nthreshlast];
newarg[1] = group->names[igroup];
newarg[2] = (char *) "STORE";
newarg[3] = (char *) "peratom";
newarg[4] = (char *) "1";
newarg[5] = (char *) "1";
modify->add_fix(6,newarg);
thresh_fix[nthreshlast] = (FixStore *) modify->fix[modify->nfix-1];
delete [] newarg;
thresh_last[nthreshlast] = nthreshlast;
thresh_first[nthreshlast] = 1;
nthreshlast++;
}
nthresh++;
return 4;

View File

@ -33,10 +33,20 @@ class DumpCustom : public Dump {
int nevery; // dump frequency for output
int iregion; // -1 if no region, else which region
char *idregion; // region ID
int nthresh; // # of defined threshholds
int *thresh_array; // array to threshhhold on for each nthresh
int *thresh_op; // threshhold operation for each nthresh
double *thresh_value; // threshhold value for each nthresh
int nthresh; // # of defined thresholds
int nthreshlast; // # of defined thresholds with value = LAST
int *thresh_array; // array to threshold on for each nthresh
int *thresh_op; // threshold operation for each nthresh
double *thresh_value; // threshold value for each nthresh
int *thresh_last; // for threshold value = LAST,
// index into thresh_fix
// -1 if not LAST, value is numeric
class FixStore **thresh_fix; // stores values for each threshold LAST
char **thresh_fixID; // IDs of thresh_fixes
int *thresh_first; // 1 the first time a FixStore values accessed
int expand; // flag for whether field args were expanded
char **earg; // field names with wildcard expansion
@ -50,7 +60,7 @@ class DumpCustom : public Dump {
int nchoose; // # of selected atoms
int maxlocal; // size of atom selection and variable arrays
int *choose; // local indices of selected atoms
double *dchoose; // value for each atom to threshhold against
double *dchoose; // value for each atom to threshold against
int *clist; // compressed list of indices of selected atoms
int nfield; // # of keywords listed by user
@ -233,9 +243,9 @@ E: Compute used in dump between runs is not current
The compute was not invoked on the current timestep, therefore it
cannot be used in a dump between runs.
E: Threshhold for an atom property that isn't allocated
E: Threshold for an atom property that isn't allocated
A dump threshhold has been requested on a quantity that is
A dump threshold has been requested on a quantity that is
not defined by the atom style used in this simulation.
E: Dumping an atom property that isn't allocated
@ -362,7 +372,7 @@ E: Could not find dump modify custom atom integer property ID
Self-explanatory.
E: Invalid dump_modify threshhold operator
E: Invalid dump_modify threshold operator
Operator keyword used for threshold specification in not recognized.

View File

@ -154,6 +154,9 @@ void FixStore::reset_global(int nrow_caller, int ncol_caller)
if (vecflag) memory->create(vstore,nrow,"fix/store:vstore");
else memory->create(astore,nrow,ncol,"fix/store:astore");
memory->create(rbuf,nrow*ncol+2,"fix/store:rbuf");
printf("AAA HOW GET HERE\n");
}
/* ----------------------------------------------------------------------

View File

@ -68,10 +68,12 @@ Modify::Modify(LAMMPS *lmp) : Pointers(lmp)
list_timeflag = NULL;
nfix_restart_global = 0;
id_restart_global = style_restart_global = state_restart_global = NULL;
id_restart_global = style_restart_global = NULL;
state_restart_global = NULL;
used_restart_global = NULL;
nfix_restart_peratom = 0;
id_restart_peratom = style_restart_peratom = NULL;
index_restart_peratom = NULL;
index_restart_peratom = used_restart_peratom = NULL;
ncompute = maxcompute = 0;
compute = NULL;
@ -140,7 +142,7 @@ Modify::~Modify()
delete [] end_of_step_every;
delete [] list_timeflag;
restart_deallocate();
restart_deallocate(0);
delete compute_map;
delete fix_map;
@ -156,7 +158,7 @@ void Modify::init()
// delete storage of restart info since it is not valid after 1st run
restart_deallocate();
restart_deallocate(1);
// create lists of fixes to call at each stage of run
@ -819,11 +821,16 @@ void Modify::add_fix(int narg, char **arg, int trysuffix)
if (strcmp(id_restart_global[i],fix[ifix]->id) == 0 &&
strcmp(style_restart_global[i],fix[ifix]->style) == 0) {
fix[ifix]->restart(state_restart_global[i]);
used_restart_global[i] = 1;
if (comm->me == 0) {
const char *str = (const char *) ("Resetting global state of Fix %s "
"Style %s from restart file info\n");
if (screen) fprintf(screen,str,fix[ifix]->id,fix[ifix]->style);
if (logfile) fprintf(logfile,str,fix[ifix]->id,fix[ifix]->style);
if (screen)
fprintf(screen,"Resetting global fix info from restart file:\n");
if (logfile)
fprintf(logfile,"Resetting global fix info from restart file:\n");
if (screen) fprintf(screen," fix style: %s, fix ID: %s\n",
fix[ifix]->style,fix[ifix]->id);
if (logfile) fprintf(logfile," fix style: %s, fix ID: %s\n",
fix[ifix]->style,fix[ifix]->id);
}
}
@ -833,14 +840,19 @@ void Modify::add_fix(int narg, char **arg, int trysuffix)
for (int i = 0; i < nfix_restart_peratom; i++)
if (strcmp(id_restart_peratom[i],fix[ifix]->id) == 0 &&
strcmp(style_restart_peratom[i],fix[ifix]->style) == 0) {
used_restart_peratom[i] = 1;
for (int j = 0; j < atom->nlocal; j++)
fix[ifix]->unpack_restart(j,index_restart_peratom[i]);
fix[ifix]->restart_reset = 1;
if (comm->me == 0) {
char *str = (char *) ("Resetting per-atom state of Fix %s Style %s "
"from restart file info\n");
if (screen) fprintf(screen,str,fix[ifix]->id,fix[ifix]->style);
if (logfile) fprintf(logfile,str,fix[ifix]->id,fix[ifix]->style);
if (screen)
fprintf(screen,"Resetting peratom fix info from restart file:\n");
if (logfile)
fprintf(logfile,"Resetting peratom fix info from restart file:\n");
if (screen) fprintf(screen," fix style: %s, fix ID: %s\n",
fix[ifix]->style,fix[ifix]->id);
if (logfile) fprintf(logfile," fix style: %s, fix ID: %s\n",
fix[ifix]->style,fix[ifix]->id);
}
}
@ -1158,6 +1170,7 @@ int Modify::read_restart(FILE *fp)
id_restart_global = new char*[nfix_restart_global];
style_restart_global = new char*[nfix_restart_global];
state_restart_global = new char*[nfix_restart_global];
used_restart_global = new int[nfix_restart_global];
}
// read each entry and Bcast to all procs
@ -1182,6 +1195,8 @@ int Modify::read_restart(FILE *fp)
state_restart_global[i] = new char[n];
if (me == 0) fread(state_restart_global[i],sizeof(char),n,fp);
MPI_Bcast(state_restart_global[i],n,MPI_CHAR,0,world);
used_restart_global[i] = 0;
}
// nfix_restart_peratom = # of restart entries with peratom info
@ -1197,6 +1212,7 @@ int Modify::read_restart(FILE *fp)
id_restart_peratom = new char*[nfix_restart_peratom];
style_restart_peratom = new char*[nfix_restart_peratom];
index_restart_peratom = new int[nfix_restart_peratom];
used_restart_peratom = new int[nfix_restart_peratom];
}
// read each entry and Bcast to all procs
@ -1221,6 +1237,7 @@ int Modify::read_restart(FILE *fp)
maxsize += n;
index_restart_peratom[i] = i;
used_restart_peratom[i] = 0;
}
return maxsize;
@ -1228,11 +1245,36 @@ int Modify::read_restart(FILE *fp)
/* ----------------------------------------------------------------------
delete all lists of restart file Fix info
if flag set, print list of restart file info not assigned to new fixes
------------------------------------------------------------------------- */
void Modify::restart_deallocate()
void Modify::restart_deallocate(int flag)
{
if (nfix_restart_global) {
if (flag && comm->me == 0) {
int i;
for (i = 0; i < nfix_restart_global; i++)
if (used_restart_global[i] == 0) break;
if (i == nfix_restart_global) {
if (screen)
fprintf(screen,"All restart file global fix info "
"was re-assigned\n");
if (logfile)
fprintf(logfile,"All restart file global fix info "
"was re-assigned\n");
} else {
if (screen) fprintf(screen,"Unused restart file global fix info:\n");
if (logfile) fprintf(logfile,"Unused restart file global fix info:\n");
for (i = 0; i < nfix_restart_global; i++) {
if (used_restart_global[i]) continue;
if (screen) fprintf(screen," fix style: %s, fix ID: %s\n",
style_restart_global[i],id_restart_global[i]);
if (logfile) fprintf(logfile," fix style: %s, fix ID: %s\n",
style_restart_global[i],id_restart_global[i]);
}
}
}
for (int i = 0; i < nfix_restart_global; i++) {
delete [] id_restart_global[i];
delete [] style_restart_global[i];
@ -1241,9 +1283,34 @@ void Modify::restart_deallocate()
delete [] id_restart_global;
delete [] style_restart_global;
delete [] state_restart_global;
delete [] used_restart_global;
}
if (nfix_restart_peratom) {
if (flag && comm->me == 0) {
int i;
for (i = 0; i < nfix_restart_peratom; i++)
if (used_restart_peratom[i] == 0) break;
if (i == nfix_restart_peratom) {
if (screen)
fprintf(screen,"All restart file peratom fix info "
"was re-assigned\n");
if (logfile)
fprintf(logfile,"All restart file peratom fix info "
"was re-assigned\n");
} else {
if (screen) fprintf(screen,"Unused restart file peratom fix info:\n");
if (logfile) fprintf(logfile,"Unused restart file peratom fix info:\n");
for (i = 0; i < nfix_restart_peratom; i++) {
if (used_restart_peratom[i]) continue;
if (screen) fprintf(screen," fix style: %s, fix ID: %s\n",
style_restart_peratom[i],id_restart_peratom[i]);
if (logfile) fprintf(logfile," fix style: %s, fix ID: %s\n",
style_restart_peratom[i],id_restart_peratom[i]);
}
}
}
for (int i = 0; i < nfix_restart_peratom; i++) {
delete [] id_restart_peratom[i];
delete [] style_restart_peratom[i];
@ -1251,6 +1318,7 @@ void Modify::restart_deallocate()
delete [] id_restart_peratom;
delete [] style_restart_peratom;
delete [] index_restart_peratom;
delete [] used_restart_peratom;
}
nfix_restart_global = nfix_restart_peratom = 0;

View File

@ -107,7 +107,7 @@ class Modify : protected Pointers {
void write_restart(FILE *);
int read_restart(FILE *);
void restart_deallocate();
void restart_deallocate(int);
bigint memory_usage();
@ -135,10 +135,12 @@ class Modify : protected Pointers {
char **id_restart_global; // stored fix global info
char **style_restart_global; // from read-in restart file
char **state_restart_global;
int *used_restart_global;
char **id_restart_peratom; // stored fix peratom info
char **style_restart_peratom; // from read-in restart file
int *index_restart_peratom;
int *used_restart_peratom;
int index_permanent; // fix/compute index returned to library call

View File

@ -106,11 +106,12 @@ class Region : protected Pointers {
void options(int, char **);
void point_on_line_segment(double *, double *, double *, double *);
void forward_transform(double &, double &, double &);
double point[3],runit[3];
private:
char *xstr,*ystr,*zstr,*tstr;
int xvar,yvar,zvar,tvar;
double axis[3],point[3],runit[3];
double axis[3];
void inverse_transform(double &, double &, double &);
void rotate(double &, double &, double &, double);

View File

@ -1 +1 @@
#define LAMMPS_VERSION "6 Oct 2016"
#define LAMMPS_VERSION "11 Oct 2016"

View File

@ -32,7 +32,6 @@ using namespace LAMMPS_NS;
void WriteDump::command(int narg, char **arg)
{
if (narg < 3) error->all(FLERR,"Illegal write_dump command");
// modindex = index in args of "modify" keyword