Issues with implementation of Law2_ScGeom_CapillaryPhys_Capillarity

Asked by Giovanni Lorenzon

Hello everybody,

I'm trying to add to my simulation the Law2_ScGeom_CapillaryPhys_Capillarity engine, but I am facing some problems with the tuning of some parameters.
From the wiki page about the capillary force model [1], I read about the set of 10 files to be generated in order to make the engine work. When analysing the given matlab scripts to generate them, I wasn't able to fully understand one of the adjustable parameters, that is to say the so-called "rRatioVec". Does it represent the ratio between the curvature radii? Is its lenght (i.e. 10, corresponding to the number of generated files) adjustable? Should I tune the ratio values following my own simulation conditions? (e.g. considering my own value of contact angle?)
Moreover, I couldn't understand why in the given example of a YADE script implementing the capillary force [2], the capillary pressure is set to 10k through the following command:

***
O.engines=[Law2_ScGeom_CapillaryPhys_Capillarity(capillaryPressure=10000)]
***

Isn't the capillary pressure value discretized and changed through the Young-Laplace equation solution scripts? I can't understand the reason why it should be fixed, since during the liquid bridge strecthing its value should change, shouldn't it?

I hope I made myself clear, thank you very much with any possible help!

Cheers,

Giovanni Lorenzon

[1] https://www.yade-dem.org/wiki/CapillaryTriaxialTest
[2] https://github.com/yade/trunk/blob/master/examples/capillaryLaplaceYoung/CapillaryPhys-example.py

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,

I'm sorry if these MATLAB scripts added some confusion...

0. You do not need to consider these MATLAB scripts if you're happy with the set of capillary files (considering a 0 wetting angle, for instance) that are provided on the wiki.
Just download these files, and you can perform YADE simulations using Law2_ScGeom_CapillaryPhys_Capillarity

Is there something which made you think something else ?

1. In the MATLAB scripts, rRatioVec is a list (vector) of particle radii ratio "r", where r = R2 / R1 with R1, R2 being the two radii of a given pair of particles (between which the capillary bridge is computed)

The length and components of rRatioVec are fully adjustable, but you would then need to adjust the source code of Law2_ScGeom_CapillaryPhys_Capillarity [1] as well, because you would have another set of capillary files that Law2_ScGeom_CapillaryPhys_Capillarity is reading at startup.

2. If you wanna tune the contact angle, you have to play with "theta" [2] in the MATLAB scripts, generate yourself a new set of capillary files, and be sure Law2_ScGeom_CapillaryPhys_Capillarity will read them (see above).

3. As for the capillary pressure, the latter is actually supposed to be constant during YADE simulations (and the bridge volume is changing during stretching). We consider our simulations to be at uniform (and constant, unless you manually change it) capillary pressure, this is an assumption.

There is some discretization of the capillary pressure generating the capillary files (you indeed have many different capillary pressure values in the capillary files), but this plays no role during the actual YADE simulation.

Jerome

[1] https://github.com/yade/trunk/blob/master/pkg/dem/Law2_ScGeom_CapillaryPhys_Capillarity.cpp#L25 to L34
[2] https://github.com/yade/trunk/blob/master/examples/capillaryLaplaceYoung/writesCapFile.m#L16

Revision history for this message
Giovanni Lorenzon (gioloren) said :
#2

Hi Jerome,

thank you so much for your answer, you perfectly explained everything.
Proceeding with order:

0. Unfortunately, I'll be needing a contact angle value different from zero, that's the reason why I went through the MATLAB scripts (which by the way, aren't confusing at all!).

1. Thanks for making that clear. So, given the fact that I'll be dealing with particles with a narrow PSD, would you recommend to adjust the rRatioVec entries? (Modifying the source code accordingly, of course)

2. Sure, I'll modify that value for my purposes.

3. Okay, now I got it straight. But then again, what is the purpose of assigning "nValUc" [1] a value so high if I'll be using a single capillary pressure throughout my entire YADE simulation eventually? Or was it simply designed as to define a comprehensive lookup table (given a single contact angle) to be used with several user-set capillary pressures?

4. Are there some limits in the capillary pressure values to be assigned to the engine? I mean, limits given by the MATLAB scripts that may possibly be modified.

Thanks again for your kindness.
Cheers,

Giovanni Lorenzon

[1] https://github.com/yade/trunk/blob/master/examples/capillaryLaplaceYoung/writesCapFile.m#L20

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

>Isn't the capillary pressure value discretized and changed through the Young-Laplace equation solution scripts?

It can change in time indeed if what you decide is that volume of the bridge is a constant (a possible assumption).
By default it is the opposite assumption (constant pressure, changing volume), but it is just a default.
Pressure(/volume) does not have to be homogeneous in space either, but this is a bit more involved.
Cheers
Bruno

Revision history for this message
Giovanni Lorenzon (gioloren) said :
#4

Hello Bruno,

thank you very much for your answer, I just hadn't figure out the exact model structure yet.

I would like to ask just one last thing: to which parameter(s) should I refer in order to properly estimate a simulation value of the capillary pressure?

Thanks for your availability!

Cheers,

Giovanni Lorenzon

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

The normalized capillary pressure Pc*D/σ (D: particle size, σ surface tension) is approximately 10 at air entry [1]. It suggests a lower bound which you can use as a reference value to scale pressure wrt. particle size and surface tension.
Not sure this is what you are asking though.
Bruno

[1] https://www.sciencedirect.com/science/article/pii/S0045782516307216

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

Regarding your questions in post #2:

1.
For a narrow psd I guess rRatioVec includes enough values close to 1 to have "good" results, but I never really looked into this.
If you wish, you have MATLAB files in #4 of https://bugs.launchpad.net/yade/+bug/1440887 that could help you dig into the capillary files data (plotting them) and check how critical a change in rRatio is.

3.
It is exactly "to define a comprehensive lookup table [..] to be used with several user-set capillary pressures"

4.
You may consider there is a limit through the maximum capillary pressure which appears in the capillary files. This maximum value (in the normalized fashion) is automatically computed by the MATLAB scripts in "Preliminary C" [*]

If you would impose an even greater value in Law2_ScGeom_CapillaryPhys_Capillarity during your YADE simulations, including Law2_ScGeom_CapillaryPhys_Capillarity would go unnoticed : no capillary bridges would be computed because you're outside the bounds of the lookup table.
You would get a corresponding warning message in your YADE terminal during simulation.

This corresponds neglecting so tiny bridges we may consider this is not a problem (even though this may not be true because capillary force has a non zero limit value when the bridge volume tends to zero)

Regarding your question in #4, the value of Law2_ScGeom_CapillaryPhys_Capillarity.capillaryPressure also has to ensure a pendular regime with distinct bridges.
You may check whether bridges are distinct or overlap with Law2_ScGeom_CapillaryPhys_Capillarity.fusionDetection and CapillaryPhys.fusionNumber

[*] https://github.com/yade/trunk/blob/master/examples/capillaryLaplaceYoung/writesCapFile.m#L84

Revision history for this message
Giovanni Lorenzon (gioloren) said :
#7

Dear Jérôme and Bruno,

thank you so much for your answers: you unraveled all the thorny issues I had with the engine.

With best regards,

Giovanni Lorenzon

Can you help with this problem?

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

To post a message you must log in.