yade-users team mailing list archive
-
yade-users team
-
Mailing list archive
-
Message #21963
[Question #688528]: Multiple Geogrids
New question #688528 on Yade:
https://answers.launchpad.net/yade/+question/688528
Dear all,
I'm modelling the interaction of different particle layers separeted by geogrids. However, I came to this practical implementation of multiple geogrids, I couldn't find in the examples and I am facing troubles to create the grid layers in the conventional way:
from yade import pack,geom,qt
from yade.gridpfacet import *
from pylab import *
O.engines=[
ForceResetter(),
InsertionSortCollider([
Bo1_Sphere_Aabb(),Bo1_Facet_Aabb(),Bo1_GridConnection_Aabb(),
]),
InteractionLoop(
[Ig2_Sphere_Sphere_ScGeom(),Ig2_Facet_Sphere_ScGeom(),Ig2_GridNode_GridNode_GridNodeGeom6D(),Ig2_Sphere_GridConnection_ScGridCoGeom(),Ig2_GridConnection_GridConnection_GridCoGridCoGeom()],
[Ip2_FrictMat_FrictMat_FrictPhys(),Ip2_CohFrictMat_CohFrictMat_CohFrictPhys(setCohesionNow=True,setCohesionOnNewContacts=False)],
[Law2_ScGeom_FrictPhys_CundallStrack(),Law2_ScGeom6D_CohFrictPhys_CohesionMoment(),Law2_ScGridCoGeom_FrictPhys_CundallStrack()]
),
NewtonIntegrator(gravity=(0,0,-5),damping=0.3,label='newton')
]
O.materials.append(FrictMat(young=10e7,poisson=.25,frictionAngle=0.5,density=1e2,label='sphere'))
O.materials.append(FrictMat(young=10e7,poisson=.25,frictionAngle=0.5,density=1e2,label='walls'))
O.materials.append(CohFrictMat(young=3e5,poisson=0.3,density=1e1,frictionAngle=10,normalCohesion=1e7,shearCohesion=1e7,momentRotationLaw=True,label='spheremat'))
### Parameters of a rectangular grid 1 ###
L=0.1 #length [m]
l=0.05 #width [m]
nbL=10 #number of nodes for the length [#]
nbl=5 #number of nodes for the width [#]
r=L/100. #radius
color=[255./255.,102./255.,0./255.]
nodesIds=[]
#Create all nodes first :
for i in range(0,nbL):
for j in range(0,nbl):
nodesIds.append( O.bodies.append(gridNode([i*L/nbL,j*l/nbl,0],r,wire=False,fixed=False,material='spheremat',color=color)) )
#Create connection between the nodes
for i in range(0,len(nodesIds)):
for j in range(i+1,len(nodesIds)):
dist=(O.bodies[i].state.pos - O.bodies[j].state.pos).norm()
if(dist<=L/nbL*1.01):
#O.bodies.append( gridConnection(i,j,r,color=color) )
### Parameters of a rectangular grid 2 ###
L2=0.1 #length [m]
l2=0.05 #width [m]
nbL2=10 #number of nodes for the length [#]
nbl2=5 #number of nodes for the width [#]
r2=L2/100. #radius
color2=[255./255.,102./255.,0./255.]
nodesIds2=[]
#Create all nodes first :
for q in range(0,nbL):
for u in range(0,nbl):
nodesIds2.append( O.bodies.append(gridNode([q*L2/nbL2,u*l2/nbl2,0.05],r2,wire=False,fixed=False,material='spheremat',color=color)) )
#Create connection between the nodes
for q in range(0,len(nodesIds2)):
for u in range(q+1,len(nodesIds2)):
dist2=(O.bodies[q].state.pos - O.bodies[u].state.pos).norm()
if(dist2<=L2/nbL2*1.01):
O.bodies.append( gridConnection(q,u,r2,color=color) )
#O.bodies.append([sphere((0.05,0.025,0.05),.01, material='sphere')])
mn,mx=Vector3(0.01,0,0.015),Vector3(0.09,0.04,0.1) #m
sp=pack.SpherePack()
sp.makeCloud(mn,mx,rMean=0.005)
sp.toSimulation(material='sphere')
mn1,mx1=Vector3(0.01,0,-0.02),Vector3(0.09,0.04,-0.1) #m
spp=pack.SpherePack()
spp.makeCloud(mn1,mx1,rMean=0.005)
spp.toSimulation(material='sphere')
O.bodies.append(geom.facetBox((0.05,0.02,0),(0.045,0.0245,0.11),wallMask=1+2+4+8+16+32,material='walls'))
O.dt=1e-05
O.saveTmp()
qt.View()
Do you have any idea of how to implement it? The issue is on creating the connection:
if(dist2<=L2/nbL2*1.01):
O.bodies.append( gridConnection(q,u,r2,color=color) )
Thank you in advance,
Luis
--
You received this question notification because your team yade-users is
an answer contact for Yade.