124                       do_nsst,inc_file,nsst,slifcs,tsffcs,vegfcs,swefcs, &
 
  125                       tg3fcs,zorfcs,albfcs,alffcs, &
 
  126                       cnpfcs,f10m,t2m,q2m,vetfcs, &
 
  127                       sotfcs,ustar,fmm,fhh,sicfcs, &
 
  128                       sihfcs,sitfcs,tprcp,srflag,  &
 
  129                       swdfcs,vmnfcs,vmxfcs,slpfcs, &
 
  130                       absfcs,slcfcs,smcfcs,stcfcs, &
 
  137 integer, 
intent(in)              :: lensfc, lsoil
 
  138 integer, 
intent(in)              :: idim, jdim
 
  140 logical, 
intent(in)              :: do_nsst
 
  141 logical, 
intent(in)              :: inc_file
 
  143 real, 
intent(in), 
optional       :: slifcs(lensfc),tsffcs(lensfc)
 
  144 real, 
intent(in), 
optional       :: swefcs(lensfc),tg3fcs(lensfc)
 
  145 real, 
intent(in), 
optional       :: zorfcs(lensfc),albfcs(lensfc,4)
 
  146 real, 
intent(in), 
optional       :: alffcs(lensfc,2),cnpfcs(lensfc)
 
  147 real, 
intent(in), 
optional       :: f10m(lensfc),t2m(lensfc)
 
  148 real, 
intent(in), 
optional       :: q2m(lensfc),vegfcs(lensfc)
 
  149 real, 
intent(in), 
optional       :: vetfcs(lensfc),sotfcs(lensfc)
 
  150 real, 
intent(in), 
optional       :: ustar(lensfc),fmm(lensfc)
 
  151 real, 
intent(in), 
optional       :: fhh(lensfc), sicfcs(lensfc)
 
  152 real, 
intent(in), 
optional       :: sihfcs(lensfc), sitfcs(lensfc)
 
  153 real, 
intent(in), 
optional       :: tprcp(lensfc), srflag(lensfc)
 
  154 real, 
intent(in), 
optional       :: swdfcs(lensfc), vmnfcs(lensfc)
 
  155 real, 
intent(in), 
optional       :: vmxfcs(lensfc), slpfcs(lensfc)
 
  156 real, 
intent(in), 
optional       :: absfcs(lensfc), slcfcs(lensfc,lsoil)
 
  157 real, 
intent(in), 
optional       :: smcfcs(lensfc,lsoil), stcfcs(lensfc,lsoil)
 
  158 real, 
intent(in), 
optional       :: stcinc(lensfc,lsoil)
 
  159 real, 
intent(in), 
optional       :: slcinc(lensfc,lsoil)
 
  163 integer :: dim_x, dim_y, dim_soil, dim_time, dims_3d(3)
 
  165 real :: dum2d(idim,jdim), dum3d(idim,jdim,lsoil)
 
  167 character(len=50) :: fnbgso
 
  168 character(len=3)  :: rankch
 
  170 integer           :: myrank, error, ncid, id_var
 
  171 integer           :: varid_stc, varid_slc
 
  173 call mpi_comm_rank(mpi_comm_world, myrank, error)
 
  175 write(rankch, 
'(i3.3)') (myrank+1)
 
  177 if (.NOT.(inc_file)) 
then 
  179 fnbgso = 
"./fnbgso." // rankch
 
  182 print*,
