← Back to team overview

yade-dev team mailing list archive

[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);