[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