Geometry law between a sphere and a wall for the cohesive frictional law

Asked by Tijan

I'm not a very experienced Yade user and I'm trying to construct a simulation of an oedometric test. I'm using the cohesive frictional law in order to model cohesion between the particles in the simulation. The limiting walls have been constructed using the facetBox tool:

O.bodies.append(geom.facetBox(box_dimensions/2,box_dimensions/2,wallMask=31))

and the moving plate by the wall tool:

top_label = O.bodies.append(facet([np.array([0,0,voxelSize*scale*grains.shape[0]]),
                                   np.array([voxelSize*scale*grains.shape[2]/2,0,voxelSize*scale*grains.shape[0]]),
                                   np.array([0,voxelSize*scale*grains.shape[1]/2,voxelSize*scale*grains.shape[0]])],wire=False))

as suggested by the oedometric example(https://yade-dem.org/doc/tutorial-examples.html). My code is rather long and since I believe it's not relevant for my question, I'm only pasting the crutial parts.

My question is - since I'm using the the Law2_ScGeom6D_CohFrictPhys interaction law:

myIgeoms = [yade.Ig2_Sphere_Sphere_ScGeom6D(),yade.Ig2_Facet_Sphere_ScGeom6D()]
myIphyss = [yade.Ip2_CohFrictMat_CohFrictMat_CohFrictPhys(setCohesionNow=True)]
myLaw2s = [yade.Law2_ScGeom6D_CohFrictPhys_CohesionMoment(useIncrementalForm=True,
                                                            always_use_moment_law=False)]

which geometry law should I use for the interaction between the wall and the spheres? Moreover - is the wall an appropriate choice for constructing the moving plate? Would a facet be a better choice?

Any help will be greatly appreciated.

Tijan

Question information

Language:
English Edit question
Status:
Solved
For:
Yade Edit question
Assignee:
No assignee Edit question
Solved by:
Bruno Chareyre
Solved:
Last query:
Last reply:
Revision history for this message
Bruno Chareyre (bruno-chareyre) said :
#1

Hi,
Your question is about walls but your script introduces facets.
Could you clarify the question?

Revision history for this message
Tijan (tijan-mede) said :
#2

I'm sorry for the confusion, I pasted the wrong piece of code. For constructing the moving plate, I used:

top_label = O.bodies.append(wall(np.array([voxelSize*scale*grains.shape[2]/2,
                                                                                      voxelSize*scale*grains.shape[1]/2,
                                                                                      voxelSize*scale*grains.shape[0]]),axis=2,sense=0))

Revision history for this message
Best Bruno Chareyre (bruno-chareyre) said :
#3

Ok.
So, first of all, I think Walls are not very commonly used and not all families of functors may handle them.
namely, ScGeom6D does not support walls, as you certainly found out.

The more realistic choice is between Facet and Box (a Box with 0-thickness in one direction is a plane/wall, right? ), and they should give exactly the same result in principle. Hence the choice:
Ig2_Box_Sphere_ScGeom6D
or
Ig2_Facet_Sphere_ScGeom6D

I personally implemented the "6D" functors hence I can tell the Box variant was more seriously tested (by me), but hopefully both ways are ok.

Bruno

Revision history for this message
Tijan (tijan-mede) said :
#4

Thanks Bruno Chareyre, that solved my question.