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

Hi,

I am trying out an example with Potential Blocks, but I am getting the 
following error:

File "cubePBscaled.py", line 34, in <module>
    InsertionSortCollider([PotentialBlock2AABB()],verletDist=0.01),
NameError: name 'PotentialBlock2AABB' is not defined

I have already installed the packages coinor-clp and so on. Also I tried to 
simply write
ENABLE_POTENTIAL_BLOCKS=ON to start the script, as well as 
yade cubePBscaled.py ENABLE_POTENTIAL_BLOCKS=ON

However, neither resolved the issue.
Can anyone help me in understanding the issue? My version of Ubuntu is 18.04 
and YADE 2018.02b.

Here's the code I am using:
-------------------------------------------------------------------
##!/usr/local/bin/yade-trunk -x
# -*- encoding=utf-8 -*-
# CWBoon 2015

# Uses the following algorithm:
# CW Boon, GT Houlsby, S Utili (2012).  A new algorithm for contact detection 
between convex polygonal and polyhedral particles in the discrete element 
method.  Computers and Geotechnics 44, 73-82. 

#Display is saved to a vtk file in the "vtk folder" and the user is required to 
load it using ParaView.  Control the frequency of printing a vtk file using 
vtkRecorder.iterPeriod in python

#To use this script:
#Compile with
#ENABLE_POTENTIAL_BLOCKS=ON, and add  sudo apt-get install
#coinor-clp, 
#coinor-libclp-dev, 
#coinor-libclp1, 
#coinor-libosi1v5


from yade import pack
import math

import os
import errno
try:
        os.mkdir('./vtk/')
except OSError as exc:
        if exc.errno != errno.EEXIST:
                raise
        pass


O.engines=[
        ForceResetter(),
        InsertionSortCollider([PotentialBlock2AABB()],verletDist=0.01),
        InteractionLoop(
                [Ig2_PB_PB_ScGeom(twoDimension=False, unitWidth2D=1.0)],
                [Ip2_FrictMat_FrictMat_KnKsPBPhys(kn_i=1e8, ks_i=1e7, 
Knormal=1e8, Kshear=1e7, useFaceProperties=False, calJointLength=False, 
viscousDamping=0.2)],
                [Law2_SCG_KnKsPBPhys_KnKsPBLaw(label='law',neverErase=False, 
allowViscousAttraction=True, traceEnergy=False)]
        ),
        #GlobalStiffnessTimeStepper(),
        
NewtonIntegrator(damping=0.0,exactAsphericalRot=True,gravity=[0,-9.81,0]),
        
PotentialBlockVTKRecorder(fileName='./vtk/cubePBscaled',iterPeriod=10000,twoDimension=False,sampleX=50,sampleY=50,sampleZ=50,maxDimension=0.2,label='vtkRecorder')
]


powderDensity = 2000
distanceToCentre = 0.5
meanSize = 1.0
wallThickness = 0.5*meanSize
O.materials.append(FrictMat(young=-1,poisson=-1,frictionAngle=radians(0.0),density=powderDensity,label='frictionless'))
 #The normal and shear stifness values are determined in the IPhys functor, 
thus the young, poisson parameters of the FrictMat are not used.
lengthOfBase = 9.0*meanSize
heightOfBase = 14.0*meanSize
sp=pack.SpherePack()
mn,mx=Vector3(-0.5*(lengthOfBase-wallThickness),0.5*meanSize,-0.5*(lengthOfBase-wallThickness)),Vector3(0.5*(lengthOfBase-wallThickness),7.0*heightOfBase,0.5*(lengthOfBase-wallThickness))
R=sqrt(3.0)*distanceToCentre
sp.makeCloud(mn,mx,R,0,100,False)


r=0.01*meanSize
for s in sp:
        b=Body()
        b.mask=1
        b.aspherical=True
        wire=False
        color=Vector3(random.random(),random.random(),random.random())
        highlight=False
        b.shape=PotentialBlock(k=0.0, r=r, R=0.0, a=[1,-1,0,0,0,0], 
b=[0,0,1,-1,0,0], c=[0,0,0,0,1,-1], 
d=[distanceToCentre-r,distanceToCentre-r,distanceToCentre-r,distanceToCentre-r,distanceToCentre-r,distanceToCentre-r],
 isBoundary=False, color=color,
wire=wire, highlight=highlight, 
minAabb=sqrt(3)*Vector3(distanceToCentre,distanceToCentre,distanceToCentre), 
maxAabb=sqrt(3)*Vector3(distanceToCentre,distanceToCentre,distanceToCentre), 
AabbMinMax=True, fixedNormal=False, id=len(O.bodies))
        utils._commonBodySetup(b, b.shape.volume, b.shape.inertia, 
material='frictionless',pos=s[0], fixed=False)
        b.state.pos = s[0] #s[0] stores center
        b.state.ori = 
