problem in creating the contact law between two polyhedron blocks

Asked by alma

I want to test slide state between two rigid blocks. For this I tried to run the following simple code with Yade 2016.06a-24-0557faf~trusty and my code is:

from yade import plot, polyhedra_utils, utils
from yade import qt
from yade import pack, export
############################################################
#############################################################################
# Materials
matPol=CohFrictMat(
 young=1e9,
 poisson=0.25,
 frictionAngle=radians(30),
 isCohesive=True,
 normalCohesion=1e6,
 shearCohesion=1e6,
 alphaKr=1.8,
 alphaKtw=0,
 etaRoll=1.8,
 momentRotationLaw=True,
 density=2600,
 label='pol')

O.materials.append(matPol)
#############################################################################
O.dt=0.0001
#################### geometry #################################
t1=polyhedron([(3.0,3.0,0.881935),(3.0,3.0,0.0),(0.0,3.0,3.0),(0.0,3.0,0.0),(3.0,0.0,0.0),(0.0,0.0,0.0),(0.820037,3.0,3.0),(0.0,0.0,3.0),(1.01018,0.0,3.0),(3.0,0.0,1.06668)],wire=False,material='pol')
t2=polyhedron([(3.0,0.0,1.06668),(3.0,0.0,3.0),(1.01018,0.0,3.0),(3.0,3.0,3.0),(0.820037,3.0,3.0),(3.0,3.0,0.881935)],wire=False,material='pol')
O.bodies.append(t1)
O.bodies.append(t2)
##################### bottom surface ##################
O.bodies.append(utils.wall(0,axis=2,sense=1,material='pol'))

##################### this part should be verified #################

O.engines=[
   ForceResetter(),
   InsertionSortCollider([Bo1_Polyhedra_Aabb(),Bo1_Wall_Aabb()], verletDist=0.001),

################## this part seems to have a problem ##################
InteractionLoop([Ig2_Polyhedra_Polyhedra_PolyhedraGeom(),Ig2_Wall_Polyhedra_PolyhedraGeom()],
  [Ip2_CohFrictMat_CohFrictMat_CohFrictPhys(label="cohesiveIp")],
[Law2_ScGeom6D_CohFrictPhys_CohesionMoment(label="cohesiveLaw")]
###################################################################

   ),
   NewtonIntegrator(gravity=(0,0,-9.81),damping=0.5)
]

########################################################
from yade import qt
qt.Controller()
V = qt.View()

According to the code, I expect that the upper block slides on the bottom block by decreasing cohesion in contact face, but I got the following error:
Segmentation fault (core dumped)
I think the cohesion parameter isn't work correctly.Is this parameter defined in polyhedron materials? and as second question about this, how the contact law works between polyhedrons?

Question information

Language:
English Edit question
Status:
Answered
For:
Yade Edit question
Assignee:
No assignee Edit question
Last query:
Last reply:
Revision history for this message
Jérôme Duriez (jduriez) said :
#1

Hi,

Segmentation faults i.e. crash usually reveal much worse issues than how parameters "work". Most often, it means the simulation definition is flawed, leading YADE to handle operations that are impossible to perform / radically different than what the code is supposed to handle.

Here, all your interactions are of PolyhedraGeom type as for their geom. However, the only Law2 you include is supposed to handle ScGeom6D interaction geom types (see [*] if you wonder how I know this)
Hence the crash.... By the way, you probably had a corresponding message, it would be useful to provide it in your question if not to read it ;-)

Your problem is to find a consistent functors combination to perform polyhedrons YADE simulations. I do not know the answer to this question, but the functor names will greatly assist you in this task.

Jerome

[*] https://yade-dem.org/doc/user.html#base-engines

Revision history for this message
Jan Stránský (honzik) said :
#2

Hi Alma,
in your InteractionLoop, you don't have consistent Ig2, Ip2 and Law2. Your
Ig2 creates PolyhedraGeom, Ip2 CohFrictPhys, but in Yade there is no Law2
to combine these instances..
I am not sure if this is the reason of segmentation fault, but definitely
it is a reason for the simulation not to work..
cheers
Jan

Revision history for this message
alma (alma6748) said :
#3

Hi Mr Duriez,
Thanks for your answer, as I mentioned in code, I think the problem with "Interaction loop" part of simulation; and simulation runs correctly in simple friction state (without cohesion). I want to find that how can I define suitable interaction loop for both states of friction and cohesion in polyhedra materials? Or is there any similar example to this code?
Best regards,
Alma

Revision history for this message
alma (alma6748) said :
#4