"update OUTPUT SFC DATA TO: ",trim(fnbgso)
 
  184 error=nf90_open(trim(fnbgso),nf90_write,ncid)
 
  185 CALL netcdf_err(error, 
'OPENING FILE: '//trim(fnbgso) )
 
  187 if(
present(slifcs)) 
then 
  188   error=nf90_inq_varid(ncid, 
"slmsk", id_var)
 
  190   dum2d = reshape(slifcs, (/idim,jdim/))
 
  191   error = nf90_put_var( ncid, id_var, dum2d)
 
  192   call netcdf_err(error, 
'writing slmsk record' )
 
  196 if(
present(tsffcs)) 
then 
  197   error=nf90_inq_varid(ncid, 
"tsea", id_var)
 
  199   dum2d = reshape(tsffcs, (/idim,jdim/))
 
  200   error = nf90_put_var( ncid, id_var, dum2d)
 
  201   call netcdf_err(error, 
'writing tsea record' )
 
  205 if(
present(swefcs)) 
then 
  206   error=nf90_inq_varid(ncid, 
"sheleg", id_var)
 
  208   dum2d = reshape(swefcs, (/idim,jdim/))
 
  209   error = nf90_put_var( ncid, id_var, dum2d)
 
  210   call netcdf_err(error, 
'writing sheleg record' )
 
  214 if(
present(tg3fcs)) 
then 
  215   error=nf90_inq_varid(ncid, 
"tg3", id_var)
 
  217   dum2d = reshape(tg3fcs, (/idim,jdim/))
 
  218   error = nf90_put_var( ncid, id_var, dum2d)
 
  223 if(
present(zorfcs)) 
then 
  224   error=nf90_inq_varid(ncid, 
"zorl", id_var)
 
  226   dum2d = reshape(zorfcs, (/idim,jdim/))
 
  227   error = nf90_put_var( ncid, id_var, dum2d)
 
  228   call netcdf_err(error, 
'writing zorl record' )
 
  232 if(
present(albfcs)) 
then 
  233   error=nf90_inq_varid(ncid, 
"alvsf", id_var)
 
  235   dum2d = reshape(albfcs(:,1), (/idim,jdim/))
 
  236   error = nf90_put_var( ncid, id_var, dum2d)
 
  237   call netcdf_err(error, 
'writing alvsf record' )
 
  240   error=nf90_inq_varid(ncid, 
"alvwf", id_var)
 
  242   dum2d = reshape(albfcs(:,2), (/idim,jdim/))
 
  243   error = nf90_put_var( ncid, id_var, dum2d)
 
  244   call netcdf_err(error, 
'writing alvwf record' )
 
  247   error=nf90_inq_varid(ncid, 
"alnsf", id_var)
 
  249   dum2d = reshape(albfcs(:,3), (/idim,jdim/))
 
  250   error = nf90_put_var( ncid, id_var, dum2d)
 
  251   call netcdf_err(error, 
'writing alnsf record' )
 
  254   error=nf90_inq_varid(ncid, 
"alnwf", id_var)
 
  256   dum2d = reshape(albfcs(:,4), (/idim,jdim/))
 
  257   error = nf90_put_var( ncid, id_var, dum2d)
 
  258   call netcdf_err(error, 
'writing alnwf record' )
 
  262 if(
present(alffcs)) 
then 
  263   error=nf90_inq_varid(ncid, 
"facsf", id_var)
 
  265   dum2d = reshape(alffcs(:,1), (/idim,jdim/))
 
  266   error = nf90_put_var( ncid, id_var, dum2d)
 
  267   call netcdf_err(error, 
'writing facsf record' )
 
  270   error=nf90_inq_varid(ncid, 
"facwf", id_var)
 
  272   dum2d = reshape(alffcs(:,2), (/idim,jdim/))
 
  273   error = nf90_put_var( ncid, id_var, dum2d)
 
  274   call netcdf_err(error, 
'writing facwf record' )
 
  278 if(
present(vegfcs)) 
then 
  279   error=nf90_inq_varid(ncid, 
"vfrac", id_var)
 
  281   dum2d = reshape(vegfcs, (/idim,jdim/))
 
  282   error = nf90_put_var( ncid, id_var, dum2d)
 
  283   call netcdf_err(error, 
'writing vegfcs record' )
 
  287 if(
present(cnpfcs)) 
then 
  288   error=nf90_inq_varid(ncid, 
"canopy", id_var)
 
  290   dum2d = reshape(cnpfcs, (/idim,jdim/))
 
  291   error = nf90_put_var( ncid, id_var, dum2d)
 
  292   call netcdf_err(error, 
'writing canopy record' )
 
  296 if(
present(f10m)) 
then 
  297   error=nf90_inq_varid(ncid, 
"f10m", id_var)
 
  299   dum2d = reshape(f10m, (/idim,jdim/))
 
  300   error = nf90_put_var( ncid, id_var, dum2d)
 
  301   call netcdf_err(error, 
'writing f10m record' )
 
  305 if(
present(t2m)) 
then 
  306   error=nf90_inq_varid(ncid, 
"t2m", id_var)
 
  308   dum2d = reshape(t2m, (/idim,jdim/))
 
  309   error = nf90_put_var( ncid, id_var, dum2d)
 
  314 if(
present(q2m)) 
then 
  315   error=nf90_inq_varid(ncid, 
"q2m", id_var)
 
  317   dum2d = reshape(q2m, (/idim,jdim/))
 
  318   error = nf90_put_var( ncid, id_var, dum2d)
 
  323 if(
present(vetfcs)) 
then 
  324   error=nf90_inq_varid(ncid, 
"vtype", id_var)
 
  326   dum2d = reshape(vetfcs, (/idim,jdim/))
 
  327   error = nf90_put_var( ncid, id_var, dum2d)
 
  328   call netcdf_err(error, 
'writing vtype record' )
 
  332 if(
present(sotfcs)) 
then 
  333   error=nf90_inq_varid(ncid, 
"stype", id_var)
 
  335   dum2d = reshape(sotfcs, (/idim,jdim/))
 
  336   error = nf90_put_var( ncid, id_var, dum2d)
 
  337   call netcdf_err(error, 
'writing stype record' )
 
  341 if(
present(ustar)) 
then 
  342   error=nf90_inq_varid(ncid, 
"uustar", id_var)
 
  344   dum2d = reshape(ustar, (/idim,jdim/))
 
  345   error = nf90_put_var( ncid, id_var, dum2d)
 
  346   call netcdf_err(error, 
'writing uustar record' )
 
  350 if(
present(fmm)) 
then 
  351   error=nf90_inq_varid(ncid, 
"ffmm", id_var)
 
  353   dum2d = reshape(fmm, (/idim,jdim/))
 
  354   error = nf90_put_var( ncid, id_var, dum2d)
 
  355   call netcdf_err(error, 
'writing ffmm record' )
 
  359 if(
present(fhh)) 
then 
  360   error=nf90_inq_varid(ncid, 
"ffhh", id_var)
 
  362   dum2d = reshape(fhh, (/idim,jdim/))
 
  363   error = nf90_put_var( ncid, id_var, dum2d)
 
  364   call netcdf_err(error, 
'writing ffhh record' )
 
  368 if(
present(sicfcs)) 
then 
  369   error=nf90_inq_varid(ncid, 
"fice", id_var)
 
  371   dum2d = reshape(sicfcs, (/idim,jdim/))
 
  372   error = nf90_put_var( ncid, id_var, dum2d)
 
  373   call netcdf_err(error, 
'writing fice record' )
 
  377 if(
present(sihfcs)) 
then 
  378   error=nf90_inq_varid(ncid, 
"hice", id_var)
 
  380   dum2d = reshape(sihfcs, (/idim,jdim/))
 
  381   error = nf90_put_var( ncid, id_var, dum2d)
 
  382   call netcdf_err(error, 
'writing hice record' )
 
  386 if(
present(sitfcs)) 
then 
  387   error=nf90_inq_varid(ncid, 
"tisfc", id_var)
 
  389   dum2d = reshape(sitfcs, (/idim,jdim/))
 
  390   error = nf90_put_var( ncid, id_var, dum2d)
 
  391   call netcdf_err(error, 
'writing tisfc record' )
 
  395 if(
present(tprcp)) 
then 
  396   error=nf90_inq_varid(ncid, 
"tprcp", id_var)
 
  398   dum2d = reshape(tprcp, (/idim,jdim/))
 
  399   error = nf90_put_var( ncid, id_var, dum2d)
 
  400   call netcdf_err(error, 
'writing tprcp record' )
 
  404 if(
present(srflag)) 
then 
  405   error=nf90_inq_varid(ncid, 
"srflag", id_var)
 
  407   dum2d = reshape(srflag, (/idim,jdim/))
 
  408   error = nf90_put_var( ncid, id_var, dum2d)
 
  409   call netcdf_err(error, 
'writing srflag record' )
 
  413 if(
present(swdfcs)) 
then 
  414   error=nf90_inq_varid(ncid, 
"snwdph", id_var)
 
  416   dum2d = reshape(swdfcs, (/idim,jdim/))
 
  417   error = nf90_put_var( ncid, id_var, dum2d)
 
  418   call netcdf_err(error, 
'writing snwdph record' )
 
  422 if(
present(vmnfcs)) 
then 
  423   error=nf90_inq_varid(ncid, 
"shdmin", id_var)
 
  425   dum2d = reshape(vmnfcs, (/idim,jdim/))
 
  426   error = nf90_put_var( ncid, id_var, dum2d)
 
  427   call netcdf_err(error, 
'writing shdmin record' )
 
  431 if(
present(vmxfcs)) 
then 
  432   error=nf90_inq_varid(ncid, 
"shdmax", id_var)
 
  434   dum2d = reshape(vmxfcs, (/idim,jdim/))
 
  435   error = nf90_put_var( ncid, id_var, dum2d)
 
  436   call netcdf_err(error, 
'writing shdmax record' )
 
  440 if(
present(slpfcs)) 
then 
  441   error=nf90_inq_varid(ncid, 
"slope", id_var)
 
  443   dum2d = reshape(slpfcs, (/idim,jdim/))
 
  444   error = nf90_put_var( ncid, id_var, dum2d)
 
  445   call netcdf_err(error, 
'writing slope record' )
 
  449 if(
present(absfcs)) 
then 
  450   error=nf90_inq_varid(ncid, 
"snoalb", id_var)
 
  452   dum2d = reshape(absfcs, (/idim,jdim/))
 
  453   error = nf90_put_var( ncid, id_var, dum2d)
 
  454   call netcdf_err(error, 
'writing snoalb record' )
 
  458 if(
present(slcfcs)) 
then 
  459   error=nf90_inq_varid(ncid, 
"slc", id_var)
 
  461   dum3d = reshape(slcfcs, (/idim,jdim,lsoil/))
 
  462   error = nf90_put_var( ncid, id_var, dum3d)
 
  467 if(
present(smcfcs)) 
then 
  468   error=nf90_inq_varid(ncid, 
"smc", id_var)
 
  470   dum3d = reshape(smcfcs, (/idim,jdim,lsoil/))
 
  471   error = nf90_put_var( ncid, id_var, dum3d)
 
  476 if(
present(stcfcs)) 
then 
  477   error=nf90_inq_varid(ncid, 
"stc", id_var)
 
  479   dum3d = reshape(stcfcs, (/idim,jdim,lsoil/))
 
  480   error = nf90_put_var( ncid, id_var, dum3d)
 
  487    fnbgso = 
"./gaussian_interp." // rankch
 
  489    print*,
"Write increments onto cubed sphere tiles to: ", trim(fnbgso)
 
  491    error=nf90_create(trim(fnbgso),nf90_64bit_offset,ncid)
 
  492    CALL netcdf_err(error, 
'OPENING FILE: '//trim(fnbgso) )
 
  495    error = nf90_def_dim(ncid, 
"xaxis_1", idim, dim_x)
 
  498    error = nf90_def_dim(ncid, 
"yaxis_1", jdim, dim_y)
 
  501    error = nf90_def_dim(ncid, 
"soil_levels",lsoil, dim_soil)
 
  502    call netcdf_err(error, 
'defining soil_levels')
 
  505   error=nf90_def_var(ncid, 
"slc_inc", nf90_double, &
 
  506       (/dim_x,dim_y,dim_soil/),varid_slc)
 
  509   error=nf90_def_var(ncid, 
"stc_inc", nf90_double, &
 
  510       (/dim_x,dim_y,dim_soil/),varid_stc)
 
  513   error = nf90_enddef(ncid)
 
  516   dum3d = reshape(stcinc, (/idim,jdim,lsoil/))
 
  517   error = nf90_put_var( ncid, varid_stc, dum3d)
 
  518   call netcdf_err(error, 
'writing stc_inc record' )
 
  520   dum3d = reshape(slcinc, (/idim,jdim,lsoil/))
 
  521   error = nf90_put_var( ncid, varid_slc, dum3d)
 
  522   call netcdf_err(error, 
'writing slc_inc record' )
 
  528   error=nf90_inq_varid(ncid, 
"tref", id_var)
 
  530   dum2d = reshape(nsst%tref, (/idim,jdim/))
 
  531   error = nf90_put_var( ncid, id_var, dum2d)
 
  532   call netcdf_err(error, 
'WRITING TREF RECORD' )
 
  535   error=nf90_inq_varid(ncid, 
"z_c", id_var)
 
  537   dum2d = reshape(nsst%z_c, (/idim,jdim/))
 
  538   error = nf90_put_var( ncid, id_var, dum2d)
 
  542   error=nf90_inq_varid(ncid, 
"c_0", id_var)
 
  544   dum2d = reshape(nsst%c_0, (/idim,jdim/))
 
  545   error = nf90_put_var( ncid, id_var, dum2d)
 
  549   error=nf90_inq_varid(ncid, 
"c_d", id_var)
 
  551   dum2d = reshape(nsst%c_d, (/idim,jdim/))
 
  552   error = nf90_put_var( ncid, id_var, dum2d)
 
  556   error=nf90_inq_varid(ncid, 
"w_0", id_var)
 
  558   dum2d = reshape(nsst%w_0, (/idim,jdim/))
 
  559   error = nf90_put_var( ncid, id_var, dum2d)
 
  563   error=nf90_inq_varid(ncid, 
"w_d", id_var)
 
  565   dum2d = reshape(nsst%w_d, (/idim,jdim/))
 
  566   error = nf90_put_var( ncid, id_var, dum2d)
 
  570   error=nf90_inq_varid(ncid, 
"xt", id_var)
 
  572   dum2d = reshape(nsst%xt, (/idim,jdim/))
 
  573   error = nf90_put_var( ncid, id_var, dum2d)
 
  577   error=nf90_inq_varid(ncid, 
"xs", id_var)
 
  579   dum2d = reshape(nsst%xs, (/idim,jdim/))
 
  580   error = nf90_put_var( ncid, id_var, dum2d)
 
  584   error=nf90_inq_varid(ncid, 
"xu", id_var)
 
  586   dum2d = reshape(nsst%xu, (/idim,jdim/))
 
  587   error = nf90_put_var( ncid, id_var, dum2d)
 
  591   error=nf90_inq_varid(ncid, 
"xv", id_var)
 
  593   dum2d = reshape(nsst%xv, (/idim,jdim/))
 
  594   error = nf90_put_var( ncid, id_var, dum2d)
 
  598   error=nf90_inq_varid(ncid, 
"xz", id_var)
 
  600   dum2d = reshape(nsst%xz, (/idim,jdim/))
 
  601   error = nf90_put_var( ncid, id_var, dum2d)
 
  605   error=nf90_inq_varid(ncid, 
"zm", id_var)
 
  607   dum2d = reshape(nsst%zm, (/idim,jdim/))
 
  608   error = nf90_put_var( ncid, id_var, dum2d)
 
  612   error=nf90_inq_varid(ncid, 
"xtts", id_var)
 
  614   dum2d = reshape(nsst%xtts, (/idim,jdim/))
 
  615   error = nf90_put_var( ncid, id_var, dum2d)
 
  616   call netcdf_err(error, 
'WRITING XTTS RECORD' )
 
  619   error=nf90_inq_varid(ncid, 
"xzts", id_var)
 
  621   dum2d = reshape(nsst%xzts, (/idim,jdim/))
 
  622   error = nf90_put_var( ncid, id_var, dum2d)
 
  623   call netcdf_err(error, 
'WRITING XZTS RECORD' )
 
  626   error=nf90_inq_varid(ncid, 
"d_conv", id_var)
 
  628   dum2d = reshape(nsst%d_conv, (/idim,jdim/))
 
  629   error = nf90_put_var( ncid, id_var, dum2d)
 
  630   call netcdf_err(error, 
'WRITING D_CONV RECORD' )
 
  633   error=nf90_inq_varid(ncid, 
"ifd", id_var)
 
  635   dum2d = reshape(nsst%ifd, (/idim,jdim/))
 
  636   error = nf90_put_var( ncid, id_var, dum2d)
 
  640   error=nf90_inq_varid(ncid, 
"dt_cool", id_var)
 
  642   dum2d = reshape(nsst%dt_cool, (/idim,jdim/))
 
  643   error = nf90_put_var( ncid, id_var, dum2d)
 
  644   call netcdf_err(error, 
'WRITING DT_COOL RECORD' )
 
  647   error=nf90_inq_varid(ncid, 
"qrain", id_var)
 
  649   dum2d = reshape(nsst%qrain, (/idim,jdim/))
 
  650   error = nf90_put_var( ncid, id_var, dum2d)
 
  651   call netcdf_err(error, 
'WRITING QRAIN RECORD' )
 
  656   error=nf90_inq_varid(ncid, 
"tfinc", id_var)
 
  658     error=nf90_inq_dimid(ncid, 
"xaxis_1", dim_x)
 
  660     error=nf90_inq_dimid(ncid, 
"yaxis_1", dim_y)
 
  662     error=nf90_inq_dimid(ncid, 
"Time", dim_time)
 
  666     dims_3d(3) = dim_time
 
  667     error=nf90_redef(ncid)
 
  668     error = nf90_def_var(ncid, 
'tfinc', nf90_double, dims_3d, id_var)
 
  670     error = nf90_put_att(ncid, id_var, 
"long_name", 
"tfinc")
 
  671     call netcdf_err(error, 
'DEFINING tfinc LONG NAME' )
 
  672     error = nf90_put_att(ncid, id_var, 
"units", 
"none")
 
  673     call netcdf_err(error, 
'DEFINING tfinc UNITS' )
 
  674     error=nf90_enddef(ncid)
 
  676   dum2d = reshape(nsst%tfinc, (/idim,jdim/))
 
  677   error = nf90_put_var( ncid, id_var, dum2d)
 
  678   call netcdf_err(error, 
'WRITING TFINC RECORD' )
 
  682 error = nf90_close(ncid)
 
 
 1096                      TSFFCS,SMCFCS,SWEFCS,STCFCS, &
 
 1098                      CVFCS,CVBFCS,CVTFCS,ALBFCS, &
 
 1099                      VEGFCS,SLIFCS,CNPFCS,F10M, &
 
 1100                      VETFCS,SOTFCS,ALFFCS, &
 
 1102                      SIHFCS,SICFCS,SITFCS, &
 
 1103                      TPRCP,SRFLAG,SNDFCS,  &
 
 1104                      VMNFCS,VMXFCS,SLCFCS, &
 
 1105                      STCINC,SLCINC,LSOIL_INCR, &
 
 1106                      SLPFCS,ABSFCS,T2M,Q2M,SLMASK, &
 
 1112 INTEGER, 
INTENT(IN)       :: lsoil, lensfc
 
 1113 LOGICAL, 
INTENT(IN)       :: do_nsst
 
 1115 CHARACTER(LEN=50), 
OPTIONAL, 
INTENT(IN)     :: fname_inc
 
 1116 INTEGER, 
OPTIONAL, 
INTENT(IN)       :: lsoil_incr
 
 1118 LOGICAL, 
OPTIONAL, 
INTENT(OUT)      :: is_noahmp
 
 1120 REAL, 
OPTIONAL, 
INTENT(OUT)         :: cvfcs(lensfc), cvbfcs(lensfc)
 
 1121 REAL, 
OPTIONAL, 
INTENT(OUT)         :: cvtfcs(lensfc), albfcs(lensfc,4)
 
 1122 REAL, 
OPTIONAL, 
INTENT(OUT)         :: slifcs(lensfc), cnpfcs(lensfc)
 
 1123 REAL, 
OPTIONAL, 
INTENT(OUT)         :: vegfcs(lensfc), f10m(lensfc)
 
 1124 REAL, 
OPTIONAL, 
INTENT(OUT)         :: vetfcs(lensfc), sotfcs(lensfc)
 
 1125 REAL, 
OPTIONAL, 
INTENT(OUT)         :: tsffcs(lensfc), swefcs(lensfc)
 
 1126 REAL, 
OPTIONAL, 
INTENT(OUT)         :: tg3fcs(lensfc), zorfcs(lensfc)
 
 1127 REAL, 
OPTIONAL, 
INTENT(OUT)         :: alffcs(lensfc,2), ustar(lensfc)
 
 1128 REAL, 
OPTIONAL, 
INTENT(OUT)         :: fmm(lensfc), fhh(lensfc)
 
 1129 REAL, 
OPTIONAL, 
INTENT(OUT)         :: sihfcs(lensfc), sicfcs(lensfc)
 
 1130 REAL, 
OPTIONAL, 
INTENT(OUT)         :: sitfcs(lensfc), tprcp(lensfc)
 
 1131 REAL, 
OPTIONAL, 
INTENT(OUT)         :: srflag(lensfc), sndfcs(lensfc)
 
 1132 REAL, 
OPTIONAL, 
INTENT(OUT)         :: vmnfcs(lensfc), vmxfcs(lensfc)
 
 1133 REAL, 
OPTIONAL, 
INTENT(OUT)         :: slpfcs(lensfc), absfcs(lensfc)
 
 1134 REAL, 
OPTIONAL, 
INTENT(OUT)         :: t2m(lensfc), q2m(lensfc), slmask(lensfc)
 
 1135 REAL, 
OPTIONAL, 
INTENT(OUT)         :: slcfcs(lensfc,lsoil)
 
 1136 REAL, 
OPTIONAL, 
INTENT(OUT)         :: smcfcs(lensfc,lsoil)
 
 1137 REAL, 
OPTIONAL, 
INTENT(OUT)         :: stcfcs(lensfc,lsoil)
 
 1138 REAL, 
OPTIONAL, 
INTENT(OUT)         :: stcinc(lensfc,lsoil)
 
 1139 REAL, 
OPTIONAL, 
INTENT(OUT)         :: slcinc(lensfc,lsoil)
 
 1140 REAL(kind=4), optional, 
INTENT(OUT) :: zsoil(lsoil)
 
 1144 CHARACTER(LEN=3)          :: rankch
 
 1145 CHARACTER(LEN=50)         :: fname
 
 1146 CHARACTER(LEN=1)          :: k_ch
 
 1147 CHARACTER(LEN=10)         :: incvar
 
 1149 INTEGER                   :: error, error2, ncid, myrank
 
 1150 INTEGER                   :: idim, jdim, id_dim
 
 1151 INTEGER                   :: id_var, ierr, test, k
 
 1153 LOGICAL                   :: jedi_incr_file
 
 1155 REAL(kind=8), allocatable :: dummy(:,:), dummy3d(:,:,:)
 
 1157 IF (
PRESENT(fname_inc)) 
THEN  
 1160     CALL mpi_comm_rank(mpi_comm_world, myrank, error)
 
 1162     WRITE(rankch, 
'(I3.3)') (myrank+1)
 
 1164     fname = 
"./fnbgsi." // rankch
 
 1168 print*, 
"READ INPUT SFC DATA FROM: "//trim(fname)
 
 1170 error=nf90_open(trim(fname),nf90_nowrite,ncid)
 
 1171 CALL netcdf_err(error, 
'OPENING FILE: '//trim(fname) )
 
 1176 test=nf90_inq_dimid(ncid, 
'xaxis_1', id_dim)
 
 1178 IF ( test == nf90_noerr ) 
THEN 
 1179     jedi_incr_file=.false.   
 
 1181     error=nf90_inq_dimid(ncid, 
'xaxis_1', id_dim)
 
 1183     error=nf90_inquire_dimension(ncid,id_dim,len=idim)
 
 1186     error=nf90_inq_dimid(ncid, 
'yaxis_1', id_dim)
 
 1188     error=nf90_inquire_dimension(ncid,id_dim,len=jdim)
 
 1192     jedi_incr_file=.true.   
 
 1194     error=nf90_inq_dimid(ncid, 
'grid_xt', id_dim)
 
 1196     error=nf90_inquire_dimension(ncid,id_dim,len=idim)
 
 1199     error=nf90_inq_dimid(ncid, 
'grid_yt', id_dim)
 
 1201     error=nf90_inquire_dimension(ncid,id_dim,len=jdim)
 
 1206 IF ((idim*jdim) /= lensfc) 
THEN 
 1207   print*,
'FATAL ERROR: DIMENSIONS WRONG.' 
 1208   CALL mpi_abort(mpi_comm_world, 88, ierr)
 
 1214 IF(
PRESENT(is_noahmp))
THEN 
 1215   error=nf90_inq_varid(ncid, 
"canliqxy", id_var)
 
 1216   error2=nf90_inq_varid(ncid, 
"tsnoxy", id_var)
 
 1218   IF(error == 0 .AND. error2 == 0) 
THEN 
 1220     print*,
"- WILL PROCESS FOR NOAH-MP LSM." 
 1224 ALLOCATE(dummy(idim,jdim))
 
 1226 IF (
PRESENT(tsffcs)) 
THEN 
 1227 error=nf90_inq_varid(ncid, 
"tsea", id_var)
 
 1229 error=nf90_get_var(ncid, id_var, dummy)
 
 1231 tsffcs = reshape(dummy, (/lensfc/))
 
 1234 IF (
PRESENT(swefcs)) 
THEN 
 1235 error=nf90_inq_varid(ncid, 
"sheleg", id_var)
 
 1237 error=nf90_get_var(ncid, id_var, dummy)
 
 1239 swefcs = reshape(dummy, (/lensfc/))
 
 1242 IF (
PRESENT(tg3fcs)) 
THEN 
 1243 error=nf90_inq_varid(ncid, 
"tg3", id_var)
 
 1245 error=nf90_get_var(ncid, id_var, dummy)
 
 1247 tg3fcs = reshape(dummy, (/lensfc/))
 
 1250 IF (
PRESENT(zorfcs)) 
THEN 
 1251 error=nf90_inq_varid(ncid, 
"zorl", id_var)
 
 1253 error=nf90_get_var(ncid, id_var, dummy)
 
 1255 zorfcs = reshape(dummy, (/lensfc/))
 
 1258 IF (
PRESENT(albfcs)) 
THEN 
 1260 error=nf90_inq_varid(ncid, 
"alvsf", id_var)
 
 1262 error=nf90_get_var(ncid, id_var, dummy)
 
 1264 albfcs(:,1) = reshape(dummy, (/lensfc/))
 
 1266 error=nf90_inq_varid(ncid, 
"alvwf", id_var)
 
 1268 error=nf90_get_var(ncid, id_var, dummy)
 
 1270 albfcs(:,2) = reshape(dummy, (/lensfc/))
 
 1272 error=nf90_inq_varid(ncid, 
"alnsf", id_var)
 
 1274 error=nf90_get_var(ncid, id_var, dummy)
 
 1276 albfcs(:,3) = reshape(dummy, (/lensfc/))
 
 1278 error=nf90_inq_varid(ncid, 
"alnwf", id_var)
 
 1280 error=nf90_get_var(ncid, id_var, dummy)
 
 1282 albfcs(:,4) = reshape(dummy, (/lensfc/))
 
 1286 IF (
PRESENT(slifcs)) 
THEN 
 1287 error=nf90_inq_varid(ncid, 
"slmsk", id_var)
 
 1289 error=nf90_get_var(ncid, id_var, dummy)
 
 1291 slifcs = reshape(dummy, (/lensfc/))
 
 1293 WHERE (slmask > 1.5) slmask=0.0  
 
 1296 IF (
PRESENT(cnpfcs)) 
THEN 
 1297 error=nf90_inq_varid(ncid, 
"canopy", id_var)
 
 1299 error=nf90_get_var(ncid, id_var, dummy)
 
 1301 cnpfcs = reshape(dummy, (/lensfc/))
 
 1304 IF (
PRESENT(vegfcs)) 
THEN 
 1305 error=nf90_inq_varid(ncid, 
"vfrac", id_var)
 
 1307 error=nf90_get_var(ncid, id_var, dummy)
 
 1309 vegfcs = reshape(dummy, (/lensfc/))
 
 1312 IF (
PRESENT(f10m)) 
THEN 
 1313 error=nf90_inq_varid(ncid, 
"f10m", id_var)
 
 1315 error=nf90_get_var(ncid, id_var, dummy)
 
 1317 f10m = reshape(dummy, (/lensfc/))
 
 1320 IF (
PRESENT(vetfcs)) 
THEN 
 1321 error=nf90_inq_varid(ncid, 
"vtype", id_var)
 
 1323 error=nf90_get_var(ncid, id_var, dummy)
 
 1325 vetfcs = reshape(dummy, (/lensfc/))
 
 1328 IF (
PRESENT(sotfcs)) 
THEN 
 1329 error=nf90_inq_varid(ncid, 
"stype", id_var)
 
 1331 error=nf90_get_var(ncid, id_var, dummy)
 
 1333 sotfcs = reshape(dummy, (/lensfc/))
 
 1336 IF (
PRESENT(alffcs)) 
THEN 
 1337 error=nf90_inq_varid(ncid, 
"facsf", id_var)
 
 1339 error=nf90_get_var(ncid, id_var, dummy)
 
 1341 alffcs(:,1) = reshape(dummy, (/lensfc/))
 
 1343 error=nf90_inq_varid(ncid, 
"facwf", id_var)
 
 1345 error=nf90_get_var(ncid, id_var, dummy)
 
 1347 alffcs(:,2) = reshape(dummy, (/lensfc/))
 
 1350 IF (
PRESENT(ustar)) 
THEN 
 1351 error=nf90_inq_varid(ncid, 
"uustar", id_var)
 
 1353 error=nf90_get_var(ncid, id_var, dummy)
 
 1355 ustar = reshape(dummy, (/lensfc/))
 
 1358 IF (
PRESENT(fmm)) 
THEN 
 1359 error=nf90_inq_varid(ncid, 
"ffmm", id_var)
 
 1361 error=nf90_get_var(ncid, id_var, dummy)
 
 1363 fmm = reshape(dummy, (/lensfc/))
 
 1366 IF (
PRESENT(fhh)) 
THEN 
 1367 error=nf90_inq_varid(ncid, 
"ffhh", id_var)
 
 1369 error=nf90_get_var(ncid, id_var, dummy)
 
 1371 fhh = reshape(dummy, (/lensfc/))
 
 1374 IF (
PRESENT(sihfcs)) 
THEN 
 1375 error=nf90_inq_varid(ncid, 
"hice", id_var)
 
 1377 error=nf90_get_var(ncid, id_var, dummy)
 
 1379 sihfcs = reshape(dummy, (/lensfc/))
 
 1382 IF (
PRESENT(sicfcs)) 
THEN 
 1383 error=nf90_inq_varid(ncid, 
"fice", id_var)
 
 1385 error=nf90_get_var(ncid, id_var, dummy)
 
 1387 sicfcs = reshape(dummy, (/lensfc/))
 
 1390 IF (
PRESENT(sitfcs)) 
THEN 
 1391 error=nf90_inq_varid(ncid, 
"tisfc", id_var)
 
 1393 error=nf90_get_var(ncid, id_var, dummy)
 
 1395 sitfcs = reshape(dummy, (/lensfc/))
 
 1398 IF (
PRESENT(tprcp)) 
THEN 
 1399 error=nf90_inq_varid(ncid, 
"tprcp", id_var)
 
 1401 error=nf90_get_var(ncid, id_var, dummy)
 
 1403 tprcp = reshape(dummy, (/lensfc/))
 
 1406 IF (
PRESENT(srflag)) 
THEN 
 1407 error=nf90_inq_varid(ncid, 
"srflag", id_var)
 
 1409 error=nf90_get_var(ncid, id_var, dummy)
 
 1411 srflag = reshape(dummy, (/lensfc/))
 
 1414 IF (
PRESENT(sndfcs)) 
THEN 
 1415 error=nf90_inq_varid(ncid, 
"snwdph", id_var)
 
 1417 error=nf90_get_var(ncid, id_var, dummy)
 
 1419 sndfcs = reshape(dummy, (/lensfc/))
 
 1422 IF (
PRESENT(vmnfcs)) 
THEN 
 1423 error=nf90_inq_varid(ncid, 
"shdmin", id_var)
 
 1425 error=nf90_get_var(ncid, id_var, dummy)
 
 1427 vmnfcs = reshape(dummy, (/lensfc/))
 
 1430 IF (
PRESENT(vmxfcs)) 
THEN 
 1431 error=nf90_inq_varid(ncid, 
"shdmax", id_var)
 
 1433 error=nf90_get_var(ncid, id_var, dummy)
 
 1435 vmxfcs = reshape(dummy, (/lensfc/))
 
 1438 IF (
PRESENT(slpfcs)) 
THEN 
 1439 error=nf90_inq_varid(ncid, 
"slope", id_var)
 
 1441 error=nf90_get_var(ncid, id_var, dummy)
 
 1443 slpfcs = reshape(dummy, (/lensfc/))
 
 1446 IF (
PRESENT(absfcs)) 
THEN 
 1447 error=nf90_inq_varid(ncid, 
"snoalb", id_var)
 
 1449 error=nf90_get_var(ncid, id_var, dummy)
 
 1451 absfcs = reshape(dummy, (/lensfc/))
 
 1454 IF (
PRESENT(t2m)) 
THEN 
 1455 error=nf90_inq_varid(ncid, 
"t2m", id_var)
 
 1457 error=nf90_get_var(ncid, id_var, dummy)
 
 1459 t2m = reshape(dummy, (/lensfc/))
 
 1462 IF (
PRESENT(q2m)) 
THEN 
 1463 error=nf90_inq_varid(ncid, 
"q2m", id_var)
 
 1465 error=nf90_get_var(ncid, id_var, dummy)
 
 1467 q2m = reshape(dummy, (/lensfc/))
 
 1470 nsst_read : 
IF(do_nsst) 
THEN 
 1473   print*,
"WILL READ NSST RECORDS." 
 1475   error=nf90_inq_varid(ncid, 
"c_0", id_var)
 
 1477   error=nf90_get_var(ncid, id_var, dummy)
 
 1479   nsst%C_0 = reshape(dummy, (/lensfc/))
 
 1481   error=nf90_inq_varid(ncid, 
"c_d", id_var)
 
 1483   error=nf90_get_var(ncid, id_var, dummy)
 
 1485   nsst%C_D = reshape(dummy, (/lensfc/))
 
 1487   error=nf90_inq_varid(ncid, 
"d_conv", id_var)
 
 1489   error=nf90_get_var(ncid, id_var, dummy)
 
 1491   nsst%D_CONV = reshape(dummy, (/lensfc/))
 
 1493   error=nf90_inq_varid(ncid, 
"dt_cool", id_var)
 
 1494   CALL netcdf_err(error, 
'READING dt_cool ID' )
 
 1495   error=nf90_get_var(ncid, id_var, dummy)
 
 1497   nsst%DT_COOL = reshape(dummy, (/lensfc/))
 
 1499   error=nf90_inq_varid(ncid, 
"ifd", id_var)
 
 1501   error=nf90_get_var(ncid, id_var, dummy)
 
 1503   nsst%IFD = reshape(dummy, (/lensfc/))
 
 1505   error=nf90_inq_varid(ncid, 
"qrain", id_var)
 
 1507   error=nf90_get_var(ncid, id_var, dummy)
 
 1509   nsst%QRAIN = reshape(dummy, (/lensfc/))
 
 1511   error=nf90_inq_varid(ncid, 
"tref", id_var)
 
 1513   error=nf90_get_var(ncid, id_var, dummy)
 
 1515   nsst%TREF = reshape(dummy, (/lensfc/))
 
 1517   error=nf90_inq_varid(ncid, 
"w_0", id_var)
 
 1519   error=nf90_get_var(ncid, id_var, dummy)
 
 1521   nsst%W_0 = reshape(dummy, (/lensfc/))
 
 1523   error=nf90_inq_varid(ncid, 
"w_d", id_var)
 
 1525   error=nf90_get_var(ncid, id_var, dummy)
 
 1527   nsst%W_D = reshape(dummy, (/lensfc/))
 
 1529   error=nf90_inq_varid(ncid, 
"xs", id_var)
 
 1531   error=nf90_get_var(ncid, id_var, dummy)
 
 1533   nsst%XS = reshape(dummy, (/lensfc/))
 
 1535   error=nf90_inq_varid(ncid, 
"xt", id_var)
 
 1537   error=nf90_get_var(ncid, id_var, dummy)
 
 1539   nsst%XT = reshape(dummy, (/lensfc/))
 
 1541   error=nf90_inq_varid(ncid, 
"xtts", id_var)
 
 1543   error=nf90_get_var(ncid, id_var, dummy)
 
 1545   nsst%XTTS = reshape(dummy, (/lensfc/))
 
 1547   error=nf90_inq_varid(ncid, 
"xu", id_var)
 
 1549   error=nf90_get_var(ncid, id_var, dummy)
 
 1551   nsst%XU = reshape(dummy, (/lensfc/))
 
 1553   error=nf90_inq_varid(ncid, 
"xv", id_var)
 
 1555   error=nf90_get_var(ncid, id_var, dummy)
 
 1557   nsst%XV = reshape(dummy, (/lensfc/))
 
 1559   error=nf90_inq_varid(ncid, 
"xz", id_var)
 
 1561   error=nf90_get_var(ncid, id_var, dummy)
 
 1563   nsst%XZ = reshape(dummy, (/lensfc/))
 
 1565   error=nf90_inq_varid(ncid, 
"xzts", id_var)
 
 1567   error=nf90_get_var(ncid, id_var, dummy)
 
 1569   nsst%XZTS = reshape(dummy, (/lensfc/))
 
 1571   error=nf90_inq_varid(ncid, 
"z_c", id_var)
 
 1573   error=nf90_get_var(ncid, id_var, dummy)
 
 1575   nsst%Z_C = reshape(dummy, (/lensfc/))
 
 1577   error=nf90_inq_varid(ncid, 
"zm", id_var)
 
 1579   error=nf90_get_var(ncid, id_var, dummy)
 
 1581   nsst%ZM = reshape(dummy, (/lensfc/))
 
 1586 ALLOCATE(dummy3d(idim,jdim,lsoil))
 
 1588 IF (
PRESENT(smcfcs)) 
THEN 
 1589 error=nf90_inq_varid(ncid, 
"smc", id_var)
 
 1591 error=nf90_get_var(ncid, id_var, dummy3d)
 
 1593 smcfcs = reshape(dummy3d, (/lensfc,lsoil/))
 
 1596 IF (
PRESENT(slcfcs)) 
THEN 
 1597 error=nf90_inq_varid(ncid, 
"slc", id_var)
 
 1599 error=nf90_get_var(ncid, id_var, dummy3d)
 
 1601 slcfcs = reshape(dummy3d, (/lensfc,lsoil/))
 
 1604 IF (
PRESENT(stcfcs)) 
THEN 
 1605 error=nf90_inq_varid(ncid, 
"stc", id_var)
 
 1607 error=nf90_get_var(ncid, id_var, dummy3d)
 
 1609 stcfcs = reshape(dummy3d, (/lensfc,lsoil/))
 
 1613 IF (jedi_incr_file) 
THEN 
 1614     IF (
PRESENT(slcinc)) 
THEN 
 1615     error=nf90_inq_varid(ncid, 
"soill", id_var)
 
 1617     error=nf90_get_var(ncid, id_var, dummy3d)
 
 1618     CALL netcdf_err(error, 
'READING slc increments' )
 
 1619     slcinc = reshape(dummy3d, (/lensfc,lsoil/))
 
 1622     IF (
PRESENT(stcinc)) 
THEN 
 1623     error=nf90_inq_varid(ncid, 
"soilt", id_var)
 
 1625     error=nf90_get_var(ncid, id_var, dummy3d)
 
 1626     CALL netcdf_err(error, 
'READING stc increments' )
 
 1627     stcinc = reshape(dummy3d, (/lensfc,lsoil/))
 
 1631     IF (
PRESENT(stcinc)) 
THEN 
 1632       IF (.NOT.
PRESENT(lsoil_incr)) 
THEN 
 1633         write(6,*)
'FATAL ERROR variable lsoil_incr not declared.' 
 1634         CALL mpi_abort(mpi_comm_world, 134, error)
 
 1636       DO k = 1, lsoil_incr
 
 1637         WRITE(k_ch, 
'(I1)') k
 
 1639         incvar = 
"soilt"//k_ch//
"_inc" 
 1640         print *, 
"reading", incvar
 
 1641         error=nf90_inq_varid(ncid,trim(incvar), id_var)
 
 1642         CALL netcdf_err(error, 
'READING soilt*_inc ID')
 
 1643         error=nf90_get_var(ncid, id_var, dummy)
 
 1644         CALL netcdf_err(error, 
'READING soilt*_inc increments') 
 
 1646         stcinc(:,k) = reshape(dummy, (/lensfc/))
 
 1649     IF (
PRESENT(slcinc)) 
THEN 
 1650       IF (.NOT.
PRESENT(lsoil_incr)) 
THEN 
 1651         write(6,*)
'FATAL ERROR variable lsoil_incr not declared.' 
 1652         CALL mpi_abort(mpi_comm_world, 136, error)
 
 1654       DO k = 1, lsoil_incr
 
 1655         WRITE(k_ch, 
'(I1)') k
 
 1657         incvar = 
"slc"//k_ch//
"_inc" 
 1658         print *, 
"reading", trim(incvar)
 
 1659         error=nf90_inq_varid(ncid, trim(incvar), id_var)
 
 1660         CALL netcdf_err(error, 
'READING slc*_inc ID')
 
 1661         error=nf90_get_var(ncid, id_var, dummy)
 
 1662         CALL netcdf_err(error, 
'READING slc*_inc increments') 
 
 1664         slcinc(:,k) = reshape(dummy, (/lensfc/))
 
 1674 IF (
PRESENT(cvfcs)) cvfcs = 0.0
 
 1675 IF (
PRESENT(cvtfcs)) cvtfcs = 0.0
 
 1676 IF (
PRESENT(cvbfcs)) cvbfcs = 0.0
 
 1681 IF (
PRESENT(zsoil)) 
THEN 
 1688 error = nf90_close(ncid)