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

Stephane Popinet popinet at users.sf.net
Fri May 15 02:54:18 UTC 2009


The following commit has been merged in the upstream branch:
commit e42bae8a38c71339aca4f259c76b0b3844042a78
Author: Stephane Popinet <popinet at users.sf.net>
Date:   Fri Apr 20 13:44:00 2007 +1000

    Bug fix for "flattened" surfaces in RefineSurface
    
    darcs-hash:20070420034400-d4795-68fa9f7c9ad052c328e5e8a121f28ca0fe9ad14d.gz

diff --git a/src/refine.c b/src/refine.c
index 8c9b799..3ef7074 100644
--- a/src/refine.c
+++ b/src/refine.c
@@ -264,45 +264,24 @@ static void refine_surface_destroy (GtsObject * object)
 {
   GfsRefineSurface * d = GFS_REFINE_SURFACE (object);
 
-  if (d->surface)
-    gts_object_destroy (GTS_OBJECT (d->surface));
+  gts_object_destroy (GTS_OBJECT (d->surface));
 
   (* GTS_OBJECT_CLASS (gfs_refine_surface_class ())->parent_class->destroy) (object);
 }
 
 static void refine_surface_write (GtsObject * o, FILE * fp)
 {
-  GfsRefineSurface * d = GFS_REFINE_SURFACE (o);
-  
   (* GTS_OBJECT_CLASS (gfs_refine_surface_class ())->parent_class->write) (o, fp);
-  gfs_surface_write (d->surface, gfs_object_simulation (o), fp);
-  if (d->twod)
-    fputs (" { twod = 1 }\n", fp);
-  else
-    fputc ('\n', fp);
+  gfs_surface_write (GFS_REFINE_SURFACE (o)->surface, gfs_object_simulation (o), fp);
 }
 
 static void refine_surface_read (GtsObject ** o, GtsFile * fp)
 {
-  GfsRefineSurface * refine;
-
   (* GTS_OBJECT_CLASS (gfs_refine_surface_class ())->parent_class->read) (o, fp);
   if (fp->type == GTS_ERROR)
     return;
 
-  refine = GFS_REFINE_SURFACE (*o);
-  gfs_surface_read (refine->surface, gfs_object_simulation (*o), fp);
-  if (fp->type == GTS_ERROR)
-    return;
-
-  if (fp->type == '{') {
-    GtsFileVariable var[] = {
-      {GTS_INT, "twod", TRUE},
-      {GTS_NONE}
-    };
-    var[0].data = &refine->twod;
-    gts_file_assign_variables (fp, var);
-  }
+  gfs_surface_read (GFS_REFINE_SURFACE (*o)->surface, gfs_object_simulation (*o), fp);
 }
 
 static void gfs_refine_surface_refine (GfsRefine * refine, GfsSimulation * sim)
@@ -312,7 +291,7 @@ static void gfs_refine_surface_refine (GfsRefine * refine, GfsSimulation * sim)
   p.refine = refine;
   p.domain = GFS_DOMAIN (sim);
   p.surface = GFS_REFINE_SURFACE (refine)->surface;
-  if (GFS_REFINE_SURFACE (refine)->twod)
+  if (p.surface->twod)
     gfs_domain_traverse_cut_2D (GFS_DOMAIN (sim), GFS_REFINE_SURFACE (refine)->surface,
 				FTT_PRE_ORDER, FTT_TRAVERSE_LEAFS,
 				(FttCellTraverseCutFunc) refine_cut_cell, &p);
diff --git a/src/refine.h b/src/refine.h
index 4a4e6e8..b33d82d 100644
--- a/src/refine.h
+++ b/src/refine.h
@@ -76,7 +76,6 @@ struct _GfsRefineSurface {
   GfsRefine parent;
 
   GfsSurface * surface;
-  gboolean twod;
 };
 
 #define GFS_REFINE_SURFACE(obj)            GTS_OBJECT_CAST (obj,\
diff --git a/src/surface.c b/src/surface.c
index 93606f6..90c2156 100644
--- a/src/surface.c
+++ b/src/surface.c
@@ -124,7 +124,8 @@ static void surface_read (GtsObject ** o, GtsFile * fp)
       {GTS_DOUBLE, "tz", TRUE},
       {GTS_DOUBLE, "scale", TRUE},
       {GTS_DOUBLE, "angle", TRUE},
-      {GTS_INT,  "flip", TRUE},
+      {GTS_INT,    "flip", TRUE},
+      {GTS_INT,    "twod", TRUE},
       {GTS_NONE}
     };
     GtsFileVariable * v = var;
@@ -145,6 +146,7 @@ static void surface_read (GtsObject ** o, GtsFile * fp)
     (v++)->data = &surface->angle;
 
     (v++)->data = &surface->flip;
+    (v++)->data = &surface->twod;
 
     gts_file_assign_variables (fp, var);
     if (fp->type == GTS_ERROR)
@@ -225,6 +227,8 @@ static void surface_write (GtsObject * o, FILE * fp)
 	       surface->angle);
     if (surface->flip)
       fputs ("  flip = 1\n", fp);
+    if (surface->twod)
+      fputs ("  twod = 1\n", fp);
     fputc ('}', fp);
   }
 }
diff --git a/src/surface.h b/src/surface.h
index fd34729..fd01c02 100644
--- a/src/surface.h
+++ b/src/surface.h
@@ -33,11 +33,12 @@ struct _GfsSurface {
   GtsVector rotate, scale, translate;
   gdouble angle;
   gboolean flip;
+  GfsFunction * f;
+  GtsMatrix * m;
 
   /*< public >*/
   GtsSurface * s;
-  GfsFunction * f;
-  GtsMatrix * m;
+  gboolean twod;
 };
 
 typedef struct {

-- 
Gerris Flow Solver



More information about the debian-science-commits mailing list