[SCM] Gerris Flow Solver branch, upstream, updated. b3aa46814a06c9cb2912790b23916ffb44f1f203

Stephane Popinet stephane.popinet at paradise.net.nz
Fri May 15 02:51:33 UTC 2009


The following commit has been merged in the upstream branch:
commit 99c10071546be630d8ed47fe4b2b1a0bfa89612f
Author: Stephane Popinet <stephane.popinet at paradise.net.nz>
Date:   Sun Jan 30 14:26:21 2005 +1100

    Tracers now take advection/diffusion parameters
    
    darcs-hash:20050130032621-fa380-be35bb1fc70ccd4483b4b950010177bc3cff1962.gz

diff --git a/src/advection.c b/src/advection.c
index 7c36ba6..4ed245d 100644
--- a/src/advection.c
+++ b/src/advection.c
@@ -945,10 +945,14 @@ void gfs_advection_params_read (GfsAdvectionParams * par, GtsFile * fp)
       par->scheme = GFS_NONE;
     else if (!strcmp (scheme, "vof")) {
       par->scheme = GFS_VOF;
-      if (fp->type != GTS_ERROR && (par->cfl <= 0. || par->cfl > 0.5))
-	gts_file_variable_error (fp, var, "cfl", 
-				 "cfl `%g' is out of range `]0,0.5]'", 
-				 par->cfl);
+      if (par->cfl > 0.5) {
+	if (fp->type != GTS_ERROR && var[0].set)
+	  gts_file_variable_error (fp, var, "cfl", 
+				   "cfl `%g' is out of range `]0,0.5]'", 
+				   par->cfl);
+	else
+	  par->cfl = 0.5;
+      }
     }
     else if (fp->type != GTS_ERROR)
       gts_file_variable_error (fp, var, "scheme",
diff --git a/src/variable.c b/src/variable.c
index 8f85f79..f0e62ce 100644
--- a/src/variable.c
+++ b/src/variable.c
@@ -239,6 +239,34 @@ GfsVariable * gfs_variables_from_list (GfsVariable * variables,
 
 /* GfsVariableTracer: object */
 
+static void variable_tracer_read (GtsObject ** o, GtsFile * fp)
+{
+  (* GTS_OBJECT_CLASS (gfs_variable_tracer_class ())->parent_class->read) (o, fp);
+  if (fp->type == GTS_ERROR)
+    return;
+
+  if (fp->type == '{')
+    gfs_advection_params_read (&GFS_VARIABLE_TRACER (*o)->advection, fp);
+  if (fp->type == '{')
+    gfs_multilevel_params_read (&GFS_VARIABLE_TRACER (*o)->diffusion, fp);
+}
+
+static void variable_tracer_write (GtsObject * o, FILE * fp)
+{
+  (* GTS_OBJECT_CLASS (gfs_variable_tracer_class ())->parent_class->write) (o, fp);
+
+  fputc (' ', fp);
+  gfs_advection_params_write (&GFS_VARIABLE_TRACER (o)->advection, fp);
+  fputc (' ', fp);
+  gfs_multilevel_params_write (&GFS_VARIABLE_TRACER (o)->diffusion, fp);
+}
+
+static void variable_tracer_class_init (GtsObjectClass * klass)
+{
+  klass->read = variable_tracer_read;
+  klass->write = variable_tracer_write;
+}
+
 static void variable_tracer_init (GfsVariableTracer * v)
 {
   gfs_advection_params_init (&v->advection);
@@ -260,7 +288,7 @@ GfsVariableClass * gfs_variable_tracer_class (void)
       "GfsVariableTracer",
       sizeof (GfsVariableTracer),
       sizeof (GfsVariableClass),
-      (GtsObjectClassInitFunc) NULL,
+      (GtsObjectClassInitFunc) variable_tracer_class_init,
       (GtsObjectInitFunc) variable_tracer_init,
       (GtsArgSetFunc) NULL,
       (GtsArgGetFunc) NULL

-- 
Gerris Flow Solver



More information about the debian-science-commits mailing list