← Back to team overview

yade-users team mailing list archive

Re: [Question #248065]: Young's Modulus of a system of two contacting spheres

 

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

    Status: Open => Answered

Jan Stránský proposed the following answer:
Hi Behzad,

thanks for the script.

s2=utils.sphere([0.0,0.0,3.0],1.0,fixed=False,material=Mat)

so your upper sphere is normal non-ficed body, so it is moving (as the
upper box is pushing it). The contact law is linear elastic at the
intaraction level. If you plot interaction normal force against
"displacement":

def AutoData():
  i = O.interactions[box_2,s2.id]
  plot.addData(
    d=O.bodies[box_2].state.pos[2],
    F=O.forces.f(1)[2],
    iF = i.phys.normalForce.norm(),
    iDspl = i.geom.penetrationDepth,
  )
plot.plots = {'iDspl':'iF'}

then you will get line. But if a body is free to move, the normalForce does
not need to be linear in time.

cheers
Jan



2014-05-02 18:02 GMT+02:00 behzad majidi <
question248065@xxxxxxxxxxxxxxxxxxxxx>:

> New question #248065 on Yade:
> https://answers.launchpad.net/yade/+question/248065
>
> Hi,
>
> I tried to make a simple scene of two contacting spheres. The idea is to
> calibrate the material properties to obtain a certain value of Young's
> modulus. (For this simple case we don't need to do it and we can calculate
> it using equations, but for other systems with thousands of spheres and
> different packings it can be necessary).
>
> Anyways, two spheres are touching here. The facets are wrapping the
> spheres are the bottom and top. The upper facet is moving down to impose a
> displacement and we measure the force on the ball.
> I was expecting to get a linear response which shows increasing force. But
> it doesn't happen.
> Do you guys know why?
>
>
> The entire script is a follows;
>
> =======================
>
> O.reset()
> from yade import utils, plot
> from yade import pack, qt
>
>
>
> id_Mat1=O.materials.append(FrictMat(young=1e8,poisson=0.3,density=1000,frictionAngle=1))
> Mat=O.materials[id_Mat1]
>
>
> id_Mat2=O.materials.append(FrictMat(young=1e10,poisson=0.3,density=1000,frictionAngle=1))
> Rigid=O.materials[id_Mat2]
>
>
> s1=utils.sphere([0.0,0.0,1.0],1.0,fixed=True,material=Mat)
> s2=utils.sphere([0.0,0.0,3.0],1.0,fixed=False,material=Mat)
>
> O.bodies.append(s1)
> O.bodies.append(s2)
>
> box_1 = O.bodies.append(box((0,0,0),(1,1,.001),fixed=True,material=Rigid))
> box_2 =
> O.bodies.append(box((0,0,4.0),(1,1,.0001),dynamic=False,fixed=False,material=Rigid))
>
> O.engines=[
> ForceResetter(),
> InsertionSortCollider([Bo1_Sphere_Aabb(),Bo1_Box_Aabb()]),
> InteractionLoop(
> [Ig2_Sphere_Sphere_ScGeom(),Ig2_Box_Sphere_ScGeom()],
> [Ip2_FrictMat_FrictMat_FrictPhys()],
> [Law2_ScGeom_FrictPhys_CundallStrack()]
> ),
> NewtonIntegrator(damping=0.7,gravity=[0,0,0]),
> PyRunner(command='AutoData()',iterPeriod=1000)
> ]
>
>
> O.bodies[box_2].state.vel=(0,0,-0.001)
>
> qt.View()
>
>
> def AutoData():
>         plot.addData(d=O.bodies[box_2].state.pos[2],F=O.forces.f(1)[2])
>
>
> plot.plots={'d':('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.