Quaternion((random.random(),random.random(),random.random()),random.random()) 
#s[2]
        O.bodies.append(b)


#Bottom faces of the box
r=0.1*wallThickness
bbb=Body()
bbb.mask=3
wire=False
color=[0,0.5,1]
highlight=False
bbb.shape=PotentialBlock(k=0.0, r=r, R=0.0, a=[1,-1,0,0,0,0], b=[0,0,1,-1,0,0], 
c=[0,0,0,0,1,-1], 
d=[lengthOfBase/6.0-r,lengthOfBase/6.0-r,0.5*wallThickness-r,0.5*wallThickness-r,lengthOfBase/6.0-r,lengthOfBase/6.0-r],
 id=len(O.bodies), isBoundary=True, color=color, wire=wire, 
highlight=highlight, AabbMinMax=True, 
minAabb=1.05*Vector3(lengthOfBase/6.0,0.5*wallThickness,lengthOfBase/6.0), 
maxAabb=1.05*Vector3(lengthOfBase/6.0,0.5*wallThickness,lengthOfBase/6.0), 
fixedNormal=False)
utils._commonBodySetup(bbb, bbb.shape.volume, bbb.shape.inertia, 
material='frictionless', pos=[0,0,0], fixed=True)
bbb.state.pos = [0,0,0]
lidID = O.bodies.append(bbb)


b1=Body()
b1.mask=3
wire=False
color=[0,0.5,1]
highlight=False
b1.shape=PotentialBlock(k=0.0, r=r, R=0.0, a=[1,-1,0,0,0,0], b=[0,0,1,-1,0,0], 
c=[0,0,0,0,1,-1], 
d=[lengthOfBase/6.0-r,lengthOfBase/6.0-r,0.5*wallThickness-r,0.5*wallThickness-r,lengthOfBase/6.0-r,lengthOfBase/6.0-r],
 id=len(O.bodies), isBoundary=True, color=color, wire=wire, 
highlight=highlight, AabbMinMax=True, 
minAabb=1.05*Vector3(lengthOfBase/6.0,0.5*wallThickness,lengthOfBase/6.0), 
maxAabb=1.05*Vector3(lengthOfBase/6.0,0.5*wallThickness,lengthOfBase/6.0), 
fixedNormal=False)
utils._commonBodySetup(b1, b1.shape.volume, b1.shape.inertia, 
material='frictionless', pos=[0,0,0], fixed=True)
b1.state.pos = [lengthOfBase/3.0,0,lengthOfBase/3.0]
O.bodies.append(b1)


b2=Body()
b2.mask=3
wire=False
color=[0,0.5,1]
highlight=False
b2.shape=PotentialBlock(k=0.0, r=r, R=0.0, a=[1,-1,0,0,0,0], b=[0,0,1,-1,0,0], 
c=[0,0,0,0,1,-1], 
d=[lengthOfBase/6.0-r,lengthOfBase/6.0-r,0.5*wallThickness-r,0.5*wallThickness-r,lengthOfBase/6.0-r,lengthOfBase/6.0-r],
 id=len(O.bodies), isBoundary=True, color=color, wire=wire, 
highlight=highlight, AabbMinMax=True, 
minAabb=1.05*Vector3(lengthOfBase/6.0,0.5*wallThickness,lengthOfBase/6.0), 
maxAabb=1.05*Vector3(lengthOfBase/6.0,0.5*wallThickness,lengthOfBase/6.0), 
fixedNormal=False)
utils._commonBodySetup(b2, b2.shape.volume, b2.shape.inertia, 
material='frictionless', pos=[0,0,0], fixed=True)
b2.state.pos = [-lengthOfBase/3.0,0,lengthOfBase/3.0]
O.bodies.append(b2)


