[Yade-users] [Question #706768]: Difference between CundallStrack and HertzMindlin

2023-05-23 Thread Sanel Avdić
New question #706768 on Yade:
https://answers.launchpad.net/yade/+question/706768

Hi,
I'm doing uniaxial compression of particles in cylinder container. I'm 
comparing 2 contact models (Hertz Mindlin and Cundall Strack). I noticed that 
the load needed to obtain volume ratio (volume of particles/volume of 
container) 1 is much higher when using Cundall Strack model (12 000 N, 
comparing to 2000 N when using Hertz Mindlin). All the parameters are the same 
in both simulations. Does anyone know why this happens? Also the load in both 
cases increases linearly, and by experiments after some volume ratio it should 
increase kind of exponentionally (for example, the steep of the load curve 
between volume ratios 0.85 and 1 is way steeper than for less volume ratios). 
Thanks in advance

MWE:

from yade import pack, plot, export
import math
#sphere parameters
r=0.0025
rr=0.05
n=800

#material definition
E=31e6
v=0.3897
Ro=1140
dmp=0.05
fr=15
O.materials.append(FrictMat(young=E, poisson=v, frictionAngle=radians(fr), 
density=Ro, label='spheres'))

Ec=2.1e9
vc=0.33
Roc=7850
frc=22
O.materials.append(FrictMat(young=Ec, poisson=vc, frictionAngle=radians(frc), 
density=Roc, label='walls'))

#cylinder container
R=0.015
h=10*R
c=(0,0,h/2)
cylinder = geom.facetCylinder(center=c, radius=R, height=h, segmentsNumber=12, 
wallMask=6, material='walls')
O.bodies.append(cylinder)

#funnel definition
c1=(0,0,h)
dB=8*R
dO=2*R
hB=1.5*h
hO=0.5*h
hP=0
funnel = geom.facetBunker(center=c1, dBunker=dB, dOutput=dO, 
hBunker=hB,hOutput=hO, hPipe=hP, segmentsNumber=20, wallMask=4, 
material='walls')
O.bodies.append(funnel)

#sphere packing
sp = pack.SpherePack()
sp.makeCloud((-dB/3,-dB/3,1.5*h),(dB/3,dB/3,1.9*h), rMean = r, rRelFuzz = rr, 
num = n)
sp.toSimulation(material = 'spheres')

#setting simulation engines
O.engines = [
ForceResetter(),
InsertionSortCollider([Bo1_Sphere_Aabb(), Bo1_Facet_Aabb(), 
Bo1_Wall_Aabb()]),
InteractionLoop(
[Ig2_Sphere_Sphere_ScGeom(), Ig2_Facet_Sphere_ScGeom(), 
Ig2_Wall_Sphere_ScGeom()],
[Ip2_FrictMat_FrictMat_MindlinPhys()],
[Law2_ScGeom_MindlinPhys_Mindlin(label='Mindlin')]
),
NewtonIntegrator(gravity=(0, 0, -9.81), damping=dmp),
PyRunner(command='checkUnbalanced()', realPeriod=2, label='checker'),
]

#timestep
O.dt = 0.3*PWaveTimeStep()

#checking the status of gravity deposition and loading if done
def checkUnbalanced():
if O.iter < 15:
return
if unbalancedForce()>1:
return
#adding the loading plate
O.bodies.append(wall(max([b.state.pos[2] + b.shape.radius for b in 
O.bodies if isinstance(b.shape, Sphere)]), axis=2, sense=-1))
global plate 
plate = O.bodies[-1]
w=plate.state.pos[2]
plate.state.vel =(0,0,-0.05)
O.engines = O.engines + [PyRunner(command='addPlotData()', 
iterPeriod=100)] 
checker.command = 'unloadPlate()'

#checking the loading status and unloading if done
def unloadPlate():
V1=((2*R)*(2*R)*3.14/4)*plate.state.pos[2]
V2=n*4*3.14*r*r*r/3
Vr=V2/V1
Fz = O.forces.f(plate.id)[2]
S=Fz/(4*R*R*3.14/4)
if Vr>=1.1:
O.pause()   


#plotting the data
def addPlotData():
if not isinstance(O.bodies[-1].shape, Wall):
plot.addData()
return
Fz = O.forces.f(plate.id)[2]
w=plate.state.pos[2]
V1=((2*R)*(2*R)*3.14/4)*w
V2=n*4*3.14*r*r*r/3
Vr=V2/V1
S=Fz/(4*r*r*3.14/4)
plot.addData(Fz=Fz, w=plate.state.pos[2], unbalanced=unbalancedForce(), 
Vr=V2/V1, S=Fz/(4*R*R*3.14/4))

plot.plots = {'w':('Fz'),'Vr':('S'),}
plot.plot() 


O.run() 



-- 
You received this question notification because your team yade-users is
an answer contact for Yade.

___
Mailing list: https://launchpad.net/~yade-users
Post to : yade-users@lists.launchpad.net
Unsubscribe : https://launchpad.net/~yade-users
More help   : https://help.launchpad.net/ListHelp


Re: [Yade-users] [Question #706768]: Difference between CundallStrack and HertzMindlin

2023-05-23 Thread Karol Brzezinski
Question #706768 on Yade changed:
https://answers.launchpad.net/yade/+question/706768

Status: Open => Answered

Karol Brzezinski proposed the following answer:
Hi Senel,

In the Cundall-Strack model, the contact stiffness is linear (does not
depend on the contact force or particles' overlap). On the other hand,
the Hertz-Mindlin law is exponential [1], and stiffness increases with
load. In other words - those are different models, so they give
different results.

BTW: Your void ratio definition is very strange. If you achieved Vr = 1
in the experiment (by your definition Vr=volume of particles/volume of
container), you actually had zero porosity. It doesn't look like this in
the simulation, because the particles highly overlap, hence some of the
particle volume is counted twice.


Best wishes,
Karol


[1] https://en.wikipedia.org/wiki/Contact_mechanics

-- 
You received this question notification because your team yade-users is
an answer contact for Yade.

___
Mailing list: https://launchpad.net/~yade-users
Post to : yade-users@lists.launchpad.net
Unsubscribe : https://launchpad.net/~yade-users
More help   : https://help.launchpad.net/ListHelp


Re: [Yade-users] [Question #706768]: Difference between CundallStrack and HertzMindlin

2023-05-24 Thread Jan Stránský
Question #706768 on Yade changed:
https://answers.launchpad.net/yade/+question/706768

Jan Stránský posted a new comment:
Also, in Cundall-Strack model and Hertz-Mindlin law the meaning of 'young' is 
different, so you naturally get different results.
Cheers
Jan

-- 
You received this question notification because your team yade-users is
an answer contact for Yade.

___
Mailing list: https://launchpad.net/~yade-users
Post to : yade-users@lists.launchpad.net
Unsubscribe : https://launchpad.net/~yade-users
More help   : https://help.launchpad.net/ListHelp