Skip to content

Commit

Permalink
Add draft dependence subroutine
Browse files Browse the repository at this point in the history
  • Loading branch information
mshiv committed Feb 16, 2024
1 parent 2dc1067 commit bb469c4
Show file tree
Hide file tree
Showing 3 changed files with 37 additions and 191 deletions.
42 changes: 11 additions & 31 deletions components/mpas-albany-landice/src/Registry.xml
Original file line number Diff line number Diff line change
Expand Up @@ -348,12 +348,8 @@

<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_variability_modifier" type="logical" default_value=".false." units="unitless"
description="If true, ... "
possible_values=".true. or .false."
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', 'draft_dependence' calculates draft dependent floatingBasalMassBal using slopeGen and interceptGen. '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)."
Expand All @@ -363,18 +359,6 @@
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 @@ -685,7 +669,7 @@

<package name="thermal" description="This package includes variables required for the thermal solver."/>

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


Expand Down Expand Up @@ -799,10 +783,9 @@
<var name="ismip6Runoff" packages="ismip6GroundedFaceMelt" />
<var name="ismip6_2dThermalForcing" packages="ismip6GroundedFaceMelt" />
<!-- TBD: The following variables are defined for the aislens draft dependence parameterization -->
<!--<var name="slopeGen" packages="aislens"/> -->
<!--<var name="interceptGen" packages="aislens"/> -->
<var name="slopeGen" packages="draftDependentMelt"/>
<var name="interceptGen" packages="draftDependentMelt"/>
<!-- The below is calculated at each time step. Should be moved to a different stream? -->
<!--<var name="zDraft" packages="aislens"/> -->
</stream>

<!-- An alternate way to allow the HO variables to exist in a separate file.
Expand Down Expand Up @@ -1234,17 +1217,14 @@ 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="floatingBasalMassBalAdjustment" type="real" dimensions="nCells Time" units="kg m^{-2} s^{-1}"
description="adjustment to floatingBasalMassBal. Currently used to apply a variability modifier"
<var name="floatingBasalMassBalAdjustment" type="real" dimensions="nCells Time" units="kg m^{-2} s^{-1}" default_value="0.0"
description="adjustment to floatingBasalMassBal."
/>
<var name="interceptGen" type="real" dimensions="nCells Time" units="unitless"
description="Intercept parameter in draft dependent adjustment to floatingBasalMassBal. Currently used to apply a variability modifier"
<var name="interceptGen" type="real" dimensions="nCells" units="unitless" package="draftDependentMelt"
description="Intercept parameter in draft dependent calculation of floatingBasalMassBal."
/>
<var name="slopeGen" type="real" dimensions="nCells Time" units="unitless"
description="Slope parameter in draft dependent adjustment to floatingBasalMassBal. Currently used to apply a draft dependent modifier"
/>
<var name="zDraft" type="real" dimensions="nCells Time" units="m"
description="Draft calculated for draft-melt adjustment to floatingBasalMassBal. Currently used to apply a draft dependent modifier"
<var name="slopeGen" type="real" dimensions="nCells" units="unitless" package="draftDependentMelt"
description="Slope parameter in draft dependent calculation of floatingBasalMassBal."
/>
<var name="basalMassBalApplied" type="real" dimensions="nCells Time" units="kg m^{-2} s^{-1}"
description="applied basal mass balance"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -113,6 +113,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 @@ -132,6 +133,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 All @@ -157,6 +159,12 @@ function li_setup_packages(configPool, packagePool, iocontext) result(ierr)
"'config_write_albany_ascii_mesh' 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)) ) then
Expand Down
Loading

0 comments on commit bb469c4

Please sign in to comment.