b3=Body()
b3.mask=3
wire=False
color=[0,0.5,1]
highlight=False
b3.shape=PotentialBlock(k=0.0, r=r, R=0.0, a=[1,-1,0,0,0,0], b=[0,0,1,-1,0,0], 
c=[0,0,0,0,1,-1], 
d=[lengthOfBase/6.0-r,lengthOfBase/6.0-r,0.5*wallThickness-r,0.5*wallThickness-r,lengthOfBase/6.0-r,lengthOfBase/6.0-r],
 id=len(O.bodies), isBoundary=True, color=color, wire=wire, 
highlight=highlight, AabbMinMax=True, 
minAabb=1.05*Vector3(lengthOfBase/6.0,0.5*wallThickness,lengthOfBase/6.0), 
maxAabb=1.05*Vector3(lengthOfBase/6.0,0.5*wallThickness,lengthOfBase/6.0), 
fixedNormal=False)
utils._commonBodySetup(b3, b3.shape.volume, b3.shape.inertia, 
material='frictionless', pos=[0,0,0], fixed=True)
b3.state.pos = [0,0,lengthOfBase/3.0]
O.bodies.append(b3)


b4=Body()
b4.mask=3
wire=False
color=[0,0.5,1]
highlight=False
b4.shape=PotentialBlock(k=0.0, r=r, R=0.0, a=[1,-1,0,0,0,0], b=[0,0,1,-1,0,0], 
c=[0,0,0,0,1,-1], 
d=[lengthOfBase/6.0-r,lengthOfBase/6.0-r,0.5*wallThickness-r,0.5*wallThickness-r,lengthOfBase/6.0-r,lengthOfBase/6.0-r],
 id=len(O.bodies), isBoundary=True, color=color, wire=wire, 
highlight=highlight, AabbMinMax=True, 
minAabb=1.05*Vector3(lengthOfBase/6.0,0.5*wallThickness,lengthOfBase/6.0), 
maxAabb=1.05*Vector3(lengthOfBase/6.0,0.5*wallThickness,lengthOfBase/6.0), 
fixedNormal=False)
utils._commonBodySetup(b4, b4.shape.volume, b4.shape.inertia, 
material='frictionless', pos=[0,0,0], fixed=True)
b4.state.pos = [lengthOfBase/3.0,0,-lengthOfBase/3.0]
O.bodies.append(b4)


b5=Body()
b5.mask=3
wire=False
color=[0,0.5,1]
highlight=False
b5.shape=PotentialBlock(k=0.0, r=r, R=0.0, a=[1,-1,0,0,0,0], b=[0,0,1,-1,0,0], 
c=[0,0,0,0,1,-1], 
d=[lengthOfBase/6.0-r,lengthOfBase/6.0-r,0.5*wallThickness-r,0.5*wallThickness-r,lengthOfBase/6.0-r,lengthOfBase/6.0-r],
 id=len(O.bodies), isBoundary=True, color=color, wire=wire, 
highlight=highlight, AabbMinMax=True, 
minAabb=1.05*Vector3(lengthOfBase/6.0,0.5*wallThickness,lengthOfBase/6.0), 
maxAabb=1.05*Vector3(lengthOfBase/6.0,0.5*wallThickness,lengthOfBase/6.0), 
fixedNormal=False)
utils._commonBodySetup(b5, b5.shape.volume, b5.shape.inertia, 
material='frictionless', pos=[0,0,0], fixed=True)
b5.state.pos = [0,0,-lengthOfBase/3.0]
O.bodies.append(b5)


b6=Body()
b6.mask=3
wire=False
color=[0,0.5,1]
highlight=False
b6.shape=PotentialBlock(k=0.0, r=r, R=0.0, a=[1,-1,0,0,0,0], b=[0,0,1,-1,0,0], 
c=[0,0,0,0,1,-1], 
d=[lengthOfBase/6.0-r,lengthOfBase/6.0-r,0.5*wallThickness-r,0.5*wallThickness-r,lengthOfBase/6.0-r,lengthOfBase/6.0-r],
 id=len(O.bodies), isBoundary=True, color=color, wire=wire, 
highlight=highlight, AabbMinMax=True, 
minAabb=1.05*Vector3(lengthOfBase/6.0,0.5*wallThickness,lengthOfBase/6.0), 
maxAabb=1.05*Vector3(lengthOfBase/6.0,0.5*wallThickness,lengthOfBase/6.0), 
fixedNormal=False)
utils._commonBodySetup(b6, b6.shape.volume, b6.shape.inertia, 
material='frictionless', pos=[0,0,0], fixed=True)
b6.state.pos = [-lengthOfBase/3.0,0,-lengthOfBase/3.0]
O.bodies.append(b6)


