[SCM] Gerris Flow Solver branch, upstream, updated. b3aa46814a06c9cb2912790b23916ffb44f1f203
Stephane Popinet
s.popinet at niwa.co.nz
Fri May 15 02:52:33 UTC 2009
The following commit has been merged in the upstream branch:
commit 8a71d2676fcb1f84cfa11def0befa2a70cec6ac5
Author: Stephane Popinet <s.popinet at niwa.co.nz>
Date: Wed Sep 7 15:54:48 2005 +1000
Bug fix for OutputCorrelation
darcs-hash:20050907055448-fbd8f-b4f932f2a22fe11e1752f8d2a3c75a53ccb13570.gz
diff --git a/src/output.c b/src/output.c
index 57c316e..c35859c 100644
--- a/src/output.c
+++ b/src/output.c
@@ -2268,7 +2268,7 @@ static gboolean gfs_output_error_norm_event (GfsEvent * event,
GfsNorm norm;
if (v == NULL)
- enorm->v = gfs_variable_new (gfs_variable_class (), GFS_DOMAIN (sim), NULL);
+ enorm->v = gfs_temporary_variable (GFS_DOMAIN (sim));
gfs_domain_cell_traverse (GFS_DOMAIN (sim), FTT_PRE_ORDER,
FTT_TRAVERSE_LEAFS|FTT_TRAVERSE_LEVEL,
output->maxlevel,
@@ -2359,24 +2359,24 @@ static gboolean gfs_output_correlation_event (GfsEvent * event,
if ((* GFS_EVENT_CLASS (GTS_OBJECT_CLASS (gfs_output_error_norm_class ())->parent_class)->event)
(event, sim)) {
GfsOutputScalar * output = GFS_OUTPUT_SCALAR (event);
- GfsVariable * v = GFS_OUTPUT_ERROR_NORM (event)->v;
+ GfsOutputErrorNorm * enorm = GFS_OUTPUT_ERROR_NORM (event);
+ GfsVariable * v = enorm->v;
gdouble bias = 0., sum = 0., sumref = 0.;
gpointer data[4];
if (GFS_DOMAIN (sim)->pid != -1)
g_assert_not_implemented ();
- if (GFS_OUTPUT_ERROR_NORM (event)->unbiased) {
- GfsNorm enorm;
-
+ if (v == NULL)
+ enorm->v = gfs_temporary_variable (GFS_DOMAIN (sim));
+ if (enorm->unbiased) {
gfs_domain_cell_traverse (GFS_DOMAIN (sim), FTT_PRE_ORDER,
FTT_TRAVERSE_LEAFS|FTT_TRAVERSE_LEVEL,
output->maxlevel,
(FttCellTraverseFunc) compute_error, output);
- enorm = gfs_domain_norm_variable (GFS_DOMAIN (sim), v,
- FTT_TRAVERSE_LEAFS|FTT_TRAVERSE_LEVEL,
- output->maxlevel);
- bias = enorm.bias;
+ bias = gfs_domain_norm_variable (GFS_DOMAIN (sim), enorm->v,
+ FTT_TRAVERSE_LEAFS|FTT_TRAVERSE_LEVEL,
+ output->maxlevel).bias;
}
data[0] = output;
data[1] = &bias;
@@ -2386,6 +2386,10 @@ static gboolean gfs_output_correlation_event (GfsEvent * event,
FTT_TRAVERSE_LEAFS|FTT_TRAVERSE_LEVEL,
output->maxlevel,
(FttCellTraverseFunc) compute_correlation, data);
+ if (v == NULL) {
+ gts_object_destroy (GTS_OBJECT (enorm->v));
+ enorm->v = NULL;
+ }
fprintf (GFS_OUTPUT (event)->file->fp,
"%s time: %g %10.3e\n",
output->name, sim->time.t, sumref > 0. ? sum/sumref : 0.);
--
Gerris Flow Solver
More information about the debian-science-commits
mailing list