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

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


The following commit has been merged in the upstream branch:
commit 2acd654be9c38370772b16cb37087b55b61f7051
Author: Stephane Popinet <popinet at users.sf.net>
Date:   Fri Jun 20 09:15:14 2008 +1000

    New object GfsBoundaryGradient
    
    darcs-hash:20080619231514-d4795-84ee0c045668b00b40640f89551b2ee9804b5ab8.gz

diff --git a/src/boundary.c b/src/boundary.c
index 74d8ea2..454939c 100644
--- a/src/boundary.c
+++ b/src/boundary.c
@@ -949,6 +949,61 @@ GfsBoundaryOutflowClass * gfs_boundary_outflow_class (void)
   return klass;
 }
 
+/* GfsBoundaryGradient: Object */
+
+static GtsColor gradient_color (GtsObject * o)
+{
+  GtsColor c = { 1., 1., 0. }; /* red-green */
+
+  return c;
+}
+
+static void set_gradient_boundary (FttCell * cell)
+{
+  cell->flags |= GFS_FLAG_GRADIENT_BOUNDARY;
+}
+
+static void gradient_read (GtsObject ** o, GtsFile * fp)
+{
+  GfsBoundary * b = GFS_BOUNDARY (*o);
+
+  if (GTS_OBJECT_CLASS (gfs_boundary_gradient_class ())->parent_class->read)
+    (* GTS_OBJECT_CLASS (gfs_boundary_gradient_class ())->parent_class->read) 
+      (o, fp);
+  if (fp->type == GTS_ERROR)
+    return;
+
+  ftt_cell_traverse (b->root, FTT_PRE_ORDER, FTT_TRAVERSE_ALL, -1,
+		     (FttCellTraverseFunc) set_gradient_boundary, NULL);
+}
+
+static void gfs_boundary_gradient_class_init (GfsBoundaryClass * klass)
+{
+  GTS_OBJECT_CLASS (klass)->read   = gradient_read;
+  GTS_OBJECT_CLASS (klass)->color  = gradient_color;
+}
+
+GfsBoundaryClass * gfs_boundary_gradient_class (void)
+{
+  static GfsBoundaryClass * klass = NULL;
+
+  if (klass == NULL) {
+    GtsObjectClassInfo gfs_boundary_gradient_info = {
+      "GfsBoundaryGradient",
+      sizeof (GfsBoundary),
+      sizeof (GfsBoundaryClass),
+      (GtsObjectClassInitFunc) gfs_boundary_gradient_class_init,
+      (GtsObjectInitFunc) NULL,
+      (GtsArgSetFunc) NULL,
+      (GtsArgGetFunc) NULL
+    };
+    klass = gts_object_class_new (GTS_OBJECT_CLASS (gfs_boundary_class ()),
+				  &gfs_boundary_gradient_info);
+  }
+
+  return klass;
+}
+
 /* GfsBoundaryPeriodic: object */
 
 static void boundary_periodic_destroy (GtsObject * object)
diff --git a/src/boundary.h b/src/boundary.h
index 9c16e9d..b457613 100644
--- a/src/boundary.h
+++ b/src/boundary.h
@@ -234,6 +234,13 @@ struct _GfsBoundaryOutflowClass {
      
 GfsBoundaryOutflowClass * gfs_boundary_outflow_class    (void);
 
+/* GfsBoundaryGradient: Header */
+
+#define GFS_IS_BOUNDARY_GRADIENT(obj)         (gts_object_is_from_class (obj,\
+					    gfs_boundary_gradient_class ()))
+     
+GfsBoundaryClass * gfs_boundary_gradient_class    (void);
+
 /* GfsBoundaryPeriodic: Header */
 
 typedef struct _GfsBoundaryPeriodic         GfsBoundaryPeriodic;
diff --git a/src/init.c b/src/init.c
index 3ce3a4e..238de7b 100644
--- a/src/init.c
+++ b/src/init.c
@@ -114,6 +114,7 @@ GtsObjectClass ** gfs_classes (void)
   gfs_boundary_class (),
     gfs_boundary_inflow_constant_class (),
     gfs_boundary_outflow_class (),
+    gfs_boundary_gradient_class (),
     gfs_boundary_periodic_class (),
 #ifdef HAVE_MPI
     gfs_boundary_mpi_class (),

-- 
Gerris Flow Solver



More information about the debian-science-commits mailing list