-
Notifications
You must be signed in to change notification settings - Fork 4
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
Improve Soca2Cice (use icepack to cleanup after rescaling) #1111
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. Thanks @shlyaeva .
fiso_ocn=fiso_ocn) | ||
call icepack_warnings_flush(6) | ||
if (icepack_warnings_aborted()) then | ||
call abor1_ftn("Soca2Cice: icepack aborted during cleanup_itd") |
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.
I suspect this conditional is going to be a "rare event"? Or have you seen failures already at that stage? Is this where you are planning to shuffle in the future?
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.
I haven't seen this fail on this condition yet, so hoping it is a rare event. Yes, I think that's where it would make sense to do shuffle!
Per offline discussion with @guillaumevernieres, I'll add the melt ponds tracers to cleanup_itd too. |
That, or a |
@travissluka thank you! I've opened an issue: #1115; I'll address it in a follow-up PR if that's good with everyone. |
Description
There are several improvements to Soca2Cice here:
cleanup_itd
after rescaling to rebin thickness categories if necessary, remove very small ice areas and remove snow if snow enthalpy indicates out-of-bounds temperatures (see details incleanup_itd
).Notes:
icepack_init_itd
. I am not sure this is always the correct way to set up ice categories; does anyone know? It's important for rebinning.cleanup_itd
.icepack time step
with pseudorandom default 300.cleanup_itd
indicates that icepack aborted, the code will abort. This can be replaced (or optionally replaced) by shuffling if thecleanup_itd
aborts.cleanup_itd
, but I can add more tracers (e.g. melt ponds?)sea ice edge
value from rescaling. Previously the code both shuffled and rescaled where background ==sea ice edge
. This fix is mostly to cover an edge case whensea ice edge
is set to zero. In this case, when the background is zero, we definitely don't want to rescale (i.e. divide by zero)cleanup_ice
on develop covers the case where the restart fields updated after shuffling and rescaling are zero, but doesn't cover the case where they should have been updated to zero).Note: I kept Guillaume's update to the ice/snow temperature as icepack's
liquidus_temperature_mush
.shuffle stencil size
as a yaml option (default is 9) to add some flexibility for testingIssue(s) addressed
fixes #993 in a roundabout way (instead of adding the fixes suggested here,
cleanup_itd
is used to do that and more)Testing
Tested on orion with gnu and unit tests, the current test mostly rebins categories up and down, and zaps small areas on a few occasions.
Tested on hera with intel with high res gdas 3DVar experiment, setting ice edge to 0.15 and running a few cycles.
cleanup_itd
mostly rebins categories and zaps snow with low snow volumes and zero snow enthalpies.