Adding examples and misc bug fixes

This commit is contained in:
Joel Thomas Clemmer
2021-09-08 18:39:56 -06:00
parent d2984d2615
commit 0e72aae0a3
15 changed files with 2002 additions and 53 deletions

View File

@ -50,17 +50,17 @@ has a magnitude of
.. math::
F_r = K_r (r - r_0)
f_r = k_r (r - r_0)
where :math:`K_r` is a stiffness and :math:`r` is the current distance and
where :math:`k_r` is a stiffness and :math:`r` is the current distance and
:math:`r_0` is the initial distance between the two particles.
A tangential force is applied perpendicular to the normal direction
which is proportional to the tangential shear displacement with a stiffness
of :math:`K_s`. This tangential force also induces a torque.
of :math:`k_s`. This tangential force also induces a torque.
In addition, bending and twisting torques are also applied to particles
which are proportional to angular bending and twisting displacements with
stiffnesses of :math`K_b` and :math:`K_t', respectively.
stiffnesses of :math`k_b` and :math:`k_t', respectively.
Details on the calculations of shear displacements and angular displacements
can be found in :ref:`(Wang) <Wang2009>` and :ref:`(Wang and Mora) <WangMora2009b>`.
@ -68,13 +68,13 @@ Bonds will break under sufficient stress. A breaking criteria is calculated
.. math::
B = \alpha(r, r_0) \frac{F_r}{F_{r,c}} + \frac{F_s}{F_{s,c}} +
\frac{\tau_b}{\tau_{b,c}} + \frac{\tau_t}{\tau_{t,c}}
B = \alpha(r, r_0) \frac{f_r}{f_{r,c}} + \frac{|f_s|}{f_{s,c}} +
\frac{|\tau_b|}{\tau_{b,c}} + \frac{|\tau_t|}{\tau_{t,c}}
where :math:`F_s` is the magnitude of the shear force and
:math:`\tau_b` and :math:`\tau_t` are the magnitudes of the bending and
twisting forces, respectively. The corresponding variables :math:`F_{r,c}`
:math:`F_{s,c}`, :math:`\tau_{b,c}`, and :math:`\tau_{t,c}` are critical
where :math:`|f_s|` is the magnitude of the shear force and
:math:`|\tau_b|` and :math:`|\tau_t|` are the magnitudes of the bending and
twisting forces, respectively. The corresponding variables :math:`f_{r,c}`
:math:`f_{s,c}`, :math:`\tau_{b,c}`, and :math:`\tau_{t,c}` are critical
limits to each force or torque. The term :math:`\alpha` is simply one in
extension and zero in compression such that the normal force component
does not contribute to the breaking criteria in compression.
@ -85,7 +85,7 @@ torques are no longer computed.
After computing the base magnitudes of the forces and torques, they are
all multiplied by an extra factor :math:`w` to smoothly interpolate
forces and torques to zero as the bond breaks. This term is calculated
as :math:`w = (1.0 - B)^2`.
as :math:`w = (1.0 - B^4)`.
Finally, additional damping forces and torques are applied to the two
particles. A force is applied proportional to the difference in the
@ -110,12 +110,12 @@ The following coefficients must be defined for each bond type via the
the data file or restart files read by the :doc:`read_data <read_data>`
or :doc:`read_restart <read_restart>` commands:
* :math:`K_r` (force/distance units)
* :math:`K_s` (force/distance units)
* :math:`K_t` (force units)
* :math:`K_b` (force units)
* :math:`F_{r,c}` (force units)
* :math:`F_{s,c}` (force units)
* :math:`k_r` (force/distance units)
* :math:`k_s` (force/distance units)
* :math:`k_t` (force units)
* :math:`k_b` (force units)
* :math:`f_{r,c}` (force units)
* :math:`f_{s,c}` (force units)
* :math:`\tau_{b,c}` (force*distance units)
* :math:`\tau_{t,c}` (force*distance units)
* :math:`\gamma_n` (force/velocity units)

View File

@ -0,0 +1,52 @@
units lj
dimension 3
boundary m m m
atom_style sphere/bpm
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
region box block -5 15 -20 20 -20 20
create_box 1 box bond/types 2 extra/bond/per/atom 20 extra/special/per/atom 50
region disk cylinder x 0.0 0.0 20.0 -0.5 0.5
create_atoms 1 region disk
group plate region disk
region ball sphere 8.0 0.0 0.0 6.0
create_atoms 1 region ball
group projectile region ball
displace_atoms all random 0.1 0.1 0.1 134598738
neighbor 1.0 bin
pair_style gran/hooke/history 1.0 NULL 0.5 NULL 0.1 1
bond_style bpm/rotational store/local 2 time id1 id2
pair_coeff 1 1
bond_coeff 1 1.0 0.2 0.02 0.02 0.05 0.01 0.005 0.005 0.1 0.02 0.002 0.002
bond_coeff 2 1.0 0.2 0.02 0.02 0.20 0.04 0.020 0.020 0.1 0.02 0.002 0.002
fix 1 all nve/sphere/bpm
fix 2 all store/local 100 3
fix 3 all update/special/bonds
create_bonds many plate plate 1 0.0 1.5
create_bonds many projectile projectile 2 0.0 1.5
change_box all boundary s s s
neighbor 0.3 bin
special_bonds lj 0.0 1.0 1.0 coul 1.0 1.0 1.0
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
#dump 1 all custom 100 atomDump id radius x y z c_nbond
dump 2 all local 100 brokenDump f_2[1] f_2[2] f_2[3]
dump_modify 2 header no
run 6000

