44 use vrbls4d, only: dust, salt, suso, soot, waso, smoke, fv3dust, coarsepm, &
46 use vrbls3d, only: t, q, uh, vh, pmid, pint, alpint, dpres, zint, zmid, o3, &
47 qqr, qqs, cwm, qqi, qqw, omga, rhomid, q2, cfr, rlwtt, rswtt, tcucn, &
48 tcucns, train, el_pbl, exch_h, vdifftt, vdiffmois, dconvmois, nradtt, &
49 o3vdiff, o3prod, o3tndy, mwpv, unknown, vdiffzacce, zgdrag,cnvctummixing, &
50 vdiffmacce, mgdrag, cnvctvmmixing, ncnvctcfrac, cnvctumflx, cnvctdmflx, &
51 cnvctzgdrag, sconvmois, cnvctmgdrag, cnvctdetmflx, duwt, duem, dusd, dudp, &
52 dusv,ssem,sssd,ssdp,sswt,sssv,bcem,bcsd,bcdp,bcwt,bcsv,ocem,ocsd,ocdp,ocwt,ocsv, &
53 wh, qqg, ref_10cm, qqnifa, qqnwfa, avgpmtf, avgozcon, aextc55, taod5503d, &
56 use vrbls2d, only: f, pd, fis, pblh, ustar, z0, ths, qs, twbs, qwbs, avgcprate, &
57 cprate, avgprec, prec, lspa, sno, sndepac, si, cldefi, th10, q10, tshltr, pshltr, &
58 tshltr, albase, avgalbedo, avgtcdc, czen, czmean, mxsnal, landfrac, radot, sigt4, &
59 cfrach, cfracl, cfracm, avgcfrach, qshltr, avgcfracl, avgcfracm, cnvcfr, &
60 islope, cmc, grnflx, vegfrc, acfrcv, ncfrcv, acfrst, ncfrst, ssroff, &
61 bgroff, rlwin, rlwtoa, cldwork, alwin, alwout, alwtoa, rswin, rswinc, &
62 rswout, aswin, auvbin, auvbinc, aswout, aswtoa, sfcshx, sfclhx, subshx, &
63 snopcx, sfcux, sfcvx, sfcuxi, sfcvxi, sfcuvx, gtaux, gtauy, potevp, u10, v10, smstav,&
64 smstot, ivgtyp, isltyp, sfcevp, sfcexc, acsnow, acsnom, sst, thz0, qz0, &
65 uz0, vz0, ptop, htop, pbot, hbot, ptopl, pbotl, ttopl, ptopm, pbotm, ttopm, &
66 ptoph, pboth, pblcfr, ttoph, runoff, tecan, tetran, tedir, twa, maxtshltr, &
67 mintshltr, maxrhshltr, fdnsst, acgraup, graup_bucket, acfrain, frzrn_bucket, &
68 snow_acm, snow_bkt, snownc, graupelnc, qrmax, &
69 minrhshltr, dzice, smcwlt, suntime, fieldcapa, htopd, hbotd, htops, hbots, &
70 cuppt, dusmass, ducmass, dusmass25, ducmass25, aswintoa,rel_vort_maxhy1, &
71 maxqshltr, minqshltr, acond, sr, u10h, v10h,refd_max, w_up_max, w_dn_max, &
72 up_heli_max,up_heli_min,up_heli_max03,up_heli_min03,rel_vort_max01,u10max, v10max, &
73 avgedir,avgecan,paha,pahi,avgetrans,avgesnow,avgprec_cont,avgcprate_cont,rel_vort_max, &
74 avisbeamswin,avisdiffswin,airbeamswin,airdiffswin,refdm10c_max,wspd10max, &
75 alwoutc,alwtoac,aswoutc,aswtoac,alwinc,aswinc,avgpotevp,snoavg, &
76 ti,aod550,du_aod550,ss_aod550,su_aod550,oc_aod550,bc_aod550,prate_max,maod,dustpm10, &
77 dustcb,bccb,occb,sulfcb,sscb,dustallcb,ssallcb,dustpm,sspm,pp25cb,pp10cb,no3cb,nh4cb,&
78 pwat, ebb, hwp, aqm_aod550, ltg1_max,ltg2_max,ltg3_max
79 use soil, only: sldpth, sllevel, sh2o, smc, stc
80 use masks, only: lmv, lmh, htm, vtm, gdlat, gdlon, dx, dy, hbm2, sm, sice
81 use physcons_post, only: grav => con_g, fv => con_fvirt, rgas => con_rd, &
82 eps => con_eps, epsm1 => con_epsm1
83 use params_mod, only: erad, dtr, tfrz, h1, d608, rd, p1000, capa,pi
84 use lookup_mod, only: thl, plq, ptbl, ttbl, rdq, rdth, rdp, rdthe, pl, qs0, sqs, sthe, &
85 ttblq, rdpq, rdtheq, stheq, the0q, the0
86 use ctlblk_mod, only: me, mpi_comm_comp, icnt, idsp, jsta, jend, ihrst, idat, sdat, ifhr, &
87 ifmin, filename, tprec, tclod, trdlw, trdsw, tsrfc, tmaxmin, td3d, restrt, sdat, &
88 jend_m, imin, imp_physics, dt, spval, pdtop, pt, qmin, nbin_du, nphs, dtq2, ardlw,&
89 ardsw, asrfc, avrain, avcnvc, theat, gdsdegr, spl, lsm, alsl, im, jm, im_jm, lm, &
90 jsta_2l, jend_2u, nsoil, lp1, icu_physics, ivegsrc, novegtype, nbin_ss, nbin_bc, &
91 nbin_oc, nbin_su, nbin_no3, nbin_nh4, gocart_on,gccpp_on, nasa_on,pt_tbl,hyb_sigp,&
92 filenameflux, filenameaer, &
93 isf_surface_physics,rdaod, d2d_chem, modelname, aqf_on, &
94 ista, iend, ista_2l, iend_2u,iend_m
95 use gridspec_mod
, only: maptype, gridtype, latstart, latlast, lonstart, lonlast, cenlon, &
96 dxval, dyval, truelat2, truelat1, psmapf, cenlat,lonstartv, lonlastv, cenlonv, &
97 latstartv, latlastv,cenlatv,latstart_r,latlast_r,lonstart_r,lonlast_r, standlon, &
98 latse,lonse,latnw,lonnw
104 integer,
parameter :: nvar2d=48
106 integer :: nvar3d, numdims
127 real,
parameter :: gravi = 1.0/grav
128 character(len=20) :: varname, vcoordname
129 integer :: status, fldsize, fldst, recn, recn_vvel
130 character startdate*19,sysdepinfo*80,cgar*1
131 character startdate2(19)*4, flatlon*40
132 logical :: read_lonlat=.true.
139 LOGICAL runb,singlrst,subpost,nest,hydro,ioomg,ioall
140 logical,
parameter :: debugprint = .false., zerout = .false.
142 logical :: convert_rad_to_deg=.false.
143 CHARACTER*32 varcharval
146 CHARACTER fname*255,envar*50
147 INTEGER idate(8),jdate(8),jpds(200),jgds(200),kpds(200),kgds(200)
163 integer ii,jj,js,je,iyear,imn,iday,itmp,ioutcount,istatus, &
164 i,j,l,ll,k,kf,irtn,igdout,n,index,nframe, &
165 nframed2,iunitd3d,ierr,idum,iret,nrec,idrt
166 integer ncid3d,ncid2d,varid,nhcas,varid_bl,iret_bl
167 real tstart,tlmh,tsph,es,fact,soilayert,soilayerb,zhour,dum, &
168 tvll,pmll,tv, tx1, tx2
170 character*20,
allocatable :: recname(:)
171 integer,
allocatable :: reclev(:), kmsk(:,:)
172 real,
allocatable :: glat1d(:), glon1d(:), qstl(:)
173 real,
allocatable :: wrk1(:,:), wrk2(:,:)
174 real,
allocatable :: p2d(:,:), t2d(:,:), q2d(:,:), &
175 qs2d(:,:), cw2d(:,:), cfr2d(:,:)
176 real,
dimension(lm+1) :: ak5, bk5
177 real*8,
allocatable :: pm2d(:,:), pi2d(:,:)
178 real,
allocatable :: tmp(:)
179 real :: buf(ista_2l:iend_2u,jsta_2l:jend_2u)
180 real :: buf2(ista_2l:iend_2u,jsta_2l:jend_2u)
181 real :: buf3d(ista_2l:iend_2u,jsta_2l:jend_2u,lm)
182 real :: chem_2d(ista_2l:iend_2u,jsta_2l:jend_2u)
183 real :: chemt(ista_2l:iend_2u,jsta_2l:jend_2u,lm)
184 real :: dt1(ista_2l:iend_2u,jsta_2l:jend_2u,lm)
185 real :: dt2(ista_2l:iend_2u,jsta_2l:jend_2u,lm)
186 real :: dt3(ista_2l:iend_2u,jsta_2l:jend_2u,lm)
187 real :: dt4(ista_2l:iend_2u,jsta_2l:jend_2u,lm)
188 real :: dt5(ista_2l:iend_2u,jsta_2l:jend_2u,lm)
194 integer isa, jsa, latghf, jtem, idvc, idsl, nvcoord, ip1, nn, npass
196 integer,
parameter :: npass2=5, npass3=30
197 real,
parameter :: third=1.0/3.0
198 INTEGER,
DIMENSION(2) :: ij4min, ij4max
199 REAL :: omgmin, omgmax
200 real,
allocatable :: d2d(:,:), u2d(:,:), v2d(:,:), omga2d(:,:)
201 REAL,
ALLOCATABLE :: ps2d(:,:),psx2d(:,:),psy2d(:,:)
202 real,
allocatable :: div3d(:,:,:)
203 real(kind=4),
allocatable :: vcrd(:,:)
205 real,
allocatable :: ext550(:,:,:)
207 if (modelname ==
'FV3R')
then
208 allocate(ext550(ista_2l:iend_2u,jsta_2l:jend_2u,lm))
214 WRITE(6,*)
'INITPOST: ENTER INITPOST_NETCDF'
215 WRITE(6,*)
'me=',me, &
216 'jsta_2l=',jsta_2l,
'jend_2u=', &
218 'ista_2l=',ista_2l,
'iend_2u=',iend_2u, &
219 'ista=',ista,
'iend=',iend, &
222 isa = (ista+iend) / 2
223 jsa = (jsta+jend) / 2
226 do j = jsta_2l, jend_2u
227 do i= ista_2l, iend_2u
232 status=nf90_get_att(ncid3d,nf90_global,
'ak',ak5)
234 print*,
'ak not found; assigning missing value'
237 if(me==0)print*,
'ak5= ',ak5
239 status=nf90_get_att(ncid3d,nf90_global,
'idrt',idrt)
241 print*,
'idrt not in netcdf file,reading grid'
242 status=nf90_get_att(ncid3d,nf90_global,
'grid',varcharval)
244 print*,
'idrt and grid not in netcdf file, set default to latlon'
248 if(trim(varcharval)==
'rotated_latlon')
then
251 status=nf90_get_att(ncid3d,nf90_global,
'cen_lon',dum_const)
253 print*,
'cen_lon not found; assigning missing value'
257 cenlon=nint((dum_const+360.)*gdsdegr)
259 cenlon=dum_const*gdsdegr
262 status=nf90_get_att(ncid3d,nf90_global,
'cen_lat',dum_const)
264 print*,
'cen_lat not found; assigning missing value'
267 cenlat=dum_const*gdsdegr
270 status=nf90_get_att(ncid3d,nf90_global,
'lon1',dum_const)
272 print*,
'lonstart_r not found; assigning missing value'
276 lonstart_r=nint((dum_const+360.)*gdsdegr)
278 lonstart_r=dum_const*gdsdegr
281 status=nf90_get_att(ncid3d,nf90_global,
'lat1',dum_const)
283 print*,
'latstart_r not found; assigning missing value'
286 latstart_r=dum_const*gdsdegr
289 status=nf90_get_att(ncid3d,nf90_global,
'lon2',dum_const)
291 print*,
'lonlast_r not found; assigning missing value'
295 lonlast_r=nint((dum_const+360.)*gdsdegr)
297 lonlast_r=dum_const*gdsdegr
300 status=nf90_get_att(ncid3d,nf90_global,
'lat2',dum_const)
302 print*,
'latlast_r not found; assigning missing value'
305 latlast_r=dum_const*gdsdegr
308 status=nf90_get_att(ncid3d,nf90_global,
'dlon',dum_const)
310 print*,
'dlmd not found; assigning missing value'
313 dxval=dum_const*gdsdegr
315 status=nf90_get_att(ncid3d,nf90_global,
'dlat',dum_const)
317 print*,
'dphd not found; assigning missing value'
320 dyval=dum_const*gdsdegr
327 else if(trim(varcharval)==
'latlon')
then
331 status=nf90_get_att(ncid3d,nf90_global,
'lon1',dum_const)
333 print*,
'lonstart not found; assigning missing value'
337 lonstart=nint((dum_const+360.)*gdsdegr)
339 lonstart=dum_const*gdsdegr
342 status=nf90_get_att(ncid3d,nf90_global,
'lat1',dum_const)
344 print*,
'latstart not found; assigning missing value'
347 latstart=dum_const*gdsdegr
350 status=nf90_get_att(ncid3d,nf90_global,
'lon2',dum_const)
352 print*,
'lonlast not found; assigning missing value'
356 lonlast=nint((dum_const+360.)*gdsdegr)
358 lonlast=dum_const*gdsdegr
361 status=nf90_get_att(ncid3d,nf90_global,
'lat2',dum_const)
363 print*,
'latlast not found; assigning missing value'
366 latlast=dum_const*gdsdegr
369 status=nf90_get_att(ncid3d,nf90_global,
'dlon',dum_const)
371 print*,
'dlmd not found; assigning missing value'
374 dxval=dum_const*gdsdegr
376 status=nf90_get_att(ncid3d,nf90_global,
'dlat',dum_const)
378 print*,
'dphd not found; assigning missing value'
381 dyval=dum_const*gdsdegr
384 print*,
'lonstart,latstart,dyval,dxval', &
385 lonstart,lonlast,latstart,latlast,dyval,dxval
389 ELSE IF (trim(varcharval)==
'lambert_conformal')
then
393 status=nf90_get_att(ncid3d,nf90_global,
'cen_lon',dum_const)
395 print*,
'cen_lon not found; assigning missing value'
399 cenlon=nint((dum_const+360.)*gdsdegr)
401 cenlon=dum_const*gdsdegr
404 status=nf90_get_att(ncid3d,nf90_global,
'cen_lat',dum_const)
406 print*,
'cen_lat not found; assigning missing value'
409 cenlat=dum_const*gdsdegr
412 status=nf90_get_att(ncid3d,nf90_global,
'lon1',dum_const)
414 print*,
'lonstart not found; assigning missing value'
418 lonstart=nint((dum_const+360.)*gdsdegr)
420 lonstart=dum_const*gdsdegr
423 status=nf90_get_att(ncid3d,nf90_global,
'lat1',dum_const)
425 print*,
'latstart not found; assigning missing value'
428 latstart=dum_const*gdsdegr
431 status=nf90_get_att(ncid3d,nf90_global,
'stdlat1',dum_const)
433 print*,
'stdlat1 not found; assigning missing value'
436 truelat1=dum_const*gdsdegr
438 status=nf90_get_att(ncid3d,nf90_global,
'stdlat2',dum_const)
440 print*,
'stdlat2 not found; assigning missing value'
443 truelat2=dum_const*gdsdegr
446 status=nf90_get_att(ncid3d,nf90_global,
'dx',dum_const)
448 print*,
'dx not found; assigning missing value'
453 status=nf90_get_att(ncid3d,nf90_global,
'dy',dum_const)
455 print*,
'dphd not found; assigning missing value'
462 print*,
'lonstart,latstart,cenlon,cenlat,truelat1,truelat2, &
463 stadlon,dyval,dxval', &
464 lonstart,latstart,cenlon,cenlat,truelat1,truelat2,standlon,dyval,dxval
466 else if(trim(varcharval)==
'gaussian')
then
475 if(me==0)print*,
'idrt MAPTYPE= ',idrt,maptype
484 do j = jsta_2l, jend_2u
485 do i = ista_2l, iend_2u
495 do j = jsta_2l, jend_2u
496 do i = ista_2l, iend_2u
503 status=nf90_get_att(ncid3d,nf90_global,
'nhcas',nhcas)
505 print*,
'nhcas not in netcdf file, set default to nonhydro'
508 if(me==0)print*,
'nhcas= ',nhcas
509 if (nhcas == 0 )
then
511 allocate (recname(nrec))
512 recname=[
character(len=20) ::
'ugrd',
'vgrd',
'spfh',
'tmp',
'o3mr', &
513 'presnh',
'dzdt',
'clwmr',
'dpres', &
514 'delz',
'icmr',
'rwmr', &
515 'snmr',
'grle',
'smoke',
'dust', &
519 allocate (recname(nrec))
520 recname=[
character(len=20) ::
'ugrd',
'vgrd',
'tmp',
'spfh',
'o3mr', &
521 'hypres',
'clwmr',
'dpres']
526 allocate(glat1d(jm),glon1d(im))
531 status=nf90_inq_varid(ncid3d,
'time',varid)
533 print*,
'time not in netcdf file, stopping'
536 status=nf90_get_att(ncid3d,varid,
'units',varcharval)
538 print*,
'time unit not available'
540 print*,
'time unit read from netcdf file= ',varcharval
543 read(varcharval,101)idate(1),idate(2),idate(3),idate(4),idate(5)
555 101
format(t13,i4,1x,i2,1x,i2,1x,i2,1x,i2)
556 print*,
'idate= ',idate(1:5)
559 status=nf90_inq_varid(ncid3d,
'grid_xt',varid)
560 status=nf90_inquire_variable(ncid3d,varid,ndims = numdims)
561 if(numdims==1.and.modelname==
"FV3R")
then
570 if (read_lonlat)
then
571 status=nf90_inq_varid(ncid3d,
'lon',varid)
572 status=nf90_inquire_variable(ncid3d,varid,ndims = numdims)
573 if(debugprint)print*,
'number of dim for gdlon ',numdims
575 status=nf90_inq_varid(ncid3d,
'grid_xt',varid)
576 status=nf90_inquire_variable(ncid3d,varid,ndims = numdims)
577 if(debugprint)print*,
'number of dim for gdlon ',numdims
580 status=nf90_get_var(ncid3d,varid,glon1d)
583 gdlon(i,j) =
real(glon1d(i),kind=4)
586 lonstart = nint(glon1d(1)*gdsdegr)
587 lonlast = nint(glon1d(im)*gdsdegr)
590 if (maptype == 0)
then
592 lonstart=lonstart+360.*gdsdegr
595 lonlast=lonlast+360.*gdsdegr
600 else if(numdims==2)
then
601 status=nf90_get_var(ncid3d,varid,dummy)
602 if(maxval(abs(dummy))<2.0*pi)convert_rad_to_deg=.true.
603 if(convert_rad_to_deg)
then
606 gdlon(i,j) =
real(dummy(i,j),kind=4)*180./pi
612 gdlon(i,j) =
real(dummy(i,j),kind=4)
616 if(convert_rad_to_deg)
then
617 lonstart = nint(dummy(1,1)*gdsdegr)*180./pi
618 lonlast = nint(dummy(im,jm)*gdsdegr)*180./pi
619 lonse = nint(dummy(im,1)*gdsdegr)*180./pi
620 lonnw = nint(dummy(1,jm)*gdsdegr)*180./pi
622 lonstart = nint(dummy(1,1)*gdsdegr)
623 lonlast = nint(dummy(im,jm)*gdsdegr)
624 lonse = nint(dummy(im,1)*gdsdegr)
625 lonnw = nint(dummy(1,jm)*gdsdegr)
629 if (maptype == 0)
then
631 lonstart=lonstart+360.*gdsdegr
634 lonlast=lonlast+360.*gdsdegr
640 print*,
'lonstart,lonlast ',lonstart,lonlast
643 if (read_lonlat)
then
644 status=nf90_inq_varid(ncid3d,
'lat',varid)
645 status=nf90_inquire_variable(ncid3d,varid,ndims = numdims)
646 if(debugprint)print*,
'number of dim for gdlat ',numdims
648 status=nf90_inq_varid(ncid3d,
'grid_yt',varid)
649 status=nf90_inquire_variable(ncid3d,varid,ndims = numdims)
650 if(debugprint)print*,
'number of dim for gdlat ',numdims
653 status=nf90_get_var(ncid3d,varid,glat1d)
656 gdlat(i,j) =
real(glat1d(j),kind=4)
659 latstart = nint(glat1d(1)*gdsdegr)
660 latlast = nint(glat1d(jm)*gdsdegr)
661 else if(numdims==2)
then
662 status=nf90_get_var(ncid3d,varid,dummy)
663 if(maxval(abs(dummy))<pi)convert_rad_to_deg=.true.
664 if(convert_rad_to_deg)
then
667 gdlat(i,j) =
real(dummy(i,j),kind=4)*180./pi
673 gdlat(i,j) =
real(dummy(i,j),kind=4)
677 if(convert_rad_to_deg)
then
678 latstart = nint(dummy(1,1)*gdsdegr)*180./pi
679 latlast = nint(dummy(im,jm)*gdsdegr)*180./pi
680 latse = nint(dummy(im,1)*gdsdegr)*180./pi
681 latnw = nint(dummy(1,jm)*gdsdegr)*180./pi
683 latstart = nint(dummy(1,1)*gdsdegr)
684 latlast = nint(dummy(im,jm)*gdsdegr)
685 latse = nint(dummy(im,1)*gdsdegr)
686 latnw = nint(dummy(1,jm)*gdsdegr)
689 print*,
'laststart,latlast = ',latstart,latlast
690 if(debugprint)print*,
'me sample gdlon gdlat= ' &
691 ,me,gdlon(isa,jsa),gdlat(isa,jsa)
696 if (me == 0) print *,
'maptype and gridtype is ', &
699 if(gridtype ==
'A')
then
711 print *,
'recname=',trim(recname(i))
717 deallocate(glat1d,glon1d)
719 print*,
'idate = ',(idate(i),i=1,7)
726 print *,me,
'max(gdlat)=', maxval(gdlat), &
727 'max(gdlon)=', maxval(gdlon)
728 CALL exch(gdlat(ista_2l,jsta_2l))
729 CALL exch(gdlon(ista_2l,jsta_2l))
730 print *,
'after call EXCH,me=',me
738 dx(i,j) = erad*dxval*dtr/gdsdegr
740 dx(i,j) = erad*cos(gdlat(i,j)*dtr) *(gdlon(ip1,j)-gdlon(i,j))*dtr
743 dy(i,j)= erad*dyval*dtr/gdsdegr
745 dy(i,j) = erad*(gdlat(i,j+1)-gdlat(i,j))*dtr
752 if(debugprint)print*,
'me sample dx dy= ' &
753 ,me,dx(isa,jsa),dy(isa,jsa)
757 f(i,j) = 1.454441e-4*sin(gdlat(i,j)*dtr)
769 print*,
'start yr mo day hr min =',iyear,imn,iday,ihrst,imin
770 print*,
'processing yr mo day hr min=' &
771 ,idat(3),idat(1),idat(2),idat(4),idat(5)
787 print *,
' idate=',idate
788 print *,
' jdate=',jdate
790 CALL w3difdat(jdate,idate,0,rinc)
792 print *,
' rinc=',rinc
793 ifhr = nint(rinc(2)+rinc(1)*24.)
794 print *,
' ifhr=',ifhr
795 ifmin = nint(rinc(3))
797 print*,
' in INITPOST ifhr ifmin fileName=',ifhr,ifmin,filename
801 print*,
'tstart= ',tstart
807 IF(tstart > 1.0e-2)
THEN
808 ifhr = ifhr+nint(tstart)
812 call w3movdat(rinc,jdate,idate)
817 print*,
'new forecast hours for restrt run= ',ifhr
818 print*,
'new start yr mo day hr min =',sdat(3),sdat(1) &
829 call read_netcdf_3d_para(ncid3d,im,jm,ista,ista_2l,iend,iend_2u,jsta,jsta_2l,jend,jend_2u, &
830 spval,recname(1),uh(ista_2l,jsta_2l,1),lm)
831 call read_netcdf_3d_para(ncid3d,im,jm,ista,ista_2l,iend,iend_2u,jsta,jsta_2l,jend,jend_2u, &
832 spval,recname(2),vh(ista_2l,jsta_2l,1),lm)
833 call read_netcdf_3d_para(ncid3d,im,jm,ista,ista_2l,iend,iend_2u,jsta,jsta_2l,jend,jend_2u, &
834 spval,recname(3),q(ista_2l,jsta_2l,1),lm)
835 call read_netcdf_3d_para(ncid3d,im,jm,ista,ista_2l,iend,iend_2u,jsta,jsta_2l,jend,jend_2u, &
836 spval,recname(4),t(ista_2l,jsta_2l,1),lm)
837 call read_netcdf_3d_para(ncid3d,im,jm,ista,ista_2l,iend,iend_2u,jsta,jsta_2l,jend,jend_2u, &
838 spval,recname(5),o3(ista_2l,jsta_2l,1),lm)
839 call read_netcdf_3d_para(ncid3d,im,jm,ista,ista_2l,iend,iend_2u,jsta,jsta_2l,jend,jend_2u, &
840 spval,recname(7),wh(ista_2l,jsta_2l,1),lm)
841 call read_netcdf_3d_para(ncid3d,im,jm,ista,ista_2l,iend,iend_2u,jsta,jsta_2l,jend,jend_2u, &
842 spval,recname(8),qqw(ista_2l,jsta_2l,1),lm)
843 call read_netcdf_3d_para(ncid3d,im,jm,ista,ista_2l,iend,iend_2u,jsta,jsta_2l,jend,jend_2u, &
844 spval,recname(9),dpres(ista_2l,jsta_2l,1),lm)
845 call read_netcdf_3d_para(ncid3d,im,jm,ista,ista_2l,iend,iend_2u,jsta,jsta_2l,jend,jend_2u, &
846 spval,recname(10),buf3d(ista_2l,jsta_2l,1),lm)
852 if (wh(i,j,l) < spval)
then
853 omga(i,j,l)=(-1.)*wh(i,j,l)*dpres(i,j,l)/abs(buf3d(i,j,l))
861 call read_netcdf_3d_para(ncid3d,im,jm,ista,ista_2l,iend,iend_2u,jsta,jsta_2l,jend,jend_2u, &
862 spval,recname(11),qqi(ista_2l,jsta_2l,1),lm)
863 call read_netcdf_3d_para(ncid3d,im,jm,ista,ista_2l,iend,iend_2u,jsta,jsta_2l,jend,jend_2u, &
864 spval,recname(12),qqr(ista_2l,jsta_2l,1),lm)
865 call read_netcdf_3d_para(ncid3d,im,jm,ista,ista_2l,iend,iend_2u,jsta,jsta_2l,jend,jend_2u, &
866 spval,recname(13),qqs(ista_2l,jsta_2l,1),lm)
867 call read_netcdf_3d_para(ncid3d,im,jm,ista,ista_2l,iend,iend_2u,jsta,jsta_2l,jend,jend_2u, &
868 spval,recname(14),qqg(ista_2l,jsta_2l,1),lm)
870 if (modelname ==
'FV3R')
then
871 call read_netcdf_3d_para(ncid3d,im,jm,ista,ista_2l,iend,iend_2u,jsta,jsta_2l,jend,jend_2u, &
872 spval,recname(15),smoke(ista_2l,jsta_2l,1,1),lm)
873 call read_netcdf_3d_para(ncid3d,im,jm,ista,ista_2l,iend,iend_2u,jsta,jsta_2l,jend,jend_2u, &
874 spval,recname(16),fv3dust(ista_2l,jsta_2l,1,1),lm)
875 call read_netcdf_3d_para(ncid3d,im,jm,ista,ista_2l,iend,iend_2u,jsta,jsta_2l,jend,jend_2u, &
876 spval,recname(17),coarsepm(ista_2l,jsta_2l,1,1),lm)
877 call read_netcdf_3d_para(ncid2d,im,jm,ista,ista_2l,iend,iend_2u,jsta,jsta_2l,jend,jend_2u, &
878 spval,recname(18),ext550(ista_2l,jsta_2l,1),lm)
882 do j = jsta_2l, jend_2u
892 qrmax(i,j)=max(qrmax(i,j),qqr(i,j,l))
893 cwm(i,j,l)=qqg(i,j,l)+qqs(i,j,l)+qqr(i,j,l)+qqi(i,j,l)+qqw(i,j,l)
896 if(debugprint)print*,
'sample l,t,q,u,v,w= ',isa,jsa,l &
897 ,t(isa,jsa,l),q(isa,jsa,l),uh(isa,jsa,l),vh(isa,jsa,l) &
899 if(debugprint)print*,
'sample l cwm for FV3',l, &
904 if ( imp_physics==11)
then
906 call read_netcdf_3d_para(ncid3d,im,jm,ista,ista_2l,iend,iend_2u,jsta,jsta_2l,jend,jend_2u, &
907 spval,varname,cfr(ista_2l,jsta_2l,1),lm)
910 iret_bl = nf90_inq_varid(ncid2d,
'cldfra_bl',varid_bl)
911 iret = nf90_inq_varid(ncid2d,
'cldfra',varid)
913 if(iret_bl==nf90_noerr .and. iret==nf90_noerr)
then
914 write(*,*)
'WARNING: BOTH cldfra_bl AND cldfra ARE AVAILABLE. USING cldfra.'
916 else if(iret_bl==nf90_noerr)
then
918 else if(iret==nf90_noerr)
then
924 if(varname /=
'nope')
then
925 call read_netcdf_3d_para(ncid2d,im,jm,ista,ista_2l,iend,iend_2u,jsta,jsta_2l,jend,jend_2u, &
926 spval,varname,cfr(ista_2l,jsta_2l,1),lm)
936 call read_netcdf_3d_para(ncid2d,im,jm,ista,ista_2l,iend,iend_2u,jsta,jsta_2l,jend,jend_2u, &
937 spval,varname,effri(ista_2l,jsta_2l,1),lm)
941 call read_netcdf_3d_para(ncid2d,im,jm,ista,ista_2l,iend,iend_2u,jsta,jsta_2l,jend,jend_2u, &
942 spval,varname,effrl(ista_2l,jsta_2l,1),lm)
946 call read_netcdf_3d_para(ncid2d,im,jm,ista,ista_2l,iend,iend_2u,jsta,jsta_2l,jend,jend_2u, &
947 spval,varname,effrs(ista_2l,jsta_2l,1),lm)
962 call read_netcdf_3d_para(ncid3d,im,jm,ista,ista_2l,iend,iend_2u,jsta,jsta_2l,jend,jend_2u, &
963 spval,varname,avgozcon(ista_2l,jsta_2l,1),lm)
966 call read_netcdf_3d_para(ncid3d,im,jm,ista,ista_2l,iend,iend_2u,jsta,jsta_2l,jend,jend_2u, &
967 spval,varname,avgpmtf(ista_2l,jsta_2l,1),lm)
970 call read_netcdf_2d_para(ncid2d,ista,ista_2l,iend,iend_2u,jsta,jsta_2l,jend,jend_2u, &
971 spval,varname,aqm_aod550(ista_2l,jsta_2l))
977 if (modelname ==
'FV3R')
then
980 call read_netcdf_2d_para(ncid3d,ista,ista_2l,iend,iend_2u,jsta,jsta_2l,jend,jend_2u, &
981 spval,varname,w_up_max(ista_2l,jsta_2l))
982 if(debugprint)print*,
'sample ',varname,
' = ',w_up_max(isa,jsa)
985 call read_netcdf_2d_para(ncid3d,ista,ista_2l,iend,iend_2u,jsta,jsta_2l,jend,jend_2u, &
986 spval,varname,w_dn_max(ista_2l,jsta_2l))
987 if(debugprint)print*,
'sample ',varname,
' = ',w_dn_max(isa,jsa)
990 call read_netcdf_2d_para(ncid3d,ista,ista_2l,iend,iend_2u,jsta,jsta_2l,jend,jend_2u, &
991 spval,varname,up_heli_max(ista_2l,jsta_2l))
992 if(debugprint)print*,
'sample ',varname,
' = ',up_heli_max(isa,jsa)
995 call read_netcdf_2d_para(ncid3d,ista,ista_2l,iend,iend_2u,jsta,jsta_2l,jend,jend_2u, &
996 spval,varname,up_heli_min(ista_2l,jsta_2l))
997 if(debugprint)print*,
'sample ',varname,
' = ',up_heli_min(isa,jsa)
1000 call read_netcdf_2d_para(ncid3d,ista,ista_2l,iend,iend_2u,jsta,jsta_2l,jend,jend_2u, &
1001 spval,varname,up_heli_max03(ista_2l,jsta_2l))
1002 if(debugprint)print*,
'sample ',varname,
' = ',up_heli_max03(isa,jsa)
1005 call read_netcdf_2d_para(ncid3d,ista,ista_2l,iend,iend_2u,jsta,jsta_2l,jend,jend_2u, &
1006 spval,varname,up_heli_min03(ista_2l,jsta_2l))
1007 if(debugprint)print*,
'sample ',varname,
' = ',up_heli_min03(isa,jsa)
1011 call read_netcdf_2d_para(ncid3d,ista,ista_2l,iend,iend_2u,jsta,jsta_2l,jend,jend_2u, &
1012 spval,varname,rel_vort_max01(ista_2l,jsta_2l))
1013 if(debugprint)print*,
'sample ',varname,
' = ',rel_vort_max01(isa,jsa)
1016 call read_netcdf_2d_para(ncid3d,ista,ista_2l,iend,iend_2u,jsta,jsta_2l,jend,jend_2u, &
1017 spval,varname,rel_vort_max(ista_2l,jsta_2l))
1018 if(debugprint)print*,
'sample ',varname,
' =',rel_vort_max(isa,jsa)
1020 varname=
'maxvorthy1'
1021 call read_netcdf_2d_para(ncid3d,ista,ista_2l,iend,iend_2u,jsta,jsta_2l,jend,jend_2u, &
1022 spval,varname,rel_vort_maxhy1(ista_2l,jsta_2l))
1023 if(debugprint)print*,
'sample ',varname,
' =',rel_vort_maxhy1(isa,jsa)
1025 varname=
'ebb_smoke_hr'
1026 call read_netcdf_2d_para(ncid2d,ista,ista_2l,iend,iend_2u,jsta,jsta_2l,jend,jend_2u, &
1027 spval,varname,ebb(ista_2l,jsta_2l))
1028 if(debugprint)print*,
'sample ',varname,
' =',ebb(isa,jsa)
1031 call read_netcdf_2d_para(ncid2d,ista,ista_2l,iend,iend_2u,jsta,jsta_2l,jend,jend_2u, &
1032 spval,varname,hwp(ista_2l,jsta_2l))
1033 if(debugprint)print*,
'sample ',varname,
' =',hwp(isa,jsa)
1038 call read_netcdf_2d_para(ncid2d,ista,ista_2l,iend,iend_2u,jsta,jsta_2l,jend,jend_2u, &
1039 spval,varname,ltg1_max(ista_2l,jsta_2l))
1040 if(debugprint)print*,
'sample ',varname,
' =',ltg1_max(isa,jsa)
1044 call read_netcdf_2d_para(ncid2d,ista,ista_2l,iend,iend_2u,jsta,jsta_2l,jend,jend_2u, &
1045 spval,varname,ltg2_max(ista_2l,jsta_2l))
1046 if(debugprint)print*,
'sample ',varname,
' =',ltg2_max(isa,jsa)
1050 call read_netcdf_2d_para(ncid2d,ista,ista_2l,iend,iend_2u,jsta,jsta_2l,jend,jend_2u, &
1051 spval,varname,ltg3_max(ista_2l,jsta_2l))
1052 if(debugprint)print*,
'sample ',varname,
' =',ltg3_max(isa,jsa)
1056 call read_netcdf_2d_para(ncid3d,ista,ista_2l,iend,iend_2u,jsta,jsta_2l,jend,jend_2u, &
1057 spval,varname,pint(ista_2l,jsta_2l,lp1))
1064 if(debugprint)print*,
'sample ',varname,
' =',pint(isa,jsa,lp1)
1077 if (dpres(i,j,l-1)<spval .and. pint(i,j,l-1)<spval)
then
1078 pint(i,j,l)= pint(i,j,l-1) + dpres(i,j,l-1)
1092 if (pint(i,j,l)<spval .and. pint(i,j,l+1)<spval)
then
1093 pmid(i,j,l)=0.5*(pint(i,j,l)+pint(i,j,l+1))
1105 call read_netcdf_2d_para(ncid3d,ista,ista_2l,iend,iend_2u,jsta,jsta_2l,jend,jend_2u, &
1106 spval,varname,zint(ista_2l,jsta_2l,lp1))
1107 if(debugprint)print*,
'sample ',varname,
' =',zint(isa,jsa,lp1)
1110 if (zint(i,j,lp1) /= spval)
then
1111 fis(i,j) = zint(i,j,lp1) * grav
1121 if(zint(i,j,l+1)/=spval .and. buf3d(i,j,l)/=spval)
then
1123 zint(i,j,l)=zint(i,j,l+1)+abs(buf3d(i,j,l))
1130 if(debugprint)print*,
'sample zint= ',isa,jsa,l,zint(isa,jsa,l)
1136 alpint(i,j,l)=log(pint(i,j,l))
1144 if(zint(i,j,l+1)/=spval .and. zint(i,j,l)/=spval &
1145 .and. pmid(i,j,l)/=spval)
then
1146 zmid(i,j,l)=zint(i,j,l+1)+(zint(i,j,l)-zint(i,j,l+1))* &
1147 (log(pmid(i,j,l))-alpint(i,j,l+1))/ &
1148 (alpint(i,j,l)-alpint(i,j,l+1))
1149 if(zmid(i,j,l)>1.0e6)print*,
'bad Hmid ',i,j,l,zmid(i,j,l)
1158 print *,
'gocart_on=',gocart_on
1159 print *,
'gccpp_on=',gccpp_on
1160 print *,
'nasa_on=',nasa_on
1161 if (gocart_on .or.gccpp_on .or. nasa_on)
then
1169 call read_netcdf_3d_para(ncid3d,im,jm,ista,ista_2l,iend,iend_2u,jsta,jsta_2l,jend,jend_2u,&
1170 spval,varname,dt1(ista_2l,jsta_2l,1),lm)
1172 call read_netcdf_3d_para(ncid3d,im,jm,ista,ista_2l,iend,iend_2u,jsta,jsta_2l,jend,jend_2u,&
1173 spval,varname,dt2(ista_2l,jsta_2l,1),lm)
1175 call read_netcdf_3d_para(ncid3d,im,jm,ista,ista_2l,iend,iend_2u,jsta,jsta_2l,jend,jend_2u,&
1176 spval,varname,dt3(ista_2l,jsta_2l,1),lm)
1178 call read_netcdf_3d_para(ncid3d,im,jm,ista,ista_2l,iend,iend_2u,jsta,jsta_2l,jend,jend_2u,&
1179 spval,varname,dt4(ista_2l,jsta_2l,1),lm)
1181 call read_netcdf_3d_para(ncid3d,im,jm,ista,ista_2l,iend,iend_2u,jsta,jsta_2l,jend,jend_2u,&
1182 spval,varname,dt5(ista_2l,jsta_2l,1),lm)
1190 dust(i,j,l,1)=dt1(i,j,l)
1191 dust(i,j,l,2)=dt2(i,j,l)
1192 dust(i,j,l,3)=dt3(i,j,l)
1193 dust(i,j,l,4)=dt4(i,j,l)
1194 dust(i,j,l,5)=dt5(i,j,l)
1197 dustcb(i,j)=dustcb(i,j)+&
1198 (dust(i,j,l,1)+0.38*dust(i,j,l,2))* &
1202 dustallcb(i,j)=dustallcb(i,j)+ &
1203 (dust(i,j,l,1)+dust(i,j,l,2)+ &
1204 dust(i,j,l,3)+0.74*dust(i,j,l,4))* &
1216 call read_netcdf_3d_para(ncid3d,im,jm,ista,ista_2l,iend,iend_2u,jsta,jsta_2l,jend,jend_2u,&
1217 spval,varname,dt1(ista_2l,jsta_2l,1),lm)
1220 call read_netcdf_3d_para(ncid3d,im,jm,ista,ista_2l,iend,iend_2u,jsta,jsta_2l,jend,jend_2u,&
1221 spval,varname,dt2(ista_2l,jsta_2l,1),lm)
1224 call read_netcdf_3d_para(ncid3d,im,jm,ista,ista_2l,iend,iend_2u,jsta,jsta_2l,jend,jend_2u,&
1225 spval,varname,dt3(ista_2l,jsta_2l,1),lm)
1228 call read_netcdf_3d_para(ncid3d,im,jm,ista,ista_2l,iend,iend_2u,jsta,jsta_2l,jend,jend_2u,&
1229 spval,varname,dt4(ista_2l,jsta_2l,1),lm)
1232 call read_netcdf_3d_para(ncid3d,im,jm,ista,ista_2l,iend,iend_2u,jsta,jsta_2l,jend,jend_2u,&
1233 spval,varname,dt5(ista_2l,jsta_2l,1),lm)
1241 salt(i,j,l,1)=dt1(i,j,l)
1242 salt(i,j,l,2)=dt2(i,j,l)
1243 salt(i,j,l,3)=dt3(i,j,l)
1244 salt(i,j,l,4)=dt4(i,j,l)
1245 salt(i,j,l,5)=dt5(i,j,l)
1247 sscb(i,j)=sscb(i,j)+ &
1248 (salt(i,j,l,1)+salt(i,j,l,2)+0.83*salt(i,j,l,3))* &
1252 ssallcb(i,j)=ssallcb(i,j)+ &
1253 (salt(i,j,l,1)+salt(i,j,l,2)+salt(i,j,l,3)+salt(i,j,l,4))* &
1263 call read_netcdf_3d_para(ncid3d,im,jm,ista,ista_2l,iend,iend_2u,jsta,jsta_2l,jend,jend_2u,&
1264 spval,varname,dt1(ista_2l,jsta_2l,1),lm)
1267 call read_netcdf_3d_para(ncid3d,im,jm,ista,ista_2l,iend,iend_2u,jsta,jsta_2l,jend,jend_2u,&
1268 spval,varname,dt2(ista_2l,jsta_2l,1),lm)
1275 soot(i,j,l,1)=dt1(i,j,l)
1276 soot(i,j,l,2)=dt2(i,j,l)
1278 bccb(i,j)=bccb(i,j)+ &
1279 (soot(i,j,l,1)+soot(i,j,l,2))* &
1289 call read_netcdf_3d_para(ncid3d,im,jm,ista,ista_2l,iend,iend_2u,jsta,jsta_2l,jend,jend_2u,&
1290 spval,varname,dt1(ista_2l,jsta_2l,1),lm)
1293 call read_netcdf_3d_para(ncid3d,im,jm,ista,ista_2l,iend,iend_2u,jsta,jsta_2l,jend,jend_2u,&
1294 spval,varname,dt2(ista_2l,jsta_2l,1),lm)
1299 waso(i,j,l,1)=dt1(i,j,l)
1300 waso(i,j,l,2)=dt2(i,j,l)
1302 occb(i,j)=occb(i,j)+ &
1303 (waso(i,j,l,1)+waso(i,j,l,2))* &
1313 if (gocart_on .or. gccpp_on)
then
1320 call read_netcdf_3d_para(ncid3d,im,jm,ista,ista_2l,iend,iend_2u,jsta,jsta_2l,jend,jend_2u,&
1321 spval,varname,dt1(ista_2l,jsta_2l,1),lm)
1327 suso(i,j,l,1)=dt1(i,j,l)
1329 sulfcb(i,j)=sulfcb(i,j)+ &
1340 call read_netcdf_3d_para(ncid3d,im,jm,ista,ista_2l,iend,iend_2u,jsta,jsta_2l,jend,jend_2u,&
1341 spval,varname,dt1(ista_2l,jsta_2l,1),lm)
1344 call read_netcdf_3d_para(ncid3d,im,jm,ista,ista_2l,iend,iend_2u,jsta,jsta_2l,jend,jend_2u,&
1345 spval,varname,dt2(ista_2l,jsta_2l,1),lm)
1348 call read_netcdf_3d_para(ncid3d,im,jm,ista,ista_2l,iend,iend_2u,jsta,jsta_2l,jend,jend_2u,&
1349 spval,varname,dt3(ista_2l,jsta_2l,1),lm)
1355 no3(i,j,l,1)=dt1(i,j,l)
1356 no3(i,j,l,2)=dt2(i,j,l)
1357 no3(i,j,l,3)=dt3(i,j,l)
1359 no3cb(i,j)=no3cb(i,j)+ &
1360 (no3(i,j,l,1)+no3(i,j,l,2)+no3(i,j,l,3))* &
1369 call read_netcdf_3d_para(ncid3d,im,jm,ista,ista_2l,iend,iend_2u,jsta,jsta_2l,jend,jend_2u,&
1370 spval,varname,dt1(ista_2l,jsta_2l,1),lm)
1376 nh4(i,j,l,1)=dt1(i,j,l)
1378 nh4cb(i,j)=nh4cb(i,j)+ &
1391 if (gocart_on .or. gccpp_on)
then
1398 call read_netcdf_3d_para(ncid3d,im,jm,ista,ista_2l,iend,iend_2u,jsta,jsta_2l,jend,jend_2u,&
1399 spval,varname,dt1(ista_2l,jsta_2l,1),lm)
1404 if (gocart_on .or. gccpp_on)
then
1412 call read_netcdf_3d_para(ncid3d,im,jm,ista,ista_2l,iend,iend_2u,jsta,jsta_2l,jend,jend_2u,&
1413 spval,varname,dt2(ista_2l,jsta_2l,1),lm)
1419 pp25(i,j,l,1)=dt1(i,j,l)
1420 pp10(i,j,l,1)=dt2(i,j,l)
1423 pp25cb(i,j)=pp25cb(i,j)+ &
1424 pp25(i,j,l,1)* dpres(i,j,l)/grav
1426 pp10cb(i,j)=pp10cb(i,j)+ &
1427 pp10(i,j,l,1)* dpres(i,j,l)/grav
1437 tv = t(i,j,l) * (h1+d608*max(q(i,j,l),qmin))
1438 rhomid(i,j,l) = pmid(i,j,l) / (rd*tv)
1440 IF ( dust(i,j,l,n) < spval)
THEN
1441 dust(i,j,l,n) = max(dust(i,j,l,n), 0.0)
1445 IF ( salt(i,j,l,n) < spval)
THEN
1446 salt(i,j,l,n) = max(salt(i,j,l,n), 0.0)
1450 IF ( waso(i,j,l,n) < spval)
THEN
1451 waso(i,j,l,n) = max(waso(i,j,l,n), 0.0)
1455 IF ( soot(i,j,l,n) < spval)
THEN
1456 soot(i,j,l,n) = max(soot(i,j,l,n), 0.0)
1460 IF ( suso(i,j,l,n) < spval)
THEN
1461 suso(i,j,l,n) = max(suso(i,j,l,n), 0.0)
1466 IF ( no3(i,j,l,n) < spval)
THEN
1467 no3(i,j,l,n) = max(no3(i,j,l,n), 0.0)
1471 IF ( nh4(i,j,l,n) < spval)
THEN
1472 nh4(i,j,l,n) = max(nh4(i,j,l,n), 0.0)
1483 dustcb(i,j) = max(dustcb(i,j), 0.0)
1484 dustallcb(i,j) = max(dustallcb(i,j), 0.0)
1485 sscb(i,j) = max(sscb(i,j), 0.0)
1486 ssallcb(i,j) = max(ssallcb(i,j), 0.0)
1487 bccb(i,j) = max(bccb(i,j), 0.0)
1488 occb(i,j) = max(occb(i,j), 0.0)
1489 sulfcb(i,j) = max(sulfcb(i,j), 0.0)
1491 no3cb(i,j) = max(no3cb(i,j), 0.0)
1492 nh4cb(i,j) = max(nh4cb(i,j), 0.0)
1494 pp25cb(i,j) = max(pp25cb(i,j), 0.0)
1495 pp10cb(i,j) = max(pp10cb(i,j), 0.0)
1498 dustpm(i,j)=(dust(i,j,l,1)+0.38*dust(i,j,l,2))*rhomid(i,j,l)
1499 dustpm10(i,j)=(dust(i,j,l,1)+dust(i,j,l,2)+dust(i,j,l,3)+ &
1500 0.74*dust(i,j,l,4))*rhomid(i,j,l)
1501 sspm(i,j)=(salt(i,j,l,1)+salt(i,j,l,2)+ &
1502 0.83*salt(i,j,l,3))*rhomid(i,j,l)
1504 if (gocart_on .or. gccpp_on)
then
1506 dusmass(i,j)=(dust(i,j,l,1)+dust(i,j,l,2)+dust(i,j,l,3)+ &
1507 0.74*dust(i,j,l,4)+salt(i,j,l,1)+salt(i,j,l,2)+salt(i,j,l,3)+ &
1508 salt(i,j,l,4) + soot(i,j,l,1)+soot(i,j,l,2)+waso(i,j,l,1)+ &
1509 waso(i,j,l,2) +suso(i,j,l,1)+pp25(i,j,l,1)+pp10(i,j,l,1)) &
1512 dusmass25(i,j)=(dust(i,j,l,1)+0.38*dust(i,j,l,2)+ &
1513 salt(i,j,l,1)+salt(i,j,l,2)+0.83*salt(i,j,l,3) + &
1514 soot(i,j,l,1)+soot(i,j,l,2)+waso(i,j,l,1)+ &
1515 waso(i,j,l,2) +suso(i,j,l,1)+pp25(i,j,l,1))*rhomid(i,j,l)
1518 ducmass(i,j)=dustallcb(i,j)+ssallcb(i,j)+bccb(i,j)+ &
1519 occb(i,j)+sulfcb(i,j)+pp25cb(i,j)+pp10cb(i,j)
1521 ducmass25(i,j)=dustcb(i,j)+sscb(i,j)+bccb(i,j)+occb(i,j) &
1522 +sulfcb(i,j)+pp25cb(i,j)
1527 dusmass(i,j)=pp10(i,j,l,1)*rhomid(i,j,l)
1529 dusmass25(i,j)=pp25(i,j,l,1)*rhomid(i,j,l)
1532 ducmass(i,j)=pp10cb(i,j)
1534 ducmass25(i,j)=pp25cb(i,j)
1553 status=nf90_close(ncid3d)
1558 status=nf90_get_att(ncid2d,nf90_global,
'IVEGSRC',ivegsrc)
1559 if (status /= 0)
then
1560 print*,varname,
' not found-Assigned 1 for IGBP as default'
1563 if (me == 0) print*,
'IVEGSRC= ',ivegsrc
1568 else if(ivegsrc==1)
then
1570 else if(ivegsrc==0)
then
1573 if (me == 0) print*,
'novegtype= ',novegtype
1575 status=nf90_get_att(ncid2d,nf90_global,
'fhzero',fhzero)
1576 if (status /= 0)
then
1577 print*,
'fhzero not found-Assigned 3 hours as default'
1580 if (me == 0) print*,
'fhzero= ',fhzero
1582 status=nf90_get_att(ncid2d,nf90_global,
'dtp',dtp)
1583 if (status /= 0)
then
1584 print*,
'dtp not found-Assigned 90s as default'
1587 if (me == 0) print*,
'dtp= ',dtp
1589 if(imp_physics==5 .or. imp_physics==85 .or. imp_physics==95)
then
1590 CALL microinit(imp_physics)
1593 tprec = float(fhzero)
1594 if(ifhr>240)tprec=12.
1601 print*,
'tprec = ',tprec
1605 call read_netcdf_3d_para(ncid2d,im,jm,ista,ista_2l,iend,iend_2u,jsta,jsta_2l,jend,jend_2u, &
1606 spval,varname,ref_10cm(ista_2l,jsta_2l,1),lm)
1614 call read_netcdf_3d_para(ncid2d,im,jm,ista,ista_2l,iend,iend_2u,jsta,jsta_2l,jend,jend_2u, &
1615 spval,varname,q2(ista_2l,jsta_2l,1),lm)
1619 q2(i,j,l)=q2(i,j,l)/2.0
1626 call read_netcdf_3d_para(ncid2d,im,jm,ista,ista_2l,iend,iend_2u,jsta,jsta_2l,jend,jend_2u, &
1627 spval,varname,qqnifa(ista_2l,jsta_2l,1),lm)
1631 call read_netcdf_3d_para(ncid2d,im,jm,ista,ista_2l,iend,iend_2u,jsta,jsta_2l,jend,jend_2u, &
1632 spval,varname,qqnwfa(ista_2l,jsta_2l,1),lm)
1635 call read_netcdf_2d_para(ncid2d,ista,ista_2l,iend,iend_2u,jsta,jsta_2l,jend,jend_2u, &
1637 if(debugprint)print*,
'sample ',varname,
' =',sm((ista+iend)/2,(jsta+jend)/2)
1642 if (sm(i,j) /= spval) sm(i,j) = 1.0 - sm(i,j)
1649 call read_netcdf_2d_para(ncid2d,ista,ista_2l,iend,iend_2u,jsta,jsta_2l,jend,jend_2u, &
1651 if(debugprint)print*,
'sample ',varname,
' = ',sice(isa,jsa)
1664 if (sm(i,j) /= spval .and. sm(i,j) == 0.0) sice(i,j) = 0.0
1671 call read_netcdf_2d_para(ncid2d,ista,ista_2l,iend,iend_2u,jsta,jsta_2l,jend,jend_2u, &
1673 if(debugprint)print*,
'sample ',varname,
' = ',pblh(isa,jsa)
1677 call read_netcdf_2d_para(ncid2d,ista,ista_2l,iend,iend_2u,jsta,jsta_2l,jend,jend_2u, &
1678 spval,varname,ustar)
1683 call read_netcdf_2d_para(ncid2d,ista,ista_2l,iend,iend_2u,jsta,jsta_2l,jend,jend_2u, &
1689 call read_netcdf_2d_para(ncid2d,ista,ista_2l,iend,iend_2u,jsta,jsta_2l,jend,jend_2u, &
1690 spval,varname,sfcexc)
1694 call read_netcdf_2d_para(ncid2d,ista,ista_2l,iend,iend_2u,jsta,jsta_2l,jend,jend_2u, &
1695 spval,varname,snow_acm)
1698 call read_netcdf_2d_para(ncid2d,ista,ista_2l,iend,iend_2u,jsta,jsta_2l,jend,jend_2u, &
1699 spval,varname,snow_bkt)
1703 call read_netcdf_2d_para(ncid2d,ista,ista_2l,iend,iend_2u,jsta,jsta_2l,jend,jend_2u, &
1704 spval,varname,acgraup)
1708 call read_netcdf_2d_para(ncid2d,ista,ista_2l,iend,iend_2u,jsta,jsta_2l,jend,jend_2u, &
1709 spval,varname,graup_bucket)
1713 call read_netcdf_2d_para(ncid2d,ista,ista_2l,iend,iend_2u,jsta,jsta_2l,jend,jend_2u, &
1714 spval,varname,acfrain)
1718 call read_netcdf_2d_para(ncid2d,ista,ista_2l,iend,iend_2u,jsta,jsta_2l,jend,jend_2u, &
1719 spval,varname,frzrn_bucket)
1723 call read_netcdf_2d_para(ncid2d,ista,ista_2l,iend,iend_2u,jsta,jsta_2l,jend,jend_2u, &
1724 spval,varname,snownc)
1728 call read_netcdf_2d_para(ncid2d,ista,ista_2l,iend,iend_2u,jsta,jsta_2l,jend,jend_2u, &
1729 spval,varname,graupelnc)
1733 call read_netcdf_2d_para(ncid2d,ista,ista_2l,iend,iend_2u,jsta,jsta_2l,jend,jend_2u, &
1734 spval,varname,acond)
1735 if(debugprint)print*,
'sample ',varname,
' = ',acond(isa,jsa)
1738 call read_netcdf_2d_para(ncid2d,ista,ista_2l,iend,iend_2u,jsta,jsta_2l,jend,jend_2u, &
1739 spval,varname,avgalbedo)
1743 if (avgalbedo(i,j) /= spval) avgalbedo(i,j) = avgalbedo(i,j) * 0.01
1746 if(debugprint)print*,
'sample ',varname,
' = ',avgalbedo(isa,jsa)
1750 call read_netcdf_2d_para(ncid2d,ista,ista_2l,iend,iend_2u,jsta,jsta_2l,jend,jend_2u, &
1758 if (ths(i,j) /= spval)
then
1760 ths(i,j) = ths(i,j) * (p1000/pint(i,j,lp1))**capa
1766 if (sm(i,j) /= 0.0 .and. ths(i,j) < spval )
then
1767 if (sice(i,j) >= 0.15)
then
1770 sst(i,j) = ths(i,j) * (pint(i,j,lp1)/p1000)**capa
1777 if(debugprint)print*,
'sample ',varname,
' = ',ths(isa,jsa)
1781 call read_netcdf_2d_para(ncid2d,ista,ista_2l,iend,iend_2u,jsta,jsta_2l,jend,jend_2u, &
1782 spval,varname,fdnsst)
1783 if(debugprint)print*,
'sample ',varname,
' = ',fdnsst(isa,jsa)
1798 varname=
'cpratb_ave'
1799 call read_netcdf_2d_para(ncid2d,ista,ista_2l,iend,iend_2u,jsta,jsta_2l,jend,jend_2u, &
1800 spval,varname,avgcprate)
1805 if (avgcprate(i,j) /= spval) avgcprate(i,j) = avgcprate(i,j) * (dtq2*0.001)
1814 call read_netcdf_2d_para(ncid2d,ista,ista_2l,iend,iend_2u,jsta,jsta_2l,jend,jend_2u, &
1815 spval,varname,avgcprate_cont)
1819 if (avgcprate_cont(i,j) /= spval) avgcprate_cont(i,j) = &
1820 avgcprate_cont(i,j) * (dtq2*0.001)
1828 varname=
'prateb_ave'
1829 call read_netcdf_2d_para(ncid2d,ista,ista_2l,iend,iend_2u,jsta,jsta_2l,jend,jend_2u, &
1830 spval,varname,avgprec)
1834 if(avgprec(i,j) /= spval)avgprec(i,j)=avgprec(i,j)*(dtq2*0.001)
1838 if(debugprint)print*,
'sample ',varname,
' = ',avgprec(isa,jsa)
1843 call read_netcdf_2d_para(ncid2d,ista,ista_2l,iend,iend_2u,jsta,jsta_2l,jend,jend_2u, &
1844 spval,varname,avgprec_cont)
1849 if (avgprec_cont(i,j) /=spval)avgprec_cont(i,j)=avgprec_cont(i,j) &
1854 if(debugprint)print*,
'sample ',varname,
' = ',avgprec_cont(isa,jsa)
1857 call read_netcdf_2d_para(ncid2d,ista,ista_2l,iend,iend_2u,jsta,jsta_2l,jend,jend_2u, &
1862 if (prec(i,j) /= spval) prec(i,j)=prec(i,j)* (dtq2*0.001) &
1869 call read_netcdf_2d_para(ncid2d,ista,ista_2l,iend,iend_2u,jsta,jsta_2l,jend,jend_2u, &
1870 spval,varname,cprate)
1874 if (cprate(i,j) /= spval)
then
1875 cprate(i,j) = max(0.,cprate(i,j)) * (dtq2*0.001) &
1887 call read_netcdf_2d_para(ncid2d,ista,ista_2l,iend,iend_2u,jsta,jsta_2l,jend,jend_2u, &
1888 spval,varname,prate_max)
1889 if(debugprint)print*,
'sample ',varname,
' = ',prate_max(isa,jsa)
1892 call read_netcdf_2d_para(ncid2d,ista,ista_2l,iend,iend_2u,jsta,jsta_2l,jend,jend_2u, &
1893 spval,varname,refd_max)
1894 if(debugprint)print*,
'sample ',varname,
' = ',refd_max(isa,jsa)
1896 varname=
'refdmax263k'
1897 call read_netcdf_2d_para(ncid2d,ista,ista_2l,iend,iend_2u,jsta,jsta_2l,jend,jend_2u, &
1898 spval,varname,refdm10c_max)
1899 if(debugprint)print*,
'sample ',varname,
' = ',refdm10c_max(isa,jsa)
1903 call read_netcdf_2d_para(ncid2d,ista,ista_2l,iend,iend_2u,jsta,jsta_2l,jend,jend_2u, &
1904 spval,varname,u10max)
1905 if(debugprint)print*,
'sample ',varname,
' = ',u10max(isa,jsa)
1908 call read_netcdf_2d_para(ncid2d,ista,ista_2l,iend,iend_2u,jsta,jsta_2l,jend,jend_2u, &
1909 spval,varname,v10max)
1910 if(debugprint)print*,
'sample ',varname,
' = ',v10max(isa,jsa)
1913 call read_netcdf_2d_para(ncid2d,ista,ista_2l,iend,iend_2u,jsta,jsta_2l,jend,jend_2u, &
1914 spval,varname,wspd10max)
1915 if(debugprint)print*,
'sample ',varname,
' = ',wspd10max(isa,jsa)
1919 call read_netcdf_2d_para(ncid2d,ista,ista_2l,iend,iend_2u,jsta,jsta_2l,jend,jend_2u, &
1925 if (sm(i,j) == 1.0 .and. sice(i,j)==0.) sno(i,j) = spval
1928 if(debugprint)print*,
'sample ',varname,
' = ',sno(isa,jsa)
1932 call read_netcdf_2d_para(ncid2d,ista,ista_2l,iend,iend_2u,jsta,jsta_2l,jend,jend_2u, &
1933 spval,varname,snoavg)
1937 if (sm(i,j)==1.0 .and. sice(i,j)==0.) snoavg(i,j)=spval
1938 if(snoavg(i,j)/=spval)snoavg(i,j)=snoavg(i,j)/100.
1944 call read_netcdf_2d_para(ncid2d,ista,ista_2l,iend,iend_2u,jsta,jsta_2l,jend,jend_2u, &
1949 if (sm(i,j)==1.0 .and. sice(i,j)==0.) si(i,j)=spval
1950 if (si(i,j) /= spval) si(i,j) = si(i,j) * 1000.0
1959 if(debugprint)print*,
'sample ',varname,
' = ',si(isa,jsa)
1963 call read_netcdf_2d_para(ncid2d,ista,ista_2l,iend,iend_2u,jsta,jsta_2l,jend,jend_2u, &
1964 spval,varname,tshltr)
1965 if(debugprint)print*,
'sample ',varname,
' = ',tshltr(isa,jsa)
1970 pshltr(i,j)=pint(i,j,lm+1)*exp(-0.068283/tshltr(i,j))
1971 tshltr(i,j)= tshltr(i,j)*(p1000/pshltr(i,j))**capa
1980 call read_netcdf_2d_para(ncid2d,ista,ista_2l,iend,iend_2u,jsta,jsta_2l,jend,jend_2u, &
1981 spval,varname,qshltr)
1982 if(debugprint)print*,
'sample ',varname,
' = ',qshltr(isa,jsa)
1985 varname=
'tcdc_aveclm'
1986 call read_netcdf_2d_para(ncid2d,ista,ista_2l,iend,iend_2u,jsta,jsta_2l,jend,jend_2u, &
1987 spval,varname,avgtcdc)
1992 if (avgtcdc(i,j) /= spval) avgtcdc(i,j) = avgtcdc(i,j) * 0.01
1995 if(debugprint)print*,
'sample ',varname,
' = ',avgtcdc(isa,jsa)
1999 do j=jsta_2l,jend_2u
2000 do i=ista_2l,iend_2u
2008 call read_netcdf_2d_para(ncid2d,ista,ista_2l,iend,iend_2u,jsta,jsta_2l,jend,jend_2u, &
2009 spval,varname,mxsnal)
2013 call read_netcdf_2d_para(ncid2d,ista,ista_2l,iend,iend_2u,jsta,jsta_2l,jend,jend_2u, &
2014 spval,varname,landfrac)
2020 tlmh = t(i,j,lm) * t(i,j,lm)
2021 sigt4(i,j) = 5.67e-8 * tlmh * tlmh
2029 do j=jsta_2l,jend_2u
2030 do i=ista_2l,iend_2u
2038 varname=
'tcdc_avehcl'
2039 call read_netcdf_2d_para(ncid2d,ista,ista_2l,iend,iend_2u,jsta,jsta_2l,jend,jend_2u, &
2040 spval,varname,avgcfrach)
2045 if (avgcfrach(i,j) /= spval) avgcfrach(i,j) = avgcfrach(i,j) * 0.01
2048 if(debugprint)print*,
'sample ',varname,
' = ',avgcfrach(isa,jsa)
2051 varname=
'tcdc_avelcl'
2052 call read_netcdf_2d_para(ncid2d,ista,ista_2l,iend,iend_2u,jsta,jsta_2l,jend,jend_2u, &
2053 spval,varname,avgcfracl)
2058 if (avgcfracl(i,j) /= spval) avgcfracl(i,j) = avgcfracl(i,j) * 0.01
2061 if(debugprint)print*,
'sample ',varname,
' = ',avgcfracl(isa,jsa)
2064 varname=
'tcdc_avemcl'
2065 call read_netcdf_2d_para(ncid2d,ista,ista_2l,iend,iend_2u,jsta,jsta_2l,jend,jend_2u, &
2066 spval,varname,avgcfracm)
2071 if (avgcfracm(i,j) /= spval) avgcfracm(i,j) = avgcfracm(i,j) * 0.01
2074 if(debugprint)print*,
'sample ',varname,
' = ',avgcfracm(isa,jsa)
2078 call read_netcdf_2d_para(ncid2d,ista,ista_2l,iend,iend_2u,jsta,jsta_2l,jend,jend_2u, &
2079 spval,varname,cnvcfr)
2084 if (cnvcfr(i,j) /= spval) cnvcfr(i,j)= cnvcfr(i,j) * 0.01
2091 call read_netcdf_2d_para(ncid2d,ista,ista_2l,iend,iend_2u,jsta,jsta_2l,jend,jend_2u, &
2094 do j = jsta_2l, jend_2u
2096 if (buf(i,j) < spval)
then
2097 islope(i,j) = nint(buf(i,j))
2107 call read_netcdf_2d_para(ncid2d,ista,ista_2l,iend,iend_2u,jsta,jsta_2l,jend,jend_2u, &
2112 if (cmc(i,j) /= spval) cmc(i,j) = cmc(i,j) * 0.001
2113 if (sm(i,j) /= 0.0) cmc(i,j) = spval
2119 do j=jsta_2l,jend_2u
2120 do i=ista_2l,iend_2u
2127 call read_netcdf_2d_para(ncid2d,ista,ista_2l,iend,iend_2u,jsta,jsta_2l,jend,jend_2u, &
2132 if(sr(i,j) /= spval)
then
2134 sr(i,j)=min(1.,max(0.,sr(i,j)))
2141 call read_netcdf_2d_para(ncid2d,ista,ista_2l,iend,iend_2u,jsta,jsta_2l,jend,jend_2u, &
2146 if (sice(i,j) == spval .or. sice(i,j) == 0.) ti(i,j)=spval
2152 call read_netcdf_2d_para(ncid2d,ista,ista_2l,iend,iend_2u,jsta,jsta_2l,jend,jend_2u, &
2153 spval,varname,vegfrc)
2157 if (vegfrc(i,j) /= spval)
then
2158 vegfrc(i,j) = vegfrc(i,j) * 0.01
2168 if (sm(i,j) /= 0.0) vegfrc(i,j) = spval
2198 call read_netcdf_2d_para(ncid2d,ista,ista_2l,iend,iend_2u,jsta,jsta_2l,jend,jend_2u, &
2199 spval,varname,sh2o(ista_2l,jsta_2l,1))
2204 if (sm(i,j) /= 0.0) sh2o(i,j,1) = spval
2207 if(debugprint)print*,
'sample l',varname,
' = ',1,sh2o(isa,jsa,1)
2210 call read_netcdf_2d_para(ncid2d,ista,ista_2l,iend,iend_2u,jsta,jsta_2l,jend,jend_2u, &
2211 spval,varname,sh2o(ista_2l,jsta_2l,2))
2216 if (sm(i,j) /= 0.0) sh2o(i,j,2) = spval
2219 if(debugprint)print*,
'sample l',varname,
' = ',1,sh2o(isa,jsa,2)
2222 call read_netcdf_2d_para(ncid2d,ista,ista_2l,iend,iend_2u,jsta,jsta_2l,jend,jend_2u, &
2223 spval,varname,sh2o(ista_2l,jsta_2l,3))
2228 if (sm(i,j) /= 0.0) sh2o(i,j,3) = spval
2231 if(debugprint)print*,
'sample l',varname,
' = ',1,sh2o(isa,jsa,3)
2234 call read_netcdf_2d_para(ncid2d,ista,ista_2l,iend,iend_2u,jsta,jsta_2l,jend,jend_2u, &
2235 spval,varname,sh2o(ista_2l,jsta_2l,4))
2240 if (sm(i,j) /= 0.0) sh2o(i,j,4) = spval
2243 if(debugprint)print*,
'sample l',varname,
' = ',1,sh2o(isa,jsa,4)
2247 call read_netcdf_2d_para(ncid2d,ista,ista_2l,iend,iend_2u,jsta,jsta_2l,jend,jend_2u, &
2248 spval,varname,smc(ista_2l,jsta_2l,1))
2253 if (sm(i,j) /= 0.0) smc(i,j,1) = spval
2256 if(debugprint)print*,
'sample l',varname,
' = ',1,smc(isa,jsa,1)
2259 call read_netcdf_2d_para(ncid2d,ista,ista_2l,iend,iend_2u,jsta,jsta_2l,jend,jend_2u, &
2260 spval,varname,smc(ista_2l,jsta_2l,2))
2265 if (sm(i,j) /= 0.0) smc(i,j,2) = spval
2268 if(debugprint)print*,
'sample l',varname,
' = ',1,smc(isa,jsa,2)
2271 call read_netcdf_2d_para(ncid2d,ista,ista_2l,iend,iend_2u,jsta,jsta_2l,jend,jend_2u, &
2272 spval,varname,smc(ista_2l,jsta_2l,3))
2277 if (sm(i,j) /= 0.0) smc(i,j,3) = spval
2280 if(debugprint)print*,
'sample l',varname,
' = ',1,smc(isa,jsa,3)
2283 call read_netcdf_2d_para(ncid2d,ista,ista_2l,iend,iend_2u,jsta,jsta_2l,jend,jend_2u, &
2284 spval,varname,smc(ista_2l,jsta_2l,4))
2289 if (sm(i,j) /= 0.0) smc(i,j,4) = spval
2292 if(debugprint)print*,
'sample l',varname,
' = ',1,smc(isa,jsa,4)
2297 call read_netcdf_2d_para(ncid2d,ista,ista_2l,iend,iend_2u,jsta,jsta_2l,jend,jend_2u, &
2298 spval,varname,smc(ista_2l,jsta_2l,5))
2303 if (sm(i,j) /= 0.0) smc(i,j,5) = spval
2306 if(debugprint)print*,
'sample l',varname,
' = ',1,smc(isa,jsa,5)
2309 call read_netcdf_2d_para(ncid2d,ista,ista_2l,iend,iend_2u,jsta,jsta_2l,jend,jend_2u, &
2310 spval,varname,smc(ista_2l,jsta_2l,6))
2315 if (sm(i,j) /= 0.0) smc(i,j,6) = spval
2318 if(debugprint)print*,
'sample l',varname,
' = ',1,smc(isa,jsa,6)
2321 call read_netcdf_2d_para(ncid2d,ista,ista_2l,iend,iend_2u,jsta,jsta_2l,jend,jend_2u, &
2322 spval,varname,smc(ista_2l,jsta_2l,7))
2327 if (sm(i,j) /= 0.0) smc(i,j,7) = spval
2330 if(debugprint)print*,
'sample l',varname,
' = ',1,smc(isa,jsa,7)
2333 call read_netcdf_2d_para(ncid2d,ista,ista_2l,iend,iend_2u,jsta,jsta_2l,jend,jend_2u, &
2334 spval,varname,smc(ista_2l,jsta_2l,8))
2339 if (sm(i,j) /= 0.0) smc(i,j,8) = spval
2342 if(debugprint)print*,
'sample l',varname,
' = ',1,smc(isa,jsa,8)
2345 call read_netcdf_2d_para(ncid2d,ista,ista_2l,iend,iend_2u,jsta,jsta_2l,jend,jend_2u, &
2346 spval,varname,smc(ista_2l,jsta_2l,9))
2351 if (sm(i,j) /= 0.0) smc(i,j,9) = spval
2354 if(debugprint)print*,
'sample l',varname,
' = ',1,smc(isa,jsa,9)
2360 call read_netcdf_2d_para(ncid2d,ista,ista_2l,iend,iend_2u,jsta,jsta_2l,jend,jend_2u, &
2361 spval,varname,stc(ista_2l,jsta_2l,1))
2366 if (sm(i,j) == 1.0 .and. sice(i,j) ==0.) stc(i,j,1) = spval
2370 if(debugprint)print*,
'sample l',
'stc',
' = ',1,stc(isa,jsa,1)
2373 call read_netcdf_2d_para(ncid2d,ista,ista_2l,iend,iend_2u,jsta,jsta_2l,jend,jend_2u, &
2374 spval,varname,stc(ista_2l,jsta_2l,2))
2379 if (sm(i,j) == 1.0 .and. sice(i,j) ==0.) stc(i,j,2) = spval
2383 if(debugprint)print*,
'sample stc = ',1,stc(isa,jsa,2)
2386 call read_netcdf_2d_para(ncid2d,ista,ista_2l,iend,iend_2u,jsta,jsta_2l,jend,jend_2u, &
2387 spval,varname,stc(ista_2l,jsta_2l,3))
2392 if (sm(i,j) == 1.0 .and. sice(i,j) ==0.) stc(i,j,3) = spval
2396 if(debugprint)print*,
'sample stc = ',1,stc(isa,jsa,3)
2399 call read_netcdf_2d_para(ncid2d,ista,ista_2l,iend,iend_2u,jsta,jsta_2l,jend,jend_2u, &
2400 spval,varname,stc(ista_2l,jsta_2l,4))
2405 if (sm(i,j) == 1.0 .and. sice(i,j) ==0.) stc(i,j,4) = spval
2409 if(debugprint)print*,
'sample stc = ',1,stc(isa,jsa,4)
2414 call read_netcdf_2d_para(ncid2d,ista,ista_2l,iend,iend_2u,jsta,jsta_2l,jend,jend_2u, &
2415 spval,varname,stc(ista_2l,jsta_2l,5))
2420 if (sm(i,j) == 1.0 .and. sice(i,j) ==0.) stc(i,j,5) = spval
2424 if(debugprint)print*,
'sample stc = ',1,stc(isa,jsa,5)
2427 call read_netcdf_2d_para(ncid2d,ista,ista_2l,iend,iend_2u,jsta,jsta_2l,jend,jend_2u, &
2428 spval,varname,stc(ista_2l,jsta_2l,6))
2433 if (sm(i,j) == 1.0 .and. sice(i,j) ==0.) stc(i,j,6) = spval
2437 if(debugprint)print*,
'sample stc = ',1,stc(isa,jsa,6)
2440 call read_netcdf_2d_para(ncid2d,ista,ista_2l,iend,iend_2u,jsta,jsta_2l,jend,jend_2u, &
2441 spval,varname,stc(ista_2l,jsta_2l,7))
2446 if (sm(i,j) == 1.0 .and. sice(i,j) ==0.) stc(i,j,7) = spval
2450 if(debugprint)print*,
'sample stc = ',1,stc(isa,jsa,7)
2453 call read_netcdf_2d_para(ncid2d,ista,ista_2l,iend,iend_2u,jsta,jsta_2l,jend,jend_2u, &
2454 spval,varname,stc(ista_2l,jsta_2l,8))
2459 if (sm(i,j) == 1.0 .and. sice(i,j) ==0.) stc(i,j,8) = spval
2463 if(debugprint)print*,
'sample stc = ',1,stc(isa,jsa,8)
2466 call read_netcdf_2d_para(ncid2d,ista,ista_2l,iend,iend_2u,jsta,jsta_2l,jend,jend_2u, &
2467 spval,varname,stc(ista_2l,jsta_2l,9))
2472 if (sm(i,j) == 1.0 .and. sice(i,j) ==0.) stc(i,j,9) = spval
2476 if(debugprint)print*,
'sample stc = ',1,stc(isa,jsa,9)
2483 if (modelname ==
'FV3R')
then
2485 do j = jsta_2l, jend_2u
2486 do i = ista_2l, iend_2u
2487 if(ext550(i,j,l)<spval)
then
2488 taod5503d( i, j, l) = ext550( i, j, l )
2489 dz = zint( i, j, l ) - zint( i, j, l+1 )
2490 aextc55( i, j, l ) = taod5503d( i, j, l ) / dz
2492 if(debugprint.and.i==im/2.and.j==(jsta+jend)/2)print*,
'sample taod5503d= ', &
2493 i,j,l,taod5503d( i, j, l )
2494 if(debugprint.and.i==im/2.and.j==(jsta+jend)/2)print*,
'sample dz= ', &
2496 if(debugprint.and.i==im/2.and.j==(jsta+jend)/2)print*,
'sample AEXTC55= ', &
2497 i,j,l,aextc55( i, j, l )
2519 call read_netcdf_2d_para(ncid2d,ista,ista_2l,iend,iend_2u,jsta,jsta_2l,jend,jend_2u, &
2520 spval,varname,alwin)
2524 call read_netcdf_2d_para(ncid2d,ista,ista_2l,iend,iend_2u,jsta,jsta_2l,jend,jend_2u, &
2525 spval,varname,rlwin)
2529 call read_netcdf_2d_para(ncid2d,ista,ista_2l,iend,iend_2u,jsta,jsta_2l,jend,jend_2u, &
2530 spval,varname,alwout)
2534 call read_netcdf_2d_para(ncid2d,ista,ista_2l,iend,iend_2u,jsta,jsta_2l,jend,jend_2u, &
2535 spval,varname,radot)
2541 if (alwout(i,j) /= spval) alwout(i,j) = -alwout(i,j)
2547 varname=
'ulwrf_avetoa'
2548 call read_netcdf_2d_para(ncid2d,ista,ista_2l,iend,iend_2u,jsta,jsta_2l,jend,jend_2u, &
2549 spval,varname,alwtoa)
2554 call read_netcdf_2d_para(ncid2d,ista,ista_2l,iend,iend_2u,jsta,jsta_2l,jend,jend_2u, &
2555 spval,varname,rlwtoa)
2564 call read_netcdf_2d_para(ncid2d,ista,ista_2l,iend,iend_2u,jsta,jsta_2l,jend,jend_2u, &
2565 spval,varname,aswin)
2570 call read_netcdf_2d_para(ncid2d,ista,ista_2l,iend,iend_2u,jsta,jsta_2l,jend,jend_2u, &
2571 spval,varname,rswin)
2576 do j=jsta_2l,jend_2u
2577 do i=ista_2l,iend_2u
2584 call read_netcdf_2d_para(ncid2d,ista,ista_2l,iend,iend_2u,jsta,jsta_2l,jend,jend_2u, &
2585 spval,varname,auvbin)
2590 call read_netcdf_2d_para(ncid2d,ista,ista_2l,iend,iend_2u,jsta,jsta_2l,jend,jend_2u, &
2591 spval,varname,auvbinc)
2596 call read_netcdf_2d_para(ncid2d,ista,ista_2l,iend,iend_2u,jsta,jsta_2l,jend,jend_2u, &
2597 spval,varname,aswout)
2602 if (aswout(i,j) /= spval) aswout(i,j) = -aswout(i,j)
2609 call read_netcdf_2d_para(ncid2d,ista,ista_2l,iend,iend_2u,jsta,jsta_2l,jend,jend_2u, &
2610 spval,varname,rswout)
2613 varname=
'dswrf_avetoa'
2614 call read_netcdf_2d_para(ncid2d,ista,ista_2l,iend,iend_2u,jsta,jsta_2l,jend,jend_2u, &
2615 spval,varname,aswintoa)
2619 varname=
'uswrf_avetoa'
2620 call read_netcdf_2d_para(ncid2d,ista,ista_2l,iend,iend_2u,jsta,jsta_2l,jend,jend_2u, &
2621 spval,varname,aswtoa)
2627 call read_netcdf_2d_para(ncid2d,ista,ista_2l,iend,iend_2u,jsta,jsta_2l,jend,jend_2u, &
2628 spval,varname,sfcshx)
2633 if (sfcshx(i,j) /= spval) sfcshx(i,j) = -sfcshx(i,j)
2640 call read_netcdf_2d_para(ncid2d,ista,ista_2l,iend,iend_2u,jsta,jsta_2l,jend,jend_2u, &
2645 if (twbs(i,j) /= spval) twbs(i,j) = -twbs(i,j)
2656 call read_netcdf_2d_para(ncid2d,ista,ista_2l,iend,iend_2u,jsta,jsta_2l,jend,jend_2u, &
2657 spval,varname,sfclhx)
2662 if (sfclhx(i,j) /= spval) sfclhx(i,j) = -sfclhx(i,j)
2669 call read_netcdf_2d_para(ncid2d,ista,ista_2l,iend,iend_2u,jsta,jsta_2l,jend,jend_2u, &
2674 if (qwbs(i,j) /= spval) qwbs(i,j) = -qwbs(i,j)
2678 if(me==0)print*,
'rdaod= ',rdaod
2682 call read_netcdf_2d_para(ncid2d,ista,ista_2l,iend,iend_2u,jsta,jsta_2l,jend,jend_2u, &
2683 spval,varname,aod550)
2686 call read_netcdf_2d_para(ncid2d,ista,ista_2l,iend,iend_2u,jsta,jsta_2l,jend,jend_2u, &
2687 spval,varname,du_aod550)
2690 call read_netcdf_2d_para(ncid2d,ista,ista_2l,iend,iend_2u,jsta,jsta_2l,jend,jend_2u, &
2691 spval,varname,ss_aod550)
2694 call read_netcdf_2d_para(ncid2d,ista,ista_2l,iend,iend_2u,jsta,jsta_2l,jend,jend_2u, &
2695 spval,varname,su_aod550)
2698 call read_netcdf_2d_para(ncid2d,ista,ista_2l,iend,iend_2u,jsta,jsta_2l,jend,jend_2u, &
2699 spval,varname,oc_aod550)
2702 call read_netcdf_2d_para(ncid2d,ista,ista_2l,iend,iend_2u,jsta,jsta_2l,jend,jend_2u, &
2703 spval,varname,bc_aod550)
2708 call read_netcdf_2d_para(ncid2d,ista,ista_2l,iend,iend_2u,jsta,jsta_2l,jend,jend_2u, &
2709 spval,varname,subshx)
2714 if (sm(i,j) == 1.0 .and. sice(i,j) ==0.) subshx(i,j) = spval
2721 call read_netcdf_2d_para(ncid2d,ista,ista_2l,iend,iend_2u,jsta,jsta_2l,jend,jend_2u, &
2722 spval,varname,grnflx)
2727 if (sm(i,j) == 1.0 .and. sice(i,j) ==0.) grnflx(i,j) = spval
2733 call read_netcdf_2d_para(ncid2d,ista,ista_2l,iend,iend_2u,jsta,jsta_2l,jend,jend_2u, &
2734 spval,varname,sfcux)
2739 call read_netcdf_2d_para(ncid2d,ista,ista_2l,iend,iend_2u,jsta,jsta_2l,jend,jend_2u, &
2740 spval,varname,sfcvx)
2746 call read_netcdf_2d_para(ncid2d,ista,ista_2l,iend,iend_2u,jsta,jsta_2l,jend,jend_2u, &
2747 spval,varname,sfcuxi)
2748 if(debugprint)print*,
'sample l',varname,
' = ',1,sfcuxi(isa,jsa)
2752 call read_netcdf_2d_para(ncid2d,ista,ista_2l,iend,iend_2u,jsta,jsta_2l,jend,jend_2u, &
2753 spval,varname,sfcvxi)
2754 if(debugprint)print*,
'sample l',varname,
' = ',1,sfcvxi(isa,jsa)
2758 do j=jsta_2l,jend_2u
2759 do i=ista_2l,iend_2u
2766 call read_netcdf_2d_para(ncid2d,ista,ista_2l,iend,iend_2u,jsta,jsta_2l,jend,jend_2u, &
2767 spval,varname,gtaux)
2772 call read_netcdf_2d_para(ncid2d,ista,ista_2l,iend,iend_2u,jsta,jsta_2l,jend,jend_2u, &
2773 spval,varname,gtauy)
2778 call read_netcdf_2d_para(ncid2d,ista,ista_2l,iend,iend_2u,jsta,jsta_2l,jend,jend_2u, &
2779 spval,varname,avgpotevp)
2784 if (sm(i,j) == 1.0 .and. sice(i,j) ==0.) avgpotevp(i,j) = spval
2791 call read_netcdf_2d_para(ncid2d,ista,ista_2l,iend,iend_2u,jsta,jsta_2l,jend,jend_2u, &
2792 spval,varname,potevp)
2797 if (sm(i,j) == 1.0 .and. sice(i,j) ==0.) potevp(i,j) = spval
2803 do j=jsta_2l,jend_2u
2804 do i=ista_2l,iend_2u
2806 rlwtt(i,j,l) = spval
2808 rswtt(i,j,l) = spval
2810 tcucn(i,j,l) = spval
2811 tcucns(i,j,l) = spval
2813 train(i,j,l) = spval
2825 call read_netcdf_2d_para(ncid2d,ista,ista_2l,iend,iend_2u,jsta,jsta_2l,jend,jend_2u, &
2837 call read_netcdf_2d_para(ncid2d,ista,ista_2l,iend,iend_2u,jsta,jsta_2l,jend,jend_2u, &
2849 call read_netcdf_2d_para(ncid2d,ista,ista_2l,iend,iend_2u,jsta,jsta_2l,jend,jend_2u, &
2857 do j = jsta_2l, jend_2u
2859 if (buf(i,j) < spval)
then
2860 ivgtyp(i,j) = nint(buf(i,j))
2870 call read_netcdf_2d_para(ncid2d,ista,ista_2l,iend,iend_2u,jsta,jsta_2l,jend,jend_2u, &
2874 do j = jsta_2l, jend_2u
2876 if (buf(i,j) < spval)
then
2877 isltyp(i,j) = nint(buf(i,j))
2886 call read_netcdf_2d_para(ncid2d,ista,ista_2l,iend,iend_2u,jsta,jsta_2l,jend,jend_2u, &
2891 smstav(i,j) = buf(i,j)
2894 varname=
'snacc_land'
2895 call read_netcdf_2d_para(ncid2d,ista,ista_2l,iend,iend_2u,jsta,jsta_2l,jend,jend_2u, &
2898 call read_netcdf_2d_para(ncid2d,ista,ista_2l,iend,iend_2u,jsta,jsta_2l,jend,jend_2u, &
2901 do j = jsta_2l, jend_2u
2903 if(buf(i,j)<spval .and. buf2(i,j)<spval)
then
2904 sndepac(i,j) = buf(i,j) + buf2(i,j)
2906 sndepac(i,j) = spval
2911 do j=jsta_2l,jend_2u
2912 do i=ista_2l,iend_2u
2918 thz0(i,j) = ths(i,j)
2926 do j=jsta_2l,jend_2u
2927 do i=ista_2l,iend_2u
2928 el_pbl(i,j,l) = spval
2929 exch_h(i,j,l) = spval
2941 varname=
'prescnvclt'
2942 call read_netcdf_2d_para(ncid2d,ista,ista_2l,iend,iend_2u,jsta,jsta_2l,jend,jend_2u, &
2950 if(ptop(i,j) <= 0.0) ptop(i,j) = spval
2955 if(ptop(i,j) < spval)
then
2957 if(ptop(i,j) <= pmid(i,j,l))
then
2970 varname=
'prescnvclb'
2971 call read_netcdf_2d_para(ncid2d,ista,ista_2l,iend,iend_2u,jsta,jsta_2l,jend,jend_2u, &
2978 if(pbot(i,j) <= 0.0) pbot(i,j) = spval
2985 if(pbot(i,j) < spval)
then
2987 if(pbot(i,j) >= pmid(i,j,l))
then
2997 if(debugprint)print*,
'sample hbot = ',hbot(isa,jsa)
2999 varname=
'pres_avelct'
3000 call read_netcdf_2d_para(ncid2d,ista,ista_2l,iend,iend_2u,jsta,jsta_2l,jend,jend_2u, &
3001 spval,varname,ptopl)
3005 varname=
'pres_avelcb'
3006 call read_netcdf_2d_para(ncid2d,ista,ista_2l,iend,iend_2u,jsta,jsta_2l,jend,jend_2u, &
3007 spval,varname,pbotl)
3011 varname=
'tmp_avelct'
3012 call read_netcdf_2d_para(ncid2d,ista,ista_2l,iend,iend_2u,jsta,jsta_2l,jend,jend_2u, &
3013 spval,varname,ttopl)
3017 varname=
'pres_avemct'
3018 call read_netcdf_2d_para(ncid2d,ista,ista_2l,iend,iend_2u,jsta,jsta_2l,jend,jend_2u, &
3019 spval,varname,ptopm)
3023 varname=
'pres_avemcb'
3024 call read_netcdf_2d_para(ncid2d,ista,ista_2l,iend,iend_2u,jsta,jsta_2l,jend,jend_2u, &
3025 spval,varname,pbotm)
3029 varname=
'tmp_avemct'
3030 call read_netcdf_2d_para(ncid2d,ista,ista_2l,iend,iend_2u,jsta,jsta_2l,jend,jend_2u, &
3031 spval,varname,ttopm)
3035 varname=
'pres_avehct'
3036 call read_netcdf_2d_para(ncid2d,ista,ista_2l,iend,iend_2u,jsta,jsta_2l,jend,jend_2u, &
3037 spval,varname,ptoph)
3041 varname=
'pres_avehcb'
3042 call read_netcdf_2d_para(ncid2d,ista,ista_2l,iend,iend_2u,jsta,jsta_2l,jend,jend_2u, &
3043 spval,varname,pboth)
3047 varname=
'tmp_avehct'
3048 call read_netcdf_2d_para(ncid2d,ista,ista_2l,iend,iend_2u,jsta,jsta_2l,jend,jend_2u, &
3049 spval,varname,ttoph)
3053 varname=
'tcdc_avebndcl'
3054 call read_netcdf_2d_para(ncid2d,ista,ista_2l,iend,iend_2u,jsta,jsta_2l,jend,jend_2u, &
3055 spval,varname,pblcfr)
3059 do j = jsta_2l, jend_2u
3061 if (pblcfr(i,j) < spval) pblcfr(i,j) = pblcfr(i,j) * 0.01
3066 varname=
'cwork_aveclm'
3067 call read_netcdf_2d_para(ncid2d,ista,ista_2l,iend,iend_2u,jsta,jsta_2l,jend,jend_2u, &
3068 spval,varname,cldwork)
3073 call read_netcdf_2d_para(ncid2d,ista,ista_2l,iend,iend_2u,jsta,jsta_2l,jend,jend_2u, &
3074 spval,varname,runoff)
3079 if (sm(i,j) /= 0.0) runoff(i,j) = spval
3085 call read_netcdf_2d_para(ncid2d,ista,ista_2l,iend,iend_2u,jsta,jsta_2l,jend,jend_2u, &
3091 if (sm(i,j) /= 0.0) twa(i,j) = spval
3098 call read_netcdf_2d_para(ncid2d,ista,ista_2l,iend,iend_2u,jsta,jsta_2l,jend,jend_2u, &
3099 spval,varname,tecan)
3104 if (sm(i,j) /= 0.0) tecan(i,j) = spval
3110 call read_netcdf_2d_para(ncid2d,ista,ista_2l,iend,iend_2u,jsta,jsta_2l,jend,jend_2u, &
3111 spval,varname,tetran)
3116 if (sm(i,j) /= 0.0) tetran(i,j) = spval
3122 call read_netcdf_2d_para(ncid2d,ista,ista_2l,iend,iend_2u,jsta,jsta_2l,jend,jend_2u, &
3123 spval,varname,tedir)
3128 if (sm(i,j) /= 0.0) tedir(i,j) = spval
3134 if(modelname==
'GFS') varname=
'tmax_max2m'
3135 call read_netcdf_2d_para(ncid2d,ista,ista_2l,iend,iend_2u,jsta,jsta_2l,jend,jend_2u, &
3136 spval,varname,maxtshltr)
3140 if(modelname==
'GFS') varname=
'tmin_min2m'
3141 call read_netcdf_2d_para(ncid2d,ista,ista_2l,iend,iend_2u,jsta,jsta_2l,jend,jend_2u, &
3142 spval,varname,mintshltr)
3148 call read_netcdf_2d_para(ncid2d,ista,ista_2l,iend,iend_2u,jsta,jsta_2l,jend,jend_2u, &
3149 spval,varname,maxrhshltr)
3153 call read_netcdf_2d_para(ncid2d,ista,ista_2l,iend,iend_2u,jsta,jsta_2l,jend,jend_2u, &
3154 spval,varname,minrhshltr)
3159 varname=
'spfhmax_max2m'
3160 call read_netcdf_2d_para(ncid2d,ista,ista_2l,iend,iend_2u,jsta,jsta_2l,jend,jend_2u, &
3161 spval,varname,maxqshltr)
3166 varname=
'spfhmin_min2m'
3167 call read_netcdf_2d_para(ncid2d,ista,ista_2l,iend,iend_2u,jsta,jsta_2l,jend,jend_2u, &
3168 spval,varname,minqshltr)
3172 call read_netcdf_2d_para(ncid2d,ista,ista_2l,iend,iend_2u,jsta,jsta_2l,jend,jend_2u, &
3173 spval,varname,dzice)
3178 call read_netcdf_2d_para(ncid2d,ista,ista_2l,iend,iend_2u,jsta,jsta_2l,jend,jend_2u, &
3179 spval,varname,smcwlt)
3184 if (sm(i,j) /= 0.0) smcwlt(i,j) = spval
3191 call read_netcdf_2d_para(ncid2d,ista,ista_2l,iend,iend_2u,jsta,jsta_2l,jend,jend_2u, &
3192 spval,varname,suntime)
3196 call read_netcdf_2d_para(ncid2d,ista,ista_2l,iend,iend_2u,jsta,jsta_2l,jend,jend_2u, &
3197 spval,varname,fieldcapa)
3202 if (sm(i,j) /= 0.0) fieldcapa(i,j) = spval
3209 call read_netcdf_2d_para(ncid2d,ista,ista_2l,iend,iend_2u,jsta,jsta_2l,jend,jend_2u, &
3210 spval,varname,avisbeamswin)
3216 call read_netcdf_2d_para(ncid2d,ista,ista_2l,iend,iend_2u,jsta,jsta_2l,jend,jend_2u, &
3217 spval,varname,avisdiffswin)
3221 call read_netcdf_2d_para(ncid2d,ista,ista_2l,iend,iend_2u,jsta,jsta_2l,jend,jend_2u, &
3222 spval,varname,airbeamswin)
3226 call read_netcdf_2d_para(ncid2d,ista,ista_2l,iend,iend_2u,jsta,jsta_2l,jend,jend_2u, &
3227 spval,varname,airdiffswin)
3231 call read_netcdf_2d_para(ncid2d,ista,ista_2l,iend,iend_2u,jsta,jsta_2l,jend,jend_2u, &
3232 spval,varname,alwoutc)
3236 call read_netcdf_2d_para(ncid2d,ista,ista_2l,iend,iend_2u,jsta,jsta_2l,jend,jend_2u, &
3237 spval,varname,alwtoac)
3241 call read_netcdf_2d_para(ncid2d,ista,ista_2l,iend,iend_2u,jsta,jsta_2l,jend,jend_2u, &
3242 spval,varname,aswoutc)
3246 call read_netcdf_2d_para(ncid2d,ista,ista_2l,iend,iend_2u,jsta,jsta_2l,jend,jend_2u, &
3247 spval,varname,aswtoac)
3251 call read_netcdf_2d_para(ncid2d,ista,ista_2l,iend,iend_2u,jsta,jsta_2l,jend,jend_2u, &
3252 spval,varname,alwinc)
3256 call read_netcdf_2d_para(ncid2d,ista,ista_2l,iend,iend_2u,jsta,jsta_2l,jend,jend_2u, &
3257 spval,varname,aswinc)
3261 call read_netcdf_2d_para(ncid2d,ista,ista_2l,iend,iend_2u,jsta,jsta_2l,jend,jend_2u, &
3262 spval,varname,ssroff)
3267 if (sm(i,j) /= 0.0) ssroff(i,j) = spval
3273 call read_netcdf_2d_para(ncid2d,ista,ista_2l,iend,iend_2u,jsta,jsta_2l,jend,jend_2u, &
3274 spval,varname,avgedir)
3279 if (sm(i,j) /= 0.0) avgedir(i,j) = spval
3285 call read_netcdf_2d_para(ncid2d,ista,ista_2l,iend,iend_2u,jsta,jsta_2l,jend,jend_2u, &
3286 spval,varname,avgecan)
3291 if (sm(i,j) /= 0.0) avgecan(i,j) = spval
3297 call read_netcdf_2d_para(ncid2d,ista,ista_2l,iend,iend_2u,jsta,jsta_2l,jend,jend_2u, &
3303 if (sm(i,j) /= 0.0) paha(i,j) = spval
3309 call read_netcdf_2d_para(ncid2d,ista,ista_2l,iend,iend_2u,jsta,jsta_2l,jend,jend_2u, &
3315 if (sm(i,j) /= 0.0) pahi(i,j) = spval
3321 call read_netcdf_2d_para(ncid2d,ista,ista_2l,iend,iend_2u,jsta,jsta_2l,jend,jend_2u, &
3322 spval,varname,avgetrans)
3327 if (sm(i,j) /= 0.0) avgetrans(i,j) = spval
3333 call read_netcdf_2d_para(ncid2d,ista,ista_2l,iend,iend_2u,jsta,jsta_2l,jend,jend_2u, &
3334 spval,varname,avgesnow)
3339 if (sm(i,j)==1.0 .and. sice(i,j)==0.) avgesnow(i,j)=spval
3345 call read_netcdf_2d_para(ncid2d,ista,ista_2l,iend,iend_2u,jsta,jsta_2l,jend,jend_2u, &
3346 spval,varname,smstot)
3351 if (sm(i,j) /= 0.0) smstot(i,j) = spval
3357 call read_netcdf_2d_para(ncid2d,ista,ista_2l,iend,iend_2u,jsta,jsta_2l,jend,jend_2u, &
3358 spval,varname,snopcx)
3363 if (sm(i,j) /= 0.0) snopcx(i,j) = spval
3369 call read_netcdf_2d_para(ncid2d,ista,ista_2l,iend,iend_2u,jsta,jsta_2l,jend,jend_2u, &
3386 print *,
'gocart_on=',gocart_on
3387 print *,
'gccpp_on=',gccpp_on
3388 print *,
'nasa_on=',nasa_on
3389 if ((gocart_on .or. gccpp_on) .and. d2d_chem)
then
3394 if ( k == 1) varname=
'duem001'
3395 if ( k == 2) varname=
'duem002'
3396 if ( k == 3) varname=
'duem003'
3397 if ( k == 4) varname=
'duem004'
3398 if ( k == 5) varname=
'duem005'
3400 call read_netcdf_2d_para(ncid2d,ista,ista_2l,iend,iend_2u,jsta,jsta_2l,jend,jend_2u,&
3401 spval,varname,chem_2d)
3403 duem(1:im,jsta_2l:jend_2u,k)=chem_2d(1:im,jsta_2l:jend_2u)
3408 if ( k == 1) varname=
'dust1sd'
3409 if ( k == 2) varname=
'dust2sd'
3410 if ( k == 3) varname=
'dust3sd'
3411 if ( k == 4) varname=
'dust4sd'
3412 if ( k == 5) varname=
'dust5sd'
3413 call read_netcdf_2d_para(ncid2d,ista,ista_2l,iend,iend_2u,jsta,jsta_2l,jend,jend_2u,&
3414 spval,varname,chem_2d)
3415 dusd(1:im,jsta_2l:jend_2u,k)=chem_2d(1:im,jsta_2l:jend_2u)
3420 if ( k == 1) varname=
'dust1dp'
3421 if ( k == 2) varname=
'dust2dp'
3422 if ( k == 3) varname=
'dust3dp'
3423 if ( k == 4) varname=
'dust4dp'
3424 if ( k == 5) varname=
'dust5dp'
3425 call read_netcdf_2d_para(ncid2d,ista,ista_2l,iend,iend_2u,jsta,jsta_2l,jend,jend_2u,&
3426 spval,varname,chem_2d)
3427 dudp(1:im,jsta_2l:jend_2u,k)=chem_2d(1:im,jsta_2l:jend_2u)
3432 if ( k == 1) varname=
'dust1wtl'
3433 if ( k == 2) varname=
'dust2wtl'
3434 if ( k == 3) varname=
'dust3wtl'
3435 if ( k == 4) varname=
'dust4wtl'
3436 if ( k == 5) varname=
'dust5wtl'
3437 call read_netcdf_2d_para(ncid2d,ista,ista_2l,iend,iend_2u,jsta,jsta_2l,jend,jend_2u,&
3438 spval,varname,chem_2d)
3439 duwt(1:im,jsta_2l:jend_2u,k)=chem_2d(1:im,jsta_2l:jend_2u)
3444 if ( k == 1) varname=
'dust1wtc'
3445 if ( k == 2) varname=
'dust2wtc'
3446 if ( k == 3) varname=
'dust3wtc'
3447 if ( k == 4) varname=
'dust4wtc'
3448 if ( k == 5) varname=
'dust5wtc'
3449 call read_netcdf_2d_para(ncid2d,ista,ista_2l,iend,iend_2u,jsta,jsta_2l,jend,jend_2u,&
3450 spval,varname,chem_2d)
3451 dusv(1:im,jsta_2l:jend_2u,k)=chem_2d(1:im,jsta_2l:jend_2u)
3456 if ( k == 1) varname=
'ssem001'
3457 if ( k == 2) varname=
'ssem002'
3458 if ( k == 3) varname=
'ssem003'
3459 if ( k == 4) varname=
'ssem004'
3460 if ( k == 5) varname=
'ssem005'
3461 call read_netcdf_2d_para(ncid2d,ista,ista_2l,iend,iend_2u,jsta,jsta_2l,jend,jend_2u,&
3462 spval,varname,chem_2d)
3463 ssem(1:im,jsta_2l:jend_2u,k)=chem_2d(1:im,jsta_2l:jend_2u)
3468 if ( k == 1) varname=
'seas1sd'
3469 if ( k == 2) varname=
'seas2sd'
3470 if ( k == 3) varname=
'seas3sd'
3471 if ( k == 4) varname=
'seas4sd'
3472 if ( k == 5) varname=
'seas5sd'
3473 call read_netcdf_2d_para(ncid2d,ista,ista_2l,iend,iend_2u,jsta,jsta_2l,jend,jend_2u,&
3474 spval,varname,chem_2d)
3475 sssd(1:im,jsta_2l:jend_2u,k)=chem_2d(1:im,jsta_2l:jend_2u)
3480 if ( k == 1) varname=
'seas1dp'
3481 if ( k == 2) varname=
'seas2dp'
3482 if ( k == 3) varname=
'seas3dp'
3483 if ( k == 4) varname=
'seas4dp'
3484 if ( k == 5) varname=
'seas5dp'
3485 call read_netcdf_2d_para(ncid2d,ista,ista_2l,iend,iend_2u,jsta,jsta_2l,jend,jend_2u,&
3486 spval,varname,chem_2d)
3487 ssdp(1:im,jsta_2l:jend_2u,k)=chem_2d(1:im,jsta_2l:jend_2u)
3492 if ( k == 1) varname=
'seas1wtl'
3493 if ( k == 2) varname=
'seas2wtl'
3494 if ( k == 3) varname=
'seas3wtl'
3495 if ( k == 4) varname=
'seas4wtl'
3496 if ( k == 5) varname=
'seas5wtl'
3497 call read_netcdf_2d_para(ncid2d,ista,ista_2l,iend,iend_2u,jsta,jsta_2l,jend,jend_2u,&
3498 spval,varname,chem_2d)
3499 sswt(1:im,jsta_2l:jend_2u,k)=chem_2d(1:im,jsta_2l:jend_2u)
3504 if ( k == 1) varname=
'seas1wtc'
3505 if ( k == 2) varname=
'seas1wtc'
3506 if ( k == 3) varname=
'seas1wtc'
3507 if ( k == 4) varname=
'seas1wtc'
3508 if ( k == 5) varname=
'seas1wtc'
3509 call read_netcdf_2d_para(ncid2d,ista,ista_2l,iend,iend_2u,jsta,jsta_2l,jend,jend_2u,&
3510 spval,varname,chem_2d)
3511 sssv(1:im,jsta_2l:jend_2u,k)=chem_2d(1:im,jsta_2l:jend_2u)
3516 if ( k == 1) varname=
'bceman'
3517 if ( k == 2) varname=
'bcembb'
3518 call read_netcdf_2d_para(ncid2d,ista,ista_2l,iend,iend_2u,jsta,jsta_2l,jend,jend_2u,&
3519 spval,varname,chem_2d)
3520 bcem(1:im,jsta_2l:jend_2u,k)=chem_2d(1:im,jsta_2l:jend_2u)
3525 if ( k == 1) varname=
'bc1sd'
3526 if ( k == 2) varname=
'bc2sd'
3527 call read_netcdf_2d_para(ncid2d,ista,ista_2l,iend,iend_2u,jsta,jsta_2l,jend,jend_2u,&
3528 spval,varname,chem_2d)
3529 bcsd(1:im,jsta_2l:jend_2u,k)=chem_2d(1:im,jsta_2l:jend_2u)
3534 if ( k == 1) varname=
'bc1dp'
3535 if ( k == 2) varname=
'bc2dp'
3536 call read_netcdf_2d_para(ncid2d,ista,ista_2l,iend,iend_2u,jsta,jsta_2l,jend,jend_2u,&
3537 spval,varname,chem_2d)
3538 bcdp(1:im,jsta_2l:jend_2u,k)=chem_2d(1:im,jsta_2l:jend_2u)
3543 if ( k == 1) varname=
'bc1wtl'
3544 if ( k == 2) varname=
'bc2wtl'
3545 call read_netcdf_2d_para(ncid2d,ista,ista_2l,iend,iend_2u,jsta,jsta_2l,jend,jend_2u,&
3546 spval,varname,chem_2d)
3547 bcwt(1:im,jsta_2l:jend_2u,k)=chem_2d(1:im,jsta_2l:jend_2u)
3552 if ( k == 1) varname=
'bc1wtc'
3553 if ( k == 2) varname=
'bc2wtc'
3554 call read_netcdf_2d_para(ncid2d,ista,ista_2l,iend,iend_2u,jsta,jsta_2l,jend,jend_2u,&
3555 spval,varname,chem_2d)
3556 bcsv(1:im,jsta_2l:jend_2u,k)=chem_2d(1:im,jsta_2l:jend_2u)
3561 if ( k == 1) varname=
'oceman'
3562 if ( k == 2) varname=
'ocembb'
3563 call read_netcdf_2d_para(ncid2d,ista,ista_2l,iend,iend_2u,jsta,jsta_2l,jend,jend_2u,&
3564 spval,varname,chem_2d)
3565 ocem(1:im,jsta_2l:jend_2u,k)=chem_2d(1:im,jsta_2l:jend_2u)
3570 if ( k == 1) varname=
'oc1sd'
3571 if ( k == 2) varname=
'oc2sd'
3572 call read_netcdf_2d_para(ncid2d,ista,ista_2l,iend,iend_2u,jsta,jsta_2l,jend,jend_2u,&
3573 spval,varname,chem_2d)
3574 ocsd(1:im,jsta_2l:jend_2u,k)=chem_2d(1:im,jsta_2l:jend_2u)
3579 if ( k == 1) varname=
'oc1dp'
3580 if ( k == 2) varname=
'oc2dp'
3581 call read_netcdf_2d_para(ncid2d,ista,ista_2l,iend,iend_2u,jsta,jsta_2l,jend,jend_2u,&
3582 spval,varname,chem_2d)
3583 ocdp(1:im,jsta_2l:jend_2u,k)=chem_2d(1:im,jsta_2l:jend_2u)
3588 if ( k == 1) varname=
'oc1wtl'
3589 if ( k == 2) varname=
'oc2wtl'
3590 call read_netcdf_2d_para(ncid2d,ista,ista_2l,iend,iend_2u,jsta,jsta_2l,jend,jend_2u,&
3591 spval,varname,chem_2d)
3592 ocwt(1:im,jsta_2l:jend_2u,k)=chem_2d(1:im,jsta_2l:jend_2u)
3597 if ( k == 1) varname=
'oc1wtc'
3598 if ( k == 2) varname=
'oc2wtc'
3599 call read_netcdf_2d_para(ncid2d,ista,ista_2l,iend,iend_2u,jsta,jsta_2l,jend,jend_2u,&
3600 spval,varname,chem_2d)
3601 ocsv(1:im,jsta_2l:jend_2u,k)=chem_2d(1:im,jsta_2l:jend_2u)
3606 call read_netcdf_2d_para(ncid2d,ista,ista_2l,iend,iend_2u,jsta,jsta_2l,jend,jend_2u,&
3607 spval,varname,chem_2d)
3608 maod(1:im,jsta_2l:jend_2u)=chem_2d(1:im,jsta_2l:jend_2u)
3612 status=nf90_close(ncid2d)
3643 CALL table(ptbl,ttbl,pt_tbl, &
3644 rdq,rdth,rdp,rdthe,pl,thl,qs0,sqs,sthe,the0)
3646 CALL tableq(ttblq,rdpq,rdtheq,plq,thl,stheq,the0q)
3651 WRITE(6,*)
' SPL (POSTED PRESSURE LEVELS) BELOW: '
3652 WRITE(6,51) (spl(l),l=1,lsm)
3653 50
FORMAT(14(f4.1,1x))
3654 51
FORMAT(8(f8.1,1x))
3659 alsl(l) = log(spl(l))
3664 print*,
'writing out igds'
3668 if(maptype == 1)
THEN
3670 WRITE(6,*)
'igd(1)=',3
3673 WRITE(igdout)latstart
3674 WRITE(igdout)lonstart
3681 WRITE(igdout)truelat2
3682 WRITE(igdout)truelat1
3684 ELSE IF(maptype == 2)
THEN
3688 WRITE(igdout)latstart
3689 WRITE(igdout)lonstart
3696 WRITE(igdout)truelat2
3697 WRITE(igdout)truelat1
3703 if (truelat1 < 0.)
THEN
3709 CALL
msfps(lat,truelat1*0.001,psmapf)
3711 ELSE IF(maptype == 3)
THEN
3715 WRITE(igdout)latstart
3716 WRITE(igdout)lonstart
3718 WRITE(igdout)latlast
3719 WRITE(igdout)lonlast
3720 WRITE(igdout)truelat1
3726 ELSE IF(maptype == 0 .OR. maptype == 203)
THEN
3730 WRITE(igdout)latstart
3731 WRITE(igdout)lonstart
3741 ELSE IF(maptype == 207)
THEN
3742 write(flatlon,1001)ifhr
3743 open(112,file=trim(flatlon),form=
'formatted', &
3745 write(112,1002)latstart/1000,lonstart/1000,&
3746 latse/1000,lonse/1000,latnw/1000,lonnw/1000,&
3747 latlast/1000,lonlast/1000
3748 1001
format(
'latlons_corners.txt.f',i3.3)
3749 1002
format(4(i6,i7,x))
3760 subroutine read_netcdf_3d_para(ncid,im,jm,ista,ista_2l,iend,iend_2u,jsta,jsta_2l,jend,jend_2u, &
3761 spval,varname,buf,lm)
3769 character(len=20),
intent(in) :: varname
3770 real,
intent(in) :: spval
3771 integer,
intent(in) :: ncid,im,jm,lm,jsta_2l,jend_2u,jsta,jend
3772 integer,
intent(in) :: ista_2l,iend_2u,ista,iend
3773 real,
intent(out) :: buf(ista_2l:iend_2u,jsta_2l:jend_2u,lm)
3774 integer :: varid,iret,ii,jj,i,j,l,kk
3775 integer :: start(3), count(3), stride(3)
3776 real,
parameter :: spval_netcdf=9.99e+20
3779 iret = nf90_inq_varid(ncid,trim(varname),varid)
3781 if (me == 0) print*,varname,
" not found -Assigned missing values"
3791 iret = nf90_get_att(ncid,varid,
"_FillValue",fill_value)
3792 if (iret /= 0) fill_value = spval_netcdf
3793 start = (/ista,jsta,1/)
3796 count = (/ii,jj,lm/)
3797 iret = nf90_get_var(ncid,varid,buf(ista:iend,jsta:jend,1:lm),start=start,count=count)
3799 print*,
" iret /=0, Error in reading varid "
3804 if(abs(buf(i,j,l)-fill_value)<small)buf(i,j,l)=spval
3810 end subroutine read_netcdf_3d_para
3812 subroutine read_netcdf_2d_para(ncid,ista,ista_2l,iend,iend_2u,jsta,jsta_2l,jend,jend_2u, &
3821 character(len=20),
intent(in) :: varname
3822 real,
intent(in) :: spval
3823 integer,
intent(in) :: ncid,jsta_2l,jend_2u,jsta,jend,ista_2l,iend_2u,ista,iend
3824 real,
intent(out) :: buf(ista_2l:iend_2u,jsta_2l:jend_2u)
3825 integer :: varid,iret,ii,jj,i,j,l,kk
3826 integer :: start(2), count(2)
3827 real,
parameter :: spval_netcdf=9.99e+20
3830 iret = nf90_inq_varid(ncid,trim(varname),varid)
3832 if (me==0) print*,varname,
" not found -Assigned missing values"
3840 iret = nf90_get_att(ncid,varid,
"_FillValue",fill_value)
3841 if (iret /= 0) fill_value = spval_netcdf
3842 start = (/ista,jsta/)
3846 iret = nf90_get_var(ncid,varid,buf(ista:iend,jsta:jend),start=start,count=count)
3848 print*,
" iret /=0, Error in reading varid "
3852 if(abs(buf(i,j)-fill_value)<small)buf(i,j)=spval
3857 end subroutine read_netcdf_2d_para
subroutine msfps(LAT, TRUELAT1, MSF)
msfps() computes the map scale factor for a polar stereographic grid at a give latitude.
elemental real function, public fpvsnew(t)
subroutine initpost_netcdf(ncid2d, ncid3d)
This routine initializes constants and variables at the start of GFS model or post processor run...