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

Stephane Popinet popinet at users.sourceforge.net
Fri May 15 02:51:16 UTC 2009


The following commit has been merged in the upstream branch:
commit 70736752da4ad7bf69b52cb744ef031a430aa005
Author: Stephane Popinet <popinet at users.sourceforge.net>
Date:   Wed Oct 20 14:56:25 2004 +1000

    Replaced GfsOutputStreakline with GfsOutputParticle (gerris--mainline--0.7--patch-4)
    
    gerris--mainline--0.7--patch-4
    Keywords:
    
    GfsOutputStreakline was weird. GfsOutputParticle is a lagrangian
    tracer integrator.
    
    darcs-hash:20041020045625-aabb8-c939ede3b11ae4c0431c985bf9203a40630f16f3.gz

diff --git a/src/init.c b/src/init.c
index 6d07019..934f3fb 100644
--- a/src/init.c
+++ b/src/init.c
@@ -280,6 +280,7 @@ void gfs_init (int * argc, char *** argv)
       gfs_output_simulation_class ();
       gfs_output_boundaries_class ();
       gfs_output_energy_class ();
+      gfs_output_particle_class ();
 
       gfs_output_scalar_class ();
         gfs_output_scalar_norm_class ();
@@ -289,7 +290,6 @@ void gfs_init (int * argc, char *** argv)
           gfs_output_correlation_class ();
 	gfs_output_squares_class ();
 	gfs_output_streamline_class ();
-	gfs_output_streakline_class ();
         gfs_output_ppm_class ();
 
   /* If modules are not supported, calls modules init functions */
diff --git a/src/output.c b/src/output.c
index 7f1ffda..44f9e29 100644
--- a/src/output.c
+++ b/src/output.c
@@ -2213,26 +2213,23 @@ GfsOutputClass * gfs_output_streamline_class (void)
   return klass;
 }
 
-/* GfsOutputStreakline: Object */
+/* GfsOutputParticle: Object */
 
-static void gfs_output_streakline_destroy (GtsObject * o)
+static void gfs_output_particle_destroy (GtsObject * o)
 {
-  GfsOutputStreakline * l = GFS_OUTPUT_STREAKLINE (o);
+  GfsOutputParticle * l = GFS_OUTPUT_PARTICLE (o);
 
   gts_object_destroy (GTS_OBJECT (l->p));
-  g_slist_foreach (l->streak, (GFunc) gts_object_destroy, NULL);
-  g_slist_free (l->streak);
   
-  (* GTS_OBJECT_CLASS (gfs_output_streakline_class ())->parent_class->destroy) 
-    (o);
+  (* GTS_OBJECT_CLASS (gfs_output_particle_class ())->parent_class->destroy) (o);
 }
 
-static void gfs_output_streakline_read (GtsObject ** o, GtsFile * fp)
+static void gfs_output_particle_read (GtsObject ** o, GtsFile * fp)
 {
-  GfsOutputStreakline * l = GFS_OUTPUT_STREAKLINE (*o);
+  GfsOutputParticle * l = GFS_OUTPUT_PARTICLE (*o);
 
-  if (GTS_OBJECT_CLASS (gfs_output_streakline_class ())->parent_class->read)
-    (* GTS_OBJECT_CLASS (gfs_output_streakline_class ())->parent_class->read) 
+  if (GTS_OBJECT_CLASS (gfs_output_particle_class ())->parent_class->read)
+    (* GTS_OBJECT_CLASS (gfs_output_particle_class ())->parent_class->read) 
       (o, fp);
   if (fp->type == GTS_ERROR)
     return;
@@ -2257,99 +2254,64 @@ static void gfs_output_streakline_read (GtsObject ** o, GtsFile * fp)
   }
   l->p->z = atof (fp->token->str);
   gts_file_next_token (fp);
