GMTB Common Community Physics Package (CCPP) Scientific Documentation  Version 1.0
GFS sfc_sice Main

This is three-layer thermodynomics sea-ice model based on [84]. More...

Detailed Description

Argument Table

local_name standard_name long_name units rank type kind intent optional
im horizontal_loop_extent horizontal loop extent count 0 integer in F
km soil_vertical_dimension vertical loop extent for soil levels, start at 1 count 0 integer in F
ps surface_air_pressure surface pressure Pa 1 real kind_phys in F
u1 x_wind_at_lowest_model_layer u component of surface layer wind m s-1 1 real kind_phys in F
v1 y_wind_at_lowest_model_layer v component of surface layer wind m s-1 1 real kind_phys in F
t1 air_temperature_at_lowest_model_layer surface layer mean temperature K 1 real kind_phys in F
q1 specific_humidity_at_lowest_model_layer surface layer mean specific humidity kg kg-1 1 real kind_phys in F
delt time_step_for_dynamics time step s 0 real kind_phys in F
sfcemis surface_longwave_emissivity sfc lw emissivity frac 1 real kind_phys in F
dlwflx surface_downwelling_longwave_flux_absorbed_by_ground total sky surface downward longwave flux absorbed by the ground W m-2 1 real kind_phys in F
sfcnsw surface_net_downwelling_shortwave_flux total sky sfc netsw flx into ground W m-2 1 real kind_phys in F
sfcdsw surface_downwelling_shortwave_flux total sky sfc downward sw flux W m-2 1 real kind_phys in F
srflag flag_for_precipitation_type snow/rain flag for precipitation flag 1 real kind_phys in F
cm surface_drag_coefficient_for_momentum_in_air surface exchange coeff for momentum none 1 real kind_phys in F
ch surface_drag_coefficient_for_heat_and_moisture_in_air surface exchange coeff heat & moisture none 1 real kind_phys in F
prsl1 air_pressure_at_lowest_model_layer surface layer mean pressure Pa 1 real kind_phys in F
prslki ratio_of_exner_function_between_midlayer_and_interface_at_lowest_model_layer Exner function ratio bt midlayer and interface at 1st layer ratio 1 real kind_phys in F
islimsk sea_land_ice_mask sea/land/ice mask (=0/1/2) flag 1 integer in F
ddvel surface_wind_enhancement_due_to_convection wind enhancement due to convection m s-1 1 real kind_phys in F
flag_iter flag_for_iteration flag for iteration flag 1 logical in F
mom4ice flag_for_mom4_coupling flag for Mom4 coupling flag 0 logical in F
lsm flag_for_land_surface_scheme flag for land sfc scheme =0: osu; =1: noah flag 0 integer in F
lprnt flag_print switch for printing sample column to stdout flag 0 logical in F
ipr horizontal_index_of_printed_column horizontal index of printed column index 0 integer in F
hice sea_ice_thickness_for_physics sea-ice thickness m 1 real kind_phys inout F
fice sea_ice_concentration_for_physics sea-ice concentration [0,1] frac 1 real kind_phys inout F
tice sea_ice_temperature_for_physics sea-ice surface temperature K 1 real kind_phys inout F
weasd water_equivalent_accumulated_snow_depth water equivalent accumulated snow depth mm 1 real kind_phys inout F
tskin surface_skin_temperature ground surface skin temperature K 1 real kind_phys inout F
tprcp nonnegative_lwe_thickness_of_precipitation_amount_on_dynamics_timestep nonnegative precipitation amount in one dynamics time step m 1 real kind_phys inout F
stc soil_temperature soil temp K 2 real kind_phys inout F
ep surface_upward_potential_latent_heat_flux potential evaporation W m-2 1 real kind_phys inout F
snwdph surface_snow_thickness_water_equivalent water equivalent snow depth mm 1 real kind_phys inout F
qsurf surface_specific_humidity sfc air saturation specific humidity kg kg-1 1 real kind_phys inout F
snowmt surface_snow_melt snow melt during timestep m 1 real kind_phys inout F
gflux upward_heat_flux_in_soil soil heat flux W m-2 1 real kind_phys inout F
cmm surface_drag_wind_speed_for_momentum_in_air surf mom exch coef time mean surf wind m s-1 1 real kind_phys inout F
chh surface_drag_mass_flux_for_heat_and_moisture_in_air surf h&m exch coef time surf wind & density kg m-2 s-1 1 real kind_phys inout F
evap kinematic_surface_upward_latent_heat_flux evaporative latent heat flux kg kg-1 m s-1 1 real kind_phys inout F
hflx kinematic_surface_upward_sensible_heat_flux kinematic sensible heat flux K m s-1 1 real kind_phys inout F
errmsg error_message error message for error handling in CCPP none 0 character len=* out F
errflg error_flag error flag for error handling in CCPP flag 0 integer out F