View File

@ -0,0 +1,202 @@
LAMMPS (30 Jul 2021)
units lj
dimension 3
boundary m m m
atom_style sphere/bpm
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 -5 15 -20 20 -20 20
create_box 1 box bond/types 2 extra/bond/per/atom 20 extra/special/per/atom 50
Created orthogonal box = (-7.9370053 -31.748021 -31.748021) to (23.811016 31.748021 31.748021)
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 7527 atoms
using lattice units in orthogonal box = (-7.9370053 -31.748021 -31.748021) to (23.811016 31.748021 31.748021)
create_atoms CPU = 0.002 seconds
group plate region disk
7527 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 = (-7.9370053 -31.748021 -31.748021) to (23.811016 31.748021 31.748021)
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
bond_style bpm/rotational store/local 2 time id1 id2
pair_coeff 1 1
bond_coeff 1 1.0 0.2 0.02 0.02 0.05 0.01 0.005 0.005 0.1 0.02 0.002 0.002
bond_coeff 2 1.0 0.2 0.02 0.02 0.20 0.04 0.020 0.020 0.1 0.02 0.002 0.002
fix 1 all nve/sphere/bpm
fix 2 all store/local 100 3
fix 3 all update/special/bonds
create_bonds many plate plate 1 0.0 1.5
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 = 32 64 64
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 38551 bonds, new total = 38551
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
Added 21869 bonds, new total = 60420
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
change_box all boundary s s s
Changing box ...
neighbor 0.3 bin
special_bonds lj 0.0 1.0 1.0 coul 1.0 1.0 1.0
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
dump 1 all custom 100 atomDump id radius x y z c_nbond
dump 2 all local 100 brokenDump f_2[1] f_2[2] f_2[3]
dump_modify 2 header no
run 6000
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 = 36 97 97
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) = 34.27 | 34.28 | 34.28 Mbytes
Step KinEng PotEng Pxx Pyy Pzz c_tbond
0 0.00053248439 -5.4354084 0.00012848545 -1.0639387e-19 1.5819554e-19 10.870817
100 0.00053248439 -5.4354084 0.00013017373 1.1334839e-12 1.784281e-12 10.870817
200 0.00053248439 -5.4354084 0.00013279102 1.6787387e-12 5.4953548e-13 10.870817
300 0.00053248439 -5.4354084 0.00013459514 3.0577302e-12 -1.2088316e-12 10.870817
400 0.00053248439 -5.4354084 0.00013739515 9.7326931e-13 1.1562543e-12 10.870817
500 0.0005311195 -5.4353511 0.00013532545 -1.8468866e-06 -1.6585907e-06 10.870817
600 0.00051833989 -5.4288362 7.1725873e-05 -1.6444182e-05 -1.9715516e-05 10.860022
700 0.00050552886 -5.3985398 -2.3212715e-05 -1.3937832e-05 -1.9091149e-05 10.805955
800 0.00050518224 -5.3616112 8.2515921e-05 2.6973287e-05 2.0513255e-05 10.735516
900 0.00050396335 -5.3458995 0.00019263348 -3.7564641e-05 -4.5902247e-05 10.699172
1000 0.00049399705 -5.3356803 8.3780211e-05 -3.900811e-05 -3.7974569e-05 10.677852
1100 0.00047949984 -5.3177445 -3.3039707e-05 7.3302691e-05 9.1425255e-05 10.645196
1200 0.0004778277 -5.2918722 2.5525662e-05 -7.3957522e-06 -1.0428816e-06 10.596168
1300 0.00047175855 -5.2622229 0.00016622071 -7.5895427e-05 -7.3668463e-05 10.536884
1400 0.00047346655 -5.2357068 0.00013088251 3.8629925e-05 4.7370005e-05 10.484257
1500 0.00047030222 -5.2110028 2.0138342e-05 0.00014344934 0.00014572537 10.43289
1600 0.00047120889 -5.1944302 8.0308725e-05 9.7652665e-05 9.2786939e-05 10.397265
1700 0.00046169345 -5.1800484 0.00015698427 -1.2415417e-05 -2.2822524e-05 10.370457
1800 0.00045838981 -5.1581008 6.4666951e-05 -2.044593e-05 -3.1699628e-05 10.327726
1900 0.00045723383 -5.1435986 7.4830972e-06 2.8528283e-05 9.5685497e-06 10.29615
2000 0.00045822947 -5.1339093 8.8355461e-05 2.4391936e-05 2.6856807e-06 10.276268
2100 0.00045635704 -5.123239 0.00014447351 -1.885824e-05 -2.5038419e-05 10.252789
2200 0.0004531016 -5.1193556 4.9062089e-05 -4.1290134e-05 -2.8125502e-05 10.245682
2300 0.00044750986 -5.1059583 -1.3106261e-05 -6.3125644e-05 -3.3287217e-05 10.221303
2400 0.00044828631 -5.08466 9.1580692e-05 -3.8583903e-05 -5.1373805e-05 10.177942
2500 0.00044674619 -5.0736124 0.00011856396 4.6266072e-06 -1.5907979e-05 10.153203
2600 0.00044727275 -5.0614096 5.295308e-05 6.0578952e-05 5.7167864e-05 10.128553
2700 0.00044110051 -5.0507956 1.8440804e-05 5.4883922e-05 6.3982178e-05 10.106153
2800 0.00043633042 -5.0426937 8.1816485e-05 -1.5431256e-06 -1.855006e-05 10.08996
2900 0.00043176823 -5.0356307 0.00012046457 4.4651701e-05 2.7620283e-06 10.075387
3000 0.00043218951 -5.027846 3.2574549e-05 7.4433525e-05 4.6834269e-05 10.059554
3100 0.00043256828 -5.0161104 3.3101063e-05 4.6551359e-05 5.6531167e-05 10.036164
3200 0.0004332929 -5.0068366 8.9512897e-05 -5.7060048e-06 -2.5891142e-06 10.018172
3300 0.00043157298 -5.0008275 8.4139723e-05 -3.6940688e-05 -5.1910847e-05 10.005218
3400 0.000431398 -4.9965161 2.5625084e-05 1.1433716e-05 6.4926012e-06 9.9965815
3500 0.00043011473 -4.9928073 2.7095736e-05 -7.7339585e-06 7.844574e-06 9.9891148
3600 0.00042888594 -4.9847529 7.7453653e-05 -4.6984476e-05 -3.5038838e-05 9.9747211
3700 0.00042753057 -4.9765311 6.8775078e-05 -3.1077337e-05 -3.3804378e-05 9.9585282
3800 0.00042500059 -4.9705379 1.4686991e-05 -2.1799517e-05 -1.2214392e-05 9.9471033
3900 0.00042443518 -4.9635965 2.9590319e-05 -7.5174838e-06 9.4138716e-06 9.9336092
4000 0.00042354431 -4.9575067 7.497612e-05 -2.241558e-05 -1.7795282e-05 9.9216445
4100 0.00042603308 -4.937097 4.8886365e-05 -1.065802e-05 -2.4723829e-05 9.8824217
4200 0.00042476916 -4.926145 1.9200413e-05 1.0927038e-05 3.1855248e-06 9.8600216
4300 0.00042485728 -4.918146 3.0086129e-05 -8.6292641e-06 2.1921266e-06 9.8440986
4400 0.00042494366 -4.9099091 6.2777705e-05 -5.4921818e-06 -7.6169646e-06 9.8263764
4500 0.0004275409 -4.8995178 4.7617152e-05 2.1335231e-06 1.1579137e-06 9.8055056
4600 0.00042662895 -4.8820208 1.084188e-05 -1.5696264e-06 1.1310734e-05 9.7706909
4700 0.00042734689 -4.8725198 3.7425941e-05 -4.439827e-06 1.13299e-05 9.7511695
4800 0.00042900821 -4.8540514 5.4751797e-05 -1.1417464e-05 -8.8084486e-06 9.7147355
4900 0.00043023872 -4.8363433 3.3053643e-05 3.2468406e-06 -6.4727375e-06 9.6776718
5000 0.00043199875 -4.8198092 1.8345516e-05 8.4946117e-06 5.6309681e-06 9.6456459
5100 0.00044223594 -4.7778052 3.0243074e-05 -5.0316681e-06 -3.9518237e-06 9.5634221
5200 0.00044479909 -4.7640293 4.8598154e-05 -6.7947105e-06 -1.5950295e-05 9.5343649
5300 0.0004454718 -4.755521 2.7021591e-05 4.8540854e-06 -5.1116404e-06 9.5168226
5400 0.00044509902 -4.7442744 1.5098441e-05 9.1872595e-06 1.0269456e-05 9.4952321
5500 0.00044706883 -4.7308865 3.2631779e-05 1.097946e-06 5.8901266e-06 9.4690536
5600 0.00045084112 -4.7115078 3.7164777e-05 -2.2594948e-06 -5.1676349e-06 9.4311803
5700 0.00045327828 -4.6989042 2.2566508e-05 2.2741586e-06 8.6663706e-07 9.404552
5800 0.00046103079 -4.6780119 1.4582664e-05 1.2169813e-06 8.2506998e-06 9.3626304
5900 0.00046315911 -4.6539134 2.7960455e-05 -5.7750919e-06 1.1483488e-08 9.313692
6000 0.00046381574 -4.6376345 3.2506838e-05 -1.1407228e-07 -5.8332064e-06 9.2804066
Loop time of 26.8573 on 4 procs for 6000 steps with 11116 atoms
Performance: 965099.761 tau/day, 223.403 timesteps/s
98.4% 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.24862 | 0.26655 | 0.28715 | 3.1 | 0.99
Bond | 18.756 | 20.055 | 21.432 | 25.3 | 74.67
Neigh | 0.68191 | 0.68601 | 0.69029 | 0.4 | 2.55
Comm | 1.6547 | 3.1706 | 4.5875 | 69.7 | 11.81
Output | 0.3381 | 0.33879 | 0.34058 | 0.2 | 1.26
Modify | 2.0658 | 2.1974 | 2.3512 | 7.6 | 8.18
Other | | 0.1428 | | | 0.53
Nlocal: 2779.00 ave 3444 max 2189 min
Histogram: 1 0 1 0 0 0 1 0 0 1
Nghost: 1160.25 ave 1335 max 985 min
Histogram: 1 0 1 0 0 0 0 1 0 1
Neighs: 10709.5 ave 13715 max 8243 min
Histogram: 2 0 0 0 0 0 0 1 0 1
Total # of neighbors = 42838
Ave neighs/atom = 3.8537244
Ave special neighs/atom = 9.2786974
Neighbor list builds = 402
Dangerous builds = 0
Total wall time: 0:00:26

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,36 @@
units lj
dimension 3
boundary m m m
atom_style sphere/bpm
special_bonds lj 0.0 1.0 1.0 coul 1.0 1.0 1.0
newton on off
comm_modify vel yes cutoff 3.3
region box block -15 15 -15 15 0 60.0
create_box 1 box bond/types 1 extra/bond/per/atom 15 extra/special/per/atom 50
molecule my_mol "rect.mol"
region wall_cyl cylinder z 0.0 0.0 10.0 EDGE EDGE side in
region dropzone cylinder z 0.0 0.0 10.0 40.0 50.0 side in
pair_style gran/hertz/history 1.0 NULL 0.5 NULL 0.1 1
bond_style bpm/rotational
pair_coeff 1 1
bond_coeff 1 1.0 0.2 0.01 0.01 2.0 0.4 0.02 0.02 0.2 0.04 0.002 0.002
compute nbond all nbond/atom
compute tbond all reduce sum c_nbond
compute_modify thermo_temp dynamic/dof yes
fix 1 all wall/gran hertz/history 1.0 NULL 0.5 NULL 0.1 1 zplane 0.0 NULL
fix 2 all wall/gran/region hertz/history 1.0 NULL 0.5 NULL 0.1 1 region wall_cyl
fix 3 all gravity 1e-4 vector 0 0 -1
fix 4 all deposit 40 0 1500 712511343 mol my_mol region dropzone near 2.0 vz -0.05 -0.05
fix 5 all nve/sphere/bpm
fix 6 all update/special/bonds
timestep 0.05
thermo_style custom step ke pe pxx pyy pzz c_tbond
thermo 100
#dump 1 all custom 500 atomDump id radius x y z c_nbond mol
run 100000

