Clump in Yade_2018.02

Asked by Xu Mengqian on 2019-04-11

Hello,all.I plan to consolidate the clumps.But when I put the file in the Yade_2018,it can't consolidation.However,when I put the same file into the Yade_1.11,it can consolidate normally.Could anyone give me some suggestions ?

Here is the file:
from yade import pack,plot,qt,export,ymport
import numpy as np
IsoSigma = -100.
O.periodic=True

# define material
idSand=O.materials.append(FrictMat(young=100e3,poisson=1.,frictionAngle=radians(20),density=2650,label='sand'))

# create particles
sp1=pack.SpherePack()
sp1.makeCloud(maxCorner=(0.0015, 0.0015, 0.0015), psdSizes=[0.00017, 0.000191, 0.0002285, 0.00026, 0.000292, 0.000325, 0.00035], psdCumm=[0.0, 0.1, 0.3, 0.5, 0.6, 0.9, 1], periodic=True,num=5000,seed=1)
sp1.toSimulation(color=(1,0,0),material=idSand)

#### show how to use makeClumpTemplate():

#dyad:
relRadList1 = [1,1]
relPosList1 = [[0.4,0,0],[-0.4,0,0]]

#peanut:
#relRadList2 = [.5,1,.5]
#relPosList2 = [[1,0,0],[0,0,0],[-1,0,0]]

#stick:
#relRadList3 = [1,1,1,1,1]
#relPosList3 = [[0,1,0],[0,2,0],[0,3,0],[0,4,0],[0,5,0]]

templates= []
templates.append(clumpTemplate(relRadii=relRadList1,relPositions=relPosList1))
#templates.append(clumpTemplate(relRadii=relRadList2,relPositions=relPosList2))
#templates.append(clumpTemplate(relRadii=relRadList3,relPositions=relPosList3))

#### show how to use replaceByClumps():
O.bodies.replaceByClumps(templates,[1.],discretization=10)

O.engines=[
 ForceResetter(),
 InsertionSortCollider([Bo1_Sphere_Aabb()]),
 InteractionLoop(
  [Ig2_Sphere_Sphere_ScGeom()],
     [Ip2_FrictMat_FrictMat_FrictPhys()],
     [Law2_ScGeom_FrictPhys_CundallStrack()]),
# PyRunner(command='fabric()',iterPeriod=10000),
        GlobalStiffnessTimeStepper(),
 NewtonIntegrator(damping=0.70),
 PeriTriaxController( goal=(IsoSigma,IsoSigma,IsoSigma), # Vector6 of prescribed final values
    stressMask=3,
    dynCell=True,
    maxStrainRate=(0.3e+0,0.3e+0,0.3e+0),
    maxUnbalanced=0.001,
    relStressTol=1.e-3,
    doneHook='Finished()',
    label='p3d'
 ),
# VTKRecorder(fileName='3d-vtk-',recorders=['all'],iterPeriod=10000),
# PyRunner(command='strains()',iterPeriod=10000),
# PyRunner(command='balls()',iterPeriod=10000),
 PyRunner(command='plotAddData()',iterPeriod=100),
]

def plotAddData():
 plot.addData(
  iter=O.iter,iter_=O.iter,
  sxx=p3d.stress[0],syy=p3d.stress[1],szz=p3d.stress[2],
  exx=O.cell.size[0],eyy=O.cell.size[1],ezz=O.cell.size[2],
  Z=avgNumInteractions(),
  Zm=avgNumInteractions(skipFree=True),
                poros=porosity(),
# poros=voxelPorosity(500,(0,0,0),O.cell.size),
  unbalanced=utils.unbalancedForce(),
  t=O.time,
  gWork=O.energy['gravWork'],
  Ep=O.energy['elastPotential'],
  Edamp=O.energy['nonviscDamp'],
  Ediss=O.energy['plastDissip'],
  Ekin=utils.kineticEnergy(),
        Etot=O.energy.total(),**O.energy

 )
 plot.saveDataTxt('macroFile',vars=('t','exx','eyy','ezz','sxx','syy','szz','Z','Zm','poros'))
 plot.saveDataTxt('energyFile',vars=('t','Etot','unbalanced','gWork','Edamp','Ekin'))

O.trackEnergy=True

# plotting
plot.live=True
plot.plots={'iter':('sxx','syy','szz'),'iter_':('exx','eyy','ezz'), ' iter':('unbalanced'),
            ' iter ':(O.energy.keys,None,'Etot')
}

def fabric():
 fileNomb='fabric'+str(O.iter)
 f = open(fileNomb,'w')
 f.write('id1 id2 x_cp y_cp z_cp n_x n_y n_z Fn_x Fn_y Fn_z Fs_x Fs_y Fs_z ovp\n')
 for i in O.interactions:
  if not i.isReal: continue
  tacts = i.geom.contactPoint
  nmls = i.geom.normal
  ovp = i.geom.penetrationDepth
  Fn = i.phys.normalForce
  Fs = i.phys.shearForce
  f.write('%-16d %-16d %-16g %-16g %-16g %-16g %-16g %-16g %-16g %-16g %-16g %-16g %-16g %-16g %-16g\n'%(i.id1,
      i.id2,tacts[0],tacts[1],tacts[2],nmls[0],nmls[1],nmls[2],Fn[0],Fn[1],Fn[2],Fs[0],Fs[1],Fs[2],ovp))
 f.close

def balls():
 fileCalled='ball'+str(O.iter)
 export.text(fileCalled)

def strains():
 fileNome='strain'+str(O.iter)
 f = open(fileNome,'w')
 f.write('b.id velx vely velz rotx roty rotz\n')
 for b in O.bodies:
  if isinstance(b.shape,Sphere):
   vels = b.state.vel
   rots = b.state.rot()
   f.write('%-16d %-16g %-16g %-16g %-16g %-16g %-16g\n'%(b.id, vels[0],vels[1],vels[2],
       rots[0],rots[1],rots[2]))
 f.close

def Finished():
 O.save('isotropicState.xml')
 print 'Finished'
 print porosity()
 O.pause()
yade.qt.Controller(), yade.qt.View()
O.run()
plot.plot(subPlots=True)

Question information

Language:
English Edit question
Status:
Solved
For:
Yade Edit question
Assignee:
No assignee Edit question
Solved by:
Xu Mengqian
Solved:
2019-04-14
Last query:
2019-04-14
Last reply:
2019-04-12
Robert Caulk (rcaulk) said : #1

Please provide some information about why you say "it can't consolidation." Is there an error message? What do you define as "normal consolidation"? What are you considering abnormal consolidation?

Thank you,

Robert

Xu Mengqian (yrainy.) said : #2

Dear Robert:
      I think I have found the problem.If I use yadedaily ,it can work normally.

Thank you,

Mengqian