← Back to team overview

yade-users team mailing list archive

[Question #684062]: TW=TesselationWrapper()

 

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

hi all,

I am using the supercomputer to do some simulations. I want to get the microstrain field, so I did as the document said. which means including this TW=TesselationWrapper(), but I got an error.

Traceback (most recent call last):
  File "/packages/7x/yade/2018.02b/bin/yade-2018.02b", line 182, in runScript
    execfile(script,globals())
  File "microscale.py", line 149, in <module>
    TW=TesselationWrapper()
NameError: name 'TesselationWrapper' is not defined
 unbalanced force:  6.45473797305e-06 mean stress:  -99999.9975958
porosity=  0.429910437487
unbalanced force: 7.80668882803e-06  mean stress:  -100000.028644
###    Compacted state saved      ###
porosity=  0.429910437332



######################
here is part of the code related to the TessalationWrapper command.
####################################
############################
### DEFINING PARAMETERS  ###
############################
from yade import pack, plot
from yade import export
from yade import utils
nRead=readParamsFromTable(
	num_spheres=5288,
	compFricDegree=45.0,
	key='_triax_base_'+'100',
	goal_confining_pressure=-100000,
	unknownOK=True
)
from yade.params import table
num_spheres=table.num_spheres
key=table.key
targetPorosity=0.43
compFricDegree=table.compFricDegree
finalFricDegree=19.5
rate=-15
damp=0.7
target_strain = 0.15
stabilityThreshold=0.001
young=4e8
mn,mx=Vector3(0,0,0),Vector3(4e-3,8e-3,4e-3)
O.materials.append(CohFrictMat(young=young,poisson=0.3,frictionAngle=radians(compFricDegree),isCohesive=False,alphaKr=0.2,alphaKtw=0,etaRoll=0.5,momentRotationLaw=True,density=2648,label='spheres'))
O.materials.append(FrictMat(young=young,poisson=0.3,frictionAngle=0,density=0,label='walls'))
walls=aabbWalls([mn,mx],thickness=0,material='walls')
wallIds=O.bodies.append(walls)
sp=pack.SpherePack()
psdSizes=[0.12e-3,0.14e-3,0.16e-3,0.18e-3,0.19e-3,0.20e-3,0.22e-3,0.24e-3,0.29e-3,0.38e-3]
psdCumm=[0,11.1,22.2,33.3,44.4,55.5,66.6,77.7,88.8,100]
sp.makeCloud(mn,mx,psdSizes=psdSizes,psdCumm=psdCumm,num=2000,distributeMass=1,seed=1)
sp.toSimulation(material='spheres')
print "num_spheres= ", len(O.bodies)
O.dt=.5*PWaveTimeStep()
print "num_spheres= ", len(O.bodies)
############################
###   DEFINING ENGINES   ###
############################
triax=TriaxialStressController(
	maxMultiplier=1.0+2e5/young,
	finalMaxMultiplier=1.0+2e4/young,
	thickness=0,
	stressMask=7,
	internalCompaction=False
)
newton=NewtonIntegrator(damping=damp)
O.engines=[
	ForceResetter(),
	InsertionSortCollider([Bo1_Sphere_Aabb(),Bo1_Box_Aabb()]),
	InteractionLoop(
			[Ig2_Sphere_Sphere_ScGeom6D(),Ig2_Box_Sphere_ScGeom()],
			[Ip2_FrictMat_FrictMat_FrictPhys(),Ip2_CohFrictMat_CohFrictMat_CohFrictPhys()],
			[Law2_ScGeom_FrictPhys_CundallStrack(),Law2_ScGeom6D_CohFrictPhys_CohesionMoment(useIncrementalForm=True,always_use_moment_law=True,label='cohesiveLaw')]
	),
	GlobalStiffnessTimeStepper(active=1,timeStepUpdateInterval=10,timestepSafetyCoefficient=0.8),
	triax,
	#VTKRecorder(fileName='george-triaxial-',recorders=['all'],iterPeriod=1000),
	#TriaxialStateRecorder(iterPeriod=2000,file='WallStresses-george'+table.key),
	newton,
	#PyRunner(command='history()',iterPeriod=10000),
	#PyRunner(command='stop_loading()',iterPeriod=10000),
]
#Gl1_Sphere.stripes=0
#if nRead==0: yade.qt.Controller(),yade.qt.View()
########################################
####   APPLYING CONFINING PRESSURE   ###
########################################
triax.goal1=triax.goal2=triax.goal3=-100000
while 1:
	O.run(3000,True)
	unb=unbalancedForce()
	print 'unbalanced force: ',unb,'mean stress: ',triax.meanStress
	if unb<stabilityThreshold and abs(-100000-triax.meanStress)/-100000<0.001:
		break
####################################################
####   REACHING A SPECIFIED POROSITY PRECISELY   ###
####################################################
while triax.porosity>targetPorosity:
	compFricDegree = 0.95*compFricDegree
	setContactFriction(radians(compFricDegree))
	print "\r Friction: ",compFricDegree," porosity:",triax.porosity,
	sys.stdout.flush()
	O.run(500,1)
triax.wall_bottom_activated=True
triax.wall_top_activated=True
triax.wall_left_activated=True
triax.wall_right_activated=True
triax.wall_back_activated=True
triax.wall_front_activated=True
setContactFriction(radians(finalFricDegree))
while 1:
	O.run(3000,True)
	unb=unbalancedForce()
	print 'unbalanced force: ',unb,'mean stress: ',triax.meanStress
	if unb<stabilityThreshold and abs(-100000-triax.meanStress)/-100000<0.001:
		break
print "porosity= ",triax.porosity
triax.goal1=triax.goal2=triax.goal3=-100000
while 1:
    O.run(1000, True)
    unb=unbalancedForce()
    print 'unbalanced force:',unb,' mean stress: ',triax.meanStress
    if unb<stabilityThreshold and abs(-100000-triax.meanStress)/-100000<0.001:
        break
#O.save('compactedState'+key+'.yade.gz')
print "###    Compacted state saved      ###"
print "porosity= ",triax.porosity
re11=-triax.strain[0]
re22=-triax.strain[1]
re33=-triax.strain[2]
################################
#####   DEVIATORIC LOADING   ###
################################
triax.stressMask = 5
newton=NewtonIntegrator(damping=0.0)
#now goal2 is the target strain rate
triax.goal2=rate
# we define the lateral stresses during the test, here the same 10kPa as for the initial confinement.
triax.goal1=-100000
triax.goal3=-100000
triax.strainRate2=15
triax.strainRate1=triax.strainRate3=1000.0
######################################################

def history():
  	plot.addData(e11=-triax.strain[0]-re11, e22=-triax.strain[1]-re22, e33=-triax.strain[2]-re33,
  		    ev=-triax.strain[0]-re11-triax.strain[1]-re22-triax.strain[2]-re33,
		    s11=-triax.stress(triax.wall_right_id)[0],
		    s22=-triax.stress(triax.wall_top_id)[1],
		    s33=-triax.stress(triax.wall_front_id)[2],
		    CN=avgNumInteractions(cutoff=0.0, skipFree=False, considerClumps=False),
			FT1=utils.fabricTensor(cutoff=0.0,splitTensor=True)[0],
			FT2=utils.fabricTensor(cutoff=0.0,splitTensor=True)[1],
	            i=O.iter)
	plot.saveDataTxt('calibration-george.txt')
#### loading condition####
def stop_loading():
	if -triax.strain[1]-re22> target_strain:
		O.pause()

#### export the displacement filed ####
vtk = export.VTKExporter("displacement-needed")
def doExport():
	#vtk.exportSpheres(what=dict(dist='b.state.pos.norm()'))
	vtk.exportSpheres(ids='all',what=[('disp','b.state.displ()')],useRef=True)
##### export the strain field ####
TW=TesselationWrapper()      ###### this is line 149
TW.triangulate()
TW.computeVolumes()
TW.setState(0)
O.run(100,True)
TW.setState(1)
def strain_export():
	TW.setState(1)
	TW.defToVtk("strain.vtk")
###### export the sress field ####
TW=TesselationWrapper()
TW.setState()
TW.computeVolumes()
s=bodyStressTensors()
for b in O.bodies:
	if isinstance(b.shape,Sphere):
		b.mystress = s[b.id]*4.*pi/3.*b.shape.radius**3/TW.volume(b.id)
vtk = export.VTKExporter("stress-needed")
def stress_export():
	vtk.exportSpheres(ids='all',what=[('stress','b.mystress')],useRef=True)
	
O.engines=[
	ForceResetter(),
	InsertionSortCollider([Bo1_Sphere_Aabb(),Bo1_Box_Aabb()]),
	InteractionLoop(
			[Ig2_Sphere_Sphere_ScGeom6D(),Ig2_Box_Sphere_ScGeom()],
			[Ip2_FrictMat_FrictMat_FrictPhys(),Ip2_CohFrictMat_CohFrictMat_CohFrictPhys()],
			[Law2_ScGeom_FrictPhys_CundallStrack(),Law2_ScGeom6D_CohFrictPhys_CohesionMoment(useIncrementalForm=True,always_use_moment_law=True,label='cohesiveLaw')]
	),
	GlobalStiffnessTimeStepper(active=1,timeStepUpdateInterval=10,timestepSafetyCoefficient=0.8),
	triax,
	#VTKRecorder(fileName='george-triaxial-',recorders=['all'],iterPeriod=1000),
	#TriaxialStateRecorder(iterPeriod=2000,file='WallStresses-george'+table.key),
	newton,
	PyRunner(command='history()',iterPeriod=10000),
	PyRunner(command='stop_loading()',iterPeriod=10000),
	PyRunner(command='doExport()',iterPeriod=10000),
	PyRunner(command='strain_export()',iterPeriod=10000),
	PyRunner(command='stress_export()',iterPeriod=10000),
]
O.run(5000000,True)
####################################################
#plot.plots={'e22':('s22',None,('ev','r--'))}
#plot.plot()

####################################
I found a similar question, they said the reason may be the older version. But the version of Yade in the supercomputer is:


TCP python prompt on localhost:9000, auth cookie `udseck'
Welcome to Yade 2018.02b 
XMLRPC info provider on http://localhost:21000
Running script microscale.py

Is there anyone can give me some suggestions. thanks in advance.

Yong


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