Merge pull request #3161 from athomps/gcmc-relax-mol-mpi-error

Relaxed the error check on molecule moves in parallel. Molecule excha…
This commit is contained in:
Axel Kohlmeyer
2022-03-07 20:24:36 -05:00
committed by GitHub
5 changed files with 537 additions and 31 deletions

View File

@ -444,8 +444,15 @@ doc page for more info.
Do not set "neigh_modify once yes" or else this fix will never be Do not set "neigh_modify once yes" or else this fix will never be
called. Reneighboring is required. called. Reneighboring is required.
Only usable for 3D simulations.
Can be run in parallel, but aspects of the GCMC part will not scale Can be run in parallel, but aspects of the GCMC part will not scale
well in parallel. Only usable for 3D simulations. well in parallel. Currently, molecule translations and rotations
are not supported with more than one MPI process.
It is still possible to do parallel molecule exchange without
translation and rotation moves by setting MC moves to zero
and/or by using mcmoves keyword with *Pmoltrans*=*Pmolrotate*=0.
When using fix gcmc in combination with fix shake or fix rigid, When using fix gcmc in combination with fix shake or fix rigid,
only GCMC exchange moves are supported, so the argument only GCMC exchange moves are supported, so the argument

View File

@ -0,0 +1,198 @@
LAMMPS (17 Feb 2022)
# GCMC for CO2 molecular fluid, rigid/small dynamics
# Rigid CO2 TraPPE model
# [Potoff and J.I. Siepmann, Vapor-liquid equilibria of
# mixtures containing alkanes, carbon dioxide and
# nitrogen AIChE J., 47,1676-1682 (2001)].
# variables available on command line
variable mu index -8.1
variable disp index 0.5
variable temp index 338.0
variable lbox index 10.0
variable spacing index 5.0
# global model settings
units real
atom_style full
boundary p p p
pair_style lj/cut/coul/long 14
pair_modify mix arithmetic tail yes
kspace_style ewald 0.0001
bond_style harmonic
angle_style harmonic
# box, start molecules on simple cubic lattice
lattice sc ${spacing}
lattice sc 5.0
Lattice spacing in x,y,z = 5 5 5
region box block 0 ${lbox} 0 ${lbox} 0 ${lbox} units box
region box block 0 10.0 0 ${lbox} 0 ${lbox} units box
region box block 0 10.0 0 10.0 0 ${lbox} units box
region box block 0 10.0 0 10.0 0 10.0 units box
create_box 2 box bond/types 1 angle/types 1 extra/bond/per/atom 2 extra/angle/per/atom 1 extra/special/per/atom 2
Created orthogonal box = (0 0 0) to (10 10 10)
1 by 2 by 2 MPI processor grid
molecule co2mol CO2.txt
Read molecule template co2mol:
1 molecules
0 fragments
3 atoms with max type 2
2 bonds with max type 1
1 angles with max type 1
0 dihedrals with max type 0
0 impropers with max type 0
create_atoms 0 box mol co2mol 464563 units box
Created 24 atoms
using box units in orthogonal box = (0 0 0) to (10 10 10)
create_atoms CPU = 0.002 seconds
# rigid CO2 TraPPE model
pair_coeff 1 1 0.053649 2.8
pair_coeff 2 2 0.156973 3.05
bond_coeff 1 0 1.16
angle_coeff 1 0 180
# masses
mass 1 12.0107
mass 2 15.9994
# MD settings
group co2 type 1 2
24 atoms in group co2
neighbor 2.0 bin
neigh_modify every 1 delay 10 check yes
velocity all create ${temp} 54654
velocity all create 338.0 54654
timestep 1.0
# rigid constraints with thermostat
fix myrigid co2 rigid/small molecule mol co2mol
create bodies CPU = 0.000 seconds
8 rigid bodies with 24 atoms
1.16 = max distance from body owner to body atom
# dynamically update fix rigid/nvt/small temperature ndof
fix_modify myrigid dynamic/dof yes
# gcmc
variable tfac equal 5.0/3.0 # (3 trans + 2 rot)/(3 trans)
fix mygcmc co2 gcmc 100 100 0 0 54341 ${temp} ${mu} ${disp} mol co2mol tfac_insert ${tfac} group co2 rigid myrigid
fix mygcmc co2 gcmc 100 100 0 0 54341 338.0 ${mu} ${disp} mol co2mol tfac_insert ${tfac} group co2 rigid myrigid
fix mygcmc co2 gcmc 100 100 0 0 54341 338.0 -8.1 ${disp} mol co2mol tfac_insert ${tfac} group co2 rigid myrigid
fix mygcmc co2 gcmc 100 100 0 0 54341 338.0 -8.1 0.5 mol co2mol tfac_insert ${tfac} group co2 rigid myrigid
fix mygcmc co2 gcmc 100 100 0 0 54341 338.0 -8.1 0.5 mol co2mol tfac_insert 1.66666666666667 group co2 rigid myrigid
# atom counts
variable carbon atom "type==1"
variable oxygen atom "type==2"
group carbon dynamic co2 var carbon
dynamic group carbon defined
group oxygen dynamic co2 var oxygen
dynamic group oxygen defined
variable nC equal count(carbon)
variable nO equal count(oxygen)
# output
variable tacc equal f_mygcmc[2]/(f_mygcmc[1]+0.1)
variable iacc equal f_mygcmc[4]/(f_mygcmc[3]+0.1)
variable dacc equal f_mygcmc[6]/(f_mygcmc[5]+0.1)
variable racc equal f_mygcmc[8]/(f_mygcmc[7]+0.1)
# dynamically update default temperature ndof
compute_modify thermo_temp dynamic/dof yes
thermo_style custom step temp press pe ke density atoms v_iacc v_dacc v_tacc v_racc v_nC v_nO
thermo 1000
# run
run 20000
Ewald initialization ...
using 12-bit tables for long-range coulomb (src/kspace.cpp:340)
G vector (1/distance) = 0.16463644
estimated absolute RMS force accuracy = 0.033206372
estimated relative force accuracy = 0.0001
KSpace vectors: actual max1d max3d = 16 2 62
kxmax kymax kzmax = 2 2 2
generated 1 of 1 mixed pair_coeff terms from arithmetic mixing rule
WARNING: Fix gcmc using full_energy option (src/MC/fix_gcmc.cpp:486)
0 atoms in group FixGCMC:gcmc_exclusion_group:mygcmc
0 atoms in group FixGCMC:rotation_gas_atoms:mygcmc
WARNING: Neighbor exclusions used with KSpace solver may give inconsistent Coulombic energies (src/neighbor.cpp:635)
Neighbor list info ...
update every 1 steps, delay 10 steps, check yes
max neighbors/atom: 2000, page size: 100000
master list distance cutoff = 16
ghost atom cutoff = 16
binsize = 8, bins = 2 2 2
1 neighbor lists, perpetual/occasional/extra = 1 0 0
(1) pair lj/cut/coul/long, perpetual
attributes: half, newton on
pair build: half/bin/newton
stencil: half/bin/3d
bin: standard
Per MPI rank memory allocation (min/avg/max) = 15.98 | 15.98 | 15.98 Mbytes
Step Temp Press PotEng KinEng Density Atoms v_iacc v_dacc v_tacc v_racc v_nC v_nO
0 386.52184 23582.465 -3.2433417 14.209828 0.5846359 24 0 0 0 0 8 16
1000 384.36044 168.85423 -23.23758 19.858894 0.80387436 33 0.066251757 0.059749054 0 0 11 22
2000 259.20275 79.927114 -7.8419025 6.9537074 0.43847693 18 0.051929539 0.052057755 0 0 6 12
3000 302.33017 445.51546 -13.370306 12.616643 0.65771539 27 0.047267159 0.046725853 0 0 9 18
4000 311.19874 -941.64049 -29.224589 17.624862 0.87695385 36 0.054172258 0.052814245 0 0 12 24
5000 357.15913 -643.8797 -23.716174 18.453474 0.80387436 33 0.044110118 0.044289139 0 0 11 22
6000 343.81577 816.03183 -23.966196 17.764058 0.80387436 33 0.042107357 0.041553567 0 0 11 22
7000 360.66228 -396.06153 -12.261373 13.259144 0.5846359 24 0.046352562 0.047370093 0 0 8 16
8000 536.38773 97.164555 -1.3308134 6.3954798 0.21923846 9 0.088510977 0.090746839 0 0 3 6
9000 768.3631 251.53458 -0.87836731 5.3441371 0.14615898 6 0.11093712 0.11396968 0 0 2 4
10000 219.20608 -312.87929 -18.365974 9.1477634 0.65771539 27 0.117446 0.11875767 0 0 9 18
11000 380.32873 -455.7618 -19.955783 17.761107 0.73079488 30 0.11798452 0.11947738 0 0 10 20
12000 379.24355 197.4359 -2.1821544 4.521812 0.21923846 9 0.12913146 0.13205423 0 0 3 6
13000 396.07556 137.32879 -13.038496 14.561054 0.5846359 24 0.14552187 0.14709749 0 0 8 16
14000 324.11748 156.7682 -7.5905299 8.6951939 0.43847693 18 0.14458311 0.14598959 0 0 6 12
15000 355.07055 -171.07765 -14.067188 14.81757 0.65771539 27 0.14061899 0.14191715 0 0 9 18
16000 303.99764 -48.184319 -22.94389 15.70676 0.80387436 33 0.13709205 0.13778218 0 0 11 22
17000 233.8048 -12.817441 -10.840623 8.5954415 0.5846359 24 0.13670252 0.13812514 0 0 8 16
18000 288.74916 157.63378 -6.0604526 7.7463575 0.43847693 18 0.14212703 0.14298282 0 0 6 12
19000 285.23652 -41.79006 -1.0403841 1.9838837 0.14615898 6 0.1500458 0.15058244 0 0 2 4
20000 537.62536 77.091199 -3.9443433 9.0811682 0.29231795 12 0.15563619 0.1561609 0 0 4 8
Loop time of 8.33966 on 4 procs for 20000 steps with 12 atoms
Performance: 207.203 ns/day, 0.116 hours/ns, 2398.178 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.23792 | 0.33196 | 0.40407 | 10.7 | 3.98
Bond | 0.0061255 | 0.0062467 | 0.0063458 | 0.1 | 0.07
Kspace | 0.1676 | 0.2404 | 0.33413 | 12.6 | 2.88
Neigh | 0.019046 | 0.019101 | 0.01916 | 0.0 | 0.23
Comm | 0.67736 | 0.68025 | 0.68266 | 0.3 | 8.16
Output | 0.00081757 | 0.00087737 | 0.0010462 | 0.0 | 0.01
Modify | 7.0053 | 7.0093 | 7.0134 | 0.1 | 84.05
Other | | 0.05152 | | | 0.62
Nlocal: 3 ave 5 max 0 min
Histogram: 1 0 0 0 1 0 0 0 0 2
Nghost: 711 ave 750 max 671 min
Histogram: 1 1 0 0 0 0 0 0 0 2
Neighs: 321.25 ave 568 max 0 min
Histogram: 1 0 0 1 0 0 0 0 1 1
Total # of neighbors = 1285
Ave neighs/atom = 107.08333
Ave special neighs/atom = 2
Neighbor list builds = 20160
Dangerous builds = 0
Total wall time: 0:00:08

