← Back to Documentation Home
CCPP SciDoc v8.0.0  v8.0.0
Common Community Physics Package Developed at DTC
 
Loading...
Searching...
No Matches
GFS Near-Surface Sea Temperature Module

This module contains the CCPP-compliant GFS near-surface sea temperature scheme.This subroutine calls the Thermal Skin-layer and Diurnal Thermocline models to update the NSST profile. More...

Collaboration diagram for GFS Near-Surface Sea Temperature Module:

Modules

 GFS NSST Diurnal Thermocline Model
 This module contains the diurnal thermocline layer model (DTM) of the GFS NSST scheme.
 
 GFS NSST Parameter Module
 
 GFS NSST Water Property
 

Functions/Subroutines

subroutine, public nst_module::dtm_1p (kdt, timestep, rich, tox, toy, i0, q, sss, sep, q_ts, hl_ts, rho, alpha, beta, alon, sinlat, soltim, grav, le, d_conv, xt, xs, xu, xv, xz, xzts, xtts)
 This subroutine contains the module of diurnal thermocline layer model.
 
subroutine, public nst_module::dtm_1p_fca (d_conv, xt, xtts, xz, xzts)
 This subroutine applies free convection adjustment(fca).
 
subroutine, public nst_module::dtm_1p_tla (dz, te, xt, xtts, xz, xzts)
 This subroutine applies top layer adjustment (tla).
 
subroutine, public nst_module::dtm_1p_mwa (xt, xtts, xz, xzts)
 This subroutine applies maximum warming adjustment (mwa).
 
subroutine, public nst_module::dtm_1p_mda (xt, xtts, xz, xzts)
 This subroutine applies minimum depth adjustment (xz adjustment).
 
subroutine, public nst_module::dtm_1p_mta (dta, xt, xtts, xz, xzts)
 This subroutine applies maximum temperature adjustment (mta).
 
subroutine, public nst_module::convdepth (kdt, timestep, i0, q, sss, sep, rho, alpha, beta, xt, xs, xz, d_conv)
 This subroutine calculates depth for convective adjustment.
 
subroutine, public nst_module::cal_w (kdt, xz, xt, xzts, xtts, w_0, w_d)
 This subroutine computes coefficients (w_0 and w_d) to calculate d(tw)/d(ts).
 
subroutine, public nst_module::cal_ttop (kdt, timestep, q_warm, rho, dz, xt, xz, ttop)
 This subroutine calculates the diurnal warming amount at the top layer with thickness of delz.
 
subroutine, public nst_module::cool_skin (ustar_a, f_nsol, f_sol_0, evap, sss, alpha, beta, rho_w, rho_a, ts, q_ts, hl_ts, grav, le, deltat_c, z_c, c_0, c_d)
 This subroutine contains the upper ocean cool-skin parameterization (Fairall et al, 1996 [58]).
 
subroutine, public nst_module::dtl_reset (xt, xs, xu, xv, xz, xzts, xtts)
 This subroutine resets the value of xt,xs,xu,xv,xz,xtts,xzts.
 
subroutine, public module_nst_water_prop::rhocoef (t, s, rhoref, alpha, beta)
 This subroutine computes thermal expansion coefficient (alpha) and saline contraction coefficient (beta).
 
subroutine, public module_nst_water_prop::density (t, s, rho)
 This subroutine computes sea water density.
 
elemental subroutine, public module_nst_water_prop::sw_ps_9b (z, fxp)
 This subroutine computes the fraction of the solar radiation absorbed by the depth z following Paulson and Simpson (1981) [161] .
 
elemental subroutine, public module_nst_water_prop::sw_ps_9b_aw (z, aw)
 This subroutine.
 
real(kind_phys) function, public module_nst_water_prop::grv (x)
 
subroutine, public module_nst_water_prop::get_dtzm_point (xt, xz, dt_cool, zc, z1, z2, dtm)
 This subroutine computes dtm (the mean of \(dT(z)\)).
 
subroutine, public module_nst_water_prop::get_dtzm_2d (xt, xz, dt_cool, zc, wet, z1, z2, nx, ny, nth, dtm)
 
subroutine sfc_nst::sfc_nst_run (im, hvap, cp, hfus, jcal, eps, epsm1, rvrdm1, rd, rhw0, pi, tgice, sbc, ps, u1, v1, usfco, vsfco, use_oceanuv, t1, q1, tref, cm, ch, lseaspray, fm, fm10, prsl1, prslki, prsik1, prslk1, wet, use_lake_model, xlon, sinlat, stress, sfcemis, dlwflx, sfcnsw, rain, timestep, kdt, solhr, xcosz, wind, flag_iter, flag_guess, nstf_name1, nstf_name4, nstf_name5, lprnt, ipr, thsfc_loc, 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)
 

