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

This subroutine calls the Thermal Skin-layer and Diurnal Thermocline models to update the NSST profile. 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 layer dimension 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 x component of surface layer wind m s-1 1 real kind_phys in F
v1 y_wind_at_lowest_model_layer y 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
tref sea_surface_reference_temperature reference/foundation temperature K 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 landmask: sea/land/ice=0/1/2 flag 1 integer in F
xlon longitude longitude radians 1 real kind_phys in F
sinlat sine_of_latitude sin of latitude none 1 real kind_phys in F
stress surface_wind_stress wind stress m2 s-2 1 real kind_phys in F
sfcemis surface_longwave_emissivity surface longwave emissivity frac 1 real kind_phys in F
dlwflx surface_downwelling_longwave_flux_absorbed_by_ground total sky sfc downward lw flux absorbed by the ocean W m-2 1 real kind_phys in F
sfcnsw surface_net_downwelling_shortwave_flux total sky sfc net sw flx into ocean W m-2 1 real kind_phys in F
rain nonnegative_lwe_thickness_of_precipitation_amount_on_dynamics_timestep nonnegative precipitation amount on dyn time step m 1 real kind_phys in F
timestep time_step_for_dynamics timestep interval s 0 real kind_phys in F
kdt index_of_time_step current time step index index 0 integer in F
solhr forecast_hour fcst hour at the end of prev time step h 0 real kind_phys in F
xcosz instantaneous_cosine_of_zenith_angle cosine of solar zenith angle none 1 real kind_phys 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
flag_guess flag_for_guess_run flag for guess run flag 1 logical in F
nstf_name1 flag_for_nsstm_run NSSTM flag: off/uncoupled/coupled=0/1/2 flag 0 integer in F
nstf_name4 vertical_temperature_average_range_lower_bound zsea1 mm 0 integer in F
nstf_name5 vertical_temperature_average_range_upper_bound zsea2 mm 0 integer in F
lprnt flag_print flag for printing diagnostics to output flag 0 logical in F
ipr horizontal_index_of_printed_column horizontal index of printed column index 0 integer in F
tskin surface_skin_temperature_for_nsst ocean surface skin temperature K 1 real kind_phys inout F
tsurf surface_skin_temperature_after_iteration ocean surface skin temperature for guess run K 1 real kind_phys inout F
xt diurnal_thermocline_layer_heat_content heat content in diurnal thermocline layer K m 1 real kind_phys inout F
xs sea_water_salinity salinity content in diurnal thermocline layer ppt m 1 real kind_phys inout F
xu diurnal_thermocline_layer_x_current u-current content in diurnal thermocline layer m2 s-1 1 real kind_phys inout F
xv diurnal_thermocline_layer_y_current v-current content in diurnal thermocline layer m2 s-1 1 real kind_phys inout F
xz diurnal_thermocline_layer_thickness diurnal thermocline layer thickness m 1 real kind_phys inout F
zm ocean_mixed_layer_thickness mixed layer thickness m 1 real kind_phys inout F
xtts sensitivity_of_dtl_heat_content_to_surface_temperature d(xt)/d(ts) m 1 real kind_phys inout F
xzts sensitivity_of_dtl_thickness_to_surface_temperature d(xz)/d(ts) m K-1 1 real kind_phys inout F
dt_cool sub-layer_cooling_amount sub-layer cooling amount K 1 real kind_phys inout F
z_c sub-layer_cooling_thickness sub-layer cooling thickness m 1 real kind_phys inout F
c_0 coefficient_c_0 coefficient1 to calculate d(tz)/d(ts) none 1 real kind_phys inout F
c_d coefficient_c_d coefficient2 to calculate d(tz)/d(ts) none 1 real kind_phys inout F
w_0 coefficient_w_0 coefficient3 to calculate d(tz)/d(ts) none 1 real kind_phys inout F
w_d coefficient_w_d coefficient4 to calculate d(tz)/d(ts) none 1 real kind_phys inout F
d_conv free_convection_layer_thickness thickness of free convection layer m 1 real kind_phys inout F
ifd index_of_dtlm_start index to start dtlm run or not index 1 real kind_phys inout F
qrain sensible_heat_flux_due_to_rainfall sensible heat flux due to rainfall W 1 real kind_phys inout F
qsurf surface_specific_humidity surface air saturation specific humidity kg kg-1 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 kinematic from 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
ep surface_upward_potential_latent_heat_flux potential evaporation W m-2 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 Near Sea Surface Temperature Scheme General Algorithm

Functions/Subroutines

