yade-users team mailing list archive
-
yade-users team
-
Mailing list archive
-
Message #27726
Re: [Question #701750]: Cylinder particles segmented question
Question #701750 on Yade changed:
https://answers.launchpad.net/yade/+question/701750
Status: Needs information => Open
enki gave more information on the question:
Thanks Jan,
1) The parameter translationAxis=[0,0,1] means that all index wallIds
will move in the z direction
>> What if we would like to apply specific direction for each wall?
i.e. y direction for top and bottom wall, x direction for left and right wall, z direction for front and back
It seems that the above code, can only control one direction for 6
walls at one time
2) Example MWE script is shown as below:
#### Parameters ####
# radius of cylinder
cyl_R=0.1
# length of cylinder
cyl_L=0.2
# friction angle
phi=30.0
# Young's modulus
E=1e6
idSteel=O.materials.append(FrictMat(young=210e9,poisson=.25,frictionAngle=.8,density=7.85e3,label='steel'))
# wallMask=31 >> +/-x, +/-y, -z
#O.bodies.append(geom.facetBox((0,0,0),(2.5,2.5,1),wallMask=63,material="steel" ))
## create walls
walls=aabbWalls([(-2.5,-2.5,-2.5),(2.5,2.5,2.5)],thickness=0.0,material='steel')
wallIds=O.bodies.append(walls)
### periodic boundary for wall ###
#O.periodic=True
#O.cell.hSize=Matrix3(0.8,0,0,0,1,0,0,0,0.8)
### set the velocity for facet ###
#for id in range(6):
# b = O.bodies[id]
# b.state.vel = (0,0,0.5)
### create materials ###
# gridConnections material
gridConMat= O.materials.append(CohFrictMat(young=E, poisson=0.5,
density=1500, frictionAngle=radians(phi), normalCohesion=1e10,
shearCohesion=1e10, momentRotationLaw=True, label='gcMat'))
# general interactions
cylMat= O.materials.append(FrictMat(young=E, poisson=0.5, density=1500,
frictionAngle=radians(phi), label='cMat'))
### create particles/packing: cylinders ###
nodesIds=[]
cylIds=[]
dx=0.5
dy=0.5
nx=2
ny=2
nz=1
dz=0
for i in range(0,nx):
x=0+i*dx
for j in range(0,ny):
y=0+j*dy
for k in range(0,nz):
z=0+k*dz
cylinder((x,y+cyl_L,z),(x,y,z),radius=cyl_R,nodesIds=nodesIds,cylIds=cylIds,
color=[1,0,0],fixed=False,intMaterial='gcMat',extMaterial='cMat')
#O.bodies.appendClumped()
move =
TranslationEngine(translationAxis=[0,0,1],velocity=1,ids=[0,1,2,3,4,5])
### Engines ###
O.engines = [
ForceResetter(),
InsertionSortCollider([Bo1_GridConnection_Aabb(),Bo1_PFacet_Aabb(), Bo1_Wall_Aabb()]),
InteractionLoop([
Ig2_GridNode_GridNode_GridNodeGeom6D(),
Ig2_GridConnection_GridConnection_GridCoGridCoGeom(),
Ig2_Wall_Sphere_ScGeom(),
Ig2_Sphere_Sphere_ScGeom(),
Ig2_Sphere_GridConnection_ScGridCoGeom(),
Ig2_GridConnection_PFacet_ScGeom(),
],
[
# internal cylinder physics
Ip2_CohFrictMat_CohFrictMat_CohFrictPhys(setCohesionNow=True,setCohesionOnNewContacts=False),
# physics for external interactions, i.e., cylinder-cylinder
Ip2_FrictMat_FrictMat_FrictPhys()
],
[
Law2_ScGeom6D_CohFrictPhys_CohesionMoment(), # contact law for "internal" cylinder forces
Law2_GridCoGridCoGeom_FrictPhys_CundallStrack(), # contact law for cylinder-cylinder interaction
Law2_ScGeom_FrictPhys_CundallStrack(),
Law2_ScGridCoGeom_FrictPhys_CundallStrack()
]
),
GlobalStiffnessTimeStepper(timestepSafetyCoefficient=0.5),
NewtonIntegrator(gravity=(0., 0., -9.81), damping=0.5, label='newton'),
move
#TranslationEngine(translationAxis=[1,0,0],velocity=0.5,ids=[0,1,2,3,4,5])
#PyRunner(iterPeriod=1e-3,command="")
]
O.dt=0.5*PWaveTimeStep()
#### For viewing ####
qt.View()
#### Allows to reload the simulation ####
O.saveTmp()
--
You received this question notification because your team yade-users is
an answer contact for Yade.