Cohesive model description in Yade

Asked by Alexander

Hello, everybody.

I try to do some test using Law2_ScGeom_CpmPhys_Cpm and Law2_ScGeom6D_CohFrictPhys_CohesionMoment. Can anyone recommend me some literature where cohesive contacts for these laws describes in detailes. I mean for example: how cohesion forse depends on destination between particles, formulas for cohesion and non-cohesion forces , when cohesion bond breaks etc.? Because for example in (Václav Šmilauer 2010) i understood only non-cohesive contacts because they are described well in 1. Discrete Element Method chapter. I need something like ("A bonded-particle model for rock"
D.O. Potyondya, P.A. Cundall http://mech.spbstu.ru/images/b/bd/Potyondy_Cundall_2004_A_bonded-particle_model_for_rock.pdf)

Question information

Language:
English Edit question
Status:
Solved
For:
Yade Edit question
Assignee:
No assignee Edit question
Solved by:
Alexander
Solved:
Last query:
Last reply:
Revision history for this message
Alexander (karavaev-alexander) said :
#1

with best regards, Alexander

Revision history for this message
Alexander (karavaev-alexander) said :
#2

with best regards, Alexander

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

Hi Alexander,
Arguably, the documentation of Law2_ScGeom6D_CohFrictPhys_CohesionMoment is short (did you read it [1]) but it actually answers your questions.

>how cohesion forse depends on destination [distance?] between particles

Exactly like in the non-cohesive model, linearly.

>formulas for cohesion and non-cohesion forces

there is no such distinction. There is a contact force, bounded by values computed based on friction and/or cohesion parameters. The details are in the doc.

>when cohesion bond breaks

It breaks when contact force exceeds the bounds mentionned above, by definition.

You may check Bourrier2013 where some more equations are given.
Regards
Bruno

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

Revision history for this message
Alexander (karavaev-alexander) said :
#4

Hi Bruno, thanks for your response.

I read [1], but some things are unclear yet. First lets consider just normal contact.

So am'i right in the following considerations:

1) As i understand to compute new position of particle we need to know the result force. The formula for normal force is following F_n=min(k_n*u_n, a_n).

2) So if u_n < 0 then non-cohesion contact is active, and the vector of force is directed from the particle (F = k_n*u_n < 0, k_n - normal stiffness coeff.)

3) if u_n > 0 then cohesion contact is active and the vector of force is directed toward the particle (F = k_n*u_n > 0). Also the parameter a_n shows the maximum cohesion force which could be exists between particles. if F = k_n*u_n > a_n then the cohesive bound breaks (a_n set to zero) and only non-cohesive contact left.

4) Modulus of cohesive force grows if particles moving away, and modulus of non-cohesive force grows if particles coming closer.

4) The cohesive bounds are created only at the beginning of the simulation and Yade understands which particles are connected via interaction_radius parameter.

5) New cohesive bounds don't appear during simulation if one doesn't do it specially.

with regards, Alexander

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

Yes you are right. We use rather different semantic and that's why the doc is confusing for you probably.
I never speak of cohesive force vs. non-cohesive force. For me there is just a contact force.
A cohesive contact remains cohesive be it in traction or compression. "Cohesive" just means F_n=min(k_n*u_n, a_n) with a_n not zero. This definition holds whatever the sign of u_n.

Revision history for this message
Alexander (karavaev-alexander) said :
#6

thank's for response Bruno.

So let's use your semantic. Is it correct that by default Yade creates cohesive contacts (a_n > 0) only at the beginning (first step) of the simulation? For example to create cohesive links between particles i set "interaction_radius = 1.5" then make one step O.step() then set back "interaction_radius = 1" and make the remaining steps O.run(1000). And in the loop O.run(1000) new contacts will appear only with a_n = 0. The same situation is for shear force.

with regards, Alexander

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

Hi Alexander,
concerning Law2_ScGeom_CpmPhys_Cpm, there is nothing better than (Václav
Šmilauer 2010)
cheers
Jan

2015-09-04 20:11 GMT+02:00 Alexander <email address hidden>:

> Question #271097 on Yade changed:
> https://answers.launchpad.net/yade/+question/271097
>
> Alexander gave more information on the question:
> with best regards, Alexander
>
> --
> 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
>

Revision history for this message
Alexander (karavaev-alexander) said :
#8

Thank's for response Yan.

I already tried to read (Václav Šmilauer 2010) but the whole process unclear to me yet. So i try to repeat it once again for u because i think main steps in CohFricMat and CmpMat are the same.

So am i right in the following statements:

1) There are 2 types of contacts in Yade: cohesive and non-cohesive (frictional).

2) Non-cohesive contacts appears every time when 2 spheres overlap each other.

3) By default Yade creates cohesive contacts only at the beginning (first step) of the simulation

