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

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


The following commit has been merged in the upstream branch:
commit d9b65198dbd3471336ec1cd72f6f2a0efaa71b0a
Author: Stephane Popinet <popinet at users.sourceforge.net>
Date:   Mon Nov 22 14:55:09 2004 +1100

    Refinements interpolate existing values (gerris--ocean--0.7--patch-18)
    
    gerris--ocean--0.7--patch-18
    Keywords:
    
    This allows to restart a simulation while changing the refinements of
    some parts.
    
    darcs-hash:20041122035509-aabb8-669863fa3b50503a95d03127fed3049621068f6c.gz

diff --git a/src/domain.c b/src/domain.c
index c074e2e..932f209 100644
--- a/src/domain.c
+++ b/src/domain.c
@@ -226,6 +226,8 @@ static void domain_post_read (GfsDomain * domain, GtsFile * fp)
     g_slist_free (removed);
   }
 #endif /* HAVE_MPI */
+
+  gfs_domain_match (domain);
 }
 
 static void free_pair (gpointer key, gpointer value)
diff --git a/src/refine.c b/src/refine.c
index 416c464..d15d884 100644
--- a/src/refine.c
+++ b/src/refine.c
@@ -20,6 +20,7 @@
 #include <stdlib.h>
 #include "refine.h"
 #include "solid.h"
+#include "adaptive.h"
 
 /* GfsRefine: Object */
 
@@ -35,7 +36,7 @@ static void refine_box (GfsBox * box, GfsFunction * maxlevel)
 {
   ftt_cell_refine (box->root, 
 		   (FttCellRefineFunc) refine_maxlevel, maxlevel,
-		   (FttCellInitFunc) gfs_cell_init, gfs_box_domain (box));
+		   (FttCellInitFunc) gfs_cell_fine_init, gfs_box_domain (box));
 }
 
 static void gfs_refine_refine (GfsRefine * refine, GfsSimulation * sim)
@@ -146,7 +147,7 @@ static void refine_cut_cell (FttCell * cell, GtsSurface * s, gpointer * data)
 
   ftt_cell_pos (cell, &p);
   if (ftt_cell_level (cell) < gfs_function_value (refine->maxlevel, &p, 0.))
-    ftt_cell_refine_single (cell, (FttCellInitFunc) gfs_cell_init, domain);
+    ftt_cell_refine_single (cell, (FttCellInitFunc) gfs_cell_fine_init, domain);
 }
 
 static void gfs_refine_solid_refine (GfsRefine * refine, GfsSimulation * sim)
@@ -155,7 +156,7 @@ static void gfs_refine_solid_refine (GfsRefine * refine, GfsSimulation * sim)
     gpointer data[2];
 
     data[0] = refine;
-    data[1] = sim;
+    data[1] = sim;    
     gfs_domain_traverse_cut (GFS_DOMAIN (sim), sim->surface, 
 			     FTT_PRE_ORDER, FTT_TRAVERSE_LEAFS,
 			     (FttCellTraverseCutFunc) refine_cut_cell, data);
@@ -264,7 +265,7 @@ static void refine_surface_read (GtsObject ** o, GtsFile * fp)
 static void gfs_refine_surface_refine (GfsRefine * refine, GfsSimulation * sim)
 {
   gpointer data[2];
-  
+
   data[0] = refine;
   data[1] = sim;
   gfs_domain_traverse_cut (GFS_DOMAIN (sim), GFS_REFINE_SURFACE (refine)->surface,
@@ -348,7 +349,7 @@ static void refine_distance (GfsBox * box, gpointer data)
 {
   ftt_cell_refine (box->root, 
 		   (FttCellRefineFunc) refine_distance_maxlevel, data,
-		   (FttCellInitFunc) gfs_cell_init, gfs_box_domain (box));
+		   (FttCellInitFunc) gfs_cell_fine_init, gfs_box_domain (box));
 }
 
 static void refine_distance_refine (GfsRefine * refine, GfsSimulation * sim)
@@ -447,7 +448,7 @@ static void refine_height (GfsBox * box, gpointer data)
   datum[1] = &guess;
   ftt_cell_refine (box->root, 
 		   (FttCellRefineFunc) refine_height_maxlevel, datum,
-		   (FttCellInitFunc) gfs_cell_init, gfs_box_domain (box));
+		   (FttCellInitFunc) gfs_cell_fine_init, gfs_box_domain (box));
 }
 
 static void refine_height_refine (GfsRefine * refine, GfsSimulation * sim)
diff --git a/src/simulation.c b/src/simulation.c
index bd80d0f..7c28f2c 100644
--- a/src/simulation.c
+++ b/src/simulation.c
@@ -381,7 +381,7 @@ static void simulation_read (GtsObject ** object, GtsFile * fp)
 	gchar * name, * path;
 	GModule * module;
 
-	name = g_strconcat (fp->token->str, FTT_DIMENSION == 2 ? "2D" : "3D");
+	name = g_strconcat (fp->token->str, FTT_DIMENSION == 2 ? "2D" : "3D", NULL);
 	path = g_module_build_path (GFS_MODULES_DIR, name);
 	g_free (name);
 	module = g_module_open (path, 0);
@@ -691,7 +691,7 @@ GfsSimulation * gfs_simulation_new (GfsSimulationClass * klass)
 static void refine_cell_corner (FttCell * cell, GfsDomain * domain)
 {
   if (ftt_refine_corner (cell))
-    ftt_cell_refine_single (cell, (FttCellInitFunc) gfs_cell_init, domain);
+    ftt_cell_refine_single (cell, (FttCellInitFunc) gfs_cell_fine_init, domain);
 }
 
 static void check_face (FttCellFace * f, guint * nf)
diff --git a/src/solid.c b/src/solid.c
index ee8d4bb..b859b41 100644
--- a/src/solid.c
+++ b/src/solid.c
@@ -492,7 +492,7 @@ void gfs_cell_init_solid_fractions_from_children (FttCell * cell)
       }
       else {
 	GfsSolidVector * solid = GFS_STATE (child.c[i])->solid;
-	gdouble sa = solid_sa (solid);
+	gdouble sa = solid_sa (solid) + 1e-9;
 
 	w += solid->a; wa += sa;
 	cm.x += solid->cm.x*solid->a;

-- 
Gerris Flow Solver



More information about the debian-science-commits mailing list