← Back to team overview

yade-dev team mailing list archive

[Branch ~yade-pkg/yade/git-trunk] Rev 3607: Example REV generation for FEMxDEM

 

------------------------------------------------------------
revno: 3607
author: Ning GUO <ceguo@xxxxxxxxxxxxxx>
committer: Bruno Chareyre <bruno.chareyre@xxxxxxxxxxx>
timestamp: Wed 2015-03-04 09:32:55 +0100
message:
  Example REV generation for FEMxDEM
added:
  examples/FEMxDEM/prepareRVE.py


--
lp:yade
https://code.launchpad.net/~yade-pkg/yade/git-trunk

Your team Yade developers is subscribed to branch lp:yade.
To unsubscribe from this branch go to https://code.launchpad.net/~yade-pkg/yade/git-trunk/+edit-subscription
=== added file 'examples/FEMxDEM/prepareRVE.py'
--- examples/FEMxDEM/prepareRVE.py	1970-01-01 00:00:00 +0000
+++ examples/FEMxDEM/prepareRVE.py	2015-03-04 08:32:55 +0000
@@ -0,0 +1,57 @@
+from yade import pack
+
+O.materials.append(FrictMat(young=6.e8,poisson=.8,frictionAngle=.0))
+
+sp = pack.SpherePack()
+size = .24
+sp.makeCloud(minCorner=(0,0,.05),maxCorner=(size,size,.05),rMean=.005,rRelFuzz=.4,num=400,periodic=True,seed=1)
+sp.toSimulation()
+O.cell.hSize = Matrix3(size,0,0, 0,size,0, 0,0,.1)
+print len(O.bodies)
+for p in O.bodies:
+   p.state.blockedDOFs = 'zXY'
+   p.state.mass = 2650 * 0.1 * pi * p.shape.radius**2 # 0.1 = thickness of cylindrical particle
+   inertia = 0.5 * p.state.mass * p.shape.radius**2
+   p.state.inertia = (.5*inertia,.5*inertia,inertia)
+
+O.dt = utils.PWaveTimeStep()
+print O.dt
+
+O.engines = [
+   ForceResetter(),
+   InsertionSortCollider([Bo1_Sphere_Aabb()]),
+   InteractionLoop(
+      [Ig2_Sphere_Sphere_ScGeom()],
+      [Ip2_FrictMat_FrictMat_FrictPhys()],
+      [Law2_ScGeom_FrictPhys_CundallStrack()]
+   ),
+   PeriTriaxController(
+      dynCell=True,
+      goal=(-1.e5,-1.e5,0),
+      stressMask=3,
+      relStressTol=.001,
+      maxUnbalanced=.001,
+      maxStrainRate=(.5,.5,.0),
+      doneHook='term()',
+      label='biax'
+   ),
+   NewtonIntegrator(damping=.1)
+]
+
+def term():
+   O.engines = O.engines[:3]+O.engines[4:]
+   print getStress()
+   print O.cell.hSize
+   setContactFriction(0.5)
+   O.cell.trsf=Matrix3.Identity
+   O.cell.velGrad=Matrix3.Zero
+   for p in O.bodies:
+      p.state.vel = Vector3.Zero
+      p.state.angVel = Vector3.Zero
+      p.state.refPos = p.state.pos
+      p.state.refOri = p.state.ori
+   O.save('0.yade.gz')
+   O.pause()
+
+O.run();O.wait()
+