too many fluctuations in 2d simulation

Asked by ceguo on 2012-03-15

Hi,

Due to my problem scale, I have to use a relatively small packing to represent a RVE. So the particle number is about 1000~2000. But I found the behaviour is too fluctuated. I've seen some published results using the similar number of particles but get relatively smooth results. After some failed try on tuning parameters (particle properties, compression speed, etc.), I am wondering if anyone has experience on the 2d simulation with yade. Below is my script:

====================================================================
from yade import pack,plot

O.materials.append(FrictMat(young=1e9,poisson=.3,frictionAngle=.7,density=2.6e3))

sp = pack.SpherePack()
sp.makeCloud(minCorner=(0,0,0),maxCorner=(3,3,0),rMean=0.03,rRelFuzz=.5,periodic=True,seed=1)
sp.toSimulation()
O.cell.hSize = Matrix3(3,0,0, 0,3,0, 0,0,1)
print len(O.bodies)
for p in O.bodies:
   p.state.blockedDOFs = 'zXY'

def saveAddData():
   plot.addData(
      stress_xx = biax.stress[0],
      stress_yy = biax.stress[1],
      strain_xx = biax.strain[0],
      strain_yy = biax.strain[1]
   )

O.dt = .5*utils.PWaveTimeStep()
##consolidation
O.engines = [
   ForceResetter(),
   InsertionSortCollider([Bo1_Sphere_Aabb()]),
   InteractionLoop(
      [Ig2_Sphere_Sphere_Dem3DofGeom()],
      [Ip2_FrictMat_FrictMat_FrictPhys()],
      [Law2_Dem3DofGeom_FrictPhys_CundallStrack()]
   ),
   Peri3dController(
      goal=(-1.e6,-1.e6,0,0,0,0),
      stressMask=3,
      nSteps=20000,
      maxStrain=1.,
      label='cons'
   ),
   NewtonIntegrator(damping=.3)
]
O.run();O.wait()

O.saveTmp(); O.loadTmp()
O.materials[0].frictionAngle=.5
##undrained biaxial compression
O.engines = [
   ForceResetter(),
   InsertionSortCollider([Bo1_Sphere_Aabb()]),
   InteractionLoop(
      [Ig2_Sphere_Sphere_Dem3DofGeom()],
      [Ip2_FrictMat_FrictMat_FrictPhys()],
      [Law2_Dem3DofGeom_FrictPhys_CundallStrack()]
   ),
   Peri3dController(
      goal=(1.e-1,-1.e-1,0,0,0,0),
      stressMask=0,
      nSteps=200000,
      maxStrain=1.,
      label='biax',
      stressIdeal=Vector6(-1.e6,-1.e6,0,0,0,0)
   ),
   NewtonIntegrator(damping=.3),
   PyRunner(command='saveAddData()',iterPeriod=1000)
]
O.run();O.wait()

plot.saveDataTxt('result_undrained.txt',vars=('stress_xx','stress_yy','strain_xx','strain_yy','porosity'))

Question information

Language:
English Edit question
Status:
Answered
For:
Yade Edit question
Assignee:
No assignee Edit question
Last query:
2012-03-15
Last reply:
2012-03-15

On 15/03/12 14:55, ceguo wrote:
> New question #190776 on Yade:
> https://answers.launchpad.net/yade/+question/190776
>
> Hi,
>
> Due to my problem scale, I have to use a relatively small packing to represent a RVE. So the particle number is about 1000~2000. But I found the behaviour is too fluctuated. I've seen some published results using the similar number of particles but get relatively smooth results. After some failed try on tuning parameters (particle properties, compression speed, etc.), I am wondering if anyone has experience on the 2d simulation with yade. Below is my script:
Hi,
1. Are you trying to compare results under the same grain size
distribution and contact model parameters?
2. If you increase the number of particles, you should see a reduction
of the fluctuations; does it occur in your case?

Chiara
> ====================================================================
> from yade import pack,plot
>
> O.materials.append(FrictMat(young=1e9,poisson=.3,frictionAngle=.7,density=2.6e3))
>
> sp = pack.SpherePack()
> sp.makeCloud(minCorner=(0,0,0),maxCorner=(3,3,0),rMean=0.03,rRelFuzz=.5,periodic=True,seed=1)
> sp.toSimulation()
> O.cell.hSize = Matrix3(3,0,0, 0,3,0, 0,0,1)
> print len(O.bodies)
> for p in O.bodies:
> p.state.blockedDOFs = 'zXY'
>
> def saveAddData():
> plot.addData(
> stress_xx = biax.stress[0],
> stress_yy = biax.stress[1],
> strain_xx = biax.strain[0],
> strain_yy = biax.strain[1]
> )
>
> O.dt = .5*utils.PWaveTimeStep()
> ##consolidation
> O.engines = [
> ForceResetter(),
> InsertionSortCollider([Bo1_Sphere_Aabb()]),
> InteractionLoop(
> [Ig2_Sphere_Sphere_Dem3DofGeom()],
> [Ip2_FrictMat_FrictMat_FrictPhys()],
> [Law2_Dem3DofGeom_FrictPhys_CundallStrack()]
> ),
> Peri3dController(
> goal=(-1.e6,-1.e6,0,0,0,0),
> stressMask=3,
> nSteps=20000,
> maxStrain=1.,
> label='cons'
> ),
> NewtonIntegrator(damping=.3)
> ]
> O.run();O.wait()
>
> O.saveTmp(); O.loadTmp()
> O.materials[0].frictionAngle=.5
> ##undrained biaxial compression
> O.engines = [
> ForceResetter(),
> InsertionSortCollider([Bo1_Sphere_Aabb()]),
> InteractionLoop(
> [Ig2_Sphere_Sphere_Dem3DofGeom()],
> [Ip2_FrictMat_FrictMat_FrictPhys()],
> [Law2_Dem3DofGeom_FrictPhys_CundallStrack()]
> ),
> Peri3dController(
> goal=(1.e-1,-1.e-1,0,0,0,0),
> stressMask=0,
> nSteps=200000,
> maxStrain=1.,
> label='biax',
> stressIdeal=Vector6(-1.e6,-1.e6,0,0,0,0)
> ),
> NewtonIntegrator(damping=.3),
> PyRunner(command='saveAddData()',iterPeriod=1000)
> ]
> O.run();O.wait()
>
> plot.saveDataTxt('result_undrained.txt',vars=('stress_xx','stress_yy','strain_xx','strain_yy','porosity'))
>

Can you help with this problem?

Provide an answer of your own, or ask ceguo for more information if necessary.

To post a message you must log in.