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

Stephane Popinet s.popinet at niwa.co.nz
Fri May 15 02:52:12 UTC 2009


The following commit has been merged in the upstream branch:
commit 0fa2cf7d39a38f38ed0e77f115dcd73cd677a4d5
Author: Stephane Popinet <s.popinet at niwa.co.nz>
Date:   Tue Jul 5 12:32:46 2005 +1000

    EventSum takes a function rather than a variable, EventSum2 has been removed
    
    darcs-hash:20050705023246-fbd8f-8f4906d50cdd871a818661ca498d71c76076ff8f.gz

diff --git a/src/event.c b/src/event.c
index e08543d..2e8e8b8 100644
--- a/src/event.c
+++ b/src/event.c
@@ -810,15 +810,23 @@ GfsInitVorticityClass * gfs_init_vorticity_class (void)
 
 /* GfsEventSum: Object */
 
+static void gfs_event_sum_destroy (GtsObject * o)
+{
+  GfsEventSum * s = GFS_EVENT_SUM (o);
+
+  gts_object_destroy (GTS_OBJECT (s->v));
+
+  (* GTS_OBJECT_CLASS (gfs_event_sum_class ())->parent_class->destroy) (o);
+}
+
 static void gfs_event_sum_write (GtsObject * o, FILE * fp)
 {
   GfsEventSum * s = GFS_EVENT_SUM (o);
 
-  if (GTS_OBJECT_CLASS (gfs_event_sum_class ())->parent_class->write)
-    (* GTS_OBJECT_CLASS (gfs_event_sum_class ())->parent_class->write)
-      (o, fp);
+  (* GTS_OBJECT_CLASS (gfs_event_sum_class ())->parent_class->write) (o, fp);
 
-  fprintf (fp, " %s %s", s->v->name, s->sv->name);
+  gfs_function_write (s->v, fp);
+  fprintf (fp, " %s", s->sv->name);
 }
 
 static void gfs_event_sum_read (GtsObject ** o, GtsFile * fp)
@@ -826,21 +834,13 @@ static void gfs_event_sum_read (GtsObject ** o, GtsFile * fp)
   GfsEventSum * s = GFS_EVENT_SUM (*o);
   GfsDomain * domain =  GFS_DOMAIN (gfs_object_simulation (s));
 
-  if (GTS_OBJECT_CLASS (gfs_event_sum_class ())->parent_class->read)
-    (* GTS_OBJECT_CLASS (gfs_event_sum_class ())->parent_class->read) 
-      (o, fp);
+  (* GTS_OBJECT_CLASS (gfs_event_sum_class ())->parent_class->read) (o, fp);
   if (fp->type == GTS_ERROR)
     return;
 
-  if (fp->type != GTS_STRING) {
-    gts_file_error (fp, "expecting a string (v)");
-    return;
-  }
-  if (!(s->v = gfs_variable_from_name (domain->variables, fp->token->str))) {
-    gts_file_error (fp, "unknown variable `%s'", fp->token->str);
+  gfs_function_read (s->v, domain, fp);
+  if (fp->type == GTS_ERROR)
     return;
-  }
-  gts_file_next_token (fp);
 
   if (fp->type != GTS_STRING) {
     gts_file_error (fp, "expecting a string (sv)");
@@ -851,7 +851,6 @@ static void gfs_event_sum_read (GtsObject ** o, GtsFile * fp)
     gts_file_error (fp, "`%s' is a reserved keyword", fp->token->str);
     return;
   }
-  s->sv->fine_coarse = s->v->fine_coarse;
   gts_file_next_token (fp);
 }
 
@@ -881,17 +880,19 @@ static void gfs_event_sum_class_init (GfsEventClass * klass)
 {
   GTS_OBJECT_CLASS (klass)->read = gfs_event_sum_read;
   GTS_OBJECT_CLASS (klass)->write = gfs_event_sum_write;
+  GTS_OBJECT_CLASS (klass)->destroy = gfs_event_sum_destroy;
   GFS_EVENT_CLASS (klass)->event = gfs_event_sum_event;
 }
 
 static void sum (FttCell * cell, GfsEventSum * s)
 {
-  GFS_VARIABLE (cell, s->sv->i) += s->dt*GFS_VARIABLE (cell, s->v->i);
+  GFS_VARIABLE (cell, s->sv->i) += s->dt*gfs_function_value (s->v, cell);
 }
 
 static void gfs_event_sum_init (GfsEventSum * object)
 {
   object->last = -1.;
+  object->v = gfs_function_new (gfs_function_class (), 0.);
   object->sum = (FttCellTraverseFunc) sum;
 }
 
@@ -916,41 +917,6 @@ GfsEventClass * gfs_event_sum_class (void)
   return klass;
 }
 
-/* GfsEventSum2: Object */
-
-static void sum2 (FttCell * cell, GfsEventSum * s)
-{
-  gdouble val = GFS_VARIABLE (cell, s->v->i);
-
-  GFS_VARIABLE (cell, s->sv->i) += s->dt*val*val;
-}
-
-static void gfs_event_sum2_init (GfsEventSum * object)
-{
-  object->sum = (FttCellTraverseFunc) sum2;
-}
-
-GfsEventClass * gfs_event_sum2_class (void)
-{
-  static GfsEventClass * klass = NULL;
-
-  if (klass == NULL) {
-    GtsObjectClassInfo gfs_event_sum2_info = {
-      "GfsEventSum2",
-      sizeof (GfsEventSum),
-      sizeof (GfsEventClass),
-      (GtsObjectClassInitFunc) NULL,
-      (GtsObjectInitFunc) gfs_event_sum2_init,
-      (GtsArgSetFunc) NULL,
-      (GtsArgGetFunc) NULL
-    };
-    klass = gts_object_class_new (GTS_OBJECT_CLASS (gfs_event_sum_class ()),
-				  &gfs_event_sum2_info);
-  }
-
-  return klass;
-}
-
 /* GfsEventHarmonic: Object */
 
 static void gfs_event_harmonic_destroy (GtsObject * o)
diff --git a/src/event.h b/src/event.h
index 82cc579..f5a635d 100644
--- a/src/event.h
+++ b/src/event.h
@@ -151,7 +151,8 @@ typedef struct _GfsEventSum         GfsEventSum;
 struct _GfsEventSum {
   GfsEvent parent;
 
-  GfsVariable * v, * sv;
+  GfsFunction * v;
+  GfsVariable * sv;
   FttCellTraverseFunc sum;
   gdouble last, dt;
 };
@@ -164,10 +165,6 @@ struct _GfsEventSum {
 
 GfsEventClass * gfs_event_sum_class  (void);
 
-/* GfsEventSum2: Header */
-
-GfsEventClass * gfs_event_sum2_class (void);
-
 /* GfsEventHarmonic: Header */
 
 typedef struct _GfsEventHarmonic         GfsEventHarmonic;
diff --git a/src/init.c b/src/init.c
index 19965b6..463df3f 100644
--- a/src/init.c
+++ b/src/init.c
@@ -175,7 +175,6 @@ void gfs_init (int * argc, char *** argv)
         gfs_adapt_curvature_class ();
       gfs_adapt_not_box_class ();
     gfs_event_sum_class ();
-      gfs_event_sum2_class ();
     gfs_event_stop_class ();
     gfs_event_script_class ();
     gfs_source_generic_class ();

-- 
Gerris Flow Solver



More information about the debian-science-commits mailing list