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

Adds a porosity parameter for internal frazil salinity #115

Conversation

njeffery
Copy link

Modifies how the internal frazil salinity is calculated in interior ocean layers.
We currently use the coupling salinity of 4 psu (config_frazil_sea_ice_reference_salinity) or 0 if under ice shelves even in interior ocean layers.
This leads to an unphysically large salt flux at depth and too much freshening in upper layers.
The new approach is to use the local layer salinity times a frazli porosity namelist parameter (config_frazil_ice_porosity) to estimate the salt content of frazil flocs in the ocean interior.
Any frazil accumulated at the surface is then adjusted so that it's salt content is consistent with 4 psu or 0 if under iceshelves.

These changes assume frazil ice retains salt until precipitating at the surface.

Treatment under land ice remains the same.

nonBFB
Adds namelist field config_frazil_ice_porosity
Modifies the internal frazil salinity

nonBFB
Depth of maximum frazil determined by config_frazil_maximum_depth
Uses config_frazil_ice_porosity to compute internal frazil salinity

nonBFB
@njeffery
Copy link
Author

A simpler version of the code (equivalent to porosity = 1) was tested in 100-year fully coupled pre-Industrial simulations. See
https://acme-climate.atlassian.net/wiki/spaces/HESF/pages/4765679617/20241010.Frazil2.underIce.piControl.anvil

I'm rerunning mpas-analysis to use the cryosphere option.

I've also got a run going that drops the 100 m depth restriction.

@njeffery
Copy link
Author

Flagging @proteanplanet , @darincomeau , @xylar , @cbegeman and @vanroekel. I can't find Irena's git name.

@xylar
Copy link
Collaborator

xylar commented Nov 21, 2024

@irenavankova, this would be @njeffery's branch to try if you're interested.

@irenavankova
Copy link

Thanks, I will give it a try.

Comment on lines +609 to +610
sumNewThicknessWeightedSaltContent = max(0.0_RKIND,sumNewThicknessWeightedSaltContent - meltedThicknessWeightedSaltContent)
sumNewFrazilIceThickness = max(0.0_RKIND,sumNewFrazilIceThickness - meltedFrazilIceThickness)
Copy link
Collaborator

Choose a reason for hiding this comment

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

This change shouldn't be necessary because meltedFrazilIceThickness is already limited to sumNewFrazilIceThickness and consequently meltedThicknessWeightedSaltContent is limited to sumNewThicknessWeightedSaltContent

Copy link
Author

Choose a reason for hiding this comment

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

@cbegeman : It's there to prevent negatives from roundoff errors.

Copy link
Collaborator

Choose a reason for hiding this comment

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

Hmm, wouldn't have thought that would happen based on the operations above but better to be safe.

