yade-users team mailing list archive
-
yade-users team
-
Mailing list archive
-
Message #11040
[Question #264456]: Simple compression on an sphere assembly
New question #264456 on Yade:
https://answers.launchpad.net/yade/+question/264456
Hello,
I try to create a spherical grain and watch his simple compressive failure modes depending on the mesh, size and cohesion between grains affected.
I managed to create this little piece of code that allows me to create a sphere made up of smaller sphere, but when I run the simulation with high Young's modules, the ball explodes, countered for this I must impose strong cohesion and ruptures observed are not consistent. I also tested to reduce the time step but it has not worked.
Would anyone have a solution?
Below is my entire code.
Thank you in advance.
Best Regards
from yade import pack
from math import *
from yade import plot
from yade import qt
vitesse=0.01
cohN=100e3
cohT=70e3
E=50e7
nu=0.3
d=2310
phi=35
rayon_s=0.005
rayon_g=0.05
rayon_boite=0.050
fin_calcul=1000
O.materials.append(CohFrictMat(young=E,poisson=nu,density=d,frictionAngle=radians(phi),normalCohesion=cohN,shearCohesion=cohT,label='sol'))
O.materials.append(CohFrictMat(young=10000,poisson=0.5,density=3000,frictionAngle=radians(35),normalCohesion=0,shearCohesion=0,label='walls'))
sp=pack.regularHexa(yade._packPredicates.inSphere(center=(0,0,0),radius=rayon_g),gap=rayon_s/1,radius=rayon_s,material='sol')
mn,mx=(-rayon_boite*2,-rayon_boite,-rayon_boite*2),(rayon_boite*2,rayon_boite,rayon_boite*2) # minimum and maximum vector of the box around the spheres' cloud
walls=utils.aabbWalls([mn,mx],thickness=0,material='walls') # define material for walls
wallIds=O.bodies.append(walls) # call walls into simulation
O.bodies.append(sp)
O.engines=[
ForceResetter(),
InsertionSortCollider([Bo1_Sphere_Aabb(),Bo1_Box_Aabb()]),
InteractionLoop(
[Ig2_Sphere_Sphere_ScGeom6D(),Ig2_Box_Sphere_ScGeom6D()], #to handle CohFrictPhys we need SCGeom6D between spheres
[Ip2_CohFrictMat_CohFrictMat_CohFrictPhys(setCohesionNow=True,setCohesionOnNewContacts=False),Ip2_FrictMat_FrictMat_FrictPhys()],
[Law2_ScGeom6D_CohFrictPhys_CohesionMoment()] # law2 for CohFrictPhys and FrictPhys
),
TranslationEngine(
translationAxis=(0,-1,0),
ids=[3],
label='tl',
velocity=vitesse
),
NewtonIntegrator(damping=0.7),
VTKRecorder(iterPeriod=1000,fileName='/home/dgerard/YADE/VTK/boule-',recorders=['spheres','facets']),
PyRunner(command='sauvegarde()',iterPeriod=fin_calcul)
]
O.dt=0.01*utils.PWaveTimeStep()
qt.Controller()
qt.View()
def sauvegarde():
num = 0
for i in O.interactions:
if i.phys.cohesionBroken:
num+=1
nbcontact=num
plot.saveDataTxt('ecrasementgrain.txt')
plot.addData(i=O.iter,Fs=O.forces.f(3)[1],Fi=O.forces.f(2)[1],nombre=nbcontact)
plot.plots={'i':('Fs','Fi','nombre')}
plot.plot()
O.saveTmp()
--
You received this question notification because you are a member of
yade-users, which is an answer contact for Yade.