43 Real hl4 = hl * hl * hl * hl;
48 Real hr4 = hr * hr * hr * hr;
59 potential -= GRAVITY * hl * wl_diff;
64 potential += GRAVITY * hr * wr_diff;
67 return - dt * potential;
77 Real hl4 = hl * hl * hl * hl;
82 Real hr4 = hr * hr * hr * hr;
86 Real hu = 0.5 * (hl * ul + hr * ur);
87 Real hm = 0.5f * (hl + hr);
88 Real hm4 = hm * hm * hm * hm;
90 Real vm = 0.5f * (vl + vr);
94 Real uh_hat = h_hat * um;
95 Real vh_hat = h_hat * vm;
98 Coord4D flux =
minimum(alpha,
POSITIVTY) * Coord4D(uh_hat, uh_hat * um, vh_hat * um, 0.0f);
110 Real hl4 = hl * hl * hl * hl;
115 Real hr4 = hr * hr * hr * hr;
119 Real hv = 0.5 * (hl * vl + hr * vr);
120 Real hm = 0.5f * (hl + hr);
121 Real hm4 = hm * hm * hm * hm;
122 Real um = 0.5f * (ul + ur);
127 Real uh_hat = h_hat * um;
128 Real vh_hat = h_hat * vm;
131 Coord4D flux =
minimum(alpha,
POSITIVTY) * Coord4D(vh_hat, uh_hat * vm, vh_hat * vm, 0.0f);
142 Real b = 0.5f * (gpl.w + gpr.w);
145 Real hl4 = hl * hl * hl * hl;
149 Real hr4 = hr * hr * hr * hr;
154 return Coord4D(0.0f);
162 Coord4D delta_U = gpr - gpl;
164 delta_U.x += delta_U.w;
169 Coord4D Fl = Coord4D(gpl.y, gpl.y * ul, gpl.z * ul, 0.0f);
170 Coord4D Fr = Coord4D(gpr.y, gpr.y * ur, gpr.z * ur, 0.0f);
172 Coord4D re = (a_plus * Fl - a_minus * Fr) / (a_plus - a_minus +
EPSILON) + a_plus * a_minus / (a_plus - a_minus +
EPSILON) * delta_U;
174 if (ul == 0 && ur == 0) {
189 Real hl4 = hl * hl * hl * hl;
190 Real vl = sqrtf(2.0f) * hl * gpl.z / (sqrtf(hl4 +
max(hl4,
EPSILON)));
193 Real hr4 = hr * hr * hr * hr;
194 Real vr = sqrtf(2.0f) * hr * gpr.z / (sqrtf(hr4 +
max(hr4,
EPSILON)));
198 return Coord4D(0.0f);
204 Real b = 0.5f * (gpl.w + gpr.w);
206 Coord4D delta_U = gpr - gpl;
209 delta_U.x += delta_U.w;
213 Coord4D Fl = Coord4D(gpl.z, gpl.y * vl, gpl.z * vl, 0.0f);
214 Coord4D Fr = Coord4D(gpr.z, gpr.y * vr, gpr.z * vr, 0.0f);
216 Coord4D re = (a_plus * Fl - a_minus * Fr) / (a_plus - a_minus) + a_plus * a_minus / (a_plus - a_minus) * delta_U;
218 if (vl == 0 && vr == 0)