Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add probabilistic grounding scheme for landfast ice #565

Merged
merged 27 commits into from
Feb 22, 2021
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
27 commits
Select commit Hold shift + click to select a range
8f49435
In the process of adding seabed2 parameterization
JFLemieux73 Jan 26, 2021
73cdca4
Added calls foe icepack_query_parameters
JFLemieux73 Jan 26, 2021
d7a9eec
Modified modules used in subroutine to match latest code (it now comp…
JFLemieux73 Jan 26, 2021
3a4c2b4
Changed expression basal stress to seabed stress
JFLemieux73 Jan 26, 2021
e0aaf74
Replaced basal by better expression seabed at many places
JFLemieux73 Jan 27, 2021
c9222d0
seabed everywhere...basalstress logical replaced by seabedstress
JFLemieux73 Jan 27, 2021
1f6f09a
Added kseabed in namelist for choosing seabed stress method
JFLemieux73 Jan 27, 2021
41ef64e
Changed gacc to gravit (from icepack) and use of alphab from ice_in
JFLemieux73 Jan 28, 2021
c99a3df
Cleaned up the seabed2 code, added comments
JFLemieux73 Feb 3, 2021
001914f
Changing the doc for new grounding scheme
JFLemieux73 Feb 3, 2021
257e7ac
Almost done with the doc
JFLemieux73 Feb 4, 2021
774d2b1
Minor changes to the doc
JFLemieux73 Feb 8, 2021
8f320e9
Modifs to the doc
JFLemieux73 Feb 11, 2021
a8bcbed
Value of sigmab was not the right one with respect to Dupont et el in…
JFLemieux73 Feb 11, 2021
c6426b3
For some rebase did not work completely...replced basalstress logical…
JFLemieux73 Feb 11, 2021
4bfe465
Other issue with the rebase for ice_init...fixed
JFLemieux73 Feb 11, 2021
16e9b1d
Minor mistake corrected...it compiles
JFLemieux73 Feb 11, 2021
cdc82d1
changed basalstress to seabedstress in options for tests
JFLemieux73 Feb 11, 2021
821ab05
Addressed some of the changes required for the PR
JFLemieux73 Feb 17, 2021
eae232d
Replace kseabed by character string for choice of method
JFLemieux73 Feb 18, 2021
1ddff2e
Updated the doc
JFLemieux73 Feb 18, 2021
f0d5e28
Cosmetic change ice_init
JFLemieux73 Feb 18, 2021
9f689ee
Update doc/source/user_guide/ug_testing.rst
JFLemieux73 Feb 18, 2021
852658e
Cosmetic changes to ice_init to align prints
JFLemieux73 Feb 18, 2021
b6bb0a4
Some modifs requested for PR: same taub after 4 months (gx1)
JFLemieux73 Feb 19, 2021
0a930db
Done with requested changes to new grounding method: same taub after …
JFLemieux73 Feb 19, 2021
173d99e
Modifs to doc and new test of prob method
JFLemieux73 Feb 22, 2021
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
Changed expression basal stress to seabed stress
  • Loading branch information
JFLemieux73 committed Feb 15, 2021
commit 3a4c2b472fea45f2485141f5a02340429e45c585
24 changes: 12 additions & 12 deletions cicecore/cicedynB/dynamics/ice_dyn_evp.F90
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ module ice_dyn_evp
p222, p25, p333, p5, c1
use ice_dyn_shared, only: stepu, dyn_prep1, dyn_prep2, dyn_finish, &
ndte, yield_curve, ecci, denom1, arlx1i, fcor_blk, uvel_init, &
vvel_init, basal_stress_coeff, basal_stress_prob, basalstress, Ktens, revp
vvel_init, seabed1_stress_coeff, seabed2_stress_coeff, basalstress, Ktens, revp
use ice_fileunits, only: nu_diag
use ice_exit, only: abort_ice
use icepack_intfc, only: icepack_warnings_flush, icepack_warnings_aborted
Expand Down Expand Up @@ -327,7 +327,7 @@ subroutine evp (dt)
endif

!-----------------------------------------------------------------
! basal stress coefficients (landfast ice)
! seabed stress coefficients (landfast ice)
!-----------------------------------------------------------------

if (basalstress) then
Expand All @@ -337,17 +337,17 @@ subroutine evp (dt)
select case (seabed)

case (1)
call basal_stress_coeff (nx_block, ny_block, &
icellu (iblk), &
indxui(:,iblk), indxuj(:,iblk), &
vice(:,:,iblk), aice(:,:,iblk), &
hwater(:,:,iblk), Tbu(:,:,iblk))
call seabed1_stress_coeff (nx_block, ny_block, &
icellu (iblk), &
indxui(:,iblk), indxuj(:,iblk), &
vice(:,:,iblk), aice(:,:,iblk), &
hwater(:,:,iblk), Tbu(:,:,iblk))
case (2)
call basal_stress_prob (nx_block, ny_block, &
icellt(iblk), indxti(:,iblk), indxtj(:,iblk), &
icellu(iblk), indxui(:,iblk), indxuj(:,iblk), &
aicen(:,:,:,iblk), vicen(:,:,:,iblk), &
hwater(:,:,iblk), Tbu(:,:,iblk))
call seabed2_stress_coeff (nx_block, ny_block, &
icellt(iblk), indxti(:,iblk), indxtj(:,iblk), &
icellu(iblk), indxui(:,iblk), indxuj(:,iblk), &
aicen(:,:,:,iblk), vicen(:,:,:,iblk), &
hwater(:,:,iblk), Tbu(:,:,iblk))
end select

enddo
Expand Down
69 changes: 36 additions & 33 deletions cicecore/cicedynB/dynamics/ice_dyn_shared.F90
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ module ice_dyn_shared
private
public :: init_dyn, set_evp_parameters, stepu, principal_stress, &
dyn_prep1, dyn_prep2, dyn_finish, &
basal_stress_coeff, basal_stress_prob, &
seabed1_stress_coeff, seabed2_stress_coeff, &
alloc_dyn_shared, deformations, strain_rates, &
stack_velocity_field, unstack_velocity_field

Expand Down Expand Up @@ -87,14 +87,14 @@ module ice_dyn_shared
logical (kind=log_kind), public :: &
basalstress ! if true, basal stress for landfast on

! basal stress parameters
! seabed (basal) stress parameters
real (kind=dbl_kind), public :: &
k1, & ! 1st free parameter for landfast parameterization
k2, & ! second free parameter (N/m^3) for landfast parametrization
k1, & ! 1st free parameter for seabed1 grounding parameterization
k2, & ! second free parameter (N/m^3) for seabed1 grounding parametrization
alphab, & ! alphab=Cb factor in Lemieux et al 2015
threshold_hw, & ! max water depth for grounding
! see keel data from Amundrud et al. 2004 (JGR)
u0 = 5e-5_dbl_kind ! residual velocity for basal stress (m/s)
u0 = 5e-5_dbl_kind ! residual velocity for seabed stress (m/s)

!=======================================================================

Expand Down Expand Up @@ -447,7 +447,7 @@ subroutine dyn_prep2 (nx_block, ny_block, &
dt ! time step

real (kind=dbl_kind), dimension (nx_block,ny_block), intent(out) :: &
Tbu, & ! coefficient for basal stress (N/m^2)
Tbu, & ! coefficient for seabed stress (N/m^2)
uvel_init,& ! x-component of velocity (m/s), beginning of time step
vvel_init,& ! y-component of velocity (m/s), beginning of time step
umassdti, & ! mass of U-cell/dt (kg/m^2 s)
Expand All @@ -469,8 +469,8 @@ subroutine dyn_prep2 (nx_block, ny_block, &
strocny , & ! ice-ocean stress, y-direction
strintx , & ! divergence of internal ice stress, x (N/m^2)
strinty , & ! divergence of internal ice stress, y (N/m^2)
taubx , & ! basal stress, x-direction (N/m^2)
tauby ! basal stress, y-direction (N/m^2)
taubx , & ! seabed stress, x-direction (N/m^2)
tauby ! seabed stress, y-direction (N/m^2)

! local variables

Expand Down Expand Up @@ -648,7 +648,7 @@ subroutine stepu (nx_block, ny_block, &
indxuj ! compressed index in j-direction

real (kind=dbl_kind), dimension (nx_block,ny_block), intent(in) :: &
Tbu, & ! coefficient for basal stress (N/m^2)
Tbu, & ! coefficient for seabed stress (N/m^2)
uvel_init,& ! x-component of velocity (m/s), beginning of timestep
vvel_init,& ! y-component of velocity (m/s), beginning of timestep
aiu , & ! ice fraction on u-grid
Expand All @@ -672,8 +672,8 @@ subroutine stepu (nx_block, ny_block, &
real (kind=dbl_kind), dimension (nx_block,ny_block), intent(inout) :: &
strintx , & ! divergence of internal ice stress, x (N/m^2)
strinty , & ! divergence of internal ice stress, y (N/m^2)
taubx , & ! basal stress, x-direction (N/m^2)
tauby ! basal stress, y-direction (N/m^2)
taubx , & ! seabed stress, x-direction (N/m^2)
tauby ! seabed stress, y-direction (N/m^2)

real (kind=dbl_kind), dimension (nx_block,ny_block), intent(inout) :: &
Cw ! ocean-ice neutral drag coefficient
Expand All @@ -688,7 +688,7 @@ subroutine stepu (nx_block, ny_block, &
vrel , & ! relative ice-ocean velocity
cca,ccb,ab2,cc1,cc2,& ! intermediate variables
taux, tauy , & ! part of ocean stress term
Cb , & ! complete basal stress coeff
Cb , & ! complete seabed (basal) stress coeff
rhow !

character(len=*), parameter :: subname = '(stepu)'
Expand Down Expand Up @@ -716,7 +716,7 @@ subroutine stepu (nx_block, ny_block, &
taux = vrel*waterx(i,j) ! NOTE this is not the entire
tauy = vrel*watery(i,j) ! ocn stress term

Cb = Tbu(i,j) / (sqrt(uold**2 + vold**2) + u0) ! for basal stress
Cb = Tbu(i,j) / (sqrt(uold**2 + vold**2) + u0) ! for seabed stress
! revp = 0 for classic evp, 1 for revised evp
cca = (brlx + revp)*umassdti(i,j) + vrel * cosw + Cb ! kg/m^2 s

Expand All @@ -739,7 +739,7 @@ subroutine stepu (nx_block, ny_block, &
uvel(i,j) = (cca*cc1 + ccb*cc2) / ab2 ! m/s
vvel(i,j) = (cca*cc2 - ccb*cc1) / ab2

! calculate basal stress component for outputs
! calculate seabed stress component for outputs
if (ksub == ndte) then ! on last subcycling iteration
if ( basalstress ) then
taubx(i,j) = -uvel(i,j)*Tbu(i,j) / (sqrt(uold**2 + vold**2) + u0)
Expand Down Expand Up @@ -854,7 +854,7 @@ subroutine dyn_finish (nx_block, ny_block, &
end subroutine dyn_finish

!=======================================================================
! Computes basal stress Tbu coefficients (landfast ice)
! Computes seabed (basal) stress Tbu coefficients (landfast ice)
!
! Lemieux, J. F., B. Tremblay, F. Dupont, M. Plante, G.C. Smith, D. Dumont (2015).
! A basal stress parameterization form modeling landfast ice, J. Geophys. Res.
Expand All @@ -866,13 +866,14 @@ end subroutine dyn_finish
!
! author: JF Lemieux, Philippe Blain (ECCC)
!
! note: Tbu is a part of the Cb as defined in Lemieux et al. 2015 and 2016.
!
subroutine basal_stress_coeff (nx_block, ny_block, &
icellu, &
indxui, indxuj, &
vice, aice, &
hwater, Tbu)
! note1: Tbu is a part of the Cb as defined in Lemieux et al. 2015 and 2016.
! note2: Seabed stress (better name) was called basal stress in Lemieux et al. 2015

subroutine seabed1_stress_coeff (nx_block, ny_block, &
icellu, &
indxui, indxuj, &
vice, aice, &
hwater, Tbu)

integer (kind=int_kind), intent(in) :: &
nx_block, ny_block, & ! block dimensions
Expand All @@ -888,7 +889,7 @@ subroutine basal_stress_coeff (nx_block, ny_block, &
hwater ! water depth at tracer location

real (kind=dbl_kind), dimension (nx_block,ny_block), intent(inout) :: &
Tbu ! coefficient for basal stress (N/m^2)
Tbu ! coefficient for seabed stress (N/m^2)

real (kind=dbl_kind) :: &
au, & ! concentration of ice at u location
Expand All @@ -899,7 +900,7 @@ subroutine basal_stress_coeff (nx_block, ny_block, &
integer (kind=int_kind) :: &
i, j, ij

character(len=*), parameter :: subname = '(basal_stress_coeff)'
character(len=*), parameter :: subname = '(seabed1_stress_coeff)'

do ij = 1, icellu
i = indxui(ij)
Expand All @@ -917,25 +918,25 @@ subroutine basal_stress_coeff (nx_block, ny_block, &
! 1- calculate critical thickness
hcu = au * hwu / k1

! 2- calculate basal stress factor
! 2- calculate seabed stress factor
Tbu(i,j) = k2 * max(c0,(hu - hcu)) * exp(-alphab * (c1 - au))

endif

enddo ! ij

end subroutine basal_stress_coeff
end subroutine seabed1_stress_coeff

!=======================================================================
! Computes seabed stress due to grounded ridges
!
! authors: E. Dumas-Lefebvre, D. Dumont, F. Dupont, JF Lemieux (June 2018)
!
subroutine basal_stress_prob (nx_block, ny_block, &
icellt, indxti, indxtj, &
icellu, indxui, indxuj, &
aicen, vicen, &
hwater, Tbu)
subroutine seabed2_stress_coeff (nx_block, ny_block, &
icellt, indxti, indxtj, &
icellu, indxui, indxuj, &
aicen, vicen, &
hwater, Tbu)
! use modules

use ice_arrays_column, only: hin_max
Expand All @@ -960,7 +961,7 @@ subroutine basal_stress_prob (nx_block, ny_block, &
vicen ! partial volume for last thickness category in ITD

real (kind=dbl_kind), dimension (nx_block,ny_block), intent(inout) :: &
Tbu ! landfast basal stress
Tbu ! seabed stress factor

! local variables

Expand Down Expand Up @@ -998,6 +999,8 @@ subroutine basal_stress_prob (nx_block, ny_block, &
real (kind=dbl_kind) :: atot, x_kmax, x95, x99, x995, x996, x997, x998, x999, xinf
real (kind=dbl_kind) :: cut, rhoi, rhow, pi, puny

character(len=*), parameter :: subname = '(seabed2_stress_coeff)'

call icepack_query_parameters(rhow_out=rhow, rhoi_out=rhoi)
call icepack_query_parameters(pi_out=pi)
call icepack_query_parameters(puny_out=puny)
Expand Down Expand Up @@ -1088,7 +1091,7 @@ subroutine basal_stress_prob (nx_block, ny_block, &
Tbu(i,j) = max(Tbt(i,j),Tbt(i+1,j),Tbt(i,j+1),Tbt(i+1,j+1))
enddo ! ij

end subroutine basal_stress_prob
end subroutine seabed2_stress_coeff

!=======================================================================

Expand Down