Skip to content

Commit

Permalink
Define draft dependence function for basal melt adjustment
Browse files Browse the repository at this point in the history
Add linear draft-dependent (spatial dependence) basal melt adjustment
for AISLENS generator.
  • Loading branch information
mshiv committed Feb 15, 2024
1 parent cfe4264 commit 8611707
Showing 1 changed file with 29 additions and 5 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -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.
!>
!-----------------------------------------------------------------------
Expand Down Expand Up @@ -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', &
Expand All @@ -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) &
Expand Down

0 comments on commit 8611707

Please sign in to comment.