CCPP SciDoc  v6.0.0
Common Community Physics Package Developed at DTC

◆ sfccycle()

subroutine sfccycle ( integer  lugb,
integer  len,
integer  lsoil,
real (kind=kind_io8), dimension(len)  sig1t,
real (kind=kind_io8)  deltsfc,
integer  iy,
integer  im,
integer  id,
integer  ih,
real (kind=kind_io8)  fh,
real (kind=kind_io8), dimension(len)  rla,
real (kind=kind_io8), dimension(len)  rlo,
real (kind=kind_io8), dimension(len)  slmskl,
real (kind=kind_io8), dimension(len)  slmskw,
real (kind=kind_io8), dimension(len)  orog,
real (kind=kind_io8), dimension(len)  orog_uf,
logical, intent(in)  use_ufo,
logical, intent(in)  nst_anl,
real (kind=kind_io8), dimension(len)  sihfcs,
real (kind=kind_io8), dimension(len)  sicfcs,
real (kind=kind_io8), dimension(len)  sitfcs,
real (kind=kind_io8), dimension(len)  swdfcs,
real (kind=kind_io8), dimension(len,lsoil)  slcfcs,
real (kind=kind_io8), dimension(len)  vmnfcs,
real (kind=kind_io8), dimension(len)  vmxfcs,
real (kind=kind_io8), dimension(len)  slpfcs,
real (kind=kind_io8), dimension(len)  absfcs,
real (kind=kind_io8), dimension(len)  tsffcs,
real (kind=kind_io8), dimension(len)  snofcs,
real (kind=kind_io8), dimension(len)  zorfcs,
real (kind=kind_io8), dimension(len,4)  albfcs,
real (kind=kind_io8), dimension(len)  tg3fcs,
real (kind=kind_io8), dimension(len)  cnpfcs,
real (kind=kind_io8), dimension(len,lsoil)  smcfcs,
real (kind=kind_io8), dimension(len,lsoil)  stcfcs,
real (kind=kind_io8), dimension(len)  slifcs,
real (kind=kind_io8), dimension(len)  aisfcs,
real (kind=kind_io8), dimension(len)  vegfcs,
real (kind=kind_io8), dimension(len)  vetfcs,
real (kind=kind_io8), dimension(len)  sotfcs,
real (kind=kind_io8), dimension(len,2)  alffcs,
real (kind=kind_io8), dimension (len)  cvfcs,
real (kind=kind_io8), dimension(len)  cvbfcs,
real (kind=kind_io8), dimension(len)  cvtfcs,
integer, intent(in)  me,
integer, intent(in)  nthrds,
integer  nlunit,
integer  sz_nml,
character(len=*), dimension(sz_nml), intent(in)  input_nml_file,
real (kind=kind_io8), dimension(len), intent(in)  min_ice,
integer  ialb,
integer  isot,
integer  ivegsrc,
character(len=*), intent(in)  tile_num_ch,
integer, dimension(len), intent(in)  i_index,
integer, dimension(len), intent(in)  j_index 
)
Parameters
lugbthe unit number used in this subprogram
lennumber of points on which sfccyc operates
lsoilnumber of soil layers
sig1tsigma level 1 temperature for dead start. it should be on gaussian grid. If not dead start, no need for dimension but set to zero as in the example below.
deltsfc= fhcyc, frequcy for surface data cycling in hours
iy,im,id,ihyear, month, day, and hour of initial state
fhforecast hour
rla,rlolatitude and longitudes of the len points
slmsk
orog
orog_uf
use_ufo
nst_anl

This is a limited point version of surface program.

this program runs in two different modes:

  1. analysis mode (fh=0.)

    this program merges climatology, analysis and forecast guess to create new surface fields. if analysis file is given, the program uses it if date of the analysis matches with iy,im,id,ih (see note below).

  2. forecast mode (fh.gt.0.)

    this program interpolates climatology to the date corresponding to the forecast hour. if surface analysis file is given, for the corresponding dates, the program will use it.

Note
if the date of the analysis does not match given iy,im,id,ih, (and fh), the program searches an old analysis by going back 6 hours, then 12 hours, then one day upto nrepmx days (parameter statement in the subrotine fixrd. now defined as 8). this allows the user to provide non-daily analysis to be used. if matching field is not found, the forecast guess will be used.

use of a combined earlier surface analyses and current analysis is not allowed (as was done in the old version for snow analysis in which old snow analysis is used in combination with initial guess), except for sea surface temperature. for sst anolmaly interpolation, you need to set lanom=.true. and must provide sst analysis at initial time.

if you want to do complex merging of past and present surface field analysis, you need to create a separate file that contains daily surface field.

for a dead start, do not supply fnbgsi or set fnbgsi=' '

  • Call hmskrd() to read a high resolution mask field for use in grib interpolation

References albocn(), analy(), anomint(), clima(), filanl(), filfcs(), fixrdc(), getscv(), getsmc(), getstc(), hmskrd(), sfccyc_module::kpdais, sfccyc_module::kpdalb_0, sfccyc_module::kpdalb_1, sfccyc_module::kpdalf, sfccyc_module::kpdgla, sfccyc_module::kpdsno, sfccyc_module::kpdtg3, sfccyc_module::kpdwet, sfccyc_module::kpdzor, landtyp(), sfccyc_module::mdata, merge(), sfccyc_module::message(), monitr(), newice(), sfccyc_module::num_threads, sfccyc_module::one, qcbyfc(), qcmxice(), qcmxmn(), qcsice(), qcsli(), qcsnow(), rof01(), rof01_len(), scale(), setlsi(), setzro(), snodpth(), snodpth2(), snosfc(), sfccyc_module::soil_type_landice, sfccyc_module::ten, tsfcor(), usesgt(), sfccyc_module::veg_type_landice, and sfccyc_module::zero.

Referenced by gcycle_mod::gcycle().

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