Merge pull request #890 from jrgissing/bond_react_final_touches

bond/react final touches
This commit is contained in:
Steve Plimpton 2018-05-07 10:37:47 -06:00 committed by GitHub
commit a7c9418629
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
9 changed files with 804 additions and 687 deletions

View File

@ -11,9 +11,9 @@ fix bond/react command :h3
[Syntax:]
fix ID group-ID bond/react common_keyword values ...
react react-ID react-group-ID Nevery Rmin template-ID(pre-reacted) template-ID(post-reacted) map_file individual_keyword values ...
react react-ID react-group-ID Nevery Rmin template-ID(pre-reacted) template-ID(post-reacted) map_file individual_keyword values ...
react react-ID react-group-ID Nevery Rmin template-ID(pre-reacted) template-ID(post-reacted) map_file individual_keyword values ...
react react-ID react-group-ID Nevery Rmin Rmax template-ID(pre-reacted) template-ID(post-reacted) map_file individual_keyword values ...
react react-ID react-group-ID Nevery Rmin Rmax template-ID(pre-reacted) template-ID(post-reacted) map_file individual_keyword values ...
react react-ID react-group-ID Nevery Rmin Rmax template-ID(pre-reacted) template-ID(post-reacted) map_file individual_keyword values ...
... :pre
ID, group-ID are documented in "fix"_fix.html command. Group-ID is ignored. :ulb,l
@ -24,12 +24,13 @@ common_keyword = {stabilization}
{stabilization} values = group-ID xmax
group-ID = user-assigned ID of an internally-created dynamic group that excludes reacting atoms, and can be used by a subsequent time integration fix such as nvt, npt, or nve (cannot be 'all')
{xmax} value = distance
distance = xmax value that is used by an internally created "nve/limit"_nve_limit.html integrator
distance = xmax value that is used by an internally created "nve/limit"_fix_nve_limit.html integrator
react = mandatory argument indicating new reaction specification
react-ID = user-assigned name for the reaction
react-group-ID = only atoms in this group are available for the reaction
Nevery = attempt reaction every this many steps :l
Rmin = bonding pair atoms separated by less than Rmin can initiate reaction (distance units) :l
Rmin = bonding pair atoms must be separated by more than Rmin to initiate reaction (distance units) :l
Rmax = bonding pair atoms must be separated by less than Rmax to initiate reaction (distance units) :l
template-ID(pre-reacted) = ID of a molecule template containing pre-reaction topology :l
template-ID(post-reacted) = ID of a molecule template containing post-reaction topology :l
map_file = name of file specifying corresponding atomIDs in the pre- and post-reacted templates :l
@ -46,15 +47,15 @@ react = mandatory argument indicating new reaction specification
molecule mol1 pre_reacted_topology.txt
molecule mol2 post_reacted_topology.txt
fix 5 all bond/react stabilization no react myrxn1 all 1 3.25 mol1 mol2 map_file.txt
fix 5 all bond/react stabilization no react myrxn1 all 1 0 3.25 mol1 mol2 map_file.txt
molecule mol1 pre_reacted_rxn1.txt
molecule mol2 post_reacted_rxn1.txt
molecule mol3 pre_reacted_rxn2.txt
molecule mol4 post_reacted_rxn2.txt
fix 5 all bond/react stabilization yes nvt_grp .03 &
react myrxn1 all 1 3.25 mol1 mol2 map_file_rxn1.txt prob 0.50 12345 &
react myrxn2 all 1 2.75 mol3 mol4 map_file_rxn2.txt prob 0.25 12345
react myrxn1 all 1 0 3.25 mol1 mol2 map_file_rxn1.txt prob 0.50 12345 &
react myrxn2 all 1 0 2.75 mol3 mol4 map_file_rxn2.txt prob 0.25 12345
fix 6 nvt_grp nvt temp 300 300 100 # system-wide thermostat must be defined after bond/react :pre
[Description:]
@ -101,9 +102,14 @@ The group-ID set using the {stabilization} keyword should be a
previously unused group-ID. The fix bond/react command creates a
"dynamic group"_group.html of this name that excludes reacting atoms.
This dynamic group-ID should then be used by a subsequent system-wide
time integrator, as shown in the second example above. It is necessary
to place the time integration command after the fix bond/react command
due to the internal dynamic grouping performed by fix bond/react.
time integrator, as shown in the second example above. It is currently
necessary to place the time integration command after the fix
bond/react command due to the internal dynamic grouping performed by
fix bond/react.
NOTE: The internally created group currently applies to all atoms in
the system, i.e. you should generally not have a separate thermostat
which acts on the 'all' group.
The following comments pertain to each 'react' argument:
@ -118,21 +124,20 @@ modified to match the post-reaction template.
A bonding atom pair will be identified if several conditions are met.
First, a pair of atoms within the specified react-group-ID of type
typei and typej must be within a distance Rmin of each other. The atom
types typei and typej are specified in the pre- and post-reaction
templates. The distance calculation uses the pair neighbor list,
therefore bonded neighbor exclusions may prevent a reaction between
1st, 2nd or 3rd bonded neighbor atoms. If multiple bonding atom pairs
are identified for an atom, the closest bonding atom partner is set as
its "nearest" bonding partner. Then, if both an atomi and atomj have
each other as their nearest bonding partners, these two atoms are
identified as the bonding atom pair of the reaction site. Once this
unique bonding atom pair is identified for each reaction, there could
two or more reactions that involve a given atom on the same timestep.
If this is the case, only one such reaction is permitted to occur.
This reaction is chosen randomly from all potential reactions. This
capability allows e.g. for different reaction pathways to proceed from
identical reaction sites with user-specified probabilities.
typei and typej must separated by a distance between Rmin and Rmax. It
is possible that multiple bonding atom pairs are identified: if the
bonding atoms in the pre-reacted template are not 1-2, 1-3, or 1-4
neighbors, the closest bonding atom partner is set as its bonding
partner; otherwise, the farthest potential partner is chosen. Then, if
both an atomi and atomj have each other as their nearest bonding
partners, these two atoms are identified as the bonding atom pair of
the reaction site. Once this unique bonding atom pair is identified
for each reaction, there could two or more reactions that involve a
given atom on the same timestep. If this is the case, only one such
reaction is permitted to occur. This reaction is chosen randomly from
all potential reactions. This capability allows e.g. for different
reaction pathways to proceed from identical reaction sites with
user-specified probabilities.
The pre-reacted molecule template is specified by a molecule command.
This molecule template file contains a sample reaction site and its
@ -262,9 +267,11 @@ angles, dihedrals or impropers are supported.
A few capabilities to note: 1) You may specify as many 'react'
arguments as desired. For example, you could break down a complicated
reaction mechanism into several reaction steps, each defined by its
own 'react' argument. 2) While typically a bond is formed between the
bonding atom pairs specified in the pre-reacted molecule template,
this is not required.
own 'react' argument. 2) While typically a bond is formed or removed
between the bonding atom pairs specified in the pre-reacted molecule
template, this is not required. 3) By reversing the order of the pre-
and post- reacted molecule templates in another 'react' argument, you
can allow for the possibility of one or more reverse reactions.
The optional keywords deal with the probability of a given reaction
occurring as well as the stable equilibration of each reaction site as
@ -300,14 +307,14 @@ reaction:
fix 1 bond_react_MASTER_group temp/rescale 1 300 300 10 1
NOTE: This command must be added after the fix bond/react command, and
will apply to all reaction steps.
will apply to all reactions.
Computationally, each timestep this fix operates, it loops over
neighbor lists and computes distances between pairs of atoms in the
list. It also communicates between neighboring processors to
coordinate which bonds are created. All of these operations increase
the cost of a timestep. Thus you should be cautious about invoking
this fix too frequently.
neighbor lists (for bond-forming reactions) and computes distances
between pairs of atoms in the list. It also communicates between
neighboring processors to coordinate which bonds are created and/or
removed. All of these operations increase the cost of a timestep. Thus
you should be cautious about invoking this fix too frequently.
You can dump out snapshots of the current bond topology via the dump
local command.

View File

@ -32,8 +32,8 @@ thermo 50
# dump 1 all xyz 100 test_vis.xyz
fix myrxns all bond/react stabilization yes statted_grp .03 &
react rxn1 all 1 2.9 mol1 mol2 rxn1_stp1_map &
react rxn2 all 1 5 mol3 mol4 rxn1_stp2_map
react rxn1 all 1 0.0 2.9 mol1 mol2 rxn1_stp1_map &
react rxn2 all 1 0.0 5.0 mol3 mol4 rxn1_stp2_map
# stable at 800K
fix 1 statted_grp nvt temp 800 800 100

View File

@ -84,7 +84,9 @@ thermo 50
# dump 1 all xyz 100 test_vis.xyz
fix myrxns all bond/react stabilization yes statted_grp .03 react rxn1 all 1 2.9 mol1 mol2 rxn1_stp1_map react rxn2 all 1 5 mol3 mol4 rxn1_stp2_map
fix myrxns all bond/react stabilization yes statted_grp .03 react rxn1 all 1 0.0 2.9 mol1 mol2 rxn1_stp1_map react rxn2 all 1 0.0 5.0 mol3 mol4 rxn1_stp2_map
WARNING: An atom in 'react #1' changes bond connectivity but not atom type (../fix_bond_react.cpp:1489)
WARNING: An atom in 'react #2' changes bond connectivity but not atom type (../fix_bond_react.cpp:1489)
dynamic group bond_react_MASTER_group defined
dynamic group statted_grp defined
dynamic group bond_react_MASTER_group defined
@ -132,39 +134,42 @@ Per MPI rank memory allocation (min/avg/max) = 209.1 | 209.1 | 209.1 Mbytes
Step Temp Press Density f_myrxns[1] f_myrxns[2]
0 800 3666.3948 0.80366765 0 0
50 673.95238 -9670.9169 0.80366765 31 0
100 693.69241 -4696.4359 0.80366765 57 22
150 715.44689 -14740.892 0.80366765 77 50
200 721.16898 -1411.95 0.80366765 84 66
Loop time of 107.389 on 1 procs for 200 steps with 35200 atoms
100 697.22819 -4624.0512 0.80366765 57 22
150 723.60507 -17175.571 0.80366765 76 48
200 736.71277 -12961.963 0.80366765 84 64
Loop time of 102.825 on 1 procs for 200 steps with 35200 atoms
Performance: 0.161 ns/day, 149.151 hours/ns, 1.862 timesteps/s
Performance: 0.168 ns/day, 142.812 hours/ns, 1.945 timesteps/s
99.7% CPU use with 1 MPI tasks x 1 OpenMP threads
MPI task timing breakdown:
Section | min time | avg time | max time |%varavg| %total
---------------------------------------------------------------
Pair | 27.191 | 27.191 | 27.191 | 0.0 | 25.32
Bond | 11.46 | 11.46 | 11.46 | 0.0 | 10.67
Kspace | 4.2507 | 4.2507 | 4.2507 | 0.0 | 3.96
Neigh | 55.544 | 55.544 | 55.544 | 0.0 | 51.72
Comm | 0.41715 | 0.41715 | 0.41715 | 0.0 | 0.39
Output | 0.0011044 | 0.0011044 | 0.0011044 | 0.0 | 0.00
Modify | 8.4756 | 8.4756 | 8.4756 | 0.0 | 7.89
Other | | 0.04897 | | | 0.05
Pair | 27.193 | 27.193 | 27.193 | 0.0 | 26.45
Bond | 11.324 | 11.324 | 11.324 | 0.0 | 11.01
Kspace | 4.1878 | 4.1878 | 4.1878 | 0.0 | 4.07
Neigh | 54.724 | 54.724 | 54.724 | 0.0 | 53.22
Comm | 0.40662 | 0.40662 | 0.40662 | 0.0 | 0.40
Output | 0.0011101 | 0.0011101 | 0.0011101 | 0.0 | 0.00
Modify | 4.9422 | 4.9422 | 4.9422 | 0.0 | 4.81
Other | | 0.04545 | | | 0.04
Nlocal: 35200 ave 35200 max 35200 min
Histogram: 1 0 0 0 0 0 0 0 0 0
Nghost: 38406 ave 38406 max 38406 min
Nghost: 38403 ave 38403 max 38403 min
Histogram: 1 0 0 0 0 0 0 0 0 0
Neighs: 6.92787e+06 ave 6.92787e+06 max 6.92787e+06 min
Neighs: 6.9281e+06 ave 6.9281e+06 max 6.9281e+06 min
Histogram: 1 0 0 0 0 0 0 0 0 0
Total # of neighbors = 6927872
Ave neighs/atom = 196.815
Ave special neighs/atom = 9.83489
Total # of neighbors = 6928101
Ave neighs/atom = 196.821
Ave special neighs/atom = 9.83727
Neighbor list builds = 200
Dangerous builds = 0
# write_restart restart_longrun
# write_data restart_longrun.data
Total wall time: 0:01:48
Please see the log.cite file for references relevant to this simulation
Total wall time: 0:01:43

