← Back to team overview

yade-users team mailing list archive

Re: [Question #229268]: Modelling a free-fall test of a concrete block

 

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

    Status: Open => Answered

Jan Stránský proposed the following answer:
Hello,

I see 2 possible reasons why this behavior is met.

Such behavior you described is typically caused by too large time step.
utils.PWaveTimeStep() computes critical time step for one interaction
(althoufh with lenght equal only to particle radius, in reality the length
is 2*particle radius or larger),  but for dense packings, there are more
interactions acting on one particle, so it is a good idea to multiply it
e.g. by 0.5, so
O.dt=0.5*utils.PWaveTimeStep()

Another reason could be material parameter relDuctility. relDuctility
should be > 1, see [1], page 40, where ef=e0*relDuctility. Maybe it would
be a good idea to check the value and throw error / warning in such case,
thanks for idea :-)

So try it and let us know if it helps or not :-)
cheers
Jan

[1] http://beta.arcig.cz/~eudoxos/smilauer2010-phd-thesis.pdf

PS: again some remarks, as last time not so important:
- It is possible to use FrictMat for facets, see
yade/examples/test/test_Ip2_FrictMat_CpmMat_FrictPhys.py
- you can save some time during falldown (when nothing important happen) by
generating the concrete cube lower (just above the facet) and prescribing
proper velocity to all particles:

vel = -9.81*height
for b in concreteSpheres:
  b.state.vel = Vector3(0,0,vel)



2013/5/29 fracardo <question229268@xxxxxxxxxxxxxxxxxxxxx>

> Question #229268 on Yade changed:
> https://answers.launchpad.net/yade/+question/229268
>
>     Status: Solved => Open
>
> fracardo is still having a problem:
> Hi everybody,
>
> As you know by my first post, I'm trying to model a free fall test for a
> concrete block against a common ground (I've modelled it using a facet
> of concrete material). Everything is running right, but I'm having
> several problems with the simulation because of the concrete block
> stability.
>
> I mean, few seconds after the simulation started all the particles that
> conform the concrete block begin to eject under high velocity. I think
> that it is due to a large Young modulus in concrete block (30e9). When I
> modify that parameter and use a lower one (3e5 - 3e7), this phenomenon
> does not happen, and concrete block stays stable.
>
> With this modification, obviously, stiff behaviour of the concrete block
> does not represent the real phenomenon and when it reaches the ground
> all the particles that conform it crack around the floor without any
> cohesion or stifness. My question is related with such problem, is there
> any option to modify the stifness behaviour of concrete block just when
> it reaches the ground in order to avoid the particles ejection before
> this happen, and at the same time, keeping the right behaviour of
> concrete block when it impacts against the ground?
>
> I developed a script as follows, and I'm using yade daily which
> currently is 3+3606+47~precise1 running on Ubuntu:
>
> "
> #!/usr/bin/python
> # -*- coding: utf-8 -*-
>
> from yade import pack
> from yade import utils
> from yade import plot
> import math
>
> # Concrete block material "idConcrete"
>
>
> idConcrete=O.materials.append(CpmMat(young=30e9,dmgRateExp=0.3,dmgTau=1000,neverDamage=False,plRateExp=0,plTau=-1,frictionAngle=atan(0.8),poisson=.25,density=4800,sigmaT=3.5e6,epsCrackOnset=1e-4,isoPrestress=0,relDuctility=1e-6))
>
> # Concrete ground material: "idGround"
>
>
> idGround=O.materials.append(CpmMat(young=30e9,density=4800,poisson=.2,frictionAngle=.5,relDuctility=1e-4,sigmaT=9e6,epsCrackOnset=1e-8,isoPrestress=0))
>
> # Geometry/Properties of concrete block:
>
> Box1X=0.5 # X-axis lenght.
>
> Box2Y=0.5 # Y-axis lenght
>
> Box3Z=0.5 # Z-axis lenght
>
> High=2 # Z-axis high of concrete block
>
> RadioEsferas=0.01 # Radius of particles
>
> DesvEsferas= 0.1 # Deviation of radius
>
> NumEsferas=7000 # Sphere number in concrete block
>
> Poroso=0.5 # Porosity of concrete block
>
> sp=pack.SpherePack()
>
> sp.makeCloud(minCorner=(0.5*Box1X,-0.5*Box2Y,1*High),
>
> maxCorner=(-0.5*Box1X,0.5*Box2Y,(1*High)+Box3Z),rMean=RadioEsferas,rRelFuzz=DesvEsferas,num=NumEsferas,porosity=Poroso)
>
> sp.toSimulation(material=idConcrete)
>
> # Ground geometry.
>
> Coord1= 5 # X-axis.
>
> Coord2= 5 # Y-axis.
>
> Coord3= 5 # Z-axis.
>
>
>
> O.bodies.append([utils.facet([[Coord1,0,0],[-Coord1,-Coord2,0],[-Coord1,Coord2,0]],dynamic=False,wire=False,color=[1,0,0],material=idGround)])
>
> # Interaction radius for concrete behaviour
>
> RadioInt=1.5
>
>
> # Engines
>
>
> O.engines=[ForceResetter(),InsertionSortCollider([Bo1_Sphere_Aabb(aabbEnlargeFactor=RadioInt,label='bo1s'),Bo1_Facet_Aabb()]),
>
> InteractionLoop([Ig2_Sphere_Sphere_ScGeom(interactionDetectionFactor=RadioInt,label='ig2ss'),Ig2_Facet_Sphere_ScGeom()],
>
> [Ip2_CpmMat_CpmMat_CpmPhys()],[Law2_ScGeom_CpmPhys_Cpm(epsSoft=0)]),NewtonIntegrator(damping=0.4,gravity=[0,0,-10]),PyRunner(command='myAddData()',
> iterPeriod=2)]
>
>
> O.step()
>
> bo1s.aabbEnlargeFactor=1
> ig2ss.interactionDetectionFactor=1
>
> O.dt=utils.PWaveTimeStep()
>
> def myAddData():
>         b=O.bodies[1000]
>         plot.addData(z1=b.state.pos[2], i=O.iter, t=O.time)
> "
> I'm trying to solve this problem but I haven't been able yet.
>
> Thank you in advance,
>
> Paco.
>
> --
> 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.