← Back to team overview

yade-users team mailing list archive

[Question #695164]: Interparticle spacing

 

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

Hello,

I would like to compute the spacing between adjacent individual particles (spheres) in a given packing (i.e. interparticle spacing). To do that, I thought about getting the length of the sides from the Delaunay triangulation process in the FlowEngine. So I created a packing of spheres, then run the flow engine to do the triangulation, then I want to get the length of the side. My code is shown below and I am using Yadedaily in running this code. My questions are:

1- Is there a more efficient approach to get the interparticle spacing?
2- I found two functions in Yade documentation [1]: getVertices and printVertices, are those vertices belongs to the Delaunay triangulation (i.e. the vertices of the tetrahedra that forms the mesh for flow modeling)? 
3- What are the values that I get from getVertices function? are they the Ids of the cells?
4- printVertices gives a txt file with six columns: id, x, y, z, alpha, fictitious. What does alpha and id mean? 

Thank you,
Othman

[1] https://yade-dem.org/doc/Yade.pdf
-----------

from yade import pack



P=1 #Pa
visc=1e-3 #Pa.sec - taken from Catalano, Chareyre, Bathelemy (2014)
density=1000 #kg/m3
g=9.81 #m/s2
sp_radius=2.36/1000

########## create walls ##########

mnx=0
mny=0
mnz=0
mxx=50.8/1000 
mxy=50.8/1000 
mxz=50.8/1000 

mn,mx=Vector3(mnx,mny,mnz),Vector3(mxx,mxy,mxz)
walls=aabbWalls([mn,mx],thickness=0)
wallIds=O.bodies.append(walls)
yade.qt.View()
########## spheres ##########
sp=pack.SpherePack()
sp.makeCloud(mn,mx,rMean=sp_radius)
sp.toSimulation()
Height=max(utils.aabbDim())
dP=P/Height #Pa/m
##check how to fix the particles
#for i in sp:
#	body= O.bodies[i]
#	body.state.blockedDOFs='xyzXYZ'

print ('porosity = ', utils.porosity())


########## flow engine ##########

flow=FlowEngine()
flow.useSolver=3
flow.permeabilityFactor=1
flow.viscosity=visc
flow.bndCondIsPressure=[0,0,0,0,0,1]
flow.bndCondValue=[0,0,0,0,0,P]
flow.boundaryUseMaxMin=[1,1,1,1,1,1]
O.dt=1e-6
O.dynDt=False
flow.emulateAction()


#get verticies positions
flow.printVertices() 



n=flow.nCells()
x=[]
for i in range (n):
	l=flow.getVertices(i)
	x.append(l)


print (x)




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