568
examples/bpm/pour/rect.mol Normal file
View File

@ -0,0 +1,568 @@
#Made with create_mol.py
63 atoms
297 bonds
Coords
#ID x y z
1 0.0 0.0 0.0
2 0.7348518971806154 0.7348518971806154 0.0
3 0.7348518971806154 0.0 0.7348518971806154
4 0.0 0.7348518971806154 0.7348518971806154
5 1.4697037943612308 0.0 0.0
6 1.4697037943612308 0.7348518971806154 0.7348518971806154
7 0.0 1.4697037943612308 0.0
8 0.7348518971806154 1.4697037943612308 0.7348518971806154
9 1.4697037943612308 1.4697037943612308 0.0
10 0.0 0.0 1.4697037943612308
11 0.7348518971806154 0.7348518971806154 1.4697037943612308
12 0.7348518971806154 0.0 2.204555691541846
13 0.0 0.7348518971806154 2.204555691541846
14 1.4697037943612308 0.0 1.4697037943612308
15 1.4697037943612308 0.7348518971806154 2.204555691541846
16 0.0 1.4697037943612308 1.4697037943612308
17 0.7348518971806154 1.4697037943612308 2.204555691541846
18 1.4697037943612308 1.4697037943612308 1.4697037943612308
19 0.0 0.0 2.9394075887224616
20 0.7348518971806154 0.7348518971806154 2.9394075887224616
21 0.7348518971806154 0.0 3.674259485903077
22 0.0 0.7348518971806154 3.674259485903077
23 1.4697037943612308 0.0 2.9394075887224616
24 1.4697037943612308 0.7348518971806154 3.674259485903077
25 0.0 1.4697037943612308 2.9394075887224616
26 0.7348518971806154 1.4697037943612308 3.674259485903077
27 1.4697037943612308 1.4697037943612308 2.9394075887224616
28 0.0 0.0 4.409111383083692
29 0.7348518971806154 0.7348518971806154 4.409111383083692
30 0.7348518971806154 0.0 5.143963280264308
31 0.0 0.7348518971806154 5.143963280264308
32 1.4697037943612308 0.0 4.409111383083692
33 1.4697037943612308 0.7348518971806154 5.143963280264308
34 0.0 1.4697037943612308 4.409111383083692
35 0.7348518971806154 1.4697037943612308 5.143963280264308
36 1.4697037943612308 1.4697037943612308 4.409111383083692
37 0.0 0.0 5.878815177444923
38 0.7348518971806154 0.7348518971806154 5.878815177444923
39 0.7348518971806154 0.0 6.613667074625538
40 0.0 0.7348518971806154 6.613667074625538
41 1.4697037943612308 0.0 5.878815177444923
42 1.4697037943612308 0.7348518971806154 6.613667074625538
43 0.0 1.4697037943612308 5.878815177444923
44 0.7348518971806154 1.4697037943612308 6.613667074625538
45 1.4697037943612308 1.4697037943612308 5.878815177444923
46 0.0 0.0 7.348518971806154
47 0.7348518971806154 0.7348518971806154 7.348518971806154
48 0.7348518971806154 0.0 8.08337086898677
49 0.0 0.7348518971806154 8.08337086898677
50 1.4697037943612308 0.0 7.348518971806154
51 1.4697037943612308 0.7348518971806154 8.08337086898677
52 0.0 1.4697037943612308 7.348518971806154
53 0.7348518971806154 1.4697037943612308 8.08337086898677
54 1.4697037943612308 1.4697037943612308 7.348518971806154
55 0.0 0.0 8.818222766167384
56 0.7348518971806154 0.7348518971806154 8.818222766167384
57 0.7348518971806154 0.0 9.553074663348
58 0.0 0.7348518971806154 9.553074663348
59 1.4697037943612308 0.0 8.818222766167384
60 1.4697037943612308 0.7348518971806154 9.553074663348
61 0.0 1.4697037943612308 8.818222766167384
62 0.7348518971806154 1.4697037943612308 9.553074663348
63 1.4697037943612308 1.4697037943612308 8.818222766167384
Types
#ID type
1 1
2 1
3 1
4 1
5 1
6 1
7 1
8 1
9 1
10 1
11 1
12 1
13 1
14 1
15 1
16 1
17 1
18 1
19 1
20 1
21 1
22 1
23 1
24 1
25 1
26 1
27 1
28 1
29 1
30 1
31 1
32 1
33 1
34 1
35 1
36 1
37 1
38 1
39 1
40 1
41 1
42 1
43 1
44 1
45 1
46 1
47 1
48 1
49 1
50 1
51 1
52 1
53 1
54 1
55 1
56 1
57 1
58 1
59 1
60 1
61 1
62 1
63 1
Diameters
#ID diameter
1 1
2 1
3 1
4 1
5 1
6 1
7 1
8 1
9 1
10 1
11 1
12 1
13 1
14 1
15 1
16 1
17 1
18 1
19 1
20 1
21 1
22 1
23 1
24 1
25 1
26 1
27 1
28 1
29 1
30 1
31 1
32 1
33 1
34 1
35 1
36 1
37 1
38 1
39 1
40 1
41 1
42 1
43 1
44 1
45 1
46 1
47 1
48 1
49 1
50 1
51 1
52 1
53 1
54 1
55 1
56 1
57 1
58 1
59 1
60 1
61 1
62 1
63 1
Masses
#ID mass
1 1
2 1
3 1
4 1
5 1
6 1
7 1
8 1
9 1
10 1
11 1
12 1
13 1
14 1
15 1
16 1
17 1
18 1
19 1
20 1
21 1
22 1
23 1
24 1
25 1
26 1
27 1
28 1
29 1
30 1
31 1
32 1
33 1
34 1
35 1
36 1
37 1
38 1
39 1
40 1
41 1
42 1
43 1
44 1
45 1
46 1
47 1
48 1
49 1
50 1
51 1
52 1
53 1
54 1
55 1
56 1
57 1
58 1
59 1
60 1
61 1
62 1
63 1
Bonds
#ID type atom1 atom2
1 1 1 2
2 1 1 3
3 1 1 4
4 1 1 5
5 1 1 7
6 1 1 10
7 1 2 3
8 1 2 4
9 1 2 5
10 1 2 6
11 1 2 7
12 1 2 8
13 1 2 9
14 1 2 11
15 1 3 4
16 1 3 5
17 1 3 6
18 1 3 8
19 1 3 10
20 1 3 11
21 1 3 12
22 1 3 14
23 1 4 6
24 1 4 7
25 1 4 8
26 1 4 10
27 1 4 11
28 1 4 13
29 1 4 16
30 1 5 6
31 1 5 9
32 1 5 14
33 1 6 8
34 1 6 9
35 1 6 11
36 1 6 14
37 1 6 18
38 1 7 8
39 1 7 9
40 1 7 16
41 1 8 9
42 1 8 11
43 1 8 16
44 1 8 17
45 1 8 18
46 1 9 18
47 1 10 11
48 1 10 12
49 1 10 13
50 1 10 14
51 1 10 16
52 1 10 19
53 1 11 12
54 1 11 13
55 1 11 14
56 1 11 15
57 1 11 16
58 1 11 17
59 1 11 18
60 1 12 13
61 1 12 14
62 1 12 15
63 1 12 17
64 1 12 19
65 1 12 20
66 1 12 21
67 1 12 23
68 1 13 15
69 1 13 16
70 1 13 17
71 1 13 19
72 1 13 20
73 1 13 22
74 1 13 25
75 1 14 15
76 1 14 18
77 1 14 23
78 1 15 17
79 1 15 18
80 1 15 20
81 1 15 23
82 1 15 27
83 1 16 17
84 1 16 18
85 1 16 25
86 1 17 18
87 1 17 20
88 1 17 25
89 1 17 27
90 1 18 27
91 1 19 20
92 1 19 21
93 1 19 22
94 1 19 23
95 1 19 25
96 1 19 28
97 1 20 21
98 1 20 22
99 1 20 23
100 1 20 24
101 1 20 25
102 1 20 26
103 1 20 27
104 1 20 29
105 1 21 22
106 1 21 23
107 1 21 24
108 1 21 26
109 1 21 28
110 1 21 29
111 1 21 30
112 1 21 32
113 1 22 24
114 1 22 25
115 1 22 26
116 1 22 28
117 1 22 29
118 1 22 34
119 1 23 24
120 1 23 27
121 1 23 32
122 1 24 26
123 1 24 27
124 1 24 29
125 1 24 32
126 1 24 36
127 1 25 26
128 1 25 27
129 1 25 34
130 1 26 27
131 1 26 29
132 1 26 34
133 1 26 35
134 1 26 36
135 1 27 36
136 1 28 29
137 1 28 30
138 1 28 31
139 1 28 32
140 1 28 34
141 1 28 37
142 1 29 30
143 1 29 31
144 1 29 32
145 1 29 33
146 1 29 34
147 1 29 35
148 1 29 36
149 1 29 38
150 1 30 31
151 1 30 32
152 1 30 33
153 1 30 35
154 1 30 37
155 1 30 38
156 1 30 41
157 1 31 33
158 1 31 34
159 1 31 35
160 1 31 37
161 1 31 38
162 1 31 40
163 1 31 43
164 1 32 33
165 1 32 36
166 1 32 41
167 1 33 35
168 1 33 36
169 1 33 38
170 1 33 41
171 1 33 42
172 1 33 45
173 1 34 35
174 1 34 36
175 1 34 43
176 1 35 36
177 1 35 38
178 1 35 43
179 1 35 45
180 1 36 45
181 1 37 38
182 1 37 39
183 1 37 40
184 1 37 41
185 1 37 43
186 1 37 46
187 1 38 39
188 1 38 40
189 1 38 41
190 1 38 42
191 1 38 43
192 1 38 44
193 1 38 45
194 1 38 47
195 1 39 40
196 1 39 41
197 1 39 42
198 1 39 44
199 1 39 46
200 1 39 47
201 1 39 50
202 1 40 42
203 1 40 43
204 1 40 44
205 1 40 46
206 1 40 47
207 1 40 52
208 1 41 42
209 1 41 45
210 1 41 50
211 1 42 44
212 1 42 45
213 1 42 47
214 1 42 50
215 1 42 51
216 1 42 54
217 1 43 44
218 1 43 45
219 1 43 52
220 1 44 45
221 1 44 47
222 1 44 52
223 1 44 53
224 1 44 54
225 1 45 54
226 1 46 47
227 1 46 48
228 1 46 49
229 1 46 50
230 1 46 52
231 1 46 55
232 1 47 48
233 1 47 49
234 1 47 50
235 1 47 51
236 1 47 52
237 1 47 53
238 1 47 54
239 1 47 56
240 1 48 49
241 1 48 50
242 1 48 51
243 1 48 53
244 1 48 55
245 1 48 56
246 1 48 57
247 1 48 59
248 1 49 51
249 1 49 52
250 1 49 53
251 1 49 55
252 1 49 56
253 1 49 58
254 1 49 61
255 1 50 51
256 1 50 54
257 1 50 59
258 1 51 53
259 1 51 54
260 1 51 56
261 1 51 59
262 1 51 63
263 1 52 53
264 1 52 54
265 1 52 61
266 1 53 54
267 1 53 56
268 1 53 61
269 1 53 62
270 1 53 63
271 1 54 63
272 1 55 56
273 1 55 57
274 1 55 58
275 1 55 59
276 1 55 61
277 1 56 57
278 1 56 58
279 1 56 59
280 1 56 60
281 1 56 61
282 1 56 62
283 1 56 63
284 1 57 58
285 1 57 59
286 1 57 60
287 1 57 62
288 1 58 60
289 1 58 61
290 1 58 62
291 1 59 60
292 1 59 63
293 1 60 62
294 1 60 63
295 1 61 62
296 1 61 63
297 1 62 63

