sintered particles - interaction law

Asked by Rioual on 2019-12-09

Hello,

This question is the following of a previous question concerning sintered materials (https://answers.launchpad.net/yade/+question/236454).

I would like to apply an interaction law based on "Law2_ScGeom_FrictPhys_CundallStrack" between two sintered particles and add alsoa specific adhesion.
The reference state I want (no deformation, no stress) is a "sintered" state where the two particles are already interpenetrating.
How do I define this mechanical reference state in the code ??

Thanks for your answer,

Fr.

Question information

Language:
English Edit question
Status:
Solved
For:
Yade Edit question
Assignee:
No assignee Edit question
Solved by:
Jérôme Duriez
Solved:
2019-12-17
Last query:
2019-12-17
Last reply:
2019-12-17
Robert Caulk (rcaulk) said : #1

Hello,

>add alsoa specific adhesion

Law2_ScGeom_FrictPhys_CundallStrack [1] does not have the capacity for adhesion:

"Law for linear compression, and Mohr-Coulomb plasticity surface without cohesion."

If you want adhesion, use CohFrictPhys [2] and follow the solution suggested by Comment #1 from the thread you reference [3]:

"i.phys.unp = i.geom.un #plastic disp = current disp, i.e. the elastic deformation is null, fn=0"

Cheers,

Robert

[1]https://yade-dem.org/doc/yade.wrapper.html#yade.wrapper.Law2_ScGeom_FrictPhys_CundallStrack
[2]https://yade-dem.org/doc/yade.wrapper.html#yade.wrapper.Law2_ScGeom6D_CohFrictPhys_CohesionMoment
[3]https://answers.launchpad.net/yade/+question/236454

Jérôme Duriez (jduriez) said : #2

Hi,

> How do I define this mechanical reference state in the code ??

Exactly with #1 of mentioned https://answers.launchpad.net/yade/+question/236454.

It may just require to freeze (for b in O.bodies: b.dynamic = False) then unfreeze your sample to avoid the consequences of this "chronological offset" I mentioned in #3 of that link.

As you may have understood, it requires leaving Law2_ScGeom_FrictPhys_CundallStrack and using Law2_ScGeom6D_CohFrictPhys_CohesionMoment (which furthermore includes adhesion !)

Rioual (francois-rioual-v) said : #3

                                                               Hello,

Thank you for these clarifications about the reference state.
I would like also to implement indeed a specific adhesion law adapted to sintering (viscous in my case).
So, as far I understood, it is advised to add this new adhesion contact law to an existing law
 as "Law2_ScGeom_FrictPhys_CundallStrack" ??

All the best,

Fr.

Jérôme Duriez (jduriez) said : #4

Since we both reminded that Law2_ScGeom_FrictPhys_CundallStrack does not include adhesion, unlike Law2_ScGeom6D_CohFrictPhys_CohesionMoment, I would say it's time you forget about the former and look more into the latter..

Note that, maybe, you could just able modify according to time the contact properties used by Law2_ScGeom6D_CohFrictPhys_CohesionMoment to introduce some "viscous sintering", instead of starting a new constitutive law...

Rioual (francois-rioual-v) said : #5

Hello Jerome,

Thank you for your feedback...
In my case, my adhesion force is an expression depending on the width
 of the bridge between the two sintered particles (and surface tension);
so I guess I have to implement it explicitely...and try to copy the way it has been
 done for Law2_ScGeom6D_CohFrictPhys_CohesionMoment and introduce a new
 adhesion interaction in option in this well known cohesive law. That's the good
strategy ??

All the best,

Fr.

Hi,

> a specific adhesion law adapted to sintering (viscous in my case).

There is a confusion between adhesion and traction going on here.
Adhesion is (in yade at least) a strength, i.e. an upper bound for the contact force. If there is a viscous term then it probably is a term in the actual force, not a term in the upper bound.

Making adhesion a function of whatever you like is really not a problem, nothing to implement. Making actual force a function of something is another story.

In other words, if you don't disclose the governing equations in full it is impossible to tell if/how current framework makes it possible, or if it needs an extension.

Bruno

Rioual (francois-rioual-v) said : #7

Hi Bruno,

Let me precise what I mean because it's not clear indeed and has apparently no link
with the "yade" definition of adhesion...
I mean an attractive interaction force between the two sintered particles: the sintering force.
This force can be expressed as a polynomial function of the "neck" radius with a coefficient that scales
 with surface tension coefficient (Wakai et al, Acta Materialia, 109, 292-299 (2016))....

regards,

Francois

> an attractive interaction force between the two sintered particles

Exactly, and consequently it has nothing to do (almost) with the contact model.
You could keep the contact model unchanged and add pairwise forces independently.
But again, it's hard to discuss it without the equations.

Bruno

Rioual (francois-rioual-v) said : #9

Hi Bruno,

The sintering force Fs in the early stage of the process (0,1< c/r0 < 0,7 can be expressed as a parabolic function of the contact radius:

                                                                       Fs = Gammas*r0* [ a1*(c/r0)^2 + a2*(c/r0) + a3 ]

Gammas : surface tension coefficient
a1, a2, a3 : numerical constants
c : radius of the contact between the two sintered particles
r0 : radius of the particles (same radius for both particles)

This is the force i want to implement..

Best,

Fr.

Jérôme Duriez (jduriez) said : #10

This then seems to be a constant force, that is untouched by relative displacements. Not really in the spirit of a contact law that gives variable contact forces depending on relative displacements.

As said by Bruno, why not just applying this force directly to all particles in sintered pairs ?

From Python (would be faster from C++):
O.forces.addF(i.id1,yourFsPayingAttentionToSignAndAttractiveNature)
O.forces.addF(i.id2,-yourFsPayingAttentionToSignAndAttractiveNature)

i in the above would be an interaction corresponding to a pair of sintered particles. Further reflexion may be needed to know how obtaining i:
- use the interactions resulting from InteractionLoop() in O.engines if these sintered pairs correspond to interactions handled by the otherwise present contact laws
- something else ?

Relevant links may be https://yade-dem.org/doc/user.html#creating-interactions and https://yade-dem.org/doc/yade.wrapper.html?highlight=nevererase#yade.wrapper.Law2_ScGeom6D_CohFrictPhys_CohesionMoment.neverErase

Rioual (francois-rioual-v) said : #11

Hello Jerome,

Thanks for the feedback.
If I understand correctly,

1- I impose
"i.phys.unp = i.geom.un #plastic disp = current disp, i.e. the elastic deformation is null, fn=0"
for each contact of sintered particles, after a first stage of interpenetration at the desired
amount with contact law "CohFrictPhys"

2- at the same time, for the contact between the two sintered particles considered, I change the
contact law to as basic FrictPhys_CundallStrack and I apply the new sintering force described
above with O.forces.addF.

Do you agree with that ??

Best,

Fr.

Best Jérôme Duriez (jduriez) said : #12

Not really.. :-)

The use of phys.unp for your objective #1 requires interaction physics of CohFrictPhys type (and an adequate contact law, such as Law2_ScGeom6D_CohFrictPhys_CohesionMoment)

Then, do not waste your efforts towards objective #1 trying to fulfill objective #2 (mixing these two objectives at the same time does not help understanding / discussion)..
In what you described in the above, introducing in a second step Law2_ScGeom_FrictPhys_CundallStrack would prevent you enjoying CohFrictPhys.unp

See https://yade-dem.org/doc/user.html#functors-choice (Ip2 and Law2 § in particular)

Rioual (francois-rioual-v) said : #13

Thanks Jérôme Duriez, that solved my question.