[SCM] Gerris Flow Solver branch, upstream, updated. b3aa46814a06c9cb2912790b23916ffb44f1f203
Stephane Popinet
popinet at users.sf.net
Fri May 15 02:55:56 UTC 2009
The following commit has been merged in the upstream branch:
commit 1d1c23a7e7c5d17d68130c5446d0b7946d1940cf
Author: Stephane Popinet <popinet at users.sf.net>
Date: Wed Dec 10 12:53:56 2008 +1100
Wetting-drying for GfsRiver
darcs-hash:20081210015356-d4795-3ed7cc13f805730626aefa542d7a5d080d5187e4.gz
diff --git a/src/river.c b/src/river.c
index c52608a..dc5a465 100644
--- a/src/river.c
+++ b/src/river.c
@@ -164,8 +164,13 @@ static void riemann_hllc (const gdouble * uL, const gdouble * uR,
f[2] = uL[2]*f[0];
else if (SM <= 0. && 0. <= SR)
f[2] = uR[2]*f[0];
- else
+ else {
+ fprintf (stderr, "L: %g %g %g R: %g %g %g\n",
+ uL[0], uL[1], uL[2],
+ uR[0], uR[1], uR[2]);
+ fprintf (stderr, "SL: %g SR: %g SM: %g\n", SL, SR, SM);
g_assert_not_reached ();
+ }
}
}
@@ -193,11 +198,16 @@ static void face_fluxes (FttCellFace * face, GfsRiver * r)
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 */
- g_assert (uL[0] > 0.);
- 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 */
+ if (uL[0] > 1e-6) {
+ 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)) {
@@ -205,11 +215,16 @@ static void face_fluxes (FttCellFace * face, GfsRiver * r)
/* 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 */
- g_assert (uR[0] > 0.);
- 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 */
+ if (uR[0] > 1e-6) {
+ 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;
--
Gerris Flow Solver
More information about the debian-science-commits
mailing list