← Back to team overview

yade-users team mailing list archive

Re: [Question #226198]: question for the Clump with facet

 

Question #226198 on Yade changed:
https://answers.launchpad.net/yade/+question/226198

Description changed to:
Dear Sir,
I have now some Problems with Clump. I will try Box-Experiment with Clump and write the Code. Butthe Prigramme stop wth warn Clump::updateProperties: NaNs in eigen-decomposition of inertia matrix?!. Can anyone help me. Thank you.

from yade import utils
from numpy import linspace
from numpy import arange
import gts
import itertools
from yade import pack

rMean=.0096
rRelFuzz=.0016
maxLoad=4500

frictionAngleSt=radians(35)
frictionAngleBo=radians(23.5)

a=0.05
id_Mat=O.materials.append(FrictMat(density=2650,young=175e6,poisson=0.3,frictionAngle=frictionAngleBo))
Mat=O.materials[id_Mat]
steel=O.materials.append(FrictMat(young=210e9, poisson=.25,frictionAngle=frictionAngleSt,density=8000))

from yade import pack, plot,qt

sp=pack.SpherePack()
sp.makeCloud((0,0,0),(0.3,0.3,0.3250),rMean=.0096,rRelFuzz=.0016,periodic=False)
O.bodies.append([sphere(a,r,material=Mat) for a,r in sp])

print len(sp),' particles generated.'

def makeClumpTemplate():
    relRadList1 = [.007,.0036]
    relPosList1 = [[0,0,0],[0.009,0,0]]
    relRadList2 = [.0036,0.007,.0036]
    relPosList2 = [[0.0060,0,0],[0,0,0],[-0.0060,0,0]]
    templates= []
    templates.append(clumpTemplate(relRadii=relRadList1,relPositions=relPosList1))
    templates.append(clumpTemplate(relRadii=relRadList2,relPositions=relPosList2))
    O.bodies.replaceByClumps(templates,[.2,.3])


fIDSI=O.bodies.append(utils.geom.facetBox((.15,.15,.135),(.15,.15,.045),wallMask=15,material=steel))
fIDSII=O.bodies.append(utils.geom.facetBox((.15,.15,.045),(.15,.15,.045),wallMask=31,material=steel))

O.engines=[
   ForceResetter(),
   InsertionSortCollider([Bo1_Sphere_Aabb(),Bo1_Facet_Aabb(),Bo1_Wall_Aabb()]),
   InteractionLoop(
      [Ig2_Sphere_Sphere_ScGeom(),Ig2_Facet_Sphere_ScGeom(),Ig2_Wall_Sphere_ScGeom()],
      [Ip2_FrictMat_FrictMat_FrictPhys()],
      [Law2_ScGeom_FrictPhys_CundallStrack()]
   ),
   NewtonIntegrator(damping=0.7,gravity=[0,0,-9.810]),
   qt.SnapshotEngine(iterPeriod=60000,fileBase='/home/wuxin/Desktop/Clump/78Fr07-',label='snapshooter'),
   PyRunner(command='checkUnbalanced()',realPeriod=1,label='checker'),
   TranslationEngine(translationAxis=[1,0,0],velocity=0,ids=fIDSI,label='Transl'),
]
O.dt=.25*utils.PWaveTimeStep()

def AngVel():
    for b in O.bodies:
        if isinstance(b.shape,Sphere):
           b.state.angVel[1]=0          

def checkUnbalanced():
    if O.iter<240000: return 
    fIDSIII=O.bodies.append(utils.wall(max([b.state.pos[2]+b.shape.radius for b in O.bodies if isinstance(b.shape,Sphere)]),axis=2,sense=-1,material=spheremat))
    global plate        
    plate=O.bodies[fIDSIII]  
    plate.state.vel=(0,0,-.025)
    O.engines=O.engines+[PyRunner(command='addPlotData()',iterPeriod=1000)]
    checker.command='unloadPlate()'
    checker.command='makeClumpTemplate()' 

def unloadPlate():
   if abs(O.forces.f(plate.id)[2])>=maxLoad:
      O.engines=O.engines+[PyRunner(command='ServoContorl()',iterPeriod=1)]
      O.engines=O.engines+[PyRunner(command='AngVel()',iterPeriod=1)]
      checker.command='stopUnloading()'


plot.plots={'i':('w','Fz',),'PX':('Fx',)}
plot.plot()

qt.Controller()
qt.View()
r=qt.Renderer()

O.run()

utils.waitIfBatch()

-- 
You received this question notification because you are a member of
yade-users, which is an answer contact for Yade.