[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