View File

@ -84,7 +84,9 @@ thermo 50
# dump 1 all xyz 100 test_vis.xyz
fix myrxns all bond/react stabilization yes statted_grp .03 react rxn1 all 1 2.9 mol1 mol2 rxn1_stp1_map react rxn2 all 1 5 mol3 mol4 rxn1_stp2_map
fix myrxns all bond/react stabilization yes statted_grp .03 react rxn1 all 1 0.0 2.9 mol1 mol2 rxn1_stp1_map react rxn2 all 1 0.0 5.0 mol3 mol4 rxn1_stp2_map
WARNING: An atom in 'react #1' changes bond connectivity but not atom type (../fix_bond_react.cpp:1489)
WARNING: An atom in 'react #2' changes bond connectivity but not atom type (../fix_bond_react.cpp:1489)
dynamic group bond_react_MASTER_group defined
dynamic group statted_grp defined
dynamic group bond_react_MASTER_group defined
@ -132,39 +134,42 @@ Per MPI rank memory allocation (min/avg/max) = 81.11 | 81.13 | 81.15 Mbytes
Step Temp Press Density f_myrxns[1] f_myrxns[2]
0 800 3666.3948 0.80366765 0 0
50 673.95238 -9670.9169 0.80366765 31 0
100 693.69241 -4696.4359 0.80366765 57 22
150 715.43654 -14742.205 0.80366765 77 50
200 721.1906 -1411.4303 0.80366765 84 66
Loop time of 56.2311 on 4 procs for 200 steps with 35200 atoms
100 697.22819 -4624.0512 0.80366765 57 22
150 724.40407 -17166.729 0.80366765 76 49
200 737.28582 -12968.224 0.80366765 84 65
Loop time of 51.171 on 4 procs for 200 steps with 35200 atoms
Performance: 0.307 ns/day, 78.099 hours/ns, 3.557 timesteps/s
99.1% CPU use with 4 MPI tasks x 1 OpenMP threads
Performance: 0.338 ns/day, 71.071 hours/ns, 3.908 timesteps/s
98.4% CPU use with 4 MPI tasks x 1 OpenMP threads
MPI task timing breakdown:
Section | min time | avg time | max time |%varavg| %total
---------------------------------------------------------------
Pair | 13.86 | 14.034 | 14.406 | 5.8 | 24.96
Bond | 5.5592 | 5.5952 | 5.6492 | 1.4 | 9.95
Kspace | 2.3969 | 2.7523 | 2.9203 | 12.5 | 4.89
Neigh | 27.265 | 27.268 | 27.271 | 0.0 | 48.49
Comm | 0.75523 | 0.77355 | 0.79381 | 1.7 | 1.38
Output | 0.00051904 | 0.0007363 | 0.0013669 | 0.0 | 0.00
Modify | 5.7629 | 5.7634 | 5.7641 | 0.0 | 10.25
Other | | 0.04441 | | | 0.08
Pair | 12.926 | 13.247 | 13.493 | 6.7 | 25.89
Bond | 5.2132 | 5.2733 | 5.3367 | 1.9 | 10.31
Kspace | 2.3601 | 2.6534 | 3.0067 | 16.0 | 5.19
Neigh | 25.93 | 25.934 | 25.937 | 0.1 | 50.68
Comm | 0.73273 | 0.75464 | 0.78505 | 2.3 | 1.47
Output | 0.00045228 | 0.00067407 | 0.0013323 | 0.0 | 0.00
Modify | 3.2682 | 3.2686 | 3.2692 | 0.0 | 6.39
Other | | 0.03995 | | | 0.08
Nlocal: 8800 ave 8912 max 8666 min
Histogram: 1 0 0 1 0 0 0 0 1 1
Nghost: 18358.8 ave 18432 max 18189 min
Histogram: 1 0 0 0 0 0 0 0 1 2
Neighs: 1.73197e+06 ave 1.77209e+06 max 1.68475e+06 min
Nlocal: 8800 ave 8913 max 8652 min
Histogram: 1 0 0 0 1 0 0 0 1 1
Nghost: 18366 ave 18461 max 18190 min
Histogram: 1 0 0 0 0 0 0 1 1 1
Neighs: 1.73203e+06 ave 1.77261e+06 max 1.68165e+06 min
Histogram: 1 0 1 0 0 0 0 0 0 2
Total # of neighbors = 6927873
Ave neighs/atom = 196.815
Ave special neighs/atom = 9.83489
Total # of neighbors = 6928132
Ave neighs/atom = 196.822
Ave special neighs/atom = 9.83608
Neighbor list builds = 200
Dangerous builds = 0
# write_restart restart_longrun
# write_data restart_longrun.data
Total wall time: 0:00:57
Please see the log.cite file for references relevant to this simulation
Total wall time: 0:00:52

View File

@ -33,8 +33,8 @@ thermo 50
# dump 1 all xyz 1 test_vis.xyz
fix myrxns all bond/react stabilization yes statted_grp .03 &
react rxn1 all 1 2.9 mol1 mol2 rxn1_stp1_map &
react rxn2 all 1 5 mol3 mol4 rxn1_stp2_map
react rxn1 all 1 0.0 2.9 mol1 mol2 rxn1_stp1_map &
react rxn2 all 1 0.0 5.0 mol3 mol4 rxn1_stp2_map
fix 1 statted_grp nvt temp 300 300 100

View File

@ -85,7 +85,9 @@ thermo 50
# dump 1 all xyz 1 test_vis.xyz
fix myrxns all bond/react stabilization yes statted_grp .03 react rxn1 all 1 2.9 mol1 mol2 rxn1_stp1_map react rxn2 all 1 5 mol3 mol4 rxn1_stp2_map
fix myrxns all bond/react stabilization yes statted_grp .03 react rxn1 all 1 0.0 2.9 mol1 mol2 rxn1_stp1_map react rxn2 all 1 0.0 5.0 mol3 mol4 rxn1_stp2_map
WARNING: An atom in 'react #1' changes bond connectivity but not atom type (../fix_bond_react.cpp:1489)
WARNING: An atom in 'react #2' changes bond connectivity but not atom type (../fix_bond_react.cpp:1489)
dynamic group bond_react_MASTER_group defined
dynamic group statted_grp defined
dynamic group bond_react_MASTER_group defined
@ -131,235 +133,238 @@ Per MPI rank memory allocation (min/avg/max) = 33.34 | 33.34 | 33.34 Mbytes
Step Temp Press Density f_myrxns[1] f_myrxns[2]
0 300 346.78165 0.0034851739 0 0
50 296.70408 -51.30066 0.0034851739 1 0
100 275.26011 39.120329 0.0034851739 1 1
150 438.68516 35.257539 0.0034851739 1 1
200 394.48971 15.444537 0.0034851739 1 1
250 356.00369 50.185792 0.0034851739 1 1
300 301.25816 -26.891497 0.0034851739 1 1
350 279.17264 12.694513 0.0034851739 1 1
400 248.71641 10.684558 0.0034851739 1 1
450 240.30602 12.963034 0.0034851739 1 1
500 252.71279 0.91620356 0.0034851739 1 1
550 300.56824 18.541436 0.0034851739 1 1
600 306.46441 -1.9736081 0.0034851739 1 1
650 336.4537 21.474831 0.0034851739 1 1
700 323.46217 8.486376 0.0034851739 1 1
750 271.87146 5.9615231 0.0034851739 1 1
800 268.43041 36.676068 0.0034851739 1 1
850 269.02683 7.6295416 0.0034851739 1 1
900 282.03605 -1.4688833 0.0034851739 1 1
950 243.69136 -22.771489 0.0034851739 1 1
1000 285.01348 17.925748 0.0034851739 1 1
1050 383.47985 0.70536985 0.0034851739 1 1
1100 368.97167 -4.3046933 0.0034851739 1 1
1150 373.64459 6.3491837 0.0034851739 1 1
1200 332.90575 -36.501095 0.0034851739 1 1
1250 314.04078 -13.382767 0.0034851739 1 1
1300 305.84166 4.7713641 0.0034851739 1 1
1350 286.22145 37.621803 0.0034851739 1 1
1400 265.52855 23.621002 0.0034851739 1 1
1450 281.807 -31.266828 0.0034851739 1 1
1500 275.33855 33.495565 0.0034851739 1 1
1550 273.04973 -22.913871 0.0034851739 1 1
1600 308.18478 -17.98151 0.0034851739 1 1
1650 333.27664 28.987529 0.0034851739 1 1
1700 296.16091 -1.1440455 0.0034851739 1 1
1750 365.75611 34.574845 0.0034851739 1 1
1800 292.83503 -33.199654 0.0034851739 1 1
1850 261.50282 42.608703 0.0034851739 1 1
1900 315.14188 -31.058803 0.0034851739 1 1
1950 335.12895 12.40597 0.0034851739 1 1
2000 278.08586 -5.3178633 0.0034851739 1 1
2050 283.23847 -3.3974302 0.0034851739 1 1
2100 281.38904 0.70263324 0.0034851739 1 1
2150 302.23197 23.372316 0.0034851739 1 1
2200 337.49259 -4.8716803 0.0034851739 1 1
2250 409.64134 -12.043721 0.0034851739 1 1
2300 309.21764 -21.824645 0.0034851739 1 1
2350 290.97879 18.690281 0.0034851739 1 1
2400 341.816 -16.967741 0.0034851739 1 1
2450 310.28034 27.375518 0.0034851739 1 1
2500 248.89429 17.061192 0.0034851739 1 1
2550 273.10927 0.10481657 0.0034851739 1 1
2600 289.56101 -9.7239939 0.0034851739 1 1
2650 298.99719 -33.140576 0.0034851739 1 1
2700 326.05198 -24.509827 0.0034851739 1 1
2750 319.20612 24.305526 0.0034851739 1 1
2800 304.8715 -15.076941 0.0034851739 1 1
2850 374.38923 2.0874883 0.0034851739 1 1
2900 354.01554 -20.595102 0.0034851739 1 1
2950 289.89296 48.39731 0.0034851739 1 1
3000 312.10013 -8.5105997 0.0034851739 1 1
3050 296.97004 -31.008446 0.0034851739 1 1
3100 251.72228 35.710197 0.0034851739 1 1
3150 315.35895 -43.331536 0.0034851739 1 1
3200 334.67773 13.331058 0.0034851739 1 1
3250 308.1669 37.236121 0.0034851739 1 1
3300 329.47601 30.798598 0.0034851739 1 1
3350 299.40055 2.0785585 0.0034851739 1 1
3400 272.41031 32.744922 0.0034851739 1 1
3450 279.34594 -26.181793 0.0034851739 1 1
3500 288.89969 8.935052 0.0034851739 1 1
3550 253.4967 9.7244709 0.0034851739 1 1
3600 294.83266 19.33305 0.0034851739 1 1
3650 290.23794 -5.4939069 0.0034851739 1 1
3700 332.5222 -29.834229 0.0034851739 1 1
3750 364.63024 20.706191 0.0034851739 1 1
3800 295.3842 -6.9434004 0.0034851739 1 1
3850 346.84424 37.796066 0.0034851739 1 1
3900 265.67286 -0.31628068 0.0034851739 1 1
3950 260.455 -2.2571902 0.0034851739 1 1
4000 259.82636 -2.2286205 0.0034851739 1 1
4050 257.79848 24.520293 0.0034851739 1 1
4100 295.58626 -0.42318936 0.0034851739 1 1
4150 265.81353 -49.092436 0.0034851739 1 1
4200 302.10333 51.715259 0.0034851739 1 1
4250 258.98448 -4.8516655 0.0034851739 1 1
4300 327.83401 33.717282 0.0034851739 1 1
4350 311.59571 23.580382 0.0034851739 1 1
4400 300.64237 -31.866661 0.0034851739 1 1
4450 294.15643 -0.11927421 0.0034851739 1 1
4500 299.83605 -17.560873 0.0034851739 1 1
4550 326.83265 32.818482 0.0034851739 1 1
4600 260.39068 -8.0567902 0.0034851739 1 1
4650 247.93553 19.462991 0.0034851739 1 1
4700 214.22252 -34.118303 0.0034851739 1 1
4750 203.15329 27.356205 0.0034851739 1 1
4800 257.761 -10.407989 0.0034851739 1 1
4850 307.1923 11.71101 0.0034851739 1 1
4900 319.00942 4.7808306 0.0034851739 1 1
4950 282.23989 24.996151 0.0034851739 1 1
5000 311.53284 -3.0012665 0.0034851739 1 1
5050 317.58212 32.567832 0.0034851739 1 1
5100 267.51501 -47.695087 0.0034851739 1 1
5150 260.19048 29.046388 0.0034851739 1 1
5200 239.83552 -5.4890385 0.0034851739 1 1
5250 234.8852 -18.172633 0.0034851739 1 1
5300 236.43277 -39.06212 0.0034851739 1 1
5350 280.90079 -2.6932923 0.0034851739 1 1
5400 316.65266 23.071362 0.0034851739 1 1
5450 345.63226 19.573323 0.0034851739 1 1
5500 384.57334 41.507217 0.0034851739 1 1
5550 317.14278 9.6992897 0.0034851739 1 1
5600 279.93243 -12.076895 0.0034851739 1 1
5650 268.06471 1.6196401 0.0034851739 1 1
5700 271.85714 -40.378455 0.0034851739 1 1
5750 313.88363 10.722639 0.0034851739 1 1
5800 281.54495 31.914889 0.0034851739 1 1
5850 293.34821 -8.3154922 0.0034851739 1 1
5900 249.25216 -17.307353 0.0034851739 1 1
5950 268.18639 -4.7222512 0.0034851739 1 1
6000 302.99398 -52.615528 0.0034851739 1 1
6050 314.57931 34.51318 0.0034851739 1 1
6100 345.70348 30.334721 0.0034851739 1 1
6150 316.59329 31.862519 0.0034851739 1 1
6200 317.85346 -32.235221 0.0034851739 1 1
6250 282.97676 0.2936745 0.0034851739 1 1
6300 267.91814 19.265567 0.0034851739 1 1
6350 226.20967 -13.093547 0.0034851739 1 1
6400 307.73316 17.439598 0.0034851739 1 1
6450 292.16253 -23.275163 0.0034851739 1 1
6500 335.05939 26.936463 0.0034851739 1 1
6550 380.73546 19.532416 0.0034851739 1 1
6600 373.0103 30.879532 0.0034851739 1 1
6650 335.37975 -2.1762828 0.0034851739 1 1
6700 298.94272 -10.578587 0.0034851739 1 1
6750 255.11531 -50.576215 0.0034851739 1 1
6800 222.87459 3.0499548 0.0034851739 1 1
6850 268.57213 -43.675945 0.0034851739 1 1
6900 260.3024 4.7483005 0.0034851739 1 1
6950 289.15855 31.62106 0.0034851739 1 1
7000 289.11874 21.635533 0.0034851739 1 1
7050 361.08776 22.445996 0.0034851739 1 1
7100 368.95003 4.8383881 0.0034851739 1 1
7150 331.47448 -36.200495 0.0034851739 1 1
7200 304.7251 13.982693 0.0034851739 1 1
7250 284.09747 0.53758275 0.0034851739 1 1
7300 269.17023 -41.571482 0.0034851739 1 1
7350 222.07071 25.564662 0.0034851739 1 1
7400 304.09598 15.482955 0.0034851739 1 1
7450 298.78752 -7.4335841 0.0034851739 1 1
7500 328.78697 14.666097 0.0034851739 1 1
7550 347.07038 -37.165295 0.0034851739 1 1
7600 362.85673 20.52268 0.0034851739 1 1
7650 347.15141 2.3383775 0.0034851739 1 1
7700 262.10132 33.898374 0.0034851739 1 1
7750 275.84724 -33.534813 0.0034851739 1 1
7800 281.14075 -18.284372 0.0034851739 1 1
7850 264.83337 -30.580199 0.0034851739 1 1
7900 257.35275 -35.080567 0.0034851739 1 1
7950 286.32446 26.594779 0.0034851739 1 1
8000 248.36889 15.605894 0.0034851739 1 1
8050 292.55015 28.811985 0.0034851739 1 1
8100 312.47888 0.83990451 0.0034851739 1 1
8150 285.58532 -15.258185 0.0034851739 1 1
8200 292.22819 -38.233195 0.0034851739 1 1
8250 321.6208 -19.052143 0.0034851739 1 1
8300 319.41332 54.97437 0.0034851739 1 1
8350 307.95647 32.009591 0.0034851739 1 1
8400 345.58105 8.8535539 0.0034851739 1 1
8450 357.75168 12.416896 0.0034851739 1 1
8500 370.049 4.3288665 0.0034851739 1 1
8550 360.62882 12.618614 0.0034851739 1 1
8600 290.10834 -4.8081765 0.0034851739 1 1
8650 297.7575 -5.1976816 0.0034851739 1 1
8700 286.57505 -31.469549 0.0034851739 1 1
8750 307.77059 19.338001 0.0034851739 1 1
8800 231.68316 12.159459 0.0034851739 1 1
8850 329.13623 -8.7262592 0.0034851739 1 1
8900 286.40715 10.326025 0.0034851739 1 1
8950 339.43101 2.7809618 0.0034851739 1 1
9000 402.53799 19.481869 0.0034851739 1 1
9050 349.56449 -4.8450179 0.0034851739 1 1
9100 307.64739 16.889327 0.0034851739 1 1
9150 276.54451 -34.808372 0.0034851739 1 1
9200 233.18668 4.9409791 0.0034851739 1 1
9250 266.48384 -19.850366 0.0034851739 1 1
9300 289.14808 13.520201 0.0034851739 1 1
9350 295.08335 17.156468 0.0034851739 1 1
9400 338.08757 -31.112278 0.0034851739 1 1
9450 336.64739 -25.697747 0.0034851739 1 1
9500 338.10622 1.9241797 0.0034851739 1 1
9550 294.82158 -12.043972 0.0034851739 1 1
9600 268.9836 12.235553 0.0034851739 1 1
9650 279.6269 28.710734 0.0034851739 1 1
9700 279.88562 -10.865604 0.0034851739 1 1
9750 287.56565 12.975819 0.0034851739 1 1
9800 278.39949 4.2088595 0.0034851739 1 1
9850 307.61259 9.341169 0.0034851739 1 1
9900 317.53581 2.3948493 0.0034851739 1 1
9950 332.52938 -14.809185 0.0034851739 1 1
10000 401.93365 -7.637581 0.0034851739 1 1
Loop time of 1.94139 on 1 procs for 10000 steps with 44 atoms
100 274.25324 46.715512 0.0034851739 1 1
150 471.61579 31.321598 0.0034851739 1 1
200 362.87766 42.061118 0.0034851739 1 1
250 367.58058 65.303109 0.0034851739 1 1
300 372.38236 -52.421725 0.0034851739 1 1
350 297.69957 17.869945 0.0034851739 1 1
400 258.30433 49.19156 0.0034851739 1 1
450 253.34384 -5.8162637 0.0034851739 1 1
500 269.96465 -43.337517 0.0034851739 1 1
550 303.23718 10.180246 0.0034851739 1 1
600 329.59579 -48.97461 0.0034851739 1 1
650 350.42568 50.983183 0.0034851739 1 1
700 342.03272 35.43465 0.0034851739 1 1
750 269.23405 -41.873166 0.0034851739 1 1
800 245.15025 13.953092 0.0034851739 1 1
850 257.85421 -3.1492141 0.0034851739 1 1
900 316.15644 7.7798301 0.0034851739 1 1
950 299.9124 -15.77014 0.0034851739 1 1
1000 302.89968 -17.049693 0.0034851739 1 1
1050 308.91651 71.84632 0.0034851739 1 1
1100 348.43932 -18.742012 0.0034851739 1 1
1150 309.03036 50.536311 0.0034851739 1 1
1200 318.9761 -16.905746 0.0034851739 1 1
1250 320.42806 -0.057975092 0.0034851739 1 1
1300 289.7824 18.200772 0.0034851739 1 1
1350 284.79836 -9.1978427 0.0034851739 1 1
1400 325.43292 42.082833 0.0034851739 1 1
1450 261.5041 -37.823325 0.0034851739 1 1
1500 298.88723 -5.1647385 0.0034851739 1 1
1550 291.37403 -7.7764201 0.0034851739 1 1
1600 293.83475 22.2458 0.0034851739 1 1
1650 293.80611 24.202512 0.0034851739 1 1
1700 291.70205 -23.397884 0.0034851739 1 1
1750 292.32437 -10.671214 0.0034851739 1 1
1800 302.01367 -11.671025 0.0034851739 1 1
1850 322.1651 24.438331 0.0034851739 1 1
1900 310.45076 45.343592 0.0034851739 1 1
1950 325.91745 -19.847809 0.0034851739 1 1
2000 276.89662 63.387098 0.0034851739 1 1
2050 311.33783 -24.683247 0.0034851739 1 1
2100 346.2336 -27.526891 0.0034851739 1 1
2150 345.30604 -15.722411 0.0034851739 1 1
2200 346.7718 -17.857633 0.0034851739 1 1
2250 304.28676 -1.9965581 0.0034851739 1 1
2300 322.56372 -31.786868 0.0034851739 1 1
2350 282.64326 6.1982735 0.0034851739 1 1
2400 286.65759 -63.207781 0.0034851739 1 1
2450 257.05528 32.931491 0.0034851739 1 1
2500 283.64386 26.912373 0.0034851739 1 1
2550 299.54005 27.277039 0.0034851739 1 1
2600 283.92503 14.660972 0.0034851739 1 1
2650 321.93453 -18.977358 0.0034851739 1 1
2700 376.7189 31.826935 0.0034851739 1 1
2750 372.20075 -32.821697 0.0034851739 1 1
2800 361.40604 83.035183 0.0034851739 1 1
2850 332.27269 -23.927452 0.0034851739 1 1
2900 331.14638 -0.12328446 0.0034851739 1 1
2950 303.67489 -24.078857 0.0034851739 1 1
3000 311.40462 21.563537 0.0034851739 1 1
3050 284.72849 -23.849667 0.0034851739 1 1
3100 303.48477 39.347763 0.0034851739 1 1
3150 264.2739 -0.22299879 0.0034851739 1 1
3200 300.03351 31.545323 0.0034851739 1 1
3250 288.56663 5.7225228 0.0034851739 1 1
3300 200.13238 -31.239655 0.0034851739 1 1
3350 231.32512 16.631728 0.0034851739 1 1
3400 260.57402 2.1717992 0.0034851739 1 1
3450 301.47128 -42.210623 0.0034851739 1 1
3500 321.77414 40.074365 0.0034851739 1 1
3550 353.21858 28.387783 0.0034851739 1 1
3600 331.45989 -57.800858 0.0034851739 1 1
3650 303.88123 44.86596 0.0034851739 1 1
3700 329.73833 -0.80615652 0.0034851739 1 1
3750 297.55588 -0.49626039 0.0034851739 1 1
3800 286.38794 -10.010003 0.0034851739 1 1
3850 290.17417 -43.51187 0.0034851739 1 1
3900 247.88933 51.23735 0.0034851739 1 1
3950 332.31324 -18.194985 0.0034851739 1 1
4000 325.56802 18.402825 0.0034851739 1 1
4050 338.37593 36.430977 0.0034851739 1 1
4100 370.95478 39.290285 0.0034851739 1 1
4150 348.47859 -7.0779678 0.0034851739 1 1
4200 241.30632 -33.371788 0.0034851739 1 1
4250 242.17258 -9.986197 0.0034851739 1 1
4300 300.85311 -7.9244294 0.0034851739 1 1
4350 273.15684 -21.257283 0.0034851739 1 1
4400 305.77463 -5.8720722 0.0034851739 1 1
4450 314.97697 45.0373 0.0034851739 1 1
4500 310.77723 16.958773 0.0034851739 1 1
4550 302.1742 12.156862 0.0034851739 1 1
4600 319.74799 6.84889 0.0034851739 1 1
4650 270.86805 -13.767905 0.0034851739 1 1
4700 249.81731 -31.197487 0.0034851739 1 1
4750 285.86481 -9.8916364 0.0034851739 1 1
4800 233.98321 7.1338571 0.0034851739 1 1
4850 302.60551 49.262889 0.0034851739 1 1
4900 316.55056 34.663247 0.0034851739 1 1
4950 357.32741 11.583006 0.0034851739 1 1
5000 400.21045 -8.1781061 0.0034851739 1 1
5050 390.01845 -20.490275 0.0034851739 1 1
5100 378.84247 -41.328757 0.0034851739 1 1
5150 324.02038 -15.023862 0.0034851739 1 1
5200 262.08429 10.937354 0.0034851739 1 1
5250 255.75508 16.381455 0.0034851739 1 1
5300 277.84989 40.68232 0.0034851739 1 1
5350 302.92832 9.1989494 0.0034851739 1 1
5400 283.7196 -1.6584671 0.0034851739 1 1
5450 300.71266 -4.7030295 0.0034851739 1 1
5500 343.5499 -0.30550044 0.0034851739 1 1
5550 369.51271 21.691649 0.0034851739 1 1
5600 372.69789 -38.67994 0.0034851739 1 1
5650 327.41266 11.352137 0.0034851739 1 1
5700 278.98614 -23.827304 0.0034851739 1 1
5750 308.30054 -20.756187 0.0034851739 1 1
5800 341.45594 28.058441 0.0034851739 1 1
5850 322.97844 -10.731921 0.0034851739 1 1
5900 304.53591 32.825279 0.0034851739 1 1
5950 287.1752 -36.780091 0.0034851739 1 1
6000 296.52681 18.781896 0.0034851739 1 1
6050 314.25442 15.992829 0.0034851739 1 1
6100 313.86576 3.4342714 0.0034851739 1 1
6150 325.64196 32.392039 0.0034851739 1 1
6200 367.42931 -27.160706 0.0034851739 1 1
6250 369.30798 39.020934 0.0034851739 1 1
6300 328.92285 -23.175157 0.0034851739 1 1
6350 305.63077 4.9024453 0.0034851739 1 1
6400 241.70341 -13.676629 0.0034851739 1 1
6450 265.66717 2.40612 0.0034851739 1 1
6500 249.36037 13.420255 0.0034851739 1 1
6550 294.53814 10.853462 0.0034851739 1 1
6600 308.2025 18.995308 0.0034851739 1 1
6650 305.43797 -49.56785 0.0034851739 1 1
6700 320.27344 11.336281 0.0034851739 1 1
6750 321.78666 -23.463899 0.0034851739 1 1
6800 303.40388 7.6224553 0.0034851739 1 1
6850 297.18966 51.52256 0.0034851739 1 1
6900 284.18909 -8.4947203 0.0034851739 1 1
6950 331.03663 13.233655 0.0034851739 1 1
7000 311.37928 -43.265479 0.0034851739 1 1
7050 286.81661 -14.174683 0.0034851739 1 1
7100 302.84119 12.048954 0.0034851739 1 1
7150 297.19357 -43.111968 0.0034851739 1 1
7200 332.47359 26.048249 0.0034851739 1 1
7250 262.70677 41.176242 0.0034851739 1 1
7300 250.61405 -23.413982 0.0034851739 1 1
7350 296.91117 35.88133 0.0034851739 1 1
7400 245.09229 -13.447194 0.0034851739 1 1
7450 272.28131 -23.322585 0.0034851739 1 1
7500 209.04985 13.871239 0.0034851739 1 1
7550 255.00955 4.9325621 0.0034851739 1 1
7600 312.30937 -37.368274 0.0034851739 1 1
7650 305.65903 55.245496 0.0034851739 1 1
7700 325.09504 -18.347711 0.0034851739 1 1
7750 363.28282 -22.479686 0.0034851739 1 1
7800 350.17429 26.849547 0.0034851739 1 1
7850 271.70853 -17.764575 0.0034851739 1 1
7900 272.66484 -11.701967 0.0034851739 1 1
7950 298.60202 -12.765675 0.0034851739 1 1
8000 274.58852 49.641532 0.0034851739 1 1
8050 304.72347 -0.55414183 0.0034851739 1 1
8100 328.30757 -39.861301 0.0034851739 1 1
8150 406.67601 2.8999409 0.0034851739 1 1
8200 332.20083 -51.217399 0.0034851739 1 1
8250 354.50609 53.128769 0.0034851739 1 1
8300 337.2758 20.68562 0.0034851739 1 1
8350 361.89708 -54.185869 0.0034851739 1 1
8400 305.63496 24.058529 0.0034851739 1 1
8450 303.27461 4.304683 0.0034851739 1 1
8500 253.53694 -10.909021 0.0034851739 1 1
8550 277.03017 23.241479 0.0034851739 1 1
8600 291.41844 -22.240665 0.0034851739 1 1
8650 307.85368 31.919587 0.0034851739 1 1
8700 309.19724 0.53529642 0.0034851739 1 1
8750 354.6583 11.565515 0.0034851739 1 1
8800 329.78598 19.5996 0.0034851739 1 1
8850 240.79198 21.803515 0.0034851739 1 1
8900 318.40749 -59.816923 0.0034851739 1 1
8950 308.47211 -57.808635 0.0034851739 1 1
9000 271.51207 50.943482 0.0034851739 1 1
9050 249.4005 6.7529187 0.0034851739 1 1
9100 221.8772 47.196092 0.0034851739 1 1
9150 297.9351 4.0058184 0.0034851739 1 1
9200 274.85051 -24.774393 0.0034851739 1 1
9250 336.04757 5.3799028 0.0034851739 1 1
9300 380.44956 -22.389381 0.0034851739 1 1
9350 336.9824 23.050616 0.0034851739 1 1
9400 304.46425 32.530218 0.0034851739 1 1
9450 317.55591 -22.265425 0.0034851739 1 1
9500 323.70901 -7.0159787 0.0034851739 1 1
9550 316.07308 28.062131 0.0034851739 1 1
9600 262.74608 -0.78519192 0.0034851739 1 1
9650 271.55045 -21.430123 0.0034851739 1 1
9700 239.6022 14.483637 0.0034851739 1 1
9750 338.1437 -0.72765302 0.0034851739 1 1
9800 334.50189 19.495144 0.0034851739 1 1
9850 354.87554 19.272719 0.0034851739 1 1
9900 334.02141 -22.393457 0.0034851739 1 1
9950 293.63651 19.178873 0.0034851739 1 1
10000 319.81736 21.904414 0.0034851739 1 1
Loop time of 1.84987 on 1 procs for 10000 steps with 44 atoms
Performance: 445.042 ns/day, 0.054 hours/ns, 5150.945 timesteps/s
99.3% CPU use with 1 MPI tasks x 1 OpenMP threads
Performance: 467.059 ns/day, 0.051 hours/ns, 5405.774 timesteps/s
99.5% CPU use with 1 MPI tasks x 1 OpenMP threads
MPI task timing breakdown:
Section | min time | avg time | max time |%varavg| %total
---------------------------------------------------------------
Pair | 0.26479 | 0.26479 | 0.26479 | 0.0 | 13.64
Bond | 0.76875 | 0.76875 | 0.76875 | 0.0 | 39.60
Kspace | 0.32111 | 0.32111 | 0.32111 | 0.0 | 16.54
Neigh | 0.41333 | 0.41333 | 0.41333 | 0.0 | 21.29
Comm | 0.025956 | 0.025956 | 0.025956 | 0.0 | 1.34
Output | 0.0043445 | 0.0043445 | 0.0043445 | 0.0 | 0.22
Modify | 0.12526 | 0.12526 | 0.12526 | 0.0 | 6.45
Other | | 0.01786 | | | 0.92
Pair | 0.26152 | 0.26152 | 0.26152 | 0.0 | 14.14
Bond | 0.74069 | 0.74069 | 0.74069 | 0.0 | 40.04
Kspace | 0.30505 | 0.30505 | 0.30505 | 0.0 | 16.49
Neigh | 0.39991 | 0.39991 | 0.39991 | 0.0 | 21.62
Comm | 0.02261 | 0.02261 | 0.02261 | 0.0 | 1.22
Output | 0.0034585 | 0.0034585 | 0.0034585 | 0.0 | 0.19
Modify | 0.099979 | 0.099979 | 0.099979 | 0.0 | 5.40
Other | | 0.01666 | | | 0.90
Nlocal: 44 ave 44 max 44 min
Histogram: 1 0 0 0 0 0 0 0 0 0
Nghost: 62 ave 62 max 62 min
Nghost: 44 ave 44 max 44 min
Histogram: 1 0 0 0 0 0 0 0 0 0
Neighs: 812 ave 812 max 812 min
Neighs: 823 ave 823 max 823 min
Histogram: 1 0 0 0 0 0 0 0 0 0
Total # of neighbors = 812
Ave neighs/atom = 18.4545
Total # of neighbors = 823
Ave neighs/atom = 18.7045
Ave special neighs/atom = 9.77273
Neighbor list builds = 10000
Dangerous builds = 0
# write_restart restart_longrun
# write_data restart_longrun.data
Please see the log.cite file for references relevant to this simulation
Total wall time: 0:00:01

