-
Notifications
You must be signed in to change notification settings - Fork 0
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
Adds a porosity parameter for internal frazil salinity #115
Conversation
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
A simpler version of the code (equivalent to porosity = 1) was tested in 100-year fully coupled pre-Industrial simulations. See I'm rerunning mpas-analysis to use the cryosphere option. I've also got a run going that drops the 100 m depth restriction. |
Flagging @proteanplanet , @darincomeau , @xylar , @cbegeman and @vanroekel. I can't find Irena's git name. |
@irenavankova, this would be @njeffery's branch to try if you're interested. |
Thanks, I will give it a try. |
sumNewThicknessWeightedSaltContent = max(0.0_RKIND,sumNewThicknessWeightedSaltContent - meltedThicknessWeightedSaltContent) | ||
sumNewFrazilIceThickness = max(0.0_RKIND,sumNewFrazilIceThickness - meltedFrazilIceThickness) |
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 change shouldn't be necessary because meltedFrazilIceThickness
is already limited to sumNewFrazilIceThickness
and consequently meltedThicknessWeightedSaltContent
is limited to sumNewThicknessWeightedSaltContent
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.
@cbegeman : It's there to prevent negatives from roundoff errors.
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.
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 |
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.
Have you considered including the advective flux of water at the freezing temperature? I believe this assumes the freezing temperature is 0.
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.
Hmm. Not sure what you mean. The freezing temperature is calculated at the start as function of the local salinity/pressure
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.
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
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.
the brine has the same temperature as the ice.
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.
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.
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.
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.
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.
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.
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?
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.
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?
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.
Yes. That's on my to-do list. I'll let you know when it's written.
@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. |
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. |
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? |
I'm seeing that |
That change is pretty recent so maybe you have a branch where that's not the case? |
What's the flag for when ice-shelf fluxes? |
are off... |
In runs where |
On the current master, The default is that ice-shelf melt fluxes are off (e.g. in WC runs) and under those circumstances, |
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. |
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.
@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. |
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.