-
Notifications
You must be signed in to change notification settings - Fork 4
Update depth-dependent ice-shelf basal melt parameterization and add variability input field #103
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
base: develop
Are you sure you want to change the base?
Conversation
76bb23d to
cfe4264
Compare
98a86c9 to
bb469c4
Compare
matthewhoffman
left a comment
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.
@mshiv , thanks for putting this PR together. After looking over it again, I have a few more requests. Also, please update the description of the PR (on the main PR page below the PR title) with a few details:
- describe how/why the slope and intercept are fields rather than namelist options
- describe the new
floatingBasalMassBalAdjustmentfield, which is not directly related to the depth-dependent melt param. - explain that this new method is replacing the 'seroussi' option
|
Is there a configuration that makes this equivalent to All other tests passed validation and baseline comparison. |
| <var name="floatingBasalMassBal" type="real" dimensions="nCells Time" units="kg m^{-2} s^{-1}" | ||
| description="Potential basal mass balance on floating regions" | ||
| /> | ||
| <var name="floatingBasalMassBalAdjustment" type="real" dimensions="nCells Time" units="kg m^{-2} s^{-1}" default_value="0.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.
It's not clear what the difference is between floatingBasalMassBalAdjustment and draftDepenBasalMeltAlpha0. The descriptions need more detail. For which cases is floatingBasalMassBalAdjustment used?
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.
Technically, they are similar in that they are both added to the product of draft and draftDepenBasalMeltAlpha1. Main difference is that draftDepenBasalMeltAlpha0 (and draftDepenBasalMeltAlpha1) is time independent while floatingBasalMassBalAdjustment can be time dependent, with the latter being read in via a forcing file input stream.
draftDepenBasalMeltAlpha0 and draftDepenBasalMeltAlpha1 are maps derived via a regression of basal melt with draft.
floatingBasalMassBalAdjustment is treated as an optional additional basal melt forcing value - in the context of the AISLENS experiments, it includes time varying basal melt forcing that can have secular/seasonal trends and variability, or a combination of them. Will update the main description above as well.
components/mpas-albany-landice/src/mode_forward/mpas_li_iceshelf_melt.F
Outdated
Show resolved
Hide resolved
components/mpas-albany-landice/src/mode_forward/mpas_li_iceshelf_melt.F
Outdated
Show resolved
Hide resolved
components/mpas-albany-landice/src/mode_forward/mpas_li_iceshelf_melt.F
Outdated
Show resolved
Hide resolved
| ! Shut off melt at an arbitrary shallow depth to discourage ice from disappearing. | ||
| if ( (li_mask_is_floating_ice(cellMask(iCell))) .and. (lowerSurface(iCell) < -10.0_RKIND) ) then | ||
| if ( li_mask_is_floating_ice(cellMask(iCell))) then |
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.
To be completely accurate, this should probably treat dynamic and non-dynamic cells differently. Melt rates for non-dynamic cells should probably be calculated using the draft values from neighboring dynamic cells. @matthewhoffman, what do you think?
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 think we should probably be doing that, but if we include that, it should probably be done for all melt options. Looks like we sort of say we are doing that at line 586 but it's not actually doing it. Or maybe it should happen where BMB is actually applied, using the dynamic mask that exists at that point. I think that should be a separate PR, given it would change the application of all melt rate methods.
That might require a rewrite of draft_dependence to include the |
Add Registry and ice shelf melt driver changes to support new calculate_aislens_melt_variability_adjustment subroutine call
Add linear draft-dependent (spatial dependence) basal melt adjustment for AISLENS generator.
Add slopeGen and interceptGen coefficients for the draft dependence
…melt generator Define draft dependence function variables for calculating floatingBasalMassBalAdjustment in aislens basalMassBal adjustment subroutine
Define slopeGen, interceptGen, zDraft variables as part of aislens package
Co-authored-by: Matt Hoffman <[email protected]>
Rename interceptGen to draftDepenBasalMeltAlpha0 Rename slopeGen to draftDepenBasalMeltAlpha1 This will allow for easier changes to the functional form used in the draft dependence melt parameterization
Update variables for the basal_melt_draft_dependence subroutine: rename: interceptGen -> draftDepenBasalMeltAlpha0 and slopeGen -> draftDepenBasalMeltAlpha1 Update definitions Add the above variables and floatingBasalMassBalAdjustment to input and restart streams.
Delete stray comments from previously defined seroussi method Co-authored-by: Trevor Hillebrand <[email protected]>
Co-authored-by: Trevor Hillebrand <[email protected]>
Update components/mpas-albany-landice/src/mode_forward/mpas_li_iceshelf_melt.F Co-authored-by: Trevor Hillebrand <[email protected]>
- Introduce new parameter: draftDepenBasalMelt_minDraft - Linear draft dependence (alpha0 + alpha1 * zDraft) is now only applied when zDraft >= minDraft - For zDraft < minDraft, basal melt is set to alpha0 only (no dependence on draft)
2f1b945 to
8f0a51d
Compare
…lue fields) This scheme allows each floating cell to use a different functional form for mean basal melt as a function of draft: - Linear: paramType=0 uses Alpha0 + Alpha1 * max(zDraft, minDraft). - Constant: paramType=1 uses value from the constantValue field. For zero melt, set constantValue=0.0. - Assign parameterization type and corresponding coefficients/value for each shelf/cell. - The physical units are currently NOT converted from m/yr to kg/m²/s in the subroutine, the input fields are to be in SI Units. - Time-dependent variability should be applied via `floatingBasalMassBalAdjustment` after this mean is computed.
This update accounts for applying constant melt rates in specific ice shelves, and for shallow depths where a piecewise linear dependence on draft is calculated.
With this fix, it does not matter if minDraft field convention is positive or negative.
This PR replaces an existing ice shelf basal melt parameterization method and adds a basal melt variability input field, both in support of test cases where MALI is forced directly from the basal melt variable.
draftDepenBasalMeltAlpha0(intercept parameter) anddraftDepenBasalMeltAlpha1(slope parameter). The function is invoked based on adraftDepenBasalMelt_minDraftparameter field, such that the linear dependence is calculated only if draft at a point is greater thanminDraft. At shallower depths, the melt rate is currently the draft dependent melt calculated at theminDraftvalue.floatingBasalMassBal) variable.floatingBasalMassBalAdjustmentis defined, also as a user-defined input field.floatingBasalMassBal, this adjustment field can be used to add basal melt forcing components that are not draft dependent. For example: linear trend, seasonality, internal climate variability components.