Skip to content

Conversation

@cbegeman
Copy link
Collaborator

The enthalpy flux associated with seaIceFreshWaterFlux is already included in seaIceHeatFlux which derives from fhocn in Icepack. Thus, it was incorrect to apply both seaIceHeatFlux and seaIceTemperatureFlux in MPAS-Ocean, as seaIceTemperatureFlux provides the thickness of seaIceFreshWaterFlux at the freezing point.

Here, we set seaIceTemperatureFlux to 0 always. The variable seaIceTemperatureFlux could be removed entirely if desired. I retain it here for clarity.

@cbegeman
Copy link
Collaborator Author

@vanroekel I wanted to check in with you partly to make sure that we don't need to make any changes to the surface buoyancy forcing used by KPP. I believe we do not need to make any changes there because seaIceHeatFlux is included in the surface temperature flux used to compute the buoyancy forcing.

@cbegeman
Copy link
Collaborator Author

Given that @proteanplanet, @alicebarthel and I feel reasonably confident in this change, I am going to proceed with testing this branch with a v3.LR.piControl simulation. For that test, I am using a branch based on the v3.0.2 code base: https://github.com/cbegeman/E3SM/tree/v3.0.2/fix-sea-ice-enthalpy-flux.

@alicebarthel
Copy link
Collaborator

alicebarthel commented Oct 22, 2025

Note that if ktherm != 2 (non-mushy thermo), emlt_ocn = 0 and no enthalpy/heat flux is passed.
Maybe the seaIceTemperatureFlux could be retained for cases where non-mushy is used?

@vanroekel
Copy link
Collaborator

@cbegeman I agree with your assessment and also that this is a double counting based on previous discussions.

@cbegeman
Copy link
Collaborator Author

Note that if ktherm != 2 (non-mushy thermo), emlt_ocn = 0 and no enthalpy/heat flux is passed. Maybe the seaIceTemperatureFlux could be retained for cases where non-mushy is used?

@alicebarthel That's worth considering. I think there is an argument to be had on the MPAS-Ocean side for forcing it to be 0 for now:

  • non-mushy thermodynamics is not available in MPAS-Ocean (the ocn_freezing_temperature function called in that line previously is the mushy thermodynamics except when under land ice)

Note to anyone following the discussion: config_thermodynamics_type=ktherm is in the MPAS-Seaice namelist and not currently available to MPAS-Ocean. We could create a new config option in MPAS-Ocean and ensure consistency with this config option in MPAS-Seaice, though that's not elegant.

@alicebarthel
Copy link
Collaborator

I agree that we should set it to zero for now. If there is no need to retain compatibility with MPAS-SeaIce using non-mushy thermo then that's even cleaner. I just wanted to make sure we did not inadvertently remove something that is needed/wanted in a different (supported) configuration.

@alicebarthel
Copy link
Collaborator

Also FYI, the enthalpy/heat flux counted in both is quite different since seaIceTemperatureFlux calculates it based on ocean salinity, and emlt_ocn (which goes into seaIceHeatFlux) is based on freezing temperature at the sea ice salinity (which will be a higher freezing temperature).
Obviously it's second order compared to double counting but thought I'd document it here.
Interested to see what comes out of this, thanks for testing this @cbegeman!

@alicebarthel
Copy link
Collaborator

@cbegeman if we need to retain a melt heat flux when MPAS-SeaIce is non-mushy, it'd be easier in practice to add the flux in Icepack since we have ktherm and sss both available in there. But obviously, changing the default behavior of Icepack when ktherm != 2 is something that impacts other models that rely on Icepack so it's beyond just our own project decisions...

Copy link
Collaborator

@alicebarthel alicebarthel left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Approving based on my understanding of the terms accounted for in emlt_ocn. My only caveat is on whether it would be preferable to remove seaIceTemperatureFlux entirely, or keep it as an option for non-mushy sea ice thermodynamics.

@cbegeman
Copy link
Collaborator Author

cbegeman commented Nov 4, 2025

Testing

I have run through the end of year 69 of a v3.LR.piControl run branched from the v3.LR.spinup: https://e3sm.atlassian.net/wiki/spaces/pd/pages/5581930507/v3.LR.piControl-enthalpyfix

Key points:

  • Differences appear to be non-climate changing (NCC) with internal variability seen in some sea ice regions and mixed layer depths

Analysis shown here is years 1-50, climo years 1-50:
image
image
image
SST diffs from Hadley ANN
image
image

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

bug Something isn't working

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants