Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
26 commits
Select commit Hold shift + click to select a range
10cb7fc
Add basal melt draft dependence subroutine
Feb 6, 2024
d95b39c
add driver changes for calculate_aislens_melt_variability_adjustment
matthewhoffman Feb 7, 2024
645cb06
Define draft dependence function for basal melt adjustment
mshiv Feb 15, 2024
423292d
Update draft dependence function for basalMassBalAdjustment
mshiv Feb 15, 2024
86c68d2
Add draft dependent co-efficient variables for the aislens ice shelf …
mshiv Feb 16, 2024
20fed67
Update calculate_aislens_melt_variability_adjustment subroutine
mshiv Feb 16, 2024
16b310c
Add aislens namelist and streams variables and package
mshiv Feb 16, 2024
29760ca
Add draft dependence subroutine
mshiv Feb 16, 2024
b83f104
Update description of draft dependent melt rate subroutine
mshiv Feb 26, 2024
1c104a8
Update comments for draft dependent parameterization
mshiv Mar 1, 2024
860da87
Cleanup comments
mshiv Mar 8, 2024
11cc911
Rename draft dependent melt parameterization variables
mshiv Mar 8, 2024
a378f64
Update draft dependent melt parameterization variables and definitions
mshiv Mar 8, 2024
fdbd5ae
Remove package assignment for floatingBasalMassBalAdjustment
mshiv Mar 8, 2024
0881254
Clean up draft_dependence ice shelf basal melt method
mshiv Mar 18, 2024
52e9091
Clean up draft_dependence ice shelf basal melt method
mshiv Mar 18, 2024
1c67889
Update floatingBasalMassBal calculation for consistent SI units
mshiv Jul 16, 2024
6eccc97
Add minDraft variable description to draft_dependence parameterizatio…
mshiv Jul 21, 2025
0a9f3dd
Add minimum draft threshold to draft-dependent basal melt calculation
mshiv Jul 21, 2025
7fbc8e0
Update draft dependence function to be piecewise continuous
mshiv Jul 31, 2025
df2a475
Update draft dependence subroutine
mshiv Jul 31, 2025
8f0a51d
Update draft_dependence variable descriptions
mshiv Jul 31, 2025
68d2d73
Update draft dependence subroutine (add selector and constant melt va…
mshiv Aug 3, 2025
62e404f
Update draft dependence subroutine
mshiv Aug 3, 2025
55b3013
Update draft dependence subroutine for piecewise parameterization
mshiv Aug 25, 2025
3966e27
Fix piecewise draft dependence to compare abs values of draft
mshiv Aug 27, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
57 changes: 39 additions & 18 deletions components/mpas-albany-landice/src/Registry.xml
Original file line number Diff line number Diff line change
Expand Up @@ -367,29 +367,17 @@

<nml_record name="iceshelf_melt" in_defaults="true">
<nml_option name="config_basal_mass_bal_float" type="character" default_value="none" units="unitless"
description="Selection of the method for computing the basal mass balance of floating ice. 'none' sets the basalMassBal field to 0 everywhere. 'file' uses without modification whatever value was read in through an input or forcing file or the value set by an ESM coupler. 'constant', 'mismip', 'seroussi' use hardcoded fields defined in the code applicable to Thwaites Glacier. 'temperature_profile' generates a depth-melt relation based on an ocean temperature profile and sill depth. ISMIP6 is the method prescribed by ISMIP6."
possible_values="'none', 'file', 'constant', 'mismip', 'seroussi', 'temperature_profile', 'ismip6'"
/>
<nml_option name="config_bmlt_float_flux" type="real" default_value="0.0" units="W m^-2"
description="Selection of the method for computing the basal mass balance of floating ice. 'none' sets the basalMassBal field to 0 everywhere. 'file' uses without modification whatever value was read in through an input or forcing file or the value set by an ESM coupler. 'constant' uses the constant value defined by the heat flux config_bmlt_float_flux and restricted to the region of the domain defined by config_bmlt_float_xlimit. 'mismip' uses the method prescribed for MISMIP+. 'draft_dependence' calculates draft dependent floatingBasalMassBal using draftDepenBasalMelt_minDraft, draftDepenBasalMeltAlpha1 and draftDepenBasalMeltAlpha0. 'temperature_profile' generates a depth-melt relation based on an ocean temperature profile and sill depth. ISMIP6 is the method prescribed by ISMIP6."
possible_values="'none', 'file', 'constant', 'mismip', 'draft_dependence', 'temperature_profile', 'ismip6'"
/>
<nml_option name="config_bmlt_float_flux" type="real" default_value="0.0" units="W m^{-2}"
description="Value of the constant heat flux applied to the base of floating ice (positive upward)."
possible_values="Any positive real value"
/>
<nml_option name="config_bmlt_float_xlimit" type="real" default_value="0.0" units="m"
description="x value defining region where bmlt_float_flux is applied; melt only where abs(x) is greater than xlimit."
possible_values="Any positive real value"
/>
<nml_option name="config_basal_mass_bal_seroussi_amplitude" type="real" default_value="0.0" units="m"
description="amplitude on the depth adjustment applied to the Seroussi subglacial melt parameterization"
possible_values="any positive real value"
/>
<nml_option name="config_basal_mass_bal_seroussi_period" type="real" default_value="1.0" units="a"
description="period of the periodic depth adjustment applied to the Seroussi subglacial melt parameterization"
possible_values="any positive real value"
/>
<nml_option name="config_basal_mass_bal_seroussi_phase" type="real" default_value="0.0" units="cycles"
description="phase of the periodic depth adjustment applied to the Seroussi subglacial melt parameterization. Units are cycles, i.e., 0-1"
possible_values="any positive real value"
/>
<!-- Options related to temperature profile ice shelf basal melt param. -->
<nml_option name="config_temperature_profile_melt_scale_factor" type="real" default_value="6.0" units="m yr^-1 (deg C)^-2"
description="The scale factor in the 'temperature_profile' melt parameterization that converts a product of two ocean temperatures to a melt rate. Called kappa in code."
Expand Down Expand Up @@ -736,6 +724,8 @@
<package name="thermal" description="This package includes variables required for the thermal solver."/>

<package name="extrapOceanData" description="This package includes variables required for extrapolating ocean data into MALI ice shelf cavities." />

<package name="draftDependentMelt" description="This package includes variables required for the draft dependent basal melt parameterization"/>
</packages>


Expand Down Expand Up @@ -852,8 +842,14 @@
<!-- this variable just for ocean extrapolation -->
<var name="orig3dOceanMask" packages="extrapOceanData"/>
<var name="icebergFjordMask" packages="extrapOceanData"/>
<!-- The following variables are defined for the draft dependent ice-shelf basal melt parameterization -->
<var name="floatingBasalMassBalAdjustment"/>
<var name="draftDepenBasalMelt_minDraft" packages="draftDependentMelt"/>
<var name="draftDepenBasalMeltAlpha1" packages="draftDependentMelt"/>
<var name="draftDepenBasalMelt_paramType" packages="draftDependentMelt"/>
<var name="draftDepenBasalMelt_constantMeltValue" packages="draftDependentMelt"/>
<var name="draftDepenBasalMeltAlpha0" packages="draftDependentMelt"/>
</stream>

<!-- An alternate way to allow the HO variables to exist in a separate file.
<stream name="inputHigherOrderVelocity"
type="input"
Expand Down Expand Up @@ -961,6 +957,13 @@
<var name="icebergFjordMask" packages="extrapOceanData"/>
<var name="oceanTemperature" packages="extrapOceanData"/>
<var name="oceanSalinity" packages="extrapOceanData"/>
<!-- the following variables just for the draft dependent ice-shelf basal melt parameterization -->
<var name="floatingBasalMassBalAdjustment"/>
<var name="draftDepenBasalMelt_minDraft" packages="draftDependentMelt"/>
<var name="draftDepenBasalMeltAlpha1" packages="draftDependentMelt"/>
<var name="draftDepenBasalMelt_paramType" packages="draftDependentMelt"/>
<var name="draftDepenBasalMelt_constantMeltValue" packages="draftDependentMelt"/>
<var name="draftDepenBasalMeltAlpha0" packages="draftDependentMelt"/>
</stream>


Expand Down Expand Up @@ -1301,7 +1304,25 @@ is the value of that variable from the *previous* time level!
<var name="floatingBasalMassBal" type="real" dimensions="nCells Time" units="kg m^-2 s^-1"
description="Potential basal mass balance on floating regions"
/>
<var name="basalMassBalApplied" type="real" dimensions="nCells Time" units="kg m^-2 s^-1"
<var name="floatingBasalMassBalAdjustment" type="real" dimensions="nCells Time" units="kg m^{-2} s^{-1}" default_value="0.0"
Copy link

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?

Copy link
Author

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.

description="adjustment to floatingBasalMassBal."
/>
<var name="draftDepenBasalMelt_minDraft" type="real" dimensions="nCells" units="m" package="draftDependentMelt" default_value="0.0"
description="Minimum draft depth at which linear draft dependence is valid. Above this depth, a constant value of draftDepenBasalMeltAlpha0 is used for the melt rate."
/>
<var name="draftDepenBasalMelt_paramType" type="real" dimensions="nCells" units="unitless" package="draftDependentMelt" default_value="0.0"
description="Parameterization type for draft dependence basal melt: 0=piecewise linear function, 1=constant value (including zero)."
/>
<var name="draftDepenBasalMelt_constantMeltValue" type="real" dimensions="nCells" units="kg m^{-2} s^{-1}" package="draftDependentMelt" default_value="0.0"
description="Constant melt value for draft dependence basal melt (only used if draftDepenBasalMelt_paramType=1, including zero-melt)."
/>
<var name="draftDepenBasalMeltAlpha0" type="real" dimensions="nCells" units="kg m^{-2} s^{-1}" package="draftDependentMelt"
description="Alpha0 (intercept) parameter in (linear) draft dependent calculation of floatingBasalMassBal."
/>
<var name="draftDepenBasalMeltAlpha1" type="real" dimensions="nCells" units="kg m^{-3} s^{-1}" package="draftDependentMelt"
description="Alpha1 (slope) parameter in (linear) draft dependent calculation of floatingBasalMassBal."
/>
<var name="basalMassBalApplied" type="real" dimensions="nCells Time" units="kg m^{-2} s^{-1}"
description="applied basal mass balance"
/>
<var name="groundedBasalMassBalApplied" type="real" dimensions="nCells Time" units="kg m^-2 s^-1"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -114,6 +114,7 @@ function li_setup_packages(configPool, packagePool, iocontext) result(ierr)
logical, pointer :: SIAvelocityActive
logical, pointer :: hydroActive
logical, pointer :: observationsActive
logical, pointer :: draftDependentMeltActive
logical, pointer :: ismip6ShelfMeltActive
logical, pointer :: ismip6GroundedFaceMeltActive
logical, pointer :: thermalActive
Expand All @@ -135,6 +136,7 @@ function li_setup_packages(configPool, packagePool, iocontext) result(ierr)
call mpas_pool_get_package(packagePool, 'higherOrderVelocityActive', higherOrderVelocityActive)
call mpas_pool_get_package(packagePool, 'hydroActive', hydroActive)
call mpas_pool_get_package(packagePool, 'observationsActive', observationsActive)
call mpas_pool_get_package(packagePool, 'draftDependentMeltActive', draftDependentMeltActive)
call mpas_pool_get_package(packagePool, 'ismip6ShelfMeltActive', ismip6ShelfMeltActive)
call mpas_pool_get_package(packagePool, 'ismip6GroundedFaceMeltActive', ismip6GroundedFaceMeltActive)
call mpas_pool_get_package(packagePool, 'thermalActive', thermalActive)
Expand Down Expand Up @@ -167,6 +169,12 @@ function li_setup_packages(configPool, packagePool, iocontext) result(ierr)
"'config_ocean_data_extrapolation' is set to .true.")
endif

if (trim(config_basal_mass_bal_float) == 'draft_dependence') then
draftDependentMeltActive = .true.
call mpas_log_write("The 'draftDependentMelt' package and assocated variables have been enabled because " // &
"'config_basal_mass_bal_float' is set to 'draft_dependence'")
endif

if ( (trim(config_basal_mass_bal_float) == 'ismip6') .or. &
((trim(config_front_mass_bal_grounded) == 'ismip6') .and. &
(config_use_3d_thermal_forcing_for_face_melt)) .or. &
Expand Down
Loading