-
-  if (fp->type != GTS_INT && fp->type != GTS_FLOAT) {
-    gts_file_error (fp, "expecting a number (ds)");
-    return;
-  }
-  l->ds = atof (fp->token->str);
-  gts_file_next_token (fp);
-
-  l->streak = g_slist_prepend (l->streak, 
-			       gts_point_new (gts_point_class (), 
-					      l->p->x, l->p->y, l->p->z));
 }
 
-static void gfs_output_streakline_write (GtsObject * o, FILE * fp)
+static void gfs_output_particle_write (GtsObject * o, FILE * fp)
 {
-  GfsOutputStreakline * l = GFS_OUTPUT_STREAKLINE (o);
+  GfsOutputParticle * l = GFS_OUTPUT_PARTICLE (o);
 
-  if (GTS_OBJECT_CLASS (gfs_output_streakline_class ())->parent_class->write)
-    (* GTS_OBJECT_CLASS (gfs_output_streakline_class ())->parent_class->write) 
-      (o, fp);
-  fprintf (fp, " %g %g %g %g", l->p->x, l->p->y, l->p->z, l->ds);
+  if (GTS_OBJECT_CLASS (gfs_output_particle_class ())->parent_class->write)
+    (* GTS_OBJECT_CLASS (gfs_output_particle_class ())->parent_class->write) (o, fp);
+  fprintf (fp, " %g %g %g", l->p->x, l->p->y, l->p->z);
 }
 
