yade-dev team mailing list archive
-
yade-dev team
-
Mailing list archive
-
Message #10431
[Branch ~yade-pkg/yade/git-trunk] Rev 3808: Add Lambert formulation into capillary models.
------------------------------------------------------------
revno: 3808
committer: Anton Gladky <gladky.anton@xxxxxxxxx>
timestamp: Wed 2014-01-29 17:26:55 +0100
message:
Add Lambert formulation into capillary models.
modified:
doc/references.bib
pkg/dem/ViscoelasticCapillarPM.cpp
pkg/dem/ViscoelasticPM.hpp
--
lp:yade
https://code.launchpad.net/~yade-pkg/yade/git-trunk
Your team Yade developers is subscribed to branch lp:yade.
To unsubscribe from this branch go to https://code.launchpad.net/~yade-pkg/yade/git-trunk/+edit-subscription
=== modified file 'doc/references.bib'
--- doc/references.bib 2014-01-07 15:41:53 +0000
+++ doc/references.bib 2014-01-29 16:26:55 +0000
@@ -656,3 +656,14 @@
pages={465-469},
language={English}
}
+
+@article{Lambert2008,
+ title={Comparison between two capillary forces models},
+ author={Lambert, Pierre and Chau, Alexandre and Delchambre, Alain and R{\'e}gnier, St{\'e}phane},
+ journal={Langmuir},
+ volume={24},
+ number={7},
+ pages={3157--3163},
+ year={2008},
+ publisher={ACS Publications}
+}
=== modified file 'pkg/dem/ViscoelasticCapillarPM.cpp'
--- pkg/dem/ViscoelasticCapillarPM.cpp 2013-08-28 12:00:42 +0000
+++ pkg/dem/ViscoelasticCapillarPM.cpp 2014-01-29 16:26:55 +0000
@@ -106,27 +106,36 @@
Real f_star = cos(phys.theta)/(1 + 2.1*sPl + 10.0 * pow(sPl, 2.0)); // [Willett2000], equation (12)
fC = f_star * (2*M_PI*R*Gamma); // [Willett2000], equation (13), against F
- } else if (phys.CapillarType == "Rabinovich") {
- /* Capillar model from Rabinovich [Rabinov2005]
+ } else if ((phys.CapillarType == "Rabinovich") or (phys.CapillarType == "Lambert")) {
+ /*
+ * Capillar model from Rabinovich [Rabinov2005]
+ *
+ * This formulation from Rabinovich has been later verified and corrected
+ * by Lambert [Lambert2008]. So we can calculate both formulations
+ *
*/
-
+
Real R = phys.R;
Real Gamma = phys.gamma;
Real H = -geom.penetrationDepth;
Real V = phys.Vb;
- Real alpha = 0.0;
Real dsp = 0.0;
if (H!=0.0) {
- alpha = sqrt(H/R*(-1+ sqrt(1 + 2.0*V/(M_PI*R*H*H)))); // [Rabinov2005], equation (A3)
-
- dsp = H/2.0*(-1.0 + sqrt(1.0 + 2.0*V/(M_PI*R*H*H))); // [Rabinov2005], equation (20)
-
- fC = -(2*M_PI*R*Gamma*cos(phys.theta))/(1+(H/(2*dsp))) -
- 2*M_PI*R*Gamma*sin(alpha)*sin(phys.theta + alpha); // [Rabinov2005], equation (19)
+ dsp = H/2.0*(-1.0 + sqrt(1.0 + 2.0*V/(M_PI*R*H*H))); // [Rabinov2005], equation (20)
+ fC = -(2*M_PI*R*Gamma*cos(phys.theta))/(1+(H/(2*dsp))); // [Lambert2008], equation (65), taken from [Rabinov2005]
+
+ if (phys.CapillarType == "Rabinovich") {
+ const Real alpha = sqrt(H/R*(-1+ sqrt(1 + 2.0*V/(M_PI*R*H*H)))); // [Rabinov2005], equation (A3)
+ fC -= 2*M_PI*R*Gamma*sin(alpha)*sin(phys.theta + alpha); // [Rabinov2005], equation (19)
+ }
} else {
- fC = -(2*M_PI*R*Gamma*cos(phys.theta)) -
- 2*M_PI*R*Gamma*sin(alpha)*sin(phys.theta + alpha); // [Rabinov2005], equation (19)
+
+ fC = -(2*M_PI*R*Gamma*cos(phys.theta));
+ if (phys.CapillarType == "Rabinovich") {
+ const Real alpha = 0.0;
+ fC -= 2*M_PI*R*Gamma*sin(alpha)*sin(phys.theta + alpha); // [Rabinov2005], equation (19)
+ }
}
fC *=-1;
=== modified file 'pkg/dem/ViscoelasticPM.hpp'
--- pkg/dem/ViscoelasticPM.hpp 2014-01-09 07:12:14 +0000
+++ pkg/dem/ViscoelasticPM.hpp 2014-01-29 16:26:55 +0000
@@ -29,7 +29,7 @@
((Real,Vb,NaN,,"Liquid bridge volume [m^3]"))
((Real,gamma,NaN,,"Surface tension [N/m]"))
((Real,theta,NaN,,"Contact angle [°]"))
- ((std::string,CapillarType,"",,"Different types of capillar interaction: Willett_numeric, Willett_analytic [Willett2000]_ , Weigert [Weigert1999]_ , Rabinovich [Rabinov2005]_ ")),
+ ((std::string,CapillarType,"",,"Different types of capillar interaction: Willett_numeric, Willett_analytic [Willett2000]_ , Weigert [Weigert1999]_ , Rabinovich [Rabinov2005]_ , Lambert (simplified, corrected Rabinovich model) [Lambert2008]_ ")),
createIndex();
);
REGISTER_CLASS_INDEX(ViscElMat,FrictMat);