← Back to Documentation Home
CCPP SciDoc v8.0.0  v8.0.0
Common Community Physics Package Developed at DTC
 
Loading...
Searching...
No Matches
GFS sfc_sice Module

This is three-layer thermodynomics sea-ice model based on Winton (2000) [197]. More...

Functions/Subroutines

subroutine sfc_sice::sfc_sice_run (im, kice, sbc, hvap, tgice, cp, eps, epsm1, rvrdm1, grav, t0c, rd, ps, t1, q1, delt, sfcemis, dlwflx, sfcnsw, sfcdsw, srflag, cm, ch, prsl1, prslki, prsik1, prslk1, wind, flag_iter, use_lake_model, lprnt, ipr, thsfc_loc, hice, fice, tice, weasd, tsfc_wat, tprcp, tiice, ep, snwdph, qss_i, qss_w, snowmt, gflux, cmm, chh, evapi, evapw, hflxi, hflxw, islmsk, errmsg, errflg
 
subroutine ice3lay
 This subroutine is the entity of three-layer sea ice vertical thermodynamics based on Winton(2000) [197] .
 

Detailed Description

This is three-layer thermodynomics sea-ice model based on Winton (2000) [197].

General Algorithm

The model has four prognostic variables: the snow layer thickness \(h_s\), the ice layer thickness \(h_i\), the upper and lower ice layer temperatures located at the midpoints of the layers \(h_i/4\) and \(3h_i/4\) below the ice surface, respectively \(T_1\) and \(T_2\). The temperature of the bottom of the ice is fixed at \(T_f\), the freezing temperature of seawater. The temperature of the top of the ice or snow, \(T_s\), is determined from the surface energy balance. The model consists of a zero-heat-capacity snow layer overlying two equally thick sea ice layers (Figure 1). The upper ice layer has a variable heat capacity to represent brine pockets.

Fig.1 Schematic representation of the three-layer model

The ice model main program ice3lay() performs two functions:

Detailed Algorithm

Argument Table

Function/Subroutine Documentation

◆ ice3lay()

subroutine sfc_sice_run::ice3lay

This subroutine is the entity of three-layer sea ice vertical thermodynamics based on Winton(2000) [197] .

Three-layer Thermodynamics Sea Ice Model General Algorithm

  • Ice temperature calculation.
  • Calculate the effective conductive coupling of the snow-ice layer between the surface and the upper layer ice temperature \(h_i/4\) beneath the snow-ice interface (see eq.(5) in Winton (2000) [197]).
  • Calculate the conductive coupling between the two ice temperature points (see eq.(10) in Winton (2000) [197]).
  • Calculate the new upper ice temperature following eq.(21) in Winton (2000) [197].
  • If the surface temperature is greater than the freezing temperature of snow (when there is snow over) or sea ice (when there is none), the surface temperature is fixed at the melting temperature of snow or sea ice, respectively, and the upper ice temperature is recomputed from eq.(21) using the coefficients given by eqs. (19),(20), and (18). An energy flux eq.(22) is applied toward surface melting thereby balancing the surface energy budget.
  • Calculate the new lower ice temperature following eq.(15) in Winton (2000) [197].
  • Calculate the energy for bottom melting (or freezing, if negative) following eq.(23), which serves to balance the difference between the oceanic heat flux to the ice bottom and the conductive flux of heat upward from the bottom.
  • Calculation of ice and snow mass changes.
  • Calculate the top layer thickness.
  • When the energy for bottem melting \(M_b\) is negative (i.e., freezing is happening),calculate the bottom layer thickness \(h_2\) and the new lower layer temperature (see eqs.(24)-(26)).
  • If ice remains, even up 2 layers, else, pass negative energy back in snow. Calculate the new upper layer temperature (see eq.(38)).

Definition at line 460 of file sfc_sice.f.

Referenced by sfc_sice::sfc_sice_run().

Here is the caller graph for this function:

◆ sfc_sice_run()

subroutine sfc_sice::sfc_sice_run ( integer, intent(in)  im,
integer, intent(in)  kice,
real (kind=kind_phys), intent(in)  sbc,
real (kind=kind_phys), intent(in)  hvap,
real (kind=kind_phys), intent(in)  tgice,
real (kind=kind_phys), intent(in)  cp,
real (kind=kind_phys), intent(in)  eps,
real (kind=kind_phys), intent(in)  epsm1,
real (kind=kind_phys), intent(in)  rvrdm1,
real (kind=kind_phys), intent(in)  grav,
real (kind=kind_phys), intent(in)  t0c,
real (kind=kind_phys), intent(in)  rd,
real (kind=kind_phys), dimension(:), intent(in)  ps,
real (kind=kind_phys), dimension(:), intent(in)  t1,
real (kind=kind_phys), dimension(:), intent(in)  q1,
real (kind=kind_phys), intent(in)  delt,
real (kind=kind_phys), dimension(:), intent(in)  sfcemis,
real (kind=kind_phys), dimension(:), intent(in)  dlwflx,
real (kind=kind_phys), dimension(:), intent(in)  sfcnsw,
real (kind=kind_phys), dimension(:), intent(in)  sfcdsw,
real (kind=kind_phys), dimension(:), intent(in)  srflag,
real (kind=kind_phys), dimension(:), intent(in)  cm,
real (kind=kind_phys), dimension(:), intent(in)  ch,
real (kind=kind_phys), dimension(:), intent(in)  prsl1,
real (kind=kind_phys), dimension(:), intent(in)  prslki,
real (kind=kind_phys), dimension(:), intent(in)  prsik1,
real (kind=kind_phys), dimension(:), intent(in)  prslk1,
real (kind=kind_phys), dimension(:), intent(in)  wind,
logical, dimension(im), intent(in)  flag_iter,
integer, dimension(im), intent(in)  use_lake_model,
logical, intent(in)  lprnt,
integer, intent(in)  ipr,
logical, intent(in)  thsfc_loc,
real (kind=kind_phys), dimension(:), intent(inout)  hice,
real (kind=kind_phys), dimension(:), intent(inout)  fice,
real (kind=kind_phys), dimension(:), intent(inout)  tice,
real (kind=kind_phys), dimension(:), intent(inout)  weasd,
real (kind=kind_phys), dimension(:), intent(inout)  tsfc_wat,
real (kind=kind_phys), dimension(:), intent(inout)  tprcp,
real (kind=kind_phys), dimension(:,:), intent(inout)  tiice,
real (kind=kind_phys), dimension(:), intent(inout)  ep,
real (kind=kind_phys), dimension(:), intent(inout)  snwdph,
real (kind=kind_phys), dimension(:), intent(inout)  qss_i,
real (kind=kind_phys), dimension(:), intent(inout)  qss_w,
real (kind=kind_phys), dimension(:), intent(inout)  snowmt,
real (kind=kind_phys), dimension(:), intent(inout)  gflux,
real (kind=kind_phys), dimension(:), intent(inout)  cmm,
real (kind=kind_phys), dimension(:), intent(inout)  chh,
real (kind=kind_phys), dimension(:), intent(inout)  evapi,
real (kind=kind_phys), dimension(:), intent(inout)  evapw,
real (kind=kind_phys), dimension(:), intent(inout)  hflxi,
real (kind=kind_phys), dimension(:), intent(inout)  hflxw,
integer, dimension(:), intent(in)  islmsk,
character(len=*), intent(out)  errmsg,
integer, intent(out)  errflg 
)

program history log:

  • 2005 – xingren wu created from original progtm and added two-layer ice model
  • 200x – sarah lu added flag_iter
  • oct 2006 – h. wei added cmm and chh to output
  • 2007 – x. wu modified for mom4 coupling (i.e. cpldice) (not used anymore)
  • 2007 – s. moorthi micellaneous changes
  • may 2009 – y.-t. hou modified to include surface emissivity effect on lw radiation. replaced the confusing slrad with sfc net sw sfcnsw (dn-up). reformatted the code and add program documentation block.
  • sep 2009 – s. moorthi removed rcl, changed pressure units and further optimized
  • jan 2015 – x. wu change "cimin = 0.15" for both uncoupled and coupled case
  • Set flag for sea-ice.
  • Convert snow depth in water equivalent from mm to m unit.
  • Calculate sensible and latent heat flux over open water & sea ice.
  • Calculate net solar incoming at top sneti.
  • Calculate net non-solar and upir heat flux @ ice surface hfi.
  • Calculate heat flux derivative at surface hfd.
  • Assigin heat flux from ocean focn and snowfall rate as constants, which should be from ocean model and other physics.
  • Initialize snow depth snowd.
  • Call the three-layer thermodynamics sea ice model ice3lay().

Definition at line 37 of file sfc_sice.f.

References ice3lay().

Here is the call graph for this function: