yade-users team mailing list archive
-
yade-users team
-
Mailing list archive
-
Message #06277
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.