← Back to team overview

yade-users team mailing list archive

Re: [Question #203709]: Which physical parameters i need and how to add them

 

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

Chiara Modenese proposed the following answer:
Hi Christian,

Thanks for details.

You can attribute whatever material you want to whatever body. For
instance:

# create two materials
O.materials.append(..., label='mat_spheres');
O.materials.append(..., label='mat_box');

# assign materials to different bodies
O.bodies.append(..., material='mat_spheres')
O.bodies.append(..., material='mat_box')

Please see: https://yade-dem.org/doc/yade.utils.html?highlight=utils.sphere#yade.utils.sphere
You do something similar in your code (but using the material instance instead of a label like I do), it should work too.

As for the choice of your input parameters, that is never easy to do. To
start with, you could take some initial values from the literature for a
similar material. Then you can carry out a parametric study to assess
the influence of stiffness on your test, for instance.

Good luck with your test,
Chiara


--
Chiara Modenese, BSc MSc 
DPhil(PhD) Candidate in Engineering Science
Department of Engineering Science, University of Oxford
Parks Road, Oxford, OX1 3PJ, UK
email: chiara.modenese@xxxxxxxxxxxx


On 20 Jul 2012, at 13:35, Christian Sommerfeld wrote:

> Question #203709 on Yade changed:
> https://answers.launchpad.net/yade/+question/203709
> 
> Christian Sommerfeld posted a new comment:
> Hi Chiara,
> 
> for the spheres we want to use a ceramic material and for the quader/box
> we want to use steel as it's material.  First of all we want to simulate
> a elastic behaviour, therefore i chose FricMat as the best Material to
> handle this problem.  Furthermore we want to use create a simulation
> with the law of cundall and strack to compare it afterwards with other
> law, which are maybe more suitable.
> 
> It is not such a difficult test. The spheres and the box are inside a
> cylinder, whereby there are so many spheres that they   enclose the box.
> And the box executes a rotational movement around the z-axes and is also
> fixed. Now we want to measure the agent force on the box.
> 
> Our programm is still working, but i am not sure if i take the correct
> physical parameters for this law, because i nly found the calculation
> for kN and kS in the PhD of Smilauer but there is no reference to a law.
> 
> And i can not add different materials to the spheres and the box.
> 
> My programm is the following:
> 
> 
> # import yade modules that we will use below
> from yade import pack, plot
> 
> # PhysicalParameters
> 
> 
> FacetMat=O.materials.append(FrictMat(young=5e4,poisson=0.5,frictionAngle=.6,density=2400))
> 
> 
> 
> oriBody = Quaternion(Vector3(0,0,1),(math.pi))
> quader=O.bodies.append(geom.facetBox((.5,0,.5),(.3,.3,.3),oriBody, wallMask=63, color=(0,0,1), dynamic=True, material=FacetMat))
> 
> # show all bodies of the facet
> for l in O.bodies:
> 	g=l.id
> 	print g
> 
> # create Cylinder from facets
> cyl=O.bodies.append(utils.geom.facetCylinder((0,0,1),1.5,2,orientation=Quaternion((1, 0, 0),0),segmentsNumber=20,wallMask=6, color=(0,1,0), fixed=True, material=FacetMat))
> 
> 
> SphereMat=O.materials.append(FrictMat(young=5e7,poisson=0.5,frictionAngle=.6,density=1000))
> 
> # create block of spheres 
> sphereRadius = 0.06
> nbSpheres = (10,10,30)
> #nbSpheres = (50,50,50)
> for i in xrange(nbSpheres[0]):
>    for j in xrange(nbSpheres[1]):
>        for k in xrange(nbSpheres[2]):
>            x = (i*2 - nbSpheres[0])*sphereRadius*1.1
>            y = (j*2 - nbSpheres[1])*sphereRadius*1.1
>            z = (k*2 - nbSpheres[2])*sphereRadius*1.1
>            sp1=utils.sphere([x,y,z+10],sphereRadius,color=	   	 	 (1,0,0),material=SphereMat)
>            O.bodies.append(sp1) 
> 
> sphereRadius = 0.06
> nbSpheres = (10,10,30)
> #nbSpheres = (50,50,50)
> for i in xrange(nbSpheres[0]):
>    for j in xrange(nbSpheres[1]):
>        for k in xrange(nbSpheres[2]):
>            x = (i*2 - nbSpheres[0])*sphereRadius*1.1
>            y = (j*2 - nbSpheres[1])*sphereRadius*1.1
>            z = (k*2 - nbSpheres[2])*sphereRadius*1.1
>            sp2=utils.sphere([x,y,z+4],sphereRadius,color=(1,0,0),material=SphereMat)
>            O.bodies.append(sp2)
> 
> 
> O.engines=[
>   ForceResetter(),
>   InsertionSortCollider([Bo1_Sphere_Aabb(),Bo1_Facet_Aabb()]),
>   InteractionLoop(
>      # handle sphere+sphere and facet+sphere collisions
>      [Ig2_Sphere_Sphere_Dem3DofGeom(),Ig2_Facet_Sphere_Dem3DofGeom()],
>      #[Ip2_FrictMat_FrictMat_FrictPhys()],
>      [Ip2_2xFrictMat_CSPhys()],
>      [Law2_Dem3Dof_CSPhys_CundallStrack()]
>      #[Law2_L3Geom_FrictPhys_ElPerfPl()]
>   ),
>   GravityEngine(gravity=(0,0,-9.81)),
> 	RotationEngine(rotateAroundZero=True,zeroPoint=(0,0,0),rotationAxis=(0,0,1),angularVelocity=50*(2*pi/60),ids=quader,label='rotor'),
>   NewtonIntegrator(damping=0.4),
> PyRunner(iterPeriod=20,command="myAddPlotData()"),
> 	VTKRecorder(iterPeriod=100,fileName='/tmp/QuaderAufnahme-',recorders=['spheres','facets'])
> ]
> 
> O.dt=1*utils.PWaveTimeStep()
> 
> def myAddPlotData():
> 	force=plot.addData(t=O.time,F=O.forces.f(0).norm()+O.forces.f(1).norm()+O.forces.f(2).norm()+O.forces.f(3).norm()+O.forces.f(4).norm()+O.forces.f(5).norm()+O.forces.f(6).norm()+O.forces.f(7).norm()+O.forces.f(8).norm()+O.forces.f(9).norm()+O.forces.f(10).norm()+O.forces.f(11).norm())
> 
> plot.plots={'t':('F')}
> plot.plot()
> 
> -- 
> You received this question notification because you are a member of
> yade-users, which is an answer contact for Yade.
> 
> _______________________________________________
> Mailing list: https://launchpad.net/~yade-users
> Post to     : yade-users@xxxxxxxxxxxxxxxxxxx
> Unsubscribe : https://launchpad.net/~yade-users
> More help   : https://help.launchpad.net/ListHelp

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