Breaking of multisphere particles

Submitted by Rustam on Tue, 01/08/2019 - 12:40

Hello all, I am new in LIGGGHTS, and I need help)
Can I have an example of a simulation where multisphere particles breakdown due to mutual abrasion?

In my project I'm going to simulate abrasion breakdown of particles in fluidizied bed reactor, and I have no idea how to do it.

Thanks, Rustam.

mschramm | Tue, 01/08/2019 - 16:45

Hello,
A multisphere particle is considered a rigid body and will not break.
You will want to use bonds to form your particles and set tolerances for it to break.
If you have a clump of particles I would try to use the internal bond packages provided by liggghts.
https://www.cfdem.com/media/DEM/docu/bond_style.html

Otherwise there do exist user made bond packages.
https://github.com/richti83/LIGGGHTS-WITH-BONDS --> LIGGGHTS 3.3 without velocity based damping
https://github.com/schrummy14/LIGGGHTS_Flexible_Fibers --> LIGGGHTS 3.7 with velocity based damping (extension of above)

mschramm | Tue, 01/21/2020 - 21:18

Hello,
Once the user has set a break condition, if that condition is ever met during a run, the entire multisphere template will disconnect.
If you have spheres inside one another, you will see very large forces as LIGGGHTS will simply assume that the two spheres are
nothing special and use whatever particle-to-particle interaction you specified.
If this is the type of behavior that you want, then multisphere break will work for you.

The bond style would not do this. If a bond breaks, only the the spheres that are connected to the bond will be affected.

deepakpawar.2310 | Fri, 01/24/2020 - 13:31

Hi
I am using the trigger condition is to be the maximum contact force between the particle for its breaking. However, it is not working as it supposes to be.

Plz find the snippet of code for multi sphere breaking

compute force all property/atom fx fy fz
compute q all reduce sum c_force[1] c_force[2] c_force[3]
variable fx equal c_q[1]
variable fy equal c_q[2]
variable fz equal c_q[3]
variable avg atom sqrt(fx^2+fy^2+fz^2)

fix data_f all print 5000 "${t} $(v_f1) $(v_f2) $(v_f3) $(v_avg)" screen no file post/33_force

fix m6 all property/atom v_avg scalar yes no no 2
fix integr all multisphere/break allow_group_and_set yes trigger_threshold 1 trigger_timeStep 100000 trigger_fixName v_avg
fix integral all nve/sphere

Plz, share your experience in that case.

Thank You

mschramm | Mon, 01/27/2020 - 17:21

Hello,
If you could provide the input file and a description of what you are trying to achieve in the simulation, that would be a great help.
There were additional errors that I found in the last reply that you provided.
fix data_f all print 5000 "${t} $(v_f1) $(v_f2) $(v_f3) $(v_avg)" screen no file post/33_force -> will always fail as the variables f1 f2 and f3 are never defined.
I also am not 100% sure what you are doing is what you want.
by doing the reduce, as soon as the trigger happens, ALL multispheres would break apart. I think you are looking to have a single multisphere break once one atom in the multisphere sees a force greater than 1. To do this, you would simply do the following.
variable avg atom sqrt(fx^2+fy^2+fz^2)
fix integrMS all multisphere/break allow_group_and_set yes trigger_threshold 1 trigger_timeStep 0 trigger_name v_avg

I was able to adapt the multisphere example (See the bugs forum post) and ran the above with a few particles. Once the particles hit the "floor" the multisphere broke.
NOTE: Since the multisphere example shows a cluster of overlapping atoms, the multisphere break causes the particles to explode. This IS the intended behavior of the ms/break command.

amiya1202 | Thu, 01/16/2025 - 18:05

Hi

I have tried your way for simulating particle breakage (a clump in this case). Following is the my MWE

atom_style sphere
atom_modify map array sort 0 0
boundary m m m
newton off

communicate single vel yes

#PUBLIC version only supports serial execution
processors 1 1 1

units si

region reg block -0.3 0.3 -0.3 0.3 0. 0.5 units box
create_box 1 reg

neighbor 0.004 bin
neigh_modify delay 0

#Material properties required for new pair styles

fix m1 all property/global youngsModulus peratomtype 1.e7
fix m2 all property/global poissonsRatio peratomtype 0.45
fix m3 all property/global coefficientRestitution peratomtypepair 1 0.3
fix m4 all property/global coefficientFriction peratomtypepair 1 0.5
fix m5 all property/global characteristicVelocity scalar 2.

#New pair style
pair_style gran model hertz tangential history #Hertzian without cohesion
pair_coeff * *

timestep 0.00001

fix gravi all gravity 9.81 vector 0.0 0.0 -1.0

fix zwalls all wall/gran model hertz tangential history primitive type 1 zplane 0.0

#distributions for insertion
fix pts1 all particletemplate/multisphere 15485863 atom_type 1 density constant 2500 nspheres 50 ntry 1000000 spheres file data/stone1.multisphere scale 0.001 type 1
fix pdd1 all particledistribution/discrete 15485867 1 pts1 1.0

#region and insertion
region bc cylinder z 0.0 0.0 0.25 0.1 0.4 units box

fix ins all insert/pack seed 32452843 distributiontemplate pdd1 vel constant 0. 0. -1. &
insert_every once overlapcheck yes region bc ntry_mc 10000 particles_in_region 1 #volumefraction_region 0.0004

#integrator for multisphere rigid bodies
#fix integr all multisphere

#output settings, include total thermal energy
compute 1 all erotate/sphere
fix ts all check/timestep/gran 1000 0.1 0.1
thermo_style custom step atoms ke c_1 f_ts[1] f_ts[2] vol
thermo 1000
thermo_modify lost ignore norm no

compute force all property/atom fx fy fz
compute q all reduce sum c_force[1] c_force[2] c_force[3]
variable ffx equal c_q[1]
variable ffy equal c_q[2]
variable ffz equal c_q[3]
variable avg atom sqrt(ffx^2+ffy^2+ffz^2)

fix integrMS all multisphere/break allow_group_and_set yes trigger_threshold 1.0 trigger_timeStep 0 trigger_name v_avg

#insert the first particles so that dump is not empty
dump dmp all custom/vtk 200 post/multi_*.vtk id type mol x y z vx vy vz fx fy fz omegax omegay omegaz radius

#insert particles
run 40000 upto

Error message: Fix used in fix multisphere/break not computed at compatible time (../fix_multisphere_break.cpp:314)