next up previous contents
Next: 4.16 Fortran: Module Interface Up: 4 Module Descriptions Previous: 4.14 Fortran: Module Interface   Contents

Subsections

4.15 Fortran: Module Interface ice_itd - initialize and redistribute ice in the ITD (Source File: ice_itd.F)

Routines to initialize the ice thickness distribution and utilities to redistribute ice among categories. These routines are not specific to a particular numerical implementation.

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, UW
   code heavily modified by Elizabeth C. Hunke, LANL
INTERFACE:
       module ice_itd
USES:
       use ice_kinds_mod
       use ice_model_size
       use ice_constants
       use ice_state

4.15.1 init_itd - initalize area fraction and thickness boundaries for ITD


INTERFACE:

       subroutine init_itd
DESCRIPTION:

Initialize area fraction and thickness boundaries for the itd model


REVISION HISTORY:

   authors: William H. Lipscomb, LANL
            Elizabeth C. Hunke LANL  and C. M. Bitz UW
USES:
       use shr_sys_mod, only : shr_sys_abort
INPUT/OUTPUT PARAMETERS:


4.15.2 aggregate - aggregate ice state over the grid


INTERFACE:

       subroutine aggregate
DESCRIPTION:

Aggregate ice state over the grid


REVISION HISTORY:

   author: C. M. Bitz, UW
USES:
       use ice_domain
       use ice_flux
       use ice_grid
INPUT/OUTPUT PARAMETERS:


4.15.3 aggregate_pt - aggregate a point over ITD state


INTERFACE:

       subroutine aggregate_pt(i,j)
DESCRIPTION:

Aggregate ice thickness distribution state


REVISION HISTORY:

   author: C. M. Bitz, UW
USES:
       use ice_flux
INPUT/OUTPUT PARAMETERS:
       integer (kind=int_kind), intent(in) :: i, j

4.15.4 to_column - define column state variables for given point


INTERFACE:

       subroutine to_column(i,j)
DESCRIPTION:

Define column state variables for given point (i,j)


REVISION HISTORY:

   authors: Elizabeth C. Hunke, LANL
            and C. M. Bitz, UW
INPUT/OUTPUT PARAMETERS:
       integer (kind=int_kind), intent(in) :: i,j

4.15.5 from_column - reload state variables from given point


INTERFACE:

       subroutine from_column(i,j)
DESCRIPTION:

Reload state variables for given point (i,j) from column variables


REVISION HISTORY:

   authors: Elizabeth C. Hunke, LANL
            and C. M. Bitz, UW
INPUT/OUTPUT PARAMETERS:
       integer (kind=int_kind), intent(in) :: i,j

4.15.6 check_state - require certain fields to be monotone


INTERFACE:

       subroutine check_state(i,j)
DESCRIPTION:

Insist that certain fields are monotone. Should not be necessary if all is well, but best to keep going. Model will not conserve energy and water if fields are zeroed here.


REVISION HISTORY:

   author: C. M. Bitz, UW
USES:
       use ice_flux
INPUT/OUTPUT PARAMETERS:
       integer (kind=int_kind) :: i,j

4.15.7 distr_check - enforce ice area minimum and ice thickness boundaries


INTERFACE:

       subroutine distr_check
DESCRIPTION:

Force ice thickness distribution to maintain two rules
(1) the fractional area cannot be less than some limiting value
(2) each categories thickness lies within the
max and min thickness range for that category


REVISION HISTORY:

   
   author: C. M. Bitz, UW
USES:
       use ice_flux
       use ice_grid
INPUT/OUTPUT PARAMETERS:


4.15.8 normalize_state - normalize ice state after small areas removed


INTERFACE:

       subroutine normalize_state(dvicen,dvices,dvsnon,dvsnos)
DESCRIPTION:

Normalize the state variables for the ice thickness distribution to conserve volume after removing small areas


REVISION HISTORY:

   author: C. M. Bitz, UW
USES:
       use ice_model_size
       use ice_mpi_internal
       use ice_grid
       use ice_calendar
INPUT/OUTPUT PARAMETERS:
       real (kind=dbl_kind), intent(in) :: 
      &   dvicen(1), dvsnon(1)      ! total nuked ice/snow volumes north 
      &,  dvices(1), dvsnos(1)      ! total nuked ice/snow volumes south

4.15.9 rebin_ice - rebins thicknesses into defined categories


INTERFACE:

       subroutine rebin_ice(i,j)
DESCRIPTION:

Rebins thicknesses into defined categories


REVISION HISTORY:

   author: C. M. Bitz, UW
USES:
       use ice_flux
INPUT/OUTPUT PARAMETERS:
       integer (kind=int_kind), intent(in) ::
      &   i,j