View File

@ -36,11 +36,6 @@
using namespace LAMMPS_NS;
using namespace MathExtra;
#include "update.h"
/* ---------------------------------------------------------------------- */
BondBPMRotational::BondBPMRotational(LAMMPS *lmp) : BondBPM(lmp)
@ -199,10 +194,10 @@ void BondBPMRotational::compute(int eflag, int vflag)
int i1,i2,itmp,m,n,type,itype,jtype;
double evdwl,fpair,rsq,ebond;
double q1[4], q2[4], r[3], r0[3];
double r0_mag, r_mag, r_mag_inv, Fr_mag, Fs_mag;
double r0_mag, r_mag, r_mag_inv, Fr, Fs_mag;
double Tt_mag, Tb_mag;
double force1on2[3], torque1on2[3], torque2on1[3];
double breaking, smooth, smooth_sq;
double breaking, smooth;
double rhat[3], wn1[3], wn2[3], wxn1[3], wxn2[3], vroll[3];
double w1dotr, w2dotr, v1dotr, v2dotr;
double vn1[3], vn2[3], vt1[3], vt2[3], tmp[3], s1[3], s2[3], tdamp[3];
@ -212,7 +207,8 @@ void BondBPMRotational::compute(int eflag, int vflag)
double q21[4], qp21[4], Tbp[3], Ttp[3];
double Tsp[3], Fsp[3], Tt[3], Tb[3], Ts[3], F_rot[3], T_rot[3];
double mq[4], mqinv[4], Ttmp[3], Ftmp[3], qtmp[4];
double r0_dot_rb, gamma, c, psi, theta, sin_phi, cos_phi, temp, mag_in_plane, mag_out_plane;
double r0_dot_rb, gamma, c, psi, theta, sin_phi, cos_phi, temp;
double mag_in_plane, mag_out_plane;
ev_init(eflag,vflag);
@ -291,9 +287,9 @@ void BondBPMRotational::compute(int eflag, int vflag)
// Calculate normal forces, rb = bond vector in particle 1's frame
MathExtra::qconjugate(q2, q2inv);
MathExtra::quatrotvec(q2inv, r, rb);
Fr_mag = Kr[type]*(r_mag - r0_mag);
Fr = Kr[type]*(r_mag - r0_mag);
MathExtra::scale3(Fr_mag*r_mag_inv, rb, F_rot);
MathExtra::scale3(Fr*r_mag_inv, rb, F_rot);
// Calculate forces due to tangential displacements (no rotation)
r0_dot_rb = dot3(r0, rb);
@ -435,10 +431,8 @@ void BondBPMRotational::compute(int eflag, int vflag)
// Check if bond breaks
// ------------------------------------------------------//
if (r_mag < r0_mag)
breaking = Fs_mag/Fcs[type] + Tb_mag/Tcb[type] + Tt_mag/Tct[type];
else
breaking = Fr_mag/Fcr[type] + Fs_mag/Fcs[type] + Tb_mag/Tcb[type] + Tt_mag/Tct[type];
breaking = Fs_mag/Fcs[type] + Tb_mag/Tcb[type] + Tt_mag/Tct[type];
if (Fr > 0.0) breaking += Fr/Fcr[type];
if (breaking >= 1.0) {
bondlist[n][2] = 0;
@ -446,11 +440,11 @@ void BondBPMRotational::compute(int eflag, int vflag)
continue;
}
smooth = 1.0 - breaking;
smooth_sq = smooth*smooth;
smooth = breaking*breaking;
smooth = 1.0 - smooth*smooth;
// Not actual energy, just a handy metric
if (eflag) ebond = -smooth_sq;
if (eflag) ebond = -smooth;
// ------------------------------------------------------//
// Calculate damping using formulation in
@ -524,26 +518,26 @@ void BondBPMRotational::compute(int eflag, int vflag)
// ------------------------------------------------------//
if (newton_bond || i1 < nlocal) {
f[i1][0] -= force1on2[0]*smooth_sq;
f[i1][1] -= force1on2[1]*smooth_sq;
f[i1][2] -= force1on2[2]*smooth_sq;
f[i1][0] -= force1on2[0]*smooth;
f[i1][1] -= force1on2[1]*smooth;
f[i1][2] -= force1on2[2]*smooth;
torque[i1][0] += torque2on1[0]*smooth_sq;
torque[i1][1] += torque2on1[1]*smooth_sq;
torque[i1][2] += torque2on1[2]*smooth_sq;
torque[i1][0] += torque2on1[0]*smooth;
torque[i1][1] += torque2on1[1]*smooth;
torque[i1][2] += torque2on1[2]*smooth;
}
if (newton_bond || i2 < nlocal) {
f[i2][0] += force1on2[0]*smooth_sq;
f[i2][1] += force1on2[1]*smooth_sq;
f[i2][2] += force1on2[2]*smooth_sq;
f[i2][0] += force1on2[0]*smooth;
f[i2][1] += force1on2[1]*smooth;
f[i2][2] += force1on2[2]*smooth;
torque[i2][0] += torque1on2[0]*smooth_sq;
torque[i2][1] += torque1on2[1]*smooth_sq;
torque[i2][2] += torque1on2[2]*smooth_sq;
torque[i2][0] += torque1on2[0]*smooth;
torque[i2][1] += torque1on2[1]*smooth;
torque[i2][2] += torque1on2[2]*smooth;
}
if (evflag) ev_tally(i1,i2,nlocal,newton_bond,ebond,Fr_mag,r[0],r[1],r[2]);
if (evflag) ev_tally(i1,i2,nlocal,newton_bond,ebond,Fr*smooth,r[0],r[1],r[2]);
}
}

