After you add some code, it does not work correctly

Asked by 孙灿

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

Question information

Language:
English Edit question
Status:
Solved
For:
Yade Edit question
Assignee:
No assignee Edit question
Solved by:
Jan Stránský
Solved:
Last query:
Last reply:
Revision history for this message
Jan Stránský (honzik) said :
#1

Hello,

please read [1] and follow the instructions, i.e.:

1) Please provide a MWE [1], W = working.
As usual, I got "IndentationError: unexpected indent" on line 58

2) Please provide more information.
How do you try to run the code? GUI? From terminal?
What does "O can't" exactly mean?
Do you get any error? What error?
If not error, what are the symptoms?
What version of Yade and Operating System are you using?
...

Cheers
Jan

[1] https://www.yade-dem.org/wiki/Howtoask

Revision history for this message
孙灿 (suncan) said :
#2

Sorry, there was an indentation error in the copied code, 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()

>How do you try to run the code? GUI? From terminal?
I run the code from the terminal.

>Do you get any error? What error?
No, I didn't get any other bug feedback.

>If not error, what are the symptoms?
Symptom: When I run the code through the terminal, there is no error feedback, when the particle run ends, I enter O.run() in the terminal, and the result is that the simulation ends quickly in an instant and does not work properly.

Revision history for this message
Jan Stránský (honzik) said :
#3

> Sorry, there was an indentation error in the copied code, the code is as follows:

and it still there..
###
def checkUnbalanced():
 if unbalancedForce() < .01:
  O.pause()
                for b in O.bodies:
      if isinstance(b.shape,Sphere):
###

> Symptom: When I run the code through the terminal, there is no error feedback, when the particle run ends, I enter O.run() in the terminal, and the result is that the simulation ends quickly in an instant and does not work properly.

What does "does not work properly" mean? What is not proper? What would be?
What does "ends" mean? pause? exit? crash? ... ?
What does "in an instant" mean? before next iteration? after very first iteration? after two seconds? ... ?

Providing a MWE, most of these questions would be solved..

Cheers
Jan

Revision history for this message
孙灿 (suncan) said :
#4

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

>What does "ends" mean? pause? exit? crash? ... ?
Yes, it will pause immediately.

Revision history for this message
Jan Stránský (honzik) said :
#5

Instant replay:

The indentation error is still there :-(
for the third time.. (!)
###
def checkUnbalanced():
 if unbalancedForce() < .01:
  O.pause()
                for b in O.bodies:
      if isinstance(b.shape,Sphere):
###

What does "immediately" mean? before next iteration? after very first iteration? after two seconds? ... ?

> it will pause
>
> PyRunner(command='checkUnbalanced()', realPeriod=2),
>
> def checkUnbalanced():
> if unbalancedForce() < .01:
> O.pause()

Check if the pausing is due to the checkUnbalanced function called in the PyRunner.
If so, disable the the pyrunner / calling checkUnbalanced before continuation.

Cheers
Jan

Revision history for this message
孙灿 (suncan) said (last edit ):
#6
Revision history for this message
孙灿 (suncan) said :
#7

Before my email was sent, I checked the code and it was error-free, but the email was sent to you and there was an indentation error, I don't know where the error occurred...

>What does "immediately" mean? before next iteration? after very first iteration? after two seconds?
When I enter O.run(), the particles will have a tendency to move, but that's all, and then it will stop, it's not after an iteration, or a few seconds later, just for a moment, and I think it's running for no more than 0.5 seconds.

>Check if the pausing is due to the checkUnbalanced function called in the PyRunner.
I don't think it's the mistake, because in the previous simulation, it was all good.

Cheers

Revision history for this message
Best Jan Stránský (honzik) said :
#8

>> Check if the pausing is due to the checkUnbalanced function called in the PyRunner.
> I don't think it's the mistake

here is no space for "think". Either it is due to checkUnbalanced or not.
Do not "think" (in this meaning = I have no idea and it is just my guess) and make an evidence.
Just check it, e.g. like:
###
def checkUnbalanced():
        if unbalancedForce() < .01:
                print("pausing from checkUnbalanced function!") # here
                O.pause()
###
You will find that the simulation is paused second time from the checkUnbalanced function.

> ... because in the previous simulation, it was all good.

OK, but now it is not "previous" any more and it is not all good.

Cheers
Jan

Revision history for this message
孙灿 (suncan) said :
#9

Do you mean to disable checkunbalanced() before the second run and do not use this function again?
How can I disable it?

Revision history for this message
Jan Stránský (honzik) said :
#10

> Do you mean to disable checkunbalanced() before the second run and do not use this function again?

yes

> How can I disable it?

please open a new question, as this is more general topic valuable for more people.
Name it something like "How to disable function in PyRunner" or something like that.

Cheers
Jan

Revision history for this message
孙灿 (suncan) said :
#11

Thanks Jan Stránský, that solved my question.

Revision history for this message
孙灿 (suncan) said :
#12

Now there's a question, when does the simulation stop the second time I run the code after disabling PyRunner? Checkunbalanced() has been disabled at this point.

Revision history for this message
Jan Stránský (honzik) said :
#13

> I run the code

as usual, please be more specific.
For general overview, read [2]
If it is not sufficient, please open a new question for a new problem [1]

Cheers
Jan

[1] https://www.yade-dem.org/wiki/Howtoask
[2] https://yade-dem.org/doc/user.html#stop-conditions