Detailed Description

This module contains the CCPP-compliant GFS near-surface sea temperature scheme.

This subroutine calls the Thermal Skin-layer and Diurnal Thermocline models to update the NSST profile.

Argument Table

GFS Near-Surface Sea Temperature Scheme General Algorithm

Function/Subroutine Documentation

◆ cal_ttop()

subroutine, public nst_module::cal_ttop ( integer, intent(in)  kdt,
real(kind=kind_phys), intent(in)  timestep,
real(kind=kind_phys), intent(in)  q_warm,
real(kind=kind_phys), intent(in)  rho,
real(kind=kind_phys), intent(in)  dz,
real(kind=kind_phys), intent(in)  xt,
real(kind=kind_phys), intent(in)  xz,
real(kind=kind_phys), intent(out)  ttop 
)

This subroutine calculates the diurnal warming amount at the top layer with thickness of delz.

Definition at line 681 of file module_nst_model.f90.

Referenced by nst_module::dtm_1p(), and sfc_nst::sfc_nst_run().

Here is the caller graph for this function:

◆ cal_w()

subroutine, public nst_module::cal_w ( integer, intent(in)  kdt,
real(kind=kind_phys), intent(in)  xz,
real(kind=kind_phys), intent(in)  xt,
real(kind=kind_phys), intent(in)  xzts,
real(kind=kind_phys), intent(in)  xtts,
real(kind=kind_phys), intent(out)  w_0,
real(kind=kind_phys), intent(out)  w_d 
)

This subroutine computes coefficients (w_0 and w_d) to calculate d(tw)/d(ts).

Definition at line 649 of file module_nst_model.f90.

Referenced by sfc_nst::sfc_nst_run().

Here is the caller graph for this function:

◆ convdepth()

subroutine, public nst_module::convdepth ( integer, intent(in)  kdt,
real(kind=kind_phys), intent(in)  timestep,
real(kind=kind_phys), intent(in)  i0,
real(kind=kind_phys), intent(in)  q,
real(kind=kind_phys), intent(in)  sss,
real(kind=kind_phys), intent(in)  sep,
real(kind=kind_phys), intent(in)  rho,
real(kind=kind_phys), intent(in)  alpha,
real(kind=kind_phys), intent(in)  beta,
real(kind=kind_phys), intent(in)  xt,
real(kind=kind_phys), intent(in)  xs,
real(kind=kind_phys), intent(in)  xz,
real(kind=kind_phys), intent(out)  d_conv 
)

This subroutine calculates depth for convective adjustment.

Definition at line 409 of file module_nst_model.f90.

References nst_module::dtl_reset().

Referenced by sfc_nst::sfc_nst_run().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ cool_skin()

subroutine, public nst_module::cool_skin ( real(kind=kind_phys), intent(in)  ustar_a,
real(kind=kind_phys), intent(in)  f_nsol,
real(kind=kind_phys), intent(in)  f_sol_0,
real(kind=kind_phys), intent(in)  evap,
real(kind=kind_phys), intent(in)  sss,
real(kind=kind_phys), intent(in)  alpha,
real(kind=kind_phys), intent(in)  beta,
real(kind=kind_phys), intent(in)  rho_w,
real(kind=kind_phys), intent(in)  rho_a,
real(kind=kind_phys), intent(in)  ts,
real(kind=kind_phys), intent(in)  q_ts,
real(kind=kind_phys), intent(in)  hl_ts,
real(kind=kind_phys), intent(in)  grav,
real(kind=kind_phys), intent(in)  le,
real(kind=kind_phys), intent(out)  deltat_c,
real(kind=kind_phys), intent(out)  z_c,
real(kind=kind_phys), intent(out)  c_0,
real(kind=kind_phys), intent(out)  c_d 
)

This subroutine contains the upper ocean cool-skin parameterization (Fairall et al, 1996 [58]).

Definition at line 821 of file module_nst_model.f90.

Referenced by sfc_nst::sfc_nst_run().

Here is the caller graph for this function:

◆ density()

subroutine, public module_nst_water_prop::density ( real(kind=kind_phys), intent(in)  t,
real(kind=kind_phys), intent(in)  s,
real(kind=kind_phys), intent(out)  rho 
)

This subroutine computes sea water density.

Definition at line 91 of file module_nst_water_prop.f90.

Referenced by sfc_nst::sfc_nst_run().

