← Back to team overview

yade-users team mailing list archive

[Question #684747]: can we do tesselation at another code

 

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

hi all,

Because of the Cluster I am using right now can not use the TesselationWrapper, so I am thinking maybe I can use the cluster to save the simulation and export some files to a virtual machine in a workstation to get the micro-strain and micro-stress by using tesselationWrapper.

So I did a very simple try in the virtual machine.

First I use the following code to save the simulation.

##################################
from yade import pack, plot
from yade import export
from yade import utils
compFricDegree=45.0
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')
O.dt=.5*PWaveTimeStep()
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,
	newton,
]
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
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))
re11=-triax.strain[0]
re22=-triax.strain[1]
re33=-triax.strain[2]
triax.stressMask = 5
newton=NewtonIntegrator(damping=0.0)
triax.goal2=rate
triax.strainRate2=15
triax.strainRate1=triax.strainRate3=1000.0
def stop_loading():
	if -triax.strain[1]-re22> target_strain:
		O.pause()
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,
	newton,
	PyRunner(command='stop_loading()',iterPeriod=10000),
	VTKRecorder(fileName='3d-vtk-',recorders=['all','bstresses'],iterPeriod=1000),
	
]	
O.run(500000,True)
O.save("test.yade")  ####### Here I saved the simulation.
O.saveTmp()


#######################

then I use another code to do the tesselationWrapper.

#########################
O.load("test.yade")   ###### this is line 1.
O.run(100,True)
TW=TesselationWrapper()
TW.triangulate()        ########### this is line 4.
TW.computeVolumes()   
TW.volume(10)           
TW.setState(0)          
O.run(100,True)         
TW.setState(1)          
TW.defToVtk("strain.vtk")

#############################
I got the error as follows:

Running script try.py
Traceback (most recent call last):
  File "/usr/bin/yade", line 182, in runScript
    execfile(script,globals())
  File "try.py", line 4
SyntaxError: Non-ASCII character '\xe2' in file try.py on line 4, but no encoding declared; see http://python.org/dev/peps/pep-0263/ for details

############################

In my opinion, we can use the first code to save the scene and then use the second code to do the tesselation by using O.load("test.yade")  to reload the simulation and do the tesselation. But I got the error above.

Is there someone can give me some advice. 

best,
Yong




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