@@ -600,8 +606,8 @@ subroutine ocn_frazil_forcing_build_arrays(domain, meshPool, forcingPool, stateP
/ dt
Copy link
Collaborator

Choose a reason for hiding this comment

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

Have you considered including the advective flux of water at the freezing temperature? I believe this assumes the freezing temperature is 0.

Copy link
Author

Choose a reason for hiding this comment

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

Hmm. Not sure what you mean. The freezing temperature is calculated at the start as function of the local salinity/pressure

Copy link
Collaborator

Choose a reason for hiding this comment

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

The temperature tendency term would have two parts, the latent heat term that you have here as well as the temperature change due to mixing water of a different temperature. Based on my reading of the code, we have neglected the latter, which essentially means an assumption of 0 degC for the melted frazil water. As an example, @irenavankova allowed the option to have subglacial water enter at the freezing point https://github.com/E3SM-Project/E3SM/blob/de2142e485ebf90d627965f725ee226686b36c6d/components/mpas-ocean/src/shared/mpas_ocn_surface_bulk_forcing.F#L843-L846

Copy link
Author

Choose a reason for hiding this comment

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

the brine has the same temperature as the ice.

Copy link
Collaborator

Choose a reason for hiding this comment

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

I think @cbegeman is right and the expelled brine should cool the top layer in addition to salinifying it. @njeffery, are you arguing that this is already accounted for in the surface freezing term because the brine is at the freezing temperature?

Copy link
Collaborator

Choose a reason for hiding this comment

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

I don't think frazil is allowed to melt in the ocean anywhere

I will amend that, since it is possible for frazil to form deeper in the ocean and then melt at intermediate depths (in which case I believe the local freezing point is correctly accounted for). But there is no mechanism for it to melt at the surface within the ocean model.

Copy link
Collaborator

Choose a reason for hiding this comment

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

Yes, what I'm thinking of is the point intermediate in the water column where some of the frazil ice mass that has been accumulated from deeper melts. Suppose the water in that layer is 2 degC and the freezing point is -1 degC. The way we have it written right now, we extract the latent heat for melting but we neglect the term that would mix that -1 degC melted water with the 2 degC water. By assuming that term is 0, it's like assuming that melted frazil water enters at a temperature of 0 degC.

Copy link
Collaborator

Choose a reason for hiding this comment

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

Right, and with this porous approach, don't we make that assumption especially strongly at the surface, where we dump all the brine that that the frazil is carrying?

Copy link
Collaborator

Choose a reason for hiding this comment

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

It feels to me like we maybe need one ore more design docs for frazil on confluence (like https://acme-climate.atlassian.net/wiki/spaces/PSC/pages/4124966913/Antarctic+runoff+in+Polar+configurations+-+data+iceberg+and+ice-shelf+melt+forcing) where we can discuss both Nicole's implementation and what's currently missing (regardless of porosity) in terms of heat fluxes.

@njeffery, would you be up for describing what you've done in a design doc if you haven't already?

Copy link
Author

Choose a reason for hiding this comment

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

Yes. That's on my to-do list. I'll let you know when it's written.

@njeffery
Copy link
Author

@xylar and @cbegeman : if there is heat in the top layer, then the frazil does cool the layer. This is handled by the layer (i.e. water mass) and temperature tendencies which keep track of the net potential sea ice formation. There is no explicit brine mass in this formulation when salt is lost to additionally cool a layer, though that would be cool. Anyone interested should go forth and model. However, keep in mind that we have a sea ice model for handling mushy layer thermodynamics and brine rejection. An already planned, but longer term approach is to implement consistent multiphase coupling.

@xylar
Copy link
Collaborator

xylar commented Nov 22, 2024

I'm mostly wanting to make sure this is handled as expected under ice shelves as well, since the sea ice model doesn't apply there.

@njeffery
Copy link
Author

Got it. I looked back at the namelist for the frazil fully coupled runs and config_frazil_under_land_ice = .true. I thought this was supposed to be default false for WC? What happens to the accumulated frazil ice formed under the iceshelves in these runs?

@xylar
Copy link
Collaborator

xylar commented Nov 22, 2024

I'm seeing that config_frazil_under_land_ice is false by default (i.e. when ice-shelf fluxes are completely off):
https://github.com/E3SM-Project/E3SM/blob/e798f6bd9ca528151e9b000e017ffd35893bb7dd/components/mpas-ocean/bld/namelist_files/namelist_defaults_mpaso.xml#L404

@xylar
Copy link
Collaborator

xylar commented Nov 22, 2024

That change is pretty recent so maybe you have a branch where that's not the case?

@njeffery
Copy link
Author

What's the flag for when ice-shelf fluxes?

@njeffery
Copy link
Author

are off...

@xylar
Copy link
Collaborator

xylar commented Nov 22, 2024

What happens to the accumulated frazil ice formed under the iceshelves in these runs?

In runs where config_frazil_under_land_ice = true, the frazil formation through the (top 100 m of the) water column is the same as in the open ocean. But then the frazil mass just gets added to accumulatedLandIceFrazilMassNew and disappears from the ocean. There is no mechanism for that to cause surface cooling or to re-melt directly (though surface melting or freezing of land ice is always happening).

@xylar
Copy link
Collaborator

xylar commented Nov 22, 2024

What's the flag for when ice-shelf fluxes are off?

On the current master, config_frazil_under_land_ice = false.

The default is that ice-shelf melt fluxes are off (e.g. in WC runs) and under those circumstances, config_frazil_under_land_ice takes the default value I linked to above of false.

@xylar
Copy link
Collaborator

xylar commented Nov 22, 2024

But then the frazil mass just gets added to accumulatedLandIceFrazilMassNew and disappears from the ocean.

So my concern is that it seems like your branch introduces a mechanism for porous frazil to dump its salt at the surface under ice shelves, which is great! But we don't have a mechanism (as it seems there must be via sea-ice coupling in the open ocean) for the top layer to gain or lose the corresponding heat.

@njeffery
Copy link
Author

Seems you need a sea ice model under ice shelves!

Defines config_frazil_ice_porosity as:
-Positive real number from 0 to 1 when used to define internal frazil salinity.
-Negative value reverts to using the reference salinity for internal frazil.

BFB. New frazil option included as stealth feature.
@xylar
Copy link
Collaborator

xylar commented Dec 13, 2024

@njeffery, since you have already opened E3SM-Project#6802, let's close this. We typically close the discussion PR once an E3SM PR has been opened.

@xylar xylar closed this Dec 13, 2024
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.

4 participants