View File

@ -85,7 +85,9 @@ thermo 50
# dump 1 all xyz 1 test_vis.xyz
fix myrxns all bond/react stabilization yes statted_grp .03 react rxn1 all 1 2.9 mol1 mol2 rxn1_stp1_map react rxn2 all 1 5 mol3 mol4 rxn1_stp2_map
fix myrxns all bond/react stabilization yes statted_grp .03 react rxn1 all 1 0.0 2.9 mol1 mol2 rxn1_stp1_map react rxn2 all 1 0.0 5.0 mol3 mol4 rxn1_stp2_map
WARNING: An atom in 'react #1' changes bond connectivity but not atom type (../fix_bond_react.cpp:1489)
WARNING: An atom in 'react #2' changes bond connectivity but not atom type (../fix_bond_react.cpp:1489)
dynamic group bond_react_MASTER_group defined
dynamic group statted_grp defined
dynamic group bond_react_MASTER_group defined
@ -131,235 +133,238 @@ Per MPI rank memory allocation (min/avg/max) = 33.34 | 33.69 | 34.37 Mbytes
Step Temp Press Density f_myrxns[1] f_myrxns[2]
0 300 346.78165 0.0034851739 0 0
50 296.70408 -51.30066 0.0034851739 1 0
100 275.26011 39.120329 0.0034851739 1 1
150 438.68516 35.257539 0.0034851739 1 1
200 394.48971 15.444537 0.0034851739 1 1
250 356.00369 50.185792 0.0034851739 1 1
300 301.25816 -26.891497 0.0034851739 1 1
350 279.17264 12.694513 0.0034851739 1 1
400 248.71641 10.684558 0.0034851739 1 1
450 240.30602 12.963034 0.0034851739 1 1
500 252.71279 0.91620356 0.0034851739 1 1
550 300.56824 18.541436 0.0034851739 1 1
600 306.46441 -1.9736081 0.0034851739 1 1
650 336.4537 21.474831 0.0034851739 1 1
700 323.46217 8.486376 0.0034851739 1 1
750 271.87146 5.9615231 0.0034851739 1 1
800 268.43041 36.676068 0.0034851739 1 1
850 269.02683 7.6295416 0.0034851739 1 1
900 282.03605 -1.4688833 0.0034851739 1 1
950 243.69136 -22.771489 0.0034851739 1 1
1000 285.01348 17.925748 0.0034851739 1 1
1050 383.47985 0.70536985 0.0034851739 1 1
1100 368.97167 -4.3046933 0.0034851739 1 1
1150 373.64459 6.3491837 0.0034851739 1 1
1200 332.90575 -36.501095 0.0034851739 1 1
1250 314.04078 -13.382767 0.0034851739 1 1
1300 305.84166 4.7713641 0.0034851739 1 1
1350 286.22145 37.621803 0.0034851739 1 1
1400 265.52855 23.621002 0.0034851739 1 1
1450 281.807 -31.266828 0.0034851739 1 1
1500 275.33855 33.495565 0.0034851739 1 1
1550 273.04973 -22.913871 0.0034851739 1 1
1600 308.18478 -17.98151 0.0034851739 1 1
1650 333.27664 28.987529 0.0034851739 1 1
1700 296.16091 -1.1440455 0.0034851739 1 1
1750 365.75611 34.574845 0.0034851739 1 1
1800 292.83503 -33.199654 0.0034851739 1 1
1850 261.50282 42.608703 0.0034851739 1 1
1900 315.14188 -31.058803 0.0034851739 1 1
1950 335.12895 12.40597 0.0034851739 1 1
2000 278.08586 -5.3178633 0.0034851739 1 1
2050 283.23847 -3.3974302 0.0034851739 1 1
2100 281.38904 0.70263324 0.0034851739 1 1
2150 302.23197 23.372316 0.0034851739 1 1
2200 337.49259 -4.8716803 0.0034851739 1 1
2250 409.64134 -12.043721 0.0034851739 1 1
2300 309.21764 -21.824645 0.0034851739 1 1
2350 290.97879 18.690281 0.0034851739 1 1
2400 341.816 -16.967741 0.0034851739 1 1
2450 310.28034 27.375518 0.0034851739 1 1
2500 248.89429 17.061192 0.0034851739 1 1
2550 273.10927 0.1048166 0.0034851739 1 1
2600 289.56101 -9.7239939 0.0034851739 1 1
2650 298.99719 -33.140576 0.0034851739 1 1
2700 326.05198 -24.509827 0.0034851739 1 1
2750 319.20612 24.305526 0.0034851739 1 1
2800 304.8715 -15.076941 0.0034851739 1 1
2850 374.38923 2.0874883 0.0034851739 1 1
2900 354.01554 -20.595102 0.0034851739 1 1
2950 289.89296 48.39731 0.0034851739 1 1
3000 312.10013 -8.5105996 0.0034851739 1 1
3050 296.97004 -31.008446 0.0034851739 1 1
3100 251.72228 35.710197 0.0034851739 1 1
3150 315.35895 -43.331536 0.0034851739 1 1
3200 334.67773 13.331058 0.0034851739 1 1
3250 308.1669 37.236121 0.0034851739 1 1
3300 329.47601 30.798598 0.0034851739 1 1
3350 299.40055 2.0785585 0.0034851739 1 1
3400 272.41031 32.744921 0.0034851739 1 1
3450 279.34594 -26.181793 0.0034851739 1 1
3500 288.89969 8.935052 0.0034851739 1 1
3550 253.4967 9.724471 0.0034851739 1 1
3600 294.83266 19.33305 0.0034851739 1 1
3650 290.23794 -5.493907 0.0034851739 1 1
3700 332.5222 -29.83423 0.0034851739 1 1
3750 364.63024 20.706191 0.0034851739 1 1
3800 295.3842 -6.9434003 0.0034851739 1 1
3850 346.84424 37.796066 0.0034851739 1 1
3900 265.67286 -0.3162804 0.0034851739 1 1
3950 260.455 -2.2571901 0.0034851739 1 1
4000 259.82636 -2.2286207 0.0034851739 1 1
4050 257.79848 24.520293 0.0034851739 1 1
4100 295.58626 -0.42318895 0.0034851739 1 1
4150 265.81352 -49.092436 0.0034851739 1 1
4200 302.10333 51.715258 0.0034851739 1 1
4250 258.98448 -4.8516657 0.0034851739 1 1
4300 327.83401 33.717283 0.0034851739 1 1
4350 311.59571 23.580382 0.0034851739 1 1
4400 300.64237 -31.866661 0.0034851739 1 1
4450 294.15642 -0.11927262 0.0034851739 1 1
4500 299.83605 -17.560872 0.0034851739 1 1
4550 326.83265 32.818481 0.0034851739 1 1
4600 260.39068 -8.0567907 0.0034851739 1 1
4650 247.93553 19.462991 0.0034851739 1 1
4700 214.22252 -34.118304 0.0034851739 1 1
4750 203.15329 27.356204 0.0034851739 1 1
4800 257.761 -10.407986 0.0034851739 1 1
4850 307.1923 11.711008 0.0034851739 1 1
4900 319.00942 4.7808342 0.0034851739 1 1
4950 282.2399 24.996151 0.0034851739 1 1
5000 311.53284 -3.0012669 0.0034851739 1 1
5050 317.58213 32.56782 0.0034851739 1 1
5100 267.51502 -47.695103 0.0034851739 1 1
5150 260.19047 29.046394 0.0034851739 1 1
5200 239.8355 -5.4890372 0.0034851739 1 1
5250 234.88522 -18.172649 0.0034851739 1 1
5300 236.43278 -39.062111 0.0034851739 1 1
5350 280.90083 -2.6932604 0.0034851739 1 1
5400 316.65269 23.071363 0.0034851739 1 1
5450 345.6322 19.573305 0.0034851739 1 1
5500 384.57334 41.50729 0.0034851739 1 1
5550 317.14286 9.6992981 0.0034851739 1 1
5600 279.93246 -12.076859 0.0034851739 1 1
5650 268.06471 1.6196502 0.0034851739 1 1
5700 271.85714 -40.378489 0.0034851739 1 1
5750 313.88361 10.722652 0.0034851739 1 1
5800 281.54499 31.914883 0.0034851739 1 1
5850 293.34819 -8.3155887 0.0034851739 1 1
5900 249.25215 -17.307228 0.0034851739 1 1
5950 268.18645 -4.7223601 0.0034851739 1 1
6000 302.99402 -52.615432 0.0034851739 1 1
6050 314.57946 34.513152 0.0034851739 1 1
6100 345.70342 30.33474 0.0034851739 1 1
6150 316.59329 31.862566 0.0034851739 1 1
6200 317.85341 -32.23511 0.0034851739 1 1
6250 282.97674 0.29367434 0.0034851739 1 1
6300 267.91823 19.265617 0.0034851739 1 1
6350 226.2098 -13.093573 0.0034851739 1 1
6400 307.73307 17.439662 0.0034851739 1 1
6450 292.16311 -23.275251 0.0034851739 1 1
6500 335.05972 26.936588 0.0034851739 1 1
6550 380.7351 19.532324 0.0034851739 1 1
6600 373.01041 30.879146 0.0034851739 1 1
6650 335.37897 -2.1766711 0.0034851739 1 1
6700 298.94275 -10.578361 0.0034851739 1 1
6750 255.11449 -50.575851 0.0034851739 1 1
6800 222.87598 3.0488985 0.0034851739 1 1
6850 268.57268 -43.676136 0.0034851739 1 1
6900 260.30442 4.7484508 0.0034851739 1 1
6950 289.15739 31.622589 0.0034851739 1 1
7000 289.11733 21.636361 0.0034851739 1 1
7050 361.08905 22.442487 0.0034851739 1 1
7100 368.95006 4.8393179 0.0034851739 1 1
7150 331.47878 -36.202032 0.0034851739 1 1
7200 304.72518 13.982604 0.0034851739 1 1
7250 284.0996 0.53900966 0.0034851739 1 1
7300 269.17156 -41.572215 0.0034851739 1 1
7350 222.06563 25.56579 0.0034851739 1 1
7400 304.09479 15.48238 0.0034851739 1 1
7450 298.79046 -7.4369454 0.0034851739 1 1
7500 328.78217 14.672853 0.0034851739 1 1
7550 347.06589 -37.168123 0.0034851739 1 1
7600 362.84157 20.514912 0.0034851739 1 1
7650 347.15916 2.3477485 0.0034851739 1 1
7700 262.09822 33.901831 0.0034851739 1 1
7750 275.85921 -33.536059 0.0034851739 1 1
7800 281.16159 -18.288414 0.0034851739 1 1
7850 264.83553 -30.566284 0.0034851739 1 1
7900 257.35224 -35.087067 0.0034851739 1 1
7950 286.30756 26.586163 0.0034851739 1 1
8000 248.38175 15.601961 0.0034851739 1 1
8050 292.59171 28.784541 0.0034851739 1 1
8100 312.52852 0.87995053 0.0034851739 1 1
8150 285.62346 -15.337252 0.0034851739 1 1
8200 292.24175 -38.192576 0.0034851739 1 1
8250 321.61618 -19.030398 0.0034851739 1 1
8300 319.42189 55.078305 0.0034851739 1 1
8350 308.00357 32.050518 0.0034851739 1 1
8400 345.68186 8.7983733 0.0034851739 1 1
8450 358.00849 12.434592 0.0034851739 1 1
8500 370.14359 4.2184721 0.0034851739 1 1
8550 360.6511 12.580836 0.0034851739 1 1
8600 290.04938 -4.8422589 0.0034851739 1 1
8650 297.95745 -5.3185591 0.0034851739 1 1
8700 286.54284 -31.490479 0.0034851739 1 1
8750 308.08791 19.24417 0.0034851739 1 1
8800 231.72534 12.262217 0.0034851739 1 1
8850 329.2349 -8.9133933 0.0034851739 1 1
8900 287.64023 10.525164 0.0034851739 1 1
8950 341.08296 2.80127 0.0034851739 1 1
9000 403.71266 17.88418 0.0034851739 1 1
9050 348.95132 -4.5813611 0.0034851739 1 1
9100 307.98322 16.707575 0.0034851739 1 1
9150 276.75719 -35.563923 0.0034851739 1 1
9200 230.15547 3.8091656 0.0034851739 1 1
9250 264.64479 -20.97438 0.0034851739 1 1
9300 285.70467 13.881735 0.0034851739 1 1
9350 297.515 13.599319 0.0034851739 1 1
9400 341.45203 -28.494544 0.0034851739 1 1
9450 319.29703 -27.907344 0.0034851739 1 1
9500 332.50473 4.9891138 0.0034851739 1 1
9550 293.10499 -8.3244772 0.0034851739 1 1
9600 255.31174 2.2568315 0.0034851739 1 1
9650 250.01932 5.7005159 0.0034851739 1 1
9700 278.37409 -8.5970424 0.0034851739 1 1
9750 294.86737 17.686447 0.0034851739 1 1
9800 277.07345 -2.0856886 0.0034851739 1 1
9850 295.54707 2.8365471 0.0034851739 1 1
9900 311.51074 29.885116 0.0034851739 1 1
9950 296.01363 12.206068 0.0034851739 1 1
10000 341.35187 -3.0045464 0.0034851739 1 1
Loop time of 3.64332 on 4 procs for 10000 steps with 44 atoms
100 274.25324 46.715512 0.0034851739 1 1
150 471.61579 31.321598 0.0034851739 1 1
200 362.87766 42.061118 0.0034851739 1 1
250 367.58058 65.303109 0.0034851739 1 1
300 372.38236 -52.421725 0.0034851739 1 1
350 297.69957 17.869945 0.0034851739 1 1
400 258.30433 49.19156 0.0034851739 1 1
450 253.34384 -5.8162637 0.0034851739 1 1
500 269.96465 -43.337517 0.0034851739 1 1
550 303.23718 10.180246 0.0034851739 1 1
600 329.59579 -48.97461 0.0034851739 1 1
650 350.42568 50.983183 0.0034851739 1 1
700 342.03272 35.43465 0.0034851739 1 1
750 269.23405 -41.873166 0.0034851739 1 1
800 245.15025 13.953092 0.0034851739 1 1
850 257.85421 -3.1492141 0.0034851739 1 1
900 316.15644 7.7798301 0.0034851739 1 1
950 299.9124 -15.77014 0.0034851739 1 1
1000 302.89968 -17.049693 0.0034851739 1 1
1050 308.91651 71.84632 0.0034851739 1 1
1100 348.43932 -18.742012 0.0034851739 1 1
1150 309.03036 50.536311 0.0034851739 1 1
1200 318.9761 -16.905746 0.0034851739 1 1
1250 320.42806 -0.057975092 0.0034851739 1 1
1300 289.7824 18.200772 0.0034851739 1 1
1350 284.79836 -9.1978427 0.0034851739 1 1
1400 325.43292 42.082833 0.0034851739 1 1
1450 261.5041 -37.823325 0.0034851739 1 1
1500 298.88723 -5.1647385 0.0034851739 1 1
1550 291.37403 -7.7764201 0.0034851739 1 1
1600 293.83475 22.2458 0.0034851739 1 1
1650 293.80611 24.202512 0.0034851739 1 1
1700 291.70205 -23.397884 0.0034851739 1 1
1750 292.32437 -10.671214 0.0034851739 1 1
1800 302.01367 -11.671025 0.0034851739 1 1
1850 322.1651 24.438331 0.0034851739 1 1
1900 310.45076 45.343592 0.0034851739 1 1
1950 325.91745 -19.847809 0.0034851739 1 1
2000 276.89662 63.387098 0.0034851739 1 1
2050 311.33783 -24.683247 0.0034851739 1 1
2100 346.2336 -27.526891 0.0034851739 1 1
2150 345.30604 -15.722411 0.0034851739 1 1
2200 346.7718 -17.857633 0.0034851739 1 1
2250 304.28676 -1.9965581 0.0034851739 1 1
2300 322.56372 -31.786868 0.0034851739 1 1
2350 282.64326 6.1982735 0.0034851739 1 1
2400 286.65759 -63.207781 0.0034851739 1 1
2450 257.05528 32.931491 0.0034851739 1 1
2500 283.64386 26.912373 0.0034851739 1 1
2550 299.54005 27.277039 0.0034851739 1 1
2600 283.92503 14.660972 0.0034851739 1 1
2650 321.93453 -18.977358 0.0034851739 1 1
2700 376.7189 31.826935 0.0034851739 1 1
2750 372.20075 -32.821697 0.0034851739 1 1
2800 361.40604 83.035183 0.0034851739 1 1
2850 332.27269 -23.927452 0.0034851739 1 1
2900 331.14638 -0.12328446 0.0034851739 1 1
2950 303.67489 -24.078857 0.0034851739 1 1
3000 311.40462 21.563537 0.0034851739 1 1
3050 284.72849 -23.849667 0.0034851739 1 1
3100 303.48477 39.347763 0.0034851739 1 1
3150 264.2739 -0.22299878 0.0034851739 1 1
3200 300.03351 31.545323 0.0034851739 1 1
3250 288.56663 5.7225229 0.0034851739 1 1
3300 200.13238 -31.239655 0.0034851739 1 1
3350 231.32512 16.631728 0.0034851739 1 1
3400 260.57402 2.1717992 0.0034851739 1 1
3450 301.47128 -42.210623 0.0034851739 1 1
3500 321.77414 40.074365 0.0034851739 1 1
3550 353.21858 28.387783 0.0034851739 1 1
3600 331.45989 -57.800858 0.0034851739 1 1
3650 303.88123 44.86596 0.0034851739 1 1
3700 329.73833 -0.8061567 0.0034851739 1 1
3750 297.55588 -0.49626022 0.0034851739 1 1
3800 286.38794 -10.010003 0.0034851739 1 1
3850 290.17417 -43.51187 0.0034851739 1 1
3900 247.88933 51.23735 0.0034851739 1 1
3950 332.31324 -18.194985 0.0034851739 1 1
4000 325.56802 18.402825 0.0034851739 1 1
4050 338.37594 36.430977 0.0034851739 1 1
4100 370.95478 39.290285 0.0034851739 1 1
4150 348.47859 -7.0779683 0.0034851739 1 1
4200 241.30632 -33.371789 0.0034851739 1 1
4250 242.17258 -9.9861962 0.0034851739 1 1
4300 300.85311 -7.924429 0.0034851739 1 1
4350 273.15684 -21.257282 0.0034851739 1 1
4400 305.77464 -5.8720712 0.0034851739 1 1
4450 314.97697 45.037299 0.0034851739 1 1
4500 310.77723 16.958771 0.0034851739 1 1
4550 302.17421 12.156862 0.0034851739 1 1
4600 319.74799 6.8488914 0.0034851739 1 1
4650 270.86805 -13.767907 0.0034851739 1 1
4700 249.81731 -31.197484 0.0034851739 1 1
4750 285.86481 -9.8916332 0.0034851739 1 1
4800 233.98321 7.1338518 0.0034851739 1 1
4850 302.60551 49.262886 0.0034851739 1 1
4900 316.55055 34.663238 0.0034851739 1 1
4950 357.32741 11.583013 0.0034851739 1 1
5000 400.21044 -8.1780861 0.0034851739 1 1
5050 390.01845 -20.490268 0.0034851739 1 1
5100 378.84249 -41.328772 0.0034851739 1 1
5150 324.02039 -15.023852 0.0034851739 1 1
5200 262.08427 10.937367 0.0034851739 1 1
5250 255.75506 16.381495 0.0034851739 1 1
5300 277.84991 40.682283 0.0034851739 1 1
5350 302.92834 9.1989644 0.0034851739 1 1
5400 283.71964 -1.6583895 0.0034851739 1 1
5450 300.71261 -4.703054 0.0034851739 1 1
5500 343.54987 -0.30546396 0.0034851739 1 1
5550 369.51272 21.691639 0.0034851739 1 1
5600 372.69786 -38.679919 0.0034851739 1 1
5650 327.41256 11.352201 0.0034851739 1 1
5700 278.9861 -23.82728 0.0034851739 1 1
5750 308.30037 -20.756238 0.0034851739 1 1
5800 341.4559 28.058314 0.0034851739 1 1
5850 322.9786 -10.731862 0.0034851739 1 1
5900 304.53598 32.825105 0.0034851739 1 1
5950 287.17515 -36.780057 0.0034851739 1 1
6000 296.52688 18.782156 0.0034851739 1 1
6050 314.25411 15.99272 0.0034851739 1 1
6100 313.86572 3.4344108 0.0034851739 1 1
6150 325.64197 32.39212 0.0034851739 1 1
6200 367.4298 -27.161154 0.0034851739 1 1
6250 369.30937 39.020881 0.0034851739 1 1
6300 328.92245 -23.175612 0.0034851739 1 1
6350 305.6293 4.9011587 0.0034851739 1 1
6400 241.70456 -13.675247 0.0034851739 1 1
6450 265.66574 2.4049735 0.0034851739 1 1
6500 249.3592 13.420453 0.0034851739 1 1
6550 294.5367 10.856753 0.0034851739 1 1
6600 308.20246 18.992923 0.0034851739 1 1
6650 305.43756 -49.57151 0.0034851739 1 1
6700 320.27395 11.339101 0.0034851739 1 1
6750 321.7875 -23.463361 0.0034851739 1 1
6800 303.40316 7.6256997 0.0034851739 1 1
6850 297.18652 51.52186 0.0034851739 1 1
6900 284.19084 -8.496294 0.0034851739 1 1
6950 331.04173 13.227745 0.0034851739 1 1
7000 311.38027 -43.26105 0.0034851739 1 1
7050 286.82046 -14.171194 0.0034851739 1 1
7100 302.81691 12.058085 0.0034851739 1 1
7150 297.18018 -43.110658 0.0034851739 1 1
7200 332.46131 26.051496 0.0034851739 1 1
7250 262.72288 41.161451 0.0034851739 1 1
7300 250.62739 -23.440907 0.0034851739 1 1
7350 296.92141 35.869216 0.0034851739 1 1
7400 245.06807 -13.467896 0.0034851739 1 1
7450 272.2659 -23.292836 0.0034851739 1 1
7500 209.05776 13.888665 0.0034851739 1 1
7550 255.03716 4.9662624 0.0034851739 1 1
7600 312.26011 -37.350427 0.0034851739 1 1
7650 305.5823 55.208039 0.0034851739 1 1
7700 325.13382 -18.370791 0.0034851739 1 1
7750 363.24898 -22.473126 0.0034851739 1 1
7800 350.19254 26.792307 0.0034851739 1 1
7850 271.76418 -17.843445 0.0034851739 1 1
7900 272.70301 -11.709349 0.0034851739 1 1
7950 298.5993 -12.736235 0.0034851739 1 1
8000 274.52611 49.657345 0.0034851739 1 1
8050 304.73711 -0.52485689 0.0034851739 1 1
8100 328.29239 -39.901891 0.0034851739 1 1
8150 406.52096 2.8669076 0.0034851739 1 1
8200 332.17309 -51.168754 0.0034851739 1 1
8250 354.68419 53.003157 0.0034851739 1 1
8300 337.28934 20.766408 0.0034851739 1 1
8350 361.81133 -54.159227 0.0034851739 1 1
8400 305.59597 24.011667 0.0034851739 1 1
8450 303.25823 4.423341 0.0034851739 1 1
8500 253.50747 -11.026949 0.0034851739 1 1
8550 277.13504 23.204625 0.0034851739 1 1
8600 291.40211 -22.253861 0.0034851739 1 1
8650 307.93765 32.14162 0.0034851739 1 1
8700 309.1529 0.36279434 0.0034851739 1 1
8750 355.10326 11.677219 0.0034851739 1 1
8800 330.21328 19.235269 0.0034851739 1 1
8850 241.29109 21.707386 0.0034851739 1 1
8900 319.15363 -60.010115 0.0034851739 1 1
8950 308.88552 -57.637014 0.0034851739 1 1
9000 272.22373 51.15837 0.0034851739 1 1
9050 248.84947 7.3390565 0.0034851739 1 1
9100 221.91564 48.387079 0.0034851739 1 1
9150 298.03506 2.9058639 0.0034851739 1 1
9200 274.25114 -24.597819 0.0034851739 1 1
9250 334.08373 5.1079577 0.0034851739 1 1
9300 383.07285 -23.274763 0.0034851739 1 1
9350 335.00581 20.94212 0.0034851739 1 1
9400 309.23862 34.074744 0.0034851739 1 1
9450 312.62262 -28.468057 0.0034851739 1 1
9500 324.54274 2.851136 0.0034851739 1 1
9550 313.32781 22.468182 0.0034851739 1 1
9600 269.04372 4.064934 0.0034851739 1 1
9650 270.98476 -21.520127 0.0034851739 1 1
9700 236.8736 16.250728 0.0034851739 1 1
9750 333.94686 1.6864148 0.0034851739 1 1
9800 330.91875 12.150018 0.0034851739 1 1
9850 343.8603 25.338853 0.0034851739 1 1
9900 330.93364 -28.292992 0.0034851739 1 1
9950 291.25518 25.795948 0.0034851739 1 1
10000 319.25565 25.323846 0.0034851739 1 1
Loop time of 3.55353 on 4 procs for 10000 steps with 44 atoms
Performance: 237.146 ns/day, 0.101 hours/ns, 2744.751 timesteps/s
94.5% CPU use with 4 MPI tasks x 1 OpenMP threads
Performance: 243.139 ns/day, 0.099 hours/ns, 2814.105 timesteps/s
93.4% CPU use with 4 MPI tasks x 1 OpenMP threads
MPI task timing breakdown:
Section | min time | avg time | max time |%varavg| %total
---------------------------------------------------------------
Pair | 0.0029962 | 0.10426 | 0.34564 | 43.9 | 2.86
Bond | 0.005929 | 0.29803 | 0.95305 | 71.2 | 8.18
Kspace | 0.83969 | 1.5992 | 1.9344 | 35.6 | 43.89
Neigh | 0.65468 | 0.66443 | 0.67431 | 0.9 | 18.24
Comm | 0.1727 | 0.23754 | 0.2745 | 8.0 | 6.52
Output | 0.0048738 | 0.010774 | 0.028434 | 9.8 | 0.30
Modify | 0.62478 | 0.70376 | 0.779 | 6.5 | 19.32
Other | | 0.02531 | | | 0.69
Pair | 0.0030422 | 0.10454 | 0.35211 | 44.8 | 2.94
Bond | 0.0063896 | 0.29222 | 0.94356 | 71.3 | 8.22
Kspace | 0.88508 | 1.6486 | 1.979 | 35.1 | 46.39
Neigh | 0.61154 | 0.62212 | 0.63307 | 1.0 | 17.51
Comm | 0.18944 | 0.24549 | 0.29196 | 7.9 | 6.91
Output | 0.0050066 | 0.011804 | 0.032134 | 10.8 | 0.33
Modify | 0.52282 | 0.60522 | 0.69588 | 7.9 | 17.03
Other | | 0.02359 | | | 0.66
Nlocal: 11 ave 40 max 0 min
Histogram: 2 1 0 0 0 0 0 0 0 1
Nghost: 36 ave 47 max 7 min
Nlocal: 11 ave 44 max 0 min
Histogram: 3 0 0 0 0 0 0 0 0 1
Nghost: 33 ave 44 max 0 min
Histogram: 1 0 0 0 0 0 0 0 0 3
Neighs: 203 ave 809 max 0 min
Neighs: 205.75 ave 823 max 0 min
Histogram: 3 0 0 0 0 0 0 0 0 1
Total # of neighbors = 812
Ave neighs/atom = 18.4545
Total # of neighbors = 823
Ave neighs/atom = 18.7045
Ave special neighs/atom = 9.77273
Neighbor list builds = 10000
Dangerous builds = 0
# write_restart restart_longrun
# write_data restart_longrun.data
Please see the log.cite file for references relevant to this simulation
Total wall time: 0:00:03

