[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