View File

@ -89,6 +89,7 @@ void PairGranHertzHistory::compute(int eflag, int vflag)
int *mask = atom->mask;
int nlocal = atom->nlocal;
int newton_pair = force->newton_pair;
double *special_lj = force->special_lj;
inum = list->inum;
ilist = list->ilist;

View File

@ -82,6 +82,7 @@ void PairGranHooke::compute(int eflag, int vflag)
int *mask = atom->mask;
int nlocal = atom->nlocal;
int newton_pair = force->newton_pair;
double *special_lj = force->special_lj;
inum = list->inum;
ilist = list->ilist;

View File

@ -151,6 +151,7 @@ void PairGranHookeHistory::compute(int eflag, int vflag)
int *mask = atom->mask;
int nlocal = atom->nlocal;
int newton_pair = force->newton_pair;
double *special_lj = force->special_lj;
inum = list->inum;
ilist = list->ilist;

View File

@ -222,6 +222,7 @@ void PairGranular::compute(int eflag, int vflag)
double *rmass = atom->rmass;
int *mask = atom->mask;
int nlocal = atom->nlocal;
double *special_lj = force->special_lj;
inum = list->inum;
ilist = list->ilist;

View File

@ -53,7 +53,7 @@ PACKAGE = \
awpmd \
bocs \
body \
bpm \
bpm \
brownian \
cg-dna \
cg-sdk \
@ -148,8 +148,8 @@ PACKMOST = \
asphere \
bocs \
body \
bpm
brownian \
bpm \
brownian \
cg-dna \
cg-sdk \
class2 \

