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

Stephane Popinet popinet at users.sf.net
Fri May 15 02:56:19 UTC 2009


The following commit has been merged in the upstream branch:
commit df9297fba38e136c2edd70b3ea405fddaf7197fe
Author: Stephane Popinet <popinet at users.sf.net>
Date:   Thu Apr 30 18:56:19 2009 +1000

    Advection merging updates can be parameterised
    
    Ignore-this: eeaf8ca90c3d02aabc072be8c475bbc9
    
    darcs-hash:20090430085619-d4795-c543d0ff12326782fe045e01649d4afca5b5386c.gz

diff --git a/src/advection.c b/src/advection.c
index c9fcc74..382113a 100644
--- a/src/advection.c
+++ b/src/advection.c
@@ -954,6 +954,7 @@ void gfs_advection_params_init (GfsAdvectionParams * par)
   par->scheme = GFS_GODUNOV;
   par->average = FALSE;
   par->gc = FALSE;
+  par->update = (GfsMergedTraverseFunc) gfs_advection_update;
 }
 
 static gdouble none (FttCell * cell, FttComponent c, guint v)
@@ -1012,6 +1013,8 @@ void gfs_advection_params_read (GfsAdvectionParams * par, GtsFile * fp)
       par->flux = gfs_face_velocity_advection_flux;
     else if (!strcmp (flux, "gfs_face_velocity_convective_flux"))
       par->flux = gfs_face_velocity_convective_flux;
+    else if (!strcmp (flux, "NULL"))
+      par->flux = gfs_face_advection_flux;
     else if (fp->type != GTS_ERROR)
       gts_file_variable_error (fp, var, "flux",
 			       "unknown flux parameter `%s'", flux);
diff --git a/src/advection.h b/src/advection.h
index ef6308d..dd8519d 100644
--- a/src/advection.h
+++ b/src/advection.h
@@ -43,6 +43,8 @@ typedef struct _GfsAdvectionParams GfsAdvectionParams;
 typedef
 void      (* GfsFaceAdvectionFluxFunc)       (const FttCellFace * face,
 					      const GfsAdvectionParams * par);
+typedef void (* GfsMergedTraverseFunc)       (GSList * merged,
+					      gpointer data);
 
 struct _GfsAdvectionParams {
   gdouble cfl, dt;
@@ -53,6 +55,7 @@ struct _GfsAdvectionParams {
   GfsFaceAdvectionFluxFunc flux;
   GfsAdvectionScheme scheme;
   gboolean average, gc;
+  GfsMergedTraverseFunc update;
 };
 
 void         gfs_advection_params_init        (GfsAdvectionParams * par);
@@ -80,13 +83,11 @@ void         gfs_face_interpolated_normal_velocity (const FttCellFace * face,
 void         gfs_face_reset_normal_velocity        (const FttCellFace * face);
 gboolean     gfs_cell_is_small                     (const FttCell * cell);
 void         gfs_set_merged                        (GfsDomain * domain);
-typedef void (* GfsMergedTraverseFunc)             (GSList * merged,
+void         gfs_domain_traverse_merged            (GfsDomain * domain,
+						    GfsMergedTraverseFunc func,
 						    gpointer data);
-void         gfs_domain_traverse_merged           (GfsDomain * domain,
-						   GfsMergedTraverseFunc func,
-						   gpointer data);
-void         gfs_advection_update            (GSList * merged, 
-					      const GfsAdvectionParams * par);
+void         gfs_advection_update                  (GSList * merged, 
+					            const GfsAdvectionParams * par);
 
 #ifdef __cplusplus
 }
diff --git a/src/timestep.c b/src/timestep.c
index 62bd635..000126f 100644
--- a/src/timestep.c
+++ b/src/timestep.c
@@ -702,7 +702,7 @@ static void variable_sources (GfsDomain * domain,
 			      FTT_PRE_ORDER, FTT_TRAVERSE_LEAFS, -1,
 			      (FttFaceTraverseFunc) par->flux, par);
     par->v = sv;
-    gfs_domain_traverse_merged (domain, (GfsMergedTraverseFunc) gfs_advection_update, par);
+    gfs_domain_traverse_merged (domain, par->update, par);
     par->v = v;
     par->u = par->g = NULL;
     gts_object_destroy (GTS_OBJECT (par->fv));

-- 
Gerris Flow Solver



More information about the debian-science-commits mailing list