next up previous contents
Next: 4.8 Fortran: Module Interface Up: 4 Module Descriptions Previous: 4.6 Fortran: Module Interface   Contents

Subsections

4.7 Fortran: Module Interface ice_dh (Source File: ice_dh.F)

Energy-conserving sea ice model
Routines to grow/melt ice and adjust temperature profile

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, M. Eby, and A.J. Weaver, 2001: Simulating the ice-thickness distribution in a coupled climate model, J. Geophys. Res., 106, 2441-2464.


REVISION HISTORY:

   author: C. M. Bitz, UW
INTERFACE:
       module ice_dh
USES:
       use ice_kinds_mod
       use ice_constants
       use ice_itd

4.7.1 dh - computes top and bottom thickness changes


INTERFACE:

       subroutine dh(  dtsub,    sal1d,    tiz
      $              ,  tbot,       hi,       hs,   fbot
      $              ,  fnet,    condb,      flh,     ni
      $              ,  dhib,     dhit,      dhs,   subi
      $              ,  subs,     dhif,     dhsf,     qi
      $              ,  focn, i,j )
DESCRIPTION:

Computes the thickness changes at the top and bottom and adjusts layer energy of melt; does not allow h less than 0.
Focn= actual flux of heat from the ocean layer under sea ice (equal to fbot unless all the ice melts away); compensates for rare case of melting entire slab through


REVISION HISTORY:

   author: C. M. Bitz, UW
USES:
       use ice_state
       use ice_diagnostics
       use shr_sys_mod, only : shr_sys_abort
INPUT/OUTPUT PARAMETERS:
       real (kind=dbl_kind), intent(in) :: 
      &   dtsub                ! timestep
      &,  sal1d   (nmax+1)     ! ice salinity                           (ppt)
      &,  tiz   (0:nmax)       ! snow/ice internal temp                   (C)
      &,  Tbot                 ! ice bottom in                            (C)
      &,  hi                   ! initial ice thickness                    (m)
      &,  hs                   ! initial snow thickness                   (m)
      &,  fbot                 ! flx from ocean, potent.             (W/m**2)
      &,  fnet                 ! net flx at top srf incl. cond. flx  (W/m**2)
      &,  condb                ! cond. flx at bot.                   (W/m**2)
      &,  flh                  ! latent heat flx                     (w/m**2)
 
       integer (kind=int_kind), intent(in) :: 
      &   ni  ! number of layers
      &,  i,j ! grid location for debugging
 
       ! thickness changes from grow/melt (default) or sublimate/flooding      
       real (kind=dbl_kind), intent(out) :: 
      &   dhib                 ! ice bot, dhib<0 if melt                  (m)
      &,  dhit                 ! ice top, dhit<=0                         (m)
      &,  dhs                  ! snow top, dhit<=0                        (m)
      &,  subi                 ! ice top, subi<0 if sublimating           (m)
      &,  subs                 ! snow, subs<0 if sublimating              (m)
      &,  dhif                 ! ice top from flooding, dhif>0            (m)
      &,  dhsf                 ! snow from flooding, dhsf<0               (m)
      &,  qi(nmax)             ! energy of melt of ice per unit vol. (J/m**3)
      &,  focn                 ! actual flx of heat used from ocn    (w/m**2)

4.7.2 freeboard - freeboard flooding adjustment: snow-ice formation


INTERFACE:

       subroutine freeboard(hs,hi,dhs,qs,dhsf,dhif,qiflood)
DESCRIPTION:

Freeboard adjustment due to flooding ... snow-ice formation


REVISION HISTORY:

   author: C. M. Bitz, UW
USES:
INPUT/OUTPUT PARAMETERS:
       real (kind=dbl_kind), intent(in) ::
      &    hs  ! initial snow thickness                   (m)
      &,   hi  ! initial ice thickness                    (m)
      &,   dhs ! snow top, dhit<=0                        (m)
      &,   qs  ! energy of melt of snow per unit vol. (J/m**3)
 
       real (kind=dbl_kind), intent(out) ::
      &    dhsf ! snow from flooding, dhsf<0               (m)
      &,   dhif ! ice top from flooding, dhif>0            (m)
      &,   qiflood ! energy of melt of flooded ice    (W/m**2)

4.7.3 srfsub - computes sea ice and snow thickness changes


INTERFACE:

       subroutine srfsub(  qi,   qs, delti, delts,    ni,
      $                   subi, subs,  etop,  enet )
DESCRIPTION:

Compute the sea ice and snow thickness changes from sublimation/condensation


REVISION HISTORY:

   author: C. M. Bitz, UW
