Use of i.phys.unp to get null forces initially

Asked by VG

Hello all,

Based on the discussion here: https://answers.launchpad.net/yade/+question/257058

I am using:
for i in O.interactions:
  i.phys.unp = i.geom.penetrationDepth

to nullify the initial contact forces and running it for one iteration. This is done so that the cohesive bonds between the particles do not break because of the initial geometrical overlaps.

1.) What exactly is unp - Is there any reference that I can look into.

2.) Also, I don't quite understand if there is any impact of above in subsequent iterations ? Does it lead to any inaccuracies ?

Thanks
Varun

Question information

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

Hi,
I just updated the doc but it is not visible in the online pages yet.
The normal force in the first equation of the documentation [1] will
look like this:
fn=max(kn*(un-unp),an)
Bruno

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

Revision history for this message
VG (varun-gupta) said :
#2

Hello Bruno,

Thanks for your response. That clears my first question.

For the second question, I meant to ask that for subsequent iterations, whether this value of unp stay as penetrationDepth or does it get reset to zero ?

Thanks

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

For compressive situations at the contact scale, the unp numeric value will stay the same as long as you do not change it a second time.

In particular, unp will stay equal to your initial penetrationDepth: the initial overlap. Obviously, the penetrationDepth variable itself is free to change during the simulation (because it needs to be, and is, updated every time step), but this will not reflect into unp...

unp might evolve without any user's action in situations related to tensile regime only (provided your simulation allows tensile loadings at the contact scale, and you're using fragile = false)

Revision history for this message
VG (varun-gupta) said :
#4

Thanks for your response, Jerome!

If I understood it correctly, in compressive situations, if I don't change the unp value a second time, the normal force would be given by kn*(un-penetrationDepth). So should unp be changed after few iterations, to get more accurate normal contact force between the spheres ?

I did not quite understand the last part:
"unp might evolve without any user's action in situations related to tensile regime only (provided your simulation allows tensile loadings at the contact scale, and you're using fragile = false)"

I am using cohesive law and as far as I know, by default fragile = True.

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

>So should unp be changed after few iterations, to get more accurate normal contact force

Certainly not. Why would it be "more accurate"?!

B

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

Regarding my remark about tensile regime, fragile is indeed True by default so there is no issue for you if you keep this default behavior.

(The choice setting fragile = false allows to simulate a plastic threshold---instead of a fragile failure..--- in the tensile regime: the normal force stays equal to the tensile strength while the interparticle distance keeps to increase, without the interaction fails.

For such behavior, updating unp is required for the Fn formula being consistent in case the interparticle distance subsequently decreases, which would be an elastic unloading)

Revision history for this message
VG (varun-gupta) said :
#7

Thanks Jerome, that makes sense.

@Bruno,
> Certainly not. Why would it be "more accurate"?!
Sorry for the confusion. What I meant was that if we don't change the value of unp back to zero, then the contact force would be offset by kn*unp even in the subsequent iterations.

I did some testing on a simple 2-sphere problem, to better understand the role of this parameter. Following are my take-away. Please correct me if I am wrong.

1. unp simply corresponds to the equilibrium distance between the two spheres, which by default is zero. Or in other words, by default the equilibrium distance between the centers of two spheres is r1 + r2, but it can be modified using this parameter unp.

2. During tensile contact, the penetrationDepth is negative and unp essentially means the same thing in tensile contact as it does in a compressive contact. So, in the third last post here: https://answers.launchpad.net/yade/+question/293295

it should be i.phys.unp = i.geom.penetrationDepth instead of i.phys.unp = 0 #to make the cohesive interaction initially force free even in the tensile regime.

Thanks
Varun

Revision history for this message
Chareyre (bruno-chareyre-9) said :
#8

> it should be i.phys.unp = i.geom.penetrationDepth instead of i.phys.unp
> = 0 #to make the cohesive interaction initially force free even in the
> tensile regime.

Oh, indeed, I typed it wrong in this other discussion.
Sorry if it has been misleading.
The original message it was linking was correct fortunately :)
Bruno

>

Revision history for this message
VG (varun-gupta) said :
#9

Thanks Bruno, I will also post a comment in the other post if someone else follows this.