@@ -1887,6 +1887,7 @@ subroutine update_channel(block, err)
18871887 real (kind=RKIND), pointer :: config_SGH_incipient_channel_width
18881888 real (kind=RKIND), pointer :: bedRoughMax
18891889 logical, pointer :: config_SGH_include_pressure_melt
1890+ real (kind=RKIND), pointer :: config_SGH_chnl_area_shutoff
18901891 real (kind=RKIND), dimension(:), pointer :: channelArea
18911892 real (kind=RKIND), dimension(:), pointer :: channelMelt
18921893 real (kind=RKIND), dimension(:), pointer :: channelPressureFreeze
@@ -1929,6 +1930,7 @@ subroutine update_channel(block, err)
19291930 call mpas_pool_get_config(liConfigs, ' config_SGH_incipient_channel_width' , config_SGH_incipient_channel_width)
19301931 call mpas_pool_get_config(liConfigs, ' config_SGH_include_pressure_melt' , config_SGH_include_pressure_melt)
19311932 call mpas_pool_get_config(liConfigs, ' config_SGH_bed_roughness_max' , bedRoughMax)
1933+ call mpas_pool_get_config(liConfigs, ' config_SGH_chnl_area_shutoff' , config_SGH_chnl_area_shutoff)
19321934 call mpas_pool_get_dimension(meshPool, ' nVertLevels' , nVertLevels)
19331935 call mpas_pool_get_dimension(meshPool, ' nEdgesSolve' , nEdgesSolve)
19341936 call mpas_pool_get_array(hydroPool, ' channelArea' , channelArea)
@@ -1994,6 +1996,12 @@ subroutine update_channel(block, err)
19941996 channelMelt = (abs(channelDischarge * hydropotentialSlopeNormal) & ! channel dissipation
19951997 + abs(waterFlux * hydropotentialSlopeNormal * config_SGH_incipient_channel_width) & !some sheet dissipation
19961998 ) / latent_heat_ice
1999+ ! disable channel melting above area limit
2000+ do iEdge = 1, nEdgesSolve
2001+ if (channelArea(iEdge) > config_SGH_chnl_area_shutoff) then
2002+ channelMelt(iEdge) = 0.0_RKIND
2003+ endif
2004+ enddo
19972005 channelPressureFreeze = -1.0_RKIND * iceMeltingPointPressureDependence * cp_freshwater * rho_water * &
19982006 (channelDischarge + waterFlux * config_SGH_incipient_channel_width) &
19992007 * waterPressureSlopeNormal / latent_heat_ice
@@ -2074,11 +2082,9 @@ subroutine evolve_channel(block, err)
20742082 integer, dimension(:,:), pointer :: edgeSignOnCell
20752083 real (kind=RKIND), dimension(:), pointer :: areaCell
20762084 real (kind=RKIND), dimension(:), pointer :: dcEdge
2077- real (kind=RKIND), pointer :: config_SGH_chnl_max_area
20782085 integer, pointer :: nCellsSolve
20792086 integer :: iCell, iEdgeOnCell, iEdge
20802087
2081- call mpas_pool_get_config(liConfigs, ' config_SGH_chnl_max_area' , config_SGH_chnl_max_area)
20822088 call mpas_pool_get_subpool(block % structs, ' hydro' , hydroPool)
20832089 call mpas_pool_get_subpool(block % structs, ' mesh' , meshPool)
20842090 call mpas_pool_get_array(hydroPool, ' deltatSGH' , deltatSGH)
@@ -2124,7 +2130,6 @@ subroutine evolve_channel(block, err)
21242130 channelArea = channelChangeRate * deltatSGH + channelArea
21252131 ! If sheet dissipation contributes to channel, there should be no need for a minimum channel size
21262132 channelArea = max(1.0e-8_RKIND, channelArea) ! make some tiny value when it goes negative
2127- channelArea = min(config_SGH_chnl_max_area, channelArea) ! limit channel area to config-specified max value
21282133
21292134 !--------------------------------------------------------------------
21302135 end subroutine evolve_channel
0 commit comments