[SCM] Gerris Flow Solver branch, upstream, updated. b3aa46814a06c9cb2912790b23916ffb44f1f203
Stephane Popinet
s.popinet at niwa.co.nz
Fri May 15 02:52:14 UTC 2009
The following commit has been merged in the upstream branch:
commit 9b03d0f7fd2a6474bce02decd576f503ccfe5084
Author: Stephane Popinet <s.popinet at niwa.co.nz>
Date: Wed Jul 6 10:51:32 2005 +1000
Upgrade of EventFilter to new memory management
darcs-hash:20050706005132-fbd8f-735e4a36eb691e3111945c9cfd502504d538569a.gz
diff --git a/src/event.c b/src/event.c
index 51c7c4e..591042c 100644
--- a/src/event.c
+++ b/src/event.c
@@ -1794,7 +1794,7 @@ GfsEventClass * gfs_remove_ponds_class (void)
/* GfsEventFilter: Object */
-static void filter (FttCell * cell, GfsVariable * v)
+static void filter (FttCell * cell, GfsEventFilter * f)
{
FttDirection d[4*(FTT_DIMENSION - 1)][FTT_DIMENSION] = {
#if FTT_2D
@@ -1810,24 +1810,28 @@ static void filter (FttCell * cell, GfsVariable * v)
gdouble val = 0.;
for (i = 0; i < 4*(FTT_DIMENSION - 1); i++)
- val += gfs_cell_corner_value (cell, d[i], v, -1);
- GFS_STATE (cell)->div = val/(4*(FTT_DIMENSION - 1));
+ val += gfs_cell_corner_value (cell, d[i], f->v, -1);
+ GFS_VARIABLE (cell, f->tmp->i) = val/(4*(FTT_DIMENSION - 1));
}
-static void filtered (FttCell * cell, GfsVariable * v)
+static void filtered (FttCell * cell, GfsEventFilter * f)
{
- GFS_VARIABLE (cell, v->i) = GFS_STATE (cell)->div;
+ GFS_VARIABLE (cell, f->v->i) = GFS_VARIABLE (cell, f->tmp->i);
}
static gboolean gfs_event_filter_event (GfsEvent * event, GfsSimulation * sim)
{
if ((* GFS_EVENT_CLASS (GTS_OBJECT_CLASS (gfs_event_filter_class ())->parent_class)->event)
(event, sim)) {
+ GfsEventFilter * f = GFS_EVENT_FILTER (event);
+
+ f->tmp = gfs_temporary_variable (GFS_DOMAIN (sim));
gfs_domain_cell_traverse (GFS_DOMAIN (sim), FTT_PRE_ORDER, FTT_TRAVERSE_LEAFS, -1,
- (FttCellTraverseFunc) filter, GFS_EVENT_FILTER (event)->v);
+ (FttCellTraverseFunc) filter, f);
gfs_domain_cell_traverse (GFS_DOMAIN (sim), FTT_PRE_ORDER, FTT_TRAVERSE_LEAFS, -1,
- (FttCellTraverseFunc) filtered, GFS_EVENT_FILTER (event)->v);
- gfs_domain_bc (GFS_DOMAIN (sim), FTT_TRAVERSE_LEAFS, -1, GFS_EVENT_FILTER (event)->v);
+ (FttCellTraverseFunc) filtered, f);
+ gts_object_destroy (GTS_OBJECT (f->tmp));
+ gfs_domain_bc (GFS_DOMAIN (sim), FTT_TRAVERSE_LEAFS, -1, f->v);
return TRUE;
}
return FALSE;
diff --git a/src/event.h b/src/event.h
index a4515de..30d58df 100644
--- a/src/event.h
+++ b/src/event.h
@@ -305,6 +305,7 @@ typedef struct _GfsEventFilter GfsEventFilter;
struct _GfsEventFilter {
/*< private >*/
GfsEvent parent;
+ GfsVariable * tmp;
/*< public >*/
GfsVariable * v;
--
Gerris Flow Solver
More information about the debian-science-commits
mailing list