# NameError Traceback (most recent call last)

Asked by ehsan benabbas on 2019-10-22

Hello,

I am using Ubuntu 18.04, and Yade 2019-08-08.git-775ae74

I have read the wiki and tutorials, struggle with codes as a beginner in yade and asked some questions. Finally, I slightly changed https://.../script-session1.py. I got some errors such as syntax ones and fixed the, but I get the following error repeatedly as follows now:

ehsan@ehsan:~/Desktop$/home/ehsan/yade/install/bin/yade-2019-08-08.git-775ae74 Q.py Welcome to Yade 2019-08-08.git-775ae74 Using python version: 3.6.8 (default, Oct 7 2019, 12:59:55) [GCC 8.3.0] TCP python prompt on localhost:9000, auth cookie `yksdca' XMLRPC info provider on http://localhost:21000 Running script Q.py The constructor with a shareWidget is deprecated, use the regular contructor instead. Number of elements: 2006 Box Volume: 5.3940427e-317 Box Volume calculated: 1000.0 --------------------------------------------------------------------------- NameError Traceback (most recent call last) ~/yade/install/bin/yade-2019-08-08.git-775ae74 in <module> NameError: name 'history' is not defined --------------------------------------------------------------------------- NameError Traceback (most recent call last) ~/yade/install/bin/yade-2019-08-08.git-775ae74 in <module> NameError: name 'history' is not defined --------------------------------------------------------------------------- NameError Traceback (most recent call last) ~/yade/install/bin/yade-2019-08-08.git-775ae74 in <module> NameError: name 'history' is not defined --------------------------------------------------------------------------- NameError Traceback (most recent call last) ~/yade/install/bin/yade-2019-08-08.git-775ae74 in <module> . . . Since I have defined "history()", I don't know what is the problem. Unfortunately couldn't find the answer by googling it. ***************************************************************************** This is my code: ############################################################################################################################ ######### TRIAXIAL PROBLEM, Y IS THE VERTICAL AXIS, X IS THE RIGHT AXIS, Z IS THE FRONT AXIS ######### ############################################################################################################################ import numpy as np import math from yade import pack, plot, qt, export, utils from datetime import datetime ###################################################### ######### DEFINING VARIABLES ######### nRead=readParamsFromTable( num_spheres=2000, compFricDegree = 30, key='_triax_base_', unknownOk=True ) from yade.params import table num_spheres=table.num_spheres key=table.key targetPorosity = 0.43 compFricDegree = table.compFricDegree finalFricDegree = 30 rate=-0.02 damp=0.2 stabilityThreshold=0.01 young=15e6 poisson=0.4 mn,mx=Vector3(0,0,0),Vector3(10,10,10) sigmaIso=-50e3 ###################################################### ######### DEFINING MATERIALS ######### O.materials.append(FrictMat(young=young,poisson=poisson,frictionAngle=radians(compFricDegree),density=2600,label='spheres')) O.materials.append(FrictMat(young=young,poisson=poisson,frictionAngle=0,density=0,label='frictionlesswalls')) #################################################### ######### DEFINING PACKING ######### walls=aabbWalls([mn,mx],thickness=0,material='frictionlesswalls') wallIds=O.bodies.append(walls) sp=pack.SpherePack() volume = (mx[0]-mn[0])*(mx[1]-mn[1])*(mx[2]-mn[2]) mean_rad = pow(0.09*volume/num_spheres,0.3333) clumps=False if clumps: volume = (mx[0]-mn[0])*(mx[1]-mn[1])*(mx[2]-mn[2]) mean_rad = pow(0.09*volume/num_spheres,0.3333) c1=pack.SpherePack([((-0.2*mean_rad,0,0),0.5*mean_rad),((0.2*mean_rad,0,0),0.5*mean_rad)]) sp.makeClumpCloud(mn,mx,[c1],periodic=False) sp.toSimulation(material='spheres') O.bodies.updateClumpProperties() else: sp.makeCloud(mn,mx,-1,0.3333,num_spheres,False, 0.95,seed=1) O.bodies.append([sphere(center,rad,material='spheres') for center,rad in sp]) ########################################################## ######### DEFINING TRIAXIAL TEST ######### triax=TriaxialStressController( maxMultiplier=1.+2e4/young, finalMaxMultiplier=1.+2e3/young, thickness = 0, stressMask = 7, internalCompaction=False ) #################################################### ######### DEFINING ENGINES ######### newton=NewtonIntegrator(damping=damp) O.engines=[ ForceResetter(), InsertionSortCollider([Bo1_Sphere_Aabb(),Bo1_Box_Aabb()]), InteractionLoop( [Ig2_Sphere_Sphere_ScGeom(),Ig2_Box_Sphere_ScGeom()], [Ip2_FrictMat_FrictMat_FrictPhys()], [Law2_ScGeom_FrictPhys_CundallStrack()] ), GlobalStiffnessTimeStepper(active=1,timeStepUpdateInterval=100,timestepSafetyCoefficient=0.8), triax, TriaxialStateRecorder(iterPeriod=100,file='WallStresses'+table.key), newton, PyRunner(iterPeriod=20,command='history()',label='recorder'), PyRunner(command='checkUnbalanced()',realPeriod=2) ] Gl1_Sphere.stripes=True if nRead==0: yade.qt.Controller(), yade.qt.View() print ('Number of elements: ', len(O.bodies)) print ('Box Volume: ', triax.boxVolume) print ('Box Volume calculated: ', volume) ############################################################### ######### APPLYING CONFINING PRESSURE ######### triax.internalCompaction=False setContactFriction=radians(compFricDegree) triax.stressmask=7 triax.goal1=sigmaIso triax.goal2=sigmaIso triax.goal3=sigmaIso while 1: O.run(1000, True) unb=unbalancedForce() meanS=(triax.stress(triax.wall_right_id)[0]+triax.stress(triax.wall_top_id)[1]+triax.stress(triax.wall_front_id)[2])/3 print ('unbalanced force:',unb,' mean stress engine: ',triax.meanStress,' mean stress (Calculated): ',meanS) print ('porosity=',triax.porosity) print ('void ratio=',triax.porosity/(1-triax.porosity)) print ('-----Phase_01: Isotropic compression 50kPa--(^_^)---') if unb<stabilityThreshold and abs(sigmaIso-triax.meanStress)/sigmaIso<0.001: break O.save('confinedPhase'+key+'.xml') print ('### Isotropic phase saved ###') ###################################################### ######### DEVIATORIC LOADING ######### triax.internalCompaction=False setContactFriction=radians(compFricDegree) triax.stressMask = 5 triax.goal2=rate triax.goal1=sigmaIso triax.goal3=sigmaIso while 1: O.run(1000, True) unb=unbalancedForce() axialS=triax.stress(triax.wall_top_id)[1] print ('step=', O.iter, 'unbalanced force:',unb,' sigma2: ',axialS, 'q=', axialS-sigmaIso) print ('axial deformation (%)', (triax.strain[1]-e22Check)*100) if abs((triax.strain[1]-e22Check)-0.01)<=0.001: O.save('firstpoint.xml') if abs((triax.strain[1]-e22Check)-0.02)<=0.001: O.save('secondpoint.xml') if abs((triax.strain[1]-e22Check)-0.03)<=0.001: O.save('thirdpoint.xml') if abs((triax.strain[1]-e22Check)-0.05)<=0.001: O.save('fourthpoint.xml') if triax.strain[1]-e22Check>=0.3 : break O.save('final.xml') ######################################################## ######### RECORD AND PLOT DATA ######### qt.View() def checkUnbalanced(): if unbalancedForce()<.05: O.pause() plot.saveDataTxt('bbb.txt.bz2') def history(): plot.addData(e11=-triax.strain[0], e22=-triax.strain[1], e33=-triax.strain[2], ev=-triax.strain[0]-triax.strain[1]-triax.strain[2], s11=-triax.stress(triax.wall_right_id)[0], s22=-triax.stress(triax.wall_top_id)[1], s33=-triax.stress(triax.wall_front_id)[2], i=O.iter,unbalanced=unbalancedForce() ) O.run(5000,True) plot.plots={'e22':('s11','s22','s33'),'e22':('ev')} plot.labels={'s11':'$\sigma_{11}$' , 's22':'$\sigma_{22}$' , 's33':'$\sigma_{33}$' , 'e11':'$\epsilon_{11}$' , 'e22':'$\epsilon_{22}$' , 'e33':'$\epsilon_{33}$' , 'ev':'$\epsilon_{V}\$'}
plot.plot()
plot.saveDataTxt('results'+key)
plot.saveGnuplot('plotScript'+key)

********************************************************

And also before the error, I get 1 notice as "The constructor with a shareWidget is deprecated, use the regular contructor instead.". I don't know if this affects my code or not.

Could you please let me know if there is any other mistake in this code?

Thank you very much for your help.

## Question information

Language:
English Edit question
Status:
Solved
For:
Assignee:
No assignee Edit question
Solved by:
Jan Stránský
Solved:
2019-10-22
Last query:
2019-10-22
2019-10-22
 Jan Stránský (honzik) said on 2019-10-22: #1

Hi,

> repeatedly

because the error is encountered repeatedly in PyRunner

> Since I have defined "history()", I don't know what is the problem.
> NameError: name 'history' is not defined
>
> while 1:
> O.run(1000, True)
> ...
> def history():

as the error says, history() is not defined.
Python reads and executes the code line by line. It first reads some running, but history() is defined afterwards (where Python has not yet been and has no clue what is there).
Defining history() before O.run should do the trick

cheers
Jan

 ehsan benabbas (ehsanben) said on 2019-10-22: #2

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