View File

@ -0,0 +1,296 @@
LAMMPS (17 Feb 2022)
# fix gcmc example with fix shake
# variables available on command line
variable mu index -8.1
variable disp index 0.5
variable temp index 338.0
variable lbox index 10.0
variable spacing index 5.0
# global model settings
units real
atom_style full
boundary p p p
pair_style lj/cut/coul/long 14
pair_modify mix arithmetic tail yes
kspace_style ewald 0.0001
bond_style harmonic
angle_style harmonic
# box, start molecules on simple cubic lattice
lattice sc ${spacing}
lattice sc 5.0
Lattice spacing in x,y,z = 5 5 5
region box block 0 ${lbox} 0 ${lbox} 0 ${lbox} units box
region box block 0 10.0 0 ${lbox} 0 ${lbox} units box
region box block 0 10.0 0 10.0 0 ${lbox} units box
region box block 0 10.0 0 10.0 0 10.0 units box
create_box 2 box bond/types 1 angle/types 1 extra/bond/per/atom 2 extra/angle/per/atom 1 extra/special/per/atom 2
Created orthogonal box = (0 0 0) to (10 10 10)
1 by 2 by 2 MPI processor grid
molecule h2omol H2O.txt
Read molecule template h2omol:
1 molecules
0 fragments
3 atoms with max type 2
2 bonds with max type 1
1 angles with max type 1
0 dihedrals with max type 0
0 impropers with max type 0
create_atoms 0 box mol h2omol 464563 units box
Created 24 atoms
using box units in orthogonal box = (0 0 0) to (10 10 10)
create_atoms CPU = 0.002 seconds
# rigid SPC/E water model
pair_coeff 1 1 0.15535 3.166
pair_coeff * 2 0.0000 0.0000
bond_coeff 1 1000 1.0
angle_coeff 1 100 109.47
# masses
mass 1 15.9994
mass 2 1.0
# MD settings
group h2o type 1 2
24 atoms in group h2o
neighbor 2.0 bin
neigh_modify every 1 delay 1 check yes
velocity all create ${temp} 54654
velocity all create 338.0 54654
timestep 1.0
minimize 0.0 0.0 100 1000
WARNING: Using 'neigh_modify every 1 delay 0 check yes' setting during minimization (src/min.cpp:187)
Ewald initialization ...
using 12-bit tables for long-range coulomb (src/kspace.cpp:340)
G vector (1/distance) = 0.17044845
estimated absolute RMS force accuracy = 0.033206374
estimated relative force accuracy = 0.00010000001
KSpace vectors: actual max1d max3d = 16 2 62
kxmax kymax kzmax = 2 2 2
generated 0 of 1 mixed pair_coeff terms from arithmetic 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 = 16
ghost atom cutoff = 16
binsize = 8, bins = 2 2 2
1 neighbor lists, perpetual/occasional/extra = 1 0 0
(1) pair lj/cut/coul/long, perpetual
attributes: half, newton on
pair build: half/bin/newton
stencil: half/bin/3d
bin: standard
Per MPI rank memory allocation (min/avg/max) = 11.85 | 11.85 | 11.85 Mbytes
Step Temp E_pair E_mol TotEng Press
0 338 -4.9610706 9.2628112e-06 18.211756 730.90791
100 338 -15.815905 0.10936727 7.4662793 -278.75864
Loop time of 0.0318772 on 4 procs for 100 steps with 24 atoms
99.9% CPU use with 4 MPI tasks x no OpenMP threads
Minimization stats:
Stopping criterion = max iterations
Energy initial, next-to-last, final =
-4.96106135392776 -15.6966371009978 -15.7065379926413
Force two-norm initial, final = 15.47396 4.3807065
Force max component initial, final = 5.8004229 2.0143175
Final line search alpha, max atom move = 0.0046871063 0.00944132
Iterations, force evaluations = 100 346
MPI task timing breakdown:
Section | min time | avg time | max time |%varavg| %total
---------------------------------------------------------------
Pair | 0.0044502 | 0.008939 | 0.014884 | 4.0 | 28.04
Bond | 0.00010079 | 0.00013115 | 0.0001615 | 0.0 | 0.41
Kspace | 0.0015161 | 0.0073496 | 0.011723 | 4.3 | 23.06
Neigh | 0 | 0 | 0 | 0.0 | 0.00
Comm | 0.013957 | 0.014086 | 0.01416 | 0.1 | 44.19
Output | 1.1416e-05 | 1.2871e-05 | 1.6202e-05 | 0.0 | 0.04
Modify | 0 | 0 | 0 | 0.0 | 0.00
Other | | 0.001359 | | | 4.26
Nlocal: 6 ave 8 max 3 min
Histogram: 1 0 0 0 1 0 0 0 0 2
Nghost: 1722 ave 1725 max 1720 min
Histogram: 2 0 0 0 0 0 1 0 0 1
Neighs: 1256.75 ave 2101 max 667 min
Histogram: 1 0 1 0 1 0 0 0 0 1
Total # of neighbors = 5027
Ave neighs/atom = 209.45833
Ave special neighs/atom = 2
Neighbor list builds = 0
Dangerous builds = 0
reset_timestep 0
# rigid constraints with thermostat
fix mynvt h2o nvt temp ${temp} ${temp} 100
fix mynvt h2o nvt temp 338.0 ${temp} 100
fix mynvt h2o nvt temp 338.0 338.0 100
fix wshake h2o shake 0.0001 50 0 b 1 a 1 mol h2omol
0 = # of size 2 clusters
0 = # of size 3 clusters
0 = # of size 4 clusters
8 = # of frozen angles
find clusters CPU = 0.001 seconds
# important to make temperature dofs dynamic
compute_modify thermo_temp dynamic/dof yes
compute_modify mynvt_temp dynamic/dof yes
run 1000
Ewald initialization ...
using 12-bit tables for long-range coulomb (src/kspace.cpp:340)
G vector (1/distance) = 0.17044845
estimated absolute RMS force accuracy = 0.033206374
estimated relative force accuracy = 0.00010000001
KSpace vectors: actual max1d max3d = 16 2 62
kxmax kymax kzmax = 2 2 2
generated 0 of 1 mixed pair_coeff terms from arithmetic mixing rule
Per MPI rank memory allocation (min/avg/max) = 11.6 | 11.6 | 11.6 Mbytes
Step Temp E_pair E_mol TotEng Press
0 518.26667 -15.815905 0 7.3569121 -385.7767
1000 240.84589 -44.723106 0 -33.954368 61.365522
Loop time of 0.0928135 on 4 procs for 1000 steps with 24 atoms
Performance: 930.900 ns/day, 0.026 hours/ns, 10774.300 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.0079337 | 0.014647 | 0.023202 | 4.8 | 15.78
Bond | 7.45e-05 | 9.0251e-05 | 0.00012098 | 0.0 | 0.10
Kspace | 0.0044849 | 0.012865 | 0.019419 | 5.0 | 13.86
Neigh | 0.0015513 | 0.0015789 | 0.0016063 | 0.1 | 1.70
Comm | 0.038145 | 0.038416 | 0.038704 | 0.1 | 41.39
Output | 9.084e-06 | 1.0765e-05 | 1.546e-05 | 0.0 | 0.01
Modify | 0.023572 | 0.023646 | 0.023723 | 0.0 | 25.48
Other | | 0.00156 | | | 1.68
Nlocal: 6 ave 9 max 1 min
Histogram: 1 0 0 0 0 0 1 0 1 1
Nghost: 1375.25 ave 1495 max 1251 min
Histogram: 1 0 0 1 0 0 1 0 0 1
Neighs: 1263.25 ave 2045 max 122 min
Histogram: 1 0 0 0 0 0 2 0 0 1
Total # of neighbors = 5053
Ave neighs/atom = 210.54167
Ave special neighs/atom = 2
Neighbor list builds = 30
Dangerous builds = 0
reset_timestep 0
# gcmc
variable tfac equal 5.0/3.0 # (3 trans + 2 rot)/(3 trans)
fix mygcmc h2o gcmc 100 100 0 0 54341 ${temp} ${mu} ${disp} mol h2omol tfac_insert ${tfac} group h2o shake wshake
fix mygcmc h2o gcmc 100 100 0 0 54341 338.0 ${mu} ${disp} mol h2omol tfac_insert ${tfac} group h2o shake wshake
fix mygcmc h2o gcmc 100 100 0 0 54341 338.0 -8.1 ${disp} mol h2omol tfac_insert ${tfac} group h2o shake wshake
fix mygcmc h2o gcmc 100 100 0 0 54341 338.0 -8.1 0.5 mol h2omol tfac_insert ${tfac} group h2o shake wshake
fix mygcmc h2o gcmc 100 100 0 0 54341 338.0 -8.1 0.5 mol h2omol tfac_insert 1.66666666666667 group h2o shake wshake
# atom counts
variable oxygen atom "type==1"
variable hydrogen atom "type==2"
group oxygen dynamic all var oxygen
dynamic group oxygen defined
group hydrogen dynamic all var hydrogen
dynamic group hydrogen defined
variable nO equal count(oxygen)
variable nH equal count(hydrogen)
# output
variable tacc equal f_mygcmc[2]/(f_mygcmc[1]+0.1)
variable iacc equal f_mygcmc[4]/(f_mygcmc[3]+0.1)
variable dacc equal f_mygcmc[6]/(f_mygcmc[5]+0.1)
variable racc equal f_mygcmc[8]/(f_mygcmc[7]+0.1)
thermo_style custom step temp press pe ke density atoms v_iacc v_dacc v_tacc v_racc v_nO v_nH
thermo 1000
# run
run 20000
Ewald initialization ...
using 12-bit tables for long-range coulomb (src/kspace.cpp:340)
G vector (1/distance) = 0.17044845
estimated absolute RMS force accuracy = 0.033206374
estimated relative force accuracy = 0.00010000001
KSpace vectors: actual max1d max3d = 16 2 62
kxmax kymax kzmax = 2 2 2
generated 0 of 1 mixed pair_coeff terms from arithmetic mixing rule
WARNING: Fix gcmc using full_energy option (src/MC/fix_gcmc.cpp:486)
0 atoms in group FixGCMC:gcmc_exclusion_group:mygcmc
0 atoms in group FixGCMC:rotation_gas_atoms:mygcmc
WARNING: Neighbor exclusions used with KSpace solver may give inconsistent Coulombic energies (src/neighbor.cpp:635)
Per MPI rank memory allocation (min/avg/max) = 11.6 | 11.6 | 11.6 Mbytes
Step Temp Press PotEng KinEng Density Atoms v_iacc v_dacc v_tacc v_racc v_nO v_nH
0 240.84589 61.724018 -44.723106 10.768738 0.23910963 24 0 0 0 0 8 16
1000 345.18281 -1439.9493 -275.72969 56.590842 0.83688372 84 0.054205983 0.013941446 0 0 28 56
2000 345.18939 -1776.1886 -334.1935 66.88136 0.98632724 99 0.03258324 0.0068755525 0 0 33 66
3000 371.00685 1611.457 -344.8868 71.883561 0.98632724 99 0.021303508 0.0046725853 0 0 33 66
4000 333.39448 -779.09163 -363.7251 66.583637 1.0162159 102 0.016400775 0.0035209497 0 0 34 68
5000 313.43793 1752.7257 -366.08712 62.598028 1.0162159 102 0.012996731 0.0028442566 0 0 34 68
6000 372.34785 3089.6885 -378.09103 74.36318 1.0162159 102 0.011272836 0.0026808753 0 0 34 68
7000 393.56304 1095.6551 -359.16911 78.600157 1.0162159 102 0.0096096775 0.0023107363 0 0 34 68
8000 378.04525 -1933.9224 -346.54153 75.501032 1.0162159 102 0.0084617108 0.0020089902 0 0 34 68
9000 297.05101 4804.6743 -367.61786 59.325326 1.0162159 102 0.0074970783 0.0017916732 0 0 34 68
10000 379.5212 -951.43658 -368.99713 78.058362 1.0461046 105 0.0069429291 0.0016131959 0 0 35 70
11000 308.54229 1335.2452 -378.61796 63.459711 1.0461046 105 0.006303921 0.0014684018 0 0 35 70
12000 375.19931 2791.9525 -368.98209 79.406248 1.0759934 108 0.0059493315 0.0013447412 0 0 36 72
13000 392.21002 4857.5806 -386.58586 83.006354 1.0759934 108 0.005490232 0.0012416383 0 0 36 72
14000 327.23916 3472.146 -393.65093 69.256081 1.0759934 108 0.0051077595 0.0011507314 0 0 36 72
15000 330.63194 5995.4662 -389.36253 69.974121 1.0759934 108 0.004761212 0.0010753989 0 0 36 72
16000 329.25034 694.90103 -387.21725 69.681723 1.0759934 108 0.0044719941 0.0010062767 0 0 36 72
17000 368.22282 -3340.8134 -399.58632 77.929761 1.0759934 108 0.0042070328 0.00094751928 0 0 36 72
18000 270.78376 1831.8085 -388.15376 57.308002 1.0759934 108 0.0039804956 0.00089324594 0 0 36 72
19000 337.54827 1211.6625 -387.9744 71.437877 1.0759934 108 0.0037779014 0.00084467485 0 0 36 72
20000 382.5465 5070.3639 -399.03603 83.241787 1.1058821 111 0.0036877934 0.00080264069 0 0 37 74
Loop time of 47.6346 on 4 procs for 20000 steps with 111 atoms
Performance: 36.276 ns/day, 0.662 hours/ns, 419.863 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 | 4.3783 | 5.9819 | 7.7932 | 52.3 | 12.56
Bond | 0.014825 | 0.015376 | 0.016097 | 0.4 | 0.03
Kspace | 0.27624 | 2.0815 | 3.68 | 88.4 | 4.37
Neigh | 0.60717 | 0.60731 | 0.60741 | 0.0 | 1.27
Comm | 1.6019 | 1.6072 | 1.6116 | 0.3 | 3.37
Output | 0.00049839 | 0.00055603 | 0.00072798 | 0.0 | 0.00
Modify | 37.253 | 37.253 | 37.253 | 0.0 | 78.21
Other | | 0.08782 | | | 0.18
Nlocal: 27.75 ave 31 max 26 min
Histogram: 2 0 0 0 1 0 0 0 0 1
Nghost: 6387 ave 6439 max 6327 min
Histogram: 1 0 0 1 0 0 0 0 1 1
Neighs: 26407 ave 33738 max 18362 min
Histogram: 1 0 0 0 0 2 0 0 0 1
Total # of neighbors = 105628
Ave neighs/atom = 951.6036
Ave special neighs/atom = 2
Neighbor list builds = 20923
Dangerous builds = 0
Total wall time: 0:00:47

