about elastic behavior

Asked by xjin

I want to simulate a kind of ball which is soft.It will produce deformation under the compressive stress, but when there is no any forces,it will be returned to a ball,like it has large plasticity. Is the body using Sphere?Or choose the which material? Can you give saome suggestion? Thanks a lot!

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
Jan Stránský (honzik) said :
#1

Hello,

what would you like to simulate and what should be expected results?

> like it has large plasticity

did you mean elasticity? (according to the rest of the content)

> Is the body using Sphere

did not get this point, sorry.. what "the body" refers to? what Sphere means and why is it with capital S?
the behavior you describe can be modeled by an agglomerate of spheres

> Or choose the which material?

assuming elasticity (?), any cohesive material can be used (CohFrictMat, CpmMat, JCFpmMat

> Can you give saome suggestion?

please clarify your question, creating an example should not be difficult.

cheers
Jan

Revision history for this message
xjin (jpeng22) said :
#2

Sorry, my English is not well.
I think I ask on another aspect.
If I build two particles, and give them forces to contact:
----------------------------------------------------------------------------------------------------------

O.reset()

from yade import pack
from yade import plot
from yade import os
import math

density=2350
young=5.7e9
poisson=0.5
frictionAngle=radians(41.7)
sigmaT=0.05e6
epsCrackOnset=1e-5
relDuctility=1.2e-4

concMat=O.materials.append(CpmMat(density=density,young=young,frictionAngle=frictionAngle,poisson=poisson,sigmaT=sigmaT,epsCrackOnset=epsCrackOnset,relDuctility=relDuctility))

O.bodies.append(sphere([0,0,0],1,material=concMat))
O.bodies.append(sphere([0,0,2.5],1,material=concMat))

def addForces():
O.forces.addF(1,(0,0,-100))
O.forces.addF(0,(0,0, 100))

globals()['addForces']=locals()['addForces']

O.engines=[
ForceResetter(),
InsertionSortCollider([
Bo1_Sphere_Aabb(),
]),
InteractionLoop(
[
Ig2_Sphere_Sphere_ScGeom(),
],
[
Ip2_CpmMat_CpmMat_CpmPhys(),
],
[
Law2_ScGeom_CpmPhys_Cpm(),
],
),
PyRunner(iterPeriod=1,command="addForces()"),
NewtonIntegrator(gravity=(0,0,-0),damping=.1),
#CpmStateUpdater(iterPeriod=1,label='cpmStateUpdater'),
]
O.dt=0.01*utils.PWaveTimeStep()

O.run()
-------------------------------------------------------------------------------------------------------------------------------

After a long time, the two particles are contacted and their positions are fixed.

I see their contact is point-point.

1. Can the particles occur deformation so that they contact each other by face-face if the forces increase?

2. If I build more particles in a box, and compress them, like triaxial compression test, can the particles occur deformation so that they contact each other by face-face?

3.I would like to use deformable particle and obtain the deformation in simulation, like basketball, whether I can only use agglomerate of spheres? can you give suggestion?

Thanks a lot!

Revision history for this message
Jan Stránský (honzik) said :
#3

Hello,

> I see their contact is point-point

always try to get also some numerical evidence. E.g. if you print the i.geom.penetrationDepth, it should be some positive value, corresponding to face (maybe a "little", but not exactly point-point)

1. yes, just try to make the force 10x, 100x, 1000x ... higher

2. yes, of course, the amount of deformation depends on stress/forces values

3. I am most familiar with CpmMat, but other materials can be used, too. An example of a ball composed by overlapping smaller spheres:
###
from yade import pack
# initial packing and a wall
R = 1.
r = .2
mat = CpmMat(young=1e6,poisson=.2,sigmaT=1e20,epsCrackOnset=1e20,relDuctility=2) # a cohesive elastic material
O.materials.append(mat)
sphs = pack.regularHexa(pack.inSphere((0,0,0),R),r,-.6*r) # -.6r = to create overlaps
O.bodies.append(sphs)
O.bodies.append(wall((0,0,-2*R),2))
O.engines = [
  ForceResetter(),
  InsertionSortCollider([Bo1_Sphere_Aabb(),Bo1_Wall_Aabb()]),
  InteractionLoop(
    [Ig2_Sphere_Sphere_ScGeom(), Ig2_Wall_Sphere_ScGeom()],
    [Ip2_CpmMat_CpmMat_CpmPhys()],
    [Law2_ScGeom_CpmPhys_Cpm()],
  ),
  NewtonIntegrator(damping=.1,gravity=(0,0,-9.81)),
]
O.dt = 0.
# O.step() creates initial cohesive interactions with defined stiffness.
# Further material change does not influence existing interactions
O.step()
#
mat.young = 1e10 # increase stiffness for new contacts
O.dt = PWaveTimeStep()
###

cheers
Jan

PS: until now your description is about elastic behavior, please consider to modify the title of the question

Revision history for this message
xjin (jpeng22) said :
#4

Thanks for Jan Stránský!
I undersatand much more.
And I want to sak for another two promblems:
1.How can I print i.geom.penetrationDepth in YADE? I am new to YADE, Can you give me the example of the code?
2.As the promblem refered before, Can I only use a sphere to simulate a basketball and obtain the deformation?
Thanks a lot!

Revision history for this message
Best Jan Stránský (honzik) said :
#5

Hello,

1.
for i in O.interaction:
   print i.geom.penetrationDepth

2.
Using spheres as DEM particles is the easiest (and probably only reasonable in current YADE) choice
The macro shape could be any shape

cheers
Jan

Revision history for this message
xjin (jpeng22) said :
#6

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