Option to turn off internal stress in free drift conditions for B-grid EVP - #1133
Conversation
|
I ran a QC test comparing gx1 baseline with gx1 baseline + flag_free_drift_approx=.true.. QC test passed, I also ran a test suite on derecho gnu and intel including B, C, and CD tests, everything looks good. https://github.com/CICE-Consortium/Test-Results/wiki/cice_by_hash_forks#2c1f9dbd9d96ca95066ee6a75016e7c918d2e958 Finally, I wonder if it makes sense to have the free drift approx on by default for all cases and remove the namelist. My sense is that it's both more stable and makes more sense physically. |
|
Thanks for testing, @apcraig.
I'm certainly open to turning the free drift approx on by default for EVP on all grids (it's not yet implemented/tested for EAP or VP). But I think we'd want to keep the namelist flag available for the operational centers to be able to turn it off easily, since it's not BFB. Please weigh in @TillRasmussen, @NickSzapiro-NOAA, @dabail10, @daveh150, @anton-seaice. |
|
This looks fine. I agree with Tony that free drift should be default as I see it being more realistic. We can remove the other option. Alternatively keep it for a year or two until we have had a chance to test it more thorough in the coupled systems. |
|
If free_drift_approx is more realistic and robust, it is nice for that to be the default. If it is only available for one dynamics scheme though, I think it needs to be configurable if folks should be able to switch among them |
|
@dabail10, @daveh150, @anton-seaice: any heartburn about making this non-bit-for-bit change to EVP? |
|
The free drift approximation is now set as the default in CICE. It is turned off for EAP and VP via namelist. The quick_suite test yields the same results as before. I decided to keep the namelist option available for now, in case modeling centers need to test it both ways. Happy to remove that option in the near future (or now) if everyone is happy with the default behavior. This PR needs a formal review to merge, @apcraig @TillRasmussen (or anyone). Thanks for your input - e |
Sounds like a good plan. Thanks. |
apcraig
left a comment
There was a problem hiding this comment.
Hate to ask, is there an equivalent feature for eap and would it be easy to implement it?
There is an equivalent feature, and at first glance it appears easy to implement. EAP calls both dyn_prep2, where rheofactU is computed (EAP ignores this) and stepu, where it is used (EAP rheofactU=1). It would be easy to get rheofactU from dyn_prep2 and use it in stepu, as in EVP. What I don't know is whether the structure tensor would also need to be altered to be consistent (subroutine stepa). |
Adds a namelist option to set the ice internal stress term to zero when the ice area is less than 1.e-3, and applies this option for B-grid EVP in addition to the previous C- and CD-grid implementation.
@eclare108213, building on C- and CD- grid modifications by @JFLemieux73 in Set rheology to zero for the C-grid when concentration is very small #1078 and Set rheology to zero for the C-grid when concentration is very small #1105
Quick suite results:
The two failing tests are on the gbox128 test, for which the JRA55do forcing data's grid does not match. (I use
-s JRA55dobecause I don't have the regular JRA55 data.)Still need to run a QC test for
free_drift_approx = .true., for completeness.free_drift_appox = .false.free_drift_approx = .true., but the solutions are very similar.EVP is stable in its default B-grid discretization, but slight changes to the discretization (such as using ice area at a different time level during the time step) can make it unstable. Because of this, the C- and CD-grid discretizations already set the internal stress term to zero for ice areas smaller than
rheo_area_min = 1.e-3by multiplying the internal stress by the factorrheofactEorrheofactN, equal to 0 (or 1, when the ice area is larger). The PR adds the analogous factorrheofactUto the B-grid discretization, and adds a namelist flagfree_drift_approxto control it. The new namelist is also used for the C and CD grid cases.To prevent a lot of "if present()" tests within the dynamics subcycling,
rheofactUis not optional in the stepu routine, which meant that it also had to be added to the EAP dynamics module. However it is always 1 in that case -- it is not fully implemented there, pending future testing.