[SCM] Gerris Flow Solver branch, upstream, updated. b3aa46814a06c9cb2912790b23916ffb44f1f203
Stephane Popinet
popinet at users.sf.net
Fri May 15 02:55:51 UTC 2009
The following commit has been merged in the upstream branch:
commit c2aba03f0c0aa6532dbc09e78f6cf2c0dfe29dc3
Author: Stephane Popinet <popinet at users.sf.net>
Date: Tue Nov 4 08:08:45 2008 +1100
Slip length in BcNavier is now a GfsFunction
darcs-hash:20081103210845-d4795-688060af5c359598598b6334b10eed84c5a3ee29.gz
diff --git a/src/boundary.c b/src/boundary.c
index ba25562..e53b539 100644
--- a/src/boundary.c
+++ b/src/boundary.c
@@ -356,7 +356,7 @@ GfsBcClass * gfs_bc_neumann_class (void)
static void navier (FttCellFace * f, GfsBc * b)
{
gdouble h = ftt_cell_size (f->cell);
- gdouble lambda = GFS_BC_NAVIER (b)->lambda;
+ gdouble lambda = gfs_function_face_value (GFS_BC_NAVIER (b)->lambda, f);
GFS_VARIABLE (f->cell, b->v->i) =
(2.*gfs_function_face_value (GFS_BC_VALUE (b)->val, f)*h
- (h - 2.*lambda)*GFS_VARIABLE (f->neighbor, b->v->i))/(h + 2.*lambda);
@@ -365,7 +365,7 @@ static void navier (FttCellFace * f, GfsBc * b)
static void face_navier (FttCellFace * f, GfsBc * b)
{
gdouble h = ftt_cell_size (f->cell);
- gdouble lambda = GFS_BC_NAVIER (b)->lambda;
+ gdouble lambda = gfs_function_face_value (GFS_BC_NAVIER (b)->lambda, f);
GFS_STATE (f->cell)->f[f->d].v = GFS_STATE (f->neighbor)->f[FTT_OPPOSITE_DIRECTION (f->d)].v =
(gfs_function_face_value (GFS_BC_VALUE (b)->val, f)*h +
2.*lambda*GFS_VARIABLE (f->neighbor, b->v->i))/(h + 2.*lambda);
@@ -377,15 +377,18 @@ static void bc_navier_read (GtsObject ** o, GtsFile * fp)
(* GTS_OBJECT_CLASS (gfs_bc_navier_class ())->parent_class->read) (o, fp);
if (fp->type == GTS_ERROR)
return;
-
- /* fixme: units? */
- GFS_BC_NAVIER (*o)->lambda = gfs_read_constant (fp, gfs_box_domain (GFS_BC (*o)->b->box));
+ GfsBcNavier * bc = GFS_BC_NAVIER (*o);
+ if (bc->lambda == NULL)
+ bc->lambda = gfs_function_new (gfs_function_class (), 0.);
+ gfs_function_set_units (bc->lambda, 1.);
+ gfs_function_read (bc->lambda, gfs_box_domain (GFS_BC (bc)->b->box), fp);
}
static void bc_navier_write (GtsObject * o, FILE * fp)
{
(* GTS_OBJECT_CLASS (gfs_bc_navier_class ())->parent_class->write) (o, fp);
- fprintf (fp, " %g", GFS_BC_NAVIER (o)->lambda);
+ if (GFS_BC_NAVIER (o)->lambda)
+ gfs_function_write (GFS_BC_NAVIER (o)->lambda, fp);
}
static void gfs_bc_navier_init (GfsBc * object)
diff --git a/src/boundary.h b/src/boundary.h
index f3d8820..f0c7b4e 100644
--- a/src/boundary.h
+++ b/src/boundary.h
@@ -112,7 +112,7 @@ struct _GfsBcNavier {
GfsBcValue parent;
/*< public >*/
- gdouble lambda;
+ GfsFunction * lambda;
};
#define GFS_BC_NAVIER(obj) GTS_OBJECT_CAST (obj,\
--
Gerris Flow Solver
More information about the debian-science-commits
mailing list