-static void advect_point (GtsPoint * p, GfsSimulation * sim)
-{
-  gfs_domain_advect_point (GFS_DOMAIN (sim), p, sim->advection_params.dt);
-}
-
-static gboolean gfs_output_streakline_event (GfsEvent * event, 
-					    GfsSimulation * sim)
+static gboolean gfs_output_particle_event (GfsEvent * event, 
+					   GfsSimulation * sim)
 {
-  GfsOutputStreakline * l = GFS_OUTPUT_STREAKLINE (event);
+  GfsOutputParticle * l = GFS_OUTPUT_PARTICLE (event);
   gboolean ret = FALSE;
 
-  if ((* GFS_EVENT_CLASS (GTS_OBJECT_CLASS (gfs_output_streakline_class ())->parent_class)->event) (event,sim)) {
+  if ((* GFS_EVENT_CLASS (GTS_OBJECT_CLASS (gfs_output_particle_class ())->parent_class)->event)
+      (event,sim)) {
     FILE * fp = GFS_OUTPUT (event)->file->fp;
-    GSList * i = l->streak;
-
-    fprintf (fp, "%s %u\n", 
-	     GTS_OBJECT (event)->klass->info.name, 
-	     g_slist_length (i));
-    while (i) {
-      fprintf (fp, "%g %g %g\n", 
-	       GTS_POINT (i->data)->x, 
-	       GTS_POINT (i->data)->y, 
-	       GTS_POINT (i->data)->z);
-      i = i->next;
-    }
-    l->started = ret = TRUE;
-  }
-  if (l->started) {
-    if (gts_point_distance2 (l->p, l->streak->data) >= l->ds*l->ds)
-      l->streak = g_slist_prepend (l->streak, 
-				   gts_point_new (gts_point_class (), 
-						  l->p->x, l->p->y, l->p->z));
-    g_slist_foreach (l->streak, (GFunc) advect_point, sim);
+
+    fprintf (fp, "%g %g %g %g\n", sim->time.t, l->p->x, l->p->y, l->p->z);
+    ret = TRUE;
   }
+  gfs_domain_advect_point (GFS_DOMAIN (sim), l->p, sim->advection_params.dt);
   return ret;
 }
 
-static void gfs_output_streakline_class_init (GfsOutputClass * klass)
+static void gfs_output_particle_class_init (GfsOutputClass * klass)
 {
-  GFS_EVENT_CLASS (klass)->event = gfs_output_streakline_event;
-  GTS_OBJECT_CLASS (klass)->read = gfs_output_streakline_read;
-  GTS_OBJECT_CLASS (klass)->write = gfs_output_streakline_write;
-  GTS_OBJECT_CLASS (klass)->destroy = gfs_output_streakline_destroy;
+  GFS_EVENT_CLASS (klass)->event = gfs_output_particle_event;
+  GTS_OBJECT_CLASS (klass)->read = gfs_output_particle_read;
+  GTS_OBJECT_CLASS (klass)->write = gfs_output_particle_write;
+  GTS_OBJECT_CLASS (klass)->destroy = gfs_output_particle_destroy;
 }
 
-static void gfs_output_streakline_init (GfsOutputStreakline * l)
+static void gfs_output_particle_init (GfsOutputParticle * l)
 {
-  l->started = FALSE;
-  l->ds = G_MAXDOUBLE;
   l->p = gts_point_new (gts_point_class (), 0., 0., 0.);
-  l->streak = NULL;
 }
 
-GfsOutputClass * gfs_output_streakline_class (void)
+GfsOutputClass * gfs_output_particle_class (void)
 {
   static GfsOutputClass * klass = NULL;
 
   if (klass == NULL) {
-    GtsObjectClassInfo gfs_output_streakline_info = {
-      "GfsOutputStreakline",
-      sizeof (GfsOutputStreakline),
+    GtsObjectClassInfo gfs_output_particle_info = {
+      "GfsOutputParticle",
+      sizeof (GfsOutputParticle),
       sizeof (GfsOutputClass),
-      (GtsObjectClassInitFunc) gfs_output_streakline_class_init,
-      (GtsObjectInitFunc) gfs_output_streakline_init,
+      (GtsObjectClassInitFunc) gfs_output_particle_class_init,
+      (GtsObjectInitFunc) gfs_output_particle_init,
       (GtsArgSetFunc) NULL,
       (GtsArgGetFunc) NULL
     };
     klass = gts_object_class_new (GTS_OBJECT_CLASS 
-				  (gfs_output_scalar_class ()),
-				  &gfs_output_streakline_info);
+				  (gfs_output_class ()),
+				  &gfs_output_particle_info);
   }
 
   return klass;
diff --git a/src/output.h b/src/output.h
index e4072b0..a4d80ad 100644
--- a/src/output.h
+++ b/src/output.h
@@ -244,29 +244,25 @@ struct _GfsOutputStreamline {
 
 GfsOutputClass * gfs_output_streamline_class  (void);
 
-/* GfsOutputStreakline: Header */
+/* GfsOutputParticle: Header */
 
-typedef struct _GfsOutputStreakline         GfsOutputStreakline;
+typedef struct _GfsOutputParticle         GfsOutputParticle;
 
-struct _GfsOutputStreakline {
+struct _GfsOutputParticle {
   /*< private >*/
-  GfsOutputScalar parent;
-
-  gboolean started;
-  gdouble ds;
+  GfsOutput parent;
 
   /*< public >*/
   GtsPoint * p;
-  GSList * streak;
 };
 
-#define GFS_OUTPUT_STREAKLINE(obj)         GTS_OBJECT_CAST (obj,\
-					       GfsOutputStreakline,\
-					       gfs_output_streakline_class ())
-#define GFS_IS_OUTPUT_STREAKLINE(obj)     (gts_object_is_from_class (obj,\
-					       gfs_output_streakline_class ()))
+#define GFS_OUTPUT_PARTICLE(obj)         GTS_OBJECT_CAST (obj,\
+					       GfsOutputParticle,\
+					       gfs_output_particle_class ())
+#define GFS_IS_OUTPUT_PARTICLE(obj)     (gts_object_is_from_class (obj,\
+					       gfs_output_particle_class ()))
 
-GfsOutputClass * gfs_output_streakline_class  (void);
+GfsOutputClass * gfs_output_particle_class  (void);
 
 /* GfsOutputPPM: Header */
 

-- 
Gerris Flow Solver



More information about the debian-science-commits mailing list