- 4.18.1 init_mechred - initialize constants for ridging
- 4.18.2 mechanical_redistr - driver for ridging
- 4.18.3 ridge - ridge ice due to convergence or shear deformation
- 4.18.4 ridging_mode - compute W and Wa factors
- 4.18.5 ridge_matrices - compute Gamma factors
- 4.18.6 comp_matrices - compute Gamm functions
- 4.18.7 real function roth_strength - Rothrock ice strength

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. Bitz

module ice_mechred

use ice_model_size use ice_constants use ice_state use ice_itd use ice_dyn_evp

*INTERFACE:*

subroutine init_mechred

Initialize constants for ridging

*REVISION HISTORY:*

author: C.M.Bitz, UW

*INTERFACE:*

subroutine mechanical_redistr

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, UW

use ice_domain use ice_flux use ice_grid use ice_timers use ice_calendar, only: dt

*INTERFACE:*

subroutine ridge( dt1, closng, epsi, delta_local, Tf1, $ Fhnet1, Fresh1, Gamm, H2Gamm)

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, UW

use shr_sys_mod, only : shr_sys_abort

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 )

Compute W and Wa, factors for ridging mode and participation function

*REVISION HISTORY:*

author: C.M.Bitz, UW

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 )

Compute Gamm,HGamm,H2Gamm for ridge and strength for true thicknesses

*REVISION HISTORY:*

author: C.M.Bitz, UW

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 )

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, UW

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 )

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, UW

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