b7=Body()
b7.mask=3
wire=False
color=[0,0.5,1]
highlight=False
b7.shape=PotentialBlock(k=0.0, r=r, R=0.0, a=[1,-1,0,0,0,0], b=[0,0,1,-1,0,0], 
c=[0,0,0,0,1,-1], 
d=[lengthOfBase/6.0-r,lengthOfBase/6.0-r,0.5*wallThickness-r,0.5*wallThickness-r,lengthOfBase/6.0-r,lengthOfBase/6.0-r],
 id=len(O.bodies), isBoundary=True, color=color, wire=wire, 
highlight=highlight, AabbMinMax=True, 
minAabb=1.05*Vector3(lengthOfBase/6.0,0.5*wallThickness,lengthOfBase/6.0), 
maxAabb=1.05*Vector3(lengthOfBase/6.0,0.5*wallThickness,lengthOfBase/6.0), 
fixedNormal=False)
utils._commonBodySetup(b7, b7.shape.volume, b7.shape.inertia, 
material='frictionless', pos=[0,0,0], fixed=True)
b7.state.pos = [-lengthOfBase/3.0,0,0]
O.bodies.append(b7)


b8=Body()
b8.mask=3
wire=False
color=[0,0.5,1]
highlight=False
b8.shape=PotentialBlock(k=0.0, r=r, R=0.0, a=[1,-1,0,0,0,0], b=[0,0,1,-1,0,0], 
c=[0,0,0,0,1,-1], 
d=[lengthOfBase/6.0-r,lengthOfBase/6.0-r,0.5*wallThickness-r,0.5*wallThickness-r,lengthOfBase/6.0-r,lengthOfBase/6.0-r],
 id=len(O.bodies), isBoundary=True, color=color, wire=wire, 
highlight=highlight, AabbMinMax=True, 
minAabb=1.05*Vector3(lengthOfBase/6.0,0.5*wallThickness,lengthOfBase/6.0), 
maxAabb=1.05*Vector3(lengthOfBase/6.0,0.5*wallThickness,lengthOfBase/6.0), 
fixedNormal=False)
utils._commonBodySetup(b8, b8.shape.volume, b8.shape.inertia, 
material='frictionless', pos=[0,0,0], fixed=True)
b8.state.pos = [lengthOfBase/3.0,0,0]
O.bodies.append(b8)


# Vertical faces A-B-C-D of the box
bA=Body()
bA.mask=3
wire=False
color=[0,0.5,1]
highlight=False
bA.shape=PotentialBlock(k=0.0, r=r, R=0.0, a=[1,-1,0,0,0,0], b=[0,0,1,-1,0,0], 
c=[0,0,0,0,1,-1], 
d=[0.5*wallThickness-r,0.5*wallThickness-r,0.5*heightOfBase-r,0.5*heightOfBase-r,0.5*lengthOfBase-r,0.5*lengthOfBase-r],
 id=len(O.bodies), isBoundary=True, color=color, wire=wire, 
highlight=highlight, AabbMinMax=True, 
minAabb=1.05*Vector3(0.4*wallThickness,0.5*heightOfBase,0.5*lengthOfBase), 
maxAabb=1.05*Vector3(0.4*wallThickness,0.5*heightOfBase,0.5*lengthOfBase), 
fixedNormal=False)
utils._commonBodySetup(bA, bA.shape.volume, bA.shape.inertia, 
material='frictionless', pos=[0,0,0], fixed=True)
bA.state.pos = [0.5*lengthOfBase,0.5*heightOfBase,0]
O.bodies.append(bA)


bB=Body()
bB.mask=3
wire=False
color=[0,0.5,1]
highlight=False
bB.shape=PotentialBlock(k=0.0, r=r, R=0.0, a=[1,-1,0,0,0,0], b=[0,0,1,-1,0,0], 
c=[0,0,0,0,1,-1], 
d=[0.5*wallThickness-r,0.5*wallThickness-r,0.5*heightOfBase-r,0.5*heightOfBase-r,0.5*lengthOfBase-r,0.5*lengthOfBase-r],
 id=len(O.bodies), isBoundary=True, color=color, wire=wire, 
highlight=highlight, AabbMinMax=True, 
minAabb=1.05*Vector3(0.4*wallThickness,0.5*heightOfBase,0.5*lengthOfBase), 
maxAabb=1.05*Vector3(0.4*wallThickness,0.5*heightOfBase,0.5*lengthOfBase), 
fixedNormal=False)
utils._commonBodySetup(bB, bB.shape.volume, bB.shape.inertia, 
material='frictionless', pos=[0,0,0], fixed=True)
bB.state.pos = [-0.5*lengthOfBase,0.5*heightOfBase,0]
O.bodies.append(bB)


