From 861170745ec1a712ff23d047bc58dfae1c71cf60 Mon Sep 17 00:00:00 2001 From: Shivaprakash Muruganandham Date: Thu, 15 Feb 2024 08:09:09 -0800 Subject: [PATCH] Define draft dependence function for basal melt adjustment Add linear draft-dependent (spatial dependence) basal melt adjustment for AISLENS generator. --- .../src/mode_forward/mpas_li_iceshelf_melt.F | 34 ++++++++++++++++--- 1 file changed, 29 insertions(+), 5 deletions(-) diff --git a/components/mpas-albany-landice/src/mode_forward/mpas_li_iceshelf_melt.F b/components/mpas-albany-landice/src/mode_forward/mpas_li_iceshelf_melt.F index ffd37e6fe88b..4c769b6f14b7 100644 --- a/components/mpas-albany-landice/src/mode_forward/mpas_li_iceshelf_melt.F +++ b/components/mpas-albany-landice/src/mode_forward/mpas_li_iceshelf_melt.F @@ -629,10 +629,16 @@ end subroutine li_basal_melt_floating_ice ! ! ! routine calculate_aislens_melt_variability_adjustment ! -!> \brief Calculate ice shelf melt rate from depth param. +!> \brief Calculate the draft dependent ice shelf melt rate component +! from the draft params. !> \author Shivaprakash Muruganandham !> \date February 2024 -!> \details +!> \details A melt rate parameterization with a linear melt rate - draft +! relationship. In the variability ensemble generator workflow, +! this adjustment is the F_d(x_0) term in Eqn 1, from +! Muruganandham, S., Robel, A. A., Hoffman, M. J., & Price, S. (2023). +! Statistical Generation of Ocean Forcing With Spatiotemporal Variability for Ice Sheet Models. +! Computing in Science & Engineering. !> !----------------------------------------------------------------------- @@ -671,20 +677,37 @@ subroutine calculate_aislens_melt_variability_adjustment( & !----------------------------------------------------------------- ! local variables !----------------------------------------------------------------- - !real (kind=RKIND) :: slopeSer ! slope of relation between depth and melt rate - !real (kind=RKIND) :: interceptSer ! depth at which melting goes to 0 + + ! slopeSer and interceptSer variables: should they be defined as + ! input or local variables for this subroutine? + + real (kind=RKIND) :: slopeSer ! slope of relation between depth and melt rate + real (kind=RKIND) :: interceptSer ! depth at which melting goes to 0 !real (kind=RKIND) :: maxMeltSer ! maximum allowable melt rate !real (kind=RKIND) :: sillDepth ! depth below which melt rate no longer increases !real (kind=RKIND), pointer :: config_basal_mass_bal_seroussi_amplitude !real (kind=RKIND), pointer :: config_basal_mass_bal_seroussi_period !real (kind=RKIND), pointer :: config_basal_mass_bal_seroussi_phase !real(kind=RKIND) :: hCavity ! depth of ice cavity beneath floating ice (m) - !real(kind=RKIND) :: zDraft ! draft of floating ice (m below sea level) + real(kind=RKIND) :: zDraft ! draft of floating ice (m below sea level) !integer :: iCell err = 0 + + !Input field values for slopeSer(iCell) and interceptSer(iCell) + !from file + + do iCell = 1, nCellsSolve + zDraft(iCell) = lowerSurface(iCell) - config_sea_level + floatingBasalMassBalAdjustment(iCell) = interceptSer(iCell) + & + zDraft(iCell) * slopeSer(iCell) + enddo ! iCell + + ! Optional if below is required within subroutine: + ! floatingBasalMassBalAdjustment(:) = floatingBasalMassBalAdjustment(:) * config_ice_density / scyr + !call mpas_pool_get_config(liConfigs, 'config_basal_mass_bal_seroussi_amplitude', & ! config_basal_mass_bal_seroussi_amplitude) ! meters !call mpas_pool_get_config(liConfigs, 'config_basal_mass_bal_seroussi_period', & @@ -702,6 +725,7 @@ subroutine calculate_aislens_melt_variability_adjustment( & ! err = ior(err, 1) !endif + ! Modify intercept height for variability parameters !interceptSer = interceptSer + config_basal_mass_bal_seroussi_amplitude * & ! sin( (2.0_RKIND * pii / config_basal_mass_bal_seroussi_period) * (daysSinceStart/365.0_RKIND) &