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

Stephane Popinet popinet at users.sf.net
Fri May 15 02:55:23 UTC 2009


The following commit has been merged in the upstream branch:
commit 253aa715a2fd796974a133adb92abc5c2a1435c3
Author: Stephane Popinet <popinet at users.sf.net>
Date:   Sun May 11 20:20:44 2008 +1000

    New function gfs_event_redo()
    
    darcs-hash:20080511102044-d4795-65d7d98315c0e524bfedb6b8a1949b6ea9557b93.gz

diff --git a/src/event.c b/src/event.c
index 29ce776..94eeb87 100644
--- a/src/event.c
+++ b/src/event.c
@@ -64,6 +64,10 @@ gdouble gfs_event_next (GfsEvent * event, GfsSimulation * sim)
 
 static gboolean gfs_event_event (GfsEvent * event, GfsSimulation * sim)
 {
+  if (event->redo) {
+    event->redo = FALSE;
+    return event->realised;
+  }
   if (event->t >= event->end ||
       event->i >= event->iend ||
       sim->time.t > event->end || 
@@ -444,6 +448,27 @@ void gfs_event_half_do (GfsEvent * event, GfsSimulation * sim)
     (* GFS_EVENT_CLASS (GTS_OBJECT (event)->klass)->event_half) (event, sim);
 }
 
+/**
+ * gfs_event_redo:
+ * @event: a #GfsEvent:
+ * @sim: a #GfsSimulation.
+ * 
+ * Realises the event if it has just been realised.
+ */
+void gfs_event_redo (GfsEvent * event, GfsSimulation * sim)
+{
+  GfsEventClass * klass;
+
+  g_return_if_fail (event != NULL);
+  g_return_if_fail (sim != NULL);
+
+  klass = GFS_EVENT_CLASS (GTS_OBJECT (event)->klass);
+  g_assert (klass->event);
+  event->redo = TRUE;
+  if ((* klass->event) (event, sim) && klass->post_event)
+    (* klass->post_event) (event, sim);
+}
+
 /* GfsGenericInit: Object */
 
 static void gfs_generic_init_init (GfsEvent * event)
diff --git a/src/event.h b/src/event.h
index a07eabc..ceaf86f 100644
--- a/src/event.h
+++ b/src/event.h
@@ -36,7 +36,7 @@ struct _GfsEvent {
   guint i, istart, iend, istep;
   
   guint n;
-  gboolean end_event, realised;
+  gboolean end_event, realised, redo;
 };
 
 typedef struct _GfsSimulation           GfsSimulation;
@@ -73,6 +73,8 @@ void            gfs_event_init        (GfsEvent * event,
 				       GfsSimulation * sim);
 void            gfs_event_do          (GfsEvent * event, 
 				       GfsSimulation * sim);
+void            gfs_event_redo        (GfsEvent * event, 
+				       GfsSimulation * sim);
 gdouble         gfs_event_next        (GfsEvent * event, 
 				       GfsSimulation * sim);
 void            gfs_event_half_do     (GfsEvent * event, 

-- 
Gerris Flow Solver



More information about the debian-science-commits mailing list