Add conductive flux limiting for vertical thermodynamics when calc_Tsfc=.false. - #557
Conversation
…onductive flux limits to CM2
Co-authored-by: Kieran Ricardo <u5824685@anu.edu.au>
Co-authored-by: Anton Steketee <79179784+anton-seaice@users.noreply.github.com>
|
@eclare108213 thanks for your review, I've now added description and units for the all the new variables (and some related existing variables as well). Shall I edit the documentation in this PR? I can add a description of the limiting in 2.7.4.1. |
|
It is covered somewhat in the second paragraph in 2.1, so probably update that ? |
|
@eclare108213 @anton-seaice I've updated the documentation in 2.1 and 2.7.4.1. And I think this is ready for another review |
eclare108213
left a comment
There was a problem hiding this comment.
Just to be sure I understand, this change will not be backward compatible for anyone running CICE with a hadgem driver or any other driver with calc_Tsfc = false, correct? Is that okay? Hadley Centre switched over to the European models a while back so I'm not sure whether it matters at this point, but I'd prefer to keep the code backward compatible in case someone might not want this change. It does seem like a good improvement, though, maybe even a "bug fix."
| temperature is treated explicitly, the effective conductivity may need | ||
| to be limited to ensure stability. As a result, accuracy may be | ||
| significantly reduced, especially for thin ice or snow layers. A more | ||
| temperature is treated explicitly, the conductive flux is limited to ensure stability. |
There was a problem hiding this comment.
To the end of this sentence, please add ", and the excess energy is either applied for bottom melting or fluxed to the ocean."
To the end of the paragraph, add "The GEOS approach is available for either mushy or BL99 thermodynamics, while the conductivity-limiting approaches are only available for BL99."
There was a problem hiding this comment.
Sounds good!
I've changed the first sentence slightly to: "Since the ice surface
temperature is treated explicitly, the conductive flux is limited to ensure stability,
with any excess energy either used for bottom melting or transferred to the ocean as a heat flux."
And for the second, I swapped "conductivity-limiting" for "flux-limiting".
| .. math:: | ||
| K^* \le {\rho ch \over \Delta t}. | ||
|
|
||
| To improve stability, the conductive flux is limited before |
There was a problem hiding this comment.
For clarity:
"To improve stability when calc_Tsfc = false, the ..."
|
@eclare108213 thanks for your feedback! Yeah, these changes won't be backwards compatible for |
eclare108213
left a comment
There was a problem hiding this comment.
Looks good, thank you.
anton-seaice
left a comment
There was a problem hiding this comment.
I ran the icepack base suite, and got BFB answers except these five tests:
FAIL gadi_oneapi_smoke_col_1x1_bgcispol_debug compare ad89637 different-data
FAIL gadi_oneapi_smoke_col_1x1_bgcnice_debug compare ad89637 different-data
FAIL gadi_oneapi_restart_col_1x1_pondlvl compare ad89637 different-data
FAIL gadi_oneapi_restart_col_1x1_bgcispol compare ad89637 different-data
FAIL gadi_oneapi_restart_col_1x1_bgcnice compare ad89637 different-data
I guess that is because ACCESS-NRI@9c6aaa9 is not in this branch.
|
All tests BFB now using oneapi after updating from main - see https://github.com/CICE-Consortium/Test-Results/wiki/49b04c6143.gadi.oneapi.26-07-21.030428.1 |
|
Could you review / finalise @apcraig ? |
|
I'll run a CICE test suite and report results. Just want to confirm that we don't need any new namelist? |
|
I don't think we have plans to change / test different values of those parameters, so not required from us. |
|
Testing looks good. All the icepack tests are bit-for-bit on derecho with intel and gnu. The CICE tests are also bit-for-bit except the alt03 tests which have calc_tsfc=.false.. I think that is expected. There is one other test, derecho_gnu_smoke_gbox128_14x2_boxrestore_gridc_reprosum_run10day.fc01, which is also not bit-for-bit for reasons I can't quite figure out. I think it might have to do with some another recent Icepack PR, but I'm going to ignore. |
|
I added the test results to the PR comments and made a couple other minor updates. Could @anton-seaice, @kieranricardo review the PR comments and make sure they are up to date given any changes since the PR was created. You should be edit the PR comments directly. Once confirmed, I'll merge. Thanks! |
|
Thanks @apcraig, the PR comment looks good to me. |
|
Nothing from me either |
PR checklist
This limits the conductive flux for the vertical thermodynamic solve when
calc_Tsfc=.false.See: Add conductive flux limiting for vertical thermodynamics whencalc_Tsfc=.false.#556@kieranricardo @blimlim @anton-seaice
Icepack and CICE tests look good. Only alt03 CICE tests are not bit-for-bit as expected. https://github.com/CICE-Consortium/Test-Results/wiki/cice_by_hash_forks#5b972c241a5865babf262d5a48aefd24320a08cd
When the vertical thermodynamic solver is forced by prescribed surface fluxes (calc_Tsfc = .false.), it can become numerically unstable. This instability appears to arise in the vertical thermodynamic solve when the conductive flux is too large (which depends on ice thickness and time step). Flux limiting is needed to stabilise the solution in this configuration.
An existing implementation of this flux limiting is available in an ACCESS fork of CICE5. This implements a similar approach, enabling stable coupling with the UM.
This conductive flux limiting occurs in 2 places:
Before the thermodynamic solve. If the conductive flux to ice thickness ratio exceeds a certain value (default
1000 w/m^2) the conductive flux is reduced such the ratio matches this value. The excess energy is used for bottom melt.During the thermodynamic solve. If any of the layer temperatures exceed 0C, the layer temperature is reduced to 0C. The excess energy is deducted from the conductive flux and passed to the ocean.
Test results are bit-for-bit except when calc_tsfc=.false. in CICE alt03 tests.