Skip to content
Original file line number Diff line number Diff line change
Expand Up @@ -112,6 +112,10 @@
description="width of sheet beneath/around channel that contributes to melt within the channel"
possible_values="positive real number"
/>
<nml_option name="config_SGH_chnl_max_area" type="real" default_value="500.0" units="m^2"
description="max value for channel area. If channel evolution leads to an area larger than this, it gets set back to this value. Note this will violate mass conservation, but we also do not remove channel melt mass from the ice above, so that is already a mass conservation issue."
possible_values="positive real number"
/>
<nml_option name="config_SGH_include_pressure_melt" type="logical" default_value=".false." units="none"
description="whether to include the pressure melt term in the rate of channel opening"
possible_values=".true. or .false."
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2074,9 +2074,11 @@ subroutine evolve_channel(block, err)
integer, dimension(:,:), pointer :: edgeSignOnCell
real (kind=RKIND), dimension(:), pointer :: areaCell
real (kind=RKIND), dimension(:), pointer :: dcEdge
real (kind=RKIND), pointer :: config_SGH_chnl_max_area
integer, pointer :: nCellsSolve
integer :: iCell, iEdgeOnCell, iEdge

call mpas_pool_get_config(liConfigs, 'config_SGH_chnl_max_area', config_SGH_chnl_max_area)
call mpas_pool_get_subpool(block % structs, 'hydro', hydroPool)
call mpas_pool_get_subpool(block % structs, 'mesh', meshPool)
call mpas_pool_get_array(hydroPool, 'deltatSGH', deltatSGH)
Expand Down Expand Up @@ -2122,6 +2124,7 @@ subroutine evolve_channel(block, err)
channelArea = channelChangeRate * deltatSGH + channelArea
! If sheet dissipation contributes to channel, there should be no need for a minimum channel size
channelArea = max(1.0e-8_RKIND, channelArea) ! make some tiny value when it goes negative
channelArea = min(config_SGH_chnl_max_area, channelArea) ! limit channel area to config-specified max value

Choose a reason for hiding this comment

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

Would it be better to just limit channelMelt and channelPressureFreeze when channelArea exceeds config_SGH_chnl_max_area? That way the channel still wouldn't grow past the max value but we also wouldn't violate mass conservation if there was no actual unaccounted melting. Probably doesn't affect the outcome but could be cleaner to not have a cell where channelMelt far exceeds the channelArea


!--------------------------------------------------------------------
end subroutine evolve_channel
Expand Down