next up previous contents
Next: 4.17 Fortran: Module Interface Up: 4 Module Descriptions Previous: 4.15 Fortran: Module Interface   Contents

Subsections

4.16 Fortran: Module Interface ice_itd_linear - linear remapping scheme for ITD (Source File: ice_itd_linear.F)

Linear remapping scheme for the ice thickness distribution

See Lipscomb, W. H. Remapping the thickness distribution of sea
ice. 2001, J. Geophys. Res., Vol 106, 13989-14000.


REVISION HISTORY:

   authors: William H. Lipscomb, LANL
            Elizabeth C. Hunke, LANL
INTERFACE:
       module ice_itd_linear
USES:
       use ice_model_size
       use ice_kinds_mod
       use ice_constants
       use ice_state
       use ice_itd
       use shr_sys_mod, only : shr_sys_abort

4.16.1 linear_itd - ITD scheme that shifts ice among categories


INTERFACE:

       subroutine linear_itd(i,j,dhin,hin_old,hin,hsn)
DESCRIPTION:

Ice thickness distribution scheme that shifts ice among categories.

The default scheme is linear remapping, which works as follows. See Lipscomb (2001) for more details.

Using the thermodynamic "velocities", interpolate to find the velocities in thickness space at the category boundaries, and compute the new locations of the boundaries. Then for each category, compute the thickness distribution function, g(h), between hL and hR, the left and right boundaries of the category. Assume g(h) is a linear polynomial that satisfies two conditions:

(1) The ice area implied by g(h) equals ain(n).
(2) The ice volume implied by g(h) equals ain(n)*hice(n).

Once g(h) is computed, compute the ice area and volume lying between the initial and new boundaries, and transfer this area and volume to the neighboring cell, thus restoring the initial boundary.


REVISION HISTORY:

   authors: William H. Lipscomb, LANL
            Elizabeth C. Hunke, LANL
USES:
       use ice_domain
       use ice_diagnostics
       use ice_calendar
INPUT/OUTPUT PARAMETERS:
       integer (kind=int_kind), intent(in) :: 
      &  i,j                 ! grid indices
 
       real (kind=dbl_kind), intent(in) ::
      &   dhin(ncat)         ! thickness change for remapping    (m)
      &,  hin_old(ncat)      ! starting value of hin             (m)
 
       real (kind=dbl_kind), intent(inout) ::
      &   hin(ncat)          ! ice thickness for each cat        (m)
      &,  hsn(ncat)          ! snow thickness for each cat       (m)

4.16.2 fit_line - fit g(h) with a line using area, volume constraints


INTERFACE:

       subroutine fit_line (n, hin, Hb, g0, g1, hL, hR, i,j)
DESCRIPTION:

Fit g(h) with a line, satisfying area and volume constraints. To reduce rounding errors caused by large values of g0 and g1, we compute g(eta), where eta = h - hL.


REVISION HISTORY:

   authors: William H. Lipscomb, LANL
            Elizabeth C. Hunke, LANL
USES:
INPUT/OUTPUT PARAMETERS:
       integer (kind=int_kind), intent(in) ::
      &   n               ! thickness category for which g(h) computed 
 
       real (kind=dbl_kind), intent(in) ::
      &   hin(ncat)       ! ice thickness for each cat        (m)
      &,  Hb(0:ncat)      ! current category boundaries
 
       real (kind=dbl_kind), intent(out) ::
      &   g0, g1          ! coefficients in linear equation for g(eta)
      &,  hL              ! min value of range over which g(h) > 0
      &,  hR              ! max value of range over which g(h) > 0 
 
       integer (kind=int_kind), intent(in) ::
      &   i,j

4.16.3 shift_ice - shift ice across category boundaries


INTERFACE:

       subroutine shift_ice (donor, daice, dvice, hin, i,j)
DESCRIPTION:

Shift ice across category boundaries, conserving area, volume, and energy.


REVISION HISTORY:

   authors: William H. Lipscomb, LANL
            Elizabeth C. Hunke, LANL
USES:
INPUT/OUTPUT PARAMETERS:
       integer (kind=int_kind), intent(in) ::
      &   donor(ncat-1)      ! donor category index
 
       real (kind=dbl_kind), intent(inout) ::
      &   daice(ncat-1)      ! ice area transferred across boundary
      &,  dvice(ncat-1)      ! ice volume transferred across boundary
 
       real (kind=dbl_kind), intent(in) ::
      &   hin(ncat)          ! ice thickness for each cat        (m)
 
       integer (kind=int_kind), intent(in) ::
      &   i,j


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