← Back to team overview

yade-users team mailing list archive

Re: [Question #261724]: Interaction of FrictMat and a new class of material

 

Question #261724 on Yade changed:
https://answers.launchpad.net/yade/+question/261724

behzad posted a new comment:
Sure!

Here it is:

The first one gives CohBurgers-CohBurgers interaction and the model prediction coincides the analytical response. 
However, the problem is the FrictMat-CohBurgersMat interaction. (the second python script)

========CohBurgers-CohBurgers interaction===============================

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


id_Mat1=O.materials.append(CohBurgersMat(kmn=1.6e8,kkn=1.2e8,cmn=3e8,ckn=3e8,
kms=1.2e8,kks=1.2e8,cms=3e8,cks=3e8,normalCohesion= 1e5, shearCohesion= 1e3, isCohesive= True, young=1e2,
density=2600, poisson=0.3, frictionAngle= 0.4))
Mat=O.materials[id_Mat1]


s1=utils.sphere([0.0,0.0,0.0],0.01,fixed=True,material=Mat)
s2=utils.sphere([0.0,0.0,2.0e-2],0.01,fixed=False,material=Mat)

O.bodies.append(s1)
O.bodies.append(s2)


O.engines=[
ForceResetter(),
ForceEngine(force=(0,0,7.0e4),ids=[1],label='fEngine'),
InsertionSortCollider([Bo1_Sphere_Aabb(),Bo1_Box_Aabb()]),
InteractionLoop(
[Ig2_Sphere_Sphere_ScGeom(),Ig2_Box_Sphere_ScGeom()],
[Ip2_CohBurgersMat_CohBurgersMat_CohBurgersPhys(setCohesionNow=True)],
[Law2_ScGeom_CohBurgersPhys_CohesiveBurgers(),Law2_ScGeom_FrictPhys_CundallStrack()]
),
NewtonIntegrator(damping=0.7,gravity=[0,0,0]),
PyRunner(command="fEngine.force=(0,0,0)", iterPeriod=10000000),
PyRunner(command='AutoData()',iterPeriod=100000)
]


def AutoData():
	f_app=7.0e4
	t_loading=10
	cmn=3e8
	kmn=1.6e8 
	kkn=1.2e8
	ckn=3e8
	j1= 1/kmn
	j2= 1/kkn
	j3= kkn/ckn
	j4= 1/cmn
	a1= cmn/kmn+cmn*(1.0/kmn+1/kmn)
	a2=cmn*cmn/(kmn*kmn)
	b1= cmn
	b2=cmn*cmn/kmn
	z1=(-a1+sqrt(a1*a1-4.0*a2))/(2.0*a2)
	z2=(-a1-sqrt(a1*a1-4.0*a2))/(2.0*a2)
	aa1=(b2*z1+b1)/a2/(z1-z2)
	aa2=(b2*z2+b1)/a2/(z2-z1)
	if O.time < t_loading:
		displacement=f_app*(j1+j2*(1-exp(-(O.time)*j3))+(O.time)*j4)
	else:
		displacement=f_app*((t_loading/cmn)+j2*(exp(-(O.time)*j3))*(exp((t_loading)*j3)-1));
	
        plot.addData(t=O.time,d_numerical=0.02-(O.bodies[s2.id].state.pos[2]),d_analytical=-(displacement))


plot.plots={'t':(('d_numerical',('d_analytical','^:'),))}
plot.plot()

O.dt=1e-6

qt.View()

===================================================================


========FrictMat-CohBurgers Interaction================================

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


id_Mat1=O.materials.append(CohBurgersMat(kmn=1.6e8,kkn=1.2e8,cmn=3e8,ckn=3e8,
kms=1.2e8,kks=1.2e8,cms=3e8,cks=3e8,normalCohesion= 1e3, shearCohesion= 1e3, isCohesive= True, young=1e2,
density=2600, poisson=0.3, frictionAngle= 0.4))
Mat1=O.materials[id_Mat1]


id_Mat2=O.materials.append(FrictMat(young=1e8,poisson=0.3,density=2600,frictionAngle=1))
Mat2=O.materials[id_Mat2]



s1=utils.sphere([0.0,0.0,0.0],0.01,fixed=True,material=Mat2)
s2=utils.sphere([0.0,0.0,2.0e-2],0.01,fixed=False,material=Mat1)

O.bodies.append(s1)
O.bodies.append(s2)


O.engines=[
ForceResetter(),
ForceEngine(force=(0,0,-2e-4),ids=[1],label='fEngine'),
InsertionSortCollider([Bo1_Sphere_Aabb(),Bo1_Box_Aabb()]),
InteractionLoop(
[Ig2_Sphere_Sphere_ScGeom(),Ig2_Box_Sphere_ScGeom()],
[Ip2_FrictMat_CohBurgersMat_CohBurgersPhys()],
[Law2_ScGeom_CohBurgersPhys_CohesiveBurgers(),Law2_ScGeom_FrictPhys_CundallStrack()]
),
NewtonIntegrator(damping=0.7,gravity=[0,0,0]),
PyRunner(command="fEngine.force=(0,0,0)", iterPeriod=5000000),
PyRunner(command='AutoData()',iterPeriod=150000)
]


def AutoData():
	f_app=2e-4
	t_loading=5
	cmn=3e8
	kmn=0.615384615e8
	kkn=1.2e8
	ckn=3e8
	j1= 1/kmn
	j2= 1/kkn
	j3= kkn/ckn
	j4= 1/cmn
	a1= cmn/kmn+cmn*(1.0/kmn+1/kmn)
	a2=cmn*cmn/(kmn*kmn)
	b1= cmn
	b2=cmn*cmn/kmn
	z1=(-a1+sqrt(a1*a1-4.0*a2))/(2.0*a2)
	z2=(-a1-sqrt(a1*a1-4.0*a2))/(2.0*a2)
	aa1=(b2*z1+b1)/a2/(z1-z2)
	aa2=(b2*z2+b1)/a2/(z2-z1)
	if O.time < t_loading:
		displacement=f_app*(j1+j2*(1-exp(-(O.time)*j3))+(O.time)*j4)
	else:
		displacement=f_app*((t_loading/cmn)+j2*(exp(-(O.time)*j3))*(exp((t_loading)*j3)-1));
	
        plot.addData(t=O.time,d_numerical=0.02-(O.bodies[s2.id].state.pos[2]),d_analytical=displacement)


plot.plots={'t':(('d_numerical',('d_analytical','^:'),))}
plot.plot()

O.dt=1e-6

qt.View()

=================================================================

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


References