Skip to content

Commit

Permalink
Add maximum depth for grounding scheme (#325)
Browse files Browse the repository at this point in the history
* updated my machine files

* added max depth threshold for basal stress parameterization

* modified the doc for the change in the basal stress parameterization

* modified doc for grounding
  • Loading branch information
phil-blain authored and apcraig committed Jul 19, 2019
1 parent 93ea7a7 commit 647aa1f
Show file tree
Hide file tree
Showing 4 changed files with 42 additions and 19 deletions.
24 changes: 16 additions & 8 deletions cicecore/cicedynB/dynamics/ice_dyn_shared.F90
Original file line number Diff line number Diff line change
Expand Up @@ -913,8 +913,10 @@ subroutine basal_stress_coeff (nx_block, ny_block, &
hu, & ! volume per unit area of ice at u location (mean thickness)
hwu, & ! water depth at u location
hcu, & ! critical thickness at u location
k2 = 15.0_dbl_kind , & ! second free parameter (N/m^3) for landfast parametrization
alphab = 20.0_dbl_kind ! alphab=Cb factor in Lemieux et al 2015
k2 = 15.0_dbl_kind , & ! second free parameter (N/m^3) for landfast parametrization
alphab = 20.0_dbl_kind, & ! alphab=Cb factor in Lemieux et al 2015
threshold_hw = 30.0_dbl_kind ! max water depth for grounding
! see keel data from Amundrud et al. 2004 (JGR)

integer (kind=int_kind) :: &
i, j, ij
Expand All @@ -926,15 +928,21 @@ subroutine basal_stress_coeff (nx_block, ny_block, &
j = indxuj(ij)

! convert quantities to u-location
au = max(aice(i,j),aice(i+1,j),aice(i,j+1),aice(i+1,j+1))

hwu = min(hwater(i,j),hwater(i+1,j),hwater(i,j+1),hwater(i+1,j+1))
hu = max(vice(i,j),vice(i+1,j),vice(i,j+1),vice(i+1,j+1))

! 1- calculate critical thickness
hcu = au * hwu / k1
if (hwu < threshold_hw) then

au = max(aice(i,j),aice(i+1,j),aice(i,j+1),aice(i+1,j+1))
hu = max(vice(i,j),vice(i+1,j),vice(i,j+1),vice(i+1,j+1))

! 1- calculate critical thickness
hcu = au * hwu / k1

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

endif

enddo ! ij

Expand Down
17 changes: 12 additions & 5 deletions configuration/scripts/machines/Macros.fram_intel
Original file line number Diff line number Diff line change
Expand Up @@ -15,10 +15,17 @@ FFLAGS := -O2 -fp-model precise -convert big_endian -assume byterecl -ftz -t
#-xHost
FFLAGS_NOOPT:= -O0

SCC := s.cc
SFC := s.f90
MPICC := s.cc -mpi
MPIFC := s.f90 -mpi
ifeq ($(ICE_BLDDEBUG), true)
FFLAGS += -O0 -g -check -fpe0 -ftrapuv -fp-model except -check noarg_temp_created -init=snan,arrays
# -heap-arrays 1024
else
FFLAGS += -O2
endif

SCC := icc
SFC := ifort
MPICC := mpicc
MPIFC := mpif90

ifeq ($(ICE_COMMDIR), mpi)
FC := $(MPIFC)
Expand All @@ -29,7 +36,7 @@ else
endif
LD:= $(FC)

NETCDF_PATH := $(NETCDF)
NETCDF_PATH := /fs/ssm/hpco/tmp/eccc/201402/04/intel-2016.1.150/ubuntu-14.04-amd64-64/

PIO_CONFIG_OPTS:= --enable-filesystem-hints=gpfs

Expand Down
14 changes: 9 additions & 5 deletions configuration/scripts/machines/env.fram_intel
Original file line number Diff line number Diff line change
@@ -1,14 +1,18 @@
#!/bin/csh -f

#. ssmuse-sh -d /fs/ssm/eccc/mrd/rpn/OCEAN/cncpt-3.1.2
#source NEMO_compiler.ksh
source /fs/ssm/main/opt/ssmuse/ssmuse-1.7/ssmuse_1.7_all/bin/ssmuse-boot.csh >& /dev/null # package loader
set ssmuse=`which ssmuse-csh`
source $ssmuse -d /fs/ssm/main/opt/intelcomp/intelcomp-2016.1.156 # intel compiler
source /fs/ssm/main/opt/intelcomp/intelcomp-2016.1.156/intelcomp_2016.1.156_multi/bin/compilervars.csh intel64 # should be sourced by above domain, but bug in csh script
source $ssmuse -d /fs/ssm/main/opt/openmpi/openmpi-1.6.5/intelcomp-2016.1.156 # openmpi
source $ssmuse -d /fs/ssm/hpco/tmp/eccc/201402/04/intel-2016.1.150 # netcdf (and openmpi)

setenv ICE_MACHINE_ENVNAME fram
setenv ICE_MACHINE_COMPILER intel
setenv ICE_MACHINE_MAKE make
setenv ICE_MACHINE_WKDIR /home/dormrb01/zephyr4/armn/jfl/local1/Minor_modif4july2018/CICE/tests/CICE_RUNS
setenv ICE_MACHINE_INPUTDATA /users/dor/armn/jfl/local1/CICE6/CICE/configuration/data/gx3Ncar
setenv ICE_MACHINE_BASELINE /home/dormrb01/zephyr4/armn/jfl/local1/Minor_modif4july2018/CICE/tests/CICE_BASELINE
setenv ICE_MACHINE_WKDIR /home/dormrb01/zephyr4/armn/jfl/local1/CICEDIRS/CICE_RUNS
setenv ICE_MACHINE_INPUTDATA /users/dor/armn/jfl/local1/FORCING
setenv ICE_MACHINE_BASELINE /home/dormrb01/zephyr4/armn/jfl/local1/CICEDIRS/CICE_BASELINE
setenv ICE_MACHINE_SUBMIT "qsub"
setenv ICE_MACHINE_QUEUE "default"
setenv ICE_MACHINE_TPNODE 36
Expand Down
6 changes: 5 additions & 1 deletion doc/source/science_guide/sg_dynamics.rst
Original file line number Diff line number Diff line change
Expand Up @@ -190,7 +190,11 @@ above hydrostatic balance and the value of :math:`k_2`. It is, however, the para
The value of :math:`k_1` can be changed at runtime using the namelist variable ``k1``. The grounding scheme can be turned on or off using the namelist logical basalstress.

Note that the user must provide a bathymetry field for using this grounding
scheme. Grounding occurs up to water depth of ~25 m. It is suggested to have a bathymetry field with water depths larger than 5 m that represents well shallow water regions such as the Laptev Sea and the East Siberian Sea.
scheme. It is suggested to have a bathymetry field with water depths larger than
5 m that represents well shallow water regions such as the Laptev Sea and the
East Siberian Sea. To prevent unrealistic grounding, :math:`T_b` is set to zero when :math:`h_{wu}`
is larger than 30 m. This maximum value is chosen based on observations of large
keels in the Arctic Ocean :cite:`Amundrud04`.


.. _internal-stress:
Expand Down

0 comments on commit 647aa1f

Please sign in to comment.