← Back to team overview

yade-users team mailing list archive

Re: [Question #702934]: After you add some code, it does not work correctly

 

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

Summary changed to:
After you add some code, it does not work correctly

Description changed to:
In my checkUnbalanced() function, I use a lot of O.bodies.append().
Before using O.bodies.append(), the particles can run again through
O.run() after stabilization, but when I add the O.bodies.append() code,
I can't run my code again, why?

The code is as follows:

#Material constants 
Density = 2630
FrictionAngle = 2.1
PoissonRatio = 0.5
Young = 300e6
Damp = 0.5
AvgRadius = 0.1
N_particles = 10000

#Wall constants
WDensity = 0
WFrictionAngle = 0.0
WPoissonRatio = 0.1
WYoung = 50e9

#time calculation
startT = O.time
endT = O.time
timeSpent = endT - startT

SphereMat = O.materials.append(FrictMat(young = Young, poisson = PoissonRatio, frictionAngle = radians(FrictionAngle), density = Density))
WallMat = O.materials.append(JCFpmMat(young = WYoung, poisson = WPoissonRatio,label='JCFmat', frictionAngle = radians(WFrictionAngle), density =WDensity,jointNormalStiffness=2e8,jointShearStiffness=1.5e8))


from yade import pack,plot
O.bodies.append(geom.facetBox((0.05, 9, 10), (0.1, 9, 10), wallMask=63,material=WallMat))
sp = pack.SpherePack()
sp.makeCloud(Vector3(0.05,0,0),Vector3(0.05,18,20), rMean=0.1, rRelFuzz=0)
sp.toSimulation(material = SphereMat)


for b in O.bodies:
   if isinstance(b.shape,Sphere):
       b.state.blockedDOFs='ZxY'
       b.shape.color=(3.,2.,1.)
       
circleRadius=1.5
circleCenter = Vector3(0.05,6,6)
circleRadius1=1.5
circleCenter1 = Vector3(0.05,12,6)
   
O.engines = [
        ForceResetter(),
        InsertionSortCollider([Bo1_Sphere_Aabb(), Bo1_Facet_Aabb()]),
        InteractionLoop(
                [Ig2_Sphere_Sphere_ScGeom(), Ig2_Facet_Sphere_ScGeom()],
                [Ip2_FrictMat_FrictMat_FrictPhys()],
                [Law2_ScGeom_FrictPhys_CundallStrack()]
        ),
        NewtonIntegrator(gravity=(0, 0, -9.81), damping=0.4),
        PyRunner(command='checkUnbalanced()', realPeriod=2),
        PyRunner(command='addPlotData()', iterPeriod=100)
]
O.dt = 0.5 * PWaveTimeStep()
O.trackEnergy = True
shuzu=[]
def checkUnbalanced():
	if unbalancedForce() < .01:
		O.pause()
                for b in O.bodies:
		    if isinstance(b.shape,Sphere):

                        b.state.vel=(0,0,0)
                        b.state.angVel=(0,0,0)
                    d = (b.state.pos - circleCenter).norm() 
                    d1 = (b.state.pos - circleCenter1).norm()
                    if d < circleRadius:
                       O.bodies.erase(b.id)
                    if d1 < circleRadius1:
                       O.bodies.erase(b.id)

		O.bodies.append(sphere(center=(0.05,7.25703095107543,6.0990941436567), radius=.12, fixed=True,color=(1.,1.,1.)))
		O.bodies.append(sphere(center=(0.05,7.21040962828884,6.293285928741), radius=.12, fixed=True,color=(1.,1.,1.)))
		O.bodies.append(sphere(center=(0.05,7.13398400333454,6.47779370901852), radius=.12, fixed=True,color=(1.,1.,1.)))
		O.bodies.append(sphere(center=(0.05,7.029635928741,6.64807429059263), radius=.12, fixed=True,color=(1.,1.,1.)))
		O.bodies.append(sphere(center=(0.05,6.89993480041612,6.79993480041612), radius=.12, fixed=True,color=(1.,1.,1.)))
		O.bodies.append(sphere(center=(0.05,6.74807429059263,6.929635928741), radius=.12, fixed=True,color=(1.,1.,1.)))
		O.bodies.append(sphere(center=(0.05,6.57779370901852,7.03398400333454), radius=.12, fixed=True,color=(1.,1.,1.)))
		O.bodies.append(sphere(center=(0.05,6.393285928741,7.11040962828884), radius=.12, fixed=True,color=(1.,1.,1.)))
		O.bodies.append(sphere(center=(0.05,6.1990941436567,7.15703095107543), radius=.12, fixed=True,color=(1.,1.,1.)))
		O.bodies.append(sphere(center=(0.05,6,7.1727), radius=.12, fixed=True,color=(1.,1.,1.)))

		O.bodies.append(sphere(center=(0.05,5.8009058563433,7.15703095107543), radius=.12, fixed=True,color=(1.,1.,1.)))
		O.bodies.append(sphere(center=(0.05,5.606714071259,7.11040962828884), radius=.12, fixed=True,color=(1.,1.,1.)))
		O.bodies.append(sphere(center=(0.05,5.42220629098148,7.03398400333454), radius=.12, fixed=True,color=(1.,1.,1.)))
		O.bodies.append(sphere(center=(0.05,5.25192570940737,6.929635928741), radius=.12, fixed=True,color=(1.,1.,1.)))
		O.bodies.append(sphere(center=(0.05,5.10006519958388,6.79993480041612), radius=.12, fixed=True,color=(1.,1.,1.)))
		O.bodies.append(sphere(center=(0.05,4.970364071259,6.64807429059263), radius=.12, fixed=True,color=(1.,1.,1.)))
		O.bodies.append(sphere(center=(0.05,4.86601599666546,6.47779370901852), radius=.12, fixed=True,color=(1.,1.,1.)))
		O.bodies.append(sphere(center=(0.05,4.78959037171116,6.293285928741), radius=.12, fixed=True,color=(1.,1.,1.)))
		O.bodies.append(sphere(center=(0.05,4.74296904892457,6.0990941436567), radius=.12, fixed=True,color=(1.,1.,1.)))
		O.bodies.append(sphere(center=(0.05,4.7273,5.9), radius=.12, fixed=True,color=(1.,1.,1.)))

		O.bodies.append(sphere(center=(0.05,4.74296904892457,5.7009058563433), radius=.12, fixed=True,color=(1.,1.,1.)))
		O.bodies.append(sphere(center=(0.05,4.78959037171116,5.506714071259), radius=.12, fixed=True,color=(1.,1.,1.)))
		O.bodies.append(sphere(center=(0.05,4.86601599666546,5.32220629098148), radius=.12, fixed=True,color=(1.,1.,1.)))
		O.bodies.append(sphere(center=(0.05,4.970364071259,5.15192570940737), radius=.12, fixed=True,color=(1.,1.,1.)))
		O.bodies.append(sphere(center=(0.05,5.10006519958388,5.00006519958388), radius=.12, fixed=True,color=(1.,1.,1.)))
		O.bodies.append(sphere(center=(0.05,5.25192570940737,4.870364071259), radius=.12, fixed=True,color=(1.,1.,1.)))
		O.bodies.append(sphere(center=(0.05,5.42220629098148,4.76601599666546), radius=.12, fixed=True,color=(1.,1.,1.)))
		O.bodies.append(sphere(center=(0.05,5.606714071259,4.68959037171116), radius=.12, fixed=True,color=(1.,1.,1.)))
		O.bodies.append(sphere(center=(0.05,5.8009058563433,4.64296904892457), radius=.12, fixed=True,color=(1.,1.,1.)))
		O.bodies.append(sphere(center=(0.05,6,4.6273), radius=.12, fixed=True,color=(1.,1.,1.)))

		O.bodies.append(sphere(center=(0.05,6.1990941436567,4.64296904892457), radius=.12, fixed=True,color=(1.,1.,1.)))
		O.bodies.append(sphere(center=(0.05,6.393285928741,4.68959037171116), radius=.12, fixed=True,color=(1.,1.,1.)))
		O.bodies.append(sphere(center=(0.05,6.57779370901852,4.76601599666546), radius=.12, fixed=True,color=(1.,1.,1.)))
		O.bodies.append(sphere(center=(0.05,6.74807429059263,4.870364071259), radius=.12, fixed=True,color=(1.,1.,1.)))
		O.bodies.append(sphere(center=(0.05,6.89993480041612,5.00006519958388), radius=.12, fixed=True,color=(1.,1.,1.)))
		O.bodies.append(sphere(center=(0.05,7.029635928741,5.15192570940737), radius=.12, fixed=True,color=(1.,1.,1.)))
		O.bodies.append(sphere(center=(0.05,7.13398400333454,5.32220629098148), radius=.12, fixed=True,color=(1.,1.,1.)))
		O.bodies.append(sphere(center=(0.05,7.21040962828884,5.506714071259), radius=.12, fixed=True,color=(1.,1.,1.)))
		O.bodies.append(sphere(center=(0.05,7.25703095107543,5.7009058563433), radius=.12, fixed=True,color=(1.,1.,1.)))
		O.bodies.append(sphere(center=(0.05,7.2727,5.9), radius=.12, fixed=True,color=(1.,1.,1.)))




		O.bodies.append(sphere(center=(0.05,13.2570309510754,6.0990941436567), radius=.12, fixed=True,color=(1.,1.,1.)))
		O.bodies.append(sphere(center=(0.05,13.2104096282888,6.293285928741), radius=.12, fixed=True,color=(1.,1.,1.)))
		O.bodies.append(sphere(center=(0.05,13.1339840033345,6.47779370901852), radius=.12, fixed=True,color=(1.,1.,1.)))
		O.bodies.append(sphere(center=(0.05,13.029635928741,6.64807429059263), radius=.12, fixed=True,color=(1.,1.,1.)))
		O.bodies.append(sphere(center=(0.05,12.8999348004161,6.79993480041612), radius=.12, fixed=True,color=(1.,1.,1.)))
		O.bodies.append(sphere(center=(0.05,12.7480742905926,6.929635928741), radius=.12, fixed=True,color=(1.,1.,1.)))
		O.bodies.append(sphere(center=(0.05,12.5777937090185,7.03398400333454), radius=.12, fixed=True,color=(1.,1.,1.)))
		O.bodies.append(sphere(center=(0.05,12.393285928741,7.11040962828884), radius=.12, fixed=True,color=(1.,1.,1.)))
		O.bodies.append(sphere(center=(0.05,12.1990941436567,7.15703095107543), radius=.12, fixed=True,color=(1.,1.,1.)))
		O.bodies.append(sphere(center=(0.05,12,7.1727), radius=.12, fixed=True,color=(1.,1.,1.)))

		O.bodies.append(sphere(center=(0.05,11.8009058563433,7.15703095107543), radius=.12, fixed=True,color=(1.,1.,1.)))
		O.bodies.append(sphere(center=(0.05,11.606714071259,7.11040962828884), radius=.12, fixed=True,color=(1.,1.,1.)))
		O.bodies.append(sphere(center=(0.05,11.4222062909815,7.03398400333454), radius=.12, fixed=True,color=(1.,1.,1.)))
		O.bodies.append(sphere(center=(0.05,11.2519257094074,6.929635928741), radius=.12, fixed=True,color=(1.,1.,1.)))
		O.bodies.append(sphere(center=(0.05,11.1000651995839,6.79993480041612), radius=.12, fixed=True,color=(1.,1.,1.)))
		O.bodies.append(sphere(center=(0.05,10.970364071259,6.64807429059263), radius=.12, fixed=True,color=(1.,1.,1.)))
		O.bodies.append(sphere(center=(0.05,10.8660159966655,6.47779370901852), radius=.12, fixed=True,color=(1.,1.,1.)))
		O.bodies.append(sphere(center=(0.05,10.7895903717112,6.293285928741), radius=.12, fixed=True,color=(1.,1.,1.)))
		O.bodies.append(sphere(center=(0.05,10.7429690489246,6.0990941436567), radius=.12, fixed=True,color=(1.,1.,1.)))
		O.bodies.append(sphere(center=(0.05,10.7273,5.9), radius=.12, fixed=True,color=(1.,1.,1.)))

		O.bodies.append(sphere(center=(0.05,10.7429690489246,5.7009058563433), radius=.12, fixed=True,color=(1.,1.,1.)))
		O.bodies.append(sphere(center=(0.05,10.7895903717112,5.506714071259), radius=.12, fixed=True,color=(1.,1.,1.)))
		O.bodies.append(sphere(center=(0.05,10.8660159966655,5.32220629098148), radius=.12, fixed=True,color=(1.,1.,1.)))
		O.bodies.append(sphere(center=(0.05,10.970364071259,5.15192570940737), radius=.12, fixed=True,color=(1.,1.,1.)))
		O.bodies.append(sphere(center=(0.05,11.1000651995839,5.00006519958388), radius=.12, fixed=True,color=(1.,1.,1.)))
		O.bodies.append(sphere(center=(0.05,11.2519257094074,4.870364071259), radius=.12, fixed=True,color=(1.,1.,1.)))
		O.bodies.append(sphere(center=(0.05,11.4222062909815,4.76601599666546), radius=.12, fixed=True,color=(1.,1.,1.)))
		O.bodies.append(sphere(center=(0.05,11.606714071259,4.68959037171116), radius=.12, fixed=True,color=(1.,1.,1.)))
		O.bodies.append(sphere(center=(0.05,11.8009058563433,4.64296904892457), radius=.12, fixed=True,color=(1.,1.,1.)))
		O.bodies.append(sphere(center=(0.05,12,4.6273), radius=.12, fixed=True,color=(1.,1.,1.)))

		O.bodies.append(sphere(center=(0.05,12.1990941436567,4.64296904892457), radius=.12, fixed=True,color=(1.,1.,1.)))
		O.bodies.append(sphere(center=(0.05,12.393285928741,4.68959037171116), radius=.12, fixed=True,color=(1.,1.,1.)))
		O.bodies.append(sphere(center=(0.05,12.57779370901852,4.76601599666546), radius=.12, fixed=True,color=(1.,1.,1.)))
		O.bodies.append(sphere(center=(0.05,12.74807429059263,4.870364071259), radius=.12, fixed=True,color=(1.,1.,1.)))
		O.bodies.append(sphere(center=(0.05,12.89993480041612,5.00006519958388), radius=.12, fixed=True,color=(1.,1.,1.)))
		O.bodies.append(sphere(center=(0.05,13.029635928741,5.15192570940737), radius=.12, fixed=True,color=(1.,1.,1.)))
		O.bodies.append(sphere(center=(0.05,13.13398400333454,5.32220629098148), radius=.12, fixed=True,color=(1.,1.,1.)))
		O.bodies.append(sphere(center=(0.05,13.21040962828884,5.506714071259), radius=.12, fixed=True,color=(1.,1.,1.)))
		O.bodies.append(sphere(center=(0.05,13.25703095107543,5.7009058563433), radius=.12, fixed=True,color=(1.,1.,1.)))
		O.bodies.append(sphere(center=(0.05,13.2727,5.9), radius=.12, fixed=True,color=(1.,1.,1.)))


def addPlotData():
	plot.addData(i=O.iter, unbalanced=unbalancedForce(), **O.energy)


O.saveTmp()


from yade import qt
qt.Controller()
qt.View()

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