← Back to team overview

yade-users team mailing list archive

Re: [Question #694513]: How to generate stress in PARAVIEW when the boulder dropped on the grains, and why my amount of grains model in PARAVIEW is not as much as in YADE simulation?

 

Question #694513 on Yade changed:
https://answers.launchpad.net/yade/+question/694513

    Status: Answered => Open

Defri is still having a problem:
I am sorry for the delay response.

>  If you run it in Yade, you should not have any problem.

yes I run it in YADE, and as you can see in my script and if you run it,
it is fine.

>  I suggest to use yade for yade tasks and paraview for paraview tasks.

I just click "Run Script" in paraview, and then appeared that " NameError: name 'readParamsFromTable' is not defined "
I am using vtkRecorder

> you should describe more in detail how you got this error, what steps
you did, what commands run, where (linux console, paraview python shell,
...), etc.

So I just run my script in TERMINAL of Ubuntu. I knew about
"readParamsFromTable" from the example, because it showed what I need,
which is the grains and the variation of size of the grains, then I
followed it.

###SCRIPT###

##Sphere Cylinder pack
readParamsFromTable(maxLoad=10000,minLoad=0)
from yade.params.table import *
from yade import export
from yade import pack, plot
from pylab import rand #for sand color

O.bodies.append(geom.facetCylinder(Vector3(1,1,25),4,50,wallMask=6))

##Define material of the grains
O.bodies[0].state.blockedDOFs='xyzXYZ'
O.bodies[0].state.vel=(0,0,0)
O.materials.append(FrictMat(young=1e7,poisson=.3,density=2000,frictionAngle=18))

sp=pack.SpherePack()
sp.makeCloud((-1.6,2.6,.1),(3,-1,20),rMean=.3,rRelFuzz=.5,num=950,)
sp.toSimulation(color=(0.6+0.15*rand(),0.5+0.15*rand(),0.15+0.15*rand()))

##Make a floor
O.bodies.append(wall((0,0,0),axis=2))

##Engines and Constitutive Law
O.engines=[ForceResetter(),
 	InsertionSortCollider([Bo1_Sphere_Aabb(),Bo1_Facet_Aabb(),Bo1_Wall_Aabb()]), #move for sphere, facet, wall
 	InteractionLoop([Ig2_Sphere_Sphere_ScGeom(),Ig2_Facet_Sphere_ScGeom(),Ig2_Wall_Sphere_ScGeom()], #interaction between them
   [Ip2_FrictMat_FrictMat_FrictPhys()], # ip2 list (just one list!)
   [Law2_ScGeom_FrictPhys_CundallStrack()]), # law2 list
   NewtonIntegrator(damping=.3,gravity=[0,0,-9.81]),
   PyRunner(command='checkUnbalanced()',realPeriod=2,label='checker'),
   VTKRecorder(fileName='tes2',recorders=['all'],iterPeriod=500),]

O.dt=.8*PWaveTimeStep()

def checkUnbalanced():
	if O.iter<1000:return # at the very start, unbalanced force can be low as there is only few contacts, but it does not mean the packing 										is stable
	if unbalancedForce()>1:return 	# the rest will be run only if unbalanced is < 1 (stabilized packing)
	O.bodies.append([utils.sphere(center=(1,1,50),radius=3.4)])
	O.bodies[0].state.mass=2000
	O.materials.append(FrictMat(young=100e7,poisson=.2,density=2700,frictionAngle=20))
	global boulder # without this line, the BOULDER variable would only exist inside this function
	boulder=O.bodies[-1] 	# the last particles is the boulder
	boulder.state.vel=(0,0,-.1) # start plotting the data now, it was not interesting before
	O.engines=O.engines+[PyRunner(command='addPlotData()',iterPeriod=50)]
	checker.command='unloadBoulder()'

def unloadBoulder():
	if abs(O.forces.f(boulder.id)[2])>maxLoad:
		boulder.state.vel*=-1 # prescribing a velocity will therefore make it move at constant velocity (downwards)
		checker.command='stopUnloading()'

def stopUnloading():
	if abs(O.forces.f(boulder.id)[2])<minLoad:
		O.run()
		
def addPlotData():
		b=O.bodies[-1]
accel=Force/O.bodies[0].state.mass, Force=Force, itera_=O.iter)
		plot.addData(position=b.state.pos[2], velocity=b.state.vel.norm(), itera=O.iter, time=O.time, time_=O.time, accel=Force/O.bodies[0].state.mass, Impact_Force=Force, itera_=O.iter)
		
plot.plots={'time':('velocity',), 'itera':('position',), 'time_':('accel',), 'itera_':('Impact_Force')}
plot.plot()

O.saveTmp()

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

my another question:
why after I inputted vtkRecorder (as written on my script), only showed the initial condition (that only grains stand, not dropping like when I run Yade)?
I want to have the result of the stress (boulder dropped onto the grains).

Thank you in advance.

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