[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