[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