@@ -242,47 +242,42 @@ void Hydro::RiemannSolver(const int k, const int j, const int il, const int iu,
242242 // (KGF): group transverse by, bz terms for floating-point associativity symmetry
243243 urst.e = (sdr*ur.e - ptr*wri[IVX] + ptst*spd[2 ] +
244244 bxi*(wri[IVX]*bxi + (wri[IVY]*ur.by + wri[IVZ]*ur.bz ) - vbstr))*sdmr_inv;
245- // ul** and ur** - if Bx is near zero, same as *-states
246- if (0.5 *bxsq < (SMALL_NUMBER)*ptst) {
247- uldst = ulst;
248- urdst = urst;
249- } else {
250- Real invsumd = 1.0 /(sqrtdl + sqrtdr);
251- Real bxsig = (bxi > 0.0 ? 1.0 : -1.0 );
252-
253- uldst.d = ulst.d ;
254- urdst.d = urst.d ;
255-
256- uldst.mx = ulst.mx ;
257- urdst.mx = urst.mx ;
258-
259- // eqn (59) of M&K
260- Real tmp = invsumd*(sqrtdl*(ulst.my *ulst_d_inv) + sqrtdr*(urst.my *urst_d_inv) +
261- bxsig*(urst.by - ulst.by ));
262- uldst.my = uldst.d * tmp;
263- urdst.my = urdst.d * tmp;
264-
265- // eqn (60) of M&K
266- tmp = invsumd*(sqrtdl*(ulst.mz *ulst_d_inv) + sqrtdr*(urst.mz *urst_d_inv) +
267- bxsig*(urst.bz - ulst.bz ));
268- uldst.mz = uldst.d * tmp;
269- urdst.mz = urdst.d * tmp;
270-
271- // eqn (61) of M&K
272- tmp = invsumd*(sqrtdl*urst.by + sqrtdr*ulst.by +
273- bxsig*sqrtdl*sqrtdr*((urst.my *urst_d_inv) - (ulst.my *ulst_d_inv)));
274- uldst.by = urdst.by = tmp;
275-
276- // eqn (62) of M&K
277- tmp = invsumd*(sqrtdl*urst.bz + sqrtdr*ulst.bz +
278- bxsig*sqrtdl*sqrtdr*((urst.mz *urst_d_inv) - (ulst.mz *ulst_d_inv)));
279- uldst.bz = urdst.bz = tmp;
280-
281- // eqn (63) of M&K
282- tmp = spd[2 ]*bxi + (uldst.my *uldst.by + uldst.mz *uldst.bz )/uldst.d ;
283- uldst.e = ulst.e - sqrtdl*bxsig*(vbstl - tmp);
284- urdst.e = urst.e + sqrtdr*bxsig*(vbstr - tmp);
285- }
245+
246+ Real invsumd = 1.0 /(sqrtdl + sqrtdr);
247+ Real bxsig = (bxi > 0.0 ? 1.0 : -1.0 );
248+
249+ uldst.d = ulst.d ;
250+ urdst.d = urst.d ;
251+
252+ uldst.mx = ulst.mx ;
253+ urdst.mx = urst.mx ;
254+
255+ // eqn (59) of M&K
256+ Real tmp = invsumd*(sqrtdl*(ulst.my *ulst_d_inv) + sqrtdr*(urst.my *urst_d_inv) +
257+ bxsig*(urst.by - ulst.by ));
258+ uldst.my = uldst.d * tmp;
259+ urdst.my = urdst.d * tmp;
260+
261+ // eqn (60) of M&K
262+ tmp = invsumd*(sqrtdl*(ulst.mz *ulst_d_inv) + sqrtdr*(urst.mz *urst_d_inv) +
263+ bxsig*(urst.bz - ulst.bz ));
264+ uldst.mz = uldst.d * tmp;
265+ urdst.mz = urdst.d * tmp;
266+
267+ // eqn (61) of M&K
268+ tmp = invsumd*(sqrtdl*urst.by + sqrtdr*ulst.by +
269+ bxsig*sqrtdl*sqrtdr*((urst.my *urst_d_inv) - (ulst.my *ulst_d_inv)));
270+ uldst.by = urdst.by = tmp;
271+
272+ // eqn (62) of M&K
273+ tmp = invsumd*(sqrtdl*urst.bz + sqrtdr*ulst.bz +
274+ bxsig*sqrtdl*sqrtdr*((urst.mz *urst_d_inv) - (ulst.mz *ulst_d_inv)));
275+ uldst.bz = urdst.bz = tmp;
276+
277+ // eqn (63) of M&K
278+ tmp = spd[2 ]*bxi + (uldst.my *uldst.by + uldst.mz *uldst.bz )/uldst.d ;
279+ uldst.e = ulst.e - sqrtdl*bxsig*(vbstl - tmp);
280+ urdst.e = urst.e + sqrtdr*bxsig*(vbstr - tmp);
286281
287282 // --- Step 6. Compute flux
288283 uldst.d = spd[1 ] * (uldst.d - ulst.d );
@@ -344,6 +339,15 @@ void Hydro::RiemannSolver(const int k, const int j, const int il, const int iu,
344339 flxi[IEN] = fl.e + ulst.e ;
345340 flxi[IBY] = fl.by + ulst.by ;
346341 flxi[IBZ] = fl.bz + ulst.bz ;
342+ } else if (spd[3 ] <= 0.0 ) {
343+ // return Fr*
344+ flxi[IDN] = fr.d + urst.d ;
345+ flxi[IVX] = fr.mx + urst.mx ;
346+ flxi[IVY] = fr.my + urst.my ;
347+ flxi[IVZ] = fr.mz + urst.mz ;
348+ flxi[IEN] = fr.e + urst.e ;
349+ flxi[IBY] = fr.by + urst.by ;
350+ flxi[IBZ] = fr.bz + urst.bz ;
347351 } else if (spd[2 ] >= 0.0 ) {
348352 // return Fl**
349353 flxi[IDN] = fl.d + ulst.d + uldst.d ;
@@ -353,7 +357,7 @@ void Hydro::RiemannSolver(const int k, const int j, const int il, const int iu,
353357 flxi[IEN] = fl.e + ulst.e + uldst.e ;
354358 flxi[IBY] = fl.by + ulst.by + uldst.by ;
355359 flxi[IBZ] = fl.bz + ulst.bz + uldst.bz ;
356- } else if (spd[ 3 ] > 0.0 ) {
360+ } else {
357361 // return Fr**
358362 flxi[IDN] = fr.d + urst.d + urdst.d ;
359363 flxi[IVX] = fr.mx + urst.mx + urdst.mx ;
@@ -362,15 +366,6 @@ void Hydro::RiemannSolver(const int k, const int j, const int il, const int iu,
362366 flxi[IEN] = fr.e + urst.e + urdst.e ;
363367 flxi[IBY] = fr.by + urst.by + urdst.by ;
364368 flxi[IBZ] = fr.bz + urst.bz + urdst.bz ;
365- } else {
366- // return Fr*
367- flxi[IDN] = fr.d + urst.d ;
368- flxi[IVX] = fr.mx + urst.mx ;
369- flxi[IVY] = fr.my + urst.my ;
370- flxi[IVZ] = fr.mz + urst.mz ;
371- flxi[IEN] = fr.e + urst.e ;
372- flxi[IBY] = fr.by + urst.by ;
373- flxi[IBZ] = fr.bz + urst.bz ;
374369 }
375370
376371 flx (IDN,k,j,i) = flxi[IDN];
0 commit comments