[SCM] Gerris Flow Solver branch, upstream, updated. b3aa46814a06c9cb2912790b23916ffb44f1f203

Stephane Popinet popinet at users.sf.net
Fri May 15 02:55:51 UTC 2009


The following commit has been merged in the upstream branch:
commit 815d403cbdb4a3220083dc2c612a1f0011d80166
Author: Stephane Popinet <popinet at users.sf.net>
Date:   Fri Nov 7 09:08:52 2008 +1100

    Improved robustness of VOF volume computation
    
    darcs-hash:20081106220852-d4795-c08ce7d2c2f8a84ae181d3c3e177d2e9d985cfdc.gz

diff --git a/src/vof.c b/src/vof.c
index b33a3ef..45054a9 100644
--- a/src/vof.c
+++ b/src/vof.c
@@ -42,7 +42,7 @@
 gdouble gfs_line_area (const FttVector * m, gdouble alpha)
 {
   FttVector n;
-  gdouble alpha1, a, v;
+  gdouble alpha1, a, v, area;
 
   g_return_val_if_fail (m != NULL, 0.);
 
@@ -64,9 +64,9 @@ gdouble gfs_line_area (const FttVector * m, gdouble alpha)
     return 1.;
 
   if (n.x == 0.)
-    return alpha1/n.y;
+    area = alpha1/n.y;
   else if (n.y == 0.)
-    return alpha1/n.x;
+    area = alpha1/n.x;
   else {
     v = alpha1*alpha1;
 
@@ -78,8 +78,10 @@ gdouble gfs_line_area (const FttVector * m, gdouble alpha)
     if (a > 0.)
       v -= a*a;
 
-    return v/(2.*n.x*n.y);
+    area = v/(2.*n.x*n.y);
   }
+
+  return CLAMP (area, 0., 1.);
 }
 
 /**
@@ -118,7 +120,7 @@ gdouble gfs_line_alpha (const FttVector * m, gdouble c)
   return alpha;
 }
 
-#define EPS 1e-6
+#define EPS 1e-4
 
 /**
  * gfs_line_center:
@@ -329,7 +331,8 @@ gdouble gfs_plane_volume (const FttVector * m, gdouble alpha)
     tmp = (al0*al0*(3. - 2.*al0) + b1*b1*(b1 - 3.*al0) + 
 	   b2*b2*(b2 - 3.*al0) + b3*b3*(b3 - 3.*al0))/pr;
 
-  return al <= 0.5 ? tmp : 1. - tmp;
+  gdouble volume = al <= 0.5 ? tmp : 1. - tmp;
+  return CLAMP (volume, 0., 1.);
 }
 
 /**

-- 
Gerris Flow Solver



More information about the debian-science-commits mailing list