29 SUBROUTINE initpost_gfs_nems_mpiio(iostatusAER)
32 use vrbls4d, only: dust, salt, suso, soot, waso, pp25, pp10
33 use vrbls3d, only: t, q, uh, vh,wh,pmid,pint,alpint, dpres,zint,zmid,o3, &
34 qqr, qqs, cwm, qqi, qqw, omga, rhomid, q2, cfr, rlwtt, rswtt, tcucn, &
35 tcucns, train, el_pbl, exch_h, vdifftt, vdiffmois, dconvmois, nradtt, &
36 o3vdiff, o3prod, o3tndy, mwpv, qqg, vdiffzacce, zgdrag,cnvctummixing, &
37 vdiffmacce, mgdrag, cnvctvmmixing, ncnvctcfrac, cnvctumflx, cnvctdmflx, &
38 cnvctzgdrag, sconvmois, cnvctmgdrag, cnvctdetmflx, duwt, duem, dusd, dudp, &
39 dusv,ssem,sssd,ssdp,sswt,sssv,bcem,bcsd,bcdp,bcwt,bcsv,ocem,ocsd,ocdp, &
41 use vrbls2d, only: f, pd, fis, pblh, ustar, z0, ths, qs, twbs, qwbs, avgcprate, &
42 cprate, avgprec, prec, lspa, sno, si, cldefi, th10, q10, tshltr, pshltr, &
43 tshltr, albase, avgalbedo, avgtcdc, czen, czmean, mxsnal, radot, sigt4, &
44 cfrach, cfracl, cfracm, avgcfrach, qshltr, avgcfracl, avgcfracm, cnvcfr, &
45 islope, cmc, grnflx, vegfrc, acfrcv, ncfrcv, acfrst, ncfrst, ssroff, &
46 bgroff, rlwin, rlwtoa, cldwork, alwin, alwout, alwtoa, rswin, rswinc, &
47 rswout, aswin, auvbin, auvbinc, aswout, aswtoa, sfcshx, sfclhx, subshx, &
48 snopcx, sfcux, sfcvx, sfcuvx, gtaux, gtauy, potevp, u10, v10, smstav, &
49 smstot, ivgtyp, isltyp, sfcevp, sfcexc, acsnow, acsnom, sst, thz0, qz0, &
50 uz0, vz0, ptop, htop, pbot, hbot, ptopl, pbotl, ttopl, ptopm, pbotm, ttopm, &
51 ptoph, pboth, pblcfr, ttoph, runoff, maxtshltr, mintshltr, maxrhshltr, &
52 minrhshltr, dzice, smcwlt, suntime, fieldcapa, htopd, hbotd, htops, hbots, &
53 cuppt, dusmass, ducmass, dusmass25, ducmass25, aswintoa, &
54 maxqshltr, minqshltr, acond, sr, u10h, v10h, &
55 avgedir,avgecan,avgetrans,avgesnow,avgprec_cont,avgcprate_cont, &
56 avisbeamswin,avisdiffswin,airbeamswin,airdiffswin, &
57 alwoutc,alwtoac,aswoutc,aswtoac,alwinc,aswinc,avgpotevp,snoavg, &
58 dustcb,bccb,occb,sulfcb,sscb,dustallcb,ssallcb,dustpm,dustpm10,sspm,pp25cb, &
60 use soil, only: sldpth, sh2o, smc, stc
61 use masks, only: lmv, lmh, htm, vtm, gdlat, gdlon, dx, dy, hbm2, sm, sice
64 use physcons_post, only: grav => con_g, fv => con_fvirt, rgas => con_rd, &
65 eps => con_eps, epsm1 => con_epsm1
66 use params_mod, only: erad, dtr, tfrz, h1, d608, rd, p1000, capa
67 use lookup_mod, only: thl, plq, ptbl, ttbl, rdq, rdth, rdp, rdthe, pl, qs0, sqs, sthe, &
68 ttblq, rdpq, rdtheq, stheq, the0q, the0
69 use ctlblk_mod
, only: me, mpi_comm_comp, icnt, idsp, jsta, jend, ihrst, idat, sdat, ifhr, &
70 ifmin, filename, tprec, tclod, trdlw, trdsw, tsrfc, tmaxmin, td3d, restrt, sdat, &
71 jend_m, imin, imp_physics, dt, spval, pdtop, pt, qmin, nbin_du, nphs, dtq2, ardlw,&
72 ardsw, asrfc, avrain, avcnvc, theat, gdsdegr, spl, lsm, alsl, im, jm, im_jm, lm, &
73 jsta_2l, jend_2u, nsoil, lp1, icu_physics, ivegsrc, novegtype, nbin_ss, nbin_bc, &
74 nbin_oc, nbin_su, gocart_on, pt_tbl, hyb_sigp, filenameflux, filenameaer, &
76 use gridspec_mod
, only: maptype, gridtype, latstart, latlast, lonstart, lonlast, cenlon, &
77 dxval, dyval, truelat2, truelat1, psmapf, cenlat
83 type(nemsio_gfile
) :: nfile,ffile,rfile
102 real,
parameter :: gravi = 1.0/grav
103 integer,
intent(in) :: iostatusaer
104 character(len=20) :: varname, vcoordname
105 integer :: status, fldsize, fldst, recn
106 integer :: recn_vvel,recn_delz,recn_dpres
107 character startdate*19,sysdepinfo*80,cgar*1
108 character startdate2(19)*4,lprecip_accu*3
115 LOGICAL runb,singlrst,subpost,nest,hydro,ioomg,ioall
116 logical,
parameter :: debugprint = .false., zerout = .false.
118 logical :: reduce_grid = .true.
120 CHARACTER*40 contrl,filall,filmst,filtmp,filtke,filunv,filcld,filrad,filsfc
122 CHARACTER fname*255,envar*50
123 INTEGER idate(8),jdate(8),jpds(200),jgds(200),kpds(200),kgds(200)
137 real,
allocatable :: fi(:,:,:)
139 integer ii,jj,js,je,iyear,imn,iday,itmp,ioutcount,istatus, &
140 i,j,l,ll,k,kf,irtn,igdout,n,index,nframe, &
141 impf,jmpf,nframed2,iunitd3d,ierr,idum,iret,nrec,idrt
142 real tstart,tlmh,tsph,es,fact,soilayert,soilayerb,zhour,dum, &
143 tvll,pmll,tv, tx1, tx2
145 character*16,
allocatable :: recname(:)
146 character*16,
allocatable :: reclevtyp(:)
147 character*6 :: modelname_nemsio
148 integer,
allocatable :: reclev(:), kmsk(:,:)
149 real,
allocatable :: glat1d(:), glon1d(:), qstl(:)
150 real,
allocatable :: wrk1(:,:), wrk2(:,:)
151 real,
allocatable :: p2d(:,:), t2d(:,:), q2d(:,:), &
152 qs2d(:,:), cw2d(:,:), cfr2d(:,:)
153 real(kind=4),
allocatable :: vcoord4(:,:,:)
154 real,
dimension(lm+1) :: ak5, bk5
155 real*8,
allocatable :: pm2d(:,:), pi2d(:,:)
156 real,
allocatable :: tmp(:)
157 real :: buf(im,jsta_2l:jend_2u)
158 integer :: lonsperlat(jm/2), numi(jm)
164 integer isa, jsa, latghf, jtem, idvc, idsl, nvcoord, ip1, nn, npass
171 integer,
parameter :: npass2=5, npass3=30
172 real,
parameter :: third=1.0/3.0
173 INTEGER,
DIMENSION(2) :: ij4min, ij4max
174 REAL :: omgmin, omgmax
175 real,
allocatable :: d2d(:,:), u2d(:,:), v2d(:,:), omga2d(:,:)
176 REAL,
ALLOCATABLE :: ps2d(:,:),psx2d(:,:),psy2d(:,:)
177 real,
allocatable :: div3d(:,:,:)
178 real(kind=4),
allocatable :: vcrd(:,:)
179 real :: omg1(im), omg2(im+2)
184 WRITE(6,*)
'INITPOST: ENTER INITPOST_GFS_NEMS_MPIIO'
185 WRITE(6,*)
'me=',me,
'LMV=',
size(lmv,1),
size(lmv,2),
'LMH=', &
186 size(lmh,1),
size(lmh,2),
'jsta_2l=',jsta_2l,
'jend_2u=', &
190 jsa = (jsta+jend) / 2
193 do j = jsta_2l, jend_2u
201 call nemsio_open(nfile,trim(filename),
'read',mpi_comm_comp,iret=status)
202 if ( status /= 0 )
then
203 print*,
'error opening ',filename,
' Status = ', status ; stop
205 call nemsio_getfilehead(nfile,iret=status,nrec=nrec,idrt=idrt)
208 call nemsio_open(ffile,trim(filenameflux),
'read',mpi_comm_comp &
210 if ( status /= 0 )
then
211 print*,
'error opening ',filenameflux,
' Status = ', status
220 do j = jsta_2l, jend_2u
231 do j = jsta_2l, jend_2u
240 allocate(recname(nrec),reclevtyp(nrec),reclev(nrec))
241 allocate(glat1d(im*jm),glon1d(im*jm))
242 allocate(vcoord4(lm+1,3,2))
244 call nemsio_getfilehead(nfile,iret=iret &
245 ,idate=idate(1:7),nfhour=nfhour,recname=recname &
246 ,reclevtyp=reclevtyp,reclev=reclev,lat=glat1d &
247 ,lon=glon1d,nframe=nframe,vcoord=vcoord4,idrt=maptype &
248 ,modelname=modelname_nemsio)
249 if(iret/=0)print*,
'error getting idate,nfhour'
250 print *,
'latstar1=',glat1d(1),glat1d(im*jm)
253 print*,
'modelname = ',modelname_nemsio
254 if(trim(modelname_nemsio)==
'FV3GFS')reduce_grid=.false.
260 open (201,file=
'lonsperlat.dat',status=
'old',form=
'formatted', &
261 action=
'read',iostat=iret)
263 read (201,*,iostat=iret) latghf,(lonsperlat(i),i=1,latghf)
265 print*,
'finished reading lonsperlat'
267 if (jm /= latghf+latghf)
then
268 write(0,*)
' wrong reduced grid - execution skipped'
272 numi(j) = lonsperlat(j)
275 numi(j) = lonsperlat(jm+1-j)
290 if (me == 0) print *,
'maptype and gridtype is ', &
296 print *,
'recname,reclevtyp,reclev=',trim(recname(i)),
' ', &
297 trim(reclevtyp(i)),reclev(i)
306 gdlat(i,j) = glat1d(js+i)
307 gdlon(i,j) = glon1d(js+i)
313 ak5(l) = vcoord4(l,1,1)
314 bk5(l) = vcoord4(l,2,1)
319 if ( minval(ak5) <0 .or. minval(bk5) <0 )
then
320 open (202,file=
'global_hyblev.txt',status=
'old',form=
'formatted', &
321 action=
'read',iostat=iret)
325 read (202,*,iostat=iret) ak5(l),bk5(l)
331 vcoord4(l,1,1)=ak5(l)
332 vcoord4(l,2,1)=bk5(l)
335 print *,
'ak5 and bk5 not found, stop !'
346 deallocate(glat1d,glon1d)
348 print*,
'idate = ',(idate(i),i=1,7)
349 print*,
'idate after broadcast = ',(idate(i),i=1,4)
350 print*,
'nfhour = ',nfhour
356 print *,me,
'max(gdlat)=', maxval(gdlat), &
357 'max(gdlon)=', maxval(gdlon)
360 print *,
'after call EXCH,me=',me
366 if (ip1 > im) ip1 = ip1 - im
367 dx(i,j) = erad*cos(gdlat(i,j)*dtr) *(gdlon(ip1,j)-gdlon(i,j))*dtr
368 dy(i,j) = erad*(gdlat(i,j)-gdlat(i,j+1))*dtr
378 f(i,j) = 1.454441e-4*sin(gdlat(i,j)*dtr)
384 print*,
'impf,jmpf,nframe= ',impf,jmpf,nframe
394 print*,
'start yr mo day hr min =',iyear,imn,iday,ihrst,imin
395 print*,
'processing yr mo day hr min=' &
396 ,idat(3),idat(1),idat(2),idat(4),idat(5)
412 print *,
' idate=',idate
413 print *,
' jdate=',jdate
415 CALL w3difdat(jdate,idate,0,rinc)
417 print *,
' rinc=',rinc
418 ifhr = nint(rinc(2)+rinc(1)*24.)
419 print *,
' ifhr=',ifhr
420 ifmin = nint(rinc(3))
422 print*,
' in INITPOST ifhr ifmin fileName=',ifhr,ifmin,filename
426 print*,
'tstart= ',tstart
432 IF(tstart > 1.0e-2)
THEN
433 ifhr = ifhr+nint(tstart)
437 call w3movdat(rinc,jdate,idate)
442 print*,
'new forecast hours for restrt run= ',ifhr
443 print*,
'new start yr mo day hr min =',sdat(3),sdat(1) &
447 varname=
'imp_physics'
448 call nemsio_getheadvar(ffile,trim(varname),imp_physics,iret)
450 if(me==0)print*,varname, &
451 " not found in file-Assigned 99 for Zhao"
455 if(me==0)print*,
'MP_PHYSICS= ',imp_physics
457 varname=
'sf_surface_physi'
458 call nemsio_getheadvar(ffile,trim(varname),imp_physics,iret)
460 if(me==0)print*,varname, &
461 " not found in file-Assigned 2 for NOAH"
462 isf_surface_physics=2
465 if(me==0)print*,
'SF_SURFACE_PHYSICS= ',isf_surface_physics
469 call nemsio_getheadvar(ffile,trim(varname),fhzero,iret)
471 if(me==0)print*,varname, &
472 " not found in file-Assign 6 or 12 hours precip bucket"
474 if(ifhr>240)tprec=12.
501 print*,
'tprec, tclod, trdlw = ',tprec,tclod,trdlw
505 if(imp_physics==5 .or. imp_physics==85 .or. imp_physics==95)
then
506 CALL microinit(imp_physics)
517 fldsize = (jend-jsta+1)*im
518 allocate(tmp(fldsize*nrec))
519 print*,
'allocate tmp successfully'
521 call nemsio_denseread(nfile,1,im,jsta,jend,tmp,iret=iret)
523 print*,
"fail to read sigma file using mpi io read, stopping"
530 print*,
'performing reduced grid'
532 allocate (kmsk(im,jtem))
535 fldst = (recn-1)*fldsize
537 js = fldst + (j-jsta)*im
542 call gg2rg(im,jtem,numi(jsta),buf(1,jsta))
543 call uninterpred(2,kmsk,numi(jsta),im,jtem,buf(1,jsta),tmp(fldst+1))
552 call getrecn(recname,reclevtyp,reclev,nrec,varname,vcoordname,l,recn)
554 fldst = (recn-1)*fldsize
557 js = fldst + (j-jsta)*im
563 if(me == 0) print*,
'fail to read ', varname,vcoordname,l
574 if (fis(i,j) /= spval)
then
575 zint(i,j,lp1) = fis(i,j)
576 fis(i,j) = fis(i,j) * grav
580 if(debugprint) print*,
'sample ',varname,
' = ',fis(isa,jsa)
587 call assignnemsiovar(im,jsta,jend,jsta_2l,jend_2u &
588 ,l,nrec,fldsize,spval,tmp &
589 ,recname,reclevtyp,reclev,varname,vcoordname &
590 ,pint(1,jsta_2l,lp1))
592 if(debugprint)print*,
'sample surface pressure = ',pint(isa,jsa,lp1)
597 vcoordname =
'mid layer'
604 call getrecn(recname,reclevtyp,reclev,nrec,varname,vcoordname,l,recn)
606 fldst = (recn-1)*fldsize
609 js = fldst + (j-jsta)*im
611 t(i,j,ll) = tmp(i+js)
615 print*,
'fail to read ', varname,
' at lev ',ll,
'stopping'
619 if(debugprint)print*,
'sample ',ll,varname,
' = ',ll,t(isa,jsa,ll)
623 call getrecn(recname,reclevtyp,reclev,nrec,varname,vcoordname,l,recn)
625 fldst = (recn-1)*fldsize
628 js = fldst + (j-jsta)*im
630 q(i,j,ll) = tmp(i+js)
634 print*,
'fail to read ', varname,
' at lev ',ll,
'stopping'
638 if(debugprint)print*,
'sample ',ll,varname,
' = ',ll,q(isa,jsa,ll)
642 call getrecn(recname,reclevtyp,reclev,nrec,varname,vcoordname,l,recn)
644 fldst = (recn-1)*fldsize
647 js = fldst + (j-jsta)*im
649 uh(i,j,ll) = tmp(i+js)
653 print*,
'fail to read ', varname,
' at lev ',ll,
'stopping'
657 if(debugprint)print*,
'sample ',ll,varname,
' = ',ll,uh(isa,jsa,ll)
661 call getrecn(recname,reclevtyp,reclev,nrec,varname,vcoordname,l,recn)
663 fldst = (recn-1)*fldsize
666 js = fldst + (j-jsta)*im
668 vh(i,j,ll) = tmp(i+js)
672 print*,
'fail to read ', varname,
' at lev ',ll,
'stopping'
676 if(debugprint)print*,
'sample ',ll,varname,
' = ',ll,vh(isa,jsa,ll)
704 call getrecn(recname,reclevtyp,reclev,nrec,varname,vcoordname,l,recn)
706 fldst = (recn-1)*fldsize
709 js = fldst + (j-jsta)*im
711 dpres(i,j,ll) = tmp(i+js)
716 if(me==0)print*,
'fail to read ', varname,
' at lev ',ll, &
717 'will derive pressure using ak bk later'
721 call getrecn(recname,reclevtyp,reclev,nrec,varname,vcoordname,l,recn)
723 fldst = (recn-1)*fldsize
726 js = fldst + (j-jsta)*im
728 o3(i,j,ll) = tmp(i+js)
732 print*,
'fail to read ', varname,
' at lev ',ll,
'stopping'
737 if(debugprint)print*,
'sample ',ll,varname,
' = ',ll,o3(isa,jsa,ll)
753 if(imp_physics==99 .or. imp_physics==98)
then
755 call getrecn(recname,reclevtyp,reclev,nrec,varname,vcoordname,l,recn)
757 fldst = (recn-1)*fldsize
760 js = fldst + (j-jsta)*im
762 cwm(i,j,ll) = tmp(i+js)
766 print*,
'fail to read ', varname,
' at lev ',ll,
'stopping'
770 if(debugprint)print*,
'sample ',ll,varname,
' = ',ll,cwm(isa,jsa,ll)
775 if(t(i,j,ll) < (tfrz-15.) )
then
776 qqi(i,j,ll) = cwm(i,j,ll)
778 qqw(i,j,ll) = cwm(i,j,ll)
782 else if(imp_physics==11 .or. imp_physics==8)
then
784 call getrecn(recname,reclevtyp,reclev,nrec,varname,vcoordname,l,recn)
786 fldst = (recn-1)*fldsize
789 js = fldst + (j-jsta)*im
791 qqw(i,j,ll) = tmp(i+js)
795 print*,
'fail to read ', varname,
' at lev ',ll,
'stopping'
798 if(debugprint)print*,
'sample ',ll,varname,
' = ',ll,qqw(isa,jsa,ll)
801 call getrecn(recname,reclevtyp,reclev,nrec,varname,vcoordname,l,recn)
803 fldst = (recn-1)*fldsize
806 js = fldst + (j-jsta)*im
808 qqi(i,j,ll) = tmp(i+js)
812 print*,
'fail to read ', varname,
' at lev ',ll,
'stopping'
815 if(debugprint)print*,
'sample ',ll,varname,
' = ',ll,qqi(isa,jsa,ll)
818 call getrecn(recname,reclevtyp,reclev,nrec,varname,vcoordname,l,recn)
820 fldst = (recn-1)*fldsize
823 js = fldst + (j-jsta)*im
825 qqr(i,j,ll) = tmp(i+js)
829 print*,
'fail to read ', varname,
' at lev ',ll,
'stopping'
832 if(debugprint)print*,
'sample ',ll,varname,
' = ',ll,qqr(isa,jsa,ll)
835 call getrecn(recname,reclevtyp,reclev,nrec,varname,vcoordname,l,recn)
837 fldst = (recn-1)*fldsize
840 js = fldst + (j-jsta)*im
842 qqs(i,j,ll) = tmp(i+js)
846 print*,
'fail to read ', varname,
' at lev ',ll,
'stopping'
849 if(debugprint)print*,
'sample ',ll,varname,
' = ',ll,qqs(isa,jsa,ll)
852 call getrecn(recname,reclevtyp,reclev,nrec,varname,vcoordname,l,recn)
854 fldst = (recn-1)*fldsize
857 js = fldst + (j-jsta)*im
859 qqg(i,j,ll) = tmp(i+js)
863 print*,
'fail to read ', varname,
' at lev ',ll,
'stopping'
866 if(debugprint)print*,
'sample ',ll,varname,
' = ',ll,qqg(isa,jsa,ll)
870 cwm(i,j,ll)=qqg(i,j,ll)+qqs(i,j,ll)+qqr(i,j,ll)+qqi(i,j,ll)+qqw(i,j,ll)
879 if(trim(modelname_nemsio)==
'FV3GFS')
then
882 call getrecn(recname,reclevtyp,reclev,nrec,varname,vcoordname,l,recn)
884 fldst = (recn-1)*fldsize
887 js = fldst + (j-jsta)*im
889 wh(i,j,ll) = tmp(i+js)
892 if(debugprint)print*,
'sample l ',varname,
' = ',ll,wh(isa,jsa,ll)
894 if(me==0)print*,
'fail to read ', varname,
' at lev ',ll
898 call getrecn(recname,reclevtyp,reclev,nrec,varname,vcoordname,l,recn)
900 fldst = (recn-1)*fldsize
903 js = fldst + (j-jsta)*im
905 omga(i,j,ll) = tmp(i+js)
908 if(debugprint)print*,
'sample l ',varname,
' = ',ll,omga(isa,jsa,ll)
911 if(me==0)print*,
'fail to read ', varname,
' at lev ',ll, &
912 'will derive omega later'
918 call getrecn(recname,reclevtyp,reclev,nrec,varname,vcoordname,l,recn)
920 fldst = (recn-1)*fldsize
924 js = fldst + (j-jsta)*im
926 zint(i,j,ll)=zint(i,j,ll+1)+abs(tmp(i+js))
927 if(recn_dpres /= -9999)pmid(i,j,ll)=rgas*dpres(i,j,ll)* &
928 t(i,j,ll)*(q(i,j,ll)*fv+1.0)/grav/abs(tmp(i+js))
931 if(debugprint)print*,
'sample l ',varname,
' = ',ll, &
933 if(trim(modelname_nemsio)==
'FV3GFS' .and. &
934 recn_dpres /= -9999)
then
936 js = fldst + (j-jsta)*im
938 omga(i,j,ll)=(-1.)*wh(i,j,ll)*dpres(i,j,ll)/abs(tmp(i+js))
941 if(debugprint)print*,
'sample l omga for FV3',ll, &
946 if(me==0)print*,
'fail to read ', varname,
' at lev ',ll, &
947 'will derive height later'
952 call getrecn(recname,reclevtyp,reclev,nrec,varname,vcoordname,l,recn)
954 fldst = (recn-1)*fldsize
957 js = fldst + (j-jsta)*im
959 cfr(i,j,ll)=tmp(i+js)
966 if(imp_physics == 99)
then
967 allocate(p2d(im,lm),t2d(im,lm),q2d(im,lm),cw2d(im,lm), &
968 qs2d(im,lm),cfr2d(im,lm))
972 p2d(i,k) = pmid(i,j,ll)*0.01
975 cw2d(i,k) = cwm(i,j,ll)
976 es = min(
fpvsnew(t(i,j,ll)),pmid(i,j,ll))
977 qs2d(i,k) = eps*es/(pmid(i,j,ll)+epsm1*es)
983 ( p2d,t2d,q2d,qs2d,cw2d,im,lm,0, &
990 cfr(i,j,k) = cfr2d(i,k)
994 deallocate(p2d,t2d,q2d,qs2d,cw2d,cfr2d)
1000 call getrecn(recname,reclevtyp,reclev,nrec,varname,vcoordname,l,recn)
1002 fldst = (recn-1)*fldsize
1005 js = fldst + (j-jsta)*im
1007 q2(i,j,ll) = tmp(i+js)
1011 if(me==0)print*,
'fail to read ', varname,
' at lev ',ll
1019 if(debugprint)print*,
'sample l ',varname,
' = ',ll,q2(isa,jsa,ll)
1024 call getrecn(recname,reclevtyp,reclev,nrec,varname,vcoordname,l,recn)
1028 js = fldst + (j-jsta)*im
1030 ref_10cm(i,j,ll) = tmp(i+js)
1037 ref_10cm(i,j,ll) = spval
1040 if(me==0)print*,
'fail to read ', varname,
' at lev ',ll
1042 if(debugprint)print*,
'sample l ',varname,
' = ',ll,ref_10cm(isa,jsa,ll)
1059 if (recn_dpres == -9999)
then
1064 pint(i,j,l) = ak5(lm+2-l) + bk5(lm+2-l)*pint(i,j,lp1)
1065 if(recn_delz == -9999)pmid(i,j,l) = 0.5*(pint(i,j,l)+ &
1069 if (me == 0) print*,
'sample pint,pmid' ,ii,jj,l,pint(ii,jj,l),pmid(ii,jj,l)
1086 pint(i,j,1)=ak5(lp1)
1093 pint(i,j,l) = pint(i,j,l-1) + dpres(i,j,l-1)
1096 if (me == 0) print*,
'sample model pint,pmid' ,ii,jj,l &
1106 if (recn_vvel == -9999)
then
1107 allocate(ps2d(im,jsta_2l:jend_2u), psx2d(im,jsta_2l:jend_2u), &
1108 psy2d(im,jsta_2l:jend_2u))
1109 allocate(div3d(im,jsta:jend,lm))
1114 ps2d(i,j) = log(pint(i,j,lm+1))
1117 call calgradps(ps2d,psx2d,psy2d)
1119 call caldiv(uh, vh, div3d)
1122 allocate (vcrd(lm+1,2), d2d(im,lm), u2d(im,lm), v2d(im,lm), &
1123 pi2d(im,lm+1), pm2d(im,lm), omga2d(im,lm))
1129 vcrd(l,1) = vcoord4(l,1,1)
1130 vcrd(l,2) = vcoord4(l,2,1)
1138 if (j > jm-jtem+1)
then
1139 npass = npass + nint(0.5*(j-jm+jtem-1))
1140 elseif (j < jtem)
then
1141 npass = npass + nint(0.5*(jtem-j))
1148 u2d(i,l) = uh(i,j,ll)
1149 v2d(i,l) = vh(i,j,ll)
1150 d2d(i,l) = div3d(i,j,ll)
1154 call
modstuff2(im, im, lm, idvc, idsl, nvcoord, &
1155 vcrd, pint(1,j,lp1), psx2d(1,j), psy2d(1,j), &
1156 d2d, u2d, v2d, pi2d, pm2d, omga2d, me)
1160 if (npass <= 0 )
then
1165 omga(i,j,l) = omga2d(i,ll)
1175 omg1(i) = omga2d(i,ll)
1181 omg2(1) = omg2(im+1)
1182 omg2(im+2) = omg2(2)
1184 omg1(i-1) = third * (omg2(i-1) + omg2(i) + omg2(i+1))
1189 omga(i,j,l) = omg1(i)
1198 if (j ==1 .or. j == jm)
then
1205 tx2 = tx2 + omga(i,j,l)
1216 deallocate (vcrd,d2d,u2d,v2d,pi2d,pm2d,omga2d)
1217 deallocate (ps2d,psx2d,psy2d,div3d)
1219 deallocate (vcoord4)
1224 allocate(wrk1(im,jsta:jend),wrk2(im,jsta:jend))
1225 allocate(fi(im,jsta:jend,2))
1237 alpint(i,j,l)=log(pint(i,j,l))
1242 if (recn_delz == -9999)
then
1245 wrk1(i,j) = log(pmid(i,j,lm))
1246 wrk2(i,j) = t(i,j,lm)*(q(i,j,lm)*fv+1.0)
1247 fi(i,j,1) = fis(i,j) &
1248 + wrk2(i,j)*rgas*(alpint(i,j,lp1)-wrk1(i,j))
1249 zmid(i,j,lm) = fi(i,j,1) * gravi
1257 tvll = t(i,j,ll)*(q(i,j,ll)*fv+1.0)
1258 pmll = log(pmid(i,j,ll))
1260 fi(i,j,2) = fi(i,j,1) + (0.5*rgas)*(wrk2(i,j)+tvll) &
1262 zmid(i,j,ll) = fi(i,j,2) * gravi
1264 fact = (alpint(i,j,l)-wrk1(i,j)) / (pmll-wrk1(i,j))
1265 zint(i,j,l) = zmid(i,j,l) +(zmid(i,j,ll)-zmid(i,j,l))*fact
1266 fi(i,j,1) = fi(i,j,2)
1272 if (me == 0) print*,
'L ZINT= ',l,zint(ii,jj,l), &
1273 'alpint=',alpint(ii,jj,l),
'pmid=',log(pmid(ii,jj,l)), &
1274 'pmid(l-1)=',log(pmid(ii,jj,l-1)),
'zmd=',zmid(ii,jj,l), &
1275 'zmid(l-1)=',zmid(ii,jj,l-1)
1277 deallocate(wrk1,wrk2,fi)
1282 zmid(i,j,l)=zint(i,j,l+1)+(zint(i,j,l)-zint(i,j,l+1))* &
1283 (log(pmid(i,j,l))-alpint(i,j,l+1))/ &
1284 (alpint(i,j,l)-alpint(i,j,l+1))
1333 print *,
'gocart_on2=',gocart_on
1342 do j=jsta_2l,jend_2u
1344 dust(i,j,l,n) = spval
1352 vcoordname=
'mid layer'
1355 call assignnemsiovar(im,jsta,jend,jsta_2l,jend_2u &
1356 ,l,nrec,fldsize,spval,tmp &
1357 ,recname,reclevtyp,reclev,varname,vcoordname &
1358 ,dust(1:im,jsta_2l:jend_2u,ll,1))
1365 vcoordname=
'mid layer'
1368 call assignnemsiovar(im,jsta,jend,jsta_2l,jend_2u &
1369 ,l,nrec,fldsize,spval,tmp &
1370 ,recname,reclevtyp,reclev,varname,vcoordname &
1371 ,dust(1:im,jsta_2l:jend_2u,ll,2))
1373 dustcb(1:im,jsta_2l:jend_2u)=dustcb(1:im,jsta_2l:jend_2u)+ &
1374 (dust(1:im,jsta_2l:jend_2u,ll,1)+0.38*dust(1:im,jsta_2l:jend_2u,ll,2))* &
1375 dpres(1:im,jsta_2l:jend_2u,ll)/grav
1382 vcoordname=
'mid layer'
1385 call assignnemsiovar(im,jsta,jend,jsta_2l,jend_2u &
1386 ,l,nrec,fldsize,spval,tmp &
1387 ,recname,reclevtyp,reclev,varname,vcoordname &
1388 ,dust(1:im,jsta_2l:jend_2u,ll,3))
1394 vcoordname=
'mid layer'
1397 call assignnemsiovar(im,jsta,jend,jsta_2l,jend_2u &
1398 ,l,nrec,fldsize,spval,tmp &
1399 ,recname,reclevtyp,reclev,varname,vcoordname &
1400 ,dust(1:im,jsta_2l:jend_2u,ll,4))
1407 vcoordname=
'mid layer'
1410 call assignnemsiovar(im,jsta,jend,jsta_2l,jend_2u &
1411 ,l,nrec,fldsize,spval,tmp &
1412 ,recname,reclevtyp,reclev,varname,vcoordname &
1413 ,dust(1:im,jsta_2l:jend_2u,ll,5))
1415 dustallcb(1:im,jsta_2l:jend_2u)=dustallcb(1:im,jsta_2l:jend_2u)+ &
1416 (dust(1:im,jsta_2l:jend_2u,ll,1)+dust(1:im,jsta_2l:jend_2u,ll,2)+ &
1417 dust(1:im,jsta_2l:jend_2u,ll,3)+0.74*dust(1:im,jsta_2l:jend_2u,ll,4))* &
1418 dpres(1:im,jsta_2l:jend_2u,ll)/grav
1429 do j=jsta_2l,jend_2u
1431 salt(i,j,l,n) = spval
1439 vcoordname=
'mid layer'
1442 call assignnemsiovar(im,jsta,jend,jsta_2l,jend_2u &
1443 ,l,nrec,fldsize,spval,tmp &
1444 ,recname,reclevtyp,reclev,varname,vcoordname &
1445 ,salt(1:im,jsta_2l:jend_2u,ll,1))
1452 vcoordname=
'mid layer'
1455 call assignnemsiovar(im,jsta,jend,jsta_2l,jend_2u &
1456 ,l,nrec,fldsize,spval,tmp &
1457 ,recname,reclevtyp,reclev,varname,vcoordname &
1458 ,salt(1:im,jsta_2l:jend_2u,ll,2))
1465 vcoordname=
'mid layer'
1468 call assignnemsiovar(im,jsta,jend,jsta_2l,jend_2u &
1469 ,l,nrec,fldsize,spval,tmp &
1470 ,recname,reclevtyp,reclev,varname,vcoordname &
1471 ,salt(1:im,jsta_2l:jend_2u,ll,3))
1473 sscb(1:im,jsta_2l:jend_2u)=sscb(1:im,jsta_2l:jend_2u)+ &
1474 (salt(1:im,jsta_2l:jend_2u,ll,1)+ &
1475 salt(1:im,jsta_2l:jend_2u,ll,2)+0.83*salt(1:im,jsta_2l:jend_2u,ll,3))* &
1476 dpres(1:im,jsta_2l:jend_2u,ll)/grav
1483 vcoordname=
'mid layer'
1486 call assignnemsiovar(im,jsta,jend,jsta_2l,jend_2u &
1487 ,l,nrec,fldsize,spval,tmp &
1488 ,recname,reclevtyp,reclev,varname,vcoordname &
1489 ,salt(1:im,jsta_2l:jend_2u,ll,4))
1495 vcoordname=
'mid layer'
1498 call assignnemsiovar(im,jsta,jend,jsta_2l,jend_2u &
1499 ,l,nrec,fldsize,spval,tmp &
1500 ,recname,reclevtyp,reclev,varname,vcoordname &
1501 ,salt(1:im,jsta_2l:jend_2u,ll,5))
1503 ssallcb(1:im,jsta_2l:jend_2u)=ssallcb(1:im,jsta_2l:jend_2u)+ &
1504 (salt(1:im,jsta_2l:jend_2u,ll,1)+salt(1:im,jsta_2l:jend_2u,ll,2)+ &
1505 salt(1:im,jsta_2l:jend_2u,ll,3)+ &
1506 salt(1:im,jsta_2l:jend_2u,ll,4))* &
1507 dpres(1:im,jsta_2l:jend_2u,ll)/grav
1517 do j=jsta_2l,jend_2u
1519 soot(i,j,l,n) = spval
1527 vcoordname=
'mid layer'
1530 call assignnemsiovar(im,jsta,jend,jsta_2l,jend_2u &
1531 ,l,nrec,fldsize,spval,tmp &
1532 ,recname,reclevtyp,reclev,varname,vcoordname &
1533 ,soot(1:im,jsta_2l:jend_2u,ll,1))
1540 vcoordname=
'mid layer'
1543 call assignnemsiovar(im,jsta,jend,jsta_2l,jend_2u &
1544 ,l,nrec,fldsize,spval,tmp &
1545 ,recname,reclevtyp,reclev,varname,vcoordname &
1546 ,soot(1:im,jsta_2l:jend_2u,ll,2))
1548 bccb(1:im,jsta_2l:jend_2u)=bccb(1:im,jsta_2l:jend_2u)+ &
1549 (soot(1:im,jsta_2l:jend_2u,ll,1)+soot(1:im,jsta_2l:jend_2u,ll,2))* &
1550 dpres(1:im,jsta_2l:jend_2u,ll)/grav
1560 do j=jsta_2l,jend_2u
1562 waso(i,j,l,n) = spval
1570 vcoordname=
'mid layer'
1573 call assignnemsiovar(im,jsta,jend,jsta_2l,jend_2u &
1574 ,l,nrec,fldsize,spval,tmp &
1575 ,recname,reclevtyp,reclev,varname,vcoordname &
1576 ,waso(1:im,jsta_2l:jend_2u,ll,1))
1583 vcoordname=
'mid layer'
1586 call assignnemsiovar(im,jsta,jend,jsta_2l,jend_2u &
1587 ,l,nrec,fldsize,spval,tmp &
1588 ,recname,reclevtyp,reclev,varname,vcoordname &
1589 ,waso(1:im,jsta_2l:jend_2u,ll,2))
1591 occb(1:im,jsta_2l:jend_2u)=occb(1:im,jsta_2l:jend_2u)+ &
1592 (waso(1:im,jsta_2l:jend_2u,ll,1)+waso(1:im,jsta_2l:jend_2u,ll,2)) * &
1593 dpres(1:im,jsta_2l:jend_2u,ll)/grav
1603 do j=jsta_2l,jend_2u
1605 suso(i,j,l,n) = spval
1613 vcoordname=
'mid layer'
1616 call assignnemsiovar(im,jsta,jend,jsta_2l,jend_2u &
1617 ,l,nrec,fldsize,spval,tmp &
1618 ,recname,reclevtyp,reclev,varname,vcoordname &
1619 ,suso(1:im,jsta_2l:jend_2u,ll,1))
1621 sulfcb(1:im,jsta_2l:jend_2u)=sulfcb(1:im,jsta_2l:jend_2u)+ &
1622 suso(1:im,jsta_2l:jend_2u,ll,1)* &
1623 dpres(1:im,jsta_2l:jend_2u,ll)/grav
1633 do j=jsta_2l,jend_2u
1635 pp25(i,j,l,n) = spval
1643 vcoordname=
'mid layer'
1646 call assignnemsiovar(im,jsta,jend,jsta_2l,jend_2u &
1647 ,l,nrec,fldsize,spval,tmp &
1648 ,recname,reclevtyp,reclev,varname,vcoordname &
1649 ,pp25(1:im,jsta_2l:jend_2u,ll,1))
1650 pp25cb(1:im,jsta_2l:jend_2u)=pp25cb(1:im,jsta_2l:jend_2u)+ &
1651 pp25(1:im,jsta_2l:jend_2u,ll,1)* &
1652 dpres(1:im,jsta_2l:jend_2u,ll)/grav
1661 do j=jsta_2l,jend_2u
1663 pp10(i,j,l,n) = spval
1671 vcoordname=
'mid layer'
1674 call assignnemsiovar(im,jsta,jend,jsta_2l,jend_2u &
1675 ,l,nrec,fldsize,spval,tmp &
1676 ,recname,reclevtyp,reclev,varname,vcoordname &
1677 ,pp10(1:im,jsta_2l:jend_2u,ll,1))
1678 pp10cb(1:im,jsta_2l:jend_2u)=pp10cb(1:im,jsta_2l:jend_2u)+ &
1679 pp10(1:im,jsta_2l:jend_2u,ll,1)* &
1680 dpres(1:im,jsta_2l:jend_2u,ll)/grav
1691 tv = t(i,j,l) * (h1+d608*max(q(i,j,l),qmin))
1692 rhomid(i,j,l) = pmid(i,j,l) / (rd*tv)
1694 IF ( dust(i,j,l,n) < spval)
THEN
1695 dust(i,j,l,n) = max(dust(i,j,l,n), 0.0)
1699 IF ( salt(i,j,l,n) < spval)
THEN
1700 salt(i,j,l,n) = max(salt(i,j,l,n), 0.0)
1704 IF ( waso(i,j,l,n) < spval)
THEN
1705 waso(i,j,l,n) = max(waso(i,j,l,n), 0.0)
1709 IF ( soot(i,j,l,n) < spval)
THEN
1710 soot(i,j,l,n) = max(soot(i,j,l,n), 0.0)
1714 IF ( suso(i,j,l,n) < spval)
THEN
1715 suso(i,j,l,n) = max(suso(i,j,l,n), 0.0)
1726 dustcb(i,j) = max(dustcb(i,j), 0.0)
1727 dustallcb(i,j) = max(dustallcb(i,j), 0.0)
1728 sscb(i,j) = max(sscb(i,j), 0.0)
1729 ssallcb(i,j) = max(ssallcb(i,j), 0.0)
1730 bccb(i,j) = max(bccb(i,j), 0.0)
1731 occb(i,j) = max(occb(i,j), 0.0)
1732 sulfcb(i,j) = max(sulfcb(i,j), 0.0)
1733 pp25cb(i,j) = max(pp25cb(i,j), 0.0)
1734 pp10cb(i,j) = max(pp10cb(i,j), 0.0)
1736 dusmass(i,j)=(dust(i,j,l,1)+dust(i,j,l,2)+dust(i,j,l,3)+ &
1737 0.74*dust(i,j,l,4)+salt(i,j,l,1)+salt(i,j,l,2)+salt(i,j,l,3)+ &
1738 salt(i,j,l,4) + soot(i,j,l,1)+soot(i,j,l,2)+waso(i,j,l,1)+ &
1739 waso(i,j,l,2) +suso(i,j,l,1)+pp25(i,j,l,1)+pp10(i,j,l,1)) &
1742 dustpm(i,j)=(dust(i,j,l,1)+0.38*dust(i,j,l,2))*rhomid(i,j,l)
1743 dustpm10(i,j)=(dust(i,j,l,1)+dust(i,j,l,2)+dust(i,j,l,3)+ &
1744 0.74*dust(i,j,l,4))*rhomid(i,j,l)
1745 sspm(i,j)=(salt(i,j,l,1)+salt(i,j,l,2)+ &
1746 0.83*salt(i,j,l,3))*rhomid(i,j,l)
1748 dusmass25(i,j)=(dust(i,j,l,1)+0.38*dust(i,j,l,2)+ &
1749 salt(i,j,l,1)+salt(i,j,l,2)+0.83*salt(i,j,l,3) + &
1750 soot(i,j,l,1)+soot(i,j,l,2)+waso(i,j,l,1)+ &
1751 waso(i,j,l,2) +suso(i,j,l,1)+pp25(i,j,l,1))*rhomid(i,j,l)
1753 ducmass(i,j)=dustallcb(i,j)+ssallcb(i,j)+bccb(i,j)+ &
1754 occb(i,j)+sulfcb(i,j)+pp25cb(i,j)+pp10cb(i,j)
1756 ducmass25(i,j)=dustcb(i,j)+sscb(i,j)+bccb(i,j)+occb(i,j) &
1757 +sulfcb(i,j)+pp25cb(i,j)
1763 call nemsio_close(nfile,iret=status)
1764 deallocate(tmp,recname,reclevtyp,reclev)
1774 call nemsio_getfilehead(ffile,iret=status,nrec=nrec)
1775 print*,
'nrec for flux file=',nrec
1776 allocate(recname(nrec),reclevtyp(nrec),reclev(nrec))
1777 call nemsio_getfilehead(ffile,iret=iret &
1778 ,recname=recname ,reclevtyp=reclevtyp,reclev=reclev)
1782 print *,
'recname,reclevtyp,reclev=',trim(recname(i)),
' ', &
1783 trim(reclevtyp(i)),reclev(i)
1790 call nemsio_getheadvar(ffile,trim(varname),ivegsrc,iret)
1792 print*,varname,
' not found in file-use 1 for IGBP as default'
1795 if (me == 0) print*,
'IVEGSRC= ',ivegsrc
1800 else if(ivegsrc==1)
then
1802 else if(ivegsrc==0)
then
1805 if (me == 0) print*,
'novegtype= ',novegtype
1807 varname=
'CU_PHYSICS'
1808 call nemsio_getheadvar(ffile,trim(varname),icu_physics,iret)
1810 print*,varname,
" not found in file-Assigned 4 for SAS as default"
1813 if (me == 0) print*,
'CU_PHYSICS= ',icu_physics
1816 call nemsio_getheadvar(ffile,trim(varname),dtp,iret)
1818 print*,varname,
" not found in file-Assigned 225. for dtp as default"
1821 if (me == 0) print*,
'dtp= ',dtp
1854 fldsize = (jend-jsta+1)*im
1855 allocate(tmp(fldsize*nrec))
1856 print*,
'allocate tmp successfully'
1858 call nemsio_denseread(ffile,1,im,jsta,jend,tmp,iret=iret)
1868 call assignnemsiovar(im,jsta,jend,jsta_2l,jend_2u &
1869 ,l,nrec,fldsize,spval,tmp &
1870 ,recname,reclevtyp,reclev,varname,vcoordname,sm)
1871 if(debugprint)print*,
'sample ',varname,
' =',sm(im/2,(jsta+jend)/2)
1876 if (sm(i,j) /= spval) sm(i,j) = 1.0 - sm(i,j)
1885 call assignnemsiovar(im,jsta,jend,jsta_2l,jend_2u &
1886 ,l,nrec,fldsize,spval,tmp &
1887 ,recname,reclevtyp,reclev,varname,vcoordname,sice)
1889 if(debugprint)print*,
'sample ',varname,
' = ',sice(isa,jsa)
1902 if (sm(i,j) /= spval .and. sm(i,j) == 0.0) sice(i,j) = 0.0
1911 call assignnemsiovar(im,jsta,jend,jsta_2l,jend_2u &
1912 ,l,nrec,fldsize,spval,tmp &
1913 ,recname,reclevtyp,reclev,varname,vcoordname &
1915 if(debugprint)print*,
'sample ',varname,
' = ',pblh(isa,jsa)
1921 call assignnemsiovar(im,jsta,jend,jsta_2l,jend_2u &
1922 ,l,nrec,fldsize,spval,tmp &
1923 ,recname,reclevtyp,reclev,varname,vcoordname &
1931 call assignnemsiovar(im,jsta,jend,jsta_2l,jend_2u &
1932 ,l,nrec,fldsize,spval,tmp &
1933 ,recname,reclevtyp,reclev,varname,vcoordname &
1941 call assignnemsiovar(im,jsta,jend,jsta_2l,jend_2u &
1942 ,l,nrec,fldsize,spval,tmp &
1943 ,recname,reclevtyp,reclev,varname,vcoordname &
1950 call assignnemsiovar(im,jsta,jend,jsta_2l,jend_2u &
1951 ,l,nrec,fldsize,spval,tmp &
1952 ,recname,reclevtyp,reclev,varname,vcoordname &
1959 call assignnemsiovar(im,jsta,jend,jsta_2l,jend_2u &
1960 ,l,nrec,fldsize,spval,tmp &
1961 ,recname,reclevtyp,reclev,varname,vcoordname &
1969 if (ths(i,j) /= spval)
then
1971 ths(i,j) = ths(i,j) * (p1000/pint(i,j,lp1))**capa
1977 if (sm(i,j) /= 0.0)
then
1978 if (sice(i,j) >= 0.15)
then
1981 sst(i,j) = ths(i,j) * (pint(i,j,lp1)/p1000)**capa
2002 varname=
'cpratb_ave'
2005 call assignnemsiovar(im,jsta,jend,jsta_2l,jend_2u &
2006 ,l,nrec,fldsize,spval,tmp &
2007 ,recname,reclevtyp,reclev,varname,vcoordname &
2013 if (avgcprate(i,j) /= spval) avgcprate(i,j) = avgcprate(i,j) * (dtq2*0.001)
2021 call assignnemsiovar(im,jsta,jend,jsta_2l,jend_2u &
2022 ,l,nrec,fldsize,spval,tmp &
2023 ,recname,reclevtyp,reclev,varname,vcoordname &
2028 if (avgcprate_cont(i,j) /= spval) avgcprate_cont(i,j) = &
2029 avgcprate_cont(i,j) * (dtq2*0.001)
2038 varname=
'prateb_ave'
2041 call assignnemsiovar(im,jsta,jend,jsta_2l,jend_2u &
2042 ,l,nrec,fldsize,spval,tmp &
2043 ,recname,reclevtyp,reclev,varname,vcoordname &
2049 if (avgprec(i,j) /= spval) avgprec(i,j) = avgprec(i,j) * (dtq2*0.001)
2059 call assignnemsiovar(im,jsta,jend,jsta_2l,jend_2u &
2060 ,l,nrec,fldsize,spval,tmp &
2061 ,recname,reclevtyp,reclev,varname,vcoordname &
2067 if (avgprec_cont(i,j) /= spval) avgprec_cont(i,j) = avgprec_cont(i,j) &
2078 call assignnemsiovar(im,jsta,jend,jsta_2l,jend_2u &
2079 ,l,nrec,fldsize,spval,tmp &
2080 ,recname,reclevtyp,reclev,varname,vcoordname &
2087 if (prec(i,j) /= spval) prec(i,j) = prec(i,j) * (dtq2*0.001) &
2096 call assignnemsiovar(im,jsta,jend,jsta_2l,jend_2u &
2097 ,l,nrec,fldsize,spval,tmp &
2098 ,recname,reclevtyp,reclev,varname,vcoordname &
2103 if (cprate(i,j) /= spval)
then
2104 cprate(i,j) = max(0.,cprate(i,j)) * (dtq2*0.001) * 1000. / dtp
2110 if(debugprint)print*,
'sample ',varname,
' = ',cprate(isa,jsa)
2119 call assignnemsiovar(im,jsta,jend,jsta_2l,jend_2u &
2120 ,l,nrec,fldsize,spval,tmp &
2121 ,recname,reclevtyp,reclev,varname,vcoordname &
2127 if (sm(i,j) == 1.0 .and. sice(i,j)==0.) sno(i,j) = spval
2136 call assignnemsiovar(im,jsta,jend,jsta_2l,jend_2u &
2137 ,l,nrec,fldsize,spval,tmp &
2138 ,recname,reclevtyp,reclev,varname,vcoordname &
2143 if (sm(i,j)==1.0 .and. sice(i,j)==0.) snoavg(i,j)=spval
2144 if(snoavg(i,j)/=spval)snoavg(i,j)=snoavg(i,j)/100.
2152 call assignnemsiovar(im,jsta,jend,jsta_2l,jend_2u &
2153 ,l,nrec,fldsize,spval,tmp &
2154 ,recname,reclevtyp,reclev,varname,vcoordname &
2160 if (sm(i,j)==1.0 .and. sice(i,j)==0.) si(i,j)=spval
2161 if (si(i,j) /= spval) si(i,j) = si(i,j) * 1000.0
2175 vcoordname=
'2 m above gnd'
2177 call assignnemsiovar(im,jsta,jend,jsta_2l,jend_2u &
2178 ,l,nrec,fldsize,spval,tmp &
2179 ,recname,reclevtyp,reclev,varname,vcoordname &
2186 pshltr(i,j)=pint(i,j,lm+1)*exp(-0.068283/tshltr(i,j))
2187 tshltr(i,j)= tshltr(i,j)*(p1000/pshltr(i,j))**capa
2196 vcoordname=
'2 m above gnd'
2198 call assignnemsiovar(im,jsta,jend,jsta_2l,jend_2u &
2199 ,l,nrec,fldsize,spval,tmp &
2200 ,recname,reclevtyp,reclev,varname,vcoordname &
2208 call assignnemsiovar(im,jsta,jend,jsta_2l,jend_2u &
2209 ,l,nrec,fldsize,spval,tmp &
2210 ,recname,reclevtyp,reclev,varname,vcoordname &
2216 if (avgalbedo(i,j) /= spval) avgalbedo(i,j) = avgalbedo(i,j) * 0.01
2223 vcoordname=
'atmos col'
2225 call assignnemsiovar(im,jsta,jend,jsta_2l,jend_2u &
2226 ,l,nrec,fldsize,spval,tmp &
2227 ,recname,reclevtyp,reclev,varname,vcoordname &
2233 if (avgtcdc(i,j) /= spval) avgtcdc(i,j) = avgtcdc(i,j) * 0.01
2240 do j=jsta_2l,jend_2u
2251 call assignnemsiovar(im,jsta,jend,jsta_2l,jend_2u &
2252 ,l,nrec,fldsize,spval,tmp &
2253 ,recname,reclevtyp,reclev,varname,vcoordname &
2259 if (mxsnal(i,j) /= spval) mxsnal(i,j) = mxsnal(i,j) * 0.01
2265 do j=jsta_2l,jend_2u
2275 tlmh = t(i,j,lm) * t(i,j,lm)
2276 sigt4(i,j) = 5.67e-8 * tlmh * tlmh
2284 do j=jsta_2l,jend_2u
2294 vcoordname=
'high cld lay'
2296 call assignnemsiovar(im,jsta,jend,jsta_2l,jend_2u &
2297 ,l,nrec,fldsize,spval,tmp &
2298 ,recname,reclevtyp,reclev,varname,vcoordname &
2304 if (avgcfrach(i,j) /= spval) avgcfrach(i,j) = avgcfrach(i,j) * 0.01
2311 vcoordname=
'low cld lay'
2313 call assignnemsiovar(im,jsta,jend,jsta_2l,jend_2u &
2314 ,l,nrec,fldsize,spval,tmp &
2315 ,recname,reclevtyp,reclev,varname,vcoordname &
2321 if (avgcfracl(i,j) /= spval) avgcfracl(i,j) = avgcfracl(i,j) * 0.01
2328 vcoordname=
'mid cld lay'
2330 call assignnemsiovar(im,jsta,jend,jsta_2l,jend_2u &
2331 ,l,nrec,fldsize,spval,tmp &
2332 ,recname,reclevtyp,reclev,varname,vcoordname &
2338 if (avgcfracm(i,j) /= spval) avgcfracm(i,j) = avgcfracm(i,j) * 0.01
2345 vcoordname=
'convect-cld laye'
2347 call assignnemsiovar(im,jsta,jend,jsta_2l,jend_2u &
2348 ,l,nrec,fldsize,spval,tmp &
2349 ,recname,reclevtyp,reclev,varname,vcoordname &
2355 if (cnvcfr(i,j) /= spval) cnvcfr(i,j)= cnvcfr(i,j) * 0.01
2364 call assignnemsiovar(im,jsta,jend,jsta_2l,jend_2u &
2365 ,l,nrec,fldsize,spval,tmp &
2366 ,recname,reclevtyp,reclev,varname,vcoordname &
2370 do j = jsta_2l, jend_2u
2372 if (buf(i,j) < spval)
then
2373 islope(i,j) = nint(buf(i,j))
2385 call assignnemsiovar(im,jsta,jend,jsta_2l,jend_2u &
2386 ,l,nrec,fldsize,spval,tmp &
2387 ,recname,reclevtyp,reclev,varname,vcoordname &
2393 if (cmc(i,j) /= spval) cmc(i,j) = cmc(i,j) * 0.001
2394 if (sm(i,j) /= 0.0) cmc(i,j) = spval
2400 do j=jsta_2l,jend_2u
2410 call assignnemsiovar(im,jsta,jend,jsta_2l,jend_2u &
2411 ,l,nrec,fldsize,spval,tmp &
2412 ,recname,reclevtyp,reclev,varname,vcoordname &
2417 if(sr(i,j) /= spval)
then
2419 sr(i,j)=min(1.,max(0.,sr(i,j)))
2428 call assignnemsiovar(im,jsta,jend,jsta_2l,jend_2u &
2429 ,l,nrec,fldsize,spval,tmp &
2430 ,recname,reclevtyp,reclev,varname,vcoordname &
2435 if (sice(i,j) == spval .or. sice(i,j) == 0.) ti(i,j)=spval
2443 call assignnemsiovar(im,jsta,jend,jsta_2l,jend_2u &
2444 ,l,nrec,fldsize,spval,tmp &
2445 ,recname,reclevtyp,reclev,varname,vcoordname &
2450 if (vegfrc(i,j) /= spval)
then
2451 vegfrc(i,j) = vegfrc(i,j) * 0.01
2461 if (sm(i,j) /= 0.0) vegfrc(i,j) = spval
2475 vcoordname=
'0-10 cm down'
2477 call assignnemsiovar(im,jsta,jend,jsta_2l,jend_2u &
2478 ,l,nrec,fldsize,spval,tmp &
2479 ,recname,reclevtyp,reclev,varname,vcoordname &
2485 if (sm(i,j) /= 0.0) sh2o(i,j,1) = spval
2491 vcoordname=
'10-40 cm down'
2493 call assignnemsiovar(im,jsta,jend,jsta_2l,jend_2u &
2494 ,l,nrec,fldsize,spval,tmp &
2495 ,recname,reclevtyp,reclev,varname,vcoordname &
2501 if (sm(i,j) /= 0.0) sh2o(i,j,2) = spval
2507 vcoordname=
'40-100 cm down'
2509 call assignnemsiovar(im,jsta,jend,jsta_2l,jend_2u &
2510 ,l,nrec,fldsize,spval,tmp &
2511 ,recname,reclevtyp,reclev,varname,vcoordname &
2517 if (sm(i,j) /= 0.0) sh2o(i,j,3) = spval
2523 vcoordname=
'100-200 cm down'
2525 call assignnemsiovar(im,jsta,jend,jsta_2l,jend_2u &
2526 ,l,nrec,fldsize,spval,tmp &
2527 ,recname,reclevtyp,reclev,varname,vcoordname &
2533 if (sm(i,j) /= 0.0) sh2o(i,j,4) = spval
2540 vcoordname=
'0-10 cm down'
2543 call assignnemsiovar(im,jsta,jend,jsta_2l,jend_2u &
2544 ,l,nrec,fldsize,spval,tmp &
2545 ,recname,reclevtyp,reclev,varname,vcoordname &
2551 if (sm(i,j) /= 0.0) smc(i,j,1) = spval
2557 vcoordname=
'10-40 cm down'
2559 call assignnemsiovar(im,jsta,jend,jsta_2l,jend_2u &
2560 ,l,nrec,fldsize,spval,tmp &
2561 ,recname,reclevtyp,reclev,varname,vcoordname &
2567 if (sm(i,j) /= 0.0) smc(i,j,2) = spval
2573 vcoordname=
'40-100 cm down'
2575 call assignnemsiovar(im,jsta,jend,jsta_2l,jend_2u &
2576 ,l,nrec,fldsize,spval,tmp &
2577 ,recname,reclevtyp,reclev,varname,vcoordname &
2583 if (sm(i,j) /= 0.0) smc(i,j,3) = spval
2589 vcoordname=
'100-200 cm down'
2591 call assignnemsiovar(im,jsta,jend,jsta_2l,jend_2u &
2592 ,l,nrec,fldsize,spval,tmp &
2593 ,recname,reclevtyp,reclev,varname,vcoordname &
2599 if (sm(i,j) /= 0.0) smc(i,j,4) = spval
2606 vcoordname=
'0-10 cm down'
2608 call assignnemsiovar(im,jsta,jend,jsta_2l,jend_2u &
2609 ,l,nrec,fldsize,spval,tmp &
2610 ,recname,reclevtyp,reclev,varname,vcoordname &
2616 if (sm(i,j) == 1.0 .and. sice(i,j) ==0.) stc(i,j,1) = spval
2623 vcoordname=
'10-40 cm down'
2625 call assignnemsiovar(im,jsta,jend,jsta_2l,jend_2u &
2626 ,l,nrec,fldsize,spval,tmp &
2627 ,recname,reclevtyp,reclev,varname,vcoordname &
2633 if (sm(i,j) == 1.0 .and. sice(i,j) ==0.) stc(i,j,2) = spval
2640 vcoordname=
'40-100 cm down'
2642 call assignnemsiovar(im,jsta,jend,jsta_2l,jend_2u &
2643 ,l,nrec,fldsize,spval,tmp &
2644 ,recname,reclevtyp,reclev,varname,vcoordname &
2650 if (sm(i,j) == 1.0 .and. sice(i,j) ==0.) stc(i,j,3) = spval
2657 vcoordname=
'100-200 cm down'
2659 call assignnemsiovar(im,jsta,jend,jsta_2l,jend_2u &
2660 ,l,nrec,fldsize,spval,tmp &
2661 ,recname,reclevtyp,reclev,varname,vcoordname &
2667 if (sm(i,j) == 1.0 .and. sice(i,j) ==0.) stc(i,j,4) = spval
2693 call assignnemsiovar(im,jsta,jend,jsta_2l,jend_2u &
2694 ,l,nrec,fldsize,spval,tmp &
2695 ,recname,reclevtyp,reclev,varname,vcoordname &
2702 call assignnemsiovar(im,jsta,jend,jsta_2l,jend_2u &
2703 ,l,nrec,fldsize,spval,tmp &
2704 ,recname,reclevtyp,reclev,varname,vcoordname &
2711 call assignnemsiovar(im,jsta,jend,jsta_2l,jend_2u &
2712 ,l,nrec,fldsize,spval,tmp &
2713 ,recname,reclevtyp,reclev,varname,vcoordname &
2719 call assignnemsiovar(im,jsta,jend,jsta_2l,jend_2u &
2720 ,l,nrec,fldsize,spval,tmp &
2721 ,recname,reclevtyp,reclev,varname,vcoordname &
2728 if (alwout(i,j) /= spval) alwout(i,j) = -alwout(i,j)
2735 vcoordname=
'nom. top'
2737 call assignnemsiovar(im,jsta,jend,jsta_2l,jend_2u &
2738 ,l,nrec,fldsize,spval,tmp &
2739 ,recname,reclevtyp,reclev,varname,vcoordname &
2744 do j=jsta_2l,jend_2u
2760 call assignnemsiovar(im,jsta,jend,jsta_2l,jend_2u &
2761 ,l,nrec,fldsize,spval,tmp &
2762 ,recname,reclevtyp,reclev,varname,vcoordname &
2770 call assignnemsiovar(im,jsta,jend,jsta_2l,jend_2u &
2771 ,l,nrec,fldsize,spval,tmp &
2772 ,recname,reclevtyp,reclev,varname,vcoordname &
2779 call assignnemsiovar(im,jsta,jend,jsta_2l,jend_2u &
2780 ,l,nrec,fldsize,spval,tmp &
2781 ,recname,reclevtyp,reclev,varname,vcoordname &
2789 call assignnemsiovar(im,jsta,jend,jsta_2l,jend_2u &
2790 ,l,nrec,fldsize,spval,tmp &
2791 ,recname,reclevtyp,reclev,varname,vcoordname &
2799 call assignnemsiovar(im,jsta,jend,jsta_2l,jend_2u &
2800 ,l,nrec,fldsize,spval,tmp &
2801 ,recname,reclevtyp,reclev,varname,vcoordname &
2807 if (aswout(i,j) /= spval) aswout(i,j) = -aswout(i,j)
2816 call assignnemsiovar(im,jsta,jend,jsta_2l,jend_2u &
2817 ,l,nrec,fldsize,spval,tmp &
2818 ,recname,reclevtyp,reclev,varname,vcoordname &
2823 vcoordname=
'nom. top'
2825 call assignnemsiovar(im,jsta,jend,jsta_2l,jend_2u &
2826 ,l,nrec,fldsize,spval,tmp &
2827 ,recname,reclevtyp,reclev,varname,vcoordname &
2834 vcoordname=
'nom. top'
2836 call assignnemsiovar(im,jsta,jend,jsta_2l,jend_2u &
2837 ,l,nrec,fldsize,spval,tmp &
2838 ,recname,reclevtyp,reclev,varname,vcoordname &
2847 call assignnemsiovar(im,jsta,jend,jsta_2l,jend_2u &
2848 ,l,nrec,fldsize,spval,tmp &
2849 ,recname,reclevtyp,reclev,varname,vcoordname &
2855 if (sfcshx(i,j) /= spval) sfcshx(i,j) = -sfcshx(i,j)
2864 call assignnemsiovar(im,jsta,jend,jsta_2l,jend_2u &
2865 ,l,nrec,fldsize,spval,tmp &
2866 ,recname,reclevtyp,reclev,varname,vcoordname &
2871 if (twbs(i,j) /= spval) twbs(i,j) = -twbs(i,j)
2884 call assignnemsiovar(im,jsta,jend,jsta_2l,jend_2u &
2885 ,l,nrec,fldsize,spval,tmp &
2886 ,recname,reclevtyp,reclev,varname,vcoordname &
2892 if (sfclhx(i,j) /= spval) sfclhx(i,j) = -sfclhx(i,j)
2901 call assignnemsiovar(im,jsta,jend,jsta_2l,jend_2u &
2902 ,l,nrec,fldsize,spval,tmp &
2903 ,recname,reclevtyp,reclev,varname,vcoordname &
2909 if (qwbs(i,j) /= spval) qwbs(i,j) = -qwbs(i,j)
2917 call assignnemsiovar(im,jsta,jend,jsta_2l,jend_2u &
2918 ,l,nrec,fldsize,spval,tmp &
2919 ,recname,reclevtyp,reclev,varname,vcoordname &
2925 if (sm(i,j) == 1.0 .and. sice(i,j) ==0.) subshx(i,j) = spval
2934 call assignnemsiovar(im,jsta,jend,jsta_2l,jend_2u &
2935 ,l,nrec,fldsize,spval,tmp &
2936 ,recname,reclevtyp,reclev,varname,vcoordname &
2942 if (sm(i,j) == 1.0 .and. sice(i,j) ==0.) grnflx(i,j) = spval
2949 call assignnemsiovar(im,jsta,jend,jsta_2l,jend_2u &
2950 ,l,nrec,fldsize,spval,tmp &
2951 ,recname,reclevtyp,reclev,varname,vcoordname &
2959 call assignnemsiovar(im,jsta,jend,jsta_2l,jend_2u &
2960 ,l,nrec,fldsize,spval,tmp &
2961 ,recname,reclevtyp,reclev,varname,vcoordname &
2966 do j=jsta_2l,jend_2u
2977 call assignnemsiovar(im,jsta,jend,jsta_2l,jend_2u &
2978 ,l,nrec,fldsize,spval,tmp &
2979 ,recname,reclevtyp,reclev,varname,vcoordname &
2988 call assignnemsiovar(im,jsta,jend,jsta_2l,jend_2u &
2989 ,l,nrec,fldsize,spval,tmp &
2990 ,recname,reclevtyp,reclev,varname,vcoordname &
2998 call assignnemsiovar(im,jsta,jend,jsta_2l,jend_2u &
2999 ,l,nrec,fldsize,spval,tmp &
3000 ,recname,reclevtyp,reclev,varname,vcoordname &
3006 if (sm(i,j) == 1.0 .and. sice(i,j) ==0.) avgpotevp(i,j) = spval
3015 call assignnemsiovar(im,jsta,jend,jsta_2l,jend_2u &
3016 ,l,nrec,fldsize,spval,tmp &
3017 ,recname,reclevtyp,reclev,varname,vcoordname &
3023 if (sm(i,j) == 1.0 .and. sice(i,j) ==0.) potevp(i,j) = spval
3029 do j=jsta_2l,jend_2u
3032 rlwtt(i,j,l) = spval
3034 rswtt(i,j,l) = spval
3036 tcucn(i,j,l) = spval
3037 tcucns(i,j,l) = spval
3039 train(i,j,l) = spval
3051 vcoordname=
'10 m above gnd'
3053 call assignnemsiovar(im,jsta,jend,jsta_2l,jend_2u &
3054 ,l,nrec,fldsize,spval,tmp &
3055 ,recname,reclevtyp,reclev,varname,vcoordname &
3067 vcoordname=
'10 m above gnd'
3069 call assignnemsiovar(im,jsta,jend,jsta_2l,jend_2u &
3070 ,l,nrec,fldsize,spval,tmp &
3071 ,recname,reclevtyp,reclev,varname,vcoordname &
3087 call assignnemsiovar(im,jsta,jend,jsta_2l,jend_2u &
3088 ,l,nrec,fldsize,spval,tmp &
3089 ,recname,reclevtyp,reclev,varname,vcoordname &
3097 do j = jsta_2l, jend_2u
3099 if (buf(i,j) < spval)
then
3100 ivgtyp(i,j) = nint(buf(i,j))
3112 call assignnemsiovar(im,jsta,jend,jsta_2l,jend_2u &
3113 ,l,nrec,fldsize,spval,tmp &
3114 ,recname,reclevtyp,reclev,varname,vcoordname &
3122 do j = jsta_2l, jend_2u
3124 if (buf(i,j) < spval)
then
3125 isltyp(i,j) = nint(buf(i,j))
3134 do j=jsta_2l,jend_2u
3142 thz0(i,j) = ths(i,j)
3150 do j=jsta_2l,jend_2u
3152 el_pbl(i,j,l) = spval
3153 exch_h(i,j,l) = spval
3162 vcoordname=
'convect-cld top'
3164 call assignnemsiovar(im,jsta,jend,jsta_2l,jend_2u &
3165 ,l,nrec,fldsize,spval,tmp &
3166 ,recname,reclevtyp,reclev,varname,vcoordname &
3174 if(ptop(i,j) <= 0.0) ptop(i,j) = spval
3179 if(ptop(i,j) < spval)
then
3181 if(ptop(i,j) <= pmid(i,j,l))
then
3195 vcoordname=
'convect-cld bot'
3197 call assignnemsiovar(im,jsta,jend,jsta_2l,jend_2u &
3198 ,l,nrec,fldsize,spval,tmp &
3199 ,recname,reclevtyp,reclev,varname,vcoordname &
3207 if(pbot(i,j) <= 0.0) pbot(i,j) = spval
3214 if(pbot(i,j) < spval)
then
3216 if(pbot(i,j) >= pmid(i,j,l))
then
3229 vcoordname=
'low cld top'
3231 call assignnemsiovar(im,jsta,jend,jsta_2l,jend_2u &
3232 ,l,nrec,fldsize,spval,tmp &
3233 ,recname,reclevtyp,reclev,varname,vcoordname &
3239 vcoordname=
'low cld bot'
3241 call assignnemsiovar(im,jsta,jend,jsta_2l,jend_2u &
3242 ,l,nrec,fldsize,spval,tmp &
3243 ,recname,reclevtyp,reclev,varname,vcoordname &
3249 vcoordname=
'low cld top'
3251 call assignnemsiovar(im,jsta,jend,jsta_2l,jend_2u &
3252 ,l,nrec,fldsize,spval,tmp &
3253 ,recname,reclevtyp,reclev,varname,vcoordname &
3259 vcoordname=
'mid cld top'
3261 call assignnemsiovar(im,jsta,jend,jsta_2l,jend_2u &
3262 ,l,nrec,fldsize,spval,tmp &
3263 ,recname,reclevtyp,reclev,varname,vcoordname &
3269 vcoordname=
'mid cld bot'
3271 call assignnemsiovar(im,jsta,jend,jsta_2l,jend_2u &
3272 ,l,nrec,fldsize,spval,tmp &
3273 ,recname,reclevtyp,reclev,varname,vcoordname &
3279 vcoordname=
'mid cld top'
3281 call assignnemsiovar(im,jsta,jend,jsta_2l,jend_2u &
3282 ,l,nrec,fldsize,spval,tmp &
3283 ,recname,reclevtyp,reclev,varname,vcoordname &
3289 vcoordname=
'high cld top'
3291 call assignnemsiovar(im,jsta,jend,jsta_2l,jend_2u &
3292 ,l,nrec,fldsize,spval,tmp &
3293 ,recname,reclevtyp,reclev,varname,vcoordname &
3299 vcoordname=
'high cld bot'
3301 call assignnemsiovar(im,jsta,jend,jsta_2l,jend_2u &
3302 ,l,nrec,fldsize,spval,tmp &
3303 ,recname,reclevtyp,reclev,varname,vcoordname &
3309 vcoordname=
'high cld top'
3311 call assignnemsiovar(im,jsta,jend,jsta_2l,jend_2u &
3312 ,l,nrec,fldsize,spval,tmp &
3313 ,recname,reclevtyp,reclev,varname,vcoordname &
3319 vcoordname=
'bndary-layer cld'
3321 call assignnemsiovar(im,jsta,jend,jsta_2l,jend_2u &
3322 ,l,nrec,fldsize,spval,tmp &
3323 ,recname,reclevtyp,reclev,varname,vcoordname &
3328 do j = jsta_2l, jend_2u
3330 if (pblcfr(i,j) < spval) pblcfr(i,j) = pblcfr(i,j) * 0.01
3336 vcoordname=
'atmos col'
3338 call assignnemsiovar(im,jsta,jend,jsta_2l,jend_2u &
3339 ,l,nrec,fldsize,spval,tmp &
3340 ,recname,reclevtyp,reclev,varname,vcoordname &
3348 call assignnemsiovar(im,jsta,jend,jsta_2l,jend_2u &
3349 ,l,nrec,fldsize,spval,tmp &
3350 ,recname,reclevtyp,reclev,varname,vcoordname &
3356 if (sm(i,j) /= 0.0) runoff(i,j) = spval
3363 vcoordname=
'2 m above gnd'
3365 call assignnemsiovar(im,jsta,jend,jsta_2l,jend_2u &
3366 ,l,nrec,fldsize,spval,tmp &
3367 ,recname,reclevtyp,reclev,varname,vcoordname &
3373 vcoordname=
'2 m above gnd'
3375 call assignnemsiovar(im,jsta,jend,jsta_2l,jend_2u &
3376 ,l,nrec,fldsize,spval,tmp &
3377 ,recname,reclevtyp,reclev,varname,vcoordname &
3383 do j=jsta_2l,jend_2u
3385 maxrhshltr(i,j) = spval
3386 minrhshltr(i,j) = spval
3394 call assignnemsiovar(im,jsta,jend,jsta_2l,jend_2u &
3395 ,l,nrec,fldsize,spval,tmp &
3396 ,recname,reclevtyp,reclev,varname,vcoordname &
3404 call assignnemsiovar(im,jsta,jend,jsta_2l,jend_2u &
3405 ,l,nrec,fldsize,spval,tmp &
3406 ,recname,reclevtyp,reclev,varname,vcoordname &
3412 if (sm(i,j) /= 0.0) smcwlt(i,j) = spval
3421 call assignnemsiovar(im,jsta,jend,jsta_2l,jend_2u &
3422 ,l,nrec,fldsize,spval,tmp &
3423 ,recname,reclevtyp,reclev,varname,vcoordname &
3431 call assignnemsiovar(im,jsta,jend,jsta_2l,jend_2u &
3432 ,l,nrec,fldsize,spval,tmp &
3433 ,recname,reclevtyp,reclev,varname,vcoordname &
3439 if (sm(i,j) /= 0.0) fieldcapa(i,j) = spval
3448 call assignnemsiovar(im,jsta,jend,jsta_2l,jend_2u &
3449 ,l,nrec,fldsize,spval,tmp &
3450 ,recname,reclevtyp,reclev,varname,vcoordname &
3457 call assignnemsiovar(im,jsta,jend,jsta_2l,jend_2u &
3458 ,l,nrec,fldsize,spval,tmp &
3459 ,recname,reclevtyp,reclev,varname,vcoordname &
3466 call assignnemsiovar(im,jsta,jend,jsta_2l,jend_2u &
3467 ,l,nrec,fldsize,spval,tmp &
3468 ,recname,reclevtyp,reclev,varname,vcoordname &
3475 call assignnemsiovar(im,jsta,jend,jsta_2l,jend_2u &
3476 ,l,nrec,fldsize,spval,tmp &
3477 ,recname,reclevtyp,reclev,varname,vcoordname &
3484 call assignnemsiovar(im,jsta,jend,jsta_2l,jend_2u &
3485 ,l,nrec,fldsize,spval,tmp &
3486 ,recname,reclevtyp,reclev,varname,vcoordname &
3491 vcoordname=
'nom. top'
3493 call assignnemsiovar(im,jsta,jend,jsta_2l,jend_2u &
3494 ,l,nrec,fldsize,spval,tmp &
3495 ,recname,reclevtyp,reclev,varname,vcoordname &
3502 call assignnemsiovar(im,jsta,jend,jsta_2l,jend_2u &
3503 ,l,nrec,fldsize,spval,tmp &
3504 ,recname,reclevtyp,reclev,varname,vcoordname &
3509 vcoordname=
'nom. top'
3511 call assignnemsiovar(im,jsta,jend,jsta_2l,jend_2u &
3512 ,l,nrec,fldsize,spval,tmp &
3513 ,recname,reclevtyp,reclev,varname,vcoordname &
3520 call assignnemsiovar(im,jsta,jend,jsta_2l,jend_2u &
3521 ,l,nrec,fldsize,spval,tmp &
3522 ,recname,reclevtyp,reclev,varname,vcoordname &
3529 call assignnemsiovar(im,jsta,jend,jsta_2l,jend_2u &
3530 ,l,nrec,fldsize,spval,tmp &
3531 ,recname,reclevtyp,reclev,varname,vcoordname &
3535 varname=
'spfhmax_max'
3536 vcoordname=
'2 m above gnd'
3538 call assignnemsiovar(im,jsta,jend,jsta_2l,jend_2u &
3539 ,l,nrec,fldsize,spval,tmp &
3540 ,recname,reclevtyp,reclev,varname,vcoordname &
3546 varname=
'spfhmin_min'
3547 vcoordname=
'2 m above gnd'
3549 call assignnemsiovar(im,jsta,jend,jsta_2l,jend_2u &
3550 ,l,nrec,fldsize,spval,tmp &
3551 ,recname,reclevtyp,reclev,varname,vcoordname &
3558 call assignnemsiovar(im,jsta,jend,jsta_2l,jend_2u &
3559 ,l,nrec,fldsize,spval,tmp &
3560 ,recname,reclevtyp,reclev,varname,vcoordname &
3566 if (sm(i,j) /= 0.0) ssroff(i,j) = spval
3574 call assignnemsiovar(im,jsta,jend,jsta_2l,jend_2u &
3575 ,l,nrec,fldsize,spval,tmp &
3576 ,recname,reclevtyp,reclev,varname,vcoordname &
3582 if (sm(i,j) /= 0.0) avgedir(i,j) = spval
3590 call assignnemsiovar(im,jsta,jend,jsta_2l,jend_2u &
3591 ,l,nrec,fldsize,spval,tmp &
3592 ,recname,reclevtyp,reclev,varname,vcoordname &
3598 if (sm(i,j) /= 0.0) avgecan(i,j) = spval
3606 call assignnemsiovar(im,jsta,jend,jsta_2l,jend_2u &
3607 ,l,nrec,fldsize,spval,tmp &
3608 ,recname,reclevtyp,reclev,varname,vcoordname &
3614 if (sm(i,j) /= 0.0) avgetrans(i,j) = spval
3622 call assignnemsiovar(im,jsta,jend,jsta_2l,jend_2u &
3623 ,l,nrec,fldsize,spval,tmp &
3624 ,recname,reclevtyp,reclev,varname,vcoordname &
3630 if (sm(i,j)==1.0 .and. sice(i,j)==0.) avgesnow(i,j)=spval
3636 vcoordname=
'0-200 cm down'
3638 call assignnemsiovar(im,jsta,jend,jsta_2l,jend_2u &
3639 ,l,nrec,fldsize,spval,tmp &
3640 ,recname,reclevtyp,reclev,varname,vcoordname &
3646 if (sm(i,j) /= 0.0) smstot(i,j) = spval
3654 call assignnemsiovar(im,jsta,jend,jsta_2l,jend_2u &
3655 ,l,nrec,fldsize,spval,tmp &
3656 ,recname,reclevtyp,reclev,varname,vcoordname &
3662 if (sm(i,j) /= 0.0) snopcx(i,j) = spval
3681 if ( k == 1) varname=
'duem001'
3682 if ( k == 2) varname=
'duem002'
3683 if ( k == 3) varname=
'duem003'
3684 if ( k == 4) varname=
'duem004'
3685 if ( k == 5) varname=
'duem005'
3686 vcoordname=
'atmos sfc'
3688 call assignnemsiovar(im,jsta,jend,jsta_2l,jend_2u &
3689 ,l,nrec,fldsize,spval,tmp &
3690 ,recname,reclevtyp,reclev,varname,vcoordname&
3697 if ( k == 1) varname=
'dust1sd'
3698 if ( k == 2) varname=
'dust2sd'
3699 if ( k == 3) varname=
'dust3sd'
3700 if ( k == 4) varname=
'dust4sd'
3701 if ( k == 5) varname=
'dsut5sd'
3702 vcoordname=
'atmos sfc'
3704 call assignnemsiovar(im,jsta,jend,jsta_2l,jend_2u &
3705 ,l,nrec,fldsize,spval,tmp &
3706 ,recname,reclevtyp,reclev,varname,vcoordname&
3713 if ( k == 1) varname=
'dust1dp'
3714 if ( k == 2) varname=
'dust2dp'
3715 if ( k == 3) varname=
'dust3dp'
3716 if ( k == 4) varname=
'dust4dp'
3717 if ( k == 5) varname=
'dust5dp'
3718 vcoordname=
'atmos sfc'
3720 call assignnemsiovar(im,jsta,jend,jsta_2l,jend_2u &
3721 ,l,nrec,fldsize,spval,tmp &
3722 ,recname,reclevtyp,reclev,varname,vcoordname&
3724 print *,
'dudp,ck=',maxval(dudp(1:im,jsta:jend,k)), &
3725 minval(dudp(1:im,jsta:jend,k))
3731 if ( k == 1) varname=
'dust1wtl'
3732 if ( k == 2) varname=
'dust2wtl'
3733 if ( k == 3) varname=
'dust3wtl'
3734 if ( k == 4) varname=
'dust4wtl'
3735 if ( k == 5) varname=
'dust5wtl'
3736 vcoordname=
'atmos sfc'
3738 call assignnemsiovar(im,jsta,jend,jsta_2l,jend_2u &
3739 ,l,nrec,fldsize,spval,tmp &
3740 ,recname,reclevtyp,reclev,varname,vcoordname&
3745 if ( k == 1) varname=
'dust1wtc'
3746 if ( k == 2) varname=
'dust2wtc'
3747 if ( k == 3) varname=
'dust3wtc'
3748 if ( k == 4) varname=
'dust4wtc'
3749 if ( k == 5) varname=
'dust5wtc'
3750 vcoordname=
'atmos sfc'
3752 call assignnemsiovar(im,jsta,jend,jsta_2l,jend_2u &
3753 ,l,nrec,fldsize,spval,tmp &
3754 ,recname,reclevtyp,reclev,varname,vcoordname&
3760 if ( k == 1) varname=
'ssem001'
3761 if ( k == 2) varname=
'ssem002'
3762 if ( k == 3) varname=
'ssem003'
3763 if ( k == 4) varname=
'ssem004'
3764 if ( k == 5) varname=
'ssem005'
3765 vcoordname=
'atmos sfc'
3767 call assignnemsiovar(im,jsta,jend,jsta_2l,jend_2u &
3768 ,l,nrec,fldsize,spval,tmp &
3769 ,recname,reclevtyp,reclev,varname,vcoordname&
3775 if ( k == 1) varname=
'seas1sd'
3776 if ( k == 2) varname=
'seas2sd'
3777 if ( k == 3) varname=
'seas3sd'
3778 if ( k == 4) varname=
'seas4sd'
3779 if ( k == 5) varname=
'seas5sd'
3782 call assignnemsiovar(im,jsta,jend,jsta_2l,jend_2u &
3783 ,l,nrec,fldsize,spval,tmp &
3784 ,recname,reclevtyp,reclev,varname,vcoordname&
3791 if ( k == 1) varname=
'seas1dp'
3792 if ( k == 2) varname=
'seas2dp'
3793 if ( k == 3) varname=
'seas3dp'
3794 if ( k == 4) varname=
'seas4dp'
3795 if ( k == 5) varname=
'seas5dp'
3796 vcoordname=
'atmos sfc'
3798 call assignnemsiovar(im,jsta,jend,jsta_2l,jend_2u &
3799 ,l,nrec,fldsize,spval,tmp &
3800 ,recname,reclevtyp,reclev,varname,vcoordname&
3806 if ( k == 1) varname=
'seas1wtl'
3807 if ( k == 2) varname=
'seas2wtl'
3808 if ( k == 3) varname=
'seas3wtl'
3809 if ( k == 4) varname=
'seas4wtl'
3810 if ( k == 5) varname=
'seas5wtl'
3811 vcoordname=
'atmos sfc'
3813 call assignnemsiovar(im,jsta,jend,jsta_2l,jend_2u &
3814 ,l,nrec,fldsize,spval,tmp &
3815 ,recname,reclevtyp,reclev,varname,vcoordname&
3821 if ( k == 1) varname=
'seas1wtc'
3822 if ( k == 2) varname=
'seas1wtc'
3823 if ( k == 3) varname=
'seas1wtc'
3824 if ( k == 4) varname=
'seas1wtc'
3825 if ( k == 5) varname=
'seas1wtc'
3826 vcoordname=
'atmos sfc'
3828 call assignnemsiovar(im,jsta,jend,jsta_2l,jend_2u &
3829 ,l,nrec,fldsize,spval,tmp &
3830 ,recname,reclevtyp,reclev,varname,vcoordname&
3836 if ( k == 1) varname=
'bceman'
3837 if ( k == 2) varname=
'bcembb'
3838 vcoordname=
'atmos sfc'
3840 call assignnemsiovar(im,jsta,jend,jsta_2l,jend_2u &
3841 ,l,nrec,fldsize,spval,tmp &
3842 ,recname,reclevtyp,reclev,varname,vcoordname&
3848 if ( k == 1) varname=
'bc1sd'
3849 if ( k == 2) varname=
'bc2sd'
3850 vcoordname=
'atmos sfc'
3852 call assignnemsiovar(im,jsta,jend,jsta_2l,jend_2u &
3853 ,l,nrec,fldsize,spval,tmp &
3854 ,recname,reclevtyp,reclev,varname,vcoordname&
3860 if ( k == 1) varname=
'bc1dp'
3861 if ( k == 2) varname=
'bc2dp'
3862 vcoordname=
'atmos sfc'
3864 call assignnemsiovar(im,jsta,jend,jsta_2l,jend_2u &
3865 ,l,nrec,fldsize,spval,tmp &
3866 ,recname,reclevtyp,reclev,varname,vcoordname&
3872 if ( k == 1) varname=
'bc1wtl'
3873 if ( k == 2) varname=
'bc2wtl'
3874 vcoordname=
'atmos sfc'
3876 call assignnemsiovar(im,jsta,jend,jsta_2l,jend_2u &
3877 ,l,nrec,fldsize,spval,tmp &
3878 ,recname,reclevtyp,reclev,varname,vcoordname&
3884 if ( k == 1) varname=
'bc1wtc'
3885 if ( k == 2) varname=
'bc2wtc'
3886 vcoordname=
'atmos sfc'
3888 call assignnemsiovar(im,jsta,jend,jsta_2l,jend_2u &
3889 ,l,nrec,fldsize,spval,tmp &
3890 ,recname,reclevtyp,reclev,varname,vcoordname&
3896 if ( k == 1) varname=
'oceman'
3897 if ( k == 2) varname=
'ocembb'
3898 vcoordname=
'atmos sfc'
3900 call assignnemsiovar(im,jsta,jend,jsta_2l,jend_2u &
3901 ,l,nrec,fldsize,spval,tmp &
3902 ,recname,reclevtyp,reclev,varname,vcoordname&
3908 if ( k == 1) varname=
'oc1sd'
3909 if ( k == 2) varname=
'oc2sd'
3910 vcoordname=
'atmos sfc'
3912 call assignnemsiovar(im,jsta,jend,jsta_2l,jend_2u &
3913 ,l,nrec,fldsize,spval,tmp &
3914 ,recname,reclevtyp,reclev,varname,vcoordname&
3920 if ( k == 1) varname=
'oc1dp'
3921 if ( k == 2) varname=
'oc2dp'
3922 vcoordname=
'atmos sfc'
3924 call assignnemsiovar(im,jsta,jend,jsta_2l,jend_2u &
3925 ,l,nrec,fldsize,spval,tmp &
3926 ,recname,reclevtyp,reclev,varname,vcoordname&
3932 if ( k == 1) varname=
'oc1wtl'
3933 if ( k == 2) varname=
'oc2wtl'
3934 vcoordname=
'atmos sfc'
3936 call assignnemsiovar(im,jsta,jend,jsta_2l,jend_2u &
3937 ,l,nrec,fldsize,spval,tmp &
3938 ,recname,reclevtyp,reclev,varname,vcoordname&
3944 if ( k == 1) varname=
'oc1wtc'
3945 if ( k == 2) varname=
'oc2wtc'
3946 vcoordname=
'atmos sfc'
3948 call assignnemsiovar(im,jsta,jend,jsta_2l,jend_2u &
3949 ,l,nrec,fldsize,spval,tmp &
3950 ,recname,reclevtyp,reclev,varname,vcoordname&
3958 call assignnemsiovar(im,jsta,jend,jsta_2l,jend_2u &
3959 ,l,nrec,fldsize,spval,tmp &
3960 ,recname,reclevtyp,reclev,varname,vcoordname&
3965 call nemsio_close(ffile,iret=status)
3966 deallocate(tmp,recname,reclevtyp,reclev)
4013 call collect_loc(gdlat,dummy)
4015 latstart = nint(dummy(1,1)*gdsdegr)
4016 latlast = nint(dummy(im,jm)*gdsdegr)
4017 print*,
'laststart,latlast B bcast= ',latstart,latlast,
'gdsdegr=',gdsdegr,&
4018 'dummy(1,1)=',dummy(1,1),dummy(im,jm),
'gdlat=',gdlat(1,1)
4020 call mpi_bcast(latstart,1,mpi_integer,0,mpi_comm_comp,irtn)
4021 call mpi_bcast(latlast,1,mpi_integer,0,mpi_comm_comp,irtn)
4022 write(6,*)
'laststart,latlast,me A calling bcast=',latstart,latlast,me
4023 call collect_loc(gdlon,dummy)
4025 lonstart = nint(dummy(1,1)*gdsdegr)
4026 lonlast = nint(dummy(im,jm)*gdsdegr)
4028 call mpi_bcast(lonstart,1,mpi_integer,0,mpi_comm_comp,irtn)
4029 call mpi_bcast(lonlast, 1,mpi_integer,0,mpi_comm_comp,irtn)
4031 write(6,*)
'lonstart,lonlast A calling bcast=',lonstart,lonlast
4040 CALL table(ptbl,ttbl,pt_tbl, &
4041 rdq,rdth,rdp,rdthe,pl,thl,qs0,sqs,sthe,the0)
4043 CALL tableq(ttblq,rdpq,rdtheq,plq,thl,stheq,the0q)
4048 WRITE(6,*)
' SPL (POSTED PRESSURE LEVELS) BELOW: '
4049 WRITE(6,51) (spl(l),l=1,lsm)
4050 50
FORMAT(14(f4.1,1x))
4051 51
FORMAT(8(f8.1,1x))
4056 alsl(l) = log(spl(l))
4061 print*,
'writing out igds'
4065 if(maptype == 1)
THEN
4067 WRITE(6,*)
'igd(1)=',3
4070 WRITE(igdout)latstart
4071 WRITE(igdout)lonstart
4078 WRITE(igdout)truelat2
4079 WRITE(igdout)truelat1
4081 ELSE IF(maptype == 2)
THEN
4085 WRITE(igdout)latstart
4086 WRITE(igdout)lonstart
4093 WRITE(igdout)truelat2
4094 WRITE(igdout)truelat1
4100 if (truelat1 < 0.)
THEN
4106 CALL msfps(lat,truelat1*0.001,psmapf)
4108 ELSE IF(maptype == 3)
THEN
4112 WRITE(igdout)latstart
4113 WRITE(igdout)lonstart
4115 WRITE(igdout)latlast
4116 WRITE(igdout)lonlast
4117 WRITE(igdout)truelat1
4123 ELSE IF(maptype == 0 .OR. maptype == 203)
THEN
4127 WRITE(igdout)latstart
4128 WRITE(igdout)lonstart
4145 subroutine rg2gg(im,jm,numi,a)
4149 integer,
intent(in):: im,jm,numi(jm)
4150 real,
intent(inout):: a(im,jm)
4154 r =
real(numi(j))/
real(im)
4156 ir = mod(nint((ig-1)*r),numi(j)) + 1
4163 end subroutine rg2gg
4164 subroutine gg2rg(im,jm,numi,a)
4168 integer,
intent(in):: im,jm,numi(jm)
4169 real,
intent(inout):: a(im,jm)
4173 r =
real(numi(j))/
real(im)
4175 ig = nint((ir-1)/r) + 1
4182 end subroutine gg2rg
4184 subroutine uninterpred(iord,kmsk,lonsperlat,lonr,latr,fi,f)
4188 integer,
intent(in) :: iord, lonr, latr
4189 integer,
intent(in) :: kmsk(lonr,latr), lonsperlat(latr)
4190 real,
intent(in) :: fi(lonr,latr)
4191 real,
intent(out) :: f(lonr,latr)
4196 lons = lonsperlat(j)
4197 if(lons /= lonr)
then
4198 call intlon(iord,1,lons,lonr,kmsk(1,j),fi(1,j),f(1,j))
4204 subroutine intlon(iord,imsk,m1,m2,k1,f1,f2)
4206 integer,
intent(in) :: iord,imsk,m1,m2
4207 integer,
intent(in) :: k1(m1)
4208 real,
intent(in) :: f1(m1)
4209 real,
intent(out):: f2(m2)
4212 r =
real(m1)/
real(m2)
4217 if(iord == 2 .and. (imsk == 0 .or. k1(il) == k1(ir)))
then
4218 f2(i2) = f1(il)*(il-x1) + f1(ir)*(x1-il+1)
4220 in = mod(nint(x1),m1) + 1
4224 end subroutine intlon
subroutine modstuff2(im, ix, km, idvc, idsl, nvcoord, vcoord, ps, psx, psy, d, u, v, pi, pm, om, me)
modstuff2() computes model coordinate dependent functions.
elemental real function, public fpvsnew(t)
calcape() computes CAPE/CINS and other storm related variables.