Restarting additional BPM settings, adding virial contributions from tangential bonds

This commit is contained in:
jtclemm
2022-08-30 13:25:36 -06:00
parent 80257099de
commit 8fafd4d8fb
14 changed files with 5424 additions and 4519 deletions

File diff suppressed because it is too large Load Diff

View File

@ -1,219 +0,0 @@
LAMMPS (17 Feb 2022)
units lj
dimension 3
boundary f f f
atom_style bpm/sphere
special_bonds lj 0.0 1.0 1.0 coul 0.0 1.0 1.0
newton on off
comm_modify vel yes cutoff 2.6
lattice fcc 1.0
Lattice spacing in x,y,z = 1.5874011 1.5874011 1.5874011
region box block -25 15 -22 22 -22 22
create_box 1 box bond/types 2 extra/bond/per/atom 20 extra/special/per/atom 50
Created orthogonal box = (-39.685026 -34.922823 -34.922823) to (23.811016 34.922823 34.922823)
1 by 2 by 2 MPI processor grid
region disk cylinder x 0.0 0.0 20.0 -0.5 0.5
create_atoms 1 region disk
Created 7529 atoms
using lattice units in orthogonal box = (-39.685026 -34.922823 -34.922823) to (23.811016 34.922823 34.922823)
create_atoms CPU = 0.002 seconds
group plate region disk
7529 atoms in group plate
region ball sphere 8.0 0.0 0.0 6.0
create_atoms 1 region ball
Created 3589 atoms
using lattice units in orthogonal box = (-39.685026 -34.922823 -34.922823) to (23.811016 34.922823 34.922823)
create_atoms CPU = 0.001 seconds
group projectile region ball
3589 atoms in group projectile
displace_atoms all random 0.1 0.1 0.1 134598738
Displacing atoms ...
neighbor 1.0 bin
pair_style gran/hooke/history 1.0 NULL 0.5 NULL 0.1 1
pair_coeff 1 1
fix 1 all nve/bpm/sphere
create_bonds many plate plate 1 0.0 1.5
generated 0 of 0 mixed pair_coeff terms from geometric mixing rule
Neighbor list info ...
update every 1 steps, delay 10 steps, check yes
max neighbors/atom: 2000, page size: 100000
master list distance cutoff = 2
ghost atom cutoff = 2.6
binsize = 1, bins = 64 70 70
2 neighbor lists, perpetual/occasional/extra = 1 1 0
(1) command create_bonds, occasional
attributes: full, newton on
pair build: full/bin
stencil: full/bin/3d
bin: standard
(2) pair gran/hooke/history, perpetual
attributes: half, newton on, size, history
pair build: half/size/bin/newton
stencil: half/bin/3d
bin: standard
Added 38559 bonds, new total = 38559
Finding 1-2 1-3 1-4 neighbors ...
special bond factors lj: 0 1 1
special bond factors coul: 0 1 1
15 = max # of 1-2 neighbors
101 = max # of special neighbors
special bonds CPU = 0.001 seconds
create_bonds many projectile projectile 2 0.0 1.5
generated 0 of 0 mixed pair_coeff terms from geometric mixing rule
WARNING: Bonds are defined but no bond style is set (../force.cpp:192)
WARNING: Likewise 1-2 special neighbor interactions != 1.0 (../force.cpp:194)
Added 21869 bonds, new total = 60428
Finding 1-2 1-3 1-4 neighbors ...
special bond factors lj: 0 1 1
special bond factors coul: 0 1 1
16 = max # of 1-2 neighbors
101 = max # of special neighbors
special bonds CPU = 0.001 seconds
neighbor 0.3 bin
special_bonds lj 0.0 1.0 1.0 coul 1.0 1.0 1.0
bond_style bpm/rotational store/local brkbond 100 time id1 id2
bond_coeff 1 1.0 0.2 0.02 0.02 0.05 0.01 0.01 0.01 0.1 0.2 0.002 0.002
bond_coeff 2 1.0 0.2 0.02 0.02 0.20 0.04 0.04 0.04 0.1 0.2 0.002 0.002
velocity projectile set -0.05 0.0 0.0
compute nbond all nbond/atom
compute tbond all reduce sum c_nbond
timestep 0.05
thermo_style custom step ke pe pxx pyy pzz c_tbond
thermo 100
thermo_modify lost ignore lost/bond ignore
#dump 1 all custom 100 atomDump id radius x y z c_nbond
dump 2 all local 100 brokenDump f_brkbond[1] f_brkbond[2] f_brkbond[3]
dump_modify 2 header no
run 7500
generated 0 of 0 mixed pair_coeff terms from geometric mixing rule
Neighbor list info ...
update every 1 steps, delay 10 steps, check yes
max neighbors/atom: 2000, page size: 100000
master list distance cutoff = 1.3
ghost atom cutoff = 2.6
binsize = 0.65, bins = 98 108 108
1 neighbor lists, perpetual/occasional/extra = 1 0 0
(1) pair gran/hooke/history, perpetual
attributes: half, newton on, size, history
pair build: half/size/bin/newton
stencil: half/bin/3d
bin: standard
Per MPI rank memory allocation (min/avg/max) = 33.34 | 33.34 | 33.35 Mbytes
Step KinEng PotEng Pxx Pyy Pzz c_tbond
0 0.00053238861 0 3.8217307e-05 0 0 10.8703
100 0.00053238861 0 3.8217307e-05 1.2166373e-20 1.2308212e-20 10.8703
200 0.00053238861 0 3.8217307e-05 1.2454467e-20 1.2479589e-20 10.8703
300 0.00053238861 0 3.8217307e-05 1.2256702e-20 1.2621091e-20 10.8703
400 0.00053238861 0 3.8217307e-05 1.2170534e-20 1.2751666e-20 10.8703
500 0.00053093549 0 3.8484194e-05 7.645531e-08 1.4861825e-07 10.8703
600 0.00051485902 0 4.0340751e-05 3.8615876e-07 4.8663463e-07 10.869221
700 0.00049942978 0 3.8684008e-05 4.5363318e-07 4.4560229e-07 10.85501
800 0.00049465262 0 3.6604612e-05 1.4755468e-07 2.0062093e-07 10.820651
900 0.00048784775 0 3.5333139e-05 3.5118328e-07 6.6697625e-07 10.769563
1000 0.00048345699 0 3.4702137e-05 7.0312998e-07 4.0218318e-07 10.730347
1100 0.00047945073 0 3.5065961e-05 6.2813891e-07 7.4640359e-07 10.703184
1200 0.00047512604 0 3.4833144e-05 8.5208604e-07 8.7277583e-07 10.686634
1300 0.00047401428 0 3.4236869e-05 1.0321827e-06 7.4545242e-07 10.678
1400 0.00047619121 0 3.4416549e-05 8.7518021e-07 7.3979503e-07 10.671704
1500 0.0004668728 0 3.4495751e-05 1.4077823e-06 1.517373e-06 10.666127
1600 0.00045088371 0 3.3264301e-05 1.8499661e-06 1.9842415e-06 10.66073
1700 0.00044275099 0 3.2471064e-05 1.9028747e-06 2.2248947e-06 10.6458
1800 0.0004424362 0 3.1846336e-05 1.6208492e-06 1.9291602e-06 10.620615
1900 0.00043678957 0 3.1260936e-05 1.4673956e-06 1.6120523e-06 10.603166
2000 0.00042747562 0 3.0652107e-05 1.6455486e-06 1.53127e-06 10.576003
2100 0.0004214344 0 3.0240727e-05 1.8873967e-06 1.5258622e-06 10.539845
2200 0.00041712779 0 3.0329566e-05 1.8846152e-06 1.4971471e-06 10.49937
2300 0.00041095769 0 3.0000572e-05 2.3585924e-06 1.6773177e-06 10.471668
2400 0.00040883568 0 2.9625158e-05 1.9105554e-06 1.8720763e-06 10.45116
2500 0.00040762685 0 2.9441541e-05 1.6848938e-06 1.8877532e-06 10.437309
2600 0.00040579873 0 2.9255988e-05 1.7523874e-06 1.636423e-06 10.422378
2700 0.00040340975 0 2.9035693e-05 1.673158e-06 1.9038932e-06 10.410505
2800 0.00040170914 0 2.8829361e-05 1.6711978e-06 1.9776001e-06 10.400792
2900 0.00040015113 0 2.8614186e-05 1.5982427e-06 1.7994733e-06 10.393416
3000 0.00040029253 0 2.8470718e-05 1.5589166e-06 1.6682302e-06 10.385321
3100 0.00040037329 0 2.8483376e-05 1.2831526e-06 1.4788005e-06 10.378485
3200 0.00040142612 0 2.8481287e-05 1.1577988e-06 1.3495778e-06 10.373988
3300 0.00040105092 0 2.8547009e-05 1.2155138e-06 1.2633439e-06 10.370031
3400 0.00039950673 0 2.8340939e-05 1.1182251e-06 1.1624668e-06 10.364274
3500 0.00039715236 0 2.824813e-05 1.3086462e-06 1.2029185e-06 10.360496
3600 0.00039446552 0 2.8112283e-05 1.1232321e-06 1.0077217e-06 10.353121
3700 0.00039263296 0 2.7927975e-05 1.1083636e-06 1.2091857e-06 10.346645
3800 0.00039061341 0 2.7819957e-05 1.1836841e-06 1.3566272e-06 10.341069
3900 0.00038985051 0 2.7681947e-05 1.3588359e-06 1.4099727e-06 10.329196
4000 0.00038815347 0 2.7492102e-05 1.1111719e-06 1.1700718e-06 10.318043
4100 0.00038651302 0 2.7444105e-05 9.9563429e-07 1.4085969e-06 10.311027
4200 0.00038565809 0 2.7177341e-05 9.5736307e-07 1.0404482e-06 10.299155
4300 0.0003847255 0 2.7029216e-05 9.6204756e-07 1.140804e-06 10.292319
4400 0.0003844421 0 2.6841047e-05 9.6570404e-07 1.2319818e-06 10.286203
4500 0.0003842788 0 2.6633558e-05 9.6452478e-07 1.1954945e-06 10.278287
4600 0.00038365139 0 2.6514403e-05 9.6185846e-07 1.2002452e-06 10.270732
4700 0.00038271503 0 2.6374349e-05 9.4061833e-07 1.1774211e-06 10.264796
4800 0.00038233688 0 2.638398e-05 1.1644119e-06 1.3746239e-06 10.25742
4900 0.00038223496 0 2.6279821e-05 1.1345508e-06 1.4709213e-06 10.246987
5000 0.00038219402 0 2.6188871e-05 1.0115151e-06 1.2024203e-06 10.240511
5100 0.00038195153 0 2.6137945e-05 1.009856e-06 1.1961088e-06 10.236014
5200 0.00038170903 0 2.6103563e-05 1.0046761e-06 1.1881008e-06 10.232236
5300 0.00038194303 0 2.6111938e-05 1.0533375e-06 1.2621634e-06 10.230617
5400 0.00038147407 0 2.6078641e-05 1.082228e-06 1.2915223e-06 10.230098
5500 0.00038156894 0 2.6084488e-05 1.1395485e-06 1.3592644e-06 10.227759
5600 0.00038169434 0 2.6085704e-05 1.1173618e-06 1.3003599e-06 10.2256
5700 0.00038219734 0 2.6095279e-05 1.1026614e-06 1.280455e-06 10.223621
5800 0.00038268758 0 2.6113437e-05 1.1096198e-06 1.2565503e-06 10.222902
5900 0.00038300658 0 2.6131709e-05 1.1123595e-06 1.235992e-06 10.222182
6000 0.00038250316 0 2.606995e-05 1.1590744e-06 1.2888416e-06 10.221123
6100 0.0003821526 0 2.6025605e-05 1.1434025e-06 1.3141861e-06 10.219503
6200 0.00038185711 0 2.5991255e-05 1.1471391e-06 1.3427373e-06 10.219503
6300 0.00038197679 0 2.5996965e-05 1.1338082e-06 1.3315258e-06 10.218604
6400 0.00038232311 0 2.6035805e-05 1.1353407e-06 1.3306683e-06 10.217884
6500 0.00038255543 0 2.6091572e-05 1.1768703e-06 1.3629611e-06 10.217704
6600 0.00038251887 0 2.6068968e-05 1.1808094e-06 1.3969697e-06 10.217344
6700 0.00038177389 0 2.6004288e-05 1.1659866e-06 1.423638e-06 10.218084
6800 0.00038096291 0 2.5969494e-05 1.1377343e-06 1.4348787e-06 10.218103
6900 0.00038090601 0 2.5951546e-05 1.1327767e-06 1.4311663e-06 10.217024
7000 0.00038088094 0 2.5946255e-05 1.1652568e-06 1.4567559e-06 10.215944
7100 0.00038094624 0 2.5972593e-05 1.1558871e-06 1.4692935e-06 10.214684
7200 0.00038168738 0 2.6002e-05 1.1562707e-06 1.4881081e-06 10.212705
7300 0.00038200854 0 2.6038768e-05 1.1339903e-06 1.4808455e-06 10.212345
7400 0.00038187543 0 2.6044759e-05 1.101743e-06 1.4758679e-06 10.213084
7500 0.00038165297 0 2.6004536e-05 1.0892731e-06 1.4872621e-06 10.214742
Loop time of 28.804 on 4 procs for 7500 steps with 11111 atoms
Performance: 1124843.305 tau/day, 260.380 timesteps/s
97.5% 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.26977 | 0.28058 | 0.2866 | 1.3 | 0.97
Bond | 22.742 | 23.598 | 24.671 | 16.6 | 81.92
Neigh | 0.54555 | 0.5728 | 0.60272 | 3.2 | 1.99
Comm | 1.4024 | 2.5619 | 3.5079 | 54.8 | 8.89
Output | 0.025307 | 0.025833 | 0.027022 | 0.4 | 0.09
Modify | 1.592 | 1.6506 | 1.7059 | 4.0 | 5.73
Other | | 0.1147 | | | 0.40
Nlocal: 2777.75 ave 2887 max 2682 min
Histogram: 1 0 0 0 2 0 0 0 0 1
Nghost: 1152.5 ave 1189 max 1125 min
Histogram: 1 0 1 0 0 1 0 0 0 1
Neighs: 11515.5 ave 12520 max 10831 min
Histogram: 1 1 0 0 1 0 0 0 0 1
Total # of neighbors = 46062
Ave neighs/atom = 4.1456215
Ave special neighs/atom = 10.214742
Neighbor list builds = 408
Dangerous builds = 0
Total wall time: 0:00:28