View File

@ -43,6 +43,17 @@ Contributing Author: Jacob Gissinger (jacob.gissinger@colorado.edu)
using namespace LAMMPS_NS;
using namespace FixConst;
static const char cite_fix_bond_react[] =
"fix bond/react:\n\n"
"@Article{Gissinger17,\n"
" author = {J. R. Gissinger, B. D. Jensen, K. E. Wise},\n"
" title = {Modeling chemical reactions in classical molecular dynamics simulations},\n"
" journal = {Polymer},\n"
" year = 2017,\n"
" volume = 128,\n"
" pages = {211--217}\n"
"}\n\n";
#define BIG 1.0e20
#define DELTA 16
#define MAXLINE 256
@ -62,6 +73,8 @@ enum{ACCEPT,REJECT,PROCEED,CONTINUE,GUESSFAIL,RESTORE};
FixBondReact::FixBondReact(LAMMPS *lmp, int narg, char **arg) :
Fix(lmp, narg, arg)
{
if (lmp->citeme) lmp->citeme->add(cite_fix_bond_react);
fix1 = NULL;
fix2 = NULL;
@ -71,7 +84,6 @@ FixBondReact::FixBondReact(LAMMPS *lmp, int narg, char **arg) :
MPI_Comm_size(world,&nprocs);
attempted_rxn = 0;
ghostcheck_flag = 0;
force_reneighbor = 1;
next_reneighbor = -1;
vector_flag = 1;
@ -127,7 +139,7 @@ FixBondReact::FixBondReact(LAMMPS *lmp, int narg, char **arg) :
// this looks excessive
// the price of vectorization (all reactions in one command)?
memory->create(nevery,nreacts,"bond/react:nevery");
memory->create(cutsq,nreacts,"bond/react:cutsq");
memory->create(cutsq,nreacts,2,"bond/react:cutsq");
memory->create(unreacted_mol,nreacts,"bond/react:unreacted_mol");
memory->create(reacted_mol,nreacts,"bond/react:reacted_mol");
memory->create(fraction,nreacts,"bond/react:fraction");
@ -138,6 +150,7 @@ FixBondReact::FixBondReact(LAMMPS *lmp, int narg, char **arg) :
memory->create(jatomtype,nreacts,"bond/react:jatomtype");
memory->create(ibonding,nreacts,"bond/react:ibonding");
memory->create(jbonding,nreacts,"bond/react:jbonding");
memory->create(closeneigh,nreacts,"bond/react:closeneigh");
memory->create(groupbits,nreacts,"bond/react:groupbits");
memory->create(reaction_count,nreacts,"bond/react:reaction_count");
memory->create(local_rxn_count,nreacts,"bond/react:local_rxn_count");
@ -176,7 +189,11 @@ FixBondReact::FixBondReact(LAMMPS *lmp, int narg, char **arg) :
double cutoff = force->numeric(FLERR,arg[iarg++]);
if (cutoff < 0.0) error->all(FLERR,"Illegal fix bond/react command 0.5");
cutsq[rxn] = cutoff*cutoff;
cutsq[rxn][0] = cutoff*cutoff;
cutoff = force->numeric(FLERR,arg[iarg++]);
if (cutoff < 0.0) error->all(FLERR,"Illegal fix bond/react command 0.55");
cutsq[rxn][1] = cutoff*cutoff;
unreacted_mol[rxn] = atom->find_molecule(arg[iarg++]);
if (unreacted_mol[rxn] == -1) error->all(FLERR,"Unreacted molecule template ID for "
@ -241,6 +258,23 @@ FixBondReact::FixBondReact(LAMMPS *lmp, int narg, char **arg) :
if (atom->molecular != 1)
error->all(FLERR,"Cannot use fix bond/react with non-molecular systems");
// check if bonding atoms are 1-2, 1-3, or 1-4 bonded neighbors
// if so, we don't need non-bonded neighbor list
for (int myrxn = 0; myrxn < nreacts; myrxn++) {
closeneigh[myrxn] = -1; // indicates will search non-bonded neighbors
onemol = atom->molecules[unreacted_mol[myrxn]];
for (int k = 0; k < onemol->nspecial[ibonding[myrxn]-1][2]; k++) {
if (onemol->special[ibonding[myrxn]-1][k] == jbonding[myrxn]) {
closeneigh[myrxn] = 2; // index for 1-4 neighbor
if (k < onemol->nspecial[ibonding[myrxn]-1][1])
closeneigh[myrxn] = 1; // index for 1-3 neighbor
if (k < onemol->nspecial[ibonding[myrxn]-1][0])
closeneigh[myrxn] = 0; // index for 1-2 neighbor
break;
}
}
}
// initialize Marsaglia RNG with processor-unique seed
random = new class RanMars*[nreacts];
@ -259,6 +293,7 @@ FixBondReact::FixBondReact(LAMMPS *lmp, int narg, char **arg) :
nmax = 0;
partner = finalpartner = NULL;
distsq = NULL;
probability = NULL;
maxcreate = 0;
created = NULL;
local_ncreate = NULL;
@ -302,6 +337,7 @@ FixBondReact::~FixBondReact()
memory->destroy(local_ncreate);
memory->destroy(ncreate);
memory->destroy(distsq);
memory->destroy(probability);
memory->destroy(created);
memory->destroy(edge);
memory->destroy(equivalences);
@ -320,6 +356,7 @@ FixBondReact::~FixBondReact()
memory->destroy(jatomtype);
memory->destroy(ibonding);
memory->destroy(jbonding);
memory->destroy(closeneigh);
memory->destroy(groupbits);
memory->destroy(reaction_count);
memory->destroy(local_rxn_count);
@ -372,7 +409,7 @@ it will have the name 'i_limit_tags' and will be intitialized to 0 (not in group
void FixBondReact::post_constructor()
{
//let's add the limit_tags per-atom property fix
// let's add the limit_tags per-atom property fix
int len = strlen("per_atom_props") + 1;
id_fix2 = new char[len];
strcpy(id_fix2,"per_atom_props");
@ -521,7 +558,7 @@ void FixBondReact::init()
// check cutoff for iatomtype,jatomtype
for (int i = 0; i < nreacts; i++) {
if (force->pair == NULL || cutsq[i] > force->pair->cutsq[iatomtype[i]][jatomtype[i]])
if (force->pair == NULL || cutsq[i][1] > force->pair->cutsq[iatomtype[i]][jatomtype[i]])
error->all(FLERR,"Fix bond/react cutoff is longer than pairwise cutoff");
}
@ -548,10 +585,6 @@ void FixBondReact::init_list(int id, NeighList *ptr)
void FixBondReact::post_integrate()
{
int inum,jnum,itype,jtype,possible;
double xtmp,ytmp,ztmp,delx,dely,delz,rsq;
int *ilist,*jlist,*numneigh,**firstneigh;
// check if any reactions could occur on this timestep
int nevery_check = 1;
for (int i = 0; i < nreacts; i++) {
@ -578,7 +611,6 @@ void FixBondReact::post_integrate()
comm->forward_comm();
// resize bond partner list and initialize it
// probability array overlays distsq array
// needs to be atom->nmax in length
if (atom->nmax > nmax) {
@ -587,13 +619,14 @@ void FixBondReact::post_integrate()
memory->destroy(distsq);
memory->destroy(local_ncreate);
memory->destroy(ncreate);
memory->destroy(probability);
nmax = atom->nmax;
memory->create(partner,nmax,"bond/react:partner");
memory->create(finalpartner,nmax,"bond/react:finalpartner");
memory->create(distsq,nmax,"bond/react:distsq");
memory->create(distsq,nmax,2,"bond/react:distsq");
memory->create(local_ncreate,nreacts,"bond/react:local_ncreate");
memory->create(ncreate,nreacts,"bond/react:ncreate");
probability = distsq;
memory->create(probability,nmax,"bond/react:probability");
}
// reset create counts
@ -605,129 +638,28 @@ void FixBondReact::post_integrate()
int nlocal = atom->nlocal;
int nall = atom->nlocal + atom->nghost;
// NOTE: this might be faster if we remembered neighbor distances from
// previous timestep and used those --JG
// loop over neighbors of my atoms
// each atom sets one closest eligible partner atom ID to bond with
double **x = atom->x;
tagint *tag = atom->tag;
int **nspecial = atom->nspecial;
tagint **special = atom->special;
int *mask = atom->mask;
int *type = atom->type;
neighbor->build_one(list,1);
inum = list->inum;
ilist = list->ilist;
numneigh = list->numneigh;
firstneigh = list->firstneigh;
// per-atom property indicating if in bond/react master group
int flag;
int index1 = atom->find_custom("limit_tags",flag);
int *i_limit_tags = atom->ivector[index1];
int j;
int i,j;
for (int myrxn = 0; myrxn < nreacts; myrxn++) {
for (rxnID = 0; rxnID < nreacts; rxnID++) {
for (int ii = 0; ii < nall; ii++) {
partner[ii] = 0;
finalpartner[ii] = 0;
distsq[ii] = BIG;
distsq[ii][0] = 0.0;
distsq[ii][1] = BIG;
}
for (int ii = 0; ii < inum; ii++) { // inum vs nlocal
i = ilist[ii];
if (!(mask[i] & groupbits[myrxn])) continue;
if (i_limit_tags[i] != 0) continue;
itype = type[i];
xtmp = x[i][0];
ytmp = x[i][1];
ztmp = x[i][2];
jlist = firstneigh[i];
jnum = numneigh[i];
for (int jj = 0; jj < jnum; jj++) {
j = jlist[jj];
j &= NEIGHMASK;
if (!(mask[j] & groupbits[myrxn])) {
continue;
}
if (i_limit_tags[j] != 0) {
continue;
}
jtype = type[j];
possible = 0;
if (itype == iatomtype[myrxn] && jtype == jatomtype[myrxn]) {
possible = 1;
} else if (itype == jatomtype[myrxn] && jtype == iatomtype[myrxn]) {
possible = 1;
}
if (possible == 0) continue;
for (int k = 0; k < nspecial[i][0]; k++)
if (special[i][k] == tag[j]) possible = 0;
if (!possible) continue;
// NOTE(for below): certain neighbor list settings prevent 3-cycles anyway!
// e.g., in my examples, must use kspace command to include 1-3 neighbors for consideration here
// do not allow a three-membered ring to be created (by the new bond)
// check 1-3 neighbors of atom I
for (int k = nspecial[i][0]; k < nspecial[i][1]; k++)
if (special[i][k] == tag[j]) possible = 0;
if (possible == 0) {
continue;
}
// do not allow a four-membered ring to be created (by the new bond)
// check 1-4 neighbors of atom I -> probably make an option
/*
for (k = nspecial[i][1]; k < nspecial[i][2]; k++)
if (special[i][k] == tag[j]) {
possible = 0;
}
if (possible == 0) continue;
*/
// do not allow 5 membered rings -> probably make this an option
/*
for (k = nspecial[i][1]; k < nspecial[i][2]; k++) {
for (m = nspecial[atom->map(special[i][k])][1]; m < nspecial[atom->map(special[i][k])][2]; m++) {
if (special[atom->map(special[i][k])][m] == tag[j]) possible = 0;
/ }
}
if (possible == 0) continue;
*/
delx = xtmp - x[j][0];
dely = ytmp - x[j][1];
delz = ztmp - x[j][2];
rsq = delx*delx + dely*dely + delz*delz;
if (rsq >= cutsq[myrxn]) {
continue;
}
if (rsq < distsq[i]) {
partner[i] = tag[j];
distsq[i] = rsq;
}
if (rsq < distsq[j]) {
partner[j] = tag[i];
distsq[j] = rsq;
}
}
}
// fork between far and close_partner here
if (closeneigh[rxnID] < 0) far_partner();
else close_partner();
// reverse comm of distsq and partner
// not needed if newton_pair off since I,J pair was seen by both procs
@ -739,9 +671,9 @@ void FixBondReact::post_integrate()
// for prob check, generate random value for each atom with a bond partner
// forward comm of partner and random value, so ghosts have it
if (fraction[myrxn] < 1.0) {
if (fraction[rxnID] < 1.0) {
for (int i = 0; i < nlocal; i++)
if (partner[i]) probability[i] = random[myrxn]->uniform();
if (partner[i]) probability[i] = random[rxnID]->uniform();
}
commflag = 2;
@ -764,11 +696,11 @@ void FixBondReact::post_integrate()
// apply probability constraint using RN for atom with smallest ID
if (fraction[myrxn] < 1.0) {
if (fraction[rxnID] < 1.0) {
if (tag[i] < tag[j]) {
if (probability[i] >= fraction[myrxn]) continue;
if (probability[i] >= fraction[rxnID]) continue;
} else {
if (probability[j] >= fraction[myrxn]) continue;
if (probability[j] >= fraction[rxnID]) continue;
}
}
@ -780,31 +712,17 @@ void FixBondReact::post_integrate()
if (tag[i] < tag[j]) temp_ncreate++;
}
local_ncreate[myrxn] = temp_ncreate;
local_ncreate[rxnID] = temp_ncreate;
// break loop if no even eligible bonding atoms were found (on any proc)
int some_chance;
MPI_Allreduce(&temp_ncreate,&some_chance,1,MPI_INT,MPI_SUM,world);
if (!some_chance) {
continue;
}
if (!some_chance) continue;
// communicate final partner
commflag = 3;
comm->forward_comm_fix(this);
//obsolete comment block
/*
// I think this also simplifies for bond/react.
// but currently unsure how to adapt it - JG
// create list of created bonds that influence my owned atoms
// even if between owned-ghost or ghost-ghost atoms
// finalpartner is now set for owned and ghost atoms so loop over nall
// OK if duplicates in created list due to ghosts duplicating owned atoms
// check J < 0 to insure a created bond to unknown atom is included
// i.e. a bond partner outside of skin length
*/
// add instance to 'created' only if this processor
// owns the atoms with smaller global ID
// NOTE: we no longer care about ghost-ghost instances as bond/create did
@ -816,21 +734,21 @@ void FixBondReact::post_integrate()
j = atom->map(finalpartner[i]);
// if (j < 0 || tag[i] < tag[j]) {
if (tag[i] < tag[j]) { //atom->map(std::min(tag[i],tag[j])) <= nlocal &&
if (ncreate[myrxn] == maxcreate) {
if (ncreate[rxnID] == maxcreate) {
maxcreate += DELTA;
// third column of 'created': bond/react integer ID
memory->grow(created,maxcreate,2,nreacts,"bond/react:created");
}
// to ensure types remain in same order
// unnecessary now taken from reaction map file
if (iatomtype[myrxn] == type[i]) {
created[ncreate[myrxn]][0][myrxn] = tag[i];
created[ncreate[myrxn]][1][myrxn] = finalpartner[i];
if (iatomtype[rxnID] == type[i]) {
created[ncreate[rxnID]][0][rxnID] = tag[i];
created[ncreate[rxnID]][1][rxnID] = finalpartner[i];
} else {
created[ncreate[myrxn]][0][myrxn] = finalpartner[i];
created[ncreate[myrxn]][1][myrxn] = tag[i];
created[ncreate[rxnID]][0][rxnID] = finalpartner[i];
created[ncreate[rxnID]][1][rxnID] = tag[i];
}
ncreate[myrxn]++;
ncreate[rxnID]++;
}
}
unlimit_bond(); //free atoms that have been relaxed
@ -854,7 +772,152 @@ void FixBondReact::post_integrate()
superimpose_algorithm();
// free atoms that have been limited after reacting
unlimit_bond();
}
/* ----------------------------------------------------------------------
Search non-bonded neighbor lists if bonding atoms are not in special list
------------------------------------------------------------------------- */
void FixBondReact::far_partner()
{
int inum,jnum,itype,jtype,possible;
double xtmp,ytmp,ztmp,delx,dely,delz,rsq;
int *ilist,*jlist,*numneigh,**firstneigh;
// loop over neighbors of my atoms
// each atom sets one closest eligible partner atom ID to bond with
double **x = atom->x;
tagint *tag = atom->tag;
int **nspecial = atom->nspecial;
tagint **special = atom->special;
int *mask = atom->mask;
int *type = atom->type;
inum = list->inum;
ilist = list->ilist;
numneigh = list->numneigh;
firstneigh = list->firstneigh;
// per-atom property indicating if in bond/react master group
int flag;
int index1 = atom->find_custom("limit_tags",flag);
int *i_limit_tags = atom->ivector[index1];
int i,j;
for (int ii = 0; ii < inum; ii++) {
i = ilist[ii];
if (!(mask[i] & groupbits[rxnID])) continue;
if (i_limit_tags[i] != 0) continue;
itype = type[i];
xtmp = x[i][0];
ytmp = x[i][1];
ztmp = x[i][2];
jlist = firstneigh[i];
jnum = numneigh[i];
for (int jj = 0; jj < jnum; jj++) {
j = jlist[jj];
j &= NEIGHMASK;
if (!(mask[j] & groupbits[rxnID])) {
continue;
}
if (i_limit_tags[j] != 0) {
continue;
}
jtype = type[j];
possible = 0;
if (itype == iatomtype[rxnID] && jtype == jatomtype[rxnID]) {
possible = 1;
} else if (itype == jatomtype[rxnID] && jtype == iatomtype[rxnID]) {
possible = 1;
}
if (possible == 0) continue;
// do not allow bonding atoms within special list
for (int k = 0; k < nspecial[i][2]; k++)
if (special[i][k] == tag[j]) possible = 0;
if (!possible) continue;
delx = xtmp - x[j][0];
dely = ytmp - x[j][1];
delz = ztmp - x[j][2];
rsq = delx*delx + dely*dely + delz*delz;
if (rsq >= cutsq[rxnID][1] || rsq <= cutsq[rxnID][0]) {
continue;
}
if (rsq < distsq[i][1]) {
partner[i] = tag[j];
distsq[i][1] = rsq;
}
if (rsq < distsq[j][1]) {
partner[j] = tag[i];
distsq[j][1] = rsq;
}
}
}
}
/* ----------------------------------------------------------------------
Slightly simpler to find bonding partner when a close neighbor
------------------------------------------------------------------------- */
void FixBondReact::close_partner()
{
int n,i1,i2,itype,jtype;
double delx,dely,delz,rsq;
double **x = atom->x;
tagint *tag = atom->tag;
int *type = atom->type;
int *mask = atom->mask;
int **nspecial = atom->nspecial;
tagint **special = atom->special;
// per-atom property indicating if in bond/react master group
int flag;
int index1 = atom->find_custom("limit_tags",flag);
int *i_limit_tags = atom->ivector[index1];
// loop over special list
for (int ii = 0; ii < atom->nlocal; ii++) {
itype = type[ii];
n = 0;
if (closeneigh[rxnID] != 0)
n = nspecial[ii][closeneigh[rxnID]-1];
for (; n < nspecial[ii][closeneigh[rxnID]]; n++) {
i1 = ii;
i2 = atom->map(special[ii][n]);
jtype = type[i2];
if (!(mask[i1] & groupbits[rxnID])) continue;
if (!(mask[i2] & groupbits[rxnID])) continue;
if (i_limit_tags[i1] != 0) continue;
if (i_limit_tags[i2] != 0) continue;
if (itype != iatomtype[rxnID] || jtype != jatomtype[rxnID]) continue;
delx = x[i1][0] - x[i2][0];
dely = x[i1][1] - x[i2][1];
delz = x[i1][2] - x[i2][2];
rsq = delx*delx + dely*dely + delz*delz;
if (rsq >= cutsq[rxnID][1] || rsq <= cutsq[rxnID][0]) continue;
if (rsq > distsq[i1][0]) {
partner[i1] = tag[i2];
distsq[i1][0] = rsq;
}
if (rsq > distsq[i2][0]) {
partner[i2] = tag[i1];
distsq[i2][0] = rsq;
}
}
}
}
/* ----------------------------------------------------------------------
@ -1076,8 +1139,8 @@ void FixBondReact::make_a_guess()
if (assigned_count == nfirst_neighs) status = GUESSFAIL;
// check if all neigh atom types are the same between simulation and unreacted mol
int mol_ntypes[atom->ntypes];
int lcl_ntypes[atom->ntypes];
int *mol_ntypes = new int[atom->ntypes];
int *lcl_ntypes = new int[atom->ntypes];
for (int i = 0; i < atom->ntypes; i++) {
mol_ntypes[i] = 0;
@ -1096,6 +1159,9 @@ void FixBondReact::make_a_guess()
}
}
delete [] mol_ntypes;
delete [] lcl_ntypes;
// okay everything seems to be in order. let's assign some ID pairs!!!
neighbor_loop();
}
@ -1384,7 +1450,7 @@ void FixBondReact::find_landlocked_atoms(int myrxn)
// if no edge atoms (small reacting molecule), all atoms are landlocked
// we can delete all current topology of landlocked atoms and replace
// alwasy remove edge atoms from landlocked list
// always remove edge atoms from landlocked list
for (int i = 0; i < twomol->natoms; i++) {
if (edge[equivalences[i][1][myrxn]-1][myrxn] == 1) landlocked_atoms[i][myrxn] = 0;
else landlocked_atoms[i][myrxn] = 1;
@ -1395,7 +1461,6 @@ void FixBondReact::find_landlocked_atoms(int myrxn)
if ((force->dihedral && twomol->dihedralflag) ||
(force->improper && twomol->improperflag)) nspecial_limit = 1;
if (nspecial_limit != -1) {
for (int i = 0; i < twomol->natoms; i++) {
for (int j = 0; j < twomol->nspecial[i][nspecial_limit]; j++) {
@ -1410,11 +1475,21 @@ void FixBondReact::find_landlocked_atoms(int myrxn)
// bad molecule templates check
// if atoms change types, but aren't landlocked, that's bad
for (int i = 0; i < twomol->natoms; i++) {
if (twomol->type[i] != onemol->type[equivalences[i][1][myrxn]-1] && landlocked_atoms[i][myrxn] == 0)
error->one(FLERR,"Atom affected by reaction too close to template edge");
}
// also, if atoms change number of bonds, but aren't landlocked, that could be bad
if (me == 0)
for (int i = 0; i < twomol->natoms; i++) {
if (twomol->nspecial[i][0] != onemol->nspecial[equivalences[i][1][myrxn]-1][0] && landlocked_atoms[i][myrxn] == 0) {
char str[128];
sprintf(str,"An atom in 'react #%d' changes bond connectivity but not atom type",myrxn+1);
error->warning(FLERR,str);
break;
}
}
}
/* ----------------------------------------------------------------------
@ -1438,7 +1513,8 @@ void FixBondReact::dedup_mega_gloves(int dedup_mode)
dedup_size = global_megasize;
}
tagint dedup_glove[max_natoms+1][dedup_size];
tagint **dedup_glove;
memory->create(dedup_glove,max_natoms+1,dedup_size,"bond/react:dedup_glove");
if (dedup_mode == 0) {
for (int i = 0; i < dedup_size; i++) {
@ -1456,8 +1532,8 @@ void FixBondReact::dedup_mega_gloves(int dedup_mode)
// dedup_mask is size dedup_size and filters reactions that have been deleted
// a value of 1 means this reaction instance has been deleted
int dedup_mask[dedup_size];
int dup_list[dedup_size];
int *dedup_mask = new int[dedup_size];
int *dup_list = new int[dedup_size];
for (int i = 0; i < dedup_size; i++) {
dedup_mask[i] = 0;
@ -1467,14 +1543,12 @@ void FixBondReact::dedup_mega_gloves(int dedup_mode)
// let's randomly mix up our reaction instances first
// then we can feel okay about ignoring ones we've already deleted (or accepted)
// based off std::shuffle
// will produce same 'random' sequences on different processors.
// not really an issue, as reaction lists are independent
int *temp_rxn = new int[max_natoms+1];
for (int i = dedup_size-1; i > 0; --i) { //dedup_size
//choose random entry to swap current one with
int k = rand() % (i+1);
// choose random entry to swap current one with
int k = floor(random[0]->uniform()*(i+1));
// swap entries
int temp_rxn[max_natoms+1];
for (int j = 0; j < max_natoms+1; j++)
temp_rxn[j] = dedup_glove[j][i];
@ -1483,6 +1557,7 @@ void FixBondReact::dedup_mega_gloves(int dedup_mode)
dedup_glove[j][k] = temp_rxn[j];
}
}
delete [] temp_rxn;
for (int i = 0; i < dedup_size; i++) {
if (dedup_mask[i] == 0) {
@ -1557,6 +1632,10 @@ void FixBondReact::dedup_mega_gloves(int dedup_mode)
}
global_megasize = new_global_megasize;
}
memory->destroy(dedup_glove);
delete [] dedup_mask;
delete [] dup_list;
}
/* ----------------------------------------------------------------------
@ -1743,9 +1822,6 @@ void FixBondReact::ghost_glovecast()
for (int j = 0; j < global_megasize; j++)
global_mega_glove[i][j] = 0;
ghostcheck_flag = 1;
if (ghostly_num_mega > 0) {
for (int i = 0; i < max_natoms+1; i++) {
for (int j = 0; j < ghostly_num_mega; j++) {
@ -1806,7 +1882,8 @@ void FixBondReact::update_everything()
// add check for local atoms as well
int update_num_mega;
tagint update_mega_glove[max_natoms+1][MAX(local_num_mega,global_megasize)];
tagint **update_mega_glove;
memory->create(update_mega_glove,max_natoms+1,MAX(local_num_mega,global_megasize),"bond/react:update_mega_glove");
for (int pass = 0; pass < 2; pass++) {
@ -2217,6 +2294,9 @@ void FixBondReact::update_everything()
}
}
memory->destroy(update_mega_glove);
// something to think about: this could done much more concisely if
// all atom-level info (bond,angles, etc...) were kinda inherited from a common data struct --JG
@ -2522,7 +2602,10 @@ int FixBondReact::pack_reverse_comm(int n, int first, double *buf)
for (i = first; i < last; i++) {
buf[m++] = ubuf(partner[i]).d;
buf[m++] = distsq[i];
if (closeneigh[rxnID] < 0)
buf[m++] = distsq[i][1];
else
buf[m++] = distsq[i][0];
}
return m;
}
@ -2538,10 +2621,16 @@ void FixBondReact::unpack_reverse_comm(int n, int *list, double *buf)
if (commflag != 1) {
for (i = 0; i < n; i++) {
j = list[i];
if (buf[m+1] < distsq[j]) {
if (closeneigh[rxnID] < 0)
if (buf[m+1] < distsq[j][1]) {
partner[j] = (tagint) ubuf(buf[m++]).i;
distsq[j] = buf[m++];
distsq[j][1] = buf[m++];
} else m += 2;
else
if (buf[m+1] > distsq[j][0]) {
partner[j] = (tagint) ubuf(buf[m++]).i;
distsq[j][0] = buf[m++];
} else m += 2;
}
}
}

View File

@ -53,7 +53,7 @@ class FixBondReact : public Fix {
FILE *fp;
int *iatomtype,*jatomtype;
int *seed;
double *cutsq,*fraction;
double **cutsq,*fraction;
tagint lastcheck;
int stabilization_flag;
int *stabilize_steps_flag;
@ -66,7 +66,7 @@ class FixBondReact : public Fix {
int nmax; // max num local atoms
int max_natoms; // max natoms in a molecule template
tagint *partner,*finalpartner;
double *distsq,*probability;
double **distsq,*probability;
int *ncreate;
int maxcreate;
int allncreate;
@ -96,10 +96,9 @@ class FixBondReact : public Fix {
void superimpose_algorithm(); // main function of the superimpose algorithm
int *ibonding,*jbonding;
int *closeneigh; // indicates if bonding atoms of a rxn are 1-2, 1-3, or 1-4 neighbors
int nedge,nequivalent; // number of edge, equivalent atoms in mapping file
int attempted_rxn; // there was an attempt!
int ghostcheck_flag; // idicates whether a reaction instances contains a nonlocal atom
int this_rxn_count; // num of local reaction occurrences
int *local_rxn_count;
int *ghostly_rxn_count;
int avail_guesses; // num of restore points available
@ -143,6 +142,8 @@ class FixBondReact : public Fix {
void skip_lines(int, char *);
int parse(char *, char **, int);
void far_partner();
void close_partner();
void find_landlocked_atoms(int);
void glove_ghostcheck();
void ghost_glovecast();