GFS Sea Ice Driver 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.

GFS_sice_wonton2000_fig1.png
Fig.1 Schematic representation of the three-layer model
The ice model main program ice3lay() performs two functions:

Detailed Algorithm

Functions/Subroutines

subroutine sfc_sice::sfc_sice_run (im, km, ps, u1, v1, t1, q1, delt, sfcemis, dlwflx, sfcnsw, sfcdsw, srflag, cm, ch, prsl1, prslki, islimsk, ddvel, flag_iter, mom4ice, lsm, lprnt, ipr, hice, fice, tice, weasd, tskin, tprcp, stc, ep, snwdph, qsurf, snowmt, gflux, cmm, chh, evap, hflx, errmsg, errflg
 
subroutine ice3lay
 This subroutine is the entity of three-layer sea ice vertical thermodynamics based on [84] . More...
 

Function/Subroutine Documentation

subroutine sfc_sice_run::ice3lay ( )

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 [84]).
    • Calculate the conductive coupling between the two ice temperature points (see eq.(10) in [84]).
    • Calculate the new upper ice temperature following eq.(21) in [84].
    • 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 [84].
    • 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)).

Referenced by sfc_sice::sfc_sice_run().

subroutine sfc_sice::sfc_sice_run ( integer, intent(in)  im,
integer, intent(in)  km,
real (kind=kind_phys), dimension(im), intent(in)  ps,
real (kind=kind_phys), dimension(im), intent(in)  u1,
real (kind=kind_phys), dimension(im), intent(in)  v1,
real (kind=kind_phys), dimension(im), intent(in)  t1,
real (kind=kind_phys), dimension(im), intent(in)  q1,
real (kind=kind_phys), intent(in)  delt,
real (kind=kind_phys), dimension(im), intent(in)  sfcemis,
real (kind=kind_phys), dimension(im), intent(in)  dlwflx,
real (kind=kind_phys), dimension(im), intent(in)  sfcnsw,
real (kind=kind_phys), dimension(im), intent(in)  sfcdsw,
real (kind=kind_phys), dimension(im), intent(in)  srflag,
real (kind=kind_phys), dimension(im), intent(in)  cm,
real (kind=kind_phys), dimension(im), intent(in)  ch,
real (kind=kind_phys), dimension(im), intent(in)  prsl1,
real (kind=kind_phys), dimension(im), intent(in)  prslki,
integer, dimension(im), intent(in)  islimsk,
real (kind=kind_phys), dimension(im), intent(in)  ddvel,
logical, dimension(im), intent(in)  flag_iter,
logical, intent(in)  mom4ice,
integer, intent(in)  lsm,
logical, intent(in)  lprnt,
integer, intent(in)  ipr,
real (kind=kind_phys), dimension(im), intent(inout)  hice,
real (kind=kind_phys), dimension(im), intent(inout)  fice,
real (kind=kind_phys), dimension(im), intent(inout)  tice,
real (kind=kind_phys), dimension(im), intent(inout)  weasd,
real (kind=kind_phys), dimension(im), intent(inout)  tskin,
real (kind=kind_phys), dimension(im), intent(inout)  tprcp,
real (kind=kind_phys), dimension(im,km), intent(inout)  stc,
real (kind=kind_phys), dimension(im), intent(inout)  ep,
real (kind=kind_phys), dimension(im), intent(inout)  snwdph,
real (kind=kind_phys), dimension(im), intent(inout)  qsurf,
real (kind=kind_phys), dimension(im), intent(inout)  snowmt,
real (kind=kind_phys), dimension(im), intent(inout)  gflux,
real (kind=kind_phys), dimension(im), intent(inout)  cmm,
real (kind=kind_phys), dimension(im), intent(inout)  chh,
real (kind=kind_phys), dimension(im), intent(inout)  evap,
real (kind=kind_phys), dimension(im), intent(inout)  hflx,
character(len=*), intent(out)  errmsg,
integer, intent(out)  errflg 
)
  • Set flag for sea-ice.
  • Update/read sea ice temperature from soil temperature and initialize variables.
  • 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().

References ice3lay().

Here is the call graph for this function: