[SCM] Gerris Flow Solver branch, upstream, updated. b3aa46814a06c9cb2912790b23916ffb44f1f203
Stephane Popinet
popinet at users.sf.net
Fri May 15 02:53:01 UTC 2009
The following commit has been merged in the upstream branch:
commit 14b9dde4daf80f00fcfab647a041592e6b60d03d
Author: Stephane Popinet <popinet at users.sf.net>
Date: Fri Jan 27 21:07:10 2006 +1100
Better checks for construction of merged cells lists
darcs-hash:20060127100710-d4795-cffc77a7e4c3a5b3b7aa1d26de9ed2bec84c3365.gz
diff --git a/src/advection.c b/src/advection.c
index e73b6ff..e73a0f0 100644
--- a/src/advection.c
+++ b/src/advection.c
@@ -610,11 +610,18 @@ static void set_merged (FttCell * cell)
ftt_cell_neighbors (cell, &neighbor);
for (i = 0; i < FTT_NEIGHBORS && abest < 1.; i++)
if (neighbor.c[i] && !GFS_CELL_IS_BOUNDARY (neighbor.c[i]) && solid->s[i] > 0.) {
- gdouble a = GFS_IS_MIXED (neighbor.c[i]) ? GFS_STATE (neighbor.c[i])->solid->a : 1.;
+ if (GFS_IS_MIXED (neighbor.c[i])) {
+ gdouble a = GFS_STATE (neighbor.c[i])->solid->a;
- if (a > abest) {
- abest = a;
+ if (a > abest) {
+ abest = a;
+ solid->merged = neighbor.c[i];
+ }
+ }
+ else {
+ g_assert (FTT_CELL_IS_LEAF (neighbor.c[i]));
solid->merged = neighbor.c[i];
+ return;
}
}
if (abest == 0.)
@@ -649,7 +656,7 @@ static void add_merged (GSList ** merged, FttCell * cell)
*merged = g_slist_prepend (*merged, cell);
cell->flags |= GFS_FLAG_USED;
- if (GFS_IS_MIXED (cell) && solid->merged)
+ if (solid && solid->merged)
add_merged (merged, solid->merged);
ftt_cell_neighbors (cell, &neighbor);
@@ -666,7 +673,7 @@ static void add_merged (GSList ** merged, FttCell * cell)
if (GFS_IS_MIXED (child.c[j]) &&
GFS_STATE (child.c[j])->solid->merged == cell)
add_merged (merged, child.c[j]);
- }
+ }
else if (GFS_IS_MIXED (neighbor.c[i]) &&
GFS_STATE (neighbor.c[i])->solid->merged == cell)
add_merged (merged, neighbor.c[i]);
@@ -750,6 +757,7 @@ void gfs_advection_update (GSList * merged, const GfsAdvectionParams * par)
if (GFS_IS_MIXED (cell)) {
#if 1
+ g_assert (!is_small (cell));
GFS_VARIABLE (cell, par->v->i) +=
GFS_VARIABLE (cell, par->fv->i)/GFS_STATE (cell)->solid->a;
#else /* D. Calhoun approach */
--
Gerris Flow Solver
More information about the debian-science-commits
mailing list