View File

@ -62,7 +62,7 @@ using namespace MathConst;
#define MAXENERGYTEST 1.0e50 #define MAXENERGYTEST 1.0e50
enum{EXCHATOM,EXCHMOL}; // exchmode enum{EXCHATOM,EXCHMOL}; // exchmode
enum{MOVEATOM,MOVEMOL}; // movemode enum{NONE,MOVEATOM,MOVEMOL}; // movemode
/* ---------------------------------------------------------------------- */ /* ---------------------------------------------------------------------- */
@ -235,7 +235,7 @@ void FixGCMC::options(int narg, char **arg)
// defaults // defaults
exchmode = EXCHATOM; exchmode = EXCHATOM;
movemode = MOVEATOM; movemode = NONE;
patomtrans = 0.0; patomtrans = 0.0;
pmoltrans = 0.0; pmoltrans = 0.0;
pmolrotate = 0.0; pmolrotate = 0.0;
@ -447,27 +447,29 @@ void FixGCMC::init()
// set probabilities for MC moves // set probabilities for MC moves
if (pmctot == 0.0) if (nmcmoves > 0) {
if (exchmode == EXCHATOM) { if (pmctot == 0.0)
movemode = MOVEATOM; if (exchmode == EXCHATOM) {
patomtrans = 1.0; movemode = MOVEATOM;
pmoltrans = 0.0; patomtrans = 1.0;
pmolrotate = 0.0; pmoltrans = 0.0;
} else { pmolrotate = 0.0;
movemode = MOVEMOL; } else {
patomtrans = 0.0; movemode = MOVEMOL;
pmoltrans = 0.5; patomtrans = 0.0;
pmolrotate = 0.5; pmoltrans = 0.5;
} pmolrotate = 0.5;
else { }
if (pmoltrans == 0.0 && pmolrotate == 0.0) else {
movemode = MOVEATOM; if (pmoltrans == 0.0 && pmolrotate == 0.0)
else movemode = MOVEATOM;
movemode = MOVEMOL; else
patomtrans /= pmctot; movemode = MOVEMOL;
pmoltrans /= pmctot; patomtrans /= pmctot;
pmolrotate /= pmctot; pmoltrans /= pmctot;
} pmolrotate /= pmctot;
}
} else movemode = NONE;
// decide whether to switch to the full_energy option // decide whether to switch to the full_energy option
@ -681,11 +683,13 @@ void FixGCMC::init()
} }
} }
// Current implementation is broken using // current implementation is broken using
// full_flag on molecules on more than one processor. // full_flag and translation/rotation of molecules
// Print error if this is the current mode // on more than one processor.
if (full_flag && (exchmode == EXCHMOL || movemode == MOVEMOL) && comm->nprocs > 1)
error->all(FLERR,"fix gcmc does currently not support full_energy option with molecules on more than 1 MPI process."); if (full_flag && movemode == MOVEMOL && comm->nprocs > 1)
error->all(FLERR,"fix gcmc does currently not support full_energy "
"option with molecule MC moves on more than 1 MPI process.");
} }

View File

@ -311,9 +311,10 @@ E: Could not find specified fix gcmc group ID
Self-explanatory. Self-explanatory.
E: fix gcmc does currently not support full_energy option with molecules on more than 1 MPI process. E: fix gcmc does currently not support full_energy option with molecule MC moves on more than 1 MPI process.
UNDOCUMENTED It is still possible to do parallel molecule exchange without translation and rotation moves
by setting MC moves to zero and/or by using mcmoves keyword with Pmoltrans=Pmolrotate=0
W: Energy of old configuration in fix gcmc is > MAXENERGYTEST. W: Energy of old configuration in fix gcmc is > MAXENERGYTEST.