Here is the caller graph for this function:

◆ dtl_reset()

subroutine, public nst_module::dtl_reset ( real(kind=kind_phys), intent(inout)  xt,
real(kind=kind_phys), intent(inout)  xs,
real(kind=kind_phys), intent(inout)  xu,
real(kind=kind_phys), intent(inout)  xv,
real(kind=kind_phys), intent(inout)  xz,
real(kind=kind_phys), intent(inout)  xzts,
real(kind=kind_phys), intent(inout)  xtts 
)

This subroutine resets the value of xt,xs,xu,xv,xz,xtts,xzts.

Definition at line 963 of file module_nst_model.f90.

Referenced by nst_module::convdepth(), nst_module::dtm_1p(), and sfc_nst::sfc_nst_run().

Here is the caller graph for this function:

◆ dtm_1p()

subroutine, public nst_module::dtm_1p ( integer, intent(in)  kdt,
real(kind=kind_phys), intent(in)  timestep,
real(kind=kind_phys), intent(in)  rich,
real(kind=kind_phys), intent(in)  tox,
real(kind=kind_phys), intent(in)  toy,
real(kind=kind_phys), intent(in)  i0,
real(kind=kind_phys), intent(in)  q,
real(kind=kind_phys), intent(in)  sss,
real(kind=kind_phys), intent(in)  sep,
real(kind=kind_phys), intent(in)  q_ts,
real(kind=kind_phys), intent(in)  hl_ts,
real(kind=kind_phys), intent(in)  rho,
real(kind=kind_phys), intent(in)  alpha,
real(kind=kind_phys), intent(in)  beta,
real(kind=kind_phys), intent(in)  alon,
real(kind=kind_phys), intent(in)  sinlat,
real(kind=kind_phys), intent(in)  soltim,
real(kind=kind_phys), intent(in)  grav,
real(kind=kind_phys), intent(in)  le,
real(kind=kind_phys), intent(in)  d_conv,
real(kind=kind_phys), intent(inout)  xt,
real(kind=kind_phys), intent(inout)  xs,
real(kind=kind_phys), intent(inout)  xu,
real(kind=kind_phys), intent(inout)  xv,
real(kind=kind_phys), intent(inout)  xz,
real(kind=kind_phys), intent(inout)  xzts,
real(kind=kind_phys), intent(inout)  xtts 
)

This subroutine contains the module of diurnal thermocline layer model.

Definition at line 36 of file module_nst_model.f90.

References nst_module::cal_ttop(), and nst_module::dtl_reset().

Referenced by sfc_nst::sfc_nst_run().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ dtm_1p_fca()

subroutine, public nst_module::dtm_1p_fca ( real(kind=kind_phys), intent(in)  d_conv,
real(kind=kind_phys), intent(in)  xt,
real(kind=kind_phys), intent(in)  xtts,
real(kind=kind_phys), intent(inout)  xz,
real(kind=kind_phys), intent(inout)  xzts 
)

This subroutine applies free convection adjustment(fca).

Definition at line 319 of file module_nst_model.f90.

Referenced by sfc_nst::sfc_nst_run().

Here is the caller graph for this function:

◆ dtm_1p_mda()

subroutine, public nst_module::dtm_1p_mda ( real(kind=kind_phys), intent(in)  xt,
real(kind=kind_phys), intent(in)  xtts,
real(kind=kind_phys), intent(inout)  xz,
real(kind=kind_phys), intent(inout)  xzts 
)

This subroutine applies minimum depth adjustment (xz adjustment).

Definition at line 371 of file module_nst_model.f90.

Referenced by sfc_nst::sfc_nst_run().

Here is the caller graph for this function:

◆ dtm_1p_mta()

subroutine, public nst_module::dtm_1p_mta ( real(kind=kind_phys), intent(in)  dta,
real(kind=kind_phys), intent(in)  xt,
real(kind=kind_phys), intent(in)  xtts,
real(kind=kind_phys), intent(inout)  xz,
real(kind=kind_phys), intent(inout)  xzts 
)

This subroutine applies maximum temperature adjustment (mta).

Definition at line 388 of file module_nst_model.f90.

Referenced by sfc_nst::sfc_nst_run().

Here is the caller graph for this function:

◆ dtm_1p_mwa()

subroutine, public nst_module::dtm_1p_mwa ( real(kind=kind_phys), intent(in)  xt,
real(kind=kind_phys), intent(in)  xtts,
real(kind=kind_phys), intent(inout)  xz,
real(kind=kind_phys), intent(inout)  xzts 
)

This subroutine applies maximum warming adjustment (mwa).

