-
Notifications
You must be signed in to change notification settings - Fork 137
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
Deprecate CESM ponds (tr_pond_cesm) #733
Deprecate CESM ponds (tr_pond_cesm) #733
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Looks good to me.
elseif (trcr_depend(it) == 2+nt_apnd .and. & | ||
tr_pond_cesm .or. tr_pond_topo) then | ||
#else |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This is interesting. I wonder whether the .and. or the .or. took precedence in the logic for this elseif statement.
i.e.
(trcr_depend(it)==2+nt_apnd .and. tr_pond_cesm) .or. tr_pond_topo
or
trcr_depend(it)==2+nt_apnd .and. (tr_pond_cesm .or. tr_pond_topo)
?
The latter is correct, but what was the code actually doing?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
According to https://www.intel.com/content/www/us/en/develop/documentation/fortran-compiler-oneapi-dev-guide-and-reference/top/language-reference/expressions-and-assignment-statements/expressions/summary-of-operator-precedence.html the .and.
would have precedence on the .or.
so the code would do the first thing you listed:
(trcr_depend(it)==2+nt_apnd .and. tr_pond_cesm) .or. tr_pond_topo
i.e. the wrong thing if I understand correctly.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks. This line is in the state_to_work routine, which is only used for upwind advection. Tracers may not work properly with upwind advection -- see #267 and #542. This faulty logic could be part of the reason why, but it probably doesn't fix the entire issue, which is that many tracers are not implemented at all for upwind.
I approved this PR, but looking a little more closely at the test results noted above, I think it would be good to understand why the failures are happening, at least for the dynpicard / reprosum option. These changes shouldn't affect those tests, should they? |
Here are the failures quoted above, one per line (easier to read):
In general I do not currently expect the VP solver as it stands on
I do not expect the code in this PR to change anything in this result, I would expect these tests to also fail without these changes. My upcoming PR which I mentioned last week at the telecon should fix those. |
Thanks @phil-blain! So the outstanding tests are gx1prod, which might just be timing out, @dabail10? |
Good catch! I will fix this. |
The failure is more cryptic. Seems to be dying in icepack_mechred.F90. Trying to resubmit this test. |
I resubmitted and got the same error. It is dying with the following output: MPT: #11 0x00000000007d5f93 in icepack_mechred::ridge_shift (ntrcr=25, So, it looks like underflow conditions. I will try rerunning in debug mode. |
Ok. Are we happy with the results here? Should we merge this before the other two? |
I think we can merge and it's fine with me to do the CESM ponds deprecation PR(s) first, then the others. Does it make sense to do all of them in Icepack first, then update the Icepack version here and merge this PR, then pull the new Icepack into the other PR? OR does it make more sense to merge the Icepack CESM ponds PR first, then update Icepack here and merge, then merge the Icepack 0-layer and krdg PR, update Icepack again and finally merge the CICE 0-layer and krdg PR? |
If everything is just about ready, we could merge the two PRs together first in Icepack, then in CICE (after updating the Icepack submodule in one of the CICE PRs). But, it might be better to keep the two distinct set of changes separate in case they don't play well together, in case we want to undo one of them, or if there might be a few days between readiness. So, if CESM ponds is ready, we should merge the icepack PR, update the CICE submodule in the CICE PR and merge the CICE PR. Then we would do the same with the 0layer/ridging PRs. Is there any additional testing required for the CESM ponds PRs? Would you like me to test independently? Happy not to if others feel it's ready. I'll do a quick review now. |
Looks like testing is fine. alt05 will change answers and the dynpicard is failing in the baseline. It's always good to look at the baseline results to check whether the failures are new. Have you tested with UNDEPRECATE_CESMPONDS? Not saying it's required, just curious. Is there any other documentation of CESM ponds that needs to be removed from the user guide? |
* Deprecate CESM ponds * Namelist changes for deprecating cesmponds * Update documentation
For detailed information about submitting Pull Requests (PRs) to the CICE-Consortium,
please refer to: https://github.com/CICE-Consortium/About-Us/wiki/Resource-Index#information-for-developers
PR checklist
Deprecate the tr_ponds_cesm option.
dabail10 (D. Bailey)
Did a full test suite compared against the weekly baselines.
5945 measured results of 5945 total results
5856 of 5945 tests PASSED
0 of 5945 tests PENDING
0 of 5945 tests MISSING data
89 of 5945 tests FAILED
Of the 89 tests, the majority of the changed answers were alt05 related which had tr_pond_cesm = .true.
The remaining test failures were as follows. I'm not sure why.
FAIL cheyenne_intel_smoke_gx3_8x1_cmplogrest_dynpicard_reprosum_run10day_thread bfbcomp cheyenne_intel_smoke_gx3_6x4_dynpicard_reprosum_run10day different-data
FAIL cheyenne_pgi_smoke_gx3_8x1_cmplogrest_dynpicard_reprosum_run10day_thread bfbcomp cheyenne_pgi_smoke_gx3_6x4_dynpicard_reprosum_run10day different-data
FAIL cheyenne_pgi_smoke_gx1_144x2_gx1prod_long_run10year run -1 -1 -1
FAIL cheyenne_pgi_smoke_gx1_144x2_gx1prod_long_run10year test
FAIL cheyenne_gnu_smoke_gx3_8x1_cmplogrest_dynpicard_reprosum_run10day_thread bfbcomp cheyenne_gnu_smoke_gx3_6x4_dynpicard_reprosum_run10day different-data
Removes all tests with tr_ponds_cesm = .true.
There is an option UNDEPRECATE_CESMPONDS to reverse this. It also requires adding tr_pond_cesm and restart_pond_cesm back to ice_in.