Simulate particle breaking by fragment replace method

Asked by yangjunjie

Hi everyone,

I want to use YADE to simulate the particles crushing of calcareous sand in a triaxial test, and recently I found a more suitable method to simulate particle breaking. It is a discrete fragmentation method, a multigenerational approach, in which single element break and are replaced by a new generation of smaller grains(daughters). This method need several further modelling choices. The most important ones are a particle failure criterion and a particle spawning procedure. The particle failure criterion is used to decide when a particle is crushed, and the particle spawning procedure establishes the relationship between the disappearing broken particle and the new generation of smaller particles that replace it. So my questions are: How can I achieve the process of replacing large particle with smaller particles ? Any idea ? many thanks in advance!

Yang

Question information

Language:
English Edit question
Status:
Solved
For:
Yade Edit question
Assignee:
No assignee Edit question
Solved by:
Jan Stránský
Solved:
Last query:
Last reply:
Revision history for this message
Best Jan Stránský (honzik) said :
#1

Hello Yang,

> How can I achieve the process of replacing large particle with smaller particles ?

You can do it directly in python, something like:
###
def selectBodiesToCrush():
   stresses = bodyStressTensors() # e.g. based on overall particle stress
   ret = []
   for i,stress in enumerate(stresses):
      if stress[0,0] > 10e6: # should be some more sophisticated condition :-)
         ret.append(i)
   return ret

def createChildren(b):
   p = b.state.pos
   r = b.shape.radius
   # two spheres somehow located, should be more sophisticated, too
   s1 = sphere(p+(.5*r,0,0),.5*r)
   s2 = sphere(p-(.5*r,0,0),.5*r)
   return s1,s2

bodiesToDelete = selectBodiesToCrush()
for i in bodiesToDelete:
   b = O.bodies[i]
   children = createChildren(b)
   O.bodies.erase(i)
   O.bodies.append(children)
###

Also have a look on existing solution for polyhedrons [1,2,3].

The specific solution depends on maaany factors (particle shape, desired results, computer resources...)

cheers
Jan

[1] https://github.com/yade/trunk/tree/master/examples/polyhedraBreak
[2] https://github.com/yade/trunk/blob/master/pkg/dem/Polyhedra_splitter.cpp
[Elias2014] Jan Eliáš (2014), Simulation of railway ballast using crushable polyhedral particles. Powder Technology (264), pages 458–465. DOI 10.1016/j.powtec.2014.05.052

Revision history for this message
yangjunjie (yangjunjie11) said :
#2

Thanks Jan Stránský, that solved my question.