← Back to team overview

yade-users team mailing list archive

[Question #262752]: spheres rotations go unstable

 

New question #262752 on Yade:
https://answers.launchpad.net/yade/+question/262752

Hi,

I am simulating a test in which material is sandwiched between two plates and the upper plate is rotated with a sinusoidal function. 
I ran the model with CohFrictMat and things go fine. 
However, when I try CohBurgersMat (a new class of material derived from CohFrictMat) spheres start to rotate even though the interactions are cohesive.
What's missing is these interactions? 





This is the model script for CohFrictMat case:

O.reset()
from yade import utils, plot
from yade import pack, qt


O.engines=[
ForceResetter(),
GlobalStiffnessTimeStepper(),
InsertionSortCollider([Bo1_Sphere_Aabb(),Bo1_Box_Aabb(),Bo1_Facet_Aabb()]),
InteractionLoop(
[Ig2_Sphere_Sphere_ScGeom6D(),Ig2_Box_Sphere_ScGeom6D()],
[Ip2_CohFrictMat_CohFrictMat_CohFrictPhys(setCohesionNow=True, setCohesionOnNewContacts=True)],
[Law2_ScGeom6D_CohFrictPhys_CohesionMoment(),Law2_ScGeom_FrictPhys_CundallStrack()]
),
NewtonIntegrator(damping=0.7,gravity=[0,0,-9.81])
]


id_Mat1=O.materials.append(CohFrictMat(normalCohesion= 1e15, shearCohesion= 1e13, isCohesive= True, young=1e5,
density=2600, poisson=0.3, frictionAngle= 0.4))
CohMat=O.materials[id_Mat1]


lower_plate = O.bodies.append(box((0,0,-0.0003),(.006,.006,.0002),fixed=True,material=CohMat))

upper_plate = O.bodies.append(box((0,0,0.0046),(.006,.006,.0002),fixed=False,material=CohMat))



fc=yade.geom.facetCylinder((0,0,0.001), 0.0051, 0.005, orientation=Quaternion((0, 0, 1), 0), segmentsNumber=100, wallMask=6, angleRange=None, closeGap=False, radiusTopInner=-1, radiusBottomInner=-1,material=CohMat)
O.bodies.append(fc)




pred=pack.inCylinder((0,0,0),(0,0,2.5e-3),5e-3)

O.bodies.append(pack.regularOrtho(pred,radius=0.0005,gap=0.0, material=CohMat))

print(len(O.bodies))




for x in range(len(O.bodies)):
	if (O.bodies[x]):
                if isinstance(O.bodies[x].shape,Sphere):
			O.bodies[x].shape.color=(0,0.3,0.7)
		else:
			O.bodies[x].shape.color=(0.3,0.3,0.3)



O.forces.addF(1,(0,0,-0.02),permanent=True)

O.run(40000,True)


O.bodies[0].state.blockedDOFs='xyzXYZ'
O.bodies[upper_plate].state.blockedDOFs='xyzXYZ'




def calcul():
	w=math.sin(O.time*25.12)*1.0
	O.bodies[upper_plate].state.angVel=(0,0,w)


O.engines=O.engines+[PyRunner(iterPeriod=1,command='calcul()',label='Rate')]
O.engines=O.engines+[PyRunner(iterPeriod=1,command='addPlotData()',label='plotDataCollector')]



plot.plots={'t':('eps',),'t ':('pos'),' t':('n')}

def addPlotData():
       yade.plot.addData(t=O.time,pos=O.bodies[upper_plate].state.pos[2],eps=O.bodies[upper_plate].state.angVel[2],
			n=len([i for i in O.interactions]))
plot.plot()

#====================


But if we run the script with CohBurgersMat, it goes crazy:


#===============================================

O.reset()
from yade import utils, plot
from yade import pack, qt


O.engines=[
ForceResetter(),
GlobalStiffnessTimeStepper(),
InsertionSortCollider([Bo1_Sphere_Aabb(),Bo1_Box_Aabb(),Bo1_Facet_Aabb()]),
InteractionLoop(
[Ig2_Sphere_Sphere_ScGeom(),Ig2_Box_Sphere_ScGeom(),Ig2_Facet_Sphere_ScGeom()],
[Ip2_FrictMat_CohBurgersMat_CohBurgersPhys(),
Ip2_FrictMat_FrictMat_FrictPhys(),
Ip2_CohBurgersMat_CohBurgersMat_CohBurgersPhys(setCohesionNow=True,setCohesionOnNewContacts=True)],
[Law2_ScGeom_CohBurgersPhys_CohesiveBurgers(),Law2_ScGeom_FrictPhys_CundallStrack()]
),
NewtonIntegrator(damping=0.7,gravity=[0,0,-9.81])
]


wallMat=O.materials.append(FrictMat(young=1e4,poisson=0.3,density=2500,frictionAngle=2.5))


bMat=O.materials.append(CohBurgersMat(kmn=1.05e3,kkn=5.0e3,cmn=1.3e3,ckn=1.6e3,
kms=1.05e3,kks=5.0e3,cms=1.3e3,cks=1.6e3,normalCohesion= 1e12, shearCohesion= 1e12, isCohesive= True,
density=1500, poisson=0.3, frictionAngle= 0.4))


bMat1=O.materials.append(CohBurgersMat(kmn=2.05e3,kkn=5.0e3,cmn=1.3e3,ckn=1.6e3,
kms=2.05e3,kks=5.0e3,cms=1.3e3,cks=1.6e3,normalCohesion= 1e12, shearCohesion= 1e12, isCohesive= True,
density=1500, poisson=0.3, frictionAngle= 0.4))


bMat2=O.materials.append(CohBurgersMat(kmn=2.05e2,kkn=5.0e2,cmn=1.3e2,ckn=1.6e2,
kms=2.05e2,kks=5.0e2,cms=1.3e2,cks=1.6e2,normalCohesion= 1e12, shearCohesion= 1e12, isCohesive= True,
density=1500, poisson=0.3, frictionAngle= 0.4))


lower_plate = O.bodies.append(box((0,0,-0.0003),(.006,.006,.0002),fixed=True,material=wallMat))

upper_plate = O.bodies.append(box((0,0,0.0046),(.006,.006,.0002),fixed=False,material=wallMat))



fc=yade.geom.facetCylinder((0,0,0.001), 0.0051, 0.005, orientation=Quaternion((0, 0, 1), 0), segmentsNumber=100, wallMask=6, angleRange=None, closeGap=False, radiusTopInner=-1, radiusBottomInner=-1,material=wallMat)
O.bodies.append(fc)


pred=pack.inCylinder((0,0,0),(0,0,2.5e-3),5e-3)

O.bodies.append(pack.regularOrtho(pred,radius=0.0005,gap=0.0, material=bMat))

print(len(O.bodies))


for x in range(len(O.bodies)):
	if (O.bodies[x]):
                if isinstance(O.bodies[x].shape,Sphere):
			O.bodies[x].shape.color=(0,0.3,0.7)
		else:
			O.bodies[x].shape.color=(0.3,0.3,0.3)


O.forces.addF(1,(0,0,-0.02),permanent=True)

O.run(40000,True)


O.bodies[0].state.blockedDOFs='xyzXYZ'
O.bodies[upper_plate].state.blockedDOFs='xyzXYZ'


def calcul():
	w=math.sin(O.time*25.12)*1.0
	O.bodies[upper_plate].state.angVel=(0,0,w)


O.engines=O.engines+[PyRunner(iterPeriod=1,command='calcul()',label='Rate')]
O.engines=O.engines+[PyRunner(iterPeriod=1,command='addPlotData()',label='plotDataCollector')]



plot.plots={'t':('eps',),'t ':('pos'),' t':('n')}

def addPlotData():
       yade.plot.addData(t=O.time,pos=O.bodies[upper_plate].state.pos[2],eps=O.bodies[upper_plate].state.angVel[2],
			n=len([i for i in O.interactions]))
plot.plot()

#========================================================

You can have access to CohBurgersMat codes here:

https://www.dropbox.com/s/npodv33qultd2xo/CohBurgersMat.zip?dl=0




-- 
You received this question notification because you are a member of
yade-users, which is an answer contact for Yade.