[SCM] Gerris Flow Solver branch, upstream, updated. b3aa46814a06c9cb2912790b23916ffb44f1f203
Stephane Popinet
popinet at users.sf.net
Fri May 15 02:56:24 UTC 2009
The following commit has been merged in the upstream branch:
commit 01347a64a774a7b4ec82d1dd57b3aff8238607d1
Author: Stephane Popinet <popinet at users.sf.net>
Date: Fri May 8 11:02:22 2009 +1000
New 'time_order' parameter for GfsRiver
darcs-hash:20090508010222-d4795-c8a376c002f782422a96e43b2024775dec015c65.gz
diff --git a/src/river.c b/src/river.c
index 94bf7d6..1a5faac 100644
--- a/src/river.c
+++ b/src/river.c
@@ -313,15 +313,16 @@ static void river_run (GfsSimulation * sim)
gfs_domain_timer_stop (domain, "gradients");
/* predictor */
- gfs_domain_timer_start (domain, "predictor");
domain_traverse_all_leaves (domain, (FttCellTraverseFunc) copy, r);
- for (v = 0; v < GFS_RIVER_NVAR; v++)
- gfs_variables_swap (r->v[v], r->v1[v]);
- advance (r, sim->advection_params.dt/2.);
- for (v = 0; v < GFS_RIVER_NVAR; v++)
- gfs_variables_swap (r->v[v], r->v1[v]);
- gfs_domain_timer_stop (domain, "predictor");
-
+ if (r->time_order == 2) {
+ gfs_domain_timer_start (domain, "predictor");
+ for (v = 0; v < GFS_RIVER_NVAR; v++)
+ gfs_variables_swap (r->v[v], r->v1[v]);
+ advance (r, sim->advection_params.dt/2.);
+ for (v = 0; v < GFS_RIVER_NVAR; v++)
+ gfs_variables_swap (r->v[v], r->v1[v]);
+ gfs_domain_timer_stop (domain, "predictor");
+ }
/* corrector */
gfs_domain_timer_start (domain, "corrector");
advance (r, sim->advection_params.dt);
@@ -373,8 +374,40 @@ static gdouble river_cfl (GfsSimulation * sim)
return r->cfl;
}
+static void river_read (GtsObject ** o, GtsFile * fp)
+{
+ (* GTS_OBJECT_CLASS (gfs_river_class ())->parent_class->read) (o, fp);
+ if (fp->type == GTS_ERROR)
+ return;
+
+ GfsRiver * river = GFS_RIVER (*o);
+ if (fp->type == '{') {
+ GtsFileVariable var[] = {
+ {GTS_UINT, "time_order", TRUE},
+ {GTS_NONE}
+ };
+ var[0].data = &river->time_order;
+ gts_file_assign_variables (fp, var);
+ if (fp->type == GTS_ERROR)
+ return;
+ }
+}
+
+static void river_write (GtsObject * o, FILE * fp)
+{
+ (* GTS_OBJECT_CLASS (gfs_river_class ())->parent_class->write) (o, fp);
+
+ GfsRiver * river = GFS_RIVER (o);
+ fprintf (fp, " {\n"
+ " time_order = %d\n"
+ "}",
+ river->time_order);
+}
+
static void river_class_init (GfsSimulationClass * klass)
{
+ GTS_OBJECT_CLASS (klass)->read = river_read;
+ GTS_OBJECT_CLASS (klass)->write = river_write;
klass->run = river_run;
klass->cfl = river_cfl;
}
@@ -456,6 +489,8 @@ static void river_init (GfsRiver * r)
gfs_domain_remove_derived_variable (domain, "Lambda2");
gfs_domain_remove_derived_variable (domain, "Curvature");
gfs_domain_remove_derived_variable (domain, "D2");
+
+ r->time_order = 2;
}
GfsSimulationClass * gfs_river_class (void)
diff --git a/src/river.h b/src/river.h
index cdb53fc..b137fe4 100644
--- a/src/river.h
+++ b/src/river.h
@@ -42,7 +42,8 @@ struct _GfsRiver {
GfsVariable * dv[FTT_DIMENSION][GFS_RIVER_NVAR + 1];
GfsVariable * flux[GFS_RIVER_NVAR];
gdouble g, dt;
- GfsCenterGradient gradient;
+ GfsCenterGradient gradient;
+ guint time_order;
};
#define GFS_RIVER(obj) GTS_OBJECT_CAST (obj,\
--
Gerris Flow Solver
More information about the debian-science-commits
mailing list