← Back to team overview

yade-users team mailing list archive

[Question #674396]: PrepareRVE for 3D problem

 

New question #674396 on Yade:
https://answers.launchpad.net/yade/+question/674396

Hello,

I am trying to make a RVE for 3D problem and could not able to figure out where I am making mistake.  I try to read the manual and still not able to understand.

Can someone  help me .. how I can prepare the RVE for 3D.  The first part of the code working well and I could see the 3D box with 9000 particles.  The second part is giving me the problem (running for 3 days without any output).

1. For 3D problem  I  command  #p.state.blockedDOFs = 'zXY' as I want the compression happen isotropic-ally in all direction as initial state. is that ok?

2. I also changes stressMask=3 to stressMask=7 but still same problem.

3.  May I know what is the following command does :  O.engines = O.engines[:3]+O.engines[4:]

my python code as below...Appreciate your help.. Thanks Surej.

********
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,0),maxCorner=(size,size,size),rMean=.005,rRelFuzz=.4,num=9000,periodic=True,seed=1)
sp.toSimulation()
O.cell.hSize = Matrix3(size,0,0, 0,size,0, 0,0,size)
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,0.5*inertia)

O.dt = utils.PWaveTimeStep()
print O.dt

print 'packing-part-ok'

print ' starting 2nd part'

O.engines = [
   ForceResetter(),
   InsertionSortCollider([Bo1_Sphere_Aabb()]),
   InteractionLoop(
      [Ig2_Sphere_Sphere_ScGeom()],
      [Ip2_FrictMat_FrictMat_FrictPhys()],
      [Law2_ScGeom_FrictPhys_CundallStrack()]
   ),
   PeriTriaxController(
      dynCell=True,
      goal=(-1e5,-1e5,-1e5),
      stressMask=3,
      relStressTol=.001,
      maxUnbalanced=.1,
      maxStrainRate=(.5,.5,.5),
      doneHook='term()',
      label='triax'
   ),
   NewtonIntegrator(damping=.2)
]
print 'checkstep2'

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()

-- 
You received this question notification because your team yade-users is
an answer contact for Yade.