Intersection of facets

Asked by José Mercado

Hi everybody!

I have problems trying to eliminate a facet. The geometry that i need is the intersection of a facetbox with a facetcylinder. With the wallMask command inside the facetCylinder i removed the top "circle" of the cylinder but i have problem with the bottom wall of the box. The balls cant enter in the cylinder because i need a "circular hole" in the bottom wall of the box. There is a possibility of generating a geometry through the intersection of the cylinder and the box? (like predicates).

I tried the following code:

from __future__ import division
from yade import pack
from yade import plot,qt
import math,numpy

### SPHERES

sp=pack.SpherePack()
sp.makeCloud((-5,-5,-5),(5,5,5),rMean=0.05,rRelFuzz=.5,num=10000)
sp.toSimulation()

### MATERIAL OF SPHERES AND WALLS

O.materials[0].frictionAngle=atan(0.5)
O.materials[0].poisson=.5
O.materials[0].young=1e6
O.materials[0].density=1000

id_wall = O.materials.append(FrictMat(density=10000,young=1e11,poisson=.5,frictionAngle=atan(0.5),label="wallmat"))
O.materials[id_wall]

### WALLS

O.bodies.append(yade.geom.facetCylinder((0,0,-6),radius=1,height=2,segmentsNumber=20,wallMask=6))

O.bodies.append(yade.geom.facetBox((0,0,0),(5,5,5)))

# ENGINE

O.engines=[
   ForceResetter(),
   InsertionSortCollider([Bo1_Sphere_Aabb(),Bo1_Facet_Aabb()]),
   InteractionLoop(
      [Ig2_Sphere_Sphere_ScGeom(),Ig2_Facet_Sphere_ScGeom()],
      [Ip2_FrictMat_FrictMat_FrictPhys()],
      [Law2_ScGeom_FrictPhys_CundallStrack()],
   ),
   NewtonIntegrator(damping=0.4,gravity=(0,0,-9.81)),
   # call the checkUnbalanced function (defined below) every 2 seconds
]

O.dt=utils.PWaveTimeStep()

Question information

Language:
English Edit question
Status:
Solved
For:
Yade Edit question
Assignee:
No assignee Edit question
Solved by:
Jan Stránský
Solved:
Last query:
Last reply:
Revision history for this message
Best Jan Stránský (honzik) said :
#1

Hello José,
if I understand correctly, this feature is not directly supported by Yade.
However, you can use some preprocessor for facets, either your own script,
or use some mesher generating triangular surface mesh (personally I
usuzally use Salome [1]). Yade can read various mesh formats (gmsh, iges,
stl, gts, unv), see [2].
If I understood incorrectly or in case of any further question, do not
hesitate to ask :-)
cheers
Jan

[1] http://www.salome-platform.org/
[2] https://yade-dem.org/doc/yade.ymport.html

2015-07-06 21:07 GMT+02:00 José Mercado <
<email address hidden>>:

> New question #268936 on Yade:
> https://answers.launchpad.net/yade/+question/268936
>
> Hi everybody!
>
> I have problems trying to eliminate a facet. The geometry that i need is
> the intersection of a facetbox with a facetcylinder. With the wallMask
> command inside the facetCylinder i removed the top "circle" of the cylinder
> but i have problem with the bottom wall of the box. The balls cant enter in
> the cylinder because i need a "circular hole" in the bottom wall of the
> box. There is a possibility of generating a geometry through the
> intersection of the cylinder and the box? (like predicates).
>
> I tried the following code:
>
> from __future__ import division
> from yade import pack
> from yade import plot,qt
> import math,numpy
>
> ### SPHERES
>
> sp=pack.SpherePack()
> sp.makeCloud((-5,-5,-5),(5,5,5),rMean=0.05,rRelFuzz=.5,num=10000)
> sp.toSimulation()
>
> ### MATERIAL OF SPHERES AND WALLS
>
> O.materials[0].frictionAngle=atan(0.5)
> O.materials[0].poisson=.5
> O.materials[0].young=1e6
> O.materials[0].density=1000
>
> id_wall =
> O.materials.append(FrictMat(density=10000,young=1e11,poisson=.5,frictionAngle=atan(0.5),label="wallmat"))
> O.materials[id_wall]
>
> ### WALLS
>
>
> O.bodies.append(yade.geom.facetCylinder((0,0,-6),radius=1,height=2,segmentsNumber=20,wallMask=6))
>
> O.bodies.append(yade.geom.facetBox((0,0,0),(5,5,5)))
>
> # ENGINE
>
> O.engines=[
> ForceResetter(),
> InsertionSortCollider([Bo1_Sphere_Aabb(),Bo1_Facet_Aabb()]),
> InteractionLoop(
> [Ig2_Sphere_Sphere_ScGeom(),Ig2_Facet_Sphere_ScGeom()],
> [Ip2_FrictMat_FrictMat_FrictPhys()],
> [Law2_ScGeom_FrictPhys_CundallStrack()],
> ),
> NewtonIntegrator(damping=0.4,gravity=(0,0,-9.81)),
> # call the checkUnbalanced function (defined below) every 2 seconds
> ]
>
> O.dt=utils.PWaveTimeStep()
>
>
>
>
> --
> You received this question notification because you are a member of
> yade-users, which is an answer contact for Yade.
>
> _______________________________________________
> Mailing list: https://launchpad.net/~yade-users
> Post to : <email address hidden>
> Unsubscribe : https://launchpad.net/~yade-users
> More help : https://help.launchpad.net/ListHelp
>

Revision history for this message
José Mercado (josem-mercadoa) said :
#2

you understand! thanks for the answer, the idea is make a wall with a circular hole in the center but if i can't do it directly i will try some preprocessors, thanks!

Revision history for this message
José Mercado (josem-mercadoa) said :
#3

Thanks Jan Stránský, that solved my question.