Hi Mr Stransky,
Thanks for your attention,
>>>in your InteractionLoop, you don't have consistent Ig2, Ip2 and Law2. Your
Ig2 creates PolyhedraGeom, Ip2 CohFrictPhys, but in Yade there is no Law2
to combine these instances...

Your answer in correct and this is my problem which I mentioned that in code.
>>>I am not sure if this is the reason of segmentation fault, but definitely
it is a reason for the simulation not to work..
 I tried this code in friction state and the code worked correctly. I dont know defining "interaction loop specially Ip2 and Law2 functors" in both states of friction and cohesion in polyhedrons. Is there any specified function (like Law2_PolyhedraGeom_PolyhedraPhys_Volumetric) for that? Or is there any similar example to this code in Yade documentation?
Thanks a lot for your attention,
Alma

Revision history for this message
Jan Stránský (honzik) said :
#5

Hi Alma,
you can use Ig2_Polyhedra_Polyhedra_ScGeom [1], but it is in experimental
stage of implementation.. otherwise I know about no way how to achieve what
you want..
cheers
Jan

[1]
https://yade-dem.org/doc/yade.wrapper.html#yade.wrapper.Ig2_Polyhedra_Polyhedra_ScGeom

Revision history for this message
alma (alma6748) said :
#6

Hello Mr Stransky and Mr Duriez,
How can I model a medium with polyhedra with a given cohesion between them in addition to friction, by yade? It is not surprising that there are no examples on this type of problem.
For my simple script, how can I modify it to take into account in contact points simultaneously friction and cohesion (shear and normal cohesion). I don't want to convert all my polyhedra to sphere collection just in order to have cohesion between them.
Thank you very much by advance for your precious aids,
Alma

Revision history for this message
Jérôme Duriez (jduriez) said :
#7

Hi,

Polyhedra are clearly not the most used shape in DEM in general and YADE in particular, and they are included in YADE since October 2013, which is not so old, considering also the probably limited users number. Hence, it is indeed not surprising there is no example of this type of problem (but anyone is welcome is propose one)

The possibilities using polyhedras with YADE are reflected by the names of the existing Ig2 functors [1] and Law2 functors [2]. Outside of Jan's suggestion in #5, It is clear these possibilities are not endless since a very small minority include "PolyhedraGeom" in their names, with only one "Law2_PolyhedraGeom" which does not look like it suits your needs.

Since you don't want to convert all your polyhedra to sphere collection just in order to have cohesion between them, it is probable you will have to code yourself a cohesive polyhedra interaction model.

Good news: YADE is open-source !

Jerome

[1] https://yade-dem.org/doc/yade.wrapper.html#igeomfunctor
[2] https://yade-dem.org/doc/yade.wrapper.html#lawfunctor

Revision history for this message
Jan Stránský (honzik) said :
#8

Hi Alma,
in principle what you want is possible, but it needs some modifications,
namely:
- probably making each block a clump of a few polyhedrons
- using Ig2_Polyhedra_Polyhedra_PolyhedraGeomOrScGeom, allowing ScGeom for
cohesive bonds and PlyhedraGeom for broken contacts
I will try to create an example soon
cheers
Jan

2017-01-10 22:08 GMT+01:00 Jérôme Duriez <
<email address hidden>>:

> Question #434127 on Yade changed:
> https://answers.launchpad.net/yade/+question/434127
>
> Status: Open => Answered
>
> Jérôme Duriez proposed the following answer:
> Hi,
>
> Polyhedra are clearly not the most used shape in DEM in general and YADE
> in particular, and they are included in YADE since October 2013, which
> is not so old, considering also the probably limited users number.
> Hence, it is indeed not surprising there is no example of this type of
> problem (but anyone is welcome is propose one)
>
> The possibilities using polyhedras with YADE are reflected by the names
> of the existing Ig2 functors [1] and Law2 functors [2]. Outside of Jan's
> suggestion in #5, It is clear these possibilities are not endless since
> a very small minority include "PolyhedraGeom" in their names, with only
> one "Law2_PolyhedraGeom" which does not look like it suits your needs.
>
> Since you don't want to convert all your polyhedra to sphere collection
> just in order to have cohesion between them, it is probable you will
> have to code yourself a cohesive polyhedra interaction model.
>
> Good news: YADE is open-source !
>
> Jerome
>
> [1] https://yade-dem.org/doc/yade.wrapper.html#igeomfunctor
> [2] https://yade-dem.org/doc/yade.wrapper.html#lawfunctor
>
> --
> You received this question notification because your team yade-users 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
>

Can you help with this problem?

Provide an answer of your own, or ask alma for more information if necessary.

To post a message you must log in.