[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