-
Notifications
You must be signed in to change notification settings - Fork 133
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
generalize logic for coupling frazil fluxes #458
generalize logic for coupling frazil fluxes #458
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.
Overall, this looks right. Just one change needed and one comment. If you'd like, I can run a full test suite with Icepack and CICE when it's ready, just let me know.
columnphysics/icepack_therm_itd.F90
Outdated
@@ -2140,6 +2138,9 @@ subroutine icepack_step_therm2 (dt, ncat, nltrcr, & | |||
!----------------------------------------------------------------- | |||
|
|||
if (icepack_chkoptargflag(first_call)) then | |||
if (present(update_ocn_f)) then | |||
call icepack_init_parameters(update_ocn_f_in=update_ocn_f) | |||
endif |
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 new code needs to be outside icepack_chkoptargflag. That interface is for checking whether optional arguments that are needed are passed, and the settings reflect never checking to always checking. The icepack_init_parameters call should be outside that if block. If a user passes update_ocn_f in, then the code should update the value in parameters. Otherwise, just continue. And it might vary by gridcell or timestep (even if it shouldn't).
@@ -369,6 +369,9 @@ forcing_nml | |||
"", "``minus1p8``", "constant ocean freezing temperature (:math:`-1.8^{\circ} C`)", "" | |||
"", "``mushy``", "matches mushy-layer thermo (ktherm=2)", "" | |||
"``trestore``", "integer", "sst restoring time scale (days)", "90" | |||
"``cpl_frazil``", "``external``", "frazil water/salt fluxes are handled outside of Icepack", "``fresh_ice_correction``" | |||
"", "``internal``", "send full frazil water/salt fluxes for mushy physics", "" | |||
"", "``fresh_ice_correction``", "correct fresh-ice frazil water/salt fluxes for mushy physics", "" |
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.
These should be alphabetical to be consistent with the rest of the document (hopefully). So external, fresh_ice_correction, then internal. Should just have to swap the order of internal and fresh_ice_correction is you want to follow that format.
Base_suite tests passed. @apcraig please go ahead and run your complete set of tests -- thank you. I'll begin porting the driver changes into CICE. |
Full test suite run on cheyenne for Icepack and CICE (with the Icepack updates only). Everything is bit-for-bit and looks good. |
@eclare108213, I think this can be merged if you feel it's ready. |
Draft PR for sanity review and further testing in Icepack and CICE.
Adds a new namelist parameter (cpl_frazil) and generalizes the logic for coupling frazil fluxes
@eclare108213
These changes have been tested in E3SM.
Base_suite with regression:
178 measured results of 178 total results
178 of 178 tests PASSED
0 of 178 tests PENDING
0 of 178 tests MISSING data
0 of 178 tests FAILED
https://github.com/CICE-Consortium/Test-Results/wiki/e4bc61184b.chicoma.intel.23-09-11.142102.0
Adds namelist parameter cpl_frazil, needed to enable E3SM's style of coupling.
Uses update_ocn_f in icepack_parameters rather than icedrv_flux.
Removes update_ocn_f from icedrv/step_therm2 argument lists and makes it optional in icepack_step_therm2.
Changes frazil dfresh, dsalt logic to include cpl_frazil option but the calculations should be BFB backward compatible.
Updates interfaces.include and documentation.