4.15.10 movedn - moves ice from cat 2 to cat 1


INTERFACE:

       subroutine movedn(   Tf0
      $                  ,  ai1,   vi1,  vs1, ei1, Tsf1
      $                  ,  hi1,   hs1
      &                  , h1min,  nn1
      $                  ,  ai2,   vi2,  vs2, ei2, Tsf2
      $                  ,  hi2,   hs2
      &                  , h2min,  nn2       )
DESCRIPTION:

Moves ice from cat 2 to cat 1.
It is possible that the final thickness will be below the boundary of cat 1 if the ice has melted a lot, in which case it will be moved down again by a subsequent call


REVISION HISTORY:

   author: C. M. Bitz, UW
USES:
INPUT/OUTPUT PARAMETERS:
       real (kind=dbl_kind), intent(in) ::
      &   Tf0          ! freezing temperature of ocean
      &,  h1min, h2min ! minimum thickness range of cat 1, 2     (m)
       integer (kind=int_kind), intent(in) :: 
      &   nn1,   nn2   ! number of layers in cat 1, 2
 
       real (kind=dbl_kind), intent(inout) ::
      &   ai1,  ai2    ! fraction of ice
      &,  vi1,  vi2    ! volume per unit area of ice             (m)
      &,  vs1,  vs2    ! volume per unit area of snow            (m)
      &,  hi1,  hi2    ! ice thickness                           (m)
      &,  hs1,  hs2    ! snow thickness                          (m)
      &,  Tsf1, Tsf2   ! ice/snow top surf. temperature          (K)
 
       real (kind=dbl_kind), intent(inout), dimension (:) ::
      &   ei1          ! energy of melting of ice per layer (J/m**2)
      &,  ei2          ! energy of melting of ice per layer (J/m**2)

4.15.11 moveup - moves ice from cat 1 to cat 2


INTERFACE:

       subroutine moveup(     Tf0
      $                    ,  ai1,   vi1,  vs1, ei1, Tsf1
      $                    ,  hi1,  hs1
      &                    , h1min,  nn1
      $                    ,  ai2,   vi2,  vs2, ei2, Tsf2
      $                    ,  hi2,  hs2
      &                    , h2min,  nn2       )
DESCRIPTION:

Moves ice from cat 1 to 2.
It is possible that the final thickness will be above the boundary of cat 2. If the ice needs to move up again, it will do so in a subsequent call


REVISION HISTORY:

   author: C. M. Bitz, UW
USES:
INPUT/OUTPUT PARAMETERS:
       real (kind=dbl_kind), intent(in) ::
      &   Tf0          ! temperature of ocean
      &,  h1min, h2min ! minimum thickness range of cat 1, 2     (m)
       integer (kind=int_kind), intent(in) :: 
      &   nn1,   nn2   ! number of layers in cat 1, 2
 
       real (kind=dbl_kind), intent(inout) ::
      &   ai1,  ai2    ! fraction of ice
      &,  vi1,  vi2    ! volume per unit area of ice             (m)
      &,  vs1,  vs2    ! volume per unit area of snow            (m)
      &,  hi1,  hi2    ! ice thickness                           (m)
      &,  hs1,  hs2    ! snow thickness                          (m)
      &,  Tsf1, Tsf2   ! ice/snow top surf. temperature          (K)
      &,  ei1(nn1)     ! energy of melting of ice per layer (J/m**2)
      &,  ei2(nn2)     ! energy of melting of ice per layer (J/m**2)

4.15.12 zerocat - reset category variables to zero when no ice


INTERFACE:

       subroutine zerocat( Tf0, ai, vi,  vs, ei
      $                  , Tsf
      &                  , hs, hi
      &                  , hmin,  nn )
DESCRIPTION:

Reset category variables in the case of no ice


REVISION HISTORY:

   author: C. M. Bitz, UW
USES:
INPUT/OUTPUT PARAMETERS:
       real (kind=dbl_kind), intent(in) ::  Tf0    ! freezing temperature
       integer (kind=int_kind), intent(in) :: nn   ! number of layers in cat
       real (kind=dbl_kind), intent(in) :: hmin
 
       real (kind=dbl_kind), intent(inout) ::
      &   ai           ! fraction of ice
      &,  vi           ! volume per unit area of ice             (m)
      &,  vs           ! volume per unit area of snow            (m)
      &,  hi           ! ice thickness                           (m)
      &,  hs           ! snow thickness                          (m)
      &,  Tsf          ! ice/snow top surf. temperature          (K)
      &,  ei (nn)      ! energy of melting of ice per layer (J/m**2)


next up previous contents
Next: 4.16 Fortran: Module Interface Up: 4 Module Descriptions Previous: 4.14 Fortran: Module Interface   Contents
csm@ucar.edu