[SCM] Gerris Flow Solver branch, upstream, updated. b3aa46814a06c9cb2912790b23916ffb44f1f203
Stephane Popinet
popinet at users.sf.net
Fri May 15 02:55:57 UTC 2009
The following commit has been merged in the upstream branch:
commit fef59259cd4cff148051dd414075a5c864be99de
Author: Stephane Popinet <popinet at users.sf.net>
Date: Sat Jan 10 11:53:47 2009 +1100
Cleaned up GfsRiver code
darcs-hash:20090110005347-d4795-b15c5db092cc7ec915576e6ef01bf01d8b74bb6b.gz
diff --git a/src/river.c b/src/river.c
index d37985f..110c7ad 100644
--- a/src/river.c
+++ b/src/river.c
@@ -186,82 +186,6 @@ typedef struct {
gdouble dv;
} Sym;
-#define ABBKP 1
-
-#if !ABBKP
-static void face_fluxes (FttCellFace * face, GfsRiver * r)
-{
- static Sym sym[4] = {
- {U, 1., V, 1.},
- {U, -1., V, -1.},
- {V, 1., U, -1.},
- {V, -1., U, 1.}
- };
- Sym * s = &sym[face->d];
- gdouble zb = gfs_face_interpolated_value (face, r->zb->i);
- gdouble uL[4], uR[4], f[3];
-
- uL[0] = (GFS_VALUE (face->cell, r->v1[0]) +
- s->du*GFS_VALUE (face->cell, r->dv[face->d/2][0])) - zb; /* h = eta - zb */
- if (uL[0] > DRY) {
- uL[1] = s->du*(GFS_VALUE (face->cell, r->v1[s->u]) +
- s->du*GFS_VALUE (face->cell, r->dv[face->d/2][s->u]))/uL[0]; /* u = uh/h */
- uL[2] = s->dv*(GFS_VALUE (face->cell, r->v1[s->v]) +
- s->du*GFS_VALUE (face->cell, r->dv[face->d/2][s->v]))/uL[0]; /* v = vh/h */
- }
- else {
- uL[0] = 0.;
- uL[1] = uL[2] = 0.;
- }
- uL[3] = zb;
-
- switch (ftt_face_type (face)) {
- case FTT_FINE_FINE: case FTT_FINE_COARSE:
- /* fixme: this is only first-order accurate for fine/coarse */
- uR[0] = (GFS_VALUE (face->neighbor, r->v1[0]) -
- s->du*GFS_VALUE (face->neighbor, r->dv[face->d/2][0])) - zb; /* h = eta - zb */
- if (uR[0] > DRY) {
- uR[1] = s->du*(GFS_VALUE (face->neighbor, r->v1[s->u]) -
- s->du*GFS_VALUE (face->neighbor, r->dv[face->d/2][s->u]))/uR[0]; /* u = uh/h */
- uR[2] = s->dv*(GFS_VALUE (face->neighbor, r->v1[s->v]) -
- s->du*GFS_VALUE (face->neighbor, r->dv[face->d/2][s->v]))/uR[0]; /* v = vh/h */
- }
- else {
- uR[0] = 0.;
- uR[1] = uR[2] = 0.;
- }
- uR[3] = zb;
- break;
-
- default:
- g_assert_not_reached ();
- }
-
- riemann_hllc (uL, uR, r->g, f);
-
- gdouble dt = gfs_domain_face_fraction (r->v[0]->domain, face)*r->dt/ftt_cell_size (face->cell);
- GFS_VALUE (face->cell, r->flux[0]) -= dt*f[0];
- GFS_VALUE (face->cell, r->flux[s->u]) -= s->du*dt*f[1];
- GFS_VALUE (face->cell, r->flux[s->v]) -= s->dv*dt*f[2];
-
- switch (ftt_face_type (face)) {
- case FTT_FINE_FINE:
- GFS_VALUE (face->neighbor, r->flux[0]) += dt*f[0];
- GFS_VALUE (face->neighbor, r->flux[s->u]) += s->du*dt*f[1];
- GFS_VALUE (face->neighbor, r->flux[s->v]) += s->dv*dt*f[2];
- break;
-
- case FTT_FINE_COARSE:
- GFS_VALUE (face->neighbor, r->flux[0]) += dt*f[0]/FTT_CELLS;
- GFS_VALUE (face->neighbor, r->flux[s->u]) += s->du*dt*f[1]/FTT_CELLS;
- GFS_VALUE (face->neighbor, r->flux[s->v]) += s->dv*dt*f[2]/FTT_CELLS;
- break;
-
- default:
- g_assert_not_reached ();
- }
-}
-#else
static void face_fluxes (FttCellFace * face, GfsRiver * r)
{
static Sym sym[4] = {
@@ -332,7 +256,6 @@ static void face_fluxes (FttCellFace * face, GfsRiver * r)
GFS_VALUE (face->neighbor, r->flux[s->u]) += f[1];
GFS_VALUE (face->neighbor, r->flux[s->v]) += f[2];
}
-#endif
/* GfsRiver: Object */
@@ -343,25 +266,6 @@ static void reset_fluxes (FttCell * cell, const GfsRiver * r)
GFS_VALUE (cell, r->flux[v]) = 0.;
}
-#if !ABBKP
-static void sources (FttCell * cell, GfsRiver * r)
-{
- gdouble eta = GFS_VALUE (cell, r->v1[0]);
- gdouble delta = ftt_cell_size (cell);
- FttCellFace f1, f2;
- FttCellNeighbors n;
- ftt_cell_neighbors (cell, &n);
- f1.cell = cell; f2.cell = cell;
- f1.d = FTT_RIGHT; f2.d = FTT_LEFT;
- f1.neighbor = n.c[f1.d]; f2.neighbor = n.c[f2.d];
- GFS_VALUE (cell, r->vc[1]) -= r->dt*r->g*eta*(gfs_face_interpolated_value (&f1, r->zb->i) -
- gfs_face_interpolated_value (&f2, r->zb->i))/delta;
- f1.d = FTT_TOP; f2.d = FTT_BOTTOM;
- f1.neighbor = n.c[f1.d]; f2.neighbor = n.c[f2.d];
- GFS_VALUE (cell, r->vc[2]) -= r->dt*r->g*eta*(gfs_face_interpolated_value (&f1, r->zb->i) -
- gfs_face_interpolated_value (&f2, r->zb->i))/delta;
-}
-#else
static void sources (FttCell * cell, GfsRiver * r)
{
gdouble delta = ftt_cell_size (cell);
@@ -380,7 +284,6 @@ static void sources (FttCell * cell, GfsRiver * r)
GFS_VALUE (cell, r->vc[2]) += r->dt*r->g/2.*(etaL + etaR)*(zbL - zbR)/delta;
}
-#endif
static void advance (GfsRiver * r, GfsVariable ** v, gdouble dt)
{
@@ -474,13 +377,7 @@ static void river_run (GfsSimulation * sim)
static void minimum_cfl (FttCell * cell, GfsRiver * r)
{
gdouble size = ftt_cell_size (cell);
-#if !ABBKP
- gdouble eta = GFS_VALUE (cell, r->v[0]);
- gdouble zb = GFS_VALUE (cell, r->zb);
- gdouble h = eta - zb;
-#else
gdouble h = GFS_VALUE (cell, r->v[0]);
-#endif
if (h > DRY) {
gdouble uh = fabs (GFS_VALUE (cell, r->v[1]));
gdouble c = sqrt (r->g*h);
--
Gerris Flow Solver
More information about the debian-science-commits
mailing list