Skip to content
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

Merged

Conversation

eclare108213
Copy link
Collaborator

@eclare108213 eclare108213 commented Sep 25, 2023

  • Short (1 sentence) summary of your PR:
    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.
  • Developer(s):
    @eclare108213
  • Suggest PR reviewers from list in the column to the right.
  • Please copy the PR test results link or provide a summary of testing completed below.
    BFB in 3-month D cases
  • How much do the PR code changes differ from the unmodified code?
    • bit for bit
    • different at roundoff level
    • more substantial
  • Does this PR create or have dependencies on CICE or any other models?
    • Yes
    • No
  • Does this PR add any new test cases?
    • Yes
    • No
  • Is the documentation being updated? ("Documentation" includes information on the wiki or in the .rst files from doc/source/, which are used to create the online technical docs at https://readthedocs.org/projects/cice-consortium-cice/.)
    • Yes
    • No, does the documentation need to be updated at a later time?
      • Yes - the changes to the interface will need to be documented
      • No
  • Please provide any additional information or relevant details below:

@eclare108213
Copy link
Collaborator Author

@apcraig @proteanplanet
Here is the Icepack PR that needs to be pulled into Consortium main for testing then PR'd back to this fork.
@apcraig How quickly can you turn this around?

Copy link

@proteanplanet proteanplanet left a 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.

@apcraig
Copy link
Collaborator

apcraig commented Sep 26, 2023

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.

@apcraig
Copy link
Collaborator

apcraig commented Sep 26, 2023

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.

@apcraig
Copy link
Collaborator

apcraig commented Sep 26, 2023

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.

@eclare108213 eclare108213 marked this pull request as ready for review September 26, 2023 15:03
@eclare108213 eclare108213 merged commit 78286bf into cice-consortium/E3SM-icepack-initial-integration Sep 26, 2023
1 check passed
@proteanplanet
Copy link

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.

@eclare108213
Copy link
Collaborator Author

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.

@apcraig
Copy link
Collaborator

apcraig commented Sep 26, 2023

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.

@eclare108213
Copy link
Collaborator Author

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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants