-
Notifications
You must be signed in to change notification settings - Fork 232
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
Tc4 ice shelf #1210
Tc4 ice shelf #1210
Conversation
- .testing/tc4 includes a static ice shelf which thermodynamic coupling - tc4.rotate fails due to divergence of very small energetic values at timesteps intermediate within the 2 day run.
Codecov Report
@@ Coverage Diff @@
## dev/gfdl #1210 +/- ##
============================================
+ Coverage 46.08% 47.89% +1.80%
============================================
Files 214 225 +11
Lines 69399 71065 +1666
============================================
+ Hits 31984 34036 +2052
+ Misses 37415 37029 -386
Continue to review full report at Codecov.
|
It's not just the rotation test that is falling. There's restart and dimensional tests too. |
The tc4 test seems broken in many ways. Even layout is failing trying to read the grid. Is everything committed?
|
That last was because the size has changed (which is good) - cleaning the work dir sorted that out. The actual fails I get interactively are
which I think is consistent with what Travis reported. |
After a restart |
From a clean build I get the same. The restart and diagnosric issues I haven't looked at but the rotate fail is weird . The results only differ at timesteps 54 and 63 but are otherwise identical through 144. |
buoy_config="zero". |
Energetics differ temporarily at the last significant digit .Timestats too precise? |
I see on my desktop that
but it is worrying that Travis was unable to detect this. |
Should if (Sb_max_set .and. (Sbdry(i,j) > Sb_max)) be if (Sb_max_set) then
if (Sbdry(i,j) > Sb_max)) & ? |
Yes, I agree, no short-circuit logic can be assumed in Fortran. |
Registering sfc_state%tau[xy]_shelf restarts fixes that issue. |
tc4 has thermal coupling turned on so buoyancy forcing is non-zero, but not required for restarts. |
Two short-circuit logic operations were in the ice shelf code, which were causing failures in newer GCC compilers. This patch replaces them with nested if-blocks.
A few ice shelf diagnostics were tagged with scalar_pair, clarifying their rotational rules. Diagnostics were also computed for the rotated rigidity_ice_[uv], rather than the original field. Some of the handling of frac_shelf_h in the MOM.F90 initialization was restructured, although it should be functionally identical. This reduces some of the diagnostic diffs in the rotated ice shelf tc4, but other issues remain.
- This is stored in the forcing type (unrotated) the MOM_CS (rotated). - Now this field is updated by a query to the ice shelf module prior to calling MOM_state_initialization .
Tc4 ice shelf
BT_rem_[uv], which applys a fractional weight to the barotropic velocity, was incorrectly computed as a vector pair, which computes the incorrect checksum. This patch flags this as a scalar pair, which removes any discrepancy in standard and rotated debug output.
There appears to be some kind of error in This is what popped up but it's buried amongst too many errors in a parallel build to make more sense:
@MJHarrison-GFDL can you have a look? |
PR on the way. |
- A bug was introduced in a previous commit on this branch - This version of the code retains previous answers for non ice-shelf cases and properly builds hycom1 and rho grids under ice shelf cavities.
The current regression failure in tc4 is due to a bugfix for the sponge code |
Do you mind cherry-picking that one and submitting separately? Might be better for the commit log as well. |
@marshallward . tc4.rotate is failing due to intermediate timestats diverging although the final stats are identical.