View File

@ -628,12 +628,14 @@ void FixNeighHistory::post_neighbor()
if (use_bit_flag) {
rflag = histmask(j) | pair->beyond_contact;
j &= NEIGHMASK;
j &= HISTMASK;
jlist[jj] = j;
} else {
rflag = 1;
j &= NEIGHMASK;
}
// Remove special bond bits
j &= NEIGHMASK;
// rflag = 1 if r < radsum in npair_size() method or if pair interactions extend further
// preserve neigh history info if tag[j] is in old-neigh partner list

View File

@ -553,7 +553,7 @@ void FixPropertyAtom::copy_arrays(int i, int j, int /*delflag*/)
else if (styles[nv] == IVEC) {
atom->ivector[index[nv]][j] = atom->ivector[index[nv]][i];
atom->ivector[index[nv]][i] = 0;
} else if (styles[nv] == DVEC)
} else if (styles[nv] == DVEC) {
atom->dvector[index[nv]][j] = atom->dvector[index[nv]][i];
atom->dvector[index[nv]][i] = 0.0;
} else if (styles[nv] == IARRAY) {

View File

@ -62,6 +62,7 @@ namespace LAMMPS_NS {
#define SBBITS 30
#define HISTBITS 29
#define NEIGHMASK 0x1FFFFFFF
#define HISTMASK 0xDFFFFFFF
// default to 32-bit smallint and other ints, 64-bit bigint