bC=Body()
bC.mask=3
wire=True
color=[0,0.5,1]
highlight=False
bC.shape=PotentialBlock(k=0.0, r=r, R=0.0, a=[1,-1,0,0,0,0], b=[0,0,1,-1,0,0], 
c=[0,0,0,0,1,-1], 
d=[0.5*lengthOfBase-r,0.5*lengthOfBase-r,0.5*heightOfBase-r,0.5*heightOfBase-r,0.5*wallThickness-r,0.5*wallThickness-r],
 id=len(O.bodies), isBoundary=True, color=color, wire=wire, 
highlight=highlight, AabbMinMax=True, 
minAabb=1.05*Vector3(0.5*lengthOfBase,0.5*heightOfBase,0.4*wallThickness), 
maxAabb=1.05*Vector3(0.5*lengthOfBase,0.5*heightOfBase,0.4*wallThickness), 
fixedNormal=False)
utils._commonBodySetup(bC, bC.shape.volume, bC.shape.inertia, 
material='frictionless', pos=[0,0,0], fixed=True)
bC.state.pos = [0,0.5*heightOfBase,0.5*lengthOfBase]
O.bodies.append(bC)


bD=Body()
bD.mask=3
wire=False
color=[0,0.5,1]
highlight=False
bD.shape=PotentialBlock(k=0.0, r=r, R=0.0, a=[1,-1,0,0,0,0], b=[0,0,1,-1,0,0], 
c=[0,0,0,0,1,-1], 
d=[0.5*lengthOfBase-r,0.5*lengthOfBase-r,0.5*heightOfBase-r,0.5*heightOfBase-r,0.5*wallThickness-r,0.5*wallThickness-r],
 id=len(O.bodies), isBoundary=True, color=color, wire=wire, 
highlight=highlight, AabbMinMax=True, 
minAabb=1.05*Vector3(0.5*lengthOfBase,0.5*heightOfBase,0.4*wallThickness), 
maxAabb=1.05*Vector3(0.5*lengthOfBase,0.5*heightOfBase,0.4*wallThickness), 
fixedNormal=False)
utils._commonBodySetup(bD, bD.shape.volume, bD.shape.inertia, 
material='frictionless', pos=[0,0,0], fixed=True)
bD.state.pos = [0,0.5*heightOfBase,-0.5*lengthOfBase]
O.bodies.append(bD)


escapeNo=0
def myAddPlotData():
        global escapeNo
        global wallThickness
        global meanSize
        uf=utils.unbalancedForce()
        if isnan(uf):
                uf = 1.0
        KE = utils.kineticEnergy()

        for b in O.bodies:
                if b.state.pos[1] < -5.0*meanSize and 
len(b.state.blockedDOFs)==0: #i.e. fixed==False
                        escapeNo = escapeNo+1
                        O.bodies.erase(b.id)
        if O.iter>25000:
                removeLid()
        
plot.addData(timeStep1=O.iter,timeStep2=O.iter,timeStep3=O.iter,timeStep4=O.iter,time=O.time,unbalancedForce=uf,kineticEn=KE,outsideNo=escapeNo)


from yade import plot
plot.plots={'timeStep1':('unbalancedForce'),'timeStep2':('kineticEn'),'time':('outsideNo')}
#plot.plot() #Uncomment to view plots
O.engines=O.engines+[PyRunner(iterPeriod=10,command='myAddPlotData()')]

def removeLid():
        global lidID    
        if (O.bodies[lidID]):
                O.bodies.erase(lidID)   


O.dt = 0.2*sqrt(0.3*O.bodies[0].state.mass/1.0e8)

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

O.saveTmp()



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

_______________________________________________
Mailing list: https://launchpad.net/~yade-users
Post to     : yade-users@lists.launchpad.net
Unsubscribe : https://launchpad.net/~yade-users
More help   : https://help.launchpad.net/ListHelp

Reply via email to