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)