subroutine sfc_nst::sfc_nst_run (im, km, ps, u1, v1, t1, q1, tref, cm, ch, prsl1, prslki, islimsk, xlon, sinlat, stress, sfcemis, dlwflx, sfcnsw, rain, timestep, kdt, solhr, xcosz, ddvel, flag_iter, flag_guess, nstf_name1, nstf_name4, nstf_name5, lprnt, ipr, tskin, tsurf, xt, xs, xu, xv, xz, zm, xtts, xzts, dt_cool, z_c, c_0, c_d, w_0, w_d, d_conv, ifd, qrain, qsurf, gflux, cmm, chh, evap, hflx, ep, errmsg, errflg )
 

Function/Subroutine Documentation

subroutine sfc_nst::sfc_nst_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), dimension(im), intent(in)  tref,
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)  xlon,
real (kind=kind_phys), dimension(im), intent(in)  sinlat,
real (kind=kind_phys), dimension(im), intent(in)  stress,
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)  rain,
real (kind=kind_phys), intent(in)  timestep,
integer, intent(in)  kdt,
real (kind=kind_phys), intent(in)  solhr,
real (kind=kind_phys), dimension(im), intent(in)  xcosz,
real (kind=kind_phys), dimension(im), intent(in)  ddvel,
logical, dimension(im), intent(in)  flag_iter,
logical, dimension(im), intent(in)  flag_guess,
integer, intent(in)  nstf_name1,
integer, intent(in)  nstf_name4,
integer, intent(in)  nstf_name5,
logical, intent(in)  lprnt,
integer, intent(in)  ipr,
real (kind=kind_phys), dimension(im), intent(inout)  tskin,
real (kind=kind_phys), dimension(im), intent(inout)  tsurf,
real (kind=kind_phys), dimension(im), intent(inout)  xt,
real (kind=kind_phys), dimension(im), intent(inout)  xs,
real (kind=kind_phys), dimension(im), intent(inout)  xu,
real (kind=kind_phys), dimension(im), intent(inout)  xv,
real (kind=kind_phys), dimension(im), intent(inout)  xz,
real (kind=kind_phys), dimension(im), intent(inout)  zm,
real (kind=kind_phys), dimension(im), intent(inout)  xtts,
real (kind=kind_phys), dimension(im), intent(inout)  xzts,
real (kind=kind_phys), dimension(im), intent(inout)  dt_cool,
real (kind=kind_phys), dimension(im), intent(inout)  z_c,
real (kind=kind_phys), dimension(im), intent(inout)  c_0,
real (kind=kind_phys), dimension(im), intent(inout)  c_d,
real (kind=kind_phys), dimension(im), intent(inout)  w_0,
real (kind=kind_phys), dimension(im), intent(inout)  w_d,
real (kind=kind_phys), dimension(im), intent(inout)  d_conv,
real (kind=kind_phys), dimension(im), intent(inout)  ifd,
real (kind=kind_phys), dimension(im), intent(inout)  qrain,
real (kind=kind_phys), dimension(im), intent(inout)  qsurf,
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,
real (kind=kind_phys), dimension(im), intent(inout)  ep,
character(len=*), intent(out)  errmsg,
integer, intent(out)  errflg 
)
  • Calculate latent and sensible heat flux over open water with tskin.
  • Call module_nst_water_prop::density() to compute sea water density.
  • Call module_nst_water_prop::rhocoef() to compute thermal expansion coefficient (alpha) and saline contraction coefficient (beta).
  • Calculate sensible heat flux (qrain) due to rainfall.
  • Call cool_skin(), which is the sub-layer cooling parameterization ([21]).
  • Call convdepth() to calculate depth for convective adjustments.
  • Call the diurnal thermocline layer model dtm_1p().
    • If dtl heat content xt > 0.0, call dtm_1p_mda() to apply minimum depth adjustment (mda).
      • If dtl thickness >= module_nst_parameters::z_w_max, call dtl_reset() to reset xt/xs/x/xv to zero, and xz to module_nst_parameters::z_w_max.
    • If thickness of free convection layer > 0.0, call dtm_1p_fca() to apply free convection adjustment.
      • If dtl thickness >= module_nst_parameters::z_w_max(), call dtl_reset() to reset xt/xs/x/xv to zero, and xz to module_nst_parameters::z_w_max().
    • Call sw_ps_9b() to compute the fraction of the solar radiation absorbed by the depth delz ([67]). And calculate the total heat absorbed in warm layer.
    • Call cal_ttop() to calculate the diurnal warming amount at the top layer with thickness of dz.
    • Call dtm_1p_tla() to apply top layer adjustment.
    • Call dt_1p_mwa() to apply maximum warming adjustment.
    • Call dtm_1p_mta() to apply maximum temperature adjustment.
    • Call get_dtzm_point() to computes dtz and tsurf.
    • Call cal_w() to calculate w_0 and w_d.
  • Calculate latent and sensible heat flux over open water with updated tskin for the grids of open water and the iteration is on.