USES:
INPUT/OUTPUT PARAMETERS:
       real (kind=dbl_kind), intent(in) :: 
      &   qi (1:nmax), qs      ! energy of melt of ice/snow per vol  (J/m**3)
      &,  delti(nmax), delts   ! thickness of ice/snow layer              (m)
 
       integer (kind=int_kind), intent(in) :: ni  ! number of layers
 
       real (kind=dbl_kind), intent(out) :: 
      &   subi, subs  ! subl/cond. amount for ice/snow           (m)
 
       real (kind=dbl_kind), intent(inout) :: 
      &   etop                 ! energy avail to sub/cond ice/snow   (J/m**2)
      &,  enet                 ! energy needed to melt all ice/snow  (J/m**2)

4.7.4 srfmelt - melt snow and ice from the top


INTERFACE:

       subroutine srfmelt(   qi,   qs, delti, delts, ni,
      $                    dhit,  dhs,  etop  )
DESCRIPTION:

Melt ice/snow from the top srf


REVISION HISTORY:

   author: C. M. Bitz, UW
USES:
INPUT/OUTPUT PARAMETERS:
       real (kind=dbl_kind), intent(in) :: 
      &   qi (1:nmax), qs      ! energy of melt of ice/snow per vol (J/m**3)
      &,  delti(nmax), delts   ! thickness of ice/snow layer             (m)
 
       integer (kind=int_kind), intent(in) :: ni    ! number of layers
 
       real (kind=dbl_kind), intent(out) :: 
      &   dhit                 ! ice thickness change                    (m)
      &,  dhs                  ! snow thickness change                   (m)
 
       real (kind=dbl_kind), intent(inout) :: 
      &   etop                 ! energy avail to melt ice and snow  (J/m**2)

4.7.5 botmelt - melt from bottom


INTERFACE:

       subroutine botmelt(   qi,   qs, delti, delts, ni,
      $                    dhib,  dhs,  ebot  )
DESCRIPTION:

Melt from bottom


REVISION HISTORY:

   author: C. M. Bitz, UW
USES:
INPUT/OUTPUT PARAMETERS:
       real (kind=dbl_kind), intent(in) :: 
      &   qi (1:nmax), qs      ! energy of melt of ice/snow per vol (J/m**3)
      &,  delti(nmax), delts   ! thickness of ice/snow layer             (m)
 
       integer (kind=int_kind), intent(in) :: ni    ! number of layers
 
       real (kind=dbl_kind), intent(out) :: dhib  ! ice thickness change (m)
 
       real (kind=dbl_kind), intent(inout) :: 
      &   dhs                  ! snow thickness change                   (m)
      &,  ebot                 ! energy avail to melt ice and snow  (J/m**2)

4.7.6 adjust - adjusts temperature profile to changing layer spacing


INTERFACE:

       subroutine adjust(hi0,dhib,dhit,dhif,dhsf,qiflood,qigrow,ni,qi_tw)
DESCRIPTION:

Adjusts temperature profile to account for changing the layer spacing due to growth/melt (incl. subl/cond, flooding). At start the energy of melting was computed after updating tiz from the heat equation. hi is the thickness prior to changes from dhib and dhit; hi_tw is the thickness after making these changes; dhib is less than 0 if there is melt at the bottom; dhit is less than 0 if there is melt at the top; generally _tw is a suffix to label the adjusted variables.


REVISION HISTORY:

   author: C. M. Bitz, UW
USES:
INPUT/OUTPUT PARAMETERS:
       real (kind=dbl_kind), intent(in) :: 
      &   hi0                  ! initial ice thickness                    (m)
      &,  dhib                 ! ice bot, dhib<0 if melt                  (m)
      &,  dhit                 ! ice top, dhit<=0                         (m)
      &,  dhif                 ! ice top from flooding, dhif>0            (m)
      &,  dhsf                 ! snow from flooding, dhsf<0               (m)
      &,  qiflood              ! qi for flooded ice                  (J/m**3)
      &,  qigrow               ! qi for ice growing on bot           (J/m**3)
 
       integer (kind=int_kind), intent(in) :: ni
 
       real (kind=dbl_kind), intent(inout) :: 
      &   qi_tw(nmax)          ! energy of melt of ice per unit vol. (J/m**3)

4.7.7 real function energ - compute energy of melting per unit volume


INTERFACE:

       real function energ(Tmp ,sal)
DESCRIPTION:

Compute the energy of melting per unit volume (J/m**3) relative to melting (negative quantity)


REVISION HISTORY:

   author: C. M. Bitz, UW
USES:
INPUT/OUTPUT PARAMETERS:
       real (kind=dbl_kind), intent(in) ::
      &    Tmp          ! midpt temperature of ice layer       (C)
      &,   sal          ! midpt salinity of ice layer        (ppt)


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