-
Notifications
You must be signed in to change notification settings - Fork 65
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Update to JCP GeoClaw Riemann solver #111
Update to JCP GeoClaw Riemann solver #111
Conversation
…locity jump into fw(3,1) or fw(3,3) depending on interface velocity rather than into fw(3,2), as suggested by Wenwen Li. This avoids some cases where transverse velocity does not propagate past jump in bathymetry, may improve some instability issues.
I tested this out and as expected we get slightly different results and the tests no longer pass with
|
@mandli: let's wait until clawpack/geoclaw#225 is passing Travis tests and merged in and then update the geoclaw regression tests to merge this. |
+1 |
Modify sonic check slightly
The regression data in GeoClaw has been updated in clawpack/geoclaw#228. |
I will merge this and then update regression data in geoclaw. |
Regression data update for clawpack/riemann#111
Some modifications proposed by Wenwen Li to deal with sonic point better and to properly handle transverse velocities. I've been using this version on several problems recently and it seems fine, and works better in some cases.
Note: These changes will cause some geoclaw regression tests to fail, so the regression data should be updated in geoclaw.
This may help with certain instability issues as in clawpack/geoclaw#209.
Some notes from her email to me:
GeoClaw uses the same threshold value ‘criticaltol’ for all criteria; however, ‘s1s2bar’ and ‘s1s2tilde’ have the unit of (m/s)^2, and sE1, sE2, s1m, s2m, uL and uR have the unit of m/s. So I think it might be better to use different threshold values for different lines. I propose to set the threshold values based on the value of sqrt(drytol*g)
I had been noticing that there were horizontal/vertical lines in velocity and momentum plots for some tsunami scenarios --
When waves propagate from a deep cell towards a shallow cell (assuming huL > 0, huR > 0, hvL ≠ 0, hvR = 0), at the topo-jump interface, it is possible that s(1) < 0, s(2) < 0 and s(3) > 0. In GeoClaw Riemann solver, the hv component of all three fluxes Fw(1), Fw(2) and Fw(3) were calculated as below (a):
If vR==0, then the hv component of Fw(3) will always be zero, which means the hv component of the left cell cannot affect the right cell even if there should be mass transfer from left to right (since uL, vL > 0). Furthermore, as long as s(2) < 0, the value of hvL won’t affect the hv component of Fw(3), so it won’t affect the hv component of the right cell at all, even if both uL and uR could be rightward. Thus the hv component will be trapped and accumulated at the left cell since there is incoming hv flux from the left but no outgoing hv flux.
The above issue is due to s(2) being not always in the same direction of real mass flux at the interface. Since s(2) is closely related to the calculations of flux for h and hu components, instead of changing s(2) itself, we could give a better estimation of real mass flux at the interface then distribute the hv flux component between fw(1) and fw(3) only.
In GeoClaw Riemann solver, the h flux component is zero for mid-wave (fw(2).h = 0) and Fw(1).h + F2(3).h = huR – huL. (Fw(1).h is the mass growth rate at the left cell.) According to the mass conservation, the real mass excessive flux at the interface should be
Fw(real_mass) = huL + Fw(1).h = huR - Fw(3).h
So we may change the code (a) to (b):