-
Notifications
You must be signed in to change notification settings - Fork 3
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
Adjust icepack interface for E3SM #31
Adjust icepack interface for E3SM #31
Conversation
@apcraig @proteanplanet |
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.
Approved based on visual inspection of code.
The changes look reasonable to merge over. I'll create a sandbox now and fire off testing. May be able to PR in the morning. |
I do have a minor concern in add_new_ice. In the consortium version, we still have Ti = min(liquidus_temperature_mush(Si0new/phi_init), -p1) while E3SM has Ti = min(liquidus_temperature_mush(Si0new/phi_init), Tliquidus_max) I assume this change was made on the E3SM branch in a different commit. For now, I'm going to leave the Ti as is in the consortium. We may need to discuss. |
I tested these changes on cheyenne, full test suites with Icepack (intel, gnu, pgi) and with CICE (intel) and all results pass and are bit-for-bit. |
78286bf
into
cice-consortium/E3SM-icepack-initial-integration
Even though this has been merged, I want to address Tony's comments above: In @eclare108213's implementation from E3SM, Tliquidus_max = -0.1d0 is set in icepack_in, but strictly speaking even that is incorrect. We should either be setting the minimum liquidus temperature via salinity and porosity, or by minimum temperature, but not both. Idealy, the "min" in the line below should not be needed, but if it is, the max value should be zero, the freezing temperature of fresh water ice in ˚C. Since we need to be consistent throughout the code, the line Ti = min(liquidus_temperature_mush(Si0new/phi_init), Tliquidus_max) Is a happy compromise. But Ti = min(liquidus_temperature_mush(Si0new/phi_init), -p1) is not certainly right. |
I'm trying to understand what's going on with that - I'm not finding Tliquidus_max in either repo! probably not searching correctly. However it appears that at least one change to Icepack in the Consortium, associated with FSD lateral melting, has not been merged into the E3SM icepack fork. So I still need to check everything that's been done and identify what's been missed. |
I'm pretty sure E3SM Icepack is up to date with the Consortium as of "#795280797a Sept 13, 2023". If something is missing, that would surprise me. Nothing has been committed to Consortium Icepack since Sept 13. Let me know if I can help sort this out. |
Okay, I found Tliquidus_max. It's one of the changes that we made in the E3SM fork that needs to be pulled over to the Consortium repo. It is in icepack_parameters.F90 and so is (or can be) a namelist option -- we can set it to whatever we want in the configs. I was looking at main rather than the branch we're merging into (wrong search!), so maybe nothing is missing. I still want to make sure that we've caught everything, going both directions. |
E3SM needs direct access to some routines or functions, which are being elevated to the interface.
This is a draft PR, to be transferred first to the Consortium main repo then PR'd back to this fork, for consistency.
@eclare108213
BFB in 3-month D cases