View File

@ -0,0 +1,219 @@
LAMMPS (4 May 2022)
units lj
dimension 3
boundary f f f
atom_style bpm/sphere
special_bonds lj 0.0 1.0 1.0 coul 0.0 1.0 1.0
newton on off
comm_modify vel yes cutoff 2.6
lattice fcc 1.0
Lattice spacing in x,y,z = 1.5874011 1.5874011 1.5874011
region box block -25 15 -22 22 -22 22
create_box 1 box bond/types 2 extra/bond/per/atom 20 extra/special/per/atom 50
Created orthogonal box = (-39.685026 -34.922823 -34.922823) to (23.811016 34.922823 34.922823)
1 by 2 by 2 MPI processor grid
region disk cylinder x 0.0 0.0 20.0 -0.5 0.5
create_atoms 1 region disk
Created 7529 atoms
using lattice units in orthogonal box = (-39.685026 -34.922823 -34.922823) to (23.811016 34.922823 34.922823)
create_atoms CPU = 0.002 seconds
group plate region disk
7529 atoms in group plate
region ball sphere 8.0 0.0 0.0 6.0
create_atoms 1 region ball
Created 3589 atoms
using lattice units in orthogonal box = (-39.685026 -34.922823 -34.922823) to (23.811016 34.922823 34.922823)
create_atoms CPU = 0.001 seconds
group projectile region ball
3589 atoms in group projectile
displace_atoms all random 0.1 0.1 0.1 134598738
Displacing atoms ...
neighbor 1.0 bin
pair_style gran/hooke/history 1.0 NULL 0.5 NULL 0.1 1
pair_coeff 1 1
fix 1 all nve/bpm/sphere
create_bonds many plate plate 1 0.0 1.5
Generated 0 of 0 mixed pair_coeff terms from geometric mixing rule
Neighbor list info ...
update every 1 steps, delay 10 steps, check yes
max neighbors/atom: 2000, page size: 100000
master list distance cutoff = 2
ghost atom cutoff = 2.6
binsize = 1, bins = 64 70 70
2 neighbor lists, perpetual/occasional/extra = 1 1 0
(1) command create_bonds, occasional
attributes: full, newton on
pair build: full/bin
stencil: full/bin/3d
bin: standard
(2) pair gran/hooke/history, perpetual
attributes: half, newton on, size, history
pair build: half/size/bin/newton
stencil: half/bin/3d
bin: standard
Added 38559 bonds, new total = 38559
Finding 1-2 1-3 1-4 neighbors ...
special bond factors lj: 0 1 1
special bond factors coul: 0 1 1
15 = max # of 1-2 neighbors
101 = max # of special neighbors
special bonds CPU = 0.001 seconds
create_bonds many projectile projectile 2 0.0 1.5
Generated 0 of 0 mixed pair_coeff terms from geometric mixing rule
WARNING: Bonds are defined but no bond style is set (../force.cpp:192)
WARNING: Likewise 1-2 special neighbor interactions != 1.0 (../force.cpp:194)
Added 21869 bonds, new total = 60428
Finding 1-2 1-3 1-4 neighbors ...
special bond factors lj: 0 1 1
special bond factors coul: 0 1 1
16 = max # of 1-2 neighbors
101 = max # of special neighbors
special bonds CPU = 0.002 seconds
neighbor 0.3 bin
special_bonds lj 0.0 1.0 1.0 coul 1.0 1.0 1.0
bond_style bpm/rotational store/local brkbond 100 time id1 id2
bond_coeff 1 1.0 0.2 0.02 0.02 0.05 0.01 0.01 0.01 0.1 0.2 0.002 0.002
bond_coeff 2 1.0 0.2 0.02 0.02 0.20 0.04 0.04 0.04 0.1 0.2 0.002 0.002
velocity projectile set -0.05 0.0 0.0
compute nbond all nbond/atom
compute tbond all reduce sum c_nbond
timestep 0.05
thermo_style custom step ke pe pxx pyy pzz c_tbond
thermo 100
thermo_modify lost ignore lost/bond ignore
#dump 1 all custom 100 atomDump id radius x y z c_nbond
dump 2 all local 100 brokenDump f_brkbond[1] f_brkbond[2] f_brkbond[3]
dump_modify 2 header no
run 7500
Generated 0 of 0 mixed pair_coeff terms from geometric mixing rule
Neighbor list info ...
update every 1 steps, delay 10 steps, check yes
max neighbors/atom: 2000, page size: 100000
master list distance cutoff = 1.3
ghost atom cutoff = 2.6
binsize = 0.65, bins = 98 108 108
1 neighbor lists, perpetual/occasional/extra = 1 0 0
(1) pair gran/hooke/history, perpetual
attributes: half, newton on, size, history
pair build: half/size/bin/newton
stencil: half/bin/3d
bin: standard
Per MPI rank memory allocation (min/avg/max) = 33.22 | 33.22 | 33.22 Mbytes
Step KinEng PotEng Pxx Pyy Pzz c_tbond
0 0.00053238861 0 3.8217307e-05 -7.6534847e-14 1.9906102e-13 10.8703
100 0.00053238861 0 3.8217307e-05 -4.2831948e-13 5.7428612e-13 10.8703
200 0.00053238861 0 3.8217307e-05 -1.4067913e-12 1.4975493e-12 10.8703
300 0.00053238861 0 3.8217307e-05 -8.77782e-13 3.8245851e-13 10.8703
400 0.00053238861 0 3.8217307e-05 -8.5835238e-13 6.5448014e-13 10.8703
500 0.00053093549 0 4.0340893e-05 4.501394e-07 5.3690512e-07 10.8703
600 0.00051485902 0 6.6761034e-05 4.6258948e-06 5.2285428e-06 10.869221
700 0.00049942978 0 9.5499005e-05 9.3031413e-07 4.5389354e-06 10.85501
800 0.00049465262 0 5.6810167e-05 -5.5619903e-06 -1.6010295e-06 10.820651
900 0.00048784775 0 1.5747004e-05 2.0522042e-05 2.5481542e-05 10.769563
1000 0.00048345699 0 2.1159666e-05 1.2232747e-05 1.4767665e-05 10.730347
1100 0.00047945073 0 5.2779833e-05 -2.6136504e-05 -2.7689007e-05 10.703184
1200 0.00047512604 0 6.3234312e-05 -1.7082136e-05 -2.9178979e-05 10.686634
1300 0.00047401428 0 2.5474717e-05 -7.4782876e-06 -1.9808965e-05 10.678
1400 0.00047619121 0 2.5189461e-05 2.9476227e-06 -4.4149511e-06 10.671704
1500 0.0004668728 0 5.8798861e-05 -2.6192143e-06 1.0805172e-06 10.666127
1600 0.00045088371 0 5.8377694e-05 2.2911269e-06 4.339717e-06 10.66073
1700 0.00044275099 0 4.0766018e-05 2.7748031e-05 2.8202527e-05 10.6458
1800 0.0004424362 0 3.0460351e-05 2.9690484e-05 3.3464889e-05 10.620615
1900 0.00043678957 0 3.809598e-05 2.4448755e-06 1.2651201e-05 10.603166
2000 0.00042747562 0 4.2315209e-05 -7.6783024e-06 -3.3357359e-06 10.576003
2100 0.0004214344 0 2.6171505e-05 5.5424035e-06 -4.1153085e-06 10.539845
2200 0.00041712779 0 3.0796803e-05 1.1362383e-05 7.7103875e-07 10.49937
2300 0.00041095769 0 4.141148e-05 1.4142023e-06 -1.0982633e-05 10.471668
2400 0.00040883568 0 3.5835323e-05 -1.0216635e-05 -2.3669763e-05 10.45116
2500 0.00040762685 0 2.879385e-05 -1.4074395e-05 -1.9314875e-05 10.437309
2600 0.00040579873 0 2.771644e-05 -2.316844e-05 -2.2961097e-05 10.422378
2700 0.00040340975 0 3.4482945e-05 -3.075929e-05 -2.3321344e-05 10.410505
2800 0.00040170914 0 3.1147943e-05 -2.4329639e-05 -1.1787678e-05 10.400792
2900 0.00040015113 0 2.3214992e-05 -1.8068374e-05 3.8127871e-06 10.393416
3000 0.00040029253 0 2.7275906e-05 -7.0762689e-06 1.3782424e-05 10.385321
3100 0.00040037329 0 2.962113e-05 -1.3795312e-06 5.3267315e-06 10.378485
3200 0.00040142612 0 2.86096e-05 4.4289601e-06 -3.3950404e-06 10.373988
3300 0.00040105092 0 2.5423615e-05 9.5689359e-06 -2.5296344e-06 10.370031
3400 0.00039950673 0 2.6405258e-05 9.5776239e-06 -7.3789982e-07 10.364274
3500 0.00039715236 0 3.115696e-05 1.0986224e-05 6.6898207e-06 10.360496
3600 0.00039446552 0 2.8426837e-05 9.6296098e-06 1.5057875e-05 10.353121
3700 0.00039263296 0 2.567768e-05 6.347291e-06 2.4842157e-05 10.346645
3800 0.00039061341 0 2.7635193e-05 5.0165135e-06 2.5989901e-05 10.341069
3900 0.00038985051 0 2.8639932e-05 1.056365e-05 2.4463803e-05 10.329196
4000 0.00038815347 0 2.6613146e-05 2.0316396e-05 2.1434368e-05 10.318043
4100 0.00038651302 0 2.4759493e-05 1.9632349e-05 1.3524912e-05 10.311027
4200 0.00038565809 0 2.5290845e-05 1.9908233e-05 8.3895516e-06 10.299155
4300 0.0003847255 0 2.6461182e-05 1.9385332e-05 5.664874e-06 10.292319
4400 0.0003844421 0 2.4464435e-05 1.4675545e-05 6.8223863e-06 10.286203
4500 0.0003842788 0 2.3080348e-05 7.1469159e-06 6.8395849e-06 10.278287
4600 0.00038365139 0 2.4937615e-05 2.3854793e-06 4.6100509e-06 10.270732
4700 0.00038271503 0 2.431281e-05 -3.127707e-06 3.8840673e-07 10.264796
4800 0.00038233688 0 2.3727372e-05 -3.9575833e-06 1.5658614e-06 10.25742
4900 0.00038223496 0 2.3842519e-05 2.6005447e-06 4.5031882e-06 10.246987
5000 0.00038219402 0 2.4705111e-05 8.2018492e-06 4.0121467e-06 10.240511
5100 0.00038195153 0 2.5112089e-05 9.1687723e-06 3.3825795e-06 10.236014
5200 0.00038170903 0 2.4166312e-05 4.6680528e-06 3.0359762e-06 10.232236
5300 0.00038194303 0 2.4293657e-05 3.067111e-06 2.1353614e-06 10.230617
5400 0.00038147407 0 2.472142e-05 5.2915485e-06 -1.7472423e-06 10.230098
5500 0.00038156894 0 2.4839317e-05 6.6216457e-06 -2.7544087e-06 10.227759
5600 0.00038169434 0 2.4600407e-05 3.8679618e-06 1.2622251e-07 10.2256
5700 0.00038219734 0 2.4459589e-05 2.0025919e-07 -1.1917672e-08 10.223621
5800 0.00038268758 0 2.4768428e-05 8.7913744e-07 -1.4000329e-06 10.222902
5900 0.00038300658 0 2.4827866e-05 3.6621944e-06 -2.2178729e-07 10.222182
6000 0.00038250316 0 2.4309432e-05 4.3755483e-06 2.2736019e-06 10.221123
6100 0.0003821526 0 2.4396115e-05 3.3855804e-06 4.4742551e-06 10.219503
6200 0.00038185711 0 2.4795348e-05 1.7569948e-06 4.3229904e-06 10.219503
6300 0.00038197679 0 2.4817115e-05 1.237731e-07 3.9285574e-06 10.218604
6400 0.00038232311 0 2.4723664e-05 -8.7946112e-07 2.6215619e-06 10.217884
6500 0.00038255543 0 2.4821878e-05 -4.8948257e-07 3.9392146e-07 10.217704
6600 0.00038251887 0 2.4923895e-05 -1.1107041e-07 -8.3900047e-07 10.217344
6700 0.00038177389 0 2.4664007e-05 -6.4474733e-07 -2.1004826e-06 10.218084
6800 0.00038096291 0 2.4262293e-05 -1.7159941e-06 -2.8149643e-06 10.218103
6900 0.00038090601 0 2.4179172e-05 -2.2622259e-06 -2.1268271e-06 10.217024
7000 0.00038088094 0 2.4363443e-05 -2.4652531e-06 -8.209416e-07 10.215944
7100 0.00038094624 0 2.5119358e-05 -1.5432706e-06 1.1465135e-06 10.214684
7200 0.00038168738 0 2.5565338e-05 -1.4052753e-07 3.3146851e-06 10.212705
7300 0.00038200854 0 2.5436565e-05 4.353807e-07 3.3504276e-06 10.212345
7400 0.00038187543 0 2.4764819e-05 6.7297502e-07 1.5923471e-06 10.213084
7500 0.00038165297 0 2.4015684e-05 7.8657712e-07 1.0138435e-06 10.214742
Loop time of 32.2292 on 4 procs for 7500 steps with 11111 atoms
Performance: 1005300.744 tau/day, 232.709 timesteps/s
96.2% 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.29763 | 0.30464 | 0.31393 | 1.1 | 0.95
Bond | 25.936 | 26.533 | 27.431 | 11.7 | 82.33
Neigh | 0.60911 | 0.63557 | 0.66475 | 2.8 | 1.97
Comm | 1.7247 | 2.7138 | 3.3823 | 40.5 | 8.42
Output | 0.020408 | 0.020935 | 0.02227 | 0.5 | 0.06
Modify | 1.8299 | 1.8724 | 1.9325 | 2.9 | 5.81
Other | | 0.1491 | | | 0.46
Nlocal: 2777.75 ave 2887 max 2682 min
Histogram: 1 0 0 0 2 0 0 0 0 1
Nghost: 1152.5 ave 1189 max 1125 min
Histogram: 1 0 1 0 0 1 0 0 0 1
Neighs: 11515.5 ave 12520 max 10831 min
Histogram: 1 1 0 0 1 0 0 0 0 1
Total # of neighbors = 46062
Ave neighs/atom = 4.1456215
Ave special neighs/atom = 10.214742
Neighbor list builds = 408
Dangerous builds = 0
Total wall time: 0:00:32

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -14,6 +14,7 @@
#include "bond_bpm.h"
#include "atom.h"
#include "comm.h"
#include "domain.h"
#include "error.h"
#include "fix_bond_history.h"
@ -286,6 +287,33 @@ double BondBPM::equilibrium_distance(int /*i*/)
return max_stretch * r0_max_estimate / 1.5;
}
/* ----------------------------------------------------------------------
proc 0 writes to restart file
------------------------------------------------------------------------- */
void BondBPM::write_restart(FILE *fp)
{
fwrite(&max_stretch, sizeof(double), 1, fp);
fwrite(&r0_max_estimate, sizeof(double), 1, fp);
fwrite(&overlay_flag, sizeof(int), 1, fp);
}
/* ----------------------------------------------------------------------
proc 0 reads from restart file, bcasts
------------------------------------------------------------------------- */
void BondBPM::read_restart(FILE *fp)
{
if (comm->me == 0) {
utils::sfread(FLERR, &max_stretch, sizeof(double), 1, fp, nullptr, error);
utils::sfread(FLERR, &r0_max_estimate, sizeof(double), 1, fp, nullptr, error);
utils::sfread(FLERR, &overlay_flag, sizeof(int), 1, fp, nullptr, error);
}
MPI_Bcast(&max_stretch, 1, MPI_DOUBLE, 0, world);
MPI_Bcast(&r0_max_estimate, 1, MPI_DOUBLE, 0, world);
MPI_Bcast(&overlay_flag, 1, MPI_INT, 0, world);
}
/* ---------------------------------------------------------------------- */
void BondBPM::process_broken(int i, int j)

