yade-dev team mailing list archive
-
yade-dev team
-
Mailing list archive
-
Message #11901
[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()
+