Ice thickness distribution model with multi-layer thermodynamics.
Routines to compute mechanical redistribution and strength.
See Bitz, C.M., and W.H. Lipscomb, 1999:
An energy-conserving thermodynamic model of sea ice,
J. Geophys. Res., 104, 15,669-15,677.
See Bitz, C.M., M.M. Holland, A.J. Weaver, M. Eby, 2001:
Simulating the ice-thickness distribution in a climate model,
J. Geophys. Res., 106, 2441-2464.
REVISION HISTORY:
author: C. M. BitzINTERFACE:
module ice_mechredUSES:
use ice_model_size use ice_constants use ice_state use ice_itd use ice_dyn_evp
INTERFACE:
subroutine init_mechredDESCRIPTION:
Initialize constants for ridging
REVISION HISTORY:
author: C.M.Bitz, UWUSES:
INPUT/OUTPUT PARAMETERS:
INTERFACE:
subroutine mechanical_redistrDESCRIPTION:
This routine works with ncat=1
In fact, it will provide a source of open water from shear
deformation. See Stern et al, 1995 for information about
how and why this is done
Keeps track of heat and fresh water flx to ocn
if snow on ice that ridges is thrown into the ocean
REVISION HISTORY:
author: C.M.Bitz, UWUSES:
use ice_domain use ice_flux use ice_grid use ice_timers use ice_calendar, only: dtINPUT/OUTPUT PARAMETERS:
INTERFACE:
subroutine ridge( dt1, closng, epsi, delta_local, Tf1, $ Fhnet1, Fresh1, Gamm, H2Gamm)DESCRIPTION:
Ridge ice due to convergence or shear deformation
note the timestep is dt1 for ridging among the cats
however will subcycle with timestep dtsub if a cat
would run out of ice if the timestep were greater than dtsub
Throw snow on ice that ridges into ocean if snow_into_ocn=.true.
REVISION HISTORY:
author: C.M.Bitz, UWUSES:
use shr_sys_mod, only : shr_sys_abortINPUT/OUTPUT PARAMETERS:
real (kind=dbl_kind), intent(in) :: & dt1 &, delta_local ! Delta from dynamics routine &, Tf1 ! ocean freezing temperature real (kind=dbl_kind), intent(out) :: & Fhnet1 ! heat given to ocean from snow (N/m) &, Fresh1 ! water given to ocean from snow (m) &, H2Gamm (ncat,ncat) ! H*volume frac from cat i that goes into j real (kind=dbl_kind), intent(inout) :: & Gamm (ncat,ncat) ! area frac from cat i that goes into j &, epsi ! actual divergence computed from transport (1/s) &, closng ! closing from Flato & Hibler Eq. 9 (1/s)
INTERFACE:
subroutine ridging_mode( W, Wa, Gamm )DESCRIPTION:
Compute W and Wa, factors for ridging mode and participation function
REVISION HISTORY:
author: C.M.Bitz, UWUSES:
INPUT/OUTPUT PARAMETERS:
real (kind=dbl_kind), intent(in) :: & Gamm (ncat,ncat) ! area frac from cat i that goes into j real (kind=dbl_kind), intent(out) :: & W (0:ncat) ! W factor, geometric comp. of ridging mode &, Wa (0:ncat) ! part of W from participation func.
INTERFACE:
subroutine ridge_matrices( hin, Hmean, Gamm, HGamm, H2Gamm )DESCRIPTION:
Compute Gamm,HGamm,H2Gamm for ridge and strength for true thicknesses
REVISION HISTORY:
author: C.M.Bitz, UWUSES:
INPUT/OUTPUT PARAMETERS:
real (kind=dbl_kind), intent(out) :: & hin (ncat) ! ice thickness (m) &, Hmean (ncat) ! mean thickness of ridg ice from cat nc (m) &, Gamm (ncat,ncat) ! area frac from cat i that goes into j &, HGamm (ncat,ncat) ! volume frac from cat i that goes into j &, H2Gamm (ncat,ncat) ! H*volume frac from cat i that goes into j ! HGamm is used in ridge and H2Gamm is used in roth_strength
INTERFACE:
subroutine comp_matrices( rowflg, hin, Hmean, $ Gamm, HGamm, H2Gamm )DESCRIPTION:
Compute Gamm, HGamm, H2Gamm
HGamm is used in ridge and H2Gamm is used in roth-strength
Gamm(nc,k) distributes ice that participates in ridging
from cat nc into a distrib. of cats k
n1 is the smallest k with nonzero fract
n2 is the largest k with nonzero fract
ice that partic. has thickness hin(nc) and it ridges up to linear distrib. between 2*hin(nc) and 2*sqrt(cK*hin(nc))
REVISION HISTORY:
author: C.M.Bitz, UWUSES:
INPUT/OUTPUT PARAMETERS:
logical (kind=log_kind), intent(in) :: & rowflg(ncat) ! true if cat has nonzero fractional area real (kind=dbl_kind), intent(in) :: & hin (ncat) ! ice thickness (m) real (kind=dbl_kind), intent(out) :: & Hmean (ncat) ! mean thickness of ridg ice from cat nc (m) &, Gamm (ncat,ncat) ! area frac from cat i that goes into j &, HGamm (ncat,ncat) ! volume frac from cat i that goes into j &, H2Gamm (ncat,ncat) ! H*volume frac from cat i that goes into j
INTERFACE:
real function roth_strength( Gamm ,H2Gamm )DESCRIPTION:
Compute the ice strength based on Rothrock, 1975 and also see FH95
does not make sense to do this unless the ice that participates in
ridging is well resolved - must have about 5 categories, 10 would
be better
REVISION HISTORY:
author: C.M.Bitz, UWUSES:
INPUT/OUTPUT PARAMETERS:
real (kind=dbl_kind), intent(in) :: & Gamm (ncat,ncat) ! area frac from cat i that goes into j &, H2Gamm (ncat,ncat) ! H*volume frac from cat i that goes into j