View File

@ -29,9 +29,8 @@ class BondBPM : public Bond {
void init_style() override;
void settings(int, char **) override;
double equilibrium_distance(int) override;
void write_restart(FILE *) override{};
void read_restart(FILE *) override{};
void write_data(FILE *) override{};
void write_restart(FILE *) override;
void read_restart(FILE *) override;
double single(int, double, int, int, double &) override = 0;
protected:

View File

@ -35,18 +35,6 @@ using namespace LAMMPS_NS;
BondBPMRotational::BondBPMRotational(LAMMPS *_lmp) : BondBPM(_lmp)
{
Kr = nullptr;
Ks = nullptr;
Kt = nullptr;
Kb = nullptr;
Fcr = nullptr;
Fcs = nullptr;
Tct = nullptr;
Tcb = nullptr;
gnorm = nullptr;
gslide = nullptr;
groll = nullptr;
gtwist = nullptr;
partial_flag = 1;
smooth_flag = 1;
@ -195,7 +183,7 @@ void BondBPMRotational::store_data()
2) P. Mora & Y. Wang Advances in Geomcomputing 2009
---------------------------------------------------------------------- */
double BondBPMRotational::elastic_forces(int i1, int i2, int type, double &Fr, double r_mag,
double BondBPMRotational::elastic_forces(int i1, int i2, int type, double r_mag,
double r0_mag, double r_mag_inv, double * /*rhat*/,
double *r, double *r0, double *force1on2,
double *torque1on2, double *torque2on1)
@ -208,7 +196,7 @@ double BondBPMRotational::elastic_forces(int i1, int i2, int type, double &Fr, d
double q1[4], q2[4];
double q2inv[4], mq[4], mqinv[4], qp21[4], q21[4], qtmp[4];
double rb[3], rb_x_r0[3], s[3], t[3];
double Fs[3], Fsp[3], F_rot[3], Ftmp[3];
double Fr, Fs[3], Fsp[3], F_rot[3], Ftmp[3];
double Ts[3], Tb[3], Tt[3], Tbp[3], Ttp[3], Tsp[3], T_rot[3], Ttmp[3];
double **quat = atom->quat;
@ -377,7 +365,7 @@ double BondBPMRotational::elastic_forces(int i1, int i2, int type, double &Fr, d
Note: n points towards 1 vs pointing towards 2
---------------------------------------------------------------------- */
void BondBPMRotational::damping_forces(int i1, int i2, int type, double &Fr, double *rhat,
void BondBPMRotational::damping_forces(int i1, int i2, int type, double *rhat,
double *r, double *force1on2, double *torque1on2,
double *torque2on1)
{
@ -398,7 +386,6 @@ void BondBPMRotational::damping_forces(int i1, int i2, int type, double &Fr, dou
MathExtra::sub3(vn1, vn2, tmp);
MathExtra::scale3(gnorm[type], tmp);
Fr = MathExtra::lensq3(tmp);
MathExtra::add3(force1on2, tmp, force1on2);
// Damp tangential objective velocities
@ -464,7 +451,7 @@ void BondBPMRotational::compute(int eflag, int vflag)
int i1, i2, itmp, n, type;
double r[3], r0[3], rhat[3];
double rsq, r0_mag, r_mag, r_mag_inv;
double Fr, breaking, smooth;
double breaking, smooth;
double force1on2[3], torque1on2[3], torque2on1[3];
ev_init(eflag, vflag);
@ -520,7 +507,7 @@ void BondBPMRotational::compute(int eflag, int vflag)
// Calculate forces, check if bond breaks
// ------------------------------------------------------//
breaking = elastic_forces(i1, i2, type, Fr, r_mag, r0_mag, r_mag_inv, rhat, r, r0, force1on2,
breaking = elastic_forces(i1, i2, type, r_mag, r0_mag, r_mag_inv, rhat, r, r0, force1on2,
torque1on2, torque2on1);
if (breaking >= 1.0) {
@ -529,7 +516,7 @@ void BondBPMRotational::compute(int eflag, int vflag)
continue;
}
damping_forces(i1, i2, type, Fr, rhat, r, force1on2, torque1on2, torque2on1);
damping_forces(i1, i2, type, rhat, r, force1on2, torque1on2, torque2on1);
if (smooth_flag) {
smooth = breaking * breaking;
@ -562,7 +549,7 @@ void BondBPMRotational::compute(int eflag, int vflag)
torque[i2][2] += torque1on2[2] * smooth;
}
if (evflag) ev_tally(i1, i2, nlocal, newton_bond, 0.0, Fr * smooth, r[0], r[1], r[2]);
if (evflag) ev_tally_xyz(i1, i2, nlocal, newton_bond, 0.0, -force1on2[0] * smooth, -force1on2[1] * smooth, -force1on2[2] * smooth, r[0], r[1], r[2]);
}
}
@ -688,6 +675,9 @@ void BondBPMRotational::settings(int narg, char **arg)
void BondBPMRotational::write_restart(FILE *fp)
{
BondBPM::write_restart(fp);
write_restart_settings(fp);
fwrite(&Kr[1], sizeof(double), atom->nbondtypes, fp);
fwrite(&Ks[1], sizeof(double), atom->nbondtypes, fp);
fwrite(&Kt[1], sizeof(double), atom->nbondtypes, fp);
@ -708,6 +698,8 @@ void BondBPMRotational::write_restart(FILE *fp)
void BondBPMRotational::read_restart(FILE *fp)
{
BondBPM::read_restart(fp);
read_restart_settings(fp);
allocate();
if (comm->me == 0) {
@ -740,6 +732,26 @@ void BondBPMRotational::read_restart(FILE *fp)
for (int i = 1; i <= atom->nbondtypes; i++) setflag[i] = 1;
}
/* ----------------------------------------------------------------------
proc 0 writes to restart file
------------------------------------------------------------------------- */
void BondBPMRotational::write_restart_settings(FILE *fp)
{
fwrite(&smooth_flag, sizeof(int), 1, fp);
}
/* ----------------------------------------------------------------------
proc 0 reads from restart file, bcasts
------------------------------------------------------------------------- */
void BondBPMRotational::read_restart_settings(FILE *fp)
{
if (comm->me == 0)
utils::sfread(FLERR, &smooth_flag, sizeof(int), 1, fp, nullptr, error);
MPI_Bcast(&smooth_flag, 1, MPI_INT, 0, world);
}
/* ----------------------------------------------------------------------
proc 0 writes to data file
------------------------------------------------------------------------- */
@ -785,14 +797,13 @@ double BondBPMRotational::single(int type, double rsq, int i, int j, double &ffo
r_mag_inv = 1.0 / r_mag;
MathExtra::scale3(r_mag_inv, r, rhat);
double breaking, smooth, Fr;
double force1on2[3], torque1on2[3], torque2on1[3];
breaking = elastic_forces(i, j, type, Fr, r_mag, r0_mag, r_mag_inv, rhat, r, r0, force1on2,
double breaking = elastic_forces(i, j, type, r_mag, r0_mag, r_mag_inv, rhat, r, r0, force1on2,
torque1on2, torque2on1);
fforce = Fr;
damping_forces(i, j, type, Fr, rhat, r, force1on2, torque1on2, torque2on1);
fforce += Fr;
damping_forces(i, j, type, rhat, r, force1on2, torque1on2, torque2on1);
fforce = MathExtra::len3(force1on2);
double smooth = 1.0;
if (smooth_flag) {
smooth = breaking * breaking;
smooth = 1.0 - smooth * smooth;
@ -806,16 +817,16 @@ double BondBPMRotational::single(int type, double rsq, int i, int j, double &ffo
svector[1] = -r0[0];
svector[2] = -r0[1];
svector[3] = -r0[2];
svector[4] = force1on2[0];
svector[5] = force1on2[1];
svector[6] = force1on2[2];
svector[4] = force1on2[0] * smooth;
svector[5] = force1on2[1] * smooth;
svector[6] = force1on2[2] * smooth;
} else {
svector[1] = r0[0];
svector[2] = r0[1];
svector[3] = r0[2];
svector[4] = -force1on2[0];
svector[5] = -force1on2[1];
svector[6] = -force1on2[2];
svector[4] = -force1on2[0] * smooth;
svector[5] = -force1on2[1] * smooth;
svector[6] = -force1on2[2] * smooth;
}

View File

@ -34,6 +34,8 @@ class BondBPMRotational : public BondBPM {
void settings(int, char **) override;
void write_restart(FILE *) override;
void read_restart(FILE *) override;
void write_restart_settings(FILE *) override;
void read_restart_settings(FILE *) override;
void write_data(FILE *) override;
double single(int, double, int, int, double &) override;
@ -44,9 +46,9 @@ class BondBPMRotational : public BondBPM {
double acos_limit(double);
double elastic_forces(int, int, int, double &, double, double, double, double *, double *,
double elastic_forces(int, int, int, double, double, double, double *, double *,
double *, double *, double *, double *);
void damping_forces(int, int, int, double &, double *, double *, double *, double *, double *);
void damping_forces(int, int, int, double *, double *, double *, double *, double *);
void allocate();
void store_data();

View File

@ -311,6 +311,8 @@ void BondBPMSpring::settings(int narg, char **arg)
void BondBPMSpring::write_restart(FILE *fp)
{
write_restart_settings(fp);
fwrite(&k[1], sizeof(double), atom->nbondtypes, fp);
fwrite(&ecrit[1], sizeof(double), atom->nbondtypes, fp);
fwrite(&gamma[1], sizeof(double), atom->nbondtypes, fp);
@ -322,6 +324,7 @@ void BondBPMSpring::write_restart(FILE *fp)
void BondBPMSpring::read_restart(FILE *fp)
{
read_restart_settings(fp);
allocate();
if (comm->me == 0) {
@ -336,6 +339,28 @@ void BondBPMSpring::read_restart(FILE *fp)
for (int i = 1; i <= atom->nbondtypes; i++) setflag[i] = 1;
}
/* ----------------------------------------------------------------------
proc 0 writes to restart file
------------------------------------------------------------------------- */
void BondBPMSpring::write_restart_settings(FILE *fp)
{
BondBPM::write_restart_settings(fp);
fwrite(&smooth_flag, sizeof(int), 1, fp);
}
/* ----------------------------------------------------------------------
proc 0 reads from restart file, bcasts
------------------------------------------------------------------------- */
void BondBPMSpring::read_restart_settings(FILE *fp)
{
BondBPM::read_restart_settings(fp);
if (comm->me == 0)
utils::sfread(FLERR, &smooth_flag, sizeof(int), 1, fp, nullptr, error);
MPI_Bcast(&smooth_flag, 1, MPI_INT, 0, world);
}
/* ----------------------------------------------------------------------
proc 0 writes to data file
------------------------------------------------------------------------- */

View File

@ -34,6 +34,8 @@ class BondBPMSpring : public BondBPM {
void settings(int, char **) override;
void write_restart(FILE *) override;
void read_restart(FILE *) override;
void write_restart_settings(FILE *) override;
void read_restart_settings(FILE *) override;
void write_data(FILE *) override;
double single(int, double, int, int, double &) override;

View File

@ -250,6 +250,91 @@ void Bond::ev_tally(int i, int j, int nlocal, int newton_bond, double ebond, dou
}
}
/* ----------------------------------------------------------------------
tally energy and virial into global or per-atom accumulators
for virial, have delx,dely,delz and fx,fy,fz
------------------------------------------------------------------------- */
void Bond::ev_tally_xyz(int i, int j, int nlocal, int newton_bond,
double ebond, double fx, double fy, double fz,
double delx, double dely, double delz)
{
double ebondhalf,v[6];
if (eflag_either) {
if (eflag_global) {
if (newton_bond) {
energy += ebond;
} else {
ebondhalf = 0.5 * ebond;
if (i < nlocal) energy += ebondhalf;
if (j < nlocal) energy += ebondhalf;
}
}
if (eflag_atom) {
ebondhalf = 0.5 * ebond;
if (newton_bond || i < nlocal) eatom[i] += ebondhalf;
if (newton_bond || j < nlocal) eatom[j] += ebondhalf;
}
}
if (vflag_either) {
v[0] = delx * fx;
v[1] = dely * fy;
v[2] = delz * fz;
v[3] = delx * fy;
v[4] = delx * fz;
v[5] = dely * fz;
if (vflag_global) {
if (newton_bond) {
virial[0] += v[0];
virial[1] += v[1];
virial[2] += v[2];
virial[3] += v[3];
virial[4] += v[4];
virial[5] += v[5];
} else {
if (i < nlocal) {
virial[0] += 0.5 * v[0];
virial[1] += 0.5 * v[1];
virial[2] += 0.5 * v[2];
virial[3] += 0.5 * v[3];
virial[4] += 0.5 * v[4];
virial[5] += 0.5 * v[5];
}
if (j < nlocal) {
virial[0] += 0.5 * v[0];
virial[1] += 0.5 * v[1];
virial[2] += 0.5 * v[2];
virial[3] += 0.5 * v[3];
virial[4] += 0.5 * v[4];
virial[5] += 0.5 * v[5];
}
}
}
if (vflag_atom) {
if (newton_bond || i < nlocal) {
vatom[i][0] += 0.5 * v[0];
vatom[i][1] += 0.5 * v[1];
vatom[i][2] += 0.5 * v[2];
vatom[i][3] += 0.5 * v[3];
vatom[i][4] += 0.5 * v[4];
vatom[i][5] += 0.5 * v[5];
}
if (newton_bond || j < nlocal) {
vatom[j][0] += 0.5 * v[0];
vatom[j][1] += 0.5 * v[1];
vatom[j][2] += 0.5 * v[2];
vatom[j][3] += 0.5 * v[3];
vatom[j][4] += 0.5 * v[4];
vatom[j][5] += 0.5 * v[5];
}
}
}
}
/* ----------------------------------------------------------------------
write a table of bond potential energy/force vs distance to a file
------------------------------------------------------------------------- */

View File

@ -102,6 +102,7 @@ class Bond : protected Pointers {
}
void ev_setup(int, int, int alloc = 1);
void ev_tally(int, int, int, int, double, double, double, double, double);
void ev_tally_xyz(int, int, int, int, double, double, double, double, double, double, double);
};
} // namespace LAMMPS_NS

View File

@ -17,6 +17,7 @@
#include "atom_vec.h"
#include "error.h"
#include "force.h"
#include "modify.h"
#include "neigh_list.h"
#include "neighbor.h"
#include "pair.h"
@ -50,6 +51,11 @@ int FixUpdateSpecialBonds::setmask()
void FixUpdateSpecialBonds::setup(int /*vflag*/)
{
// error if more than one fix update/special/bonds
if (modify->get_fix_by_style("UPDATE_SPECIAL_BONDS").size() > 1)
error->all(FLERR,"More than one fix update/special/bonds");
// Require atoms know about all of their bonds and if they break
if (force->newton_bond) error->all(FLERR, "Fix update/special/bonds requires Newton bond off");