[SCM] Gerris Flow Solver branch, upstream, updated. b3aa46814a06c9cb2912790b23916ffb44f1f203
Stephane Popinet
popinet at users.sf.net
Fri May 15 02:54:22 UTC 2009
The following commit has been merged in the upstream branch:
commit ef10b00fc07a3bfd012ce3a9a350ce96f1eab49d
Author: Stephane Popinet <popinet at users.sf.net>
Date: Fri Apr 27 07:58:03 2007 +1000
New exported function gfs_multilevel_params_stats_write()
darcs-hash:20070426215803-d4795-24adca99bd682badcd6415548716d13732f8b187.gz
diff --git a/src/output.c b/src/output.c
index b22e73b..884945b 100644
--- a/src/output.c
+++ b/src/output.c
@@ -565,42 +565,6 @@ GfsOutputClass * gfs_output_progress_class (void)
/* GfsOutputProjectionStats: Object */
-static gdouble rate (gdouble a, gdouble b, guint n)
-{
- if (a > 0. && b > 0. && n > 0)
- return exp (log (b/a)/n);
- return 0.;
-}
-
-static void multilevel_stats_write (GfsMultilevelParams * p,
- FILE * fp)
-{
- fprintf (fp,
- " niter: %4d\n"
- " residual.bias: % 10.3e % 10.3e\n"
- " residual.first: % 10.3e % 10.3e %6.2g\n"
- " residual.second: % 10.3e % 10.3e %6.2g\n"
- " residual.infty: % 10.3e % 10.3e %6.2g\n",
- p->niter,
- p->residual_before.bias,
- p->residual.bias,
- p->residual_before.first,
- p->residual.first,
- rate (p->residual.first,
- p->residual_before.first,
- p->niter),
- p->residual_before.second,
- p->residual.second,
- rate (p->residual.second,
- p->residual_before.second,
- p->niter),
- p->residual_before.infty,
- p->residual.infty,
- rate (p->residual.infty,
- p->residual_before.infty,
- p->niter));
-}
-
static gboolean projection_stats_event (GfsEvent * event, GfsSimulation * sim)
{
if ((* GFS_EVENT_CLASS (gfs_output_class())->event) (event, sim)) {
@@ -608,10 +572,10 @@ static gboolean projection_stats_event (GfsEvent * event, GfsSimulation * sim)
if (sim->projection_params.niter > 0) {
fprintf (fp, "MAC projection before after rate\n");
- multilevel_stats_write (&sim->projection_params, fp);
+ gfs_multilevel_params_stats_write (&sim->projection_params, fp);
}
fprintf (fp, "Approximate projection\n");
- multilevel_stats_write (&sim->approx_projection_params, fp);
+ gfs_multilevel_params_stats_write (&sim->approx_projection_params, fp);
return TRUE;
}
return FALSE;
@@ -664,7 +628,7 @@ static gboolean diffusion_stats_event (GfsEvent * event, GfsSimulation * sim)
if (GFS_IS_SOURCE_DIFFUSION (o) && !g_slist_find (l, o)) {
l = g_slist_prepend (l, o);
fprintf (fp, "%s diffusion\n", v->name);
- multilevel_stats_write (&GFS_SOURCE_DIFFUSION (o)->D->par, fp);
+ gfs_multilevel_params_stats_write (&GFS_SOURCE_DIFFUSION (o)->D->par, fp);
}
j = j->next;
}
diff --git a/src/poisson.c b/src/poisson.c
index e960f85..33bf290 100644
--- a/src/poisson.c
+++ b/src/poisson.c
@@ -117,6 +117,52 @@ void gfs_multilevel_params_read (GfsMultilevelParams * par, GtsFile * fp)
gts_file_variable_error (fp, var, "beta", "beta must be in [0.5,1]");
}
+static gdouble rate (gdouble a, gdouble b, guint n)
+{
+ if (a > 0. && b > 0. && n > 0)
+ return exp (log (b/a)/n);
+ return 0.;
+}
+
+/**
+ * gfs_multilevel_params_stats_write:
+ * @par: the multilevel parameters.
+ * @fp: a file pointer.
+ *
+ * Writes in @fp the statistics contained in @p.
+ */
+void gfs_multilevel_params_stats_write (GfsMultilevelParams * par,
+ FILE * fp)
+{
+ g_return_if_fail (par != NULL);
+ g_return_if_fail (fp != NULL);
+
+ fprintf (fp,
+ " niter: %4d\n"
+ " residual.bias: % 10.3e % 10.3e\n"
+ " residual.first: % 10.3e % 10.3e %6.2g\n"
+ " residual.second: % 10.3e % 10.3e %6.2g\n"
+ " residual.infty: % 10.3e % 10.3e %6.2g\n",
+ par->niter,
+ par->residual_before.bias,
+ par->residual.bias,
+ par->residual_before.first,
+ par->residual.first,
+ rate (par->residual.first,
+ par->residual_before.first,
+ par->niter),
+ par->residual_before.second,
+ par->residual.second,
+ rate (par->residual.second,
+ par->residual_before.second,
+ par->niter),
+ par->residual_before.infty,
+ par->residual.infty,
+ rate (par->residual.infty,
+ par->residual_before.infty,
+ par->niter));
+}
+
typedef struct {
guint u, rhs, dia, res;
gint maxlevel;
diff --git a/src/poisson.h b/src/poisson.h
index 1b4101e..c171901 100644
--- a/src/poisson.h
+++ b/src/poisson.h
@@ -49,7 +49,8 @@ void gfs_multilevel_params_write (GfsMultilevelParams * par,
FILE * fp);
void gfs_multilevel_params_read (GfsMultilevelParams * par,
GtsFile * fp);
-
+void gfs_multilevel_params_stats_write (GfsMultilevelParams * par,
+ FILE * fp);
void gfs_relax (GfsDomain * domain,
guint d,
gint max_depth,
--
Gerris Flow Solver
More information about the debian-science-commits
mailing list