[SCM] Gerris Flow Solver branch, upstream, updated. b3aa46814a06c9cb2912790b23916ffb44f1f203
Stephane Popinet
popinet at users.sf.net
Fri May 15 02:53:33 UTC 2009
The following commit has been merged in the upstream branch:
commit 3db60b42de39e73bf1070fe72d9b489cf319c921
Author: Stephane Popinet <popinet at users.sf.net>
Date: Mon Jan 30 20:42:31 2006 +1100
K8 smoothing kernel doesn't work
Bubbles appear to be unstable for all smoothing lengths larger than twice the
grid size. For these lengths K8 does not improve over the default vertex filter.
darcs-hash:20060130094231-d4795-514a724b5e68f343f16fe0f95939ac8dd9313261.gz
diff --git a/src/variable.c b/src/variable.c
index c0e54b4..ba82cc2 100644
--- a/src/variable.c
+++ b/src/variable.c
@@ -396,56 +396,15 @@ static void filter (FttCell * cell, gpointer * data)
GFS_VARIABLE (cell, b->i) = val/(4*(FTT_DIMENSION - 1));
}
-static void K8 (FttCell * cell, gpointer * data)
-{
- GfsVariable * a = data[0];
- gdouble * w = data[2], * eps = data[4], * val = data[5];
- FttVector * c = data[3], p;
- gdouble r2, eps2 = (*eps)*(*eps);
-
- ftt_cell_pos (cell, &p);
- r2 = ((p.x - c->x)*(p.x - c->x) +
- (p.y - c->y)*(p.y - c->y) +
- (p.z - c->z)*(p.z - c->z));
- if (r2 < eps2) {
- gdouble w1 = (1. - r2/eps2);
-
- w1 = w1*w1*w1*w1;
- *val += w1*GFS_VARIABLE (cell, a->i);
- *w += w1;
- }
-}
-
-static void filter_K8 (FttCell * cell, gpointer * data)
-{
- GfsVariable * a = data[0];
- GfsVariable * b = data[1];
- FttVector p;
- gdouble w = 0., eps = 2./32., val = 0.;
- GtsBBox bb;
-
- ftt_cell_pos (cell, &p);
- bb.x1 = p.x - eps; bb.y1 = p.y - eps; bb.z1 = p.z - eps;
- bb.x2 = p.x + eps; bb.y2 = p.y + eps; bb.z2 = p.z + eps;
- data[2] = &w;
- data[3] = &p;
- data[4] = &eps;
- data[5] = &val;
- gfs_domain_cell_traverse_box (a->domain, &bb, FTT_PRE_ORDER, FTT_TRAVERSE_LEAFS, -1,
- (FttCellTraverseFunc) K8, data);
- g_assert (w > 0.);
- GFS_VARIABLE (cell, b->i) = val/w;
-}
-
static void variable_filtered_event_half (GfsEvent * event, GfsSimulation * sim)
{
guint n, niter = GFS_VARIABLE_FILTERED (event)->niter - 1;
- gpointer data[6];
+ gpointer data[2];
data[0] = GFS_VARIABLE_FILTERED (event)->v;
data[1] = event;
gfs_domain_cell_traverse (GFS_DOMAIN (sim), FTT_PRE_ORDER, FTT_TRAVERSE_LEAFS, -1,
- (FttCellTraverseFunc) filter_K8, data);
+ (FttCellTraverseFunc) filter, data);
gfs_domain_copy_bc (GFS_DOMAIN (sim), FTT_TRAVERSE_LEAFS, -1, data[0], data[1]);
if (niter > 0) {
data[0] = event;
--
Gerris Flow Solver
More information about the debian-science-commits
mailing list