4) At each step InsertionSortCollider and Ig2_Sphere_Sphere_ScGeom classes defines only new contacts (interactions), previous contacts update themselves (for example non-cohesive interaction brokes when they became apart, cohesive interaction in CohFricMat brokes when maximum tensile or maximum shear force is reached etc.).

with regards Alexander

Revision history for this message
Alexander (karavaev-alexander) said :
#9

The 4) question is very important for me to understand. Because for example at the first step i want to create cohesive contacts with "interaction_radius = 1.5" and then set it back to "1", to make process more real physically for remaining steps.

with regards Alexander

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

Hi Alexander,

1) There are 2 types of contacts in Yade: cohesive and non-cohesive
> (frictional).

this is a bit subjective (see Bruno's answer), but one classification could
be like that. I.e.:
- cohesive contacts exist even for negative penetrationDepth ("tension")
- non-cohesive contacts are deleted in "tension" case

Non-cohesive contacts appears every time when 2 spheres overlap each other.

Not necessarily. If you do not define Ig2_Sphere_Sphere or if the 2 spheres
have incompatible groupMask, they would not interact. But **usually** it is
like you described

3) By default Yade creates cohesive contacts only at the beginning (first
> step) of the simulation

I know only CPM well enough, in that case by default it does not create any
cohesive contact. I **guess** it is the same for other materials/laws (or
at least I would expect and implement it in that way)..

4) At each step InsertionSortCollider and Ig2_Sphere_Sphere_ScGeom
> classes defines only new contacts (interactions), previous contacts
> update themselves (for example non-cohesive interaction brokes when they
> became apart, cohesive interaction in CohFricMat brokes when maximum
> tensile or maximum shear force is reached etc.).

Basically yes, two points:
- Ig2 is called also for existing interactions (updating ScGeom parameters)
- "contacts update themselves". Contacts does not update themselves, but
they are updated by Ig2 and Law2 functors

cheers
Jan

Revision history for this message
Alexander (karavaev-alexander) said :
#11

Jan, thank a lot for response.

So the 3 statement is unclear for me yet:

1) how Yade knows what type of contact should be created?:

2) Does Yade create cohesive contact every time when 2 particles meet or not?

3) If it creates cohesive contact every time, why for exmple in CohFricMat there are functions:

- Ip2_CohFrictMat_CohFrictMat_CohFrictPhys::setCohesionNow(=false)
   If true, assign cohesion to all existing contacts in current time-step. The flag is turned false automatically, so that
   assignment is done in the current timestep only.

- CohFrictPhys::initCohesion(=false)
   Initialize the cohesive behaviour with current state as equilibrium state (same as
   Ip2_CohFrictMat_CohFrictMat_CohFrictPhys::setCohesionNow but acting on only one interaction)

- setCohesionOnNewContacts(=false)
   If true, assign cohesion at all new contacts. If false, only existing contacts can be cohesive (also see
   Ip2_CohFrictMat_CohFrictMat_CohFrictPhys::setCohesionNow), and new contacts are only frictional.

So i think that in this case i decided myself when new contacts are created and the most important thing that setCohesionNow and initCohesion acts only one iteration. Am i right?

4) Does something like that exist in CpmMat? Because when i used CpmMat in my program i don't set similar parameters, just "neverDamage = true"

with regards, Alexander

Revision history for this message
Alexander (karavaev-alexander) said :
#12

Oh about 4) i think it's "sigmaT" parameter. But still what is the mechanism of cohesive contacts in CpmMat. Are they created at each step or just once?

with regars, Alexander

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

Hi Alexander,

1) how Yade knows what type of contact should be created?

According to defined functors in InteractionLoop, see [1,2]

2) Does Yade create cohesive contact every time when 2 particles meet or
> not?

It depends on used Ip2 and Law2. So the answer is No, it does not
create cohesive contact every time when 2 particles meet

3) If it creates cohesive contact every time...

exactly because of it does not create cohesive contacts every time, only
when asked (as you mentioned yourself).

4) Does something like that exist in CpmMat? Because when i used CpmMat in
> my program i don't set similar parameters, just "neverDamage = true"

But still what is the mechanism of cohesive contacts in CpmMat. Are they
> created at each step or just once?

In Cpm there is Ip2_CpmMat_CpmMat_CpmPhys.cohesiveThresholdIter [3]. If a
contact is created and O.iter <= cohesiveThresholdIter, the contact is
cohesive. It is non-cohesive otherwise

cheers
Jan

[1] https://yade-dem.org/doc/user.html#functors-choice
[2] https://yade-dem.org/doc/introduction.html#dispatchers-and-functors
[3]
https://yade-dem.org/doc/yade.wrapper.html#yade.wrapper.Ip2_CpmMat_CpmMat_CpmPhys.cohesiveThresholdIter

Revision history for this message
Alexander (karavaev-alexander) said :
#14

Hi Jan, thank's a lot for such response.

with regards, Alexander