← Back to team overview

yade-dev team mailing list archive

[Branch ~yade-pkg/yade/git-trunk] Rev 3916: Add an opportunity to change liquid volume during simulation.

 

------------------------------------------------------------
revno: 3916
committer: Anton Gladky <gladky.anton@xxxxxxxxx>
timestamp: Sat 2014-04-12 16:12:48 +0200
message:
  Add an opportunity to change liquid volume during simulation.
modified:
  pkg/dem/ViscoelasticCapillarPM.cpp
  pkg/dem/ViscoelasticCapillarPM.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 'pkg/dem/ViscoelasticCapillarPM.cpp'
--- pkg/dem/ViscoelasticCapillarPM.cpp	2014-04-10 13:39:23 +0000
+++ pkg/dem/ViscoelasticCapillarPM.cpp	2014-04-12 14:12:48 +0000
@@ -80,7 +80,7 @@
    * after that the liquid bridge will be broken.
    */ 
    
-  if (not(phys.liqBridgeCreated) and phys.Capillar) {
+  if (not(phys.liqBridgeCreated) and phys.Capillar and geom.penetrationDepth>=0) {
     phys.liqBridgeCreated = true;
     Sphere* s1=dynamic_cast<Sphere*>(bodies[id1]->shape.get());
     Sphere* s2=dynamic_cast<Sphere*>(bodies[id2]->shape.get());
@@ -91,13 +91,10 @@
     } else {
       phys.R = s2->radius;
     }
-    
-    const Real Vstar = phys.Vb/(phys.R*phys.R*phys.R);
-    const Real Sstar = (1+0.5*phys.theta)*(pow(Vstar,1/3.0) + 0.1*pow(Vstar,2.0/3.0));   // [Willett2000], equation (15), use the full-length e.g 2*Sc
-    
-    phys.sCrit = Sstar*phys.R;
   }
   
+  phys.sCrit = this->critDist(phys.Vb, phys.R, phys.theta);
+  
   if (geom.penetrationDepth<0) {
     if (phys.liqBridgeCreated and -geom.penetrationDepth<phys.sCrit and phys.Capillar) {
       phys.normalForce = -phys.CapFunct(geom, phys)*geom.normal;
@@ -126,6 +123,13 @@
   }
 }
 
+Real Law2_ScGeom_ViscElCapPhys_Basic::critDist(const Real& Vb, const Real& R, const Real& Theta) {
+  const Real Vstar = Vb/(R*R*R);
+  const Real Sstar = (1+0.5*Theta)*(pow(Vstar,1/3.0) + 0.1*pow(Vstar,2.0/3.0));   // [Willett2000], equation (15), use the full-length e.g 2*Sc
+  const Real critDist = Sstar*R;
+  return critDist;
+}
+
 //=========================================================================================
 //======================Capillary bridge models============================================
 //=========================================================================================

=== modified file 'pkg/dem/ViscoelasticCapillarPM.hpp'
--- pkg/dem/ViscoelasticCapillarPM.hpp	2014-04-10 13:39:23 +0000
+++ pkg/dem/ViscoelasticCapillarPM.hpp	2014-04-12 14:12:48 +0000
@@ -59,6 +59,7 @@
 		static Real Lambert_f             (const ScGeom& geom, ViscElCapPhys& phys);
 		static Real Soulie_f              (const ScGeom& geom, ViscElCapPhys& phys);
 		static Real None_f                (const ScGeom& geom, ViscElCapPhys& phys);
+		Real critDist(const Real& Vb, const Real& R, const Real& Theta);
 	FUNCTOR2D(ScGeom,ViscElCapPhys);
 	YADE_CLASS_BASE_DOC(Law2_ScGeom_ViscElCapPhys_Basic,LawFunctor,"Extended version of Linear viscoelastic model with capillary parameters.");
 	DECLARE_LOGGER;