Definition at line 357 of file module_nst_model.f90.

Referenced by sfc_nst::sfc_nst_run().

Here is the caller graph for this function:

◆ dtm_1p_tla()

subroutine, public nst_module::dtm_1p_tla ( real(kind=kind_phys), intent(in)  dz,
real(kind=kind_phys), intent(in)  te,
real(kind=kind_phys), intent(in)  xt,
real(kind=kind_phys), intent(in)  xtts,
real(kind=kind_phys), intent(inout)  xz,
real(kind=kind_phys), intent(inout)  xzts 
)

This subroutine applies top layer adjustment (tla).

Definition at line 337 of file module_nst_model.f90.

Referenced by sfc_nst::sfc_nst_run().

Here is the caller graph for this function:

◆ get_dtzm_2d()

subroutine, public module_nst_water_prop::get_dtzm_2d ( real (kind=kind_phys), dimension(nx,ny), intent(in)  xt,
real (kind=kind_phys), dimension(nx,ny), intent(in)  xz,
real (kind=kind_phys), dimension(nx,ny), intent(in)  dt_cool,
real (kind=kind_phys), dimension(nx,ny), intent(in)  zc,
logical, dimension(nx,ny), intent(in)  wet,
real (kind=kind_phys), intent(in)  z1,
real (kind=kind_phys), intent(in)  z2,
integer, intent(in)  nx,
integer, intent(in)  ny,
integer, intent(in)  nth,
real (kind=kind_phys), dimension(nx,ny), intent(out)  dtm 
)

Definition at line 637 of file module_nst_water_prop.f90.

◆ get_dtzm_point()

subroutine, public module_nst_water_prop::get_dtzm_point ( real (kind=kind_phys), intent(in)  xt,
real (kind=kind_phys), intent(in)  xz,
real (kind=kind_phys), intent(in)  dt_cool,
real (kind=kind_phys), intent(in)  zc,
real (kind=kind_phys), intent(in)  z1,
real (kind=kind_phys), intent(in)  z2,
real (kind=kind_phys), intent(out)  dtm 
)

This subroutine computes dtm (the mean of \(dT(z)\)).

Definition at line 560 of file module_nst_water_prop.f90.

Referenced by sfc_nst::sfc_nst_run().

Here is the caller graph for this function:

◆ grv()

real(kind_phys) function, public module_nst_water_prop::grv ( real(kind=kind_phys)  x)
Parameters
xsin(lat)

Definition at line 475 of file module_nst_water_prop.f90.

References module_nst_water_prop::grv().

Referenced by module_nst_water_prop::grv(), and sfc_nst::sfc_nst_run().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ rhocoef()

subroutine, public module_nst_water_prop::rhocoef ( real(kind=kind_phys), intent(in)  t,
real(kind=kind_phys), intent(in)  s,
real(kind=kind_phys), intent(in)  rhoref,
real(kind=kind_phys), intent(out)  alpha,
real(kind=kind_phys), intent(out)  beta 
)

This subroutine computes thermal expansion coefficient (alpha) and saline contraction coefficient (beta).

Definition at line 48 of file module_nst_water_prop.f90.

Referenced by sfc_nst::sfc_nst_run().

Here is the caller graph for this function:

◆ sfc_nst_run()

subroutine sfc_nst::sfc_nst_run ( integer, intent(in)  im,
real (kind=kind_phys), intent(in)  hvap,
real (kind=kind_phys), intent(in)  cp,
real (kind=kind_phys), intent(in)  hfus,
real (kind=kind_phys), intent(in)  jcal,
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)  rd,
real (kind=kind_phys), intent(in)  rhw0,
real (kind=kind_phys), intent(in)  pi,
real (kind=kind_phys), intent(in)  tgice,
real (kind=kind_phys), intent(in)  sbc,
real (kind=kind_phys), dimension(:), intent(in)  ps,
real (kind=kind_phys), dimension(:), intent(in)  u1,
real (kind=kind_phys), dimension(:), intent(in)  v1,
real (kind=kind_phys), dimension(:), intent(in)  usfco,
real (kind=kind_phys), dimension(:), intent(in)  vsfco,
logical, intent(in)  use_oceanuv,
real (kind=kind_phys), dimension(:), intent(in)  t1,
real (kind=kind_phys), dimension(:), intent(in)  q1,
real (kind=kind_phys), dimension(:), intent(in)  tref,
real (kind=kind_phys), dimension(:), intent(in)  cm,
real (kind=kind_phys), dimension(:), intent(in)  ch,
logical, intent(in)  lseaspray,
real (kind=kind_phys), dimension(:), intent(in)  fm,
real (kind=kind_phys), dimension(:), intent(in)  fm10,
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,
logical, dimension(:), intent(in)  wet,
integer, dimension(:), intent(in)  use_lake_model,
real (kind=kind_phys), dimension(:), intent(in)  xlon,
real (kind=kind_phys), dimension(:), intent(in)  sinlat,
real (kind=kind_phys), dimension(:), intent(in)  stress,
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)  rain,
real (kind=kind_phys), intent(in)  timestep,
integer, intent(in)  kdt,
real (kind=kind_phys), intent(in)  solhr,
real (kind=kind_phys), dimension(:), intent(in)  xcosz,
real (kind=kind_phys), dimension(:), intent(in)  wind,
logical, dimension(:), intent(in)  flag_iter,
logical, dimension(:), 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,
logical, intent(in)  thsfc_loc,
real (kind=kind_phys), dimension(:), intent(inout)  tskin,
real (kind=kind_phys), dimension(:), intent(inout)  tsurf,
real (kind=kind_phys), dimension(:), intent(inout)  xt,
real (kind=kind_phys), dimension(:), intent(inout)  xs,
real (kind=kind_phys), dimension(:), intent(inout)  xu,
real (kind=kind_phys), dimension(:), intent(inout)  xv,
real (kind=kind_phys), dimension(:), intent(inout)  xz,
real (kind=kind_phys), dimension(:), intent(inout)  zm,
real (kind=kind_phys), dimension(:), intent(inout)  xtts,
real (kind=kind_phys), dimension(:), intent(inout)  xzts,
real (kind=kind_phys), dimension(:), intent(inout)  dt_cool,
real (kind=kind_phys), dimension(:), intent(inout)  z_c,
real (kind=kind_phys), dimension(:), intent(inout)  c_0,
real (kind=kind_phys), dimension(:), intent(inout)  c_d,
real (kind=kind_phys), dimension(:), intent(inout)  w_0,
real (kind=kind_phys), dimension(:), intent(inout)  w_d,
real (kind=kind_phys), dimension(:), intent(inout)  d_conv,
real (kind=kind_phys), dimension(:), intent(inout)  ifd,
real (kind=kind_phys), dimension(:), intent(inout)  qrain,
real (kind=kind_phys), dimension(:), intent(inout)  qsurf,
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)  evap,
real (kind=kind_phys), dimension(:), intent(inout)  hflx,
real (kind=kind_phys), dimension(:), intent(inout)  ep,
character(len=*), intent(out)  errmsg,
integer, intent(out)  errflg 
)
  • Calculate latent and sensible heat flux over open water with tskin.
  • Calculate sensible heat flux (qrain) due to rainfall.
  • Calculate input non solar heat flux as upward = positive to models here
  • Call cool_skin(), which is the sub-layer cooling parameterization (Fairfall et al. (1996) [58]).
  • 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).
  • Call sw_ps_9b() to compute the fraction of the solar radiation absorbed by the depth delz (Paulson and Simpson (1981) [161]). 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 dt_1p_mwa() to apply maximum warming adjustment.
  • Call dtm_1p_mta() to apply maximum temperature adjustment.
  • 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.
  • Include sea spray effects

Definition at line 27 of file sfc_nst.f90.

References nst_module::cal_ttop(), nst_module::cal_w(), nst_module::convdepth(), nst_module::cool_skin(), module_nst_water_prop::density(), nst_module::dtl_reset(), nst_module::dtm_1p(), nst_module::dtm_1p_fca(), nst_module::dtm_1p_mda(), nst_module::dtm_1p_mta(), nst_module::dtm_1p_mwa(), nst_module::dtm_1p_tla(), module_nst_water_prop::get_dtzm_point(), module_nst_water_prop::grv(), and module_nst_water_prop::rhocoef().

Here is the call graph for this function:

◆ sw_ps_9b()

elemental subroutine, public module_nst_water_prop::sw_ps_9b ( real(kind=kind_phys), intent(in)  z,
real(kind=kind_phys), intent(out)  fxp 
)

This subroutine computes the fraction of the solar radiation absorbed by the depth z following Paulson and Simpson (1981) [161] .

Definition at line 129 of file module_nst_water_prop.f90.

◆ sw_ps_9b_aw()

elemental subroutine, public module_nst_water_prop::sw_ps_9b_aw ( real(kind=kind_phys), intent(in)  z,
real(kind=kind_phys), intent(out)  aw 
)

This subroutine.

Definition at line 162 of file module_nst_water_prop.f90.