[SCM] Gerris Flow Solver branch, upstream, updated. b3aa46814a06c9cb2912790b23916ffb44f1f203
Stephane Popinet
popinet at users.sf.net
Fri May 15 02:55:06 UTC 2009
The following commit has been merged in the upstream branch:
commit 4d9bef3c9d42d0acbf142ba18aad2a1a9c044e83
Author: Stephane Popinet <popinet at users.sf.net>
Date: Mon Mar 10 17:39:25 2008 +1100
SourceControl was broken by momentum source term patch
darcs-hash:20080310063925-d4795-56cc28de1c9718df6f815c62ed02f5178eb84bc1.gz
diff --git a/src/source.c b/src/source.c
index 51dcbfd..8c5adf2 100644
--- a/src/source.c
+++ b/src/source.c
@@ -368,6 +368,30 @@ GfsSourceGenericClass * gfs_source_class (void)
/* GfsSourceControl: Object */
+static void source_control_destroy (GtsObject * o)
+{
+ if (GFS_SOURCE_CONTROL (o)->intensity)
+ gts_object_destroy (GTS_OBJECT (GFS_SOURCE_CONTROL (o)->intensity));
+
+ (* GTS_OBJECT_CLASS (gfs_source_control_class ())->parent_class->destroy) (o);
+}
+
+static void source_control_read (GtsObject ** o, GtsFile * fp)
+{
+ (* GTS_OBJECT_CLASS (gfs_source_control_class ())->parent_class->read) (o, fp);
+ if (fp->type == GTS_ERROR)
+ return;
+
+ GFS_SOURCE_CONTROL (*o)->intensity = gfs_function_new (gfs_function_class (), 0.);
+ gfs_function_read (GFS_SOURCE_CONTROL (*o)->intensity, gfs_object_simulation (*o), fp);
+}
+
+static void source_control_write (GtsObject * o, FILE * fp)
+{
+ (* GTS_OBJECT_CLASS (gfs_source_control_class ())->parent_class->write) (o, fp);
+ gfs_function_write (GFS_SOURCE_CONTROL (o)->intensity, fp);
+}
+
static gboolean source_control_event (GfsEvent * event, GfsSimulation * sim)
{
if ((* gfs_event_class ()->event) (event, sim)) {
@@ -375,8 +399,7 @@ static gboolean source_control_event (GfsEvent * event, GfsSimulation * sim)
GtsRange r = gfs_domain_stats_variable (GFS_DOMAIN (sim), GFS_SOURCE_SCALAR (event)->v,
FTT_TRAVERSE_LEAFS, -1);
s->s = sim->advection_params.dt > 0. ?
- (gfs_function_value (GFS_SOURCE (s)->intensity, NULL) - r.mean)/sim->advection_params.dt :
- 0.;
+ (gfs_function_value (s->intensity, NULL) - r.mean)/sim->advection_params.dt: 0.;
return TRUE;
}
return FALSE;
@@ -384,6 +407,9 @@ static gboolean source_control_event (GfsEvent * event, GfsSimulation * sim)
static void source_control_class_init (GfsSourceGenericClass * klass)
{
+ GTS_OBJECT_CLASS (klass)->read = source_control_read;
+ GTS_OBJECT_CLASS (klass)->write = source_control_write;
+ GTS_OBJECT_CLASS (klass)->destroy = source_control_destroy;
GFS_EVENT_CLASS (klass)->event = source_control_event;
}
@@ -413,7 +439,7 @@ GfsSourceGenericClass * gfs_source_control_class (void)
(GtsArgSetFunc) NULL,
(GtsArgGetFunc) NULL
};
- klass = gts_object_class_new (GTS_OBJECT_CLASS (gfs_source_class ()),
+ klass = gts_object_class_new (GTS_OBJECT_CLASS (gfs_source_scalar_class ()),
&source_control_info);
}
diff --git a/src/source.h b/src/source.h
index 903035a..9aa5767 100644
--- a/src/source.h
+++ b/src/source.h
@@ -136,8 +136,11 @@ typedef struct _GfsSourceControl GfsSourceControl;
struct _GfsSourceControl {
/*< private >*/
- GfsSource parent;
+ GfsSourceScalar parent;
gdouble s;
+
+ /*< public >*/
+ GfsFunction * intensity;
};
#define GFS_SOURCE_CONTROL(obj) GTS_OBJECT_CAST (obj,\
--
Gerris Flow Solver
More information about the debian-science-commits
mailing list