diff --git a/comupp/scripts/run_unipost b/comupp/scripts/run_unipost
index c295abfa0..5132b4f67 100755
--- a/comupp/scripts/run_unipost
+++ b/comupp/scripts/run_unipost
@@ -307,6 +307,8 @@ ln -fs $CRTMDIR/TauCoeff/ODPS/Big_Endian/ssmis_f20.TauCoeff.bin ./
ln -fs $CRTMDIR/SpcCoeff/Big_Endian/seviri_m10.SpcCoeff.bin ./
ln -fs $CRTMDIR/TauCoeff/ODPS/Big_Endian/seviri_m10.TauCoeff.bin ./
ln -fs $CRTMDIR/SpcCoeff/Big_Endian/v.seviri_m10.SpcCoeff.bin ./
+ln -fs $CRTMDIR/TauCoeff/ODPS/Big_Endian/abi_gr.TauCoeff.bin ./
+ln -fs $CRTMDIR/SpcCoeff/Big_Endian/abi_gr.SpcCoeff.bin ./
#######################################################
# 1. Run Unipost
diff --git a/comupp/scripts/run_unipost_frames b/comupp/scripts/run_unipost_frames
index 55fef3354..3d28ed224 100755
--- a/comupp/scripts/run_unipost_frames
+++ b/comupp/scripts/run_unipost_frames
@@ -293,6 +293,8 @@ ln -fs $CRTMDIR/TauCoeff/ODPS/Big_Endian/ssmis_f20.TauCoeff.bin ./
ln -fs $CRTMDIR/SpcCoeff/Big_Endian/seviri_m10.SpcCoeff.bin ./
ln -fs $CRTMDIR/TauCoeff/ODPS/Big_Endian/seviri_m10.TauCoeff.bin ./
ln -fs $CRTMDIR/SpcCoeff/Big_Endian/v.seviri_m10.SpcCoeff.bin ./
+ln -fs $CRTMDIR/TauCoeff/ODPS/Big_Endian/abi_gr.TauCoeff.bin ./
+ln -fs $CRTMDIR/SpcCoeff/Big_Endian/abi_gr.SpcCoeff.bin ./
#######################################################
# 1. Run Unipost
diff --git a/comupp/scripts/run_unipost_gracet b/comupp/scripts/run_unipost_gracet
index a528ef3b2..8b1518387 100755
--- a/comupp/scripts/run_unipost_gracet
+++ b/comupp/scripts/run_unipost_gracet
@@ -295,6 +295,8 @@ ln -fs $CRTMDIR/TauCoeff/ODPS/Big_Endian/ssmis_f20.TauCoeff.bin ./
ln -fs $CRTMDIR/SpcCoeff/Big_Endian/seviri_m10.SpcCoeff.bin ./
ln -fs $CRTMDIR/TauCoeff/ODPS/Big_Endian/seviri_m10.TauCoeff.bin ./
ln -fs $CRTMDIR/SpcCoeff/Big_Endian/v.seviri_m10.SpcCoeff.bin ./
+ln -fs $CRTMDIR/TauCoeff/ODPS/Big_Endian/abi_gr.TauCoeff.bin ./
+ln -fs $CRTMDIR/SpcCoeff/Big_Endian/abi_gr.SpcCoeff.bin ./
#######################################################
# 1. Run Unipost
diff --git a/comupp/scripts/run_unipost_minutes b/comupp/scripts/run_unipost_minutes
index bdb4ebd69..e89ba13de 100755
--- a/comupp/scripts/run_unipost_minutes
+++ b/comupp/scripts/run_unipost_minutes
@@ -297,6 +297,8 @@ ln -fs $CRTMDIR/TauCoeff/ODPS/Big_Endian/ssmis_f20.TauCoeff.bin ./
ln -fs $CRTMDIR/SpcCoeff/Big_Endian/seviri_m10.SpcCoeff.bin ./
ln -fs $CRTMDIR/TauCoeff/ODPS/Big_Endian/seviri_m10.TauCoeff.bin ./
ln -fs $CRTMDIR/SpcCoeff/Big_Endian/v.seviri_m10.SpcCoeff.bin ./
+ln -fs $CRTMDIR/TauCoeff/ODPS/Big_Endian/abi_gr.TauCoeff.bin ./
+ln -fs $CRTMDIR/SpcCoeff/Big_Endian/abi_gr.SpcCoeff.bin ./
#######################################################
# 1. Run Unipost
diff --git a/comupp/scripts/run_unipostandgempak b/comupp/scripts/run_unipostandgempak
index dc7387bef..8eaf50620 100755
--- a/comupp/scripts/run_unipostandgempak
+++ b/comupp/scripts/run_unipostandgempak
@@ -308,6 +308,8 @@ ln -fs $CRTMDIR/TauCoeff/ODPS/Big_Endian/ssmis_f20.TauCoeff.bin ./
ln -fs $CRTMDIR/SpcCoeff/Big_Endian/seviri_m10.SpcCoeff.bin ./
ln -fs $CRTMDIR/TauCoeff/ODPS/Big_Endian/seviri_m10.TauCoeff.bin ./
ln -fs $CRTMDIR/SpcCoeff/Big_Endian/v.seviri_m10.SpcCoeff.bin ./
+ln -fs $CRTMDIR/TauCoeff/ODPS/Big_Endian/abi_gr.TauCoeff.bin ./
+ln -fs $CRTMDIR/SpcCoeff/Big_Endian/abi_gr.SpcCoeff.bin ./
#######################################################
# 1. Run Unipost
diff --git a/comupp/scripts/run_unipostandgrads b/comupp/scripts/run_unipostandgrads
index 72d1cce3c..6346699d1 100755
--- a/comupp/scripts/run_unipostandgrads
+++ b/comupp/scripts/run_unipostandgrads
@@ -311,6 +311,8 @@ ln -fs $CRTMDIR/TauCoeff/ODPS/Big_Endian/ssmis_f20.TauCoeff.bin ./
ln -fs $CRTMDIR/SpcCoeff/Big_Endian/seviri_m10.SpcCoeff.bin ./
ln -fs $CRTMDIR/TauCoeff/ODPS/Big_Endian/seviri_m10.TauCoeff.bin ./
ln -fs $CRTMDIR/SpcCoeff/Big_Endian/v.seviri_m10.SpcCoeff.bin ./
+ln -fs $CRTMDIR/TauCoeff/ODPS/Big_Endian/abi_gr.TauCoeff.bin ./
+ln -fs $CRTMDIR/SpcCoeff/Big_Endian/abi_gr.SpcCoeff.bin ./
#######################################################
# 1. Run Unipost
diff --git a/comupp/src/lib/crtm2 b/comupp/src/lib/crtm2
index 7debf587d..2bb261c58 160000
--- a/comupp/src/lib/crtm2
+++ b/comupp/src/lib/crtm2
@@ -1 +1 @@
-Subproject commit 7debf587d1c3354de8ca219b1b087e5c7474e610
+Subproject commit 2bb261c58c3fc0282b782f7f8020bc3513dd317a
diff --git a/comupp/src/unipost/ALLOCATE_ALL.f b/comupp/src/unipost/ALLOCATE_ALL.f
index 374581b6d..8d4390c95 100644
--- a/comupp/src/unipost/ALLOCATE_ALL.f
+++ b/comupp/src/unipost/ALLOCATE_ALL.f
@@ -15,6 +15,10 @@ SUBROUTINE ALLOCATE_ALL()
! 02-06-19 MIKE BALDWIN - WRF VERSION
! 11-12-16 SARAH LU - MODIFIED TO INITIALIZE AEROSOL FIELDS
! 12-01-07 SARAH LU - MODIFIED TO INITIALIZE AIR DENSITY/LAYER THICKNESS
+! 15-07-04 SARAH LU - MODIFIED TO INITIALIZE SCA
+! 15-07-21 Jun Wang - Add scavenging for DU, SS, OC, BC, remove
+! SU diagnostic fields
+! 19-07-24 Li(Kate) Zhang - Merge and update NGAC UPP for FV3-Chem
!
! USAGE: CALL MPI_FIRST
! INPUT ARGUMENT LIST:
@@ -94,6 +98,8 @@ SUBROUTINE ALLOCATE_ALL()
allocate(QQNR(im,jsta_2l:jend_2u,lm))
allocate(QQNWFA(im,jsta_2l:jend_2u,lm))
allocate(QQNIFA(im,jsta_2l:jend_2u,lm))
+ allocate(TAOD5503D(im,jsta_2l:jend_2u,lm))
+ allocate(AEXTC55(im,jsta_2l:jend_2u,lm))
allocate(EXTCOF55(im,jsta_2l:jend_2u,lm))
allocate(CFR(im,jsta_2l:jend_2u,lm))
allocate(CFR_RAW(im,jsta_2l:jend_2u,lm))
@@ -173,6 +179,20 @@ SUBROUTINE ALLOCATE_ALL()
allocate(fprate_max(im,jsta_2l:jend_2u))
allocate(up_heli_max(im,jsta_2l:jend_2u))
allocate(up_heli_max16(im,jsta_2l:jend_2u))
+ allocate(up_heli_min(im,jsta_2l:jend_2u))
+ allocate(up_heli_min16(im,jsta_2l:jend_2u))
+ allocate(up_heli_max02(im,jsta_2l:jend_2u))
+ allocate(up_heli_min02(im,jsta_2l:jend_2u))
+ allocate(up_heli_max03(im,jsta_2l:jend_2u))
+ allocate(up_heli_min03(im,jsta_2l:jend_2u))
+ allocate(rel_vort_max(im,jsta_2l:jend_2u))
+ allocate(rel_vort_max01(im,jsta_2l:jend_2u))
+ allocate(rel_vort_maxhy1(im,jsta_2l:jend_2u))
+ allocate(wspd10umax(im,jsta_2l:jend_2u))
+ allocate(wspd10vmax(im,jsta_2l:jend_2u))
+ allocate(refdm10c_max(im,jsta_2l:jend_2u))
+ allocate(hail_max2d(im,jsta_2l:jend_2u))
+ allocate(hail_maxk1(im,jsta_2l:jend_2u))
allocate(grpl_max(im,jsta_2l:jend_2u))
allocate(up_heli(im,jsta_2l:jend_2u))
allocate(up_heli16(im,jsta_2l:jend_2u))
@@ -255,6 +275,10 @@ SUBROUTINE ALLOCATE_ALL()
allocate(qvl1(im,jsta_2l:jend_2u))
allocate(snfden(im,jsta_2l:jend_2u))
allocate(sndepac(im,jsta_2l:jend_2u))
+ allocate(int_smoke(im,jsta_2l:jend_2u))
+ allocate(mean_frp(im,jsta_2l:jend_2u))
+ allocate(int_aod(im,jsta_2l:jend_2u))
+ allocate(smoke(im,jsta_2l:jend_2u,lm,nbin_sm))
! GSDend
allocate(rswin(im,jsta_2l:jend_2u))
allocate(swddni(im,jsta_2l:jend_2u))
@@ -267,6 +291,8 @@ SUBROUTINE ALLOCATE_ALL()
allocate(taod5502d(im,jsta_2l:jend_2u))
allocate(aerasy2d(im,jsta_2l:jend_2u))
allocate(aerssa2d(im,jsta_2l:jend_2u))
+ allocate(lwp(im,jsta_2l:jend_2u))
+ allocate(iwp(im,jsta_2l:jend_2u))
allocate(rlwin(im,jsta_2l:jend_2u))
allocate(lwdnbc(im,jsta_2l:jend_2u))
allocate(lwupbc(im,jsta_2l:jend_2u))
@@ -433,14 +459,18 @@ SUBROUTINE ALLOCATE_ALL()
allocate(soot(im,jsta_2l:jend_2u,lm,nbin_bc))
allocate(waso(im,jsta_2l:jend_2u,lm,nbin_oc))
allocate(suso(im,jsta_2l:jend_2u,lm,nbin_su))
+ allocate(pp25(im,jsta_2l:jend_2u,lm,nbin_su))
+ allocate(pp10(im,jsta_2l:jend_2u,lm,nbin_su))
! vrbls3d
allocate(ext(im,jsta_2l:jend_2u,lm))
allocate(asy(im,jsta_2l:jend_2u,lm))
allocate(ssa(im,jsta_2l:jend_2u,lm))
+ allocate(sca(im,jsta_2l:jend_2u,lm))
allocate(duem(im,jsta_2l:jend_2u,nbin_du))
allocate(dusd(im,jsta_2l:jend_2u,nbin_du))
allocate(dudp(im,jsta_2l:jend_2u,nbin_du))
allocate(duwt(im,jsta_2l:jend_2u,nbin_du))
+ allocate(dusv(im,jsta_2l:jend_2u,nbin_du))
allocate(suem(im,jsta_2l:jend_2u,nbin_su))
allocate(susd(im,jsta_2l:jend_2u,nbin_su))
allocate(sudp(im,jsta_2l:jend_2u,nbin_su))
@@ -449,15 +479,18 @@ SUBROUTINE ALLOCATE_ALL()
allocate(ocsd(im,jsta_2l:jend_2u,nbin_oc))
allocate(ocdp(im,jsta_2l:jend_2u,nbin_oc))
allocate(ocwt(im,jsta_2l:jend_2u,nbin_oc))
+ allocate(ocsv(im,jsta_2l:jend_2u,nbin_oc))
allocate(bcem(im,jsta_2l:jend_2u,nbin_bc))
allocate(bcsd(im,jsta_2l:jend_2u,nbin_bc))
allocate(bcdp(im,jsta_2l:jend_2u,nbin_bc))
allocate(bcwt(im,jsta_2l:jend_2u,nbin_bc))
+ allocate(bcsv(im,jsta_2l:jend_2u,nbin_bc))
allocate(ssem(im,jsta_2l:jend_2u,nbin_ss))
allocate(sssd(im,jsta_2l:jend_2u,nbin_ss))
allocate(ssdp(im,jsta_2l:jend_2u,nbin_ss))
allocate(sswt(im,jsta_2l:jend_2u,nbin_ss))
-! allocate(dpres(im,jsta_2l:jend_2u,lm))
+ allocate(sssv(im,jsta_2l:jend_2u,nbin_ss))
+ !allocate(dpres(im,jsta_2l:jend_2u,lm))
allocate(rhomid(im,jsta_2l:jend_2u,lm))
! vrbls2d
allocate(dusmass(im,jsta_2l:jend_2u))
@@ -480,6 +513,17 @@ SUBROUTINE ALLOCATE_ALL()
allocate(sscmass(im,jsta_2l:jend_2u))
allocate(sssmass25(im,jsta_2l:jend_2u))
allocate(sscmass25(im,jsta_2l:jend_2u))
+ allocate(dustcb(im,jsta_2l:jend_2u))
+ allocate(occb(im,jsta_2l:jend_2u))
+ allocate(bccb(im,jsta_2l:jend_2u))
+ allocate(sulfcb(im,jsta_2l:jend_2u))
+ allocate(pp25cb(im,jsta_2l:jend_2u))
+ allocate(pp10cb(im,jsta_2l:jend_2u))
+ allocate(sscb(im,jsta_2l:jend_2u))
+ allocate(dustallcb(im,jsta_2l:jend_2u))
+ allocate(ssallcb(im,jsta_2l:jend_2u))
+ allocate(dustpm(im,jsta_2l:jend_2u))
+ allocate(sspm(im,jsta_2l:jend_2u))
endif
! HWRF RRTMG output
allocate(acswupt(im,jsta_2l:jend_2u))
diff --git a/comupp/src/unipost/CALPW.f b/comupp/src/unipost/CALPW.f
index 91b9a6dee..5c18874ac 100644
--- a/comupp/src/unipost/CALPW.f
+++ b/comupp/src/unipost/CALPW.f
@@ -28,7 +28,12 @@ SUBROUTINE CALPW(PW,IDECID)
! 02-06-19 MIKE BALDWIN - WRF VERSION
! 04-12-30 H CHUANG - UPDATE TO CALCULATE TOTAL COLUMN FOR OTHER
! HYDROMETEORS
-! 11-12-14 SARAH LU - UPDATE TO CALCULATE AEROSOL OPTICAL DEPTH
+! 14-11-12 SARAH LU - UPDATE TO CALCULATE AEROSOL OPTICAL DEPTH
+! 15-07-02 SARAH LU - UPDATE TO CALCULATE SCATTERING AEROSOL
+! OPTICAL DEPTH (18)
+! 15-07-04 SARAH LU - CORRECT PW INTEGRATION FOR AOD (17)
+! 15-07-10 SARAH LU - UPDATE TO CALCULATE ASYMETRY PARAMETER
+! 19-07-25 Li(Kate) Zhang - MERGE SARHA LU's update for FV3-Chem
!
! USAGE: CALL CALPW(PW)
! INPUT ARGUMENT LIST:
@@ -53,7 +58,9 @@ SUBROUTINE CALPW(PW,IDECID)
!$$$
!
use vrbls3d, only: q, qqw, qqi, qqr, qqs, cwm, qqg, t, rswtt, &
- train, tcucn, mcvg, pmid, o3, ext, pint, rlwtt
+ train, tcucn, mcvg, pmid, o3, ext, pint, rlwtt, &
+ taod5503d,sca, asy
+ use vrbls4d, only: smoke
use masks, only: htm
use params_mod, only: tfrz, gi
use ctlblk_mod, only: lm, jsta, jend, im
@@ -238,17 +245,57 @@ SUBROUTINE CALPW(PW,IDECID)
Qdum(I,J) = EXT(I,J,L)
ENDDO
END DO
+!
+! E. James - 8 Dec 2017
+! FIRE SMOKE (tracer_1a FROM HRRR-SMOKE)
+ ELSE IF (IDECID == 18) THEN
+!$omp parallel do private(i,j)
+ DO J=JSTA,JEND
+ DO I=1,IM
+ Qdum(I,J) = SMOKE(I,J,L,1)/1000000000.
+ ENDDO
+ END DO
+!
+! E. James - 8 Dec 2017
+! HRRR-SMOKE AOD
+ ELSE IF (IDECID == 19) THEN
+!$omp parallel do private(i,j)
+ DO J=JSTA,JEND
+ DO I=1,IM
+ Qdum(I,J) = TAOD5503D(I,J,L)
+ ENDDO
+ END DO
+!LZhang -July 2019
+! SCATTERING AEROSOL OPTICAL THICKNESS (GOCART V2)
+ ELSE IF (IDECID == 20) THEN
+!$omp parallel do private(i,j)
+ DO J=JSTA,JEND
+ DO I=1,IM
+ Qdum(I,J) = SCA(I,J,L)
+ ENDDO
+ END DO
+! ASYMMETRY PARAMETER (GOCART V2)
+ ELSE IF (IDECID == 21) THEN
+!$omp parallel do private(i,j)
+ DO J=JSTA,JEND
+ DO I=1,IM
+ Qdum(I,J) = ASY(I,J,L)
+ ENDDO
+ END DO
ENDIF
!
!$omp parallel do private(i,j,dp)
DO J=JSTA,JEND
DO I=1,IM
- DP = PINT(I,J,L+1) - PINT(I,J,L)
- PW(I,J) = PW(I,J) + Qdum(I,J)*DP*GI*HTM(I,J,L)
+ DP = PINT(I,J,L+1) - PINT(I,J,L)
+ PW(I,J) = PW(I,J) + Qdum(I,J)*DP*GI*HTM(I,J,L)
IF (IDECID == 17) THEN
PW(I,J) = PW(I,J) + Qdum(I,J)*MAX(DP,0.)*GI*HTM(I,J,L)
ENDIF
+ IF (IDECID == 19) THEN
+ PW(I,J) = PW(I,J) + Qdum(I,J)
+ ENDIF
IF (IDECID == 14) PWS(I,J) = PWS(I,J) + QS(I,J)*DP*GI*HTM(I,J,L)
ENDDO
ENDDO
diff --git a/comupp/src/unipost/CALRAD_WCLOUD_newcrtm.f b/comupp/src/unipost/CALRAD_WCLOUD_newcrtm.f
index bf6ed212b..8c09ea3d4 100644
--- a/comupp/src/unipost/CALRAD_WCLOUD_newcrtm.f
+++ b/comupp/src/unipost/CALRAD_WCLOUD_newcrtm.f
@@ -12,6 +12,7 @@ SUBROUTINE CALRAD_WCLOUD
! 14-12-09 WM LEWIS ADDED:
! FUNCTION EFFR TO COMPUTE EFFECTIVE PARTICLE RADII
! CHANNEL SELECTION USING LVLS FROM WRF_CNTRL.PARM
+ ! 19-04-01 Sharon NEBUDA - Added output option for GOES-16 & GOES-17 ABI IR Channels 7-16
!
! USAGE: CALL MDLFLD
! INPUT ARGUMENT LIST:
@@ -120,7 +121,7 @@ SUBROUTINE CALRAD_WCLOUD
! integer,parameter:: n_clouds = 4
integer,parameter:: n_aerosols = 0
! Add your sensors here
- integer(i_kind),parameter:: n_sensors=18
+ integer(i_kind),parameter:: n_sensors=20
character(len=20),parameter,dimension(1:n_sensors):: sensorlist= &
(/'imgr_g15 ', &
'imgr_g13 ', &
@@ -139,7 +140,9 @@ SUBROUTINE CALRAD_WCLOUD
'seviri_m10 ', &
'imgr_mt2 ', &
'imgr_mt1r ', &
- 'imgr_insat3d '/)
+ 'imgr_insat3d ', &
+ 'abi_g16 ', &
+ 'abi_g17 '/)
character(len=12),parameter,dimension(1:n_sensors):: obslist= &
(/'goes_img ', &
'goes_img ', &
@@ -158,7 +161,10 @@ SUBROUTINE CALRAD_WCLOUD
'seviri ', &
'imgr_mt2 ', &
'imgr_mt1r ', &
- 'imgr_insat3d'/)
+ 'imgr_insat3d', &
+ 'abi ', &
+ 'abi '/)
+ character(len=20),dimension(1:n_sensors):: sensorlist_local
!
integer(i_kind) sensorindex
integer(i_kind) lunin,nobs,nchanl,nreal
@@ -190,14 +196,17 @@ SUBROUTINE CALRAD_WCLOUD
real RHO,RHOX
character(12)::obstype
character(20)::isis
+ character(20)::isis_local
logical hirs2,msu,goessndr,hirs3,hirs4,hirs,amsua,amsub,airs,hsb &
- ,goes_img,seviri, mhs,insat3d
+ ,goes_img,abi,seviri, mhs,insat3d
logical avhrr,avhrr_navy,lextra,ssu
logical ssmi,ssmis,amsre,amsre_low,amsre_mid,amsre_hig,change
logical ssmis_las,ssmis_uas,ssmis_env,ssmis_img
logical sea,mixed,land,ice,snow,toss
logical micrim,microwave
+ logical post_abig16, post_abig17 ! if true, user requested at least one abi channel
+ logical fix_abig16, fix_abig17 ! if true, abi_g16, abi_g17 fix files are available
! logical,dimension(nobs):: luse
logical, parameter :: debugprint = .false.
type(crtm_atmosphere_type),dimension(1):: atmosphere
@@ -213,6 +222,23 @@ SUBROUTINE CALRAD_WCLOUD
!
!*****************************************************************************
+ ! This code and sensorlist_local, isis_local can be modified/removed when the
+ ! linked CRTM version is updated with fix files abi_g16 & abi_g17
+ fix_abig16 = .False.
+ fix_abig17 = .False.
+ do n=1, n_sensors
+ sensorlist_local(n) = sensorlist(n)
+ if (sensorlist(n) == 'abi_g16') then ! check if fix file is available
+ inquire(file='abi_g16.SpcCoeff.bin',exist=fix_abig16)
+ if (.not.fix_abig16) sensorlist_local(n) = 'abi_gr '
+ endif
+ if (sensorlist(n) == 'abi_g17') then
+ inquire(file='abi_g17.SpcCoeff.bin',exist=fix_abig17)
+ if (.not.fix_abig17) sensorlist_local(n) = 'abi_gr '
+ endif
+ enddo
+
+
! Mapping land surface type of NMM to CRTM
!if(MODELNAME == 'NMM' .OR. MODELNAME == 'NCAR' .OR. MODELNAME == 'RAPR')then
if(ivegsrc==1)then !IGBP veg type
@@ -245,6 +271,16 @@ SUBROUTINE CALRAD_WCLOUD
end if
!end if
+ !10 channels, easier to set a logical
+ post_abig16=.false.
+ do n = 927, 927+9 ! 927 set in RQSTFLD.f
+ if (iget(n) > 0) post_abig16=.true.
+ enddo
+ post_abig17=.false.
+ do n = 937, 937+9 ! 937 set in RQSTFLD.f
+ if (iget(n) > 0) post_abig17=.true.
+ enddo
+
! DO NOT FORGET TO ADD YOUR NEW IGET HERE (IF YOU'VE ADDED ONE)
! START SUBROUTINE CALRAD.
ifactive: if (iget(327) > 0 .or. iget(328) > 0 .or. iget(329) > 0 &
@@ -283,7 +319,8 @@ SUBROUTINE CALRAD_WCLOUD
.or. iget(871) > 0 .or. iget(872) > 0 .or. iget(873) > 0 &
.or. iget(874) > 0 .or. iget(875) > 0 .or. iget(876) > 0 &
.or. iget(877) > 0 .or. iget(878) > 0 .or. iget(879) > 0 &
- .or. iget(880) > 0 .or. iget(881) > 0 .or. iget(882) > 0 ) then
+ .or. iget(880) > 0 .or. iget(881) > 0 .or. iget(882) > 0 &
+ .or. post_abig16 .or. post_abig17 ) then
! specify numbers of cloud species
! Thompson==8, Ferrier==5,95, WSM6==6, Lin==2
@@ -302,7 +339,7 @@ SUBROUTINE CALRAD_WCLOUD
! Initialize ozone to zeros for WRF NMM and ARW for now
if (MODELNAME == 'NMM' .OR. MODELNAME == 'NCAR' .OR. MODELNAME == 'RAPR' &
- .OR. MODELNAME == 'FV3R')o3=0.0
+ )o3=0.0
! Compute solar zenith angle for GFS, ARW now computes czen in INITPOST
! if (MODELNAME == 'GFS')then
jdn=iw3jdn(idat(3),idat(1),idat(2))
@@ -324,7 +361,7 @@ SUBROUTINE CALRAD_WCLOUD
print*,'success in CALRAD= ',success
allocate( channelinfo(n_sensors))
- error_status = crtm_init(sensorlist,channelinfo, &
+ error_status = crtm_init(sensorlist_local,channelinfo, &
Process_ID=0,Output_Process_ID=0 )
print*, 'channelinfo after init= ',channelinfo(1)%sensor_id, &
channelinfo(2)%sensor_id
@@ -343,6 +380,35 @@ SUBROUTINE CALRAD_WCLOUD
if(iget(872)>0)then
call select_channels_L(channelinfo(1),4,(/ 1,2,3,4 /),lvls(1:4,iget(872)),iget(872))
endif
+ ! GOES-16
+ if(post_abig16)then
+ nchanl=0
+ do n = 927, 927+9 ! 927 set in RQSTFLD.f
+ if (iget(n) > 0) then
+ nchanl = nchanl+1
+ endif
+ enddo
+ if (nchanl > 0 .and. nchanl <10) then
+ do n = 927, 927+9 ! 927 set in RQSTFLD.f
+ if (iget(n) == 0) channelinfo(19)%Process_Channel(n-927+1)=.False. ! turn off channel processing
+ enddo
+ endif
+ endif
+ ! GOES-17
+ if(post_abig17)then
+ nchanl=0
+ do n = 937, 937+9 ! 937 set in RQSTFLD.f
+ if (iget(n) > 0) then
+ nchanl = nchanl+1
+ endif
+ enddo
+ if (nchanl > 0 .and. nchanl <10) then
+ do n = 937, 937+9 ! 927 set in RQSTFLD.f
+ if (iget(n) == 0) channelinfo(20)%Process_Channel(n-937+1)=.False. ! turn off channel processing
+ enddo
+ endif
+ endif
+
! SSMI, F13-F15 (19H,19V,??H,37H,37V,85H,85V)
if(iget(800)>0)then
call select_channels_L(channelinfo(7),7,(/ 1,2,3,4,5,6,7 /),lvls(1:7,iget(800)),iget(800))
@@ -418,6 +484,8 @@ SUBROUTINE CALRAD_WCLOUD
(isis=='imgr_insat3d' .and. iget(865)>0) .OR. &
(isis=='imgr_g13' .and. iget(868)>0) .OR. &
(isis=='imgr_g15' .and. iget(872)>0) .OR. &
+ (isis=='abi_g16' .and. post_abig16) .OR. &
+ (isis=='abi_g17' .and. post_abig17) .OR. &
(isis=='seviri_m10' .and. iget(876)>0) )then
print*,'obstype, isis= ',obstype,isis
! isis='amsua_n15'
@@ -439,6 +507,7 @@ SUBROUTINE CALRAD_WCLOUD
airs = obstype == 'airs'
hsb = obstype == 'hsb'
goes_img = obstype == 'goes_img'
+ abi = obstype == 'abi'
seviri = obstype == 'seviri'
insat3d = obstype == 'imgr_insat3d'
avhrr = obstype == 'avhrr'
@@ -462,7 +531,14 @@ SUBROUTINE CALRAD_WCLOUD
! check sensor list
sensorindex = 0
sensor_search: do j = 1, n_sensors
- if (channelinfo(j)%sensor_id == isis ) then
+ isis_local = isis ! allows abi_g16 & abi_g17 output using abi_gr fix files
+ if (isis=='abi_g16' .and. .not.fix_abig16) then
+ isis_local='abi_gr '
+ endif
+ if (isis=='abi_g17' .and. .not.fix_abig17) then
+ isis_local='abi_gr '
+ endif
+ if (channelinfo(j)%sensor_id == isis_local ) then
sensorindex = j
exit sensor_search
endif
@@ -477,6 +553,11 @@ SUBROUTINE CALRAD_WCLOUD
! simulate an instrument w/o a WMO ID:
if(isis=='ssmis_f19')channelinfo(sensorindex)%WMO_Satellite_Id=287
if(isis=='ssmis_f20')channelinfo(sensorindex)%WMO_Satellite_Id=289
+! quiet verbose output warning messages
+ if(isis=='abi_g16')channelinfo(sensorindex)%WMO_Satellite_Id=270
+ if(isis=='abi_g16')channelinfo(sensorindex)%WMO_Sensor_Id=617
+ if(isis=='abi_g17')channelinfo(sensorindex)%WMO_Satellite_Id=271
+ if(isis=='abi_g17')channelinfo(sensorindex)%WMO_Sensor_Id=617
allocate(rtsolution (channelinfo(sensorindex)%n_channels,1))
allocate(tb(im,jsta:jend,channelinfo(sensorindex)%n_channels))
@@ -874,21 +955,8 @@ SUBROUTINE CALRAD_WCLOUD
atmosphere(1)%cloud(5)%effective_radius(k), atmosphere(1)%cloud(5)%water_content(k), &
atmosphere(1)%cloud(6)%effective_radius(k), atmosphere(1)%cloud(6)%water_content(k)
- else if(imp_physics==11)then ! GFDL
-! per conv with Ruiyu, in radition, GFDL bundle their MP species to two cats
- atmosphere(1)%cloud(1)%water_content(k)=max(0.,qqw(i,j,k)*dpovg)
- atmosphere(1)%cloud(2)%water_content(k)=max(0.,qqi(i,j,k)*dpovg)
- atmosphere(1)%cloud(3)%water_content(k)=max(0.,qqr(i,j,k)*dpovg)
- atmosphere(1)%cloud(4)%water_content(k)=max(0.,qqs(i,j,k)*dpovg)
- atmosphere(1)%cloud(5)%water_content(k)=max(0.,qqg(i,j,k)*dpovg)
- atmosphere(1)%cloud(1)%effective_radius(k)=10.
- atmosphere(1)%cloud(2)%effective_radius(k)=50.
- atmosphere(1)%cloud(3)%effective_radius(k)=1000.
- atmosphere(1)%cloud(4)%effective_radius(k)=250.
- atmosphere(1)%cloud(5)%effective_radius(k)=1000.
-
- else if(imp_physics==8 .or. imp_physics==6 .or. imp_physics==2 .or. imp_physics==28 &
- )then
+ else if(imp_physics==8 .or. imp_physics==6 .or. imp_physics==2 .or. &
+ imp_physics==28 .or. imp_physics==11)then
atmosphere(1)%cloud(1)%water_content(k)=max(0.,qqw(i,j,k)*dpovg)
atmosphere(1)%cloud(2)%water_content(k)=max(0.,qqi(i,j,k)*dpovg)
atmosphere(1)%cloud(3)%water_content(k)=max(0.,qqr(i,j,k)*dpovg)
@@ -1107,6 +1175,8 @@ SUBROUTINE CALRAD_WCLOUD
(isis=='imgr_insat3d' .and. iget(865)>0) .OR. &
(isis=='imgr_g13' .and. iget(868)>0) .OR. &
(isis=='imgr_g15' .and. iget(872)>0) .OR. &
+ (isis=='abi_g16' .and. post_abig16) .OR. &
+ (isis=='abi_g17' .and. post_abig17) .OR. &
(isis=='seviri_m10' .and. iget(876)>0) .OR. &
(isis=='imgr_g12' .and. (iget(456)>0 .or. &
iget(457)>0 .or. iget(458)>0 .or. iget(459)>0)) .or. &
@@ -1130,6 +1200,12 @@ SUBROUTINE CALRAD_WCLOUD
else if(isis=='imgr_g15')then
sublat=0.0
sublon=-135.0
+ else if(isis=='abi_g16')then ! positions should be controlled by runtime setting or fix file
+ sublat=0.0
+ sublon=-75.2
+ else if(isis=='abi_g17')then
+ sublat=0.0
+ sublon=-137.2
else if(isis=='imgr_g11')then
sublat=0.0
sublon=-135.0
@@ -1446,8 +1522,9 @@ SUBROUTINE CALRAD_WCLOUD
atmosphere(1)%cloud(4)%effective_radius(k), atmosphere(1)%cloud(4)%water_content(k), &
atmosphere(1)%cloud(5)%effective_radius(k), atmosphere(1)%cloud(5)%water_content(k), &
atmosphere(1)%cloud(6)%effective_radius(k), atmosphere(1)%cloud(6)%water_content(k)
- else if(imp_physics==8 .or. imp_physics==6 .or. imp_physics==2 .or. imp_physics==28 &
- .or. imp_physics==11)then
+
+ else if(imp_physics==8 .or. imp_physics==6 .or. imp_physics==2 .or. &
+ imp_physics==28 .or. imp_physics==11)then
atmosphere(1)%cloud(1)%water_content(k)=max(0.,qqw(i,j,k)*dpovg)
atmosphere(1)%cloud(2)%water_content(k)=max(0.,qqi(i,j,k)*dpovg)
atmosphere(1)%cloud(3)%water_content(k)=max(0.,qqr(i,j,k)*dpovg)
@@ -1916,6 +1993,52 @@ SUBROUTINE CALRAD_WCLOUD
endif
enddo
end if ! end of outputting goes 15
+ if (isis=='abi_g16')then ! writing goes 16 to grib
+ nc=0
+ do ixchan=1,10
+ igot=iget(926+ixchan)
+ ichan=ixchan
+ if(igot>0)then
+ do j=jsta,jend
+ do i=1,im
+ grid1(i,j)=tb(i,j,ichan)
+ enddo
+ enddo
+ id(1:25) = 0
+ id(02) = 2
+ id(08) = 118
+ id(09) = 109
+ if(grib=="grib2" )then
+ cfld=cfld+1
+ fld_info(cfld)%ifld=IAVBLFLD(igot)
+ datapd(1:im,1:jend-jsta+1,cfld)=grid1(1:im,jsta:jend)
+ endif
+ endif
+ enddo ! channel loop
+ end if ! end of outputting goes 16
+ if (isis=='abi_g17')then ! writing goes 16 to grib
+ nc=0
+ do ixchan=1,10
+ igot=iget(936+ixchan)
+ ichan=ixchan
+ if(igot>0)then
+ do j=jsta,jend
+ do i=1,im
+ grid1(i,j)=tb(i,j,ichan)
+ enddo
+ enddo
+ id(1:25) = 0
+ id(02) = 2
+ id(08) = 118
+ id(09) = 109
+ if(grib=="grib2" )then
+ cfld=cfld+1
+ fld_info(cfld)%ifld=IAVBLFLD(igot)
+ datapd(1:im,1:jend-jsta+1,cfld)=grid1(1:im,jsta:jend)
+ endif
+ endif
+ enddo ! channel loop
+ end if ! end of outputting goes 17
end if nonnadir ! end if for computing simulated radiance with zenith angle correction
@@ -1960,13 +2083,15 @@ REAL FUNCTION EFFR(pmid,t,q,qqw,qqi,qqr,f_rimef, nlice, nrain, &
integer :: n,count,count1,mp_opt
real :: rho, ncc, rhox
real :: n0_s, n0_r, n0_g
+ real :: lambdar, lambdas, lambdag
!-------------------------------------------------------------------------------
! GAMMA FUNCTION & RELATED VARIABLES
!-------------------------------------------------------------------------------
real :: gamma
- real :: gamma_crg, gamma_i, gamma_s
+ real :: gamma_crg, gamma_s
+! real :: gamma_i
real :: WGAMMA, GAMMLN
@@ -2054,6 +2179,26 @@ REAL FUNCTION EFFR(pmid,t,q,qqw,qqi,qqr,f_rimef, nlice, nrain, &
nthom_sb = (/ 0.476221, -0.015896, 0.165977, 0.007468, -0.000141, &
0.060366, 0.000079, 0.000594, 0.0, -0.003577/)
+!-------------------------------------------------------------------------------
+! CONSTANTS FOR GFDL MICROPHYSICS SCHEME - which is Lin for precip clouds
+!-------------------------------------------------------------------------------
+
+ real, parameter :: gfdl_rhoi=100., gfdl_rhor=1000., gfdl_rhos=100.
+ real, parameter :: gfdl_rhog=400., gfdl_cnp=3.e8
+ real, parameter :: gfdl_tice = 273.16
+
+ real, parameter :: gfdl_qmin = 1.0e-5, gfdl_ccn = 1.0e8, gfdl_beta = 1.22
+ real, parameter :: gfdl_gammar = 17.837789, gfdl_gammas = 8.2850630, gfdl_gammag = 11.631769
+ real, parameter :: gfdl_alphar = 0.8, gfdl_alphas = 0.25, gfdl_alphag = 0.5
+ real, parameter :: gfdl_n0r=8.e6, gfdl_n0s=3.e6, gfdl_n0g=4.e6
+
+ real, parameter :: gfdl_rewmin = 5.0, gfdl_rewmax = 10.0
+ real, parameter :: gfdl_reimin = 10.0, gfdl_reimax = 150.0
+ real, parameter :: gfdl_rermin = 0.0, gfdl_rermax = 10000.0
+ real, parameter :: gfdl_resmin = 0.0, gfdl_resmax = 10000.0
+ real, parameter :: gfdl_regmin = 0.0, gfdl_regmax = 10000.0
+
+
if(mp_opt.eq.6) then !WSM6 SCHEME
@@ -2069,6 +2214,10 @@ REAL FUNCTION EFFR(pmid,t,q,qqw,qqi,qqr,f_rimef, nlice, nrain, &
endif
+ gamma_crg = 6.0 ! gamma(1.0 + beta_crg)
+ gamma_s = 2.981134 ! gamma(1.0 + beta_s)
+! gamma_i = 2.0 ! gamma(1.0 + beta_i)
+
!------------------------------------------------------------------------------
! SET DIAMETER ARRAYS TO ZERO, COMPUTE DENSITY
!------------------------------------------------------------------------------
@@ -2174,7 +2323,7 @@ REAL FUNCTION EFFR(pmid,t,q,qqw,qqi,qqr,f_rimef, nlice, nrain, &
END SELECT
- elseif(mp_opt.eq.8 .or. mp_opt.eq.11)then
+ elseif(mp_opt.eq.8)then
!-----------------------------------
! CLOUD DROPLET NUMBER CONCENTRATION
@@ -2408,6 +2557,67 @@ REAL FUNCTION EFFR(pmid,t,q,qqw,qqi,qqr,f_rimef, nlice, nrain, &
END SELECT
+ elseif(mp_opt.eq.11)then ! GFDL
+
+ SELECT CASE(species)
+
+ CASE("C")
+
+! cloud water (martin et al., 1994)
+ if (qqw > min_qc) then
+ effr = exp (1.0 / 3.0 * log ((3. * qqw ) / (4. * pi * gfdl_rhor * gfdl_ccn))) * 1.0e6
+ effr = max (gfdl_rewmin, min (gfdl_rewmax, effr))
+ effr = effr*2. ! because need diameter here, converted to radius at exit
+ end if
+
+ CASE("I")
+
+! cloud ice (heymsfield and mcfarquhar, 1996)
+ if (qqi > min_qi) then
+ if ((t-gfdl_tice) .lt. - 50) then
+ effr = gfdl_beta / 9.917 * exp ((1 - 0.891) * log (1.0e3 * qqi)) * 1.0e3
+ elseif ((t-gfdl_tice) .lt. - 40.) then
+ effr = gfdl_beta / 9.337 * exp ((1 - 0.920) * log (1.0e3 * qqi)) * 1.0e3
+ elseif ((t-gfdl_tice) .lt. - 30.) then
+ effr = gfdl_beta / 9.208 * exp ((1 - 0.945) * log (1.0e3 * qqi)) * 1.0e3
+ else
+ effr = gfdl_beta / 9.387 * exp ((1 - 0.969) * log (1.0e3 * qqi)) * 1.0e3
+ endif
+ effr = max (gfdl_reimin, min (gfdl_reimax, effr))
+ effr = effr*2. ! because need diameter here, converted to radius at exit
+ end if
+
+ CASE("R")
+
+ if ( qqr > min_qr ) then !rain diameter: assume gamma distribution
+ lambdar = exp (0.25 * log (pi * gfdl_rhor * gfdl_n0r / qqr))
+ effr = 0.5*exp (log (gfdl_gammar / 6.) / gfdl_alphar) / lambdar * 1.0e6
+ effr = max (gfdl_rermin, min (gfdl_rermax, effr))
+ effr = effr*2. ! because need diameter here, converted to radius at exit
+ endif
+
+
+ CASE("S")
+
+ if ( qqs > min_qs ) then !snow diameter: assume gamma distribution
+ lambdas = exp (0.25 * log (pi * gfdl_rhos * gfdl_n0s / qqs))
+ effr = 0.5 * exp (log (gfdl_gammas / 6.) / gfdl_alphas) / lambdas * 1.0e6
+ effr = max (gfdl_resmin, min (gfdl_resmax, effr))
+ effr = effr*2. ! because need diameter here, converted to radius at exit
+ endif
+
+ CASE("G")
+
+ if ( qqg > min_qg ) then !graupel diameter: assume gamma distribution
+ lambdag = exp (0.25 * log (pi * gfdl_rhog * gfdl_n0g / qqg))
+ effr = 0.5 * exp (log (gfdl_gammag / 6.) / gfdl_alphag) / lambdag * 1.0e6
+ effr = max (gfdl_regmin, min (gfdl_regmax, effr))
+ effr = effr*2. ! because need diameter here, converted to radius at exit
+ endif
+
+ END SELECT
+
+
elseif(mp_opt.eq.5.or.mp_opt.eq.85.or.mp_opt.eq.95)then
SELECT CASE (species)
diff --git a/comupp/src/unipost/CALRH.f b/comupp/src/unipost/CALRH.f
index 913060875..d493bfc02 100644
--- a/comupp/src/unipost/CALRH.f
+++ b/comupp/src/unipost/CALRH.f
@@ -21,6 +21,7 @@ SUBROUTINE CALRH(P1,T1,Q1,RH)
! 98-12-16 GEOFF MANIKIN - UNDO RH COMPUTATION OVER ICE
! 00-01-04 JIM TUCCILLO - MPI VERSION
! 02-06-11 MIKE BALDWIN - WRF VERSION
+! 06-03-19 Wen Meng - MODIFY TOP PRESSURE to 1 PA
!
! USAGE: CALL CALRH(P1,T1,Q1,RH)
! INPUT ARGUMENT LIST:
@@ -66,7 +67,7 @@ SUBROUTINE CALRH(P1,T1,Q1,RH)
DO J=JSTA,JEND
DO I=1,IM
IF (T1(I,J) < SPVAL) THEN
- IF (ABS(P1(I,J)) > 1) THEN
+ IF (ABS(P1(I,J)) >= 1) THEN
QC = PQ0/P1(I,J)*EXP(A2*(T1(I,J)-A3)/(T1(I,J)-A4))
!
RH(I,J) = Q1(I,J)/QC
diff --git a/comupp/src/unipost/CALRH_GFS.f b/comupp/src/unipost/CALRH_GFS.f
index 3e4de2e8c..992d57b44 100644
--- a/comupp/src/unipost/CALRH_GFS.f
+++ b/comupp/src/unipost/CALRH_GFS.f
@@ -22,6 +22,7 @@ SUBROUTINE CALRH_GFS(P1,T1,Q1,RH)
! 00-01-04 JIM TUCCILLO - MPI VERSION
! 02-06-11 MIKE BALDWIN - WRF VERSION
! 13-08-13 S. Moorthi - Threading
+! 06-03-19 Wen Meng - MODIFY TOP PRESSURE to 1 PA
!
! USAGE: CALL CALRH(P1,T1,Q1,RH)
! INPUT ARGUMENT LIST:
@@ -77,7 +78,8 @@ END FUNCTION FPVSNEW
DO I=1,IM
IF (T1(I,J) < SPVAL .AND. P1(I,J) < SPVAL.AND.Q1(I,J)/=SPVAL) THEN
! IF (ABS(P1(I,J)) > 1.0) THEN
- IF (P1(I,J) > 1.0) THEN
+! IF (P1(I,J) > 1.0) THEN
+ IF (P1(I,J) >= 1.0) THEN
ES = MIN(FPVSNEW(T1(I,J)),P1(I,J))
QC = CON_EPS*ES/(P1(I,J)+CON_EPSM1*ES)
diff --git a/comupp/src/unipost/CALVIS_GSD.f b/comupp/src/unipost/CALVIS_GSD.f
index 09baa6edb..33ebf61c5 100644
--- a/comupp/src/unipost/CALVIS_GSD.f
+++ b/comupp/src/unipost/CALVIS_GSD.f
@@ -23,6 +23,7 @@ SUBROUTINE CALVIS_GSD(CZEN,VIS)
! tb -- temperature (k)
! pp--pressure (Pa)
! rhb-- relative humidity (0-100%)
+! aextc55--aerosol extinction coefficient (m**-1)
!
!
! Independent of the above definitions, the scheme can use different
@@ -60,6 +61,10 @@ SUBROUTINE CALVIS_GSD(CZEN,VIS)
!
! vis = -ln(epsilon)/beta [found in Kunkel (1984)]
!
+! The 'aextc55' field is 3-D and is derived from the 'aod_3d' field
+! by dividing by dz, the vertical thickness of that model level in 'm'.
+! This can be handled as a 2-D field if needed to save resources.
+!
! HISTORY
! PROGRAM HISTORY LOG:
! 99-05- Version from Eta model and from
@@ -79,18 +84,21 @@ SUBROUTINE CALVIS_GSD(CZEN,VIS)
! from Roy Rasmussen
! - low-level wind shear term
! - recommended by Evan Kuchera
+! 2015-17 S. Benjamin, T. Smirnova - modifications for RH-based clear-air vis
+! 2017-12 R. Ahmadov, Steve Albers - addition for attenuation from aerosols
+! (not related to water vapor or RH at this point)
!
!------------------------------------------------------------------
!
- use vrbls3d, only: qqw, qqi, qqs, qqr, qqg, t, pmid, q, u, v, extcof55
+ use vrbls3d, only: qqw, qqi, qqs, qqr, qqg, t, pmid, q, u, v, extcof55, aextc55
use params_mod, only: h1, d608, rd
- use ctlblk_mod, only: jm, im, jsta_2l, jend_2u, jsta, jend, lm, &
- modelname
+ use ctlblk_mod, only: jm, im, jsta_2l, jend_2u, lm, modelname
implicit none
integer :: j, i, k, ll
+ integer :: method
real :: tx, pol, esx, es, e
REAL VIS(IM,jsta_2l:jend_2u) ,RHB(IM,jsta_2l:jend_2u,LM), CZEN(IM,jsta_2l:jend_2u)
@@ -116,6 +124,13 @@ SUBROUTINE CALVIS_GSD(CZEN,VIS)
real vis_night, zen_fac
!------------------------------------------------------------------
+! Method used for clear-air visibility with extension for aerosols
+ method = 3
+! RH-only method (1),
+! Aerosol method (2),
+! Smoke added to RH method for clear air (3)
+! 3 - option to add reducted visibility from smoke-based aerosols.
+
CELKEL = 273.15
TICE = CELKEL-10.
COEFLC = 144.7
@@ -139,7 +154,7 @@ SUBROUTINE CALVIS_GSD(CZEN,VIS)
vis3km_cnt = 0
vis5km_cnt = 0
-! - values from Roy Rasmussen - Dec 2003
+! - snow-based vis attenuation - coefficient values from Roy Rasmussen - Dec 2003
! COEFFP_dry = 17.7
! COEFFP_wet = 4.18
! - modified number - Stan B. - Dec 2007
@@ -147,9 +162,10 @@ SUBROUTINE CALVIS_GSD(CZEN,VIS)
COEFFP_dry = 10.0
COEFFP_wet = 6.0
-
! COEFFg = 8.0
! - values from Roy Rasmussen - Dec 2003
+! Rasmussen et al. 2003, J. App. Meteor.
+! Snow Nowcasting Using a Real-Time Correlation of Radar Reflectivity with Snow Gauge Accumulation
COEFFg = 4.0
EXPONLC = 0.8800
@@ -161,23 +177,23 @@ SUBROUTINE CALVIS_GSD(CZEN,VIS)
EXPONFg = 0.75
! CONST1=-LOG(.02)
- CONST1= 3.912
+ if(MODELNAME == 'RAPR') then
+ CONST1= 3.000
+ else
+ CONST1= 3.912
+ endif
! visibility with respect to RH is
! calculated from optical depth linearly
! related to RH as follows:
-! vis = 60 exp (-3 * (RH-15)/80)
-! changed on 8/23/00
! vis = 60 exp (-2.5 * (RH-15)/80)
! changed on 3/14/01
-! Previous algorithm gave vis of 3km, not 5 km
-! at 95% RH, now fixed. Stan B.
! coefficient of 3 gives visibility of 5 km
! at 95% RH
-! Total visibility is minimum of vis-rh
+! Total visibility is minimum of vis-rh (developed by Benjamin, Brown, Smirnova)
! and vis-hydrometeors from Stoelinga/Warner
RHOICE=917.
@@ -186,28 +202,15 @@ SUBROUTINE CALVIS_GSD(CZEN,VIS)
vis_min = 1.e6
visrh_min = 1.e6
- DO J=jsta,jend
+ DO J=jsta_2l,jend_2u
DO I=1,IM
-! - take max hydrometeor mixing ratios in lowest 25 mb (lowest 5 levels)
-! - change - 3/8/01 - Stan B. - based on apparent underforecasting
-! of visibility (vis too low from 20km RUC)
-! - take max hydrometeor mixing ratios in lowest 15 mb (lowest 4 levels)
+! - take max hydrometeor mixing ratios in lowest 3 levels (lowest 13 hPa, 100m with RAP/HRRR
qrain = 0.
qsnow = 0.
qgraupel = 0.
qclw = 0.
qclice = 0.
-!???? - Stan B. - questions as of 1/1/04
-!???? - use mean of these values over
-! lowest 2 levels
-
-! do k = 1,4
-! QRAIN = qrain+QR(I,J,k)
-! QSNOW = qsnow+max(0.,QS(I,J,k) )
-! Qgraupel= qgraupel+Qg(I,J,k)
-! end do
-
do k = 1,3
LL=LM-k+1
QCLW = max(qclw, QQW(I,J,ll) )
@@ -230,24 +233,12 @@ SUBROUTINE CALVIS_GSD(CZEN,VIS)
enddo
-! qrain = max(0., qrain / 4.)
-! qsnow = max(0., qsnow / 4.)
-! qgraupel = max(0., qgraupel / 4.)
-! qclw = max(0., qclw / 2.)
-! qclice = max(0., qclice / 2.)
-
! - take max RH of levels 1 and 2 near the sfc
rhmax = max (rhb(i,j,lm),rhb(i,j,lm-1))
-! rhmax = max (rhb(i,j,1),rhb(i,j,2))
-! - vary RH coefficient between 75% up to max at 95%
-! to give 5.4 km visibility at 95%.
-! qrh = max(0.0,min(1.0,(rhb(i,j)/100.-0.15)/0.80))
qrh = max(0.0,min(0.8,(rhmax/100.-0.15)))
-!15aug11 visrh = 80. * exp(-2.5*qrh)
-! visrh = 60. * exp(-2.5*qrh)
-!tgs 23 feb 2017 - incrrease of base value to 90 km to reduce effect
-! from RH visibility.
+!tgs 23 feb 2017 - increase of base value to 90 km to reduce attenuation
+! from RH for clear-air visibility. (i.e., increase clear-air vis overall)
IF(MODELNAME == 'RAPR') then
visrh = 90. * exp(-2.5*qrh)
else
@@ -259,13 +250,10 @@ SUBROUTINE CALVIS_GSD(CZEN,VIS)
! (using Evan Kuchera's paper as a guideline)
! -- calculate term for shear between levels 1 and 4
-! (about 15 mb)
+! (about 25 hPa for HRRR/RAP)
shear = sqrt( (u(i,j,lm-3)-u(i,j,lm))**2 &
+(v(i,j,lm-3)-v(i,j,lm))**2 )
-! shear = sqrt( (u(i,j,4)-u(i,j,1))**2
-! 1 +(v(i,j,4)-v(i,j,1))**2 )
-! shear_fac = min(1.,max(0.,(shear-5.)/3.) )
shear_fac = min(1.,max(0.,(shear-4.)/2.) )
if (visrh.lt.10.) visrh = visrh + (10.-visrh)* &
shear_fac
@@ -282,15 +270,12 @@ SUBROUTINE CALVIS_GSD(CZEN,VIS)
shear8_cnt_lowvis = shear8_cnt_lowvis +1
if (visrh.lt.10.) visrh10_cnt = visrh10_cnt+1
-!new
if (czen(i,j).lt.0.) night_cnt = night_cnt + 1
if (czen(i,j).lt.0.1) lowsun_cnt = lowsun_cnt + 1
TV=T(I,J,lm)*(H1+D608*Q(I,J,lm))
-! tv = t(i,j,1)*(1. + 0.6078*q(i,j,1))
RHOAIR=PMID(I,J,lm)/(RD*TV)
-! RHOAIR=PMID(I,J,1)/(RD*TV)
VOVERMD=(1.+Q(I,J,lm))/RHOAIR+(QCLW+QRAIN)/RHOWAT+ &
! VOVERMD=(1.+Q(I,J,1))/RHOAIR+(QCLW+QRAIN)/RHOWAT+
@@ -302,25 +287,29 @@ SUBROUTINE CALVIS_GSD(CZEN,VIS)
CONCFg=Qgraupel/VOVERMD*1000.
temp_fac = min(1.,max((t(i,j,lm)-271.15),0.) )
-! temp_fac = min(1.,max((t(i,j,1)-271.15),0.) )
+
coef_snow = coeffp_dry*(1.-temp_fac) &
+ coeffp_wet* temp_fac
if (t(i,j,lm).lt. 270. .and. temp_fac.eq.1.) &
-! if (t(i,j,1).lt. 270. .and. temp_fac.eq.1.)
write (6,*) 'Problem w/ temp_fac - calvis'
-! BETAV=COEFFC*CONCFC**EXPONFC+COEFFP*CONCFP**EXPONFP
-
+! Key calculation of attenuation from each hydrometeor type (cloud, snow, graupel, rain, ice)
BETAV=COEFFC*CONCFC**EXPONFC &
+ coef_SNOW*CONCFP**EXPONFP &
- + COEFLC*CONCLC**EXPONLC+COEFLP*CONCLP**EXPONLP &
+ + COEFLC*CONCLC**EXPONLC + COEFLP*CONCLP**EXPONLP &
+ coeffg*concfg**exponfg +1.E-10
+! Addition of attenuation from aerosols if option selected
+ if(method .eq. 2 .or. method .eq. 3)then ! aerosol method
+ BETAV = BETAV + aextc55(i,j,lm)*1000.
+ endif
+
if (i.eq.290 .and. j.eq.112) then
write (6,*) 'BETAV, extcof55 =',BETAV,extcof55(i,j,lm)
end if
+! Calculation of visibility based on hydrometeor and aerosols. (RH effect not yet included.)
VIS(I,J)=MIN(90.,CONST1/BETAV+extcof55(i,j,lm)) ! max of 90km
if (vis(i,j).lt.vis_min) vis_min = vis(i,j)
@@ -344,12 +333,14 @@ SUBROUTINE CALVIS_GSD(CZEN,VIS)
write (6,*) 'visrh, vis =',visrh, vis(i,j)
end if
- vis(i,j) = min(vis(i,j),visrh)
+ if(method .eq. 1 .or. method .eq. 3)then ! RH method (if lower vis)
+ vis(i,j) = min(vis(i,j),visrh)
+ endif
if (vis(i,j).lt.1.) vis1km_cnt = vis1km_cnt + 1
if (vis(i,j).lt.3.) vis3km_cnt = vis3km_cnt + 1
if (vis(i,j).lt.5.) vis5km_cnt = vis5km_cnt + 1
-! convert to [m]
+! convert vis from km to [m]
vis(i,j) = vis(i,j) * 1000.
ENDDO
@@ -374,7 +365,7 @@ SUBROUTINE CALVIS_GSD(CZEN,VIS)
! write (6,*)'No. of grid pts with vis < 3 km', &
! vis3km_cnt
! write (6,*)'No. of grid pts with vis < 5 km', &
-! vis5km_cnt
+! vis5km_cnt
! write (6,*)
! write (6,*)'Min vis-hydrometeor, vis-RH', vis_min, visrh_min
!
diff --git a/comupp/src/unipost/CALVOR.f b/comupp/src/unipost/CALVOR.f
index 1555d5a4e..6a80bca05 100644
--- a/comupp/src/unipost/CALVOR.f
+++ b/comupp/src/unipost/CALVOR.f
@@ -323,8 +323,7 @@ SUBROUTINE CALVOR(UWND,VWND,ABSV)
R2DY = 1./(2.*DY(I,J))
DVDX = (VWND(I+1,J)-VWND(I-1,J))*R2DX
DUDY = (UWND(I,J+1)-UWND(I,J-1))*R2DY
- UAVG = 0.25*(UWND(I+1,J)+UWND(I-1,J) &
- & + UWND(I,J+1)+UWND(I,J-1))
+ UAVG = UWND(I,J)
! is there a (f+tan(phi)/erad)*u term?
IF(MODELNAME == 'RAPR') then
ABSV(I,J) = DVDX - DUDY + F(I,J) ! for run RAP over north pole
diff --git a/comupp/src/unipost/CLDRAD.f b/comupp/src/unipost/CLDRAD.f
index 1aacc0a27..541927300 100644
--- a/comupp/src/unipost/CLDRAD.f
+++ b/comupp/src/unipost/CLDRAD.f
@@ -66,7 +66,7 @@ SUBROUTINE CLDRAD
! 13-12-23 LU/Wang - READ AEROSOL OPTICAL PROPERTIES LUTS to compute dust aod,
! non-dust aod, and use geos5 gocart LUTS
! 15-??-?? S. Moorthi - threading, optimization, local dimension
-!
+! 19-07-24 Li(Kate) Zhang Merge and update ARAH Lu's work from NGAC into FV3-Chem
!
! USAGE: CALL CLDRAD
! INPUT ARGUMENT LIST:
@@ -90,8 +90,10 @@ SUBROUTINE CLDRAD
!$$$
!
use vrbls4d, only: DUST,SUSO, SALT, SOOT, WASO
- use vrbls3d, only: QQW, QQR, T, ZINT, CFR, CFR_RAW, QQI, QQS, Q, EXT, &
- ZMID, PMID, PINT, DUEM, DUSD, DUDP, DUWT
+ use vrbls3d, only: QQW, QQR, T, ZINT, CFR, QQI, QQS, Q, EXT, ZMID,PMID,&
+ PINT, DUEM, DUSD, DUDP, DUWT, DUSV, SSEM, SSSD,SSDP,&
+ SSWT, SSSV, BCEM, BCSD, BCDP, BCWT, BCSV, OCEM,OCSD,&
+ OCDP, OCWT, OCSV, SCA, ASY,CFR_RAW
use vrbls2d, only: CLDEFI, CFRACL, AVGCFRACL, CFRACM, AVGCFRACM, CFRACH,&
AVGCFRACH, AVGTCDC, NCFRST, ACFRST, NCFRCV, ACFRCV, &
HBOT, HBOTD, HBOTS, HTOP, HTOPD, HTOPS, FIS, PBLH, &
@@ -105,7 +107,9 @@ SUBROUTINE CLDRAD
AIRDIFFSWIN, DUSMASS, DUSMASS25, DUCMASS, DUCMASS25, &
ALWINC, ALWTOAC, SWDDNI, SWDDIF, SWDNBC, SWDDNIC, &
SWDDIFC, SWUPBC, LWDNBC, LWUPBC, SWUPT, &
- TAOD5502D, AERSSA2D, AERASY2D
+ TAOD5502D, AERSSA2D, AERASY2D, MEAN_FRP, LWP, IWP, &
+ TAOD5502D, AERSSA2D, AERASY2D, &
+ DUSTCB,SSCB,BCCB,OCCB,SULFCB,DUSTPM,SSPM
use masks, only: LMH, HTM
use params_mod, only: TFRZ, D00, H99999, QCLDMIN, SMALL, D608, H1, ROG, &
GI, RD, QCONV, ABSCOEFI, ABSCOEF, STBOL, PQ0, A2, &
@@ -113,6 +117,7 @@ SUBROUTINE CLDRAD
use ctlblk_mod, only: JSTA, JEND, SPVAL, MODELNAME, GRIB, CFLD,DATAPD, &
FLD_INFO, AVRAIN, THEAT, IFHR, IFMIN, AVCNVC, &
TCLOD, ARDSW, TRDSW, ARDLW, NBIN_DU, TRDLW, IM, &
+ NBIN_SS, NBIN_OC, NBIN_BC, NBIN_SU, &
JM, LM, gocart_on, me
use rqstfld_mod, only: IGET, ID, LVLS, IAVBLFLD
use gridspec_mod, only: dyval, gridtype
@@ -172,6 +177,27 @@ SUBROUTINE CLDRAD
integer, parameter :: NOAER = 20 ! unit for LUTs file
integer, parameter :: nAero=KCM2 ! num of aer species in LUTs
CHARACTER :: AerosolName(KCM2)*4, AerosolName_rd*4, aerosol_file*30
+ CHARACTER :: AerName_rd*4, AerOpt*3
+
+! - aerosol optical properties: mass extinction efficiency
+ REAL, ALLOCATABLE :: extrhd_DU(:,:,:), extrhd_SS(:,:,:), &
+ & extrhd_SU(:,:,:), extrhd_BC(:,:,:), &
+ & extrhd_OC(:,:,:)
+
+! - aerosol optical properties: mass scattering efficienc
+ REAL, ALLOCATABLE :: scarhd_DU(:,:,:), scarhd_SS(:,:,:), &
+ & scarhd_SU(:,:,:), scarhd_BC(:,:,:), &
+ & scarhd_OC(:,:,:)
+
+! - aerosol optical properties: asymmetry factor
+ REAL, ALLOCATABLE :: asyrhd_DU(:,:,:), asyrhd_SS(:,:,:), &
+ & asyrhd_SU(:,:,:), asyrhd_BC(:,:,:), &
+ & asyrhd_OC(:,:,:)
+
+! - aerosol optical properties: single scatter albedo
+ REAL, ALLOCATABLE :: ssarhd_DU(:,:,:), ssarhd_SS(:,:,:), &
+ & ssarhd_SU(:,:,:), ssarhd_BC(:,:,:), &
+ & ssarhd_OC(:,:,:)
! --- aerosol optical properties mapped onto specified spectral bands
! - relative humidity independent aerosol optical properties: du
@@ -184,16 +210,23 @@ SUBROUTINE CLDRAD
! REAL, allocatable :: RH3D(:,:,:) ! RELATIVE HUMIDITY
real, allocatable:: rdrh(:,:,:)
integer, allocatable :: ihh(:,:,:)
- REAL :: rh3d, DRH0, DRH1, EXT01, EXT02
+ REAL :: rh3d, DRH0, DRH1, EXT01, EXT02,SCA01,ASY01
INTEGER :: IH1, IH2
-
-! REAL :: rh3d, DRH0, DRH1, EXT01, EXT02, RDRH(IM,jsta:jend,LM)
-! INTEGER :: IH1, IH2, IHH(IM,jsta:jend,LM)
-!
- INTEGER :: IOS, INDX, ISSAM, ISSCM, ISUSO, IWASO, ISOOT
+ INTEGER :: IOS, INDX, ISSAM, ISSCM, ISUSO, IWASO, ISOOT, NBIN
REAL :: CCDRY, CCWET, SSAM, SSCM
REAL,dimension(im,jsta:jend) :: AOD_DU, AOD_SS, AOD_SU, AOD_OC, AOD_BC, AOD
-!
+ REAL,dimension(im,jsta:jend) :: SCA_DU, SCA_SS, SCA_SU, SCA_OC,SCA_BC, SCA2D
+ REAL,dimension(im,jsta:jend) :: ASY_DU, ASY_SS, ASY_SU, ASY_OC, ASY_BC,ASY2D
+ REAL,dimension(im,jsta:jend) :: ANGST, AOD_440, AOD_860 ! FORANGSTROM EXPONENT
+ REAL :: ANG1, ANG2
+ INTEGER :: INDX_EXT(nAero), INDX_SCA(nAero)
+ LOGICAL :: LAEROPT, LEXT, LSCA, LASY
+ LOGICAL :: LAERSMASS
+ REAL, allocatable :: fPM25_DU(:),fPM25_SS(:)
+ REAL, allocatable, dimension(:,:) :: RHOsfc, smass_du_cr,smass_du_fn, &
+ & smass_ss_cr, smass_ss_fn, smass_oc,smass_bc, &
+ & smass_su, smass_cr, smass_fn
+ real :: rPM, dmass
real (kind=kind_phys), dimension(KRHLEV) :: rhlev
data rhlev (:)/ .0, .05, .10, .15, .20, .25, .30, .35, &
& .40, .45, .50, .55, .60, .65, .70, .75, &
@@ -201,9 +234,10 @@ SUBROUTINE CLDRAD
& .88, .89, .90, .91, .92, .93, .94, .95, &
& .96, .97, .98, .99/
!
- data aerosol_file /"AEROSOL_LUTS.dat"/
- data AerosolName /'WASO', 'SOOT', 'SUSO', 'SSAM', 'SSCM'/
-
+ data AerosolName /'DUST', 'SALT', 'SUSO', 'SOOT', 'WASO'/
+! INDEX FOR TOTAL AND SPECIATED AEROSOLS (DU, SS, SU, OC, BC)
+ data INDX_EXT / 610, 611, 612, 613, 614 /
+ data INDX_SCA / 651, 652, 653, 654, 655 /
!
!
!*************************************************************************
@@ -287,6 +321,8 @@ SUBROUTINE CLDRAD
!
! CONVECTIVE AVAILABLE POTENTIAL ENERGY.
IF ((IGET(032) > 0))THEN
+! dong add missing value for cape
+ GRID1 = spval
IF ( (LVLS(1,IGET(032)).GT.0) )THEN
ITYPE = 1
DPBND = 10.E2
@@ -297,7 +333,7 @@ SUBROUTINE CLDRAD
!$omp parallel do private(i,j)
DO J=JSTA,JEND
DO I=1,IM
- GRID1(I,J) = EGRID1(I,J)
+ IF(FIS(I,J) < SPVAL) GRID1(I,J) = EGRID1(I,J)
ENDDO
ENDDO
CALL BOUND(GRID1,D00,H99999)
@@ -320,13 +356,15 @@ SUBROUTINE CLDRAD
!
! CONVECTIVE INHIBITION.
IF ((IGET(107) > 0))THEN
+! dong add missing value for cin
+ GRID1 = spval
IF ( (LVLS(1,IGET(107)) > 0) )THEN
IF ((IGET(032) > 0))THEN
IF ( (LVLS(1,IGET(032)) > 0) )THEN
!$omp parallel do private(i,j)
DO J=JSTA,JEND
DO I=1,IM
- GRID1(I,J) = - EGRID2(I,J)
+ IF(FIS(I,J) < SPVAL) GRID1(I,J) = - EGRID2(I,J)
ENDDO
ENDDO
END IF
@@ -340,7 +378,7 @@ SUBROUTINE CLDRAD
!$omp parallel do private(i,j)
DO J=JSTA,JEND
DO I=1,IM
- GRID1(I,J) = - EGRID2(I,J)
+ IF(FIS(I,J) < SPVAL) GRID1(I,J) = - EGRID2(I,J)
ENDDO
ENDDO
END IF
@@ -348,7 +386,7 @@ SUBROUTINE CLDRAD
!$omp parallel do private(i,j)
DO J=JSTA,JEND
DO I=1,IM
- GRID1(I,J) = - GRID1(I,J)
+ IF(FIS(I,J) < SPVAL) GRID1(I,J) = - GRID1(I,J)
ENDDO
ENDDO
if(grib == "grib1" )then
@@ -372,9 +410,16 @@ SUBROUTINE CLDRAD
!
! TOTAL COLUMN PRECIPITABLE WATER (SPECIFIC HUMIDITY).
IF (IGET(080) > 0) THEN
+! dong
+ GRID1 = spval
CALL CALPW(GRID1(1,jsta),1)
ID(1:25) = 0
- CALL BOUND(GRID1,D00,H99999)
+ DO J=JSTA,JEND
+ DO I=1,IM
+ IF(FIS(I,J) >= SPVAL) GRID1(I,J)=spval
+ END DO
+ END DO
+ CALL BOUND(GRID1,D00,H99999)
if(grib == "grib1" )then
CALL GRIBIT(IGET(080),LVLS(1,IGET(080)),GRID1,IM,JM)
else if(grib == "grib2" )then
@@ -390,11 +435,62 @@ SUBROUTINE CLDRAD
endif
ENDIF
!
+! E. James - 8 Dec 2017
+! TOTAL COLUMN AOD (TAOD553D FROM HRRR-SMOKE)
+!
+ IF (IGET(735) > 0) THEN
+ CALL CALPW(GRID1(1,jsta),19)
+ ID(1:25) = 0
+ CALL BOUND(GRID1,D00,H99999)
+ if(grib == "grib1" )then
+ CALL GRIBIT(IGET(735),LVLS(1,IGET(735)),GRID1,IM,JM)
+ else if(grib == "grib2" )then
+ cfld = cfld + 1
+ fld_info(cfld)%ifld = IAVBLFLD(IGET(735))
+!$omp parallel do private(i,j,jj)
+ do j=1,jend-jsta+1
+ jj = jsta+j-1
+ do i=1,im
+ datapd(i,j,cfld) = GRID1(i,jj)
+ enddo
+ enddo
+ endif
+ ENDIF
+!
+! E. James - 8 Dec 2017
+! TOTAL COLUMN FIRE SMOKE (tracer_1a FROM HRRR-SMOKE)
+!
+ IF (IGET(736) > 0) THEN
+ CALL CALPW(GRID1(1,jsta),18)
+ ID(1:25) = 0
+ CALL BOUND(GRID1,D00,H99999)
+ if(grib == "grib1" )then
+ CALL GRIBIT(IGET(736),LVLS(1,IGET(736)),GRID1,IM,JM)
+ else if(grib == "grib2" )then
+ cfld = cfld + 1
+ fld_info(cfld)%ifld = IAVBLFLD(IGET(736))
+!$omp parallel do private(i,j,jj)
+ do j=1,jend-jsta+1
+ jj = jsta+j-1
+ do i=1,im
+ datapd(i,j,cfld) = GRID1(i,jj)
+ enddo
+ enddo
+ endif
+ ENDIF
+!
! TOTAL COLUMN CLOUD WATER
- IF (IGET(200) > 0 .or. IGET(575) > 0) THEN
+ IF (IGET(200) > 0 .or. IGET(575) > 0) THEN
+ IF (MODELNAME == 'RAPR') THEN
+ DO J=JSTA,JEND
+ DO I=1,IM
+ GRID1(I,J) = LWP(I,J)/1000.0 ! use WRF-diagnosed value
+ ENDDO
+ ENDDO
+ ELSE
CALL CALPW(GRID1(1,jsta),2)
IF(MODELNAME == 'GFS')then
-! GFS combines cloud water and cloud ice, hoping to seperate them next implementation
+! GFS combines cloud water and cloud ice, hoping to seperate them next implementation
CALL CALPW(GRID2(1,jsta),3)
!$omp parallel do private(i,j)
DO J=JSTA,JEND
@@ -402,7 +498,8 @@ SUBROUTINE CLDRAD
GRID1(I,J) = GRID1(I,J) + GRID2(I,J)
ENDDO
ENDDO
- END IF
+ END IF ! GFS
+ END IF ! RAPR
ID(1:25) = 0
ID(02) = 129 !--- Parameter Table 129, PDS Octet 4 = 129)
@@ -440,7 +537,15 @@ SUBROUTINE CLDRAD
!
! TOTAL COLUMN CLOUD ICE
IF (IGET(201) > 0) THEN
+ IF (MODELNAME == 'RAPR') THEN
+ DO J=JSTA,JEND
+ DO I=1,IM
+ GRID1(I,J) = IWP(I,J)/1000.0 ! use WRF-diagnosed value
+ ENDDO
+ ENDDO
+ ELSE
CALL CALPW(GRID1(1,jsta),3)
+ END IF
ID(1:25) = 0
ID(02) = 129 !--- Parameter Table 129, PDS Octet 4 = 129)
CALL BOUND(GRID1,D00,H99999)
@@ -1170,6 +1275,7 @@ SUBROUTINE CLDRAD
IF ((IGET(161) > 0) .OR. (IGET(260) > 0)) THEN
! GRID1=SPVAL
IF(MODELNAME == 'GFS')THEN
+ IF (IGET(161) > 0) THEN
!$omp parallel do private(i,j)
DO J=JSTA,JEND
DO I=1,IM
@@ -1178,6 +1284,7 @@ SUBROUTINE CLDRAD
TCLD(i,j) = SPVAL
ENDDO
ENDDO
+ ENDIF
ELSE IF(MODELNAME .EQ. 'NCAR' .OR. MODELNAME == 'RAPR')THEN
DO J=JSTA,JEND
DO I=1,IM
@@ -1189,7 +1296,7 @@ SUBROUTINE CLDRAD
ENDDO
ENDDO
- ELSE IF (MODELNAME.EQ.'NMM'.OR.MODELNAME.EQ.'RSM')THEN
+ ELSE IF (MODELNAME.EQ.'NMM'.OR.MODELNAME.EQ.'FV3R')THEN
DO J=JSTA,JEND
DO I=1,IM
! EGRID1(I,J)=AMAX1(CFRACL(I,J),
@@ -1406,7 +1513,7 @@ SUBROUTINE CLDRAD
IF((IGET(148).GT.0) .OR. (IGET(149).GT.0) .OR. &
(IGET(168).GT.0) .OR. (IGET(178).GT.0) .OR. &
(IGET(179).GT.0) .OR. (IGET(194).GT.0) .OR. &
- (IGET(408).GT.0) .OR. (IGET(787).GT.0) .OR. &
+ (IGET(408).GT.0) .OR. (IGET(798).GT.0) .OR. &
(IGET(409).GT.0) .OR. (IGET(406).GT.0) .OR. &
(IGET(195).GT.0) .OR. (IGET(260).GT.0) .OR. &
(IGET(275).GT.0)) THEN
@@ -1571,18 +1678,30 @@ SUBROUTINE CLDRAD
DO J=JSTA,JEND
DO I=1,IM
IBOT=IBOTT(I,J) !-- Cloud base ("bottoms")
- IF (IBOT>0 .AND. IBOT<=NINT(LMH(I,J))) THEN
- CLDP(I,J) = PMID(I,J,IBOT)
- CLDZ(I,J) = ZMID(I,J,IBOT)
+ IF(MODELNAME == 'RAPR') then
+ IF (IBOT .LE. 0) THEN
+ CLDP(I,J) = SPVAL
+ CLDZ(I,J) = SPVAL
+ ELSE IF (IBOT .LE. NINT(LMH(I,J))) THEN
+ CLDP(I,J) = PMID(I,J,IBOT)
+ IF (IBOT .EQ. LM) THEN
+ CLDZ(I,J) = ZINT(I,J,LM)
+ ELSE
+ CLDZ(I,J) = HTM(I,J,IBOT+1)*T(I,J,IBOT+1) &
+ *(Q(I,J,IBOT+1)*D608+H1)*ROG* &
+ (LOG(PINT(I,J,IBOT+1))-LOG(CLDP(I,J)))&
+ +ZINT(I,J,IBOT+1)
+ ENDIF !--- End IF (IBOT .EQ. LM) ...
+ ENDIF !--- End IF (IBOT .LE. 0) ...
ELSE
- IF(MODELNAME == 'RAPR') then
- CLDP(I,J) = SPVAL
- CLDZ(I,J) = SPVAL
- ELSE
- CLDP(I,J) = -50000.
- CLDZ(I,J) = -5000.
- ENDIF
- ENDIF !--- End IF (IBOT .LE. 0) ...
+ IF (IBOT>0 .AND. IBOT<=NINT(LMH(I,J))) THEN
+ CLDP(I,J) = PMID(I,J,IBOT)
+ CLDZ(I,J) = ZMID(I,J,IBOT)
+ ELSE
+ CLDP(I,J) = -50000.
+ CLDZ(I,J) = -5000.
+ ENDIF !--- End IF (IBOT .LE. 0) ...
+ ENDIF
ENDDO !--- End DO I loop
ENDDO !--- End DO J loop
! CLOUD BOTTOM PRESSURE
@@ -1625,7 +1744,7 @@ SUBROUTINE CLDRAD
! "GSD CLOUD BOTTOM HEIGHT". An alternative (experimental)
! GSD cloud ceiling algorithm is offered further below.
- IF (IGET(408).GT.0 .OR. IGET(787).GT.0) THEN
+ IF (IGET(408).GT.0 .OR. IGET(798).GT.0) THEN
!- imported from RUC post
! -- constants for effect of snow on ceiling
! Also found in calvis.f
@@ -1888,7 +2007,7 @@ SUBROUTINE CLDRAD
endif
ENDIF
! GSD CLOUD BOTTOM PRESSURE
- IF (IGET(787).GT.0) THEN
+ IF (IGET(798).GT.0) THEN
!$omp parallel do private(i,j)
DO J=JSTA,JEND
DO I=1,IM
@@ -1897,10 +2016,10 @@ SUBROUTINE CLDRAD
ENDDO
if(grib=="grib1" )then
ID(1:25)=0
- CALL GRIBIT(IGET(787),LVLS(1,IGET(787)),GRID1,IM,JM)
+ CALL GRIBIT(IGET(798),LVLS(1,IGET(798)),GRID1,IM,JM)
else if(grib=="grib2" )then
cfld=cfld+1
- fld_info(cfld)%ifld=IAVBLFLD(IGET(787))
+ fld_info(cfld)%ifld=IAVBLFLD(IGET(798))
datapd(1:im,1:jend-jsta+1,cfld)=GRID1(1:im,jsta:jend)
endif
ENDIF
@@ -3559,6 +3678,8 @@ SUBROUTINE CLDRAD
!
! CURRENT INCOMING LW RADIATION AT THE SURFACE.
IF (IGET(157).GT.0) THEN
+! dong add missing value to DLWRF
+ GRID1 = spval
DO J=JSTA,JEND
DO I=1,IM
IF(MODELNAME.eq.'RSM' .OR. MODELNAME == 'RAPR') THEN !add by Binbin: RSM has direct RLWIN output
@@ -3571,7 +3692,7 @@ SUBROUTINE CLDRAD
ELSE
FACTRL=0.0
ENDIF
- GRID1(I,J)=RLWIN(I,J)*FACTRL
+ IF(RLWIN(I,J) < spval) GRID1(I,J)=RLWIN(I,J)*FACTRL
ENDIF
ENDDO
ENDDO
@@ -3685,6 +3806,27 @@ SUBROUTINE CLDRAD
endif
ENDIF
+! Instantaneous MEAN_FRP
+ IF (IGET(740).GT.0) THEN
+ print *,"GETTING INTO MEAN_FRP PART"
+ DO J=JSTA,JEND
+ DO I=1,IM
+ GRID1(I,J) = MEAN_FRP(I,J)
+ ENDDO
+ ENDDO
+ if(grib=='grib1') then
+ ID(1:25) = 0
+ ID(02)= 2
+ CALL GRIBIT(IGET(740),LVLS(1,IGET(740)), &
+ GRID1,IM,JM)
+ elseif(grib=='grib2') then
+ print *,"GETTING INTO MEAN_FRP GRIB2 PART"
+ cfld=cfld+1
+ fld_info(cfld)%ifld=IAVBLFLD(IGET(740))
+ datapd(1:im,1:jend-jsta+1,cfld)=GRID1(1:im,jsta:jend)
+ endif
+ ENDIF
+
! CURRENT (instantaneous) INCOMING CLEARSKY SW RADIATION AT THE SURFACE.
IF (IGET(262).GT.0) THEN
!$omp parallel do private(i,j)
@@ -3748,7 +3890,7 @@ SUBROUTINE CLDRAD
ENDIF
! Instantaneous clear-sky SWDDNI
- IF (IGET(785).GT.0) THEN
+ IF (IGET(796).GT.0) THEN
DO J=JSTA,JEND
DO I=1,IM
GRID1(I,J) = SWDDNIC(I,J)
@@ -3757,11 +3899,11 @@ SUBROUTINE CLDRAD
if(grib=='grib1') then
ID(1:25) = 0
ID(02)= 130
- CALL GRIBIT(IGET(785),LVLS(1,IGET(785)), &
+ CALL GRIBIT(IGET(796),LVLS(1,IGET(796)), &
GRID1,IM,JM)
elseif(grib=='grib2') then
cfld=cfld+1
- fld_info(cfld)%ifld=IAVBLFLD(IGET(785))
+ fld_info(cfld)%ifld=IAVBLFLD(IGET(796))
datapd(1:im,1:jend-jsta+1,cfld)=GRID1(1:im,jsta:jend)
endif
ENDIF
@@ -3787,7 +3929,7 @@ SUBROUTINE CLDRAD
ENDIF
! Instantaneous clear-sky SWDDIF
- IF (IGET(786).GT.0) THEN
+ IF (IGET(797).GT.0) THEN
DO J=JSTA,JEND
DO I=1,IM
GRID1(I,J) = SWDDIFC(I,J)
@@ -3796,11 +3938,11 @@ SUBROUTINE CLDRAD
if(grib=='grib1') then
ID(1:25) = 0
ID(02)= 130
- CALL GRIBIT(IGET(786),LVLS(1,IGET(786)), &
+ CALL GRIBIT(IGET(797),LVLS(1,IGET(797)), &
GRID1,IM,JM)
elseif(grib=='grib2') then
cfld=cfld+1
- fld_info(cfld)%ifld=IAVBLFLD(IGET(786))
+ fld_info(cfld)%ifld=IAVBLFLD(IGET(797))
datapd(1:im,1:jend-jsta+1,cfld)=GRID1(1:im,jsta:jend)
endif
ENDIF
@@ -4332,45 +4474,168 @@ SUBROUTINE CLDRAD
!! CALPW(dust mixing ratio in kg/kg * Qext [aerosol extinction efficiency
!! in m2/g] * 1000. [convert m2/g to m2/kg]) => AOD (no unit)
!!
-!! The sub-micron dust bin contains 4 sub-bins with fixed partition (FD)
-
- IF ( IGET(609).GT.0 .OR. IGET(610).GT.0 .OR. IGET(611).GT.0 &
- & .OR. IGET(612).GT.0 .OR. IGET(613).GT.0 .OR. IGET(614).GT.0 &
- & .OR. IGET(623).GT.0 .OR. IGET(624).GT.0 .OR. IGET(625).GT.0 &
- & .OR. IGET(626).GT.0 .or. IGET(627).GT.0 .OR. IGET(628).GT.0 ) THEN
-!!! READ AEROSOL LUTS
- open(unit=NOAER, file=aerosol_file, status='OLD', iostat=ios)
- IF (IOS .GT. 0) THEN
- print *, ' ERROR! Non-zero iostat for reading LUTS '
- stop
- ENDIF
+!! DETERMINE WHETHER TO COMPUTE AEROSOL OPTICAL PROPERTIES
+ LAEROPT = .FALSE.
+ DO I = 609, 614 ! TOTAL AND SPECIATED AOD AT 550NM
+ IF ( IGET(I).GT.0 ) LAEROPT = .TRUE.
+ ENDDO
+ DO I = 623, 628 ! AOD AT MULTI-CHANNELS
+ IF ( IGET(I).GT.0 ) LAEROPT = .TRUE.
+ ENDDO
+ DO I = 648, 656 ! (SSA, ASY AT 340),(SCA AT 550), ANGSTROM
+ IF ( IGET(I).GT.0 ) LAEROPT = .TRUE.
+ ENDDO
- read(NOAER,'(2x,a4)') AerosolName_rd
- print *, 'AerosolName = ', AerosolName_rd
+!! DETERMINE WHETHER TO COMPUTE INSTANT SURFACE MASS CONC
+ LAERSMASS = .FALSE.
+ DO I = 690, 698 ! TOTAL AND SPECIATED AEROSOL
+ IF ( IGET(I).GT.0 ) LAERSMASS = .TRUE.
+ ENDDO
- do ib = 1,NBDSW
- read(NOAER,'(8f10.5)') (extrhi(ii, ib), ii=1, KCM1)
- enddo
+ IF ( LAEROPT ) THEN
+ PRINT *, 'COMPUTE AEROSOL OPTICAL PROPERTIES'
+
+!!! ALLOCATE AEROSOL OPTICAL PROPERTIES
+ ALLOCATE ( extrhd_DU(KRHLEV,nbin_du,NBDSW))
+ ALLOCATE ( extrhd_SS(KRHLEV,nbin_ss,NBDSW))
+ ALLOCATE ( extrhd_SU(KRHLEV,nbin_su,NBDSW))
+ ALLOCATE ( extrhd_BC(KRHLEV,nbin_bc,NBDSW))
+ ALLOCATE ( extrhd_OC(KRHLEV,nbin_oc,NBDSW))
+
+ ALLOCATE ( scarhd_DU(KRHLEV,nbin_du,NBDSW))
+ ALLOCATE ( scarhd_SS(KRHLEV,nbin_ss,NBDSW))
+ ALLOCATE ( scarhd_SU(KRHLEV,nbin_su,NBDSW))
+ ALLOCATE ( scarhd_BC(KRHLEV,nbin_bc,NBDSW))
+ ALLOCATE ( scarhd_OC(KRHLEV,nbin_oc,NBDSW))
+
+ ALLOCATE ( asyrhd_DU(KRHLEV,nbin_du,NBDSW))
+ ALLOCATE ( asyrhd_SS(KRHLEV,nbin_ss,NBDSW))
+ ALLOCATE ( asyrhd_SU(KRHLEV,nbin_su,NBDSW))
+ ALLOCATE ( asyrhd_BC(KRHLEV,nbin_bc,NBDSW))
+ ALLOCATE ( asyrhd_OC(KRHLEV,nbin_oc,NBDSW))
+
+ ALLOCATE ( ssarhd_DU(KRHLEV,nbin_du,NBDSW))
+ ALLOCATE ( ssarhd_SS(KRHLEV,nbin_ss,NBDSW))
+ ALLOCATE ( ssarhd_SU(KRHLEV,nbin_su,NBDSW))
+ ALLOCATE ( ssarhd_BC(KRHLEV,nbin_bc,NBDSW))
+ ALLOCATE ( ssarhd_OC(KRHLEV,nbin_oc,NBDSW))
+ PRINT *, 'aft AEROSOL allocate, nbin_du=',nbin_du, &
+ 'nbin_ss=',nbin_ss,'nbin_su=',nbin_su,'nbin_bc=', &
+ 'nbin_oc=',nbin_oc,'nAero=',nAero
- DO i = 1, KCM2
- read(NOAER,'(2x,a4)') AerosolName_rd
- print *, 'AerosolName = ', AerosolName_rd
- IF (AerosolName_rd .ne. AerosolName(i)) THEN
- print *, ' ERROR! incorrect aerosol species ', AerosolName_rd
+!!! READ AEROSOL LUTS
+ DO i = 1, nAero
+ CLOSE(UNIT=NOAER)
+ aerosol_file='optics_luts_'//AerosolName(i)//'.dat'
+ open(unit=NOAER, file=aerosol_file, status='OLD', iostat=ios)
+ IF (IOS .GT. 0) THEN
+ print *,' ERROR! Non-zero iostat for rd_LUTS ', aerosol_file
stop
ENDIF
- do ib = 1, NBDSW
- read(NOAER,*) (extrhd(ii,i,ib), ii=1, KRHLEV)
- enddo
+ print *,'i=',i,'read aerosol_file=',trim(aerosol_file),'ios=',ios
+!
+ IF (AerosolName(i) .EQ. 'DUST') nbin = nbin_du
+ IF (AerosolName(i) .EQ. 'SALT') nbin = nbin_ss
+ IF (AerosolName(i) .EQ. 'SUSO') nbin = nbin_su
+ IF (AerosolName(i) .EQ. 'SOOT') nbin = nbin_bc
+ IF (AerosolName(i) .EQ. 'WASO') nbin = nbin_oc
+ DO J = 1, NBIN
+ read(NOAER,'(2x,a4,1x,i1,1x,a3)')AerName_rd,ib, AerOpt
+ IF (AerName_rd .ne. AerosolName(i)) STOP
+ IF (j .ne. ib ) STOP
+ IF (AerOpt .ne. 'ext' ) STOP
+
+ IF (AerosolName(i) .EQ. 'DUST') THEN
+ do ib = 1, NBDSW
+ read(NOAER,'(8f10.5)') (extrhd_du(ii,j,ib), ii=1,KRHLEV)
+ enddo
+ read(NOAER,'(2x,a4)') AerName_rd
+ do ib = 1, NBDSW
+ read(NOAER,'(8f10.5)') (scarhd_du(ii,j,ib), ii=1,KRHLEV)
+ enddo
+ read(NOAER,'(2x,a4)') AerName_rd
+ do ib = 1, NBDSW
+ read(NOAER,'(8f10.5)') (asyrhd_du(ii,j,ib), ii=1,KRHLEV)
+ enddo
+ read(NOAER,'(2x,a4)') AerName_rd
+ do ib = 1, NBDSW
+ read(NOAER,'(8f10.5)') (ssarhd_du(ii,j,ib), ii=1,KRHLEV)
+ enddo
- if ( AerosolName_rd .EQ. 'SOOT') ISOOT = i
- if ( AerosolName_rd .EQ. 'SUSO') ISUSO = i
- if ( AerosolName_rd .EQ. 'WASO') IWASO = i
- if ( AerosolName_rd .EQ. 'SSAM') ISSAM = i
- if ( AerosolName_rd .EQ. 'SSCM') ISSCM = i
+ ELSEIF (AerosolName(i) .EQ. 'SALT') THEN
+ do ib = 1, NBDSW
+ read(NOAER,'(8f10.5)') (extrhd_ss(ii,j,ib), ii=1,KRHLEV)
+ enddo
+ read(NOAER,'(2x,a4)') AerName_rd
+ do ib = 1, NBDSW
+ read(NOAER,'(8f10.5)') (scarhd_ss(ii,j,ib), ii=1,KRHLEV)
+ enddo
+ read(NOAER,'(2x,a4)') AerName_rd
+ do ib = 1, NBDSW
+ read(NOAER,'(8f10.5)') (asyrhd_ss(ii,j,ib), ii=1,KRHLEV)
+ enddo
+ read(NOAER,'(2x,a4)') AerName_rd
+ do ib = 1, NBDSW
+ read(NOAER,'(8f10.5)') (ssarhd_ss(ii,j,ib), ii=1,KRHLEV)
+ enddo
- ENDDO
+ ELSEIF (AerosolName(i) .EQ. 'SUSO') THEN
+ do ib = 1, NBDSW
+ read(NOAER,'(8f10.5)') (extrhd_su(ii,j,ib), ii=1,KRHLEV)
+ enddo
+ read(NOAER,'(2x,a4)') AerName_rd
+ do ib = 1, NBDSW
+ read(NOAER,'(8f10.5)') (scarhd_su(ii,j,ib), ii=1,KRHLEV)
+ enddo
+ read(NOAER,'(2x,a4)') AerName_rd
+ do ib = 1, NBDSW
+ read(NOAER,'(8f10.5)') (asyrhd_su(ii,j,ib), ii=1,KRHLEV)
+ enddo
+ read(NOAER,'(2x,a4)') AerName_rd
+ do ib = 1, NBDSW
+ read(NOAER,'(8f10.5)') (ssarhd_su(ii,j,ib), ii=1,KRHLEV)
+ enddo
+
+ ELSEIF (AerosolName(i) .EQ. 'SOOT') THEN
+ do ib = 1, NBDSW
+ read(NOAER,'(8f10.5)') (extrhd_bc(ii,j,ib), ii=1,KRHLEV)
+ enddo
+ read(NOAER,'(2x,a4)') AerName_rd
+ do ib = 1, NBDSW
+ read(NOAER,'(8f10.5)') (scarhd_bc(ii,j,ib), ii=1,KRHLEV)
+ enddo
+ read(NOAER,'(2x,a4)') AerName_rd
+ do ib = 1, NBDSW
+ read(NOAER,'(8f10.5)') (asyrhd_bc(ii,j,ib), ii=1,KRHLEV)
+ enddo
+ read(NOAER,'(2x,a4)') AerName_rd
+ do ib = 1, NBDSW
+ read(NOAER,'(8f10.5)') (ssarhd_bc(ii,j,ib), ii=1,KRHLEV)
+ enddo
+
+ ELSEIF (AerosolName(i) .EQ. 'WASO') THEN
+ do ib = 1, NBDSW
+ read(NOAER,'(8f10.5)') (extrhd_oc(ii,j,ib), ii=1,KRHLEV)
+ enddo
+ read(NOAER,'(2x,a4)') AerName_rd
+ do ib = 1, NBDSW
+ read(NOAER,'(8f10.5)') (scarhd_oc(ii,j,ib), ii=1,KRHLEV)
+ enddo
+ read(NOAER,'(2x,a4)') AerName_rd
+ do ib = 1, NBDSW
+ read(NOAER,'(8f10.5)') (asyrhd_oc(ii,j,ib), ii=1,KRHLEV)
+ enddo
+ read(NOAER,'(2x,a4)') AerName_rd
+ do ib = 1, NBDSW
+ read(NOAER,'(8f10.5)') (ssarhd_oc(ii,j,ib), ii=1,KRHLEV)
+ enddo
+
+ ENDIF
+
+ ENDDO ! j-loop for nbin
+ ENDDO ! i-loop for nAero
+ print *,'finish reading coef'
CLOSE(UNIT=NOAER)
@@ -4443,107 +4708,196 @@ SUBROUTINE CLDRAD
! AOD AT 11100 NM
IF (IB .EQ. 7 ) INDX = 628
+! DETERMINE LEXT AND LSCA (DEFAULT TO F)
+ LEXT = .FALSE.
+ LSCA = .FALSE.
+ LASY = .FALSE.
+! -- CHECK WHETHER TOTAL EXT AOD IS REQUESTED
+ IF (IGET(INDX).GT.0 ) LEXT =.TRUE.
+! -- CHECK WHETHER SPECIATED AOD AT 550 NM IS REQUESTED
+ IF ( IB .EQ. 3 ) THEN
+ IF (IGET(650).GT.0 ) LSCA =.TRUE. !TOTAL SCA AOD
+ DO I = 1, nAero
+ IF (IGET(INDX_EXT(I)).GT.0 ) LEXT = .TRUE.
+ IF (IGET(INDX_SCA(I)).GT.0 ) LSCA = .TRUE.
+ ENDDO
+ ENDIF
+! -- CHECK WHETHER ASY AND SSA AT 340NM IS REQUESTED
+ IF ( IB .EQ. 1 ) THEN
+ IF (IGET(648).GT.0 ) LSCA =.TRUE.
+ IF (IGET(649).GT.0 ) LASY =.TRUE.
+ ENDIF
+! -- CHECK WHETHER ANGSTROM EXPONENT IS REQUESTED
+ IF (IGET(656).GT.0 ) THEN
+ IF ( IB .EQ. 2 ) LEXT = .TRUE.
+ IF ( IB .EQ. 5 ) LEXT = .TRUE.
+ ENDIF
+ print *,'LEXT=',LEXT,'LSCA=',LSCA,'LASY=',LASY
! SKIP IF POST PRODUCT IS NOT REQUESTED
- IF (IGET(INDX).GT.0 .OR. IB.EQ. 3) THEN
-
+ IF ( LEXT .OR. LSCA .OR. LASY ) THEN
! COMPUTE DUST AOD
AOD_DU=SPVAL
- EXT=SPVAL
+ SCA_DU=SPVAL
+ ASY_DU=SPVAL
+ EXT=0.0
+ SCA=0.0
+ ASY=0.0
DO J=JSTA,JEND
DO I=1,IM
DO L=1,LM
- EXT(I,J,L) = DUST(I,J,L,1) * EXTRHI(1,IB)
- DO N=2, KCM1
- EXT(I,J,L) = EXT(I,J,L) + DUST(I,J,L,N)*EXTRHI(N,IB)
+ DO N=1, NBIN_DU
+ EXT01 = EXTRHD_DU(1,N,IB)
+ SCA01 = SCARHD_DU(1,N,IB)
+ ASY01 = ASYRHD_DU(1,N,IB)
+ EXT(I,J,L) = EXT(I,J,L)+1e-9*DUST(I,J,L,N) * EXT01
+ SCA(I,J,L) = SCA(I,J,L)+1e-9*DUST(I,J,L,N) * SCA01
+ ASY(I,J,L) = ASY(I,J,L)+1e-9*DUST(I,J,L,N) * SCA01*ASY01
ENDDO
EXT(I,J,L) = EXT(I,J,L) * 1000.
+ SCA(I,J,L) = SCA(I,J,L) * 1000.
+ ASY(I,J,L) = ASY(I,J,L) * 1000.
ENDDO ! L-loop
ENDDO ! I-loop
ENDDO ! J-loop
CALL CALPW(AOD_DU,17)
-
+ CALL CALPW(SCA_DU,20)
+ CALL CALPW(ASY_DU,21)
! COMPUTE SULFATE AOD
AOD_SU=SPVAL
- EXT=SPVAL
+ SCA_SU=SPVAL
+ ASY_SU=SPVAL
+ EXT=0.0
+ SCA=0.0
+ ASY=0.0
DO J=JSTA,JEND
DO I=1,IM
DO L=1,LM
ih1 = ihh(I,J,L)
ih2 = ih1 + 1
- ext01 = extrhd(ih1,ISUSO,ib) &
- & + rdrh(I,J,L)*(extrhd(ih2,ISUSO,ib)-extrhd(ih1,ISUSO,ib))
- EXT(I,J,L) = SUSO(I,J,L,1) * ext01 * 1000.
+ DO N = 1, NBIN_SU
+ EXT01 = EXTRHD_SU(IH1,N,IB) &
+ & + RDRH(I,J,L)*(EXTRHD_SU(IH2,N,IB)-EXTRHD_SU(IH1,N,IB))
+ SCA01 = SCARHD_SU(IH1,N,IB) &
+ & + RDRH(I,J,L)*(SCARHD_SU(IH2,N,IB)-SCARHD_SU(IH1,N,IB))
+ ASY01 = ASYRHD_SU(IH1,N,IB) &
+ & + RDRH(I,J,L)*(ASYRHD_SU(IH2,N,IB)-ASYRHD_SU(IH1,N,IB))
+ EXT(I,J,L) = EXT(I,J,L)+1e-9*SUSO(I,J,L,N) * EXT01
+ SCA(I,J,L) = SCA(I,J,L)+1e-9*SUSO(I,J,L,N)*SCA01
+ ASY(I,J,L) = ASY(I,J,L)+1e-9*SUSO(I,J,L,N)*SCA01*ASY01
+
+ ENDDO ! N-loop
+ EXT(I,J,L) = EXT(I,J,L) * 1000.
+ SCA(I,J,L) = SCA(I,J,L) * 1000.
+ ASY(I,J,L) = ASY(I,J,L) * 1000.
ENDDO ! L-loop
ENDDO ! I-loop
ENDDO ! J-loop
CALL CALPW(AOD_SU,17)
-
+ CALL CALPW(SCA_SU,20)
+ CALL CALPW(ASY_SU,21)
! COMPUTE SEA SALT AOD
AOD_SS=SPVAL
- EXT=SPVAL
+ SCA_SS=SPVAL
+ ASY_SS=SPVAL
+ EXT=0.0
+ SCA=0.0
+ ASY=0.0
DO J=JSTA,JEND
DO I=1,IM
DO L=1,LM
ih1 = ihh (I,J,L)
ih2 = ih1 + 1
-! lump bin1-2 to SSAM, bin3-5 to SSCM
- SSAM = SALT(I,J,L,1)+SALT(I,J,L,2)
- SSCM = SALT(I,J,L,3)+SALT(I,J,L,4)+SALT(I,J,L,5)
- ext01 = extrhd(ih1,ISSAM,ib) &
- & + rdrh(I,J,L)*(extrhd(ih2,ISSAM,ib)-extrhd(ih1,ISSAM,ib))
- ext02 = extrhd(ih1,ISSCM,ib) &
- & + rdrh(I,J,L)*(extrhd(ih2,ISSCM,ib)-extrhd(ih1,ISSCM,ib))
- EXT(I,J,L) = SSAM * ext01 + SSCM * ext02
+ DO N = 1, NBIN_SS
+ EXT01 = EXTRHD_SS(IH1,N,IB) &
+ & + RDRH(I,J,L)*(EXTRHD_SS(IH2,N,IB)-EXTRHD_SS(IH1,N,IB))
+ SCA01 = SCARHD_SS(IH1,N,IB) &
+ & + RDRH(I,J,L)*(SCARHD_SS(IH2,N,IB)-SCARHD_SS(IH1,N,IB))
+ ASY01 = ASYRHD_SS(IH1,N,IB) &
+ & + RDRH(I,J,L)*(ASYRHD_SS(IH2,N,IB)-ASYRHD_SS(IH1,N,IB))
+ EXT(I,J,L) = EXT(I,J,L)+1e-9*SALT(I,J,L,N)*EXT01
+ SCA(I,J,L) = SCA(I,J,L)+1e-9*SALT(I,J,L,N)*SCA01
+ ASY(I,J,L) = ASY(I,J,L)+1e-9*SALT(I,J,L,N)*SCA01*ASY01
+ ENDDO ! N-loop
EXT(I,J,L) = EXT(I,J,L) * 1000.
+ SCA(I,J,L) = SCA(I,J,L) * 1000.
+ ASY(I,J,L) = ASY(I,J,L) * 1000.
ENDDO ! L-loop
ENDDO ! I-loop
ENDDO ! J-loop
CALL CALPW(AOD_SS,17)
-
+ CALL CALPW(SCA_SS,20)
+ CALL CALPW(ASY_SS,21)
! COMPUTE BLACK CARBON AOD
AOD_BC=SPVAL
- EXT=SPVAL
+ SCA_BC=SPVAL
+ ASY_BC=SPVAL
+ EXT=0.0
+ SCA=0.0
+ ASY=0.0
DO J=JSTA,JEND
DO I=1,IM
DO L=1,LM
- CCDRY = SOOT(I,J,L,1)
- CCWET = SOOT(I,J,L,2)
- ih1 = ihh (I,J,L)
- ih2 = ih1 + 1
- ext01 = extrhd(1,ISOOT,ib)
- ext02 = extrhd(ih1,ISOOT,ib) &
- & + rdrh(I,J,L)*(extrhd(ih2,ISOOT,ib)-extrhd(ih1,ISOOT,ib))
- EXT(I,J,L) = CCDRY * ext01 + CCWET * ext02
+ ih1 = ihh (I,J,L)
+ ih2 = ih1 + 1
+ DO N = 1, NBIN_BC
+ EXT01 = EXTRHD_BC(IH1,N,IB) &
+ & + RDRH(I,J,L)*(EXTRHD_BC(IH2,N,IB)-EXTRHD_BC(IH1,N,IB))
+ SCA01 = SCARHD_BC(IH1,N,IB) &
+ & + RDRH(I,J,L)*(SCARHD_BC(IH2,N,IB)-SCARHD_BC(IH1,N,IB))
+ ASY01 = ASYRHD_BC(IH1,N,IB) &
+ & + RDRH(I,J,L)*(ASYRHD_BC(IH2,N,IB)-ASYRHD_BC(IH1,N,IB))
+ EXT(I,J,L) = EXT(I,J,L)+1e-9*SOOT(I,J,L,N)*EXT01
+ SCA(I,J,L) = SCA(I,J,L)+1e-9*SOOT(I,J,L,N)*SCA01
+ ASY(I,J,L) = ASY(I,J,L)+1e-9*SOOT(I,J,L,N)*SCA01*ASY01
+ ENDDO ! N-loop
EXT(I,J,L) = EXT(I,J,L) * 1000.
+ SCA(I,J,L) = SCA(I,J,L) * 1000.
+ ASY(I,J,L) = ASY(I,J,L) * 1000.
ENDDO ! L-loop
ENDDO ! I-loop
ENDDO ! J-loop
CALL CALPW(AOD_BC,17)
-
+ CALL CALPW(SCA_BC,20)
+ CALL CALPW(ASY_BC,21)
! COMPUTE ORGANIC CARBON AOD
AOD_OC=SPVAL
- EXT=SPVAL
+ SCA_OC=SPVAL
+ ASY_OC=SPVAL
+ EXT=0.0
+ SCA=0.0
+ ASY=0.0
DO J=JSTA,JEND
DO I=1,IM
DO L=1,LM
- CCDRY = WASO(I,J,L,1)
- CCWET = WASO(I,J,L,2)
- ih1 = ihh (I,J,L)
- ih2 = ih1 + 1
- ext01 = extrhd(1,IWASO,ib)
- ext02 = extrhd(ih1,IWASO,ib) &
- & + rdrh(I,J,L)*(extrhd(ih2,IWASO,ib)-extrhd(ih1,IWASO,ib))
- EXT(I,J,L) = CCDRY * ext01 + CCWET * ext02
+ ih1 = ihh (I,J,L)
+ ih2 = ih1 + 1
+ DO N = 1, NBIN_OC
+ EXT01 = EXTRHD_OC(IH1,N,IB) &
+ & + RDRH(I,J,L)*(EXTRHD_OC(IH2,N,IB)-EXTRHD_OC(IH1,N,IB))
+ SCA01 = SCARHD_OC(IH1,N,IB) &
+ & + RDRH(I,J,L)*(SCARHD_OC(IH2,N,IB)-SCARHD_OC(IH1,N,IB))
+ ASY01 = ASYRHD_OC(IH1,N,IB) &
+ & + RDRH(I,J,L)*(ASYRHD_OC(IH2,N,IB)-ASYRHD_OC(IH1,N,IB))
+ EXT(I,J,L) = EXT(I,J,L)+1e-9*WASO(I,J,L,N)*EXT01
+ SCA(I,J,L) = SCA(I,J,L)+1e-9*WASO(I,J,L,N)*SCA01
+ ASY(I,J,L) = ASY(I,J,L)+1e-9*WASO(I,J,L,N)*SCA01*ASY01
+ ENDDO ! N-loop
EXT(I,J,L) = EXT(I,J,L) * 1000.
+ SCA(I,J,L) = SCA(I,J,L) * 1000.
+ ASY(I,J,L) = ASY(I,J,L) * 1000.
ENDDO ! L-loop
ENDDO ! I-loop
ENDDO ! J-loop
CALL CALPW(AOD_OC,17)
+ CALL CALPW(SCA_OC,20)
+ CALL CALPW(ASY_OC,21)
! COMPUTE TOTAL AOD
-! AOD=SPVAL
+ AOD=SPVAL
+ SCA=SPVAL
+ ASY=SPVAL
DO J=JSTA,JEND
DO I=1,IM
AOD_DU(I,J) = MAX (AOD_DU(I,J), 0.0)
@@ -4551,11 +4905,47 @@ SUBROUTINE CLDRAD
AOD_OC(I,J) = MAX (AOD_OC(I,J), 0.0)
AOD_SU(I,J) = MAX (AOD_SU(I,J), 0.0)
AOD_SS(I,J) = MAX (AOD_SS(I,J), 0.0)
- AOD(I,J) = AOD_DU(I,J) + AOD_BC(I,J) + AOD_OC(I,J) + &
+
+ SCA_DU(I,J) = MAX (SCA_DU(I,J), 0.0)
+ SCA_BC(I,J) = MAX (SCA_BC(I,J), 0.0)
+ SCA_OC(I,J) = MAX (SCA_OC(I,J), 0.0)
+ SCA_SU(I,J) = MAX (SCA_SU(I,J), 0.0)
+ SCA_SS(I,J) = MAX (SCA_SS(I,J), 0.0)
+
+ ASY_DU(I,J) = MAX (ASY_DU(I,J), 0.0)
+ ASY_BC(I,J) = MAX (ASY_BC(I,J), 0.0)
+ ASY_OC(I,J) = MAX (ASY_OC(I,J), 0.0)
+ ASY_SU(I,J) = MAX (ASY_SU(I,J), 0.0)
+ ASY_SS(I,J) = MAX (ASY_SS(I,J), 0.0)
+
+ AOD(I,J) = AOD_DU(I,J) + AOD_BC(I,J) + AOD_OC(I,J) + &
& AOD_SU(I,J) + AOD_SS(I,J)
+ SCA2D(I,J) = SCA_DU(I,J) + SCA_BC(I,J) + SCA_OC(I,J) + &
+ & SCA_SU(I,J) + SCA_SS(I,J)
+ ASY2D(I,J) = ASY_DU(I,J) + ASY_BC(I,J) + ASY_OC(I,J) + &
+ & ASY_SU(I,J) + ASY_SS(I,J)
ENDDO ! I-loop
ENDDO ! J-loop
+! FILL UP AOD_440 AND AOD_860, IF ANGSTROM EXP IS REQUESTED
+ IF ( IGET(656) .GT. 0 ) THEN
+ IF (IB .EQ. 2 ) THEN !! AOD AT 440 NM
+!$omp parallel do private(i,j)
+ DO J=JSTA,JEND
+ DO I=1,IM
+ AOD_440(I,J) = AOD(I,J)
+ ENDDO ! I-loop
+ ENDDO ! J-loop
+ ENDIF
+ IF (IB .EQ. 5 ) THEN !! AOD AT 860 NM
+!$omp parallel do private(i,j)
+ DO J=JSTA,JEND
+ DO I=1,IM
+ AOD_860(I,J) = AOD(I,J)
+ ENDDO ! I-loop
+ ENDDO ! J-loop
+ ENDIF
+ ENDIF
! WRITE OUT TOTAL AOD
IF ( IGET(INDX) .GT. 0) THEN
@@ -4576,287 +4966,555 @@ SUBROUTINE CLDRAD
datapd(1:im,1:jend-jsta+1,cfld)=GRID1(1:im,jsta:jend)
endif
ENDIF
+!
+! WRITE OUT ASY AND SSA AT 340NM
+ IF ( IB .EQ. 1 ) THEN !!! FOR 340NM ONLY
-
-! WRITE OUT AOD FOR DU, SU, SS, OC, BC
- IF ( IB .EQ. 3 ) THEN !!! FOR 550NM ONLY
-
- IF ( IGET(610) .GT. 0) THEN ! DUST AOD
+! AER ASYM FACTOR AT 340 NM
+ IF ( IGET(649) .GT. 0 ) THEN
!$omp parallel do private(i,j)
- do j=jsta,jend
- do i=1,im
- GRID1(i,j) = AOD_DU(i,j)
- enddo
- enddo
+ DO J=JSTA,JEND
+ DO I=1,IM
+ IF ( SCA2D(I,J) > 0.0 ) THEN
+ ASY2D(I,J) = ASY2D(I,J) / SCA2D(I,J)
+ ELSE
+ ASY2D(I,J) = 0.
+ ENDIF
+ GRID1(I,J)=ASY2D(I,J)
+ ENDDO
+ ENDDO
ID(1:25)=0
ID(02)=141
CALL BOUND(GRID1,D00,H99999)
if(grib=="grib1" )then
- CALL GRIBIT(IGET(610),LVLS(1,IGET(610)),GRID1,IM,JM)
+ CALL GRIBIT(IGET(649),LVLS(1,IGET(649)),GRID1,IM,JM)
else if(grib=="grib2" )then
cfld=cfld+1
- fld_info(cfld)%ifld=IAVBLFLD(IGET(610))
+ fld_info(cfld)%ifld=IAVBLFLD(IGET(649))
datapd(1:im,1:jend-jsta+1,cfld)=GRID1(1:im,jsta:jend)
endif
- ENDIF
+ ENDIF ! IGET(649)
- IF ( IGET(611) .GT. 0) THEN ! SEA-SALT AOD
+! AER SINGLE SCATTER ALB AT 340 NM
+ IF ( IGET(648) .GT. 0 ) THEN
!$omp parallel do private(i,j)
- do j=jsta,jend
- do i=1,im
- GRID1(i,j) = AOD_SS(i,j)
- enddo
- enddo
+ DO J=JSTA,JEND
+ DO I=1,IM
+ IF ( AOD(I,J) > 0.0 ) THEN
+ SCA2D(I,J) = SCA2D(I,J) / AOD(I,J)
+ ELSE
+ SCA2D(I,J) = 1.0
+ ENDIF
+ GRID1(I,J)=SCA2D(I,J)
+ ENDDO
+ ENDDO
ID(1:25)=0
ID(02)=141
CALL BOUND(GRID1,D00,H99999)
if(grib=="grib1" )then
- CALL GRIBIT(IGET(611),LVLS(1,IGET(611)),GRID1,IM,JM)
+ CALL GRIBIT(IGET(648),LVLS(1,IGET(648)),GRID1,IM,JM)
else if(grib=="grib2" )then
cfld=cfld+1
- fld_info(cfld)%ifld=IAVBLFLD(IGET(611))
+ fld_info(cfld)%ifld=IAVBLFLD(IGET(648))
datapd(1:im,1:jend-jsta+1,cfld)=GRID1(1:im,jsta:jend)
endif
- ENDIF
+ ENDIF ! IGET(648)
+ print *,'aft compute sca340'
+
+ ENDIF ! IB IF-BLOCK (340NM)
+
+
+! WRITE OUT AOD FOR DU, SU, SS, OC, BC for all wavelengths
+! WRITE OUT SPECIATED AEROSOL OPTICAL PROPERTIES
+ IF ( IB .EQ. 3 ) THEN !!! FOR 550NM ONLY
- IF ( IGET(612) .GT. 0) THEN ! SULFATE AOD
+! WRITE OUT TOTAL SCATTERING AOD
+ IF ( IGET(650) .GT. 0 ) THEN
!$omp parallel do private(i,j)
- do j=jsta,jend
- do i=1,im
- GRID1(i,j) = AOD_SU(i,j)
- enddo
- enddo
+ DO J=JSTA,JEND
+ DO I=1,IM
+ GRID1(I,J)=SCA2D(I,J)
+ ENDDO
+ ENDDO
ID(1:25)=0
ID(02)=141
CALL BOUND(GRID1,D00,H99999)
if(grib=="grib1" )then
- CALL GRIBIT(IGET(612),LVLS(1,IGET(612)),GRID1,IM,JM)
+ CALL GRIBIT(IGET(650),LVLS(1,IGET(650)),GRID1,IM,JM)
else if(grib=="grib2" )then
cfld=cfld+1
- fld_info(cfld)%ifld=IAVBLFLD(IGET(612))
+ fld_info(cfld)%ifld=IAVBLFLD(IGET(650))
datapd(1:im,1:jend-jsta+1,cfld)=GRID1(1:im,jsta:jend)
endif
- ENDIF
+ ENDIF
+! LOOP THROUGH EACH SPECIES
+ DO II = 1, nAero
- IF ( IGET(613) .GT. 0) THEN ! ORGANIC CARBON AOD
+! WRITE OUT EXT AOD
+ JJ = INDX_EXT(II)
+ IF ( IGET(JJ) .GT. 0) THEN ! EXT AOD
!$omp parallel do private(i,j)
- do j=jsta,jend
- do i=1,im
- GRID1(i,j) = AOD_OC(i,j)
- enddo
- enddo
- ID(1:25)=0
- ID(02)=141
- CALL BOUND(GRID1,D00,H99999)
- if(grib=="grib1" )then
- CALL GRIBIT(IGET(613),LVLS(1,IGET(613)),GRID1,IM,JM)
- else if(grib=="grib2" )then
- cfld=cfld+1
- fld_info(cfld)%ifld=IAVBLFLD(IGET(613))
- datapd(1:im,1:jend-jsta+1,cfld)=GRID1(1:im,jsta:jend)
- endif
- ENDIF
+ DO J=JSTA,JEND
+ DO I=1,IM
+ IF ( II .EQ. 1 ) GRID1(I,J) = AOD_DU(I,J)
+ IF ( II .EQ. 2 ) GRID1(I,J) = AOD_SS(I,J)
+ IF ( II .EQ. 3 ) GRID1(I,J) = AOD_SU(I,J)
+ IF ( II .EQ. 4 ) GRID1(I,J) = AOD_OC(I,J)
+ IF ( II .EQ. 5 ) GRID1(I,J) = AOD_BC(I,J)
+ ENDDO
+ ENDDO
+ ID(1:25)=0
+ ID(02)=141
+ CALL BOUND(GRID1,D00,H99999)
+ if(grib=="grib1" )then
+ CALL GRIBIT(IGET(JJ),LVLS(1,IGET(JJ)),GRID1,IM,JM)
+ else if(grib=="grib2" )then
+ cfld=cfld+1
+ fld_info(cfld)%ifld=IAVBLFLD(IGET(JJ))
+ datapd(1:im,1:jend-jsta+1,cfld)=GRID1(1:im,jsta:jend)
+ endif
+ ENDIF
- IF ( IGET(614) .GT. 0) THEN ! BLACK CARBON AOD
+! WRITE OUT SCA AOD
+ JJ = INDX_SCA(II)
+ IF ( IGET(JJ) .GT. 0) THEN ! SCA AOD
!$omp parallel do private(i,j)
- do j=jsta,jend
- do i=1,im
- GRID1(i,j) = AOD_BC(i,j)
- enddo
- enddo
+ DO J=JSTA,JEND
+ DO I=1,IM
+ IF ( II .EQ. 1 ) GRID1(I,J) = SCA_DU(I,J)
+ IF ( II .EQ. 2 ) GRID1(I,J) = SCA_SS(I,J)
+ IF ( II .EQ. 3 ) GRID1(I,J) = SCA_SU(I,J)
+ IF ( II .EQ. 4 ) GRID1(I,J) = SCA_OC(I,J)
+ IF ( II .EQ. 5 ) GRID1(I,J) = SCA_BC(I,J)
+ ENDDO
+ ENDDO
+ ID(1:25)=0
+ ID(02)=141
+ CALL BOUND(GRID1,D00,H99999)
+ if(grib=="grib1" )then
+ CALL GRIBIT(IGET(JJ),LVLS(1,IGET(JJ)),GRID1,IM,JM)
+ else if(grib=="grib2" )then
+ cfld=cfld+1
+ fld_info(cfld)%ifld=IAVBLFLD(IGET(JJ))
+ datapd(1:im,1:jend-jsta+1,cfld)=GRID1(1:im,jsta:jend)
+ endif
+ ENDIF
+
+ ENDDO ! II DO-LOOP
+
+ ENDIF ! IB IF-BLOCK (550NM)
+
+ ENDIF ! LEXT IF-BLOCK
+ ENDDO ! LOOP THROUGH NBDSW CHANNELS
+! COMPUTE AND WRITE OUT ANGSTROM EXPONENT
+ IF ( IGET(656) .GT. 0 ) THEN
+ ANGST=SPVAL
+! ANG2 = LOG ( 0.860 / 0.440 )
+ ANG2 = LOG ( 860. / 440. )
+!$omp parallel do private(i,j)
+ DO J=JSTA,JEND
+ DO I=1,IM
+ IF (AOD_860(I,J) .GT. 0.) THEN
+ ANG1 = LOG( AOD_440(I,J)/AOD_860(I,J) )
+ ANGST(I,J) = ANG1 / ANG2
+ ENDIF
+ GRID1(I,J)=ANGST(I,J)
+ ENDDO
+ ENDDO
+ print *,'output angstrom exp,angst=',maxval(angst(1:im,jsta:jend)), &
+ minval(angst(1:im,jsta:jend))
ID(1:25)=0
ID(02)=141
CALL BOUND(GRID1,D00,H99999)
if(grib=="grib1" )then
- CALL GRIBIT(IGET(614),LVLS(1,IGET(614)),GRID1,IM,JM)
+ CALL GRIBIT(IGET(656),LVLS(1,IGET(656)),GRID1,IM,JM)
else if(grib=="grib2" )then
cfld=cfld+1
- fld_info(cfld)%ifld=IAVBLFLD(IGET(614))
+ fld_info(cfld)%ifld=IAVBLFLD(IGET(656))
datapd(1:im,1:jend-jsta+1,cfld)=GRID1(1:im,jsta:jend)
endif
- ENDIF
-
- ENDIF ! OUTPUT 550 NM AOD FOR EACH SPECIES
-
- ENDIF ! IGET(INDX) .GT. 0
- ENDDO ! LOOP THROUGH NBDSW CHANNELS
-
- deallocate(IHH)
- deallocate(RDRH)
-
- ENDIF !! .................................... AOD
-
-!! ADD DUST EMISSION FLUXES (kg/m2/sec)
-!! The AER file uses 1.E6 to scale all 2d diagnosis fields
-!! Multiply by 1.E-6 to revert these fields back
- IF (IGET(615).GT.0) THEN
- GRID1=SPVAL
+ ENDIF ! ANGSTROM EXPONENT
+
+ ENDIF ! END OF LAEROPT IF-BLOCK
+
+!#if 0
+!!! Multiply by 1.E-6 to revert these fields back
+! IF (IGET(659).GT.0) THEN
+! GRID1=SPVAL
+!!$omp parallel do private(i,j)
+! DO J = JSTA,JEND
+! DO I = 1,IM
+! GRID1(I,J) = DUEM(I,J,1)*1.E-6
+! DO K=2,NBIN_DU
+! GRID1(I,J) = GRID1(I,J) + DUEM(I,J,K)*1.E-6
+! END DO
+! END DO
+! END DO
+! ID(1:25) = 0
+! ID(02)=141
+! if(grib=='grib1') then
+! CALL GRIBIT(IGET(659),LVLS(1,IGET(659)),GRID1,IM,JM)
+! elseif(grib=='grib2') then
+! cfld=cfld+1
+! fld_info(cfld)%ifld=IAVBLFLD(IGET(659))
+! datapd(1:im,1:jend-jsta+1,cfld)=GRID1(1:im,jsta:jend)
+! endif
+! ENDIF
+!
+! IF (IGET(660).GT.0) THEN
+! GRID1=SPVAL
+!!$omp parallel do private(i,j)
+! DO J = JSTA,JEND
+! DO I = 1,IM
+! GRID1(I,J) = DUSD(I,J,1)*1.E-6
+! DO K=2,NBIN_DU
+! GRID1(I,J) = GRID1(I,J)+ DUSD(I,J,K)*1.E-6
+! END DO
+! END DO
+! END DO
+! ID(1:25) = 0
+! ID(02)=141
+! if(grib=='grib1') then
+! CALL GRIBIT(IGET(660),LVLS(1,IGET(660)),GRID1,IM,JM)
+! elseif(grib=='grib2') then
+! cfld=cfld+1
+! fld_info(cfld)%ifld=IAVBLFLD(IGET(660))
+! datapd(1:im,1:jend-jsta+1,cfld)=GRID1(1:im,jsta:jend)
+! endif
+! ENDIF
+!#endif
+!! ADD DUST DRY DEPOSITION FLUXES (kg/m2/sec)
+!
+! IF (IGET(661).GT.0) THEN
+! DO J = JSTA,JEND
+! DO I = 1,IM
+! GRID1(I,J) = DUDP(I,J,1)*1.E-6
+! DO K=2,NBIN_DU
+! GRID1(I,J) = GRID1(I,J)+ DUDP(I,J,K)*1.E-6
+! END DO
+! END DO
+! END DO
+! ID(1:25) = 0
+! ID(02)=141
+! if(grib=='grib1') then
+! CALL GRIBIT(IGET(661),LVLS(1,IGET(661)),GRID1,IM,JM)
+! elseif(grib=='grib2') then
+! cfld=cfld+1
+! fld_info(cfld)%ifld=IAVBLFLD(IGET(661))
+! datapd(1:im,1:jend-jsta+1,cfld)=GRID1(1:im,jsta:jend)
+! endif
+! ENDIF
+
+!! ADD AEROSOL SURFACE PM25 DUST MASS CONCENTRATION (ug/m3)
+ IF (IGET(686).GT.0 ) THEN
+!$omp parallel do private(i,j)
DO J = JSTA,JEND
DO I = 1,IM
- GRID1(I,J) = DUEM(I,J,1)*1.E-6
- DO K=2,NBIN_DU
- GRID1(I,J) = GRID1(I,J) + DUEM(I,J,K)*1.E-6
- END DO
+ !GRID1(I,J) = DUSMASS(I,J) * 1.E-6
+ GRID1(I,J) = DUSTPM(I,J) !ug/m3
END DO
END DO
ID(1:25) = 0
- ID(02)=141
+ ID(02)=129
if(grib=='grib1') then
- CALL GRIBIT(IGET(615),LVLS(1,IGET(615)),GRID1,IM,JM)
+ CALL GRIBIT(IGET(686),LVLS(1,IGET(686)),GRID1,IM,JM)
elseif(grib=='grib2') then
- cfld=cfld+1
- fld_info(cfld)%ifld=IAVBLFLD(IGET(615))
- datapd(1:im,1:jend-jsta+1,cfld)=GRID1(1:im,jsta:jend)
+ cfld=cfld+1
+ fld_info(cfld)%ifld=IAVBLFLD(IGET(686))
+ datapd(1:im,1:jend-jsta+1,cfld)=GRID1(1:im,jsta:jend)
endif
ENDIF
-!! ADD DUST SEDIMENTATION FLUXES (kg/m2/sec)
- IF (IGET(616).GT.0) THEN
- GRID1=SPVAL
+!! ADD DUST WET DEPOSITION FLUXES (kg/m2/sec)
+! IF (IGET(662).GT.0) THEN
+! DO J = JSTA,JEND
+! DO I = 1,IM
+! GRID1(I,J) = DUWT(I,J,1)*1.E-6
+! DO K=2,NBIN_DU
+! GRID1(I,J) = GRID1(I,J)+ DUWT(I,J,K)*1.E-6
+! END DO
+! END DO
+! END DO
+! ID(1:25) = 0
+! ID(02)=141
+! if(grib=='grib1') then
+! CALL GRIBIT(IGET(662),LVLS(1,IGET(662)),GRID1,IM,JM)
+! elseif(grib=='grib2') then
+! cfld=cfld+1
+! fld_info(cfld)%ifld=IAVBLFLD(IGET(662))
+! datapd(1:im,1:jend-jsta+1,cfld)=GRID1(1:im,jsta:jend)
+! endif
+! ENDIF
+
+!! ADD AEROSOL SURFACE PM25 SEA SALT MASS CONCENTRATION (ug/m3)
+ IF (IGET(684).GT.0 ) THEN
+!$omp parallel do private(i,j)
DO J = JSTA,JEND
DO I = 1,IM
- GRID1(I,J) = DUSD(I,J,1)*1.E-6
- DO K=2,NBIN_DU
- GRID1(I,J) = GRID1(I,J)+ DUSD(I,J,K)*1.E-6
- END DO
+ !GRID1(I,J) = DUSMASS(I,J) * 1.E-6
+ GRID1(I,J) = SSPM(I,J) !ug/m3
END DO
END DO
ID(1:25) = 0
- ID(02)=141
+ ID(02)=129
if(grib=='grib1') then
- CALL GRIBIT(IGET(616),LVLS(1,IGET(616)),GRID1,IM,JM)
+ CALL GRIBIT(IGET(684),LVLS(1,IGET(684)),GRID1,IM,JM)
elseif(grib=='grib2') then
- cfld=cfld+1
- fld_info(cfld)%ifld=IAVBLFLD(IGET(616))
- datapd(1:im,1:jend-jsta+1,cfld)=GRID1(1:im,jsta:jend)
+ cfld=cfld+1
+ fld_info(cfld)%ifld=IAVBLFLD(IGET(684))
+ datapd(1:im,1:jend-jsta+1,cfld)=GRID1(1:im,jsta:jend)
+ endif
+ ENDIF
+!! ADD AEROSOL SURFACE PM10 MASS CONCENTRATION (ug/m3)
+ IF (IGET(619).GT.0 ) THEN
+!$omp parallel do private(i,j)
+ DO J = JSTA,JEND
+ DO I = 1,IM
+ !GRID1(I,J) = DUSMASS(I,J) * 1.E-6
+ GRID1(I,J) = DUSMASS(I,J) !ug/m3
+ END DO
+ END DO
+ ID(1:25) = 0
+ ID(02)=129
+ if(grib=='grib1') then
+ CALL GRIBIT(IGET(619),LVLS(1,IGET(619)),GRID1,IM,JM)
+ elseif(grib=='grib2') then
+ cfld=cfld+1
+ fld_info(cfld)%ifld=IAVBLFLD(IGET(619))
+ datapd(1:im,1:jend-jsta+1,cfld)=GRID1(1:im,jsta:jend)
endif
ENDIF
-!! ADD DUST DRY DEPOSITION FLUXES (kg/m2/sec)
- IF (IGET(617).GT.0) THEN
+!! ADD AEROSOL SURFACE PM2.5 MASS CONCENTRATION (ug/m3)
+ IF (IGET(620).GT.0 ) THEN
+!$omp parallel do private(i,j)
DO J = JSTA,JEND
DO I = 1,IM
- GRID1(I,J) = DUDP(I,J,1)*1.E-6
- DO K=2,NBIN_DU
- GRID1(I,J) = GRID1(I,J)+ DUDP(I,J,K)*1.E-6
- END DO
+ !GRID1(I,J) = DUSMASS25(I,J) * 1.E-6
+ GRID1(I,J) = DUSMASS25(I,J) ! ug/m3
END DO
END DO
- if(ifhr==3) then
- print *,'DUST_DRY_DEPOSITION_FLUX=',maxval(grid1(1:im,jsta:jend)), &
- minval(grid1(1:im,jsta:jend)),'DUDP1=',maxval(dudp(1:im,jsta:jend,1)), &
- minval(dudp(1:im,jsta:jend,1)),'dudp2=',maxval(dudp(1:im,jsta:jend,2)), &
- minval(dudp(1:im,jsta:jend,2)),'dudp3=',maxval(dudp(1:im,jsta:jend,3)), &
- minval(dudp(1:im,jsta:jend,3)),'dudp4=',maxval(dudp(1:im,jsta:jend,4)), &
- minval(dudp(1:im,jsta:jend,4)),'dudp5=',maxval(dudp(1:im,jsta:jend,5)), &
- minval(dudp(1:im,jsta:jend,5))
+ ID(1:25) = 0
+ ID(02)=129
+ if(grib=='grib1') then
+ CALL GRIBIT(IGET(620),LVLS(1,IGET(620)),GRID1,IM,JM)
+ elseif(grib=='grib2') then
+ cfld=cfld+1
+ fld_info(cfld)%ifld=IAVBLFLD(IGET(620))
+ datapd(1:im,1:jend-jsta+1,cfld)=GRID1(1:im,jsta:jend)
endif
+ ENDIF
+!! ADD TOTAL AEROSOL PM10 COLUMN DENSITY (kg/m2) !
+ IF (IGET(621).GT.0 ) THEN
+!$omp parallel do private(i,j)
+ DO J = JSTA,JEND
+ DO I = 1,IM
+ !GRID1(I,J) = DUCMASS(I,J) * 1.E-6
+ GRID1(I,J) = DUCMASS(I,J) * 1.E-9
+ END DO
+ END DO
ID(1:25) = 0
ID(02)=141
if(grib=='grib1') then
- CALL GRIBIT(IGET(617),LVLS(1,IGET(617)),GRID1,IM,JM)
+ CALL GRIBIT(IGET(621),LVLS(1,IGET(621)),GRID1,IM,JM)
elseif(grib=='grib2') then
- cfld=cfld+1
- fld_info(cfld)%ifld=IAVBLFLD(IGET(617))
- datapd(1:im,1:jend-jsta+1,cfld)=GRID1(1:im,jsta:jend)
+ cfld=cfld+1
+ fld_info(cfld)%ifld=IAVBLFLD(IGET(621))
+ datapd(1:im,1:jend-jsta+1,cfld)=GRID1(1:im,jsta:jend)
endif
ENDIF
-!! ADD DUST WET DEPOSITION FLUXES (kg/m2/sec)
- IF (IGET(618).GT.0) THEN
+!! ADD TOTAL AEROSOL PM2.5 COLUMN DENSITY (kg/m2)
+ IF (IGET(622).GT.0 ) THEN
+!$omp parallel do private(i,j)
DO J = JSTA,JEND
DO I = 1,IM
- GRID1(I,J) = DUWT(I,J,1)*1.E-6
- DO K=2,NBIN_DU
- GRID1(I,J) = GRID1(I,J)+ DUWT(I,J,K)*1.E-6
- END DO
+ !GRID1(I,J) = DUCMASS25(I,J) * 1.E-6
+ GRID1(I,J) = DUCMASS25(I,J) * 1.E-9
END DO
END DO
ID(1:25) = 0
ID(02)=141
if(grib=='grib1') then
- CALL GRIBIT(IGET(618),LVLS(1,IGET(618)),GRID1,IM,JM)
+ CALL GRIBIT(IGET(622),LVLS(1,IGET(622)),GRID1,IM,JM)
elseif(grib=='grib2') then
- cfld=cfld+1
- fld_info(cfld)%ifld=IAVBLFLD(IGET(618))
- datapd(1:im,1:jend-jsta+1,cfld)=GRID1(1:im,jsta:jend)
+ cfld=cfld+1
+ fld_info(cfld)%ifld=IAVBLFLD(IGET(622))
+ datapd(1:im,1:jend-jsta+1,cfld)=GRID1(1:im,jsta:jend)
endif
ENDIF
-!! ADD AEROSOL SURFACE PM10 MASS CONCENTRATION (kg/m3)
- IF (IGET(619).GT.0 ) THEN
+!! ADD DUST PM2.5 COLUMN DENSITY (kg/m2)
+ IF (IGET(646).GT.0 ) THEN
+!$omp parallel do private(i,j)
DO J = JSTA,JEND
DO I = 1,IM
- GRID1(I,J) = DUSMASS(I,J) * 1.E-6
+ GRID1(I,J) = DUSTCB(I,J) * 1.E-9
END DO
END DO
ID(1:25) = 0
- ID(02)=129
+ ID(02)=141
if(grib=='grib1') then
- CALL GRIBIT(IGET(619),LVLS(1,IGET(619)),GRID1,IM,JM)
+ CALL GRIBIT(IGET(646),LVLS(1,IGET(646)),GRID1,IM,JM)
elseif(grib=='grib2') then
cfld=cfld+1
- fld_info(cfld)%ifld=IAVBLFLD(IGET(619))
+ fld_info(cfld)%ifld=IAVBLFLD(IGET(646))
datapd(1:im,1:jend-jsta+1,cfld)=GRID1(1:im,jsta:jend)
endif
ENDIF
-!! ADD AEROSOL SURFACE PM2.5 MASS CONCENTRATION (kg/m3)
- IF (IGET(620).GT.0 ) THEN
+!! ADD SEA SALT PM2.5 COLUMN DENSITY (kg/m2)
+ IF (IGET(647).GT.0 ) THEN
+!$omp parallel do private(i,j)
DO J = JSTA,JEND
DO I = 1,IM
- GRID1(I,J) = DUSMASS25(I,J) * 1.E-6
+ GRID1(I,J) = SSCB(I,J) * 1.E-9
END DO
END DO
ID(1:25) = 0
- ID(02)=129
+ ID(02)=141
if(grib=='grib1') then
- CALL GRIBIT(IGET(620),LVLS(1,IGET(620)),GRID1,IM,JM)
+ CALL GRIBIT(IGET(647),LVLS(1,IGET(647)),GRID1,IM,JM)
elseif(grib=='grib2') then
cfld=cfld+1
- fld_info(cfld)%ifld=IAVBLFLD(IGET(620))
+ fld_info(cfld)%ifld=IAVBLFLD(IGET(647))
datapd(1:im,1:jend-jsta+1,cfld)=GRID1(1:im,jsta:jend)
endif
ENDIF
-!! ADD TOTAL AEROSOL PM10 COLUMN DENSITY (kg/m2)
- IF (IGET(621).GT.0 ) THEN
+!! ADD BC COLUMN DENSITY (kg/m2)
+ IF (IGET(616).GT.0 ) THEN
+!$omp parallel do private(i,j)
DO J = JSTA,JEND
DO I = 1,IM
- GRID1(I,J) = DUCMASS(I,J) * 1.E-6
+ GRID1(I,J) = BCCB(I,J) * 1.E-9
END DO
END DO
ID(1:25) = 0
ID(02)=141
if(grib=='grib1') then
- CALL GRIBIT(IGET(621),LVLS(1,IGET(621)),GRID1,IM,JM)
+ CALL GRIBIT(IGET(616),LVLS(1,IGET(616)),GRID1,IM,JM)
elseif(grib=='grib2') then
cfld=cfld+1
- fld_info(cfld)%ifld=IAVBLFLD(IGET(621))
+ fld_info(cfld)%ifld=IAVBLFLD(IGET(616))
datapd(1:im,1:jend-jsta+1,cfld)=GRID1(1:im,jsta:jend)
endif
ENDIF
-!! ADD TOTAL AEROSOL PM2.5 COLUMN DENSITY (kg/m2)
- IF (IGET(622).GT.0 ) THEN
+!! ADD OC COLUMN DENSITY (kg/m2) !
+ IF (IGET(617).GT.0 ) THEN
+!$omp parallel do private(i,j)
DO J = JSTA,JEND
DO I = 1,IM
- GRID1(I,J) = DUCMASS25(I,J) * 1.E-6
+ GRID1(I,J) = OCCB(I,J) * 1.E-9
END DO
END DO
ID(1:25) = 0
ID(02)=141
if(grib=='grib1') then
- CALL GRIBIT(IGET(622),LVLS(1,IGET(622)),GRID1,IM,JM)
+ CALL GRIBIT(IGET(617),LVLS(1,IGET(617)),GRID1,IM,JM)
elseif(grib=='grib2') then
cfld=cfld+1
- fld_info(cfld)%ifld=IAVBLFLD(IGET(622))
+ fld_info(cfld)%ifld=IAVBLFLD(IGET(617))
datapd(1:im,1:jend-jsta+1,cfld)=GRID1(1:im,jsta:jend)
endif
ENDIF
+!! ADD SULF COLUMN DENSITY (kg/m2) !
+ IF (IGET(618).GT.0 ) THEN
+!$omp parallel do private(i,j)
+ DO J = JSTA,JEND
+ DO I = 1,IM
+ GRID1(I,J) = SULFCB(I,J) * 1.E-9
+ END DO
+ END DO
+ ID(1:25) = 0
+ ID(02)=141
+ if(grib=='grib1') then
+ CALL GRIBIT(IGET(618),LVLS(1,IGET(618)),GRID1,IM,JM)
+ elseif(grib=='grib2') then
+ cfld=cfld+1
+ fld_info(cfld)%ifld=IAVBLFLD(IGET(618))
+ datapd(1:im,1:jend-jsta+1,cfld)=GRID1(1:im,jsta:jend)
+ endif
+ ENDIF
+!! ADD EMISSION FLUXES,dry depostion, wet/convective depostion (kg/m2/sec)
+!! The AER file uses 1.E6 to scale all 2d diagnosis fields
+!! Multiply by 1.E-6 to revert these fields back
+ IF (IGET(659).GT.0) call wrt_aero_diag(659,nbin_du,duem)
+ print *,'aft wrt disg duem'
+ IF (IGET(660).GT.0) call wrt_aero_diag(660,nbin_du,dusd)
+ IF (IGET(661).GT.0) call wrt_aero_diag(661,nbin_du,dudp)
+ IF (IGET(662).GT.0) call wrt_aero_diag(662,nbin_du,duwt)
+ IF (IGET(679).GT.0) call wrt_aero_diag(679,nbin_du,dusv)
+ print *,'aft wrt disg duwt'
+
+!! wrt SS diag field
+ IF (IGET(663).GT.0) call wrt_aero_diag(663,nbin_ss,ssem)
+ IF (IGET(664).GT.0) call wrt_aero_diag(664,nbin_ss,sssd)
+ IF (IGET(665).GT.0) call wrt_aero_diag(665,nbin_ss,ssdp)
+ IF (IGET(666).GT.0) call wrt_aero_diag(666,nbin_ss,sswt)
+ IF (IGET(680).GT.0) call wrt_aero_diag(680,nbin_ss,sssv)
+ print *,'aft wrt disg sswt'
+
+!! wrt BC diag field
+ IF (IGET(667).GT.0) call wrt_aero_diag(667,nbin_bc,bcem)
+ IF (IGET(668).GT.0) call wrt_aero_diag(668,nbin_bc,bcsd)
+ IF (IGET(669).GT.0) call wrt_aero_diag(669,nbin_bc,bcdp)
+ IF (IGET(670).GT.0) call wrt_aero_diag(670,nbin_bc,bcwt)
+ IF (IGET(681).GT.0) call wrt_aero_diag(681,nbin_bc,bcsv)
+ print *,'aft wrt disg bcwt'
+
+!! wrt OC diag field
+ IF (IGET(671).GT.0) call wrt_aero_diag(671,nbin_oc,ocem)
+ IF (IGET(672).GT.0) call wrt_aero_diag(672,nbin_oc,ocsd)
+ IF (IGET(673).GT.0) call wrt_aero_diag(673,nbin_oc,ocdp)
+ IF (IGET(674).GT.0) call wrt_aero_diag(674,nbin_oc,ocwt)
+ IF (IGET(682).GT.0) call wrt_aero_diag(682,nbin_oc,ocsv)
+ print *,'aft wrt disg ocwt'
+
+!! wrt SU diag field
+! IF (IGET(675).GT.0) call wrt_aero_diag(675,nbin_su,suem)
+! IF (IGET(676).GT.0) call wrt_aero_diag(676,nbin_su,susd)
+! IF (IGET(677).GT.0) call wrt_aero_diag(677,nbin_su,sudp)
+! IF (IGET(678).GT.0) call wrt_aero_diag(678,nbin_su,suwt)
+! print *,'aft wrt disg suwt'
endif ! if gocart_on
!
! END OF ROUTINE.
!
RETURN
END
+
+ subroutine wrt_aero_diag(igetfld,nbin,data)
+ use ctlblk_mod, only: jsta, jend, SPVAL, im, jm, grib, &
+ cfld, datapd, fld_info, jsta_2l, jend_2u
+ use rqstfld_mod, only: IGET, ID, LVLS, IAVBLFLD
+ implicit none
+!
+ integer igetfld,nbin
+ real, dimension(1:im,jsta_2l:jend_2u,nbin) :: data
+!
+ integer i,j,k
+ REAL,dimension(im,jm) :: GRID1
+!
+ GRID1=SPVAL
+!$omp parallel do private(i,j)
+ DO J = JSTA,JEND
+ DO I = 1,IM
+ grid1(I,J) = data(I,J,1)
+ DO K=2,NBIN
+ GRID1(I,J) = GRID1(I,J)+ data(I,J,K)
+ END DO
+ END DO
+ END DO
+ ID(1:25) = 0
+ ID(02)=141
+ if(grib=='grib1') then
+ CALL GRIBIT(IGET(igetfld),LVLS(1,iget(igetfld)),GRID1,IM,JM)
+ elseif(grib=='grib2') then
+ cfld=cfld+1
+ fld_info(cfld)%ifld=IAVBLFLD(iget(igetfld))
+ datapd(1:im,1:jend-jsta+1,cfld)=GRID1(1:im,jsta:jend)
+ endif
+
+ end subroutine wrt_aero_diag
diff --git a/comupp/src/unipost/CTLBLK.f b/comupp/src/unipost/CTLBLK.f
index 3951000d7..75929ed46 100644
--- a/comupp/src/unipost/CTLBLK.f
+++ b/comupp/src/unipost/CTLBLK.f
@@ -86,6 +86,7 @@ module CTLBLK_mod
integer, parameter :: nbin_oc = 2 ! organic carbon
integer, parameter :: nbin_bc = 2 ! black carbon
integer, parameter :: nbin_su = 1 ! sulfate
+ integer, parameter :: nbin_sm = 1 ! smoke
!
! SET FD LEVEL HEIGHTS IN GEOPOTENTAL METERS.
DATA HTFD / 20.E0,30.E0,40.E0,50.E0,80.E0,100.E0,305.E0,457.E0,610.E0, &
diff --git a/comupp/src/unipost/DEALLOCATE.f b/comupp/src/unipost/DEALLOCATE.f
index a2e66cbce..30fcc3a40 100644
--- a/comupp/src/unipost/DEALLOCATE.f
+++ b/comupp/src/unipost/DEALLOCATE.f
@@ -94,6 +94,8 @@ SUBROUTINE DE_ALLOCATE
deallocate(QQNR)
deallocate(QQNWFA)
deallocate(QQNIFA)
+ deallocate(TAOD5503D)
+ deallocate(AEXTC55)
deallocate(EXTCOF55)
deallocate(CFR)
deallocate(CFR_RAW)
@@ -201,9 +203,15 @@ SUBROUTINE DE_ALLOCATE
deallocate(swddnic)
deallocate(swddifc)
deallocate(swupt)
+ deallocate(int_smoke)
+ deallocate(mean_frp)
+ deallocate(int_aod)
+ deallocate(smoke)
deallocate(taod5502d)
deallocate(aerasy2d)
deallocate(aerssa2d)
+ deallocate(lwp)
+ deallocate(iwp)
deallocate(rlwin)
deallocate(lwdnbc)
deallocate(lwupbc)
@@ -366,6 +374,20 @@ SUBROUTINE DE_ALLOCATE
deallocate(fprate_max)
deallocate(up_heli_max)
deallocate(up_heli_max16)
+ deallocate(up_heli_min)
+ deallocate(up_heli_min16)
+ deallocate(up_heli_max02)
+ deallocate(up_heli_min02)
+ deallocate(up_heli_max03)
+ deallocate(up_heli_min03)
+ deallocate(rel_vort_max)
+ deallocate(rel_vort_max01)
+ deallocate(rel_vort_maxhy1)
+ deallocate(wspd10umax)
+ deallocate(wspd10vmax)
+ deallocate(refdm10c_max)
+ deallocate(hail_max2d)
+ deallocate(hail_maxk1)
deallocate(grpl_max)
deallocate(up_heli)
deallocate(up_heli16)
@@ -426,14 +448,18 @@ SUBROUTINE DE_ALLOCATE
deallocate(soot)
deallocate(waso)
deallocate(suso)
+ deallocate(pp25)
+ deallocate(pp10)
! vrbls3d
deallocate(ext)
deallocate(asy)
deallocate(ssa)
+ deallocate(sca)
deallocate(duem)
deallocate(dusd)
deallocate(dudp)
deallocate(duwt)
+ deallocate(dusv)
deallocate(suem)
deallocate(susd)
deallocate(sudp)
@@ -442,14 +468,17 @@ SUBROUTINE DE_ALLOCATE
deallocate(ocsd)
deallocate(ocdp)
deallocate(ocwt)
+ deallocate(ocsv)
deallocate(bcem)
deallocate(bcsd)
deallocate(bcdp)
deallocate(bcwt)
+ deallocate(bcsv)
deallocate(ssem)
deallocate(sssd)
deallocate(ssdp)
deallocate(sswt)
+ deallocate(sssv)
deallocate(dpres)
deallocate(rhomid)
! vrbls2d
@@ -473,6 +502,17 @@ SUBROUTINE DE_ALLOCATE
deallocate(sscmass)
deallocate(sssmass25)
deallocate(sscmass25)
+ deallocate(dustcb)
+ deallocate(occb)
+ deallocate(bccb)
+ deallocate(sulfcb)
+ deallocate(pp25cb)
+ deallocate(pp10cb)
+ deallocate(sscb)
+ deallocate(dustallcb)
+ deallocate(ssallcb)
+ deallocate(dustpm)
+ deallocate(sspm)
endif
!
! HWRF RRTMG output
diff --git a/comupp/src/unipost/FIXED.f b/comupp/src/unipost/FIXED.f
index 500fa00ff..8cf507bc0 100644
--- a/comupp/src/unipost/FIXED.f
+++ b/comupp/src/unipost/FIXED.f
@@ -47,7 +47,7 @@ SUBROUTINE FIXED
use masks, only: gdlat, gdlon, sm, sice, lmh, lmv
use params_mod, only: small, p1000, capa
use lookup_mod, only: ITB,JTB,ITBQ,JTBQ
- use ctlblk_mod, only: jsta, jend, grib, cfld, fld_info, datapd, spval, tsrfc,&
+ use ctlblk_mod, only: jsta, jend, modelname, grib, cfld, fld_info, datapd, spval, tsrfc,&
ifhr, ifmin, lm, im, jm
use rqstfld_mod, only: iget, lvls, iavblfld, id
!- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
@@ -310,11 +310,15 @@ SUBROUTINE FIXED
!$omp parallel do private(i,j)
DO J=JSTA,JEND
DO I=1,IM
- IF( (abs(SM(I,J)-1.) < 1.0E-5) ) THEN
- GRID1(I,J) = SST(I,J)
+ IF (MODELNAME == 'NMM') THEN
+ IF( (abs(SM(I,J)-1.) < 1.0E-5) ) THEN
+ GRID1(I,J) = SST(I,J)
+ ELSE
+ GRID1(I,J) = THS(I,J)*(PINT(I,J,LM+1)/P1000)**CAPA
+ END IF
ELSE
- GRID1(I,J) = THS(I,J)*(PINT(I,J,LM+1)/P1000)**CAPA
- END IF
+ GRID1(I,J) = SST(I,J)
+ ENDIF
ENDDO
ENDDO
ID(1:25) = 0
diff --git a/comupp/src/unipost/GFSPOST.F b/comupp/src/unipost/GFSPOST.F
index c7073681e..07c15042a 100644
--- a/comupp/src/unipost/GFSPOST.F
+++ b/comupp/src/unipost/GFSPOST.F
@@ -570,450 +570,6 @@ subroutine mxwind(km,p,u,v,t,h,pmw,umw,vmw,tmw,hmw)
pmw=p(kmw)*exp((h(kmw)-hmw)*(1-0.5*(tmw/t(kmw)-1))/(con_rog*t(kmw)))
end subroutine
-! Add Iredells subroutine to read sigma files
-!-------------------------------------------------------------------------------
-subroutine rtsig(lusig,head,k1,k2,kgds,ijo,levs,ntrac,jcap,lnt2,me, &
- h,p,px,py,t,u,v,d,trc,iret)
-!$$$ Subprogram documentation block
-!
-! Subprogram: rtsig Read and transform sigma file
-! Prgmmr: Iredell Org: np23 Date: 1999-10-18
-!
-! Abstract: This subprogram reads a sigma file and transforms
-! the fields to a designated global grid.
-!
-! Program history log:
-! 1999-10-18 Mark Iredell
-! 2013-04-19 Jun Wang: add option to get tmp and ps(in pascal)
-! from enthalpy and ps(cb) option
-! 2013-05-06 Shrinivas Moorthi: Initialize midea to 0
-! 2013-05-07 Shrinivas Moorthi: Remove mo3, mct, midea and define io3, ict etc
-! correctly and get correct cloud condensate.
-! 2013-08-02 Shrinivas Moorthi: Rewrote the whole routine to read the sigma
-! file differently and to read all tracers
-! Addedd sptezj for two 2d fields
-! 2014-02-20 Shrinivas Moorthi: Modified conversion from spectral to grid
-! taking advantage of threding in SP library.
-! This really speeds up the code
-! Also threaded loop for Temperature from Tv
-
-!
-! Usage: call rtsig(lusig,head,k1,k2,kgds,ijo,nct, &
-! h,p,px,py,t,tx,ty,u,v,d,z,sh,o3,ct,iret,o,o2)
-! Input argument list:
-! lusig integer(sigio_intkind) sigma file unit number
-! head type(sigio_head) sigma file header
-! k1 integer first model level to return
-! k2 integer last model level to return
-! kgds integer (200) GDS to which to transform
-! ijo integer dimension of output fields
-! levs integer number of total vertical levels
-! ntrac integer number of output tracers
-! jcap integer number of waves
-! lnt2 integer (jcap+1)*(jcap+2)
-! Output argument list:
-! h real (ijo) surface orography (m)
-! p real (ijo) surface pressure (Pa)
-! px real (ijo) log surface pressure x-gradient (1/m)
-! py real (ijo) log surface pressure y-gradient (1/m)
-! t real (ijo,k1:k2) temperature (K)
-! tx real (ijo,k1:k2) virtual temperature x-gradient (K/m)
-! ty real (ijo,k1:k2) virtual temperature y-gradient (K/m)
-! u real (ijo,k1:k2) x-component wind (m/s)
-! v real (ijo,k1:k2) y-component wind (m/s)
-! d real (ijo,k1:k2) wind divergence (1/s)
-! trc real (ijo,k1:k2,ntrac) tracers
-! 1 = specific humidity (kg/kg)
-! 2 = Ozone mixing ratio (kg/kg)
-! 3 = cloud condensate mixing ratio (kg/kg)
-! .
-! .
-! atomic oxyge, oxygen etc
-!
-! iret integer return code
-!
-! Modules used:
-! sigio_r_module sigma file I/O
-!
-! Subprograms called:
-! sigio_rrdati read sigma single data field
-! sptez scalar spectral transform
-! sptezd gradient spectral transform
-! sptezm multiple scalar spectral transform
-! sptezmv multiple vector spectral transform
-!
-! Attributes:
-! Language: Fortran 90
-!
-!$$$
- use sigio_module, only : sigio_intkind, sigio_head
- use sigio_r_module, only : sigio_dati, sigio_rrdati
- use physcons, only : con_omega, con_fvirt
- use omp_lib
- implicit none
- integer(sigio_intkind),intent(in) :: lusig
- type(sigio_head), intent(in) :: head
- integer,intent(in) :: k1,k2,kgds(200),ijo,levs,ntrac,jcap,lnt2,me
- real,dimension(ijo), intent(out) :: h,p,px,py
- real,dimension(ijo,k1:k2),intent(out):: t,u,v,d
- real,dimension(ijo,k1:k2,ntrac),intent(out),target :: trc
- integer,intent(out) :: iret
-!
- integer idrt,io,jo,iidea
-! integer idrt,io,jo,mo3,mct,iidea,midea
- integer(sigio_intkind):: irets
-! type(sigio_datm):: datm
- type(sigio_dati) dati
-! type griddata
-! real,dimension(:,:),pointer :: datm
-! endtype griddata
-! type(griddata),dimension(:),pointer :: datatrc
- real, target :: trisca(lnt2,k1:k2+1), triscb(lnt2,k1:k2)
- real,dimension(:), allocatable :: cpi
- real,dimension(:,:),allocatable :: wrk
- integer io3,ict,jct,n,i,k,jc,nt
- integer idvm, klen
- real pmean,sumq,xcp
-! integer, parameter :: latch=20
-! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-! Determine output grid
- idrt = kgds(1)
- if(kgds(1) == 0 .and. kgds(4) < 90000) idrt = 256
- io = kgds(2)
- jo = kgds(3)
-! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-! Read and transform surface fields
- iret = 1
- if (me == 0) then
- print*,'Debug rtsig= ',lusig,k1,k2,ijo,kgds(1:20)
- endif
-
- idvm = head%idvm
-! jc = omp_get_num_threads()
-! write(0,*)' in RTSIG lnt2=',lnt2,' threads=',jc,' latch=',latch, &
-! ' jcap=',jcap,' io=',io,' jo=',jo,' ijo=',ijo
-!
- if (k2 < k1) return
-
- dati%i = 1 ! hs
- dati%f => trisca(:,k1)
- call sigio_rrdati(lusig,head,dati,irets)
- if(irets /= 0) return
-
-! call sptez(0,jcap,idrt,io,jo,trisca(1,k1),h,1)
-! call sptez(0,jcap,idrt,io,jo,dats%hs,h,1)
-! call sptez(0,jcap,idrt,io,jo,dats%ps,p,1)
-! call sptezj(jcap,lnt2,1,idrt,io,jo,jc,trisca,h,latch,1)
-!
- dati%i = 2 ! Surface pressure
- dati%f => trisca(:,k1+1)
- call sigio_rrdati(lusig,head,dati,irets)
- if(irets /= 0) return
-!
-! call sptez(0,jcap,idrt,io,jo,trisca(1,k1),p,1)
-! call sptezj(jcap,lnt2,1,idrt,io,jo,jc,trisca,p,latch,1)
-!--
- allocate(wrk(ijo,2))
- call sptezm(0,jcap,idrt,io,jo,2,trisca(1,k1),wrk,1)
- if( mod(idvm,10) < 2) then
-!$omp parallel do private(i)
- do i=1,ijo
- h(i) = wrk(i,1)
- p(i) = 1.e3*exp(wrk(i,2))
-! p(i) = 1.e3*exp(p(i))
- enddo
- elseif(mod(idvm,10) == 2) then
-!$omp parallel do private(i)
- do i=1,ijo
- h(i) = wrk(i,1)
- p(i) = 1000.*wrk(i,2)
-! p(i) = 1000.*p(i)
- enddo
- endif
- if (allocated(wrk)) deallocate(wrk)
-
- call sptezd(0,jcap,idrt,io,jo,trisca(1,k1+1),pmean,px,py,1)
- iret = 0
-
-! if (k2 < k1) return
-
-! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-! Read and transform fields on levels k1 through k2
- iret = 2
- if (k2 >= k1) then
- klen = k2-k1+1
- do k=k1,k2
- write(0,*)' retriving T for k=',k,' k1=',k1,' k2=',k2
- dati%i = k + 2 ! Virtual Temperature or CpT
- dati%f => trisca(:,k)
-
- call sigio_rrdati(lusig,head,dati,iret)
- enddo
- call sptezm(0,jcap,idrt,io,jo,klen,trisca(1,k1),t(1,k1),1)
-! call sptezm(0,jcap,idrt,io,jo,klen,trisca,t,1)
- do k=k1,k2
- dati%i = levs + 2 + (k-1) * 2 + 1 ! Divergence
- dati%f => trisca(:,k)
- call sigio_rrdati(lusig,head,dati,irets)
- if(irets /= 0) return
- dati%i = levs + 2 + (k-1) * 2 + 2 ! Vorticity
- dati%f => triscb(:,k)
- call sigio_rrdati(lusig,head,dati,irets)
- if(irets /= 0) return
- enddo
- call sptezmv(0,jcap,idrt,io,jo,klen,trisca(1,k1),triscb(1,k1), &
- u(1,k1),v(1,k1),1)
- call sptezm(0,jcap,idrt,io,jo,klen,trisca(1,k1),d(1,k1),1)
-
-! call sptezm(0,jcap,idrt,io,jo,1,triscb,z(1,k),1)
- write(0,*)' retriving d/z for k=',k,' k1=',k1,' k2=',k2
-! datm%z(3,:) = datm%z(3,:)+2*con_omega/sqrt(1.5)
-! call sptezm(0,jcap,idrt,io,jo,klen,datm%z,z,1)
- write(0,*)' start get tracer'
- do nt=1,ntrac
- do k=k1,k2
- dati%i = levs * (2+nt) + 2 + k ! Tracers starting with q
- dati%f => trisca(:,k)
- call sigio_rrdati(lusig,head,dati,irets)
- enddo
- call sptezm(0,jcap,idrt,io,jo,klen,trisca(1,k1),trc(1,k1,nt),1)
- write(0,*)' retriving d/z for nt=',nt,'ntrac=',ntrac,'k=',k,' k1=',k1,' k2=',k2
- enddo
- !t=t/(1+con_fvirt*sh)
- write(0,*)' end get tracer,idvm=',idvm,'ijo=',ijo,'ntrac=',ntrac
-!
-!-- get temp
- if (mod(idvm/10,10) == 3) then ! Enthalpy case
- allocate(cpi(0:ntrac))
-! write(0,*)'aft read sig, cpi=',head%cpi
- cpi(0:ntrac) = head%cpi(1:ntrac+1)
-! write(0,*)'cpi=',cpi(0:ntrac)
-!$omp parallel do private(k,i,xcp,sumq,n)
- do k=k1,k2
- do i=1,ijo
- xcp = 0.0
- sumq = 0.0
- do n=1,ntrac
- if( cpi(n) /= 0.0 ) then
- xcp = xcp + cpi(n)*trc(i,k,n)
- sumq = sumq + trc(i,k,n)
- endif
- enddo
- xcp = (1.-sumq)*cpi(0) + xcp
- t(i,k) = t(i,k) / xcp ! Now g1 contains T
- enddo
- enddo
- if (allocated(cpi)) deallocate(cpi)
- else
-!$omp parallel do private(i,k)
- do k=k1,k2
- do i=1,ijo
- t(i,k) = t(i,k) / (1+con_fvirt*trc(i,k,1)) !get temp from virtual temp
- enddo
- enddo
- endif
- endif
-! write(0,*)'end comput t'
- iret=0
-! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-end subroutine
-
-! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- subroutine modstuff(km,idvc,idsl,nvcoord,vcoord,ps,psx,psy,d,u,v,&
- pi,pm,om)
-!$$$ Subprogram documentation block
-!
-! Subprogram: modstuff Compute model coordinate dependent functions
-! Prgmmr: Iredell Org: np23 Date: 1999-10-18
-!
-! Abstract: This subprogram computes fields which depend on the model coordinate
-! such as pressure thickness and vertical velocity.
-!
-! Program history log:
-! 1999-10-18 Mark Iredell
-! 2013-04-19 Jun Wang: add option to get pi by using 8byte real computation
-!
-! Usage: call modstuff(km,idvc,idsl,nvcoord,vcoord,ps,psx,psy,d,u,v,&
-! pd,pi,pm,os,om,px,py)
-! Input argument list:
-! km integer number of levels
-! idvc integer vertical coordinate id (1 for sigma and 2 for hybrid)
-! idsl integer type of sigma structure (1 for phillips or 2 for mean)
-! nvcoord integer number of vertical coordinates
-! vcoord real (km+1,nvcoord) vertical coordinates
-! ps real surface pressure (Pa)
-! psx real log surface pressure x-gradient (1/m)
-! psy real log surface pressure y-gradient (1/m)
-! d real (km) wind divergence (1/s)
-! u real (km) x-component wind (m/s)
-! v real (km) y-component wind (m/s)
-! Output argument list:
-! pi real (km+1) interface pressure (Pa)
-! pm real (km) mid-layer pressure (Pa)
-! om real (km) vertical velocity (Pa/s)
-!
-! Attributes:
-! Language: Fortran 90
-!
-!$$$
- use sigio_module, only: sigio_modprd
- implicit none
- integer,intent(in):: km,idvc,idsl,nvcoord
- real,intent(in):: vcoord(km+1,nvcoord)
- real,intent(in):: ps,psx,psy
- real,intent(in):: u(km),v(km),d(km)
-! real,intent(out):: pi(km+1),pm(km)
- real*8, intent(out):: pi(km+1),pm(km)
- real,intent(out):: om(km)
- real*8 ps8,pm8(km),pd8(km),vcoord8(km+1,nvcoord)
- real*8 dpmdps(km),dpddps(km),dpidps(km+1),pi8(km+1)
- real vgradp,pd(km),px(km),py(km),os
- integer k,iret,logk
-! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- ps8=ps
- vcoord8=vcoord
- call sigio_modprd(1,1,km,nvcoord,idvc,idsl,vcoord8,iret,&
- ps=(/ps8/),&
- pm=pm8,pd=pd8,dpmdps=dpmdps,dpddps=dpddps)
-!
-!jw: has to be 8 real for wam
- pi8(1)=ps
- pm=pm8
-! pd=pd8
- dpidps(1)=1.
- do k=1,km
- pi8(k+1)=pi8(k)-pd8(k)
- dpidps(k+1)=dpidps(k)-dpddps(k)
-! if(pi(8)<0.) then
-! print *,'in modstuff,pi8=',pi8(k)
-! endif
- enddo
- pi=pi8
-!
- os=0
- do k=km,1,-1
- vgradp=u(k)*psx+v(k)*psy
- os=os-vgradp*ps*(dpmdps(k)-dpidps(k+1))-d(k)*(pm(k)-pi(k+1))
- om(k)=vgradp*ps*dpmdps(k)+os
- os=os-vgradp*ps*(dpidps(k)-dpmdps(k))-d(k)*(pi(k)-pm(k))
- enddo
- px=ps*dpmdps*psx
- py=ps*dpmdps*psy
- end subroutine
-
-!-------------------------------------------------------------------------------
- subroutine modstuff2(im,ix,km,idvc,idsl,nvcoord,vcoord,ps,psx,psy,d,u,v,&
- pi,pm,om,me)
-!$$$ Subprogram documentation block
-!
-! Subprogram: modstuff Compute model coordinate dependent functions
-! Prgmmr: Iredell Org: np23 Date: 1999-10-18
-!
-! Abstract: This subprogram computes fields which depend on the model coordinate
-! such as pressure thickness and vertical velocity.
-!
-! Program history log:
-! 1999-10-18 Mark Iredell
-! 2013-04-19 Jun Wang: add option to get pi by using 8byte real computation
-! 2013-08-13 Shrinivas Moorthi - Modified to include im points and thread
-!
-! Usage: call modstuff(km,idvc,idsl,nvcoord,vcoord,ps,psx,psy,d,u,v,&
-! pd,pi,pm,os,om,px,py)
-! Input argument list:
-! im integer - inner computational domain
-! ix integer - maximum inner dimension
-! km integer number of levels
-! idvc integer vertical coordinate id (1 for sigma and 2 for hybrid)
-! idsl integer type of sigma structure (1 for phillips or 2 for mean)
-! nvcoord integer number of vertical coordinates
-! vcoord real (km+1,nvcoord) vertical coordinates
-! ps real surface pressure (Pa)
-! psx real log surface pressure x-gradient (1/m)
-! psy real log surface pressure y-gradient (1/m)
-! d real (km) wind divergence (1/s)
-! u real (km) x-component wind (m/s)
-! v real (km) y-component wind (m/s)
-! Output argument list:
-! pi real (km+1) interface pressure (Pa)
-! pm real (km) mid-layer pressure (Pa)
-! om real (km) vertical velocity (Pa/s)
-!
-! Attributes:
-! Language: Fortran 90
-!
-!$$$
- use sigio_module, only : sigio_modprd
- implicit none
- integer, intent(in) :: im,ix,km,idvc,idsl,nvcoord,me
- real, intent(in) :: vcoord(km+1,nvcoord)
- real, dimension(ix), intent(in) :: ps,psx,psy
- real, dimension(ix,km), intent(in) :: u,v,d
- real*8, dimension(ix,km+1), intent(out) :: pi
- real*8, dimension(ix,km), intent(out) :: pm
- real, dimension(ix,km), intent(out) :: om
-! real*8, allocatable :: ps8(:), pm8(:,:), pd8(:,:),dpmdps(:,:),dpddps(:,:), &
-! dpidps(:,:),pi8(:,:),vcoord8(:,:)
-! real, allocatable :: os(:)
-! real, allocatable :: pd(:,:),px(:,:), py(:,:), os(:)
-
-! real vgradpps
-
- real*8 ps8(ix),pm8(ix,km),pd8(ix,km),vcoord8(km+1,nvcoord)
- real*8 dpmdps(ix,km),dpddps(ix,km),dpidps(ix,km+1),pi8(ix,km+1)
- real vgradpps,pd(im,km),os(im)
-! real vgradpps,pd(im,km),px(im,km),py(im,km),os(im),tem
- integer i,k,iret,logk
-! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
- ps8 = ps
- vcoord8 = vcoord
- call sigio_modprd(im,ix,km,nvcoord,idvc,idsl,vcoord8,iret, &
- ps=ps8,pd=pd8,dpddps=dpddps,pm=pm8,dpmdps=dpmdps)
-
-!
-! if (me == 0) then
-! write(0,*)' pd8=',pd8(1,60:64)
-! write(0,*)' pm8=',pm8(1,60:64)
-! endif
-!jw: has to be 8 real for wam
-
-!$omp parallel do private(i)
- do i=1,im
- pi8(i,1) = ps(i)
- dpidps(i,1) = 1.
- os(i) = 0
- pi(i,1) = pi8(i,1)
- enddo
- do k=1,km
-!$omp parallel do private(i)
- do i=1,im
- pi8(i,k+1) = pi8(i,k) - pd8(i,k)
- dpidps(i,k+1) = dpidps(i,k) - dpddps(i,k)
-! if(pi(i,8)<0.) then
-! print *,'in modstuff,pi8=',pi8(i,k),' i=',i,' k=',k,' me=',me
-! endif
- pi(i,k+1) = pi8(i,k+1)
- pm(i,k) = pm8(i,k)
- enddo
- enddo
-!
- do k=km,1,-1
-!$omp parallel do private(i,vgradpps)
- do i=1,im
- vgradpps = (u(i,k)*psx(i) + v(i,k)*psy(i)) * ps(i)
-
- os(i) = os(i) - vgradpps*(dpmdps(i,k)-dpidps(i,k+1)) &
- - d(i,k)*(pm(i,k)-pi(i,k+1))
-
- om(i,k) = os(i) + vgradpps*dpmdps(i,k)
-
- os(i) = os(i) - vgradpps*(dpidps(i,k)-dpmdps(i,k)) &
- - d(i,k)*(pi(i,k)-pm(i,k))
- enddo
- enddo
- end subroutine
-! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
subroutine mptgen(mpirank,mpisize,nd,jt1,jt2,j1,j2,jx,jm,jn)
!$$$ Subprogram documentation block
!
@@ -1217,296 +773,3 @@ subroutine mptranr4(mpicomm,mpisize,im,ida,idb,&
! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
end subroutine
!-----------------------------------------------------------------------
- subroutine trssc(jcap,nc,km,ntrac,idvc,idvm,idsl,nvcoord,vcoord, &
- cpi,idrt,lonb,latb,ijl,ijn,j1,j2,jc,chgq0, &
- szs,sps,st,sd,sz,sq,gfszs,gfsps,gfsp,gfsdp, &
- gfst,gfsu,gfsv,gfsq,gfsw)
-!$$$ subprogram documentation block
-!
-! subprogram: trssc transform sigma spectral fields to grid
-! prgmmr: iredell org: w/nmc23 date: 92-10-31
-!
-! abstract: transforms sigma spectral fields to grid and converts
-! log surface pressure to surface pressure and virtual temperature
-! to temperature.
-!
-! program history log:
-! 91-10-31 mark iredell
-!
-! usage: call trssc(jcap,nc,km,ntrac,idvm,
-! & idrt,lonb,latb,ijl,j1,j2,jc,
-! & szs,sps,st,sd,sz,sq,zs,ps,t,u,v,q)
-! input argument list:
-! jcap integer spectral truncation
-! nc integer first dimension (nc>=(jcap+1)*(jcap+2))
-! km integer number of levels
-! ntrac integer number of tracers
-! idvm integer mass variable id
-! idrt integer data representation type
-! lonb integer number of longitudes
-! latb integer number of latitudes
-! ijl integer horizontal dimension
-! j1 integer first latitude
-! j2 integer last latitude
-! jc integer number of cpus
-! szs real (nc) orography
-! sps real (nc) log surface pressure
-! st real (nc,levs) virtual temperature
-! sd real (nc,levs) divergence
-! sz real (nc,levs) vorticity
-! sq real (nc,levs*ntrac) tracers
-! output argument list:
-! zs real (ijl) orography
-! ps real (ijl) surface pressure
-! t real (ijl,km) temperature
-! u real (ijl,km) zonal wind
-! v real (ijl,km) meridional wind
-! q real (ijl,km*ntrac) tracers
-!
-! subprograms called:
-! sptran perform a scalar spherical transform
-!
-! attributes:
-! language: fortran
-!
-!c$$$
- use gfsio_module
-! use gfsio_rst
- implicit none
- integer,intent(in)::jcap,nc,km,ntrac,idvc,idvm,idsl,nvcoord,idrt,lonb,latb
- integer,intent(in)::ijl,ijn,j1,j2,jc,chgq0
- real,intent(in):: szs(nc),sps(nc),st(nc,km),sd(nc,km),sz(nc,km),sq(nc,km*ntrac)
- real,intent(in):: cpi(0:ntrac)
- real*8,intent(in):: vcoord(km+1,nvcoord)
- real,dimension(ijn),intent(inout):: gfszs,gfsps
- real,dimension(ijn,km),intent(inout):: gfsp,gfsdp,gfst,gfsu,gfsv,gfsw
- real,dimension(ijn,km*ntrac),intent(inout):: gfsq
- real zs(ijl),ps(ijl),t(ijl,km),u(ijl,km),v(ijl,km),q(ijl,km*ntrac)
- real wi(ijl,km),pi(ijl,km),dpo(ijl,km)
- real tvcon,xcp,sumq
- integer thermodyn_id,jn,js,is,in
- integer jj,jjm,k,n,j,i,ij,lonb2
-! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-! spectral transforms
- if(j1==732)print*,'sample input to trssc= ',jcap,nc,km,ntrac, &
- idvc,idvm,idsl,nvcoord, &
- idrt,lonb,latb,ijl,ijn,j1,j2,jc,chgq0
- lonb2=lonb*2
- ij=lonb2*(j2-j1+1)
- in=1
- is=1+lonb
- call sptran(0,jcap,idrt,lonb,latb,1,1,1,lonb2,lonb2,nc,ijl, &
- j1,j2,jc,szs,zs(in),zs(is),1)
- call sptran(0,jcap,idrt,lonb,latb,1,1,1,lonb2,lonb2,nc,ijl, &
- j1,j2,jc,sps,ps(in),ps(is),1)
- call sptran(0,jcap,idrt,lonb,latb,km,1,1,lonb2,lonb2,nc,ijl, &
- j1,j2,jc,st,t(in,1),t(is,1),1)
- call sptranv(0,jcap,idrt,lonb,latb,km,1,1,lonb2,lonb2,nc,ijl, &
- j1,j2,jc,sd,sz,u(in,1),u(is,1),v(in,1),v(is,1),1)
- call sptran(0,jcap,idrt,lonb,latb,km*ntrac,1,1,lonb2,lonb2,nc,ijl, &
- j1,j2,jc,sq,q(in,1),q(is,1),1)
- if(j1==732)then
- do k=1,km
- do i=1,ijl
- if(t(i,k)>400. .or. t(i,k)<100.)print*,'bad T from sptran',i,k,t(i,k)
- if(q(i,k)>1.)print*,'bad Q from sptran',i,k,q(i,k)
- if(q(i,2*k)>1.)print*,'bad Q from sptran',i,k,q(i,2*k)
- if(q(i,3*k)>1.)print*,'bad Q from sptran',i,k,q(i,3*k)
- end do
- end do
- end if
- select case(mod(idvm,10))
- case(0,1)
- do i=1,ij
- ps(i)=1.e3*exp(ps(i))
- enddo
- case(2)
- do i=1,ij
- ps(i)=1.e3*ps(i)
- enddo
- case default
- do i=1,ij
- ps(i)=1.e3*exp(ps(i))
- enddo
- end select
-! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- thermodyn_id=mod(idvm/10,10)
- if (thermodyn_id == 3) then
- do k=1,km
- do i=1,ij
- t(i,k) = t(i,k)/cpi(0) ! enthalpy (cpt/cpd)
- end do
- end do
-!
- endif
-
- call getomega(jcap,nc,km,idvc,idvm,idrt,idsl, &
- nvcoord,vcoord,lonb,latb,ijl,j1,j2,1,sd,sps, &
- ps,t,u,v,wi,pi,dpo)
- if(j1==732)then
- do k=1,km
- do i=1,ijl
- if(t(i,k)>400. .or. t(i,k)<100.)print*,'bad T after getomega',i,k,t(i,k)
- if(q(i,k)>1. )print*,'bad Q after getomega',i,k,q(i,k)
- if(q(i,2*k)>1. )print*,'bad Q after getomega',i,2*k,q(i,2*k)
- end do
- end do
- end if
- if(thermodyn_id /= 2)then
-! convert to surface pressure and temperature
- if (thermodyn_id == 3) then
- do k=1,km
- do i=1,ij
- xcp = 0.0
- sumq = 0.0
- do n=1,ntrac
- if( cpi(n) .ne. 0.0 ) then
- xcp = xcp + cpi(n)*q(i,k+(n-1)*km)
- sumq = sumq + q(i,k+(n-1)*km)
- endif
- enddo
- t(i,k) = t(i,k)/((1.-sumq)*cpi(0)+xcp)
- end do
- end do
-
- else
- tvcon=(461.50/287.05-1.)
- t(:,:) = t(:,:)/(1.+tvcon*q(:,1:km))
- endif
- end if
- if(j1==732)then
- do k=1,km
- do i=1,ijl
- if(t(i,k)>400. .or. t(i,k)<100.)print*,'bad T after Tv to T',i,k,t(i,k)
- if(q(i,k)>1.)print*,'bad Q after Tv to T',i,k,q(i,k)
- if(q(i,2*k)>1. )print*,'bad Q after Tv to T',i,k,q(i,2*k)
- end do
- end do
- end if
-! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-!----force tracers to be positive
- if (chgq0 == 1) q = max(q, 0.0)
-! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-! pass data to gfsdatao
- do j=1,j2-j1+1
- jn=j+j1-1
- js=latb+1-jn
- jn=(jn-1)*lonb
- js=(js-1)*lonb
- jj=j*lonb
- jjm=(j-1)*lonb
- do i=1,lonb
- gfszs(i+jn) = zs(i+jjm)
- gfsps(i+jn) = ps(i+jjm)
- enddo
- do i=1,lonb
- gfszs(i+js) = zs(i+jj)
- gfsps(i+js) = ps(i+jj)
- enddo
- do k=1,km
- do i=1,lonb
- gfsdp(i+jn,k) = dpo(i+jjm,k)
- gfsp(i+jn,k) = pi(i+jjm,k)
- gfst(i+jn,k) = t(i+jjm,k)
- gfsu(i+jn,k) = u(i+jjm,k)
- gfsv(i+jn,k) = v(i+jjm,k)
- gfsw(i+jn,k) = wi(i+jjm,k)
- enddo
- do i=1,lonb
- gfsdp(i+js,k) = dpo(i+jj,k)
- gfsp(i+js,k) = pi(i+jj,k)
- gfst(i+js,k) = t(i+jj,k)
- gfsu(i+js,k) = u(i+jj,k)
- gfsv(i+js,k) = v(i+jj,k)
- gfsw(i+js,k) = wi(i+jj,k)
- enddo
- enddo
- do k=1,km*ntrac
- do i=1,lonb
- gfsq(i+jn,k) = q(i+jjm,k)
- enddo
- do i=1,lonb
- gfsq(i+js,k) = q(i+jj,k)
- enddo
- enddo
- enddo
- return
- end
-!-----------------------------------------------------------------------
- subroutine getomega(jcap,nc,km,idvc,idvm,idrt,idsl,nvcoord,vcoord, &
- lonb,latb,ijn,j1,j2,jc,sd,sps,psi,ti,ui,vi,wi,pm,pd)
-!!!!!
- use sigio_module, only : sigio_modprd
- implicit none
-
- integer,intent(in):: jcap,nc,km,idvc,idvm,idrt,idsl,nvcoord
- integer,intent(in):: lonb,latb,j1,j2,jc,ijn
- real*8,intent(in):: vcoord(km+1,nvcoord)
- real,intent(in):: sd(nc,km),sps(nc)
- real,intent(in):: psi(ijn),ti(ijn,km),ui(ijn,km),vi(ijn,km)
- real,intent(out):: wi(ijn,km),pm(ijn,km),pd(ijn,km)
- real :: pi(ijn,km+1)
- real :: os
- real*8 psi8(ijn),ti8(ijn,km),pm8(ijn,km),pd8(ijn,km)
- real*8 dpmdps(ijn,km),dpddps(ijn,km),dpidps(ijn,km+1),vgradp,psmean
- real di(ijn,km),psx(ijn),psy(ijn)
- integer k,i,ij,lonb2,iret,is,in
-!----1. spectral transform
- lonb2=lonb*2
- ij=lonb2*(j2-j1+1)
- in=1
- is=1+lonb
- call sptrand(0,jcap,idrt,lonb,latb,1,1,1,lonb2,lonb2,nc,ijn, &
- j1,j2,jc,sps,psmean,psx(in),psx(is),psy(in),psy(is),1)
-
- call sptran(0,jcap,idrt,lonb,latb,km,1,1,lonb2,lonb2,nc,ijn, &
- j1,j2,jc,sd,di(in,1),di(is,1),1)
- psi8=psi
- ti8=ti
-
- call sigio_modprd(ijn,ijn,km,nvcoord,idvc,idsl,vcoord,iret, &
- ps=psi8,t=ti8,pm=pm8,pd=pd8,dpmdps=dpmdps,dpddps=dpddps)
- pm=pm8
- pd=pd8
-
- select case(mod(idvm,10))
- case(0,1)
- continue
- case(2)
- do i=1,ijn
- psx(i)=psx(i)/(psi(i)*1.0e-3)
- psy(i)=psy(i)/(psi(i)*1.0e-3)
- enddo
- case default
- do i=1,ijn
- psx(i)=psx(i)/psi(i)
- psy(i)=psy(i)/psi(i)
- enddo
- end select
-
-!----3.omeda from modstuff
- do i=1,ijn
- pi(i,1)=psi(i)
- dpidps(i,1)=1.
- enddo
- do k=1,km
- do i=1,ijn
- pi(i,k+1)=pi(i,k)-pd(i,k)
- dpidps(i,k+1)=dpidps(i,k)-dpddps(i,k)
- enddo
- enddo
- do i=1,ijn
- os=0.
- do k=km,1,-1
- vgradp=ui(i,k)*psx(i)+vi(i,k)*psy(i)
- os=os-vgradp*psi(i)*(dpmdps(i,k)-dpidps(i,k+1))- &
- di(i,k)*(pm(i,k)-pi(i,k+1))
- wi(i,k)=vgradp*psi(i)*dpmdps(i,k)+os
- os=os-vgradp*psi(i)*(dpidps(i,k)-dpmdps(i,k))- &
- di(i,k)*(pi(i,k)-pm(i,k))
- enddo
-!
- enddo
-!---
- return
- end subroutine
diff --git a/comupp/src/unipost/GFSPOSTSIG.F b/comupp/src/unipost/GFSPOSTSIG.F
new file mode 100644
index 000000000..97f111c8b
--- /dev/null
+++ b/comupp/src/unipost/GFSPOSTSIG.F
@@ -0,0 +1,737 @@
+! Add Iredells subroutine to read sigma files
+!-------------------------------------------------------------------------------
+subroutine rtsig(lusig,head,k1,k2,kgds,ijo,levs,ntrac,jcap,lnt2,me, &
+ h,p,px,py,t,u,v,d,trc,iret)
+!$$$ Subprogram documentation block
+!
+! Subprogram: rtsig Read and transform sigma file
+! Prgmmr: Iredell Org: np23 Date: 1999-10-18
+!
+! Abstract: This subprogram reads a sigma file and transforms
+! the fields to a designated global grid.
+!
+! Program history log:
+! 1999-10-18 Mark Iredell
+! 2013-04-19 Jun Wang: add option to get tmp and ps(in pascal)
+! from enthalpy and ps(cb) option
+! 2013-05-06 Shrinivas Moorthi: Initialize midea to 0
+! 2013-05-07 Shrinivas Moorthi: Remove mo3, mct, midea and define io3, ict etc
+! correctly and get correct cloud condensate.
+! 2013-08-02 Shrinivas Moorthi: Rewrote the whole routine to read the sigma
+! file differently and to read all tracers
+! Addedd sptezj for two 2d fields
+! 2014-02-20 Shrinivas Moorthi: Modified conversion from spectral to grid
+! taking advantage of threding in SP library.
+! This really speeds up the code
+! Also threaded loop for Temperature from Tv
+
+!
+! Usage: call rtsig(lusig,head,k1,k2,kgds,ijo,nct, &
+! h,p,px,py,t,tx,ty,u,v,d,z,sh,o3,ct,iret,o,o2)
+! Input argument list:
+! lusig integer(sigio_intkind) sigma file unit number
+! head type(sigio_head) sigma file header
+! k1 integer first model level to return
+! k2 integer last model level to return
+! kgds integer (200) GDS to which to transform
+! ijo integer dimension of output fields
+! levs integer number of total vertical levels
+! ntrac integer number of output tracers
+! jcap integer number of waves
+! lnt2 integer (jcap+1)*(jcap+2)
+! Output argument list:
+! h real (ijo) surface orography (m)
+! p real (ijo) surface pressure (Pa)
+! px real (ijo) log surface pressure x-gradient (1/m)
+! py real (ijo) log surface pressure y-gradient (1/m)
+! t real (ijo,k1:k2) temperature (K)
+! tx real (ijo,k1:k2) virtual temperature x-gradient (K/m)
+! ty real (ijo,k1:k2) virtual temperature y-gradient (K/m)
+! u real (ijo,k1:k2) x-component wind (m/s)
+! v real (ijo,k1:k2) y-component wind (m/s)
+! d real (ijo,k1:k2) wind divergence (1/s)
+! trc real (ijo,k1:k2,ntrac) tracers
+! 1 = specific humidity (kg/kg)
+! 2 = Ozone mixing ratio (kg/kg)
+! 3 = cloud condensate mixing ratio (kg/kg)
+! .
+! .
+! atomic oxyge, oxygen etc
+!
+! iret integer return code
+!
+! Modules used:
+! sigio_r_module sigma file I/O
+!
+! Subprograms called:
+! sigio_rrdati read sigma single data field
+! sptez scalar spectral transform
+! sptezd gradient spectral transform
+! sptezm multiple scalar spectral transform
+! sptezmv multiple vector spectral transform
+!
+! Attributes:
+! Language: Fortran 90
+!
+!$$$
+ use sigio_module, only : sigio_intkind, sigio_head
+ use sigio_r_module, only : sigio_dati, sigio_rrdati
+ use physcons, only : con_omega, con_fvirt
+ use omp_lib
+ implicit none
+ integer(sigio_intkind),intent(in) :: lusig
+ type(sigio_head), intent(in) :: head
+ integer,intent(in) :: k1,k2,kgds(200),ijo,levs,ntrac,jcap,lnt2,me
+ real,dimension(ijo), intent(out) :: h,p,px,py
+ real,dimension(ijo,k1:k2),intent(out):: t,u,v,d
+ real,dimension(ijo,k1:k2,ntrac),intent(out),target :: trc
+ integer,intent(out) :: iret
+!
+ integer idrt,io,jo,iidea
+! integer idrt,io,jo,mo3,mct,iidea,midea
+ integer(sigio_intkind):: irets
+! type(sigio_datm):: datm
+ type(sigio_dati) dati
+! type griddata
+! real,dimension(:,:),pointer :: datm
+! endtype griddata
+! type(griddata),dimension(:),pointer :: datatrc
+ real, target :: trisca(lnt2,k1:k2+1), triscb(lnt2,k1:k2)
+ real,dimension(:), allocatable :: cpi
+ real,dimension(:,:),allocatable :: wrk
+ integer io3,ict,jct,n,i,k,jc,nt
+ integer idvm, klen
+ real pmean,sumq,xcp
+! integer, parameter :: latch=20
+! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+! Determine output grid
+ idrt = kgds(1)
+ if(kgds(1) == 0 .and. kgds(4) < 90000) idrt = 256
+ io = kgds(2)
+ jo = kgds(3)
+! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+! Read and transform surface fields
+ iret = 1
+ if (me == 0) then
+ print*,'Debug rtsig= ',lusig,k1,k2,ijo,kgds(1:20)
+ endif
+
+ idvm = head%idvm
+! jc = omp_get_num_threads()
+! write(0,*)' in RTSIG lnt2=',lnt2,' threads=',jc,' latch=',latch, &
+! ' jcap=',jcap,' io=',io,' jo=',jo,' ijo=',ijo
+!
+ if (k2 < k1) return
+
+ dati%i = 1 ! hs
+ dati%f => trisca(:,k1)
+ call sigio_rrdati(lusig,head,dati,irets)
+ if(irets /= 0) return
+
+! call sptez(0,jcap,idrt,io,jo,trisca(1,k1),h,1)
+! call sptez(0,jcap,idrt,io,jo,dats%hs,h,1)
+! call sptez(0,jcap,idrt,io,jo,dats%ps,p,1)
+! call sptezj(jcap,lnt2,1,idrt,io,jo,jc,trisca,h,latch,1)
+!
+ dati%i = 2 ! Surface pressure
+ dati%f => trisca(:,k1+1)
+ call sigio_rrdati(lusig,head,dati,irets)
+ if(irets /= 0) return
+!
+! call sptez(0,jcap,idrt,io,jo,trisca(1,k1),p,1)
+! call sptezj(jcap,lnt2,1,idrt,io,jo,jc,trisca,p,latch,1)
+!--
+ allocate(wrk(ijo,2))
+ call sptezm(0,jcap,idrt,io,jo,2,trisca(1,k1),wrk,1)
+ if( mod(idvm,10) < 2) then
+!$omp parallel do private(i)
+ do i=1,ijo
+ h(i) = wrk(i,1)
+ p(i) = 1.e3*exp(wrk(i,2))
+! p(i) = 1.e3*exp(p(i))
+ enddo
+ elseif(mod(idvm,10) == 2) then
+!$omp parallel do private(i)
+ do i=1,ijo
+ h(i) = wrk(i,1)
+ p(i) = 1000.*wrk(i,2)
+! p(i) = 1000.*p(i)
+ enddo
+ endif
+ if (allocated(wrk)) deallocate(wrk)
+
+ call sptezd(0,jcap,idrt,io,jo,trisca(1,k1+1),pmean,px,py,1)
+ iret = 0
+
+! if (k2 < k1) return
+
+! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+! Read and transform fields on levels k1 through k2
+ iret = 2
+ if (k2 >= k1) then
+ klen = k2-k1+1
+ do k=k1,k2
+ write(0,*)' retriving T for k=',k,' k1=',k1,' k2=',k2
+ dati%i = k + 2 ! Virtual Temperature or CpT
+ dati%f => trisca(:,k)
+
+ call sigio_rrdati(lusig,head,dati,iret)
+ enddo
+ call sptezm(0,jcap,idrt,io,jo,klen,trisca(1,k1),t(1,k1),1)
+! call sptezm(0,jcap,idrt,io,jo,klen,trisca,t,1)
+ do k=k1,k2
+ dati%i = levs + 2 + (k-1) * 2 + 1 ! Divergence
+ dati%f => trisca(:,k)
+ call sigio_rrdati(lusig,head,dati,irets)
+ if(irets /= 0) return
+ dati%i = levs + 2 + (k-1) * 2 + 2 ! Vorticity
+ dati%f => triscb(:,k)
+ call sigio_rrdati(lusig,head,dati,irets)
+ if(irets /= 0) return
+ enddo
+ call sptezmv(0,jcap,idrt,io,jo,klen,trisca(1,k1),triscb(1,k1), &
+ u(1,k1),v(1,k1),1)
+ call sptezm(0,jcap,idrt,io,jo,klen,trisca(1,k1),d(1,k1),1)
+
+! call sptezm(0,jcap,idrt,io,jo,1,triscb,z(1,k),1)
+ write(0,*)' retriving d/z for k=',k,' k1=',k1,' k2=',k2
+! datm%z(3,:) = datm%z(3,:)+2*con_omega/sqrt(1.5)
+! call sptezm(0,jcap,idrt,io,jo,klen,datm%z,z,1)
+ write(0,*)' start get tracer'
+ do nt=1,ntrac
+ do k=k1,k2
+ dati%i = levs * (2+nt) + 2 + k ! Tracers starting with q
+ dati%f => trisca(:,k)
+ call sigio_rrdati(lusig,head,dati,irets)
+ enddo
+ call sptezm(0,jcap,idrt,io,jo,klen,trisca(1,k1),trc(1,k1,nt),1)
+ write(0,*)' retriving d/z for nt=',nt,'ntrac=',ntrac,'k=',k,' k1=',k1,' k2=',k2
+ enddo
+ !t=t/(1+con_fvirt*sh)
+ write(0,*)' end get tracer,idvm=',idvm,'ijo=',ijo,'ntrac=',ntrac
+!
+!-- get temp
+ if (mod(idvm/10,10) == 3) then ! Enthalpy case
+ allocate(cpi(0:ntrac))
+! write(0,*)'aft read sig, cpi=',head%cpi
+ cpi(0:ntrac) = head%cpi(1:ntrac+1)
+! write(0,*)'cpi=',cpi(0:ntrac)
+!$omp parallel do private(k,i,xcp,sumq,n)
+ do k=k1,k2
+ do i=1,ijo
+ xcp = 0.0
+ sumq = 0.0
+ do n=1,ntrac
+ if( cpi(n) /= 0.0 ) then
+ xcp = xcp + cpi(n)*trc(i,k,n)
+ sumq = sumq + trc(i,k,n)
+ endif
+ enddo
+ xcp = (1.-sumq)*cpi(0) + xcp
+ t(i,k) = t(i,k) / xcp ! Now g1 contains T
+ enddo
+ enddo
+ if (allocated(cpi)) deallocate(cpi)
+ else
+!$omp parallel do private(i,k)
+ do k=k1,k2
+ do i=1,ijo
+ t(i,k) = t(i,k) / (1+con_fvirt*trc(i,k,1)) !get temp from virtual temp
+ enddo
+ enddo
+ endif
+ endif
+! write(0,*)'end comput t'
+ iret=0
+! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+end subroutine
+
+! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+ subroutine modstuff(km,idvc,idsl,nvcoord,vcoord,ps,psx,psy,d,u,v,&
+ pi,pm,om)
+!$$$ Subprogram documentation block
+!
+! Subprogram: modstuff Compute model coordinate dependent functions
+! Prgmmr: Iredell Org: np23 Date: 1999-10-18
+!
+! Abstract: This subprogram computes fields which depend on the model coordinate
+! such as pressure thickness and vertical velocity.
+!
+! Program history log:
+! 1999-10-18 Mark Iredell
+! 2013-04-19 Jun Wang: add option to get pi by using 8byte real computation
+!
+! Usage: call modstuff(km,idvc,idsl,nvcoord,vcoord,ps,psx,psy,d,u,v,&
+! pd,pi,pm,os,om,px,py)
+! Input argument list:
+! km integer number of levels
+! idvc integer vertical coordinate id (1 for sigma and 2 for hybrid)
+! idsl integer type of sigma structure (1 for phillips or 2 for mean)
+! nvcoord integer number of vertical coordinates
+! vcoord real (km+1,nvcoord) vertical coordinates
+! ps real surface pressure (Pa)
+! psx real log surface pressure x-gradient (1/m)
+! psy real log surface pressure y-gradient (1/m)
+! d real (km) wind divergence (1/s)
+! u real (km) x-component wind (m/s)
+! v real (km) y-component wind (m/s)
+! Output argument list:
+! pi real (km+1) interface pressure (Pa)
+! pm real (km) mid-layer pressure (Pa)
+! om real (km) vertical velocity (Pa/s)
+!
+! Attributes:
+! Language: Fortran 90
+!
+!$$$
+ use sigio_module, only: sigio_modprd
+ implicit none
+ integer,intent(in):: km,idvc,idsl,nvcoord
+ real,intent(in):: vcoord(km+1,nvcoord)
+ real,intent(in):: ps,psx,psy
+ real,intent(in):: u(km),v(km),d(km)
+! real,intent(out):: pi(km+1),pm(km)
+ real*8, intent(out):: pi(km+1),pm(km)
+ real,intent(out):: om(km)
+ real*8 ps8,pm8(km),pd8(km),vcoord8(km+1,nvcoord)
+ real*8 dpmdps(km),dpddps(km),dpidps(km+1),pi8(km+1)
+ real vgradp,pd(km),px(km),py(km),os
+ integer k,iret,logk
+! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ps8=ps
+ vcoord8=vcoord
+ call sigio_modprd(1,1,km,nvcoord,idvc,idsl,vcoord8,iret,&
+ ps=(/ps8/),&
+ pm=pm8,pd=pd8,dpmdps=dpmdps,dpddps=dpddps)
+!
+!jw: has to be 8 real for wam
+ pi8(1)=ps
+ pm=pm8
+! pd=pd8
+ dpidps(1)=1.
+ do k=1,km
+ pi8(k+1)=pi8(k)-pd8(k)
+ dpidps(k+1)=dpidps(k)-dpddps(k)
+! if(pi(8)<0.) then
+! print *,'in modstuff,pi8=',pi8(k)
+! endif
+ enddo
+ pi=pi8
+!
+ os=0
+ do k=km,1,-1
+ vgradp=u(k)*psx+v(k)*psy
+ os=os-vgradp*ps*(dpmdps(k)-dpidps(k+1))-d(k)*(pm(k)-pi(k+1))
+ om(k)=vgradp*ps*dpmdps(k)+os
+ os=os-vgradp*ps*(dpidps(k)-dpmdps(k))-d(k)*(pi(k)-pm(k))
+ enddo
+ px=ps*dpmdps*psx
+ py=ps*dpmdps*psy
+ end subroutine
+
+!-------------------------------------------------------------------------------
+ subroutine modstuff2(im,ix,km,idvc,idsl,nvcoord,vcoord,ps,psx,psy,d,u,v,&
+ pi,pm,om,me)
+!$$$ Subprogram documentation block
+!
+! Subprogram: modstuff Compute model coordinate dependent functions
+! Prgmmr: Iredell Org: np23 Date: 1999-10-18
+!
+! Abstract: This subprogram computes fields which depend on the model coordinate
+! such as pressure thickness and vertical velocity.
+!
+! Program history log:
+! 1999-10-18 Mark Iredell
+! 2013-04-19 Jun Wang: add option to get pi by using 8byte real computation
+! 2013-08-13 Shrinivas Moorthi - Modified to include im points and thread
+!
+! Usage: call modstuff(km,idvc,idsl,nvcoord,vcoord,ps,psx,psy,d,u,v,&
+! pd,pi,pm,os,om,px,py)
+! Input argument list:
+! im integer - inner computational domain
+! ix integer - maximum inner dimension
+! km integer number of levels
+! idvc integer vertical coordinate id (1 for sigma and 2 for hybrid)
+! idsl integer type of sigma structure (1 for phillips or 2 for mean)
+! nvcoord integer number of vertical coordinates
+! vcoord real (km+1,nvcoord) vertical coordinates
+! ps real surface pressure (Pa)
+! psx real log surface pressure x-gradient (1/m)
+! psy real log surface pressure y-gradient (1/m)
+! d real (km) wind divergence (1/s)
+! u real (km) x-component wind (m/s)
+! v real (km) y-component wind (m/s)
+! Output argument list:
+! pi real (km+1) interface pressure (Pa)
+! pm real (km) mid-layer pressure (Pa)
+! om real (km) vertical velocity (Pa/s)
+!
+! Attributes:
+! Language: Fortran 90
+!
+!$$$
+ use sigio_module, only : sigio_modprd
+ implicit none
+ integer, intent(in) :: im,ix,km,idvc,idsl,nvcoord,me
+ real, intent(in) :: vcoord(km+1,nvcoord)
+ real, dimension(ix), intent(in) :: ps,psx,psy
+ real, dimension(ix,km), intent(in) :: u,v,d
+ real*8, dimension(ix,km+1), intent(out) :: pi
+ real*8, dimension(ix,km), intent(out) :: pm
+ real, dimension(ix,km), intent(out) :: om
+! real*8, allocatable :: ps8(:), pm8(:,:), pd8(:,:),dpmdps(:,:),dpddps(:,:), &
+! dpidps(:,:),pi8(:,:),vcoord8(:,:)
+! real, allocatable :: os(:)
+! real, allocatable :: pd(:,:),px(:,:), py(:,:), os(:)
+
+! real vgradpps
+
+ real*8 ps8(ix),pm8(ix,km),pd8(ix,km),vcoord8(km+1,nvcoord)
+ real*8 dpmdps(ix,km),dpddps(ix,km),dpidps(ix,km+1),pi8(ix,km+1)
+ real vgradpps,pd(im,km),os(im)
+! real vgradpps,pd(im,km),px(im,km),py(im,km),os(im),tem
+ integer i,k,iret,logk
+! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+
+ ps8 = ps
+ vcoord8 = vcoord
+ call sigio_modprd(im,ix,km,nvcoord,idvc,idsl,vcoord8,iret, &
+ ps=ps8,pd=pd8,dpddps=dpddps,pm=pm8,dpmdps=dpmdps)
+
+!
+! if (me == 0) then
+! write(0,*)' pd8=',pd8(1,60:64)
+! write(0,*)' pm8=',pm8(1,60:64)
+! endif
+!jw: has to be 8 real for wam
+
+!$omp parallel do private(i)
+ do i=1,im
+ pi8(i,1) = ps(i)
+ dpidps(i,1) = 1.
+ os(i) = 0
+ pi(i,1) = pi8(i,1)
+ enddo
+ do k=1,km
+!$omp parallel do private(i)
+ do i=1,im
+ pi8(i,k+1) = pi8(i,k) - pd8(i,k)
+ dpidps(i,k+1) = dpidps(i,k) - dpddps(i,k)
+! if(pi(i,8)<0.) then
+! print *,'in modstuff,pi8=',pi8(i,k),' i=',i,' k=',k,' me=',me
+! endif
+ pi(i,k+1) = pi8(i,k+1)
+ pm(i,k) = pm8(i,k)
+ enddo
+ enddo
+!
+ do k=km,1,-1
+!$omp parallel do private(i,vgradpps)
+ do i=1,im
+ vgradpps = (u(i,k)*psx(i) + v(i,k)*psy(i)) * ps(i)
+
+ os(i) = os(i) - vgradpps*(dpmdps(i,k)-dpidps(i,k+1)) &
+ - d(i,k)*(pm(i,k)-pi(i,k+1))
+
+ om(i,k) = os(i) + vgradpps*dpmdps(i,k)
+
+ os(i) = os(i) - vgradpps*(dpidps(i,k)-dpmdps(i,k)) &
+ - d(i,k)*(pi(i,k)-pm(i,k))
+ enddo
+ enddo
+ end subroutine
+
+!-----------------------------------------------------------------------
+ subroutine trssc(jcap,nc,km,ntrac,idvc,idvm,idsl,nvcoord,vcoord, &
+ cpi,idrt,lonb,latb,ijl,ijn,j1,j2,jc,chgq0, &
+ szs,sps,st,sd,sz,sq,gfszs,gfsps,gfsp,gfsdp, &
+ gfst,gfsu,gfsv,gfsq,gfsw)
+!$$$ subprogram documentation block
+!
+! subprogram: trssc transform sigma spectral fields to grid
+! prgmmr: iredell org: w/nmc23 date: 92-10-31
+!
+! abstract: transforms sigma spectral fields to grid and converts
+! log surface pressure to surface pressure and virtual temperature
+! to temperature.
+!
+! program history log:
+! 91-10-31 mark iredell
+!
+! usage: call trssc(jcap,nc,km,ntrac,idvm,
+! & idrt,lonb,latb,ijl,j1,j2,jc,
+! & szs,sps,st,sd,sz,sq,zs,ps,t,u,v,q)
+! input argument list:
+! jcap integer spectral truncation
+! nc integer first dimension (nc>=(jcap+1)*(jcap+2))
+! km integer number of levels
+! ntrac integer number of tracers
+! idvm integer mass variable id
+! idrt integer data representation type
+! lonb integer number of longitudes
+! latb integer number of latitudes
+! ijl integer horizontal dimension
+! j1 integer first latitude
+! j2 integer last latitude
+! jc integer number of cpus
+! szs real (nc) orography
+! sps real (nc) log surface pressure
+! st real (nc,levs) virtual temperature
+! sd real (nc,levs) divergence
+! sz real (nc,levs) vorticity
+! sq real (nc,levs*ntrac) tracers
+! output argument list:
+! zs real (ijl) orography
+! ps real (ijl) surface pressure
+! t real (ijl,km) temperature
+! u real (ijl,km) zonal wind
+! v real (ijl,km) meridional wind
+! q real (ijl,km*ntrac) tracers
+!
+! subprograms called:
+! sptran perform a scalar spherical transform
+!
+! attributes:
+! language: fortran
+!
+!c$$$
+ use gfsio_module
+! use gfsio_rst
+ implicit none
+ integer,intent(in)::jcap,nc,km,ntrac,idvc,idvm,idsl,nvcoord,idrt,lonb,latb
+ integer,intent(in)::ijl,ijn,j1,j2,jc,chgq0
+ real,intent(in):: szs(nc),sps(nc),st(nc,km),sd(nc,km),sz(nc,km),sq(nc,km*ntrac)
+ real,intent(in):: cpi(0:ntrac)
+ real*8,intent(in):: vcoord(km+1,nvcoord)
+ real,dimension(ijn),intent(inout):: gfszs,gfsps
+ real,dimension(ijn,km),intent(inout):: gfsp,gfsdp,gfst,gfsu,gfsv,gfsw
+ real,dimension(ijn,km*ntrac),intent(inout):: gfsq
+ real zs(ijl),ps(ijl),t(ijl,km),u(ijl,km),v(ijl,km),q(ijl,km*ntrac)
+ real wi(ijl,km),pi(ijl,km),dpo(ijl,km)
+ real tvcon,xcp,sumq
+ integer thermodyn_id,jn,js,is,in
+ integer jj,jjm,k,n,j,i,ij,lonb2
+! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+! spectral transforms
+ if(j1==732)print*,'sample input to trssc= ',jcap,nc,km,ntrac, &
+ idvc,idvm,idsl,nvcoord, &
+ idrt,lonb,latb,ijl,ijn,j1,j2,jc,chgq0
+ lonb2=lonb*2
+ ij=lonb2*(j2-j1+1)
+ in=1
+ is=1+lonb
+ call sptran(0,jcap,idrt,lonb,latb,1,1,1,lonb2,lonb2,nc,ijl, &
+ j1,j2,jc,szs,zs(in),zs(is),1)
+ call sptran(0,jcap,idrt,lonb,latb,1,1,1,lonb2,lonb2,nc,ijl, &
+ j1,j2,jc,sps,ps(in),ps(is),1)
+ call sptran(0,jcap,idrt,lonb,latb,km,1,1,lonb2,lonb2,nc,ijl, &
+ j1,j2,jc,st,t(in,1),t(is,1),1)
+ call sptranv(0,jcap,idrt,lonb,latb,km,1,1,lonb2,lonb2,nc,ijl, &
+ j1,j2,jc,sd,sz,u(in,1),u(is,1),v(in,1),v(is,1),1)
+ call sptran(0,jcap,idrt,lonb,latb,km*ntrac,1,1,lonb2,lonb2,nc,ijl, &
+ j1,j2,jc,sq,q(in,1),q(is,1),1)
+ if(j1==732)then
+ do k=1,km
+ do i=1,ijl
+ if(t(i,k)>400. .or. t(i,k)<100.)print*,'bad T from sptran',i,k,t(i,k)
+ if(q(i,k)>1.)print*,'bad Q from sptran',i,k,q(i,k)
+ if(q(i,2*k)>1.)print*,'bad Q from sptran',i,k,q(i,2*k)
+ if(q(i,3*k)>1.)print*,'bad Q from sptran',i,k,q(i,3*k)
+ end do
+ end do
+ end if
+ select case(mod(idvm,10))
+ case(0,1)
+ do i=1,ij
+ ps(i)=1.e3*exp(ps(i))
+ enddo
+ case(2)
+ do i=1,ij
+ ps(i)=1.e3*ps(i)
+ enddo
+ case default
+ do i=1,ij
+ ps(i)=1.e3*exp(ps(i))
+ enddo
+ end select
+! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+ thermodyn_id=mod(idvm/10,10)
+ if (thermodyn_id == 3) then
+ do k=1,km
+ do i=1,ij
+ t(i,k) = t(i,k)/cpi(0) ! enthalpy (cpt/cpd)
+ end do
+ end do
+!
+ endif
+
+ call getomega(jcap,nc,km,idvc,idvm,idrt,idsl, &
+ nvcoord,vcoord,lonb,latb,ijl,j1,j2,1,sd,sps, &
+ ps,t,u,v,wi,pi,dpo)
+ if(j1==732)then
+ do k=1,km
+ do i=1,ijl
+ if(t(i,k)>400. .or. t(i,k)<100.)print*,'bad T after getomega',i,k,t(i,k)
+ if(q(i,k)>1. )print*,'bad Q after getomega',i,k,q(i,k)
+ if(q(i,2*k)>1. )print*,'bad Q after getomega',i,2*k,q(i,2*k)
+ end do
+ end do
+ end if
+ if(thermodyn_id /= 2)then
+! convert to surface pressure and temperature
+ if (thermodyn_id == 3) then
+ do k=1,km
+ do i=1,ij
+ xcp = 0.0
+ sumq = 0.0
+ do n=1,ntrac
+ if( cpi(n) .ne. 0.0 ) then
+ xcp = xcp + cpi(n)*q(i,k+(n-1)*km)
+ sumq = sumq + q(i,k+(n-1)*km)
+ endif
+ enddo
+ t(i,k) = t(i,k)/((1.-sumq)*cpi(0)+xcp)
+ end do
+ end do
+
+ else
+ tvcon=(461.50/287.05-1.)
+ t(:,:) = t(:,:)/(1.+tvcon*q(:,1:km))
+ endif
+ end if
+ if(j1==732)then
+ do k=1,km
+ do i=1,ijl
+ if(t(i,k)>400. .or. t(i,k)<100.)print*,'bad T after Tv to T',i,k,t(i,k)
+ if(q(i,k)>1.)print*,'bad Q after Tv to T',i,k,q(i,k)
+ if(q(i,2*k)>1. )print*,'bad Q after Tv to T',i,k,q(i,2*k)
+ end do
+ end do
+ end if
+! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+!----force tracers to be positive
+ if (chgq0 == 1) q = max(q, 0.0)
+! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+! pass data to gfsdatao
+ do j=1,j2-j1+1
+ jn=j+j1-1
+ js=latb+1-jn
+ jn=(jn-1)*lonb
+ js=(js-1)*lonb
+ jj=j*lonb
+ jjm=(j-1)*lonb
+ do i=1,lonb
+ gfszs(i+jn) = zs(i+jjm)
+ gfsps(i+jn) = ps(i+jjm)
+ enddo
+ do i=1,lonb
+ gfszs(i+js) = zs(i+jj)
+ gfsps(i+js) = ps(i+jj)
+ enddo
+ do k=1,km
+ do i=1,lonb
+ gfsdp(i+jn,k) = dpo(i+jjm,k)
+ gfsp(i+jn,k) = pi(i+jjm,k)
+ gfst(i+jn,k) = t(i+jjm,k)
+ gfsu(i+jn,k) = u(i+jjm,k)
+ gfsv(i+jn,k) = v(i+jjm,k)
+ gfsw(i+jn,k) = wi(i+jjm,k)
+ enddo
+ do i=1,lonb
+ gfsdp(i+js,k) = dpo(i+jj,k)
+ gfsp(i+js,k) = pi(i+jj,k)
+ gfst(i+js,k) = t(i+jj,k)
+ gfsu(i+js,k) = u(i+jj,k)
+ gfsv(i+js,k) = v(i+jj,k)
+ gfsw(i+js,k) = wi(i+jj,k)
+ enddo
+ enddo
+ do k=1,km*ntrac
+ do i=1,lonb
+ gfsq(i+jn,k) = q(i+jjm,k)
+ enddo
+ do i=1,lonb
+ gfsq(i+js,k) = q(i+jj,k)
+ enddo
+ enddo
+ enddo
+ return
+ end
+!-----------------------------------------------------------------------
+ subroutine getomega(jcap,nc,km,idvc,idvm,idrt,idsl,nvcoord,vcoord, &
+ lonb,latb,ijn,j1,j2,jc,sd,sps,psi,ti,ui,vi,wi,pm,pd)
+!!!!!
+ use sigio_module, only : sigio_modprd
+ implicit none
+
+ integer,intent(in):: jcap,nc,km,idvc,idvm,idrt,idsl,nvcoord
+ integer,intent(in):: lonb,latb,j1,j2,jc,ijn
+ real*8,intent(in):: vcoord(km+1,nvcoord)
+ real,intent(in):: sd(nc,km),sps(nc)
+ real,intent(in):: psi(ijn),ti(ijn,km),ui(ijn,km),vi(ijn,km)
+ real,intent(out):: wi(ijn,km),pm(ijn,km),pd(ijn,km)
+ real :: pi(ijn,km+1)
+ real :: os
+ real*8 psi8(ijn),ti8(ijn,km),pm8(ijn,km),pd8(ijn,km)
+ real*8 dpmdps(ijn,km),dpddps(ijn,km),dpidps(ijn,km+1),vgradp,psmean
+ real di(ijn,km),psx(ijn),psy(ijn)
+ integer k,i,ij,lonb2,iret,is,in
+!----1. spectral transform
+ lonb2=lonb*2
+ ij=lonb2*(j2-j1+1)
+ in=1
+ is=1+lonb
+ call sptrand(0,jcap,idrt,lonb,latb,1,1,1,lonb2,lonb2,nc,ijn, &
+ j1,j2,jc,sps,psmean,psx(in),psx(is),psy(in),psy(is),1)
+
+ call sptran(0,jcap,idrt,lonb,latb,km,1,1,lonb2,lonb2,nc,ijn, &
+ j1,j2,jc,sd,di(in,1),di(is,1),1)
+ psi8=psi
+ ti8=ti
+
+ call sigio_modprd(ijn,ijn,km,nvcoord,idvc,idsl,vcoord,iret, &
+ ps=psi8,t=ti8,pm=pm8,pd=pd8,dpmdps=dpmdps,dpddps=dpddps)
+ pm=pm8
+ pd=pd8
+
+ select case(mod(idvm,10))
+ case(0,1)
+ continue
+ case(2)
+ do i=1,ijn
+ psx(i)=psx(i)/(psi(i)*1.0e-3)
+ psy(i)=psy(i)/(psi(i)*1.0e-3)
+ enddo
+ case default
+ do i=1,ijn
+ psx(i)=psx(i)/psi(i)
+ psy(i)=psy(i)/psi(i)
+ enddo
+ end select
+
+!----3.omeda from modstuff
+ do i=1,ijn
+ pi(i,1)=psi(i)
+ dpidps(i,1)=1.
+ enddo
+ do k=1,km
+ do i=1,ijn
+ pi(i,k+1)=pi(i,k)-pd(i,k)
+ dpidps(i,k+1)=dpidps(i,k)-dpddps(i,k)
+ enddo
+ enddo
+ do i=1,ijn
+ os=0.
+ do k=km,1,-1
+ vgradp=ui(i,k)*psx(i)+vi(i,k)*psy(i)
+ os=os-vgradp*psi(i)*(dpmdps(i,k)-dpidps(i,k+1))- &
+ di(i,k)*(pm(i,k)-pi(i,k+1))
+ wi(i,k)=vgradp*psi(i)*dpmdps(i,k)+os
+ os=os-vgradp*psi(i)*(dpidps(i,k)-dpmdps(i,k))- &
+ di(i,k)*(pi(i,k)-pm(i,k))
+ enddo
+!
+ enddo
+!---
+ return
+ end subroutine
diff --git a/comupp/src/unipost/INITPOST.F b/comupp/src/unipost/INITPOST.F
index 7b77cfd52..90aa41557 100644
--- a/comupp/src/unipost/INITPOST.F
+++ b/comupp/src/unipost/INITPOST.F
@@ -42,24 +42,27 @@ SUBROUTINE INITPOST
! LANGUAGE: FORTRAN
! MACHINE : CRAY C-90
!$$$
- use vrbls4d, only: dust
+ use vrbls4d, only: dust, smoke
use vrbls3d, only: t, u, uh, v, vh, wh, q, pmid, t, omga, pint, alpint, &
qqr, qqs, qqi, qqg, qqnw, qqni,qqnr, cwm, qqw, qqi, qqr, qqs, extcof55,&
f_ice, f_rain, f_rimef, q2, zint, zmid, cfr, cfr_raw, REF_10CM, &
- qqnwfa,qqnifa
+ qqnwfa,qqnifa,taod5503d,aextc55
use vrbls2d, only: tmax, qrmax, htop, hbot, cuppt, fis, cfrach, cfracl, &
sr, cfrach, cfracm, wspd10max, w_up_max, w_dn_max, w_mean, refd_max, &
- up_heli_max, up_heli_max16, grpl_max, up_heli, up_heli16, ltg1_max, &
+ up_heli_max, up_heli_max16, grpl_max, up_heli, up_heli16, &
+ up_heli_min,up_heli_min16,up_heli_max02,up_heli_min02, &
+ up_heli_max03,up_heli_min03,rel_vort_max,rel_vort_max01, &
+ wspd10umax,wspd10vmax,refdm10c_max,hail_max2d,hail_maxk1,ltg1_max, &
ltg2_max, ltg3_max, nci_ltg, nca_ltg, nci_wq, nca_wq, nci_refd, &
u10, v10, th10, q10, tshltr, mrshltr, &
nca_refd, qv2m, qshltr, smstav, smstot, ssroff, bgroff, sfcevp, &
sfcexc, vegfrc, acsnow, cmc, sst, thz0, qz0, uz0, vz0, qs, qvg, &
z0, ustar, akhs, akms, radot, ths, acsnom, cuprec, ancprc, acprec, &
rainc_bucket, pcp_bucket, cprate, prec, snownc, snow_bucket, &
- graup_bucket, swddni, swddif, acgraup, acfrain, &
+ graup_bucket, swddni, swddif, mean_frp, acgraup, acfrain, &
graupelnc, albedo, rswin, rswout, swdnbc, swddnic, &
swddifc, swupbc, swupt, czen, czmean, rlwin, lwdnbc, lwupbc, &
- rainnc_bucket, taod5502d, aerasy2d, aerssa2d, &
+ rainnc_bucket, taod5502d, aerasy2d, aerssa2d, lwp, iwp, &
sigt4, rlwtoa, rswinc, aswin, aswout, alwin, alwout, alwtoa, aswtoa, &
tg, soiltb, twbs, qwbs,grnflx, sfcshx, sfclhx, subshx, snopcx, &
sfcuvx, potevp, ncfrcv, ncfrst, sno, si, pctsno, snonc, tsnow, &
@@ -130,6 +133,7 @@ SUBROUTINE INITPOST
real sun_zenith,sun_azimuth, ptop_low, ptop_mid, ptop_high
real watericetotal, cloud_def_p, radius
real totcount, cloudcount
+ real delta_theta4gust
!
!
!***********************************************************************
@@ -1045,6 +1049,31 @@ SUBROUTINE INITPOST
ENDDO
ENDIF ! IF(MODELNAME == 'RAPR')THEN
+!
+! E. James - 8 Dec 2017: this is for HRRR-smoke; it needs to be after ZINT
+! is defined.
+!
+ if(imp_physics.eq.28) then
+ VarName='AOD3D_SMOKE'
+ call getVariable(fileName,DateStr,DataHandle,VarName,DUM3D, &
+ IM+1,1,JM+1,LM+1,IM, JS,JE,LM)
+ do l = 1, lm
+ do j = jsta_2l, jend_2u
+ do i = 1, im
+ taod5503d ( i, j, l ) = dum3d ( i, j, l )
+ dz = ZINT( i, j, l ) - ZINT( i, j, l+1 )
+ aextc55 ( i, j, l ) = taod5503d ( i, j, l ) / dz
+ if(i.eq.im/2.and.j.eq.(jsta+jend)/2)print*,'sample TAOD5503D= ', &
+ i,j,l,TAOD5503D ( i, j, l )
+ if(i.eq.im/2.and.j.eq.(jsta+jend)/2)print*,'sample dz= ', &
+ dz
+ if(i.eq.im/2.and.j.eq.(jsta+jend)/2)print*,'sample AEXTC55= ', &
+ i,j,l,AEXTC55 ( i, j, l )
+ end do
+ end do
+ end do
+ end if
+
! get 3-d soil variables
VarName='SMOIS'
call getVariable(fileName,DateStr,DataHandle,VarName,DUM3D, &
@@ -1221,6 +1250,33 @@ SUBROUTINE INITPOST
#endif
ENDIF ! NCAR or RAPR
+! GRAUP
+! E. James - 8 Dec 2017: SMOKE from WRF-CHEM
+!
+ VarName='smoke'
+ call getVariable(fileName,DateStr,DataHandle,VarName,DUM3D, &
+ IM+1,1,JM+1,LM+1,IM,JS,JE,LM)
+ do l = 1,lm
+ do j = jsta_2l, jend_2u
+ do i = 1, im
+ SMOKE ( i, j, l, 1) = dum3d ( i, j, l )
+ end do
+ end do
+ end do
+!!
+!! E. James - 8 Dec 2017: tracer_2a is anthropogenic aerosol, not used
+!!
+! VarName='tracer_2a'
+! call getVariable(fileName,DateStr,DataHandle,VarName,DUM3D, &
+! IM+1,1,JM+1,LM+1,IM,JS,JE,LM)
+! do l=1,lm
+! do j = jsta_2l, jend_2u
+! do i = 1, im
+! SMOKE ( i, j, l, 2) = dum3d ( i, j, l )
+! end do
+! end do
+! end do
+
! CRA DUST FROM WRF-CHEM
if(1==2) then
VarName='DUST_1'
@@ -1363,6 +1419,26 @@ SUBROUTINE INITPOST
end do
! print*,'WSPD10MAX at ',ii,jj,' = ',WSPD10MAX(ii,jj)
+ VarName='WSPD10UMAX'
+ call getVariable(fileName,DateStr,DataHandle,VarName,DUMMY, &
+ IM,1,JM,1,IM,JS,JE,1)
+ do j = jsta_2l, jend_2u
+ do i = 1, im
+ WSPD10UMAX ( i, j ) = dummy ( i, j )
+ end do
+ end do
+! print*,'WSPD10UMAX at ',ii,jj,' = ',WSPD10UMAX(ii,jj)
+
+ VarName='WSPD10VMAX'
+ call getVariable(fileName,DateStr,DataHandle,VarName,DUMMY, &
+ IM,1,JM,1,IM,JS,JE,1)
+ do j = jsta_2l, jend_2u
+ do i = 1, im
+ WSPD10VMAX ( i, j ) = dummy ( i, j )
+ end do
+ end do
+! print*,'WSPD10VMAX at ',ii,jj,' = ',WSPD10VMAX(ii,jj)
+
VarName='W_UP_MAX'
call getVariable(fileName,DateStr,DataHandle,VarName,DUMMY, &
IM,1,JM,1,IM,JS,JE,1)
@@ -1404,6 +1480,17 @@ SUBROUTINE INITPOST
end do
! print*,'REFD_MAX at ',ii,jj,' = ',REFD_MAX(ii,jj)
+ VarName='REFDM10C_MAX'
+ call getVariable(fileName,DateStr,DataHandle,VarName,DUMMY, &
+ IM,1,JM,1,IM,JS,JE,1)
+ do j = jsta_2l, jend_2u
+ do i = 1, im
+ REFDM10C_MAX ( i, j ) = dummy ( i, j )
+ end do
+ end do
+! print*,'REFDM10C_MAX at ',ii,jj,' = ',REFDM10C_MAX(ii,jj)
+
+
VarName='UP_HELI_MAX'
call getVariable(fileName,DateStr,DataHandle,VarName,DUMMY, &
IM,1,JM,1,IM,JS,JE,1)
@@ -1424,6 +1511,86 @@ SUBROUTINE INITPOST
end do
! print*,'UP_HELI_MAX16 at ',ii,jj,' = ',UP_HELI_MAX16(ii,jj)
+ VarName='UP_HELI_MIN'
+ call getVariable(fileName,DateStr,DataHandle,VarName,DUMMY, &
+ IM,1,JM,1,IM,JS,JE,1)
+ do j = jsta_2l, jend_2u
+ do i = 1, im
+ UP_HELI_MIN ( i, j ) = dummy ( i, j )
+ end do
+ end do
+! print*,'UP_HELI_MIN at ',ii,jj,' = ',UP_HELI_MIN(ii,jj)
+
+ VarName='UP_HELI_MIN16'
+ call getVariable(fileName,DateStr,DataHandle,VarName,DUMMY, &
+ IM,1,JM,1,IM,JS,JE,1)
+ do j = jsta_2l, jend_2u
+ do i = 1, im
+ UP_HELI_MIN16 ( i, j ) = dummy ( i, j )
+ end do
+ end do
+! print*,'UP_HELI_MIN16 at ',ii,jj,' = ',UP_HELI_MIN16(ii,jj)
+
+ VarName='UP_HELI_MAX02'
+ call getVariable(fileName,DateStr,DataHandle,VarName,DUMMY, &
+ IM,1,JM,1,IM,JS,JE,1)
+ do j = jsta_2l, jend_2u
+ do i = 1, im
+ UP_HELI_MAX02 ( i, j ) = dummy ( i, j )
+ end do
+ end do
+! print*,'UP_HELI_MAX02 at ',ii,jj,' = ',UP_HELI_MAX02(ii,jj)
+
+ VarName='UP_HELI_MIN02'
+ call getVariable(fileName,DateStr,DataHandle,VarName,DUMMY, &
+ IM,1,JM,1,IM,JS,JE,1)
+ do j = jsta_2l, jend_2u
+ do i = 1, im
+ UP_HELI_MIN02 ( i, j ) = dummy ( i, j )
+ end do
+ end do
+! print*,'UP_HELI_MIN02 at ',ii,jj,' = ',UP_HELI_MIN02(ii,jj)
+
+ VarName='UP_HELI_MAX03'
+ call getVariable(fileName,DateStr,DataHandle,VarName,DUMMY, &
+ IM,1,JM,1,IM,JS,JE,1)
+ do j = jsta_2l, jend_2u
+ do i = 1, im
+ UP_HELI_MAX03 ( i, j ) = dummy ( i, j )
+ end do
+ end do
+! print*,'UP_HELI_MAX03 at ',ii,jj,' = ',UP_HELI_MAX03(ii,jj)
+
+ VarName='UP_HELI_MIN03'
+ call getVariable(fileName,DateStr,DataHandle,VarName,DUMMY, &
+ IM,1,JM,1,IM,JS,JE,1)
+ do j = jsta_2l, jend_2u
+ do i = 1, im
+ UP_HELI_MIN03 ( i, j ) = dummy ( i, j )
+ end do
+ end do
+! print*,'UP_HELI_MIN03 at ',ii,jj,' = ',UP_HELI_MIN03(ii,jj)
+
+ VarName='REL_VORT_MAX'
+ call getVariable(fileName,DateStr,DataHandle,VarName,DUMMY, &
+ IM,1,JM,1,IM,JS,JE,1)
+ do j = jsta_2l, jend_2u
+ do i = 1, im
+ REL_VORT_MAX ( i, j ) = dummy ( i, j )
+ end do
+ end do
+! print*,'REL_VORT_MAX at ',ii,jj,' = ',REL_VORT_MAX(ii,jj)
+
+ VarName='REL_VORT_MAX01'
+ call getVariable(fileName,DateStr,DataHandle,VarName,DUMMY, &
+ IM,1,JM,1,IM,JS,JE,1)
+ do j = jsta_2l, jend_2u
+ do i = 1, im
+ REL_VORT_MAX01 ( i, j ) = dummy ( i, j )
+ end do
+ end do
+! print*,'REL_VORT_MAX01 at ',ii,jj,' = ',REL_VORT_MAX01(ii,jj)
+
VarName='GRPL_MAX'
call getVariable(fileName,DateStr,DataHandle,VarName,DUMMY, &
IM,1,JM,1,IM,JS,JE,1)
@@ -1434,6 +1601,27 @@ SUBROUTINE INITPOST
end do
! print*,'GRPL_MAX at ',ii,jj,' = ',GRPL_MAX(ii,jj)
+
+ VarName='HAIL_MAXK1'
+ call getVariable(fileName,DateStr,DataHandle,VarName,DUMMY, &
+ IM,1,JM,1,IM,JS,JE,1)
+ do j = jsta_2l, jend_2u
+ do i = 1, im
+ HAIL_MAXK1 ( i, j ) = dummy ( i, j )
+ end do
+ end do
+! print*,'HAIL_MAXK1 at ',ii,jj,' = ',HAIL_MAXK1(ii,jj)
+
+ VarName='HAIL_MAX2D'
+ call getVariable(fileName,DateStr,DataHandle,VarName,DUMMY, &
+ IM,1,JM,1,IM,JS,JE,1)
+ do j = jsta_2l, jend_2u
+ do i = 1, im
+ HAIL_MAX2D ( i, j ) = dummy ( i, j )
+ end do
+ end do
+! print*,'HAIL_MAX2D at ',ii,jj,' = ',HAIL_MAX2D(ii,jj)
+
VarName='UH'
call getVariable(fileName,DateStr,DataHandle,VarName,DUMMY, &
IM,1,JM,1,IM,JS,JE,1)
@@ -2169,6 +2357,19 @@ SUBROUTINE INITPOST
end do
end do
+!
+! E. James - 8 Dec 2017: Fire Radiative Power from HRRR-smoke
+!
+ VarName='MEAN_FRP'
+! Mean fire radiative power
+ call getVariable(fileName,DateStr,DataHandle,VarName,DUMMY, &
+ IM,1,JM,1,IM,JS,JE,1)
+ do j = jsta_2l, jend_2u
+ do i = 1, im
+ MEAN_FRP ( i, j ) = dummy ( i, j )
+ end do
+ end do
+
VarName='TAOD5502D'
! Total aerosol optical depth
call getVariable(fileName,DateStr,DataHandle,VarName,DUMMY, &
@@ -2199,6 +2400,26 @@ SUBROUTINE INITPOST
end do
end do
+ VarName='LWP'
+! Liquid water path
+ call getVariable(fileName,DateStr,DataHandle,VarName,DUMMY, &
+ IM,1,JM,1,IM,JS,JE,1)
+ do j = jsta_2l, jend_2u
+ do i = 1, im
+ LWP ( i, j ) = dummy ( i, j )
+ end do
+ end do
+
+ VarName='IWP'
+! Ice water path
+ call getVariable(fileName,DateStr,DataHandle,VarName,DUMMY, &
+ IM,1,JM,1,IM,JS,JE,1)
+ do j = jsta_2l, jend_2u
+ do i = 1, im
+ IWP ( i, j ) = dummy ( i, j )
+ end do
+ end do
+
! time_averaged SWDOWN
VarName='SWRADMEAN'
call getVariable(fileName,DateStr,DataHandle,VarName,DUMMY, &
@@ -2504,22 +2725,23 @@ SUBROUTINE INITPOST
end do
IF(MODELNAME .EQ. 'RAPR')THEN
! PBL depth from GSD
+ delta_theta4gust=0.5
do j = jsta_2l, jend_2u
do i = 1, im
!! Is there any mixed layer at all?
- if (thv(i,j,lm-1) .lt. thv(i,j,lm)) then
+ if (thv(i,j,lm-1) .lt. (thv(i,j,lm) + delta_theta4gust)) then
ZSF=ZINT(I,J,NINT(LMH(I,J))+1)
!! Calculate k1 level as first above PBL top
do 34 k=3,LM
k1 = k
!! - give theta-v at the sfc a 0.5K boost in
!! the PBL height definition
- if (thv(i,j,lm-k+1).gt.thv(i,j,lm) &
- +0.5) go to 341
+ if (thv(i,j,lm-k+1).gt.(thv(i,j,lm) + delta_theta4gust)) &
+ go to 341
34 continue
341 continue
zpbltop = zmid(i,j,lm-k1+1) + &
- (thv(i,j,lm)+0.5-thv(i,j,lm-k1+1)) &
+ ((thv(i,j,lm)+delta_theta4gust)-thv(i,j,lm-k1+1)) &
* (zmid(i,j,lm-k1+2)-zmid(i,j,lm-k1+1)) &
/ (thv(i,j,lm-k1+2) - thv(i,j,lm-k1+1))
PBLHGUST ( i, j ) = zpbltop - zsf
diff --git a/comupp/src/unipost/INITPOST_GFS_NEMS_MPIIO.f b/comupp/src/unipost/INITPOST_GFS_NEMS_MPIIO.f
index fa83bcd70..29ab5f09b 100644
--- a/comupp/src/unipost/INITPOST_GFS_NEMS_MPIIO.f
+++ b/comupp/src/unipost/INITPOST_GFS_NEMS_MPIIO.f
@@ -22,6 +22,7 @@ SUBROUTINE INITPOST_GFS_NEMS_MPIIO(iostatusAER)
! 2016-07-21 S. Moorthi Convert input upper air data from reduced to full grid
! and reduce memory in divergence calculatiom
! 2016-07-21 Jun Wang change averaged field name with suffix
+! 2019-07-24 Li(Kate) Zhang - Merge and update NGAC UPP into FV3-Chem
!
! USAGE: CALL INIT
! INPUT ARGUMENT LIST:
@@ -46,14 +47,15 @@ SUBROUTINE INITPOST_GFS_NEMS_MPIIO(iostatusAER)
! LANGUAGE: FORTRAN
! MACHINE : CRAY C-90
!$$$
- use vrbls4d, only: dust, SALT, SUSO, SOOT, WASO
+ use vrbls4d, only: dust, SALT, SUSO, SOOT, WASO, PP25, PP10
use vrbls3d, only: t, q, uh, vh,wh,pmid,pint,alpint, dpres,zint,zmid,o3, &
qqr, qqs, cwm, qqi, qqw, omga, rhomid, q2, cfr, rlwtt, rswtt, tcucn, &
tcucns, train, el_pbl, exch_h, vdifftt, vdiffmois, dconvmois, nradtt, &
o3vdiff, o3prod, o3tndy, mwpv, qqg, vdiffzacce, zgdrag,cnvctummixing, &
vdiffmacce, mgdrag, cnvctvmmixing, ncnvctcfrac, cnvctumflx, cnvctdmflx, &
cnvctzgdrag, sconvmois, cnvctmgdrag, cnvctdetmflx, duwt, duem, dusd, dudp, &
- ref_10cm
+ dusv,ssem,sssd,ssdp,sswt,sssv,bcem,bcsd,bcdp,bcwt,bcsv,ocem,ocsd,ocdp, &
+ ocwt,ocsv, ref_10cm
use vrbls2d, only: f, pd, fis, pblh, ustar, z0, ths, qs, twbs, qwbs, avgcprate, &
cprate, avgprec, prec, lspa, sno, si, cldefi, th10, q10, tshltr, pshltr, &
tshltr, albase, avgalbedo, avgtcdc, czen, czmean, mxsnal, radot, sigt4, &
@@ -70,7 +72,8 @@ SUBROUTINE INITPOST_GFS_NEMS_MPIIO(iostatusAER)
maxqshltr, minqshltr, acond, sr, u10h, v10h, &
avgedir,avgecan,avgetrans,avgesnow,avgprec_cont,avgcprate_cont, &
avisbeamswin,avisdiffswin,airbeamswin,airdiffswin, &
- alwoutc,alwtoac,aswoutc,aswtoac,alwinc,aswinc,avgpotevp,snoavg
+ alwoutc,alwtoac,aswoutc,aswtoac,alwinc,aswinc,avgpotevp,snoavg, &
+ dustcb,bccb,occb,sulfcb,sscb,dustallcb,ssallcb,dustpm,sspm,pp25cb,pp10cb
use soil, only: sldpth, sh2o, smc, stc
use masks, only: lmv, lmh, htm, vtm, gdlat, gdlon, dx, dy, hbm2, sm, sice
! use kinds, only: i_llong
@@ -926,13 +929,14 @@ SUBROUTINE INITPOST_GFS_NEMS_MPIIO(iostatusAER)
call getrecn(recname,reclevtyp,reclev,nrec,varname,VcoordName,l,recn)
if(recn /= 0) then
fldst = (recn-1)*fldsize
+! make sure delz is positive.
!$omp parallel do private(i,j,js)
do j=jsta,jend
js = fldst + (j-jsta)*im
do i=1,im
- zint(i,j,ll)=zint(i,j,ll+1)+tmp(i+js)
+ zint(i,j,ll)=zint(i,j,ll+1)+abs(tmp(i+js))
if(recn_dpres /= -9999)pmid(i,j,ll)=rgas*dpres(i,j,ll)* &
- t(i,j,ll)*(q(i,j,ll)*fv+1.0)/grav/tmp(i+js)
+ t(i,j,ll)*(q(i,j,ll)*fv+1.0)/grav/abs(tmp(i+js))
enddo
enddo
if(debugprint)print*,'sample l ',VarName,' = ',ll, &
@@ -942,7 +946,7 @@ SUBROUTINE INITPOST_GFS_NEMS_MPIIO(iostatusAER)
do j=jsta,jend
js = fldst + (j-jsta)*im
do i=1,im
- omga(i,j,ll)=(-1.)*wh(i,j,ll)*dpres(i,j,ll)/tmp(i+js)
+ omga(i,j,ll)=(-1.)*wh(i,j,ll)*dpres(i,j,ll)/abs(tmp(i+js))
end do
end do
if(debugprint)print*,'sample l omga for FV3',ll, &
@@ -1093,7 +1097,7 @@ SUBROUTINE INITPOST_GFS_NEMS_MPIIO(iostatusAER)
end do
end do
- do l=2,lm
+ do l=2,lp1
do j=jsta,jend
do i=1,im
pint(i,j,l) = pint(i,j,l-1) + dpres(i,j,l-1)
@@ -1335,9 +1339,12 @@ SUBROUTINE INITPOST_GFS_NEMS_MPIIO(iostatusAER)
! deallocate(wrk1,wrk2)
+ print *, 'gocart_on2=',gocart_on
if (gocart_on) then
! GFS output dust in nemsio (GOCART)
+ dustcb=0.0
+ dustallcb=0.0
do n=1,nbin_du
do l=1,lm
!$omp parallel do private(i,j)
@@ -1349,7 +1356,8 @@ SUBROUTINE INITPOST_GFS_NEMS_MPIIO(iostatusAER)
enddo
enddo
! DUST = SPVAL
- VarName='du001'
+ !VarName='du001'
+ VarName='dust1'
VcoordName='mid layer'
do l=1,lm
ll=lm-l+1
@@ -1361,7 +1369,8 @@ SUBROUTINE INITPOST_GFS_NEMS_MPIIO(iostatusAER)
! if(debugprint)print*,'sample l ',VarName,' = ',ll,dust(isa,jsa,ll,1)
end do ! do loop for l
- VarName='du002'
+ !VarName='du002'
+ VarName='dust2'
VcoordName='mid layer'
do l=1,lm
ll=lm-l+1
@@ -1370,10 +1379,15 @@ SUBROUTINE INITPOST_GFS_NEMS_MPIIO(iostatusAER)
,recname,reclevtyp,reclev,VarName,VcoordName &
,dust(1:im,jsta_2l:jend_2u,ll,2))
+ dustcb(1:im,jsta_2l:jend_2u)=dustcb(1:im,jsta_2l:jend_2u)+ &
+ (dust(1:im,jsta_2l:jend_2u,ll,1)+0.38*dust(1:im,jsta_2l:jend_2u,ll,2))* &
+ dpres(1:im,jsta_2l:jend_2u,ll)/grav
+
! if(debugprint)print*,'sample l ',VarName,' = ',ll,dust(isa,jsa,ll,2)
end do ! do loop for l
- VarName='du003'
+ !VarName='du003'
+ VarName='dust3'
VcoordName='mid layer'
do l=1,lm
ll=lm-l+1
@@ -1384,7 +1398,8 @@ SUBROUTINE INITPOST_GFS_NEMS_MPIIO(iostatusAER)
! if(debugprint)print*,'sample l ',VarName,' = ',ll,dust(isa,jsa,ll,3)
end do ! do loop for l
- VarName='du004'
+ !VarName='du004'
+ VarName='dust4'
VcoordName='mid layer'
do l=1,lm
ll=lm-l+1
@@ -1396,7 +1411,8 @@ SUBROUTINE INITPOST_GFS_NEMS_MPIIO(iostatusAER)
! if(debugprint)print*,'sample l ',VarName,' = ',ll,dust(isa,jsa,ll,4)
end do ! do loop for l
- VarName='du005'
+ !VarName='du005'
+ VarName='dust5'
VcoordName='mid layer'
do l=1,lm
ll=lm-l+1
@@ -1405,10 +1421,17 @@ SUBROUTINE INITPOST_GFS_NEMS_MPIIO(iostatusAER)
,recname,reclevtyp,reclev,VarName,VcoordName &
,dust(1:im,jsta_2l:jend_2u,ll,5))
+ dustallcb(1:im,jsta_2l:jend_2u)=dustallcb(1:im,jsta_2l:jend_2u)+ &
+ (dust(1:im,jsta_2l:jend_2u,ll,1)+dust(1:im,jsta_2l:jend_2u,ll,2)+ &
+ dust(1:im,jsta_2l:jend_2u,ll,3)+0.67*dust(1:im,jsta_2l:jend_2u,ll,4))* &
+ dpres(1:im,jsta_2l:jend_2u,ll)/grav
+
! if(debugprint)print*,'sample l ',VarName,' = ',ll,dust(isa,jsa,ll,5)
end do ! do loop for l
!
! GFS output sea salt in nemsio (GOCART)
+ sscb=0.0
+ ssallcb=0.0
do n=1,nbin_ss
do l=1,lm
!$omp parallel do private(i,j)
@@ -1420,7 +1443,8 @@ SUBROUTINE INITPOST_GFS_NEMS_MPIIO(iostatusAER)
enddo
enddo
! SALT = SPVAL
- VarName='ss001'
+ !VarName='ss001'
+ VarName='seas1'
VcoordName='mid layer'
do l=1,lm
ll=lm-l+1
@@ -1432,7 +1456,8 @@ SUBROUTINE INITPOST_GFS_NEMS_MPIIO(iostatusAER)
! if(debugprint)print*,'sample l ',VarName,' = ',ll,salt(isa,jsa,ll,1)
end do ! do loop for l
- VarName='ss002'
+ !VarName='ss002'
+ VarName='seas2'
VcoordName='mid layer'
do l=1,lm
ll=lm-l+1
@@ -1444,7 +1469,8 @@ SUBROUTINE INITPOST_GFS_NEMS_MPIIO(iostatusAER)
! if(debugprint)print*,'sample l ',VarName,' = ',ll,salt(isa,jsa,ll,2)
end do ! do loop for l
- VarName='ss003'
+ !VarName='ss003'
+ VarName='seas3'
VcoordName='mid layer'
do l=1,lm
ll=lm-l+1
@@ -1452,11 +1478,16 @@ SUBROUTINE INITPOST_GFS_NEMS_MPIIO(iostatusAER)
,l,nrec,fldsize,spval,tmp &
,recname,reclevtyp,reclev,VarName,VcoordName &
,salt(1:im,jsta_2l:jend_2u,ll,3))
+
+ sscb(1:im,jsta_2l:jend_2u)=sscb(1:im,jsta_2l:jend_2u)+ &
+ (salt(1:im,jsta_2l:jend_2u,ll,2)+0.75*salt(1:im,jsta_2l:jend_2u,ll,3))* &
+ dpres(1:im,jsta_2l:jend_2u,ll)/grav
! if(debugprint)print*,'sample l ',VarName,' = ',ll,salt(isa,jsa,ll,3)
end do ! do loop for l
- VarName='ss004'
+ !VarName='ss004'
+ VarName='seas4'
VcoordName='mid layer'
do l=1,lm
ll=lm-l+1
@@ -1467,7 +1498,8 @@ SUBROUTINE INITPOST_GFS_NEMS_MPIIO(iostatusAER)
! if(debugprint)print*,'sample l ',VarName,' = ',ll,salt(isa,jsa,ll,4)
end do ! do loop for l
- VarName='ss005'
+ !VarName='ss005'
+ VarName='seas5'
VcoordName='mid layer'
do l=1,lm
ll=lm-l+1
@@ -1475,11 +1507,19 @@ SUBROUTINE INITPOST_GFS_NEMS_MPIIO(iostatusAER)
,l,nrec,fldsize,spval,tmp &
,recname,reclevtyp,reclev,VarName,VcoordName &
,salt(1:im,jsta_2l:jend_2u,ll,5))
+
+ ssallcb(1:im,jsta_2l:jend_2u)=ssallcb(1:im,jsta_2l:jend_2u)+ &
+ (salt(1:im,jsta_2l:jend_2u,ll,1)+salt(1:im,jsta_2l:jend_2u,ll,2)+ &
+ salt(1:im,jsta_2l:jend_2u,ll,3)+ &
+ salt(1:im,jsta_2l:jend_2u,ll,4)*0.83)* &
+ dpres(1:im,jsta_2l:jend_2u,ll)/grav
+
! if(debugprint)print*,'sample l ',VarName,' = ',ll,salt(isa,jsa,ll,5)
end do ! do loop for l
! GFS output black carbon in nemsio (GOCART)
- do n=1,nbin_oc
+ bccb=0.0
+ do n=1,nbin_bc
do l=1,lm
!$omp parallel do private(i,j)
do j=jsta_2l,jend_2u
@@ -1490,7 +1530,8 @@ SUBROUTINE INITPOST_GFS_NEMS_MPIIO(iostatusAER)
enddo
enddo
! SOOT = SPVAL
- VarName='bcphobic'
+ !VarName='bcphobic'
+ VarName='bc1'
VcoordName='mid layer'
do l=1,lm
ll=lm-l+1
@@ -1502,7 +1543,8 @@ SUBROUTINE INITPOST_GFS_NEMS_MPIIO(iostatusAER)
! if(debugprint)print*,'sample l ',VarName,' = ',ll,soot(isa,jsa,ll,1)
end do ! do loop for l
- VarName='bcphilic'
+ !VarName='bcphilic'
+ VarName='bc2'
VcoordName='mid layer'
do l=1,lm
ll=lm-l+1
@@ -1511,9 +1553,14 @@ SUBROUTINE INITPOST_GFS_NEMS_MPIIO(iostatusAER)
,recname,reclevtyp,reclev,VarName,VcoordName &
,soot(1:im,jsta_2l:jend_2u,ll,2))
+ bccb(1:im,jsta_2l:jend_2u)=bccb(1:im,jsta_2l:jend_2u)+ &
+ (soot(1:im,jsta_2l:jend_2u,ll,1)+soot(1:im,jsta_2l:jend_2u,ll,2))* &
+ dpres(1:im,jsta_2l:jend_2u,ll)/grav
+
! if(debugprint)print*,'sample l ',VarName,' = ',ll,soot(isa,jsa,ll,2)
end do ! do loop for l
+ occb=0.0
! GFS output organic carbon in nemsio (GOCART)
do n=1,nbin_oc
do l=1,lm
@@ -1526,7 +1573,8 @@ SUBROUTINE INITPOST_GFS_NEMS_MPIIO(iostatusAER)
enddo
enddo
! WASO = SPVAL
- VarName='ocphobic'
+ !VarName='ocphobic'
+ VarName='oc1'
VcoordName='mid layer'
do l=1,lm
ll=lm-l+1
@@ -1538,7 +1586,8 @@ SUBROUTINE INITPOST_GFS_NEMS_MPIIO(iostatusAER)
! if(debugprint)print*,'sample l ',VarName,' = ',ll,waso(isa,jsa,ll,1)
end do ! do loop for l
- VarName='ocphilic'
+ !VarName='ocphilic'
+ VarName='oc2'
VcoordName='mid layer'
do l=1,lm
ll=lm-l+1
@@ -1547,10 +1596,15 @@ SUBROUTINE INITPOST_GFS_NEMS_MPIIO(iostatusAER)
,recname,reclevtyp,reclev,VarName,VcoordName &
,waso(1:im,jsta_2l:jend_2u,ll,2))
+ occb(1:im,jsta_2l:jend_2u)=occb(1:im,jsta_2l:jend_2u)+ &
+ (waso(1:im,jsta_2l:jend_2u,ll,1)+waso(1:im,jsta_2l:jend_2u,ll,2)) * &
+ dpres(1:im,jsta_2l:jend_2u,ll)/grav
+
! if(debugprint)print*,'sample l ',VarName,' = ',ll,waso(isa,jsa,ll,2)
end do ! do loop for l
! GFS output sulfate in nemsio (GOCART)
+ sulfcb=0.0
do n=1,nbin_su
do l=1,lm
!$omp parallel do private(i,j)
@@ -1562,7 +1616,8 @@ SUBROUTINE INITPOST_GFS_NEMS_MPIIO(iostatusAER)
enddo
enddo
! SUSO = SPVAL
- VarName='so4'
+ !VarName='so4'
+ VarName='sulf'
VcoordName='mid layer'
do l=1,lm
ll=lm-l+1
@@ -1571,9 +1626,69 @@ SUBROUTINE INITPOST_GFS_NEMS_MPIIO(iostatusAER)
,recname,reclevtyp,reclev,VarName,VcoordName &
,suso(1:im,jsta_2l:jend_2u,ll,1))
+ sulfcb(1:im,jsta_2l:jend_2u)=sulfcb(1:im,jsta_2l:jend_2u)+ &
+ suso(1:im,jsta_2l:jend_2u,ll,1)* &
+ dpres(1:im,jsta_2l:jend_2u,ll)/grav
+
! if(debugprint)print*,'sample l ',VarName,' = ',ll,suso(isa,jsa,ll,1)
end do ! do loop for l
+! GFS output pp25 in nemsio (GOCART)
+ pp25cb=0.0
+ do n=1,nbin_su
+ do l=1,lm
+!$omp parallel do private(i,j)
+ do j=jsta_2l,jend_2u
+ do i=1,im
+ pp25(i,j,l,n) = spval
+ enddo
+ enddo
+ enddo
+ enddo
+! PP25 = SPVAL
+ !VarName='so4'
+ VarName='pp25'
+ VcoordName='mid layer'
+ do l=1,lm
+ ll=lm-l+1
+ call assignnemsiovar(im,jsta,jend,jsta_2l,jend_2u &
+ ,l,nrec,fldsize,spval,tmp &
+ ,recname,reclevtyp,reclev,VarName,VcoordName &
+ ,pp25(1:im,jsta_2l:jend_2u,ll,1))
+ pp25cb(1:im,jsta_2l:jend_2u)=pp25cb(1:im,jsta_2l:jend_2u)+ &
+ pp25(1:im,jsta_2l:jend_2u,ll,1)* &
+ dpres(1:im,jsta_2l:jend_2u,ll)/grav
+! if(debugprint)print*,'sample l ',VarName,' =
+! ',ll,suso(isa,jsa,ll,1)
+ end do ! do loop for l
+! GFS output pp10 in nemsio (GOCART)
+ pp10cb=0.0
+ do n=1,nbin_su
+ do l=1,lm
+!$omp parallel do private(i,j)
+ do j=jsta_2l,jend_2u
+ do i=1,im
+ pp10(i,j,l,n) = spval
+ enddo
+ enddo
+ enddo
+ enddo
+! PP10 = SPVAL
+ !VarName='so4'
+ VarName='pp10'
+ VcoordName='mid layer'
+ do l=1,lm
+ ll=lm-l+1
+ call assignnemsiovar(im,jsta,jend,jsta_2l,jend_2u &
+ ,l,nrec,fldsize,spval,tmp &
+ ,recname,reclevtyp,reclev,VarName,VcoordName &
+ ,pp10(1:im,jsta_2l:jend_2u,ll,1))
+ pp10cb(1:im,jsta_2l:jend_2u)=pp10cb(1:im,jsta_2l:jend_2u)+ &
+ pp10(1:im,jsta_2l:jend_2u,ll,1)* &
+ dpres(1:im,jsta_2l:jend_2u,ll)/grav
+! if(debugprint)print*,'sample l ',VarName,' =
+! ',ll,suso(isa,jsa,ll,1)
+ end do ! do loop for l
! -- compute air density RHOMID and remove negative tracer values
do l=1,lm
@@ -1612,6 +1727,43 @@ SUBROUTINE INITPOST_GFS_NEMS_MPIIO(iostatusAER)
end do
end do
end do
+ l=lm
+!$omp parallel do private(i,j)
+ do j=jsta,jend
+ do i=1,im
+ dustcb(i,j) = MAX(dustcb(i,j), 0.0)
+ dustallcb(i,j) = MAX(dustallcb(i,j), 0.0)
+ sscb(i,j) = MAX(sscb(i,j), 0.0)
+ ssallcb(i,j) = MAX(ssallcb(i,j), 0.0)
+ bccb(i,j) = MAX(bccb(i,j), 0.0)
+ occb(i,j) = MAX(occb(i,j), 0.0)
+ sulfcb(i,j) = MAX(sulfcb(i,j), 0.0)
+ pp25cb(i,j) = MAX(sulfcb(i,j), 0.0)
+ pp10cb(i,j) = MAX(sulfcb(i,j), 0.0)
+! PM10 concentration
+ dusmass(i,j)=(dust(i,j,l,1)+dust(i,j,l,2)+dust(i,j,l,3)+ &
+ 0.74*dust(i,j,l,4)+salt(i,j,l,1)+salt(i,j,l,2)+salt(i,j,l,3)+ &
+ salt(i,j,l,4) + &
+ salt(i,j,l,5)+soot(i,j,l,1)+soot(i,j,l,2)+waso(i,j,l,1)+ &
+ waso(i,j,l,2) +suso(i,j,l,1)+pp25(i,j,l,1)+pp10(i,j,l,1)) &
+ *RHOMID(i,j,l) !ug/m3
+! PM25 dust and seasalt
+ dustpm(i,j)=(dust(i,j,l,1)+0.38*dust(i,j,l,2))*RHOMID(i,j,l) !ug/m3
+ sspm(i,j)=(salt(i,j,l,1)+salt(i,j,l,2)+ &
+ 0.83*salt(i,j,l,3))*RHOMID(i,j,l) !ug/m3
+! PM25 concentration
+ dusmass25(i,j)=(dust(i,j,l,1)+0.38*dust(i,j,l,2)+ &
+ salt(i,j,l,1)+salt(i,j,l,2)+0.83*salt(i,j,l,3) + &
+ soot(i,j,l,1)+soot(i,j,l,2)+waso(i,j,l,1)+ &
+ waso(i,j,l,2) +suso(i,j,l,1)+pp25(i,j,l,1))*RHOMID(i,j,l) !ug/m3
+! PM10 column
+ ducmass(i,j)=dustallcb(i,j)+ssallcb(i,j)+bccb(i,j)+ &
+ occb(i,j)+sulfcb(i,j)+pp25cb(i,j)+pp10cb(i,j)
+! PM25 column
+ ducmass25(i,j)=dustcb(i,j)+sscb(i,j)+bccb(i,j)+occb(i,j) &
+ +sulfcb(i,j)+pp25cb(i,j)
+ end do
+ end do
endif ! endif for gocart_on
!
! done with sigma file, close it for now
@@ -1828,6 +1980,12 @@ SUBROUTINE INITPOST_GFS_NEMS_MPIIO(iostatusAER)
QS(i,j) = SPVAL ! GFS does not have surface specific humidity
twbs(i,j) = SPVAL ! GFS does not have inst sensible heat flux
qwbs(i,j) = SPVAL ! GFS does not have inst latent heat flux
+!assign sst
+ if (sm(i,j) /= 0.0) then
+ sst(i,j) = ths(i,j) * (pint(i,j,lp1)/p1000)**capa
+ else
+ sst(i,j) = spval
+ endif
enddo
enddo
! if(debugprint)print*,'sample ',VarName,' = ',ths(isa,jsa)
@@ -1945,8 +2103,11 @@ SUBROUTINE INITPOST_GFS_NEMS_MPIIO(iostatusAER)
!$omp parallel do private(i,j)
do j=jsta,jend
do i=1,im
- if (cprate(i,j) /= spval) cprate(i,j) = max(0.,cprate(i,j)) * (dtq2*0.001) &
- * 1000. / dtp
+ if (cprate(i,j) /= spval) then
+ cprate(i,j) = max(0.,cprate(i,j)) * (dtq2*0.001) * 1000. / dtp
+ else
+ cprate(i,j) = 0.
+ endif
enddo
enddo
if(debugprint)print*,'sample ',VarName,' = ',cprate(isa,jsa)
@@ -1962,6 +2123,13 @@ SUBROUTINE INITPOST_GFS_NEMS_MPIIO(iostatusAER)
,l,nrec,fldsize,spval,tmp &
,recname,reclevtyp,reclev,VarName,VcoordName &
,sno)
+! mask water areas
+!$omp parallel do private(i,j)
+ do j=jsta,jend
+ do i=1,im
+ if (sm(i,j) == 1.0 .and. sice(i,j)==0.) sno(i,j) = spval
+ enddo
+ enddo
! if(debugprint)print*,'sample ',VarName,' = ',sno(isa,jsa)
! ave snow cover
@@ -1975,6 +2143,7 @@ SUBROUTINE INITPOST_GFS_NEMS_MPIIO(iostatusAER)
! snow cover is multipled by 100 in SURFCE before writing it out
do j=jsta,jend
do i=1,im
+ if (sm(i,j)==1.0 .and. sice(i,j)==0.) snoavg(i,j)=spval
if(snoavg(i,j)/=spval)snoavg(i,j)=snoavg(i,j)/100.
end do
end do
@@ -1991,6 +2160,7 @@ SUBROUTINE INITPOST_GFS_NEMS_MPIIO(iostatusAER)
!$omp parallel do private(i,j)
do j=jsta,jend
do i=1,im
+ if (sm(i,j)==1.0 .and. sice(i,j)==0.) si(i,j)=spval
if (si(i,j) /= spval) si(i,j) = si(i,j) * 1000.0
CLDEFI(i,j) = SPVAL ! GFS does not have convective cloud efficiency
lspa(i,j) = spval ! GFS does not have similated precip
@@ -2224,6 +2394,7 @@ SUBROUTINE INITPOST_GFS_NEMS_MPIIO(iostatusAER)
do j=jsta,jend
do i=1,im
if (cmc(i,j) /= spval) cmc(i,j) = cmc(i,j) * 0.001
+ if (sm(i,j) /= 0.0) cmc(i,j) = spval
enddo
enddo
! if(debugprint)print*,'sample ',VarName,' = ',cmc(isa,jsa)
@@ -2263,6 +2434,13 @@ SUBROUTINE INITPOST_GFS_NEMS_MPIIO(iostatusAER)
endif
enddo
enddo
+! mask water areas
+!$omp parallel do private(i,j)
+ do j=jsta,jend
+ do i=1,im
+ if (sm(i,j) /= 0.0) vegfrc(i,j) = spval
+ enddo
+ enddo
! if(debugprint)print*,'sample ',VarName,' = ',vegfrc(isa,jsa)
! GFS doesn not yet output soil layer thickness, assign SLDPTH to be the same as nam
@@ -2280,7 +2458,13 @@ SUBROUTINE INITPOST_GFS_NEMS_MPIIO(iostatusAER)
,l,nrec,fldsize,spval,tmp &
,recname,reclevtyp,reclev,VarName,VcoordName &
,sh2o(1,jsta_2l,1))
-
+! mask water areas
+!$omp parallel do private(i,j)
+ do j=jsta,jend
+ do i=1,im
+ if (sm(i,j) /= 0.0) sh2o(i,j,1) = spval
+ enddo
+ enddo
! if(debugprint)print*,'sample l',VarName,' = ',1,sh2o(isa,jsa,1)
VarName='soill'
@@ -2290,6 +2474,13 @@ SUBROUTINE INITPOST_GFS_NEMS_MPIIO(iostatusAER)
,l,nrec,fldsize,spval,tmp &
,recname,reclevtyp,reclev,VarName,VcoordName &
,sh2o(1,jsta_2l,2))
+! mask water areas
+!$omp parallel do private(i,j)
+ do j=jsta,jend
+ do i=1,im
+ if (sm(i,j) /= 0.0) sh2o(i,j,2) = spval
+ enddo
+ enddo
! if(debugprint)print*,'sample l',VarName,' = ',1,sh2o(isa,jsa,2)
VarName='soill'
@@ -2299,6 +2490,13 @@ SUBROUTINE INITPOST_GFS_NEMS_MPIIO(iostatusAER)
,l,nrec,fldsize,spval,tmp &
,recname,reclevtyp,reclev,VarName,VcoordName &
,sh2o(1,jsta_2l,3))
+! mask water areas
+!$omp parallel do private(i,j)
+ do j=jsta,jend
+ do i=1,im
+ if (sm(i,j) /= 0.0) sh2o(i,j,3) = spval
+ enddo
+ enddo
! if(debugprint)print*,'sample l',VarName,' = ',1,sh2o(isa,jsa,3)
VarName='soill'
@@ -2308,6 +2506,13 @@ SUBROUTINE INITPOST_GFS_NEMS_MPIIO(iostatusAER)
,l,nrec,fldsize,spval,tmp &
,recname,reclevtyp,reclev,VarName,VcoordName &
,sh2o(1,jsta_2l,4))
+! mask water areas
+!$omp parallel do private(i,j)
+ do j=jsta,jend
+ do i=1,im
+ if (sm(i,j) /= 0.0) sh2o(i,j,4) = spval
+ enddo
+ enddo
! if(debugprint)print*,'sample l',VarName,' = ',1,sh2o(isa,jsa,4)
! volumetric soil moisture using nemsio
@@ -2319,6 +2524,13 @@ SUBROUTINE INITPOST_GFS_NEMS_MPIIO(iostatusAER)
,l,nrec,fldsize,spval,tmp &
,recname,reclevtyp,reclev,VarName,VcoordName &
,smc(1,jsta_2l,1))
+! mask water areas
+!$omp parallel do private(i,j)
+ do j=jsta,jend
+ do i=1,im
+ if (sm(i,j) /= 0.0) smc(i,j,1) = spval
+ enddo
+ enddo
! if(debugprint)print*,'sample l',VarName,' = ',1,smc(isa,jsa,1)
VarName='soilw'
@@ -2328,6 +2540,13 @@ SUBROUTINE INITPOST_GFS_NEMS_MPIIO(iostatusAER)
,l,nrec,fldsize,spval,tmp &
,recname,reclevtyp,reclev,VarName,VcoordName &
,smc(1,jsta_2l,2))
+! mask water areas
+!$omp parallel do private(i,j)
+ do j=jsta,jend
+ do i=1,im
+ if (sm(i,j) /= 0.0) smc(i,j,2) = spval
+ enddo
+ enddo
! if(debugprint)print*,'sample l',VarName,' = ',1,smc(isa,jsa,2)
VarName='soilw'
@@ -2337,7 +2556,13 @@ SUBROUTINE INITPOST_GFS_NEMS_MPIIO(iostatusAER)
,l,nrec,fldsize,spval,tmp &
,recname,reclevtyp,reclev,VarName,VcoordName &
,smc(1,jsta_2l,3))
-
+! mask water areas
+!$omp parallel do private(i,j)
+ do j=jsta,jend
+ do i=1,im
+ if (sm(i,j) /= 0.0) smc(i,j,3) = spval
+ enddo
+ enddo
! if(debugprint)print*,'sample l',VarName,' = ',1,smc(isa,jsa,3)
VarName='soilw'
@@ -2347,6 +2572,13 @@ SUBROUTINE INITPOST_GFS_NEMS_MPIIO(iostatusAER)
,l,nrec,fldsize,spval,tmp &
,recname,reclevtyp,reclev,VarName,VcoordName &
,smc(1,jsta_2l,4))
+! mask water areas
+!$omp parallel do private(i,j)
+ do j=jsta,jend
+ do i=1,im
+ if (sm(i,j) /= 0.0) smc(i,j,4) = spval
+ enddo
+ enddo
! if(debugprint)print*,'sample l',VarName,' = ',1,smc(isa,jsa,4)
! soil temperature using nemsio
@@ -2357,7 +2589,13 @@ SUBROUTINE INITPOST_GFS_NEMS_MPIIO(iostatusAER)
,l,nrec,fldsize,spval,tmp &
,recname,reclevtyp,reclev,VarName,VcoordName &
,stc(1,jsta_2l,1))
-
+! mask water areas
+!$omp parallel do private(i,j)
+ do j=jsta,jend
+ do i=1,im
+ if (sm(i,j) /= 0.0) stc(i,j,1) = spval
+ enddo
+ enddo
! if(debugprint)print*,'sample l','stc',' = ',1,stc(isa,jsa,1)
VarName='tmp'
@@ -2367,6 +2605,13 @@ SUBROUTINE INITPOST_GFS_NEMS_MPIIO(iostatusAER)
,l,nrec,fldsize,spval,tmp &
,recname,reclevtyp,reclev,VarName,VcoordName &
,stc(1,jsta_2l,2))
+! mask water areas
+!$omp parallel do private(i,j)
+ do j=jsta,jend
+ do i=1,im
+ if (sm(i,j) /= 0.0) stc(i,j,2) = spval
+ enddo
+ enddo
! if(debugprint)print*,'sample stc = ',1,stc(isa,jsa,2)
VarName='tmp'
@@ -2376,6 +2621,13 @@ SUBROUTINE INITPOST_GFS_NEMS_MPIIO(iostatusAER)
,l,nrec,fldsize,spval,tmp &
,recname,reclevtyp,reclev,VarName,VcoordName &
,stc(1,jsta_2l,3))
+! mask water areas
+!$omp parallel do private(i,j)
+ do j=jsta,jend
+ do i=1,im
+ if (sm(i,j) /= 0.0) stc(i,j,3) = spval
+ enddo
+ enddo
! if(debugprint)print*,'sample stc = ',1,stc(isa,jsa,3)
VarName='tmp'
@@ -2385,6 +2637,13 @@ SUBROUTINE INITPOST_GFS_NEMS_MPIIO(iostatusAER)
,l,nrec,fldsize,spval,tmp &
,recname,reclevtyp,reclev,VarName,VcoordName &
,stc(1,jsta_2l,4))
+! mask water areas
+!$omp parallel do private(i,j)
+ do j=jsta,jend
+ do i=1,im
+ if (sm(i,j) /= 0.0) stc(i,j,4) = spval
+ enddo
+ enddo
! if(debugprint)print*,'sample stc = ',1,stc(isa,jsa,4)
!$omp parallel do private(i,j)
@@ -2635,6 +2894,13 @@ SUBROUTINE INITPOST_GFS_NEMS_MPIIO(iostatusAER)
,l,nrec,fldsize,spval,tmp &
,recname,reclevtyp,reclev,VarName,VcoordName &
,subshx)
+! mask water areas
+!$omp parallel do private(i,j)
+ do j=jsta,jend
+ do i=1,im
+ if (sm(i,j) == 1.0 .and. sice(i,j) ==0.) subshx(i,j) = spval
+ enddo
+ enddo
! if(debugprint)print*,'sample l',VarName,' = ',1,subshx(isa,jsa)
! inst ground heat flux using nemsio
@@ -2645,7 +2911,13 @@ SUBROUTINE INITPOST_GFS_NEMS_MPIIO(iostatusAER)
,l,nrec,fldsize,spval,tmp &
,recname,reclevtyp,reclev,VarName,VcoordName &
,grnflx)
-
+! mask water areas
+!$omp parallel do private(i,j)
+ do j=jsta,jend
+ do i=1,im
+ if (sm(i,j) == 1.0 .and. sice(i,j) ==0.) grnflx(i,j) = spval
+ enddo
+ enddo
! time averaged zonal momentum flux using gfsio
VarName='uflx_ave'
VcoordName='sfc'
@@ -2703,6 +2975,13 @@ SUBROUTINE INITPOST_GFS_NEMS_MPIIO(iostatusAER)
,l,nrec,fldsize,spval,tmp &
,recname,reclevtyp,reclev,VarName,VcoordName &
,avgpotevp)
+! mask water areas
+!$omp parallel do private(i,j)
+ do j=jsta,jend
+ do i=1,im
+ if (sm(i,j) == 1.0 .and. sice(i,j) ==0.) avgpotevp(i,j) = spval
+ enddo
+ enddo
! if(debugprint)print*,'sample l',VarName,' = ',1,potevp(isa,jsa)
! inst potential evaporation
@@ -2713,6 +2992,13 @@ SUBROUTINE INITPOST_GFS_NEMS_MPIIO(iostatusAER)
,l,nrec,fldsize,spval,tmp &
,recname,reclevtyp,reclev,VarName,VcoordName &
,potevp)
+! mask water areas
+!$omp parallel do private(i,j)
+ do j=jsta,jend
+ do i=1,im
+ if (sm(i,j) == 1.0 .and. sice(i,j) ==0.) potevp(i,j) = spval
+ enddo
+ enddo
do l=1,lm
!$omp parallel do private(i,j)
@@ -2828,7 +3114,7 @@ SUBROUTINE INITPOST_GFS_NEMS_MPIIO(iostatusAER)
sfcevp(i,j) = spval ! GFS does not have accumulated surface evaporation
acsnow(i,j) = spval ! GFS does not have averaged accumulated snow
acsnom(i,j) = spval ! GFS does not have snow melt
- sst(i,j) = spval ! GFS does not have sst????
+! sst(i,j) = spval ! GFS does not have sst????
thz0(i,j) = ths(i,j) ! GFS does not have THZ0, use THS to substitute
qz0(i,j) = spval ! GFS does not output humidity at roughness length
uz0(i,j) = spval ! GFS does not output u at roughness length
@@ -3039,6 +3325,13 @@ SUBROUTINE INITPOST_GFS_NEMS_MPIIO(iostatusAER)
,l,nrec,fldsize,spval,tmp &
,recname,reclevtyp,reclev,VarName,VcoordName &
,runoff)
+! mask water areas
+!$omp parallel do private(i,j)
+ do j=jsta,jend
+ do i=1,im
+ if (sm(i,j) /= 0.0) runoff(i,j) = spval
+ enddo
+ enddo
! if(debugprint)print*,'sample l',VcoordName,VarName,' = ', 1,runoff(isa,jsa)
! retrieve shelter max temperature using nemsio
@@ -3088,6 +3381,13 @@ SUBROUTINE INITPOST_GFS_NEMS_MPIIO(iostatusAER)
,l,nrec,fldsize,spval,tmp &
,recname,reclevtyp,reclev,VarName,VcoordName &
,smcwlt)
+! mask water areas
+!$omp parallel do private(i,j)
+ do j=jsta,jend
+ do i=1,im
+ if (sm(i,j) /= 0.0) smcwlt(i,j) = spval
+ enddo
+ enddo
! if(debugprint)print*,'sample l',VcoordName,VarName,' = ', 1,smcwlt(isa,jsa)
! retrieve sunshine duration using nemsio
@@ -3108,6 +3408,13 @@ SUBROUTINE INITPOST_GFS_NEMS_MPIIO(iostatusAER)
,l,nrec,fldsize,spval,tmp &
,recname,reclevtyp,reclev,VarName,VcoordName &
,fieldcapa)
+! mask water areas
+!$omp parallel do private(i,j)
+ do j=jsta,jend
+ do i=1,im
+ if (sm(i,j) /= 0.0) fieldcapa(i,j) = spval
+ enddo
+ enddo
! if(debugprint)print*,'sample l',VcoordName,VarName,' = ', 1,fieldcapa(isa,jsa)
! retrieve time averaged surface visible beam downward solar flux
@@ -3228,6 +3535,13 @@ SUBROUTINE INITPOST_GFS_NEMS_MPIIO(iostatusAER)
,l,nrec,fldsize,spval,tmp &
,recname,reclevtyp,reclev,VarName,VcoordName &
,SSROFF)
+! mask water areas
+!$omp parallel do private(i,j)
+ do j=jsta,jend
+ do i=1,im
+ if (sm(i,j) /= 0.0) ssroff(i,j) = spval
+ enddo
+ enddo
! retrieve direct soil evaporation
VarName='evbs_ave'
@@ -3237,6 +3551,13 @@ SUBROUTINE INITPOST_GFS_NEMS_MPIIO(iostatusAER)
,l,nrec,fldsize,spval,tmp &
,recname,reclevtyp,reclev,VarName,VcoordName &
,avgedir)
+! mask water areas
+!$omp parallel do private(i,j)
+ do j=jsta,jend
+ do i=1,im
+ if (sm(i,j) /= 0.0) avgedir(i,j) = spval
+ enddo
+ enddo
! retrieve CANOPY WATER EVAP
VarName='evcw_ave'
@@ -3246,6 +3567,13 @@ SUBROUTINE INITPOST_GFS_NEMS_MPIIO(iostatusAER)
,l,nrec,fldsize,spval,tmp &
,recname,reclevtyp,reclev,VarName,VcoordName &
,avgecan)
+! mask water areas
+!$omp parallel do private(i,j)
+ do j=jsta,jend
+ do i=1,im
+ if (sm(i,j) /= 0.0) avgecan(i,j) = spval
+ enddo
+ enddo
! retrieve PLANT TRANSPIRATION
VarName='trans_ave'
@@ -3255,6 +3583,13 @@ SUBROUTINE INITPOST_GFS_NEMS_MPIIO(iostatusAER)
,l,nrec,fldsize,spval,tmp &
,recname,reclevtyp,reclev,VarName,VcoordName &
,avgetrans)
+! mask water areas
+!$omp parallel do private(i,j)
+ do j=jsta,jend
+ do i=1,im
+ if (sm(i,j) /= 0.0) avgetrans(i,j) = spval
+ enddo
+ enddo
! retrieve snow sublimation
VarName='sbsno_ave'
@@ -3264,6 +3599,13 @@ SUBROUTINE INITPOST_GFS_NEMS_MPIIO(iostatusAER)
,l,nrec,fldsize,spval,tmp &
,recname,reclevtyp,reclev,VarName,VcoordName &
,avgesnow)
+! mask water areas
+!$omp parallel do private(i,j)
+ do j=jsta,jend
+ do i=1,im
+ if (sm(i,j)==1.0 .and. sice(i,j)==0.) avgesnow(i,j)=spval
+ enddo
+ enddo
! retrive total soil moisture
VarName='soilm'
@@ -3273,6 +3615,13 @@ SUBROUTINE INITPOST_GFS_NEMS_MPIIO(iostatusAER)
,l,nrec,fldsize,spval,tmp &
,recname,reclevtyp,reclev,VarName,VcoordName &
,smstot)
+! mask water areas
+!$omp parallel do private(i,j)
+ do j=jsta,jend
+ do i=1,im
+ if (sm(i,j) /= 0.0) smstot(i,j) = spval
+ enddo
+ enddo
! retrieve snow phase change heat flux
VarName='snohf'
@@ -3282,6 +3631,13 @@ SUBROUTINE INITPOST_GFS_NEMS_MPIIO(iostatusAER)
,l,nrec,fldsize,spval,tmp &
,recname,reclevtyp,reclev,VarName,VcoordName &
,snopcx)
+! mask water areas
+!$omp parallel do private(i,j)
+ do j=jsta,jend
+ do i=1,im
+ if (sm(i,j) /= 0.0) snopcx(i,j) = spval
+ enddo
+ enddo
! GFS does not have deep convective cloud top and bottom fields
@@ -3332,13 +3688,14 @@ SUBROUTINE INITPOST_GFS_NEMS_MPIIO(iostatusAER)
print*,"fail to read aer file using mpi io read, stopping"
stop
end if
+
! retrieve dust emission fluxes
do K = 1, nbin_du
- if ( K == 1) VarName='DUEM001'
- if ( K == 2) VarName='DUEM002'
- if ( K == 3) VarName='DUEM003'
- if ( K == 4) VarName='DUEM004'
- if ( K == 5) VarName='DUEM005'
+ if ( K == 1) VarName='duem001'
+ if ( K == 2) VarName='duem002'
+ if ( K == 3) VarName='duem003'
+ if ( K == 4) VarName='duem004'
+ if ( K == 5) VarName='duem005'
VcoordName='atmos col'
l=1
call assignnemsiovar(im,jsta,jend,jsta_2l,jend_2u &
@@ -3350,11 +3707,11 @@ SUBROUTINE INITPOST_GFS_NEMS_MPIIO(iostatusAER)
! retrieve dust sedimentation fluxes
do K = 1, nbin_du
- if ( K == 1) VarName='DUSD001'
- if ( K == 2) VarName='DUSD002'
- if ( K == 3) VarName='DUSD003'
- if ( K == 4) VarName='DUSD004'
- if ( K == 5) VarName='DUSD005'
+ if ( K == 1) VarName='dust1SD'
+ if ( K == 2) VarName='dust2SD'
+ if ( K == 3) VarName='dust3SD'
+ if ( K == 4) VarName='dust4SD'
+ if ( K == 5) VarName='dsut5SD'
VcoordName='atmos col'
l=1
call assignnemsiovar(im,jsta,jend,jsta_2l,jend_2u &
@@ -3366,11 +3723,11 @@ SUBROUTINE INITPOST_GFS_NEMS_MPIIO(iostatusAER)
! retrieve dust dry deposition fluxes
do K = 1, nbin_du
- if ( K == 1) VarName='DUDP001'
- if ( K == 2) VarName='DUDP002'
- if ( K == 3) VarName='DUDP003'
- if ( K == 4) VarName='DUDP004'
- if ( K == 5) VarName='DUDP005'
+ if ( K == 1) VarName='dust1dp'
+ if ( K == 2) VarName='dust2dp'
+ if ( K == 3) VarName='dust3dp'
+ if ( K == 4) VarName='dust4dp'
+ if ( K == 5) VarName='dust5dp'
VcoordName='atmos col'
l=1
call assignnemsiovar(im,jsta,jend,jsta_2l,jend_2u &
@@ -3384,58 +3741,257 @@ SUBROUTINE INITPOST_GFS_NEMS_MPIIO(iostatusAER)
! retrieve dust wet deposition fluxes
do K = 1, nbin_du
- if ( K == 1) VarName='DUWT001'
- if ( K == 2) VarName='DUWT002'
- if ( K == 3) VarName='DUWT003'
- if ( K == 4) VarName='DUWT004'
- if ( K == 5) VarName='DUWT005'
+ if ( K == 1) VarName='dust1wtl'
+ if ( K == 2) VarName='dust2wtl'
+ if ( K == 3) VarName='dust3wtl'
+ if ( K == 4) VarName='dust4wtl'
+ if ( K == 5) VarName='dust5wtl'
VcoordName='atmos col'
l=1
call assignnemsiovar(im,jsta,jend,jsta_2l,jend_2u &
,l,nrec,fldsize,spval,tmp &
,recname,reclevtyp,reclev,VarName,VcoordName&
,duwt(1,jsta_2l,K))
-! if(debugprint)print*,'sample ',VarName,' = ',duwt(isa,jsa,k)
+ enddo
+! retrieve dust scavenging fluxes
+ do K = 1, nbin_du
+ if ( K == 1) VarName='dust1wtc'
+ if ( K == 2) VarName='dust2wtc'
+ if ( K == 3) VarName='dust3wtc'
+ if ( K == 4) VarName='dust4wtc'
+ if ( K == 5) VarName='dust5wtc'
+ VcoordName='atmos col'
+ l=1
+ call assignnemsiovar(im,jsta,jend,jsta_2l,jend_2u &
+ ,l,nrec,fldsize,spval,tmp &
+ ,recname,reclevtyp,reclev,VarName,VcoordName&
+ ,dusv(1,jsta_2l,K))
enddo
-! retrieve sfc mass concentration
- VarName='DUSMASS'
- VcoordName='atmos col'
- l=1
- call assignnemsiovar(im,jsta,jend,jsta_2l,jend_2u &
- ,l,nrec,fldsize,spval,tmp &
- ,recname,reclevtyp,reclev,VarName,VcoordName &
- ,dusmass)
-! if(debugprint)print*,'sample ',VarName,' = ',dusmass(isa,jsa)
+! retrieve seasalt emission fluxes
+ do K = 1, nbin_ss
+ if ( K == 1) VarName='ssem001'
+ if ( K == 2) VarName='ssem002'
+ if ( K == 3) VarName='ssem003'
+ if ( K == 4) VarName='ssem004'
+ if ( K == 5) VarName='ssem005'
+ VcoordName='atmos col'
+ l=1
+ call assignnemsiovar(im,jsta,jend,jsta_2l,jend_2u &
+ ,l,nrec,fldsize,spval,tmp &
+ ,recname,reclevtyp,reclev,VarName,VcoordName&
+ ,ssem(1,jsta_2l,K))
+ enddo
-! retrieve col mass density
- VarName='DUCMASS'
- VcoordName='atmos col'
- l=1
- call assignnemsiovar(im,jsta,jend,jsta_2l,jend_2u &
- ,l,nrec,fldsize,spval,tmp &
- ,recname,reclevtyp,reclev,VarName,VcoordName &
- ,ducmass)
-! if(debugprint)print*,'sample ',VarName,' = ',ducmass(isa,jsa)
+! retrieve seasalt dry deposition fluxes
+ do K = 1, nbin_ss
+ if ( K == 1) VarName='seas1dp'
+ if ( K == 2) VarName='seas2dp'
+ if ( K == 3) VarName='seas3dp'
+ if ( K == 4) VarName='seas4dp'
+ if ( K == 5) VarName='seas5dp'
+ VcoordName='atmos col'
+ l=1
+ call assignnemsiovar(im,jsta,jend,jsta_2l,jend_2u &
+ ,l,nrec,fldsize,spval,tmp &
+ ,recname,reclevtyp,reclev,VarName,VcoordName&
+ ,ssdp(1,jsta_2l,K))
+ enddo
-! retrieve sfc mass concentration (pm2.5)
- VarName='DUSMASS25'
- VcoordName='atmos col'
- l=1
- call assignnemsiovar(im,jsta,jend,jsta_2l,jend_2u &
- ,l,nrec,fldsize,spval,tmp &
- ,recname,reclevtyp,reclev,VarName,VcoordName &
- ,dusmass25)
+! retrieve seasalt wet deposition fluxes
+ do K = 1, nbin_ss
+ if ( K == 1) VarName='seas1wtl'
+ if ( K == 2) VarName='seas2wtl'
+ if ( K == 3) VarName='seas3wtl'
+ if ( K == 4) VarName='seas4wtl'
+ if ( K == 5) VarName='seas5wtl'
+ VcoordName='atmos col'
+ l=1
+ call assignnemsiovar(im,jsta,jend,jsta_2l,jend_2u &
+ ,l,nrec,fldsize,spval,tmp &
+ ,recname,reclevtyp,reclev,VarName,VcoordName&
+ ,sswt(1,jsta_2l,K))
+ enddo
+
+! retrieve seasalt scavenging fluxes
+ do K = 1, nbin_ss
+ if ( K == 1) VarName='seas1wtc'
+ if ( K == 2) VarName='seas1wtc'
+ if ( K == 3) VarName='seas1wtc'
+ if ( K == 4) VarName='seas1wtc'
+ if ( K == 5) VarName='seas1wtc'
+ VcoordName='atmos col'
+ l=1
+ call assignnemsiovar(im,jsta,jend,jsta_2l,jend_2u &
+ ,l,nrec,fldsize,spval,tmp &
+ ,recname,reclevtyp,reclev,VarName,VcoordName&
+ ,sssv(1,jsta_2l,K))
+ enddo
+
+! retrieve bc emission fluxes
+ do K = 1, nbin_bc
+ if ( K == 1) VarName='bceman'
+ if ( K == 2) VarName='bcembb'
+ VcoordName='atmos col'
+ l=1
+ call assignnemsiovar(im,jsta,jend,jsta_2l,jend_2u &
+ ,l,nrec,fldsize,spval,tmp &
+ ,recname,reclevtyp,reclev,VarName,VcoordName&
+ ,bcem(1,jsta_2l,K))
+ enddo
+
+! retrieve bc sedimentation fluxes
+ do K = 1, nbin_bc
+ if ( K == 1) VarName='bc1sd'
+ if ( K == 2) VarName='bc2sd'
+ VcoordName='atmos col'
+ l=1
+ call assignnemsiovar(im,jsta,jend,jsta_2l,jend_2u &
+ ,l,nrec,fldsize,spval,tmp &
+ ,recname,reclevtyp,reclev,VarName,VcoordName&
+ ,bcsd(1,jsta_2l,K))
+ enddo
+
+! retrieve bc dry deposition fluxes
+ do K = 1, nbin_bc
+ if ( K == 1) VarName='bc1dp'
+ if ( K == 2) VarName='bc2dp'
+ VcoordName='atmos col'
+ l=1
+ call assignnemsiovar(im,jsta,jend,jsta_2l,jend_2u &
+ ,l,nrec,fldsize,spval,tmp &
+ ,recname,reclevtyp,reclev,VarName,VcoordName&
+ ,bcdp(1,jsta_2l,K))
+ enddo
+
+! retrieve bc large wet deposition fluxes
+ do K = 1, nbin_bc
+ if ( K == 1) VarName='bc1wtl'
+ if ( K == 2) VarName='bc2wtl'
+ VcoordName='atmos col'
+ l=1
+ call assignnemsiovar(im,jsta,jend,jsta_2l,jend_2u &
+ ,l,nrec,fldsize,spval,tmp &
+ ,recname,reclevtyp,reclev,VarName,VcoordName&
+ ,bcwt(1,jsta_2l,K))
+ enddo
+
+! retrieve bc convective wet deposition fluxes
+ do K = 1, nbin_bc
+ if ( K == 1) VarName='bc1wtc'
+ if ( K == 2) VarName='bc2wtc'
+ VcoordName='atmos col'
+ l=1
+ call assignnemsiovar(im,jsta,jend,jsta_2l,jend_2u &
+ ,l,nrec,fldsize,spval,tmp &
+ ,recname,reclevtyp,reclev,VarName,VcoordName&
+ ,bcsv(1,jsta_2l,K))
+ enddo
+
+! retrieve oc emission fluxes
+ do K = 1, nbin_oc
+ if ( K == 1) VarName='oceman'
+ if ( K == 2) VarName='ocembb'
+ VcoordName='atmos col'
+ l=1
+ call assignnemsiovar(im,jsta,jend,jsta_2l,jend_2u &
+ ,l,nrec,fldsize,spval,tmp &
+ ,recname,reclevtyp,reclev,VarName,VcoordName&
+ ,ocem(1,jsta_2l,K))
+ enddo
+
+! retrieve oc sedimentation fluxes
+ do K = 1, nbin_oc
+ if ( K == 1) VarName='oc1sd'
+ if ( K == 2) VarName='oc2sd'
+ VcoordName='atmos col'
+ l=1
+ call assignnemsiovar(im,jsta,jend,jsta_2l,jend_2u &
+ ,l,nrec,fldsize,spval,tmp &
+ ,recname,reclevtyp,reclev,VarName,VcoordName&
+ ,ocsd(1,jsta_2l,K))
+ enddo
+
+! retrieve oc dry deposition fluxes
+ do K = 1, nbin_oc
+ if ( K == 1) VarName='c1dp'
+ if ( K == 2) VarName='c2dp'
+ VcoordName='atmos col'
+ l=1
+ call assignnemsiovar(im,jsta,jend,jsta_2l,jend_2u &
+ ,l,nrec,fldsize,spval,tmp &
+ ,recname,reclevtyp,reclev,VarName,VcoordName&
+ ,ocdp(1,jsta_2l,K))
+ enddo
+
+! retrieve oc large wet deposition fluxes
+ do K = 1, nbin_oc
+ if ( K == 1) VarName='oc1wtl'
+ if ( K == 2) VarName='oc2wtl'
+ VcoordName='atmos col'
+ l=1
+ call assignnemsiovar(im,jsta,jend,jsta_2l,jend_2u &
+ ,l,nrec,fldsize,spval,tmp &
+ ,recname,reclevtyp,reclev,VarName,VcoordName&
+ ,ocwt(1,jsta_2l,K))
+ enddo
+
+! retrieve oc convective wet deposition fluxes
+ do K = 1, nbin_oc
+ if ( K == 1) VarName='oc1wtc'
+ if ( K == 2) VarName='oc2wtc'
+ VcoordName='atmos col'
+ l=1
+ call assignnemsiovar(im,jsta,jend,jsta_2l,jend_2u &
+ ,l,nrec,fldsize,spval,tmp &
+ ,recname,reclevtyp,reclev,VarName,VcoordName&
+ ,ocsv(1,jsta_2l,K))
+ enddo
+
+
+
+!lzhang
+!! retrieve sfc mass concentration
+! VarName='DUSMASS'
+! VcoordName='atmos col'
+! l=1
+! call assignnemsiovar(im,jsta,jend,jsta_2l,jend_2u &
+! ,l,nrec,fldsize,spval,tmp &
+! ,recname,reclevtyp,reclev,VarName,VcoordName &
+! ,dusmass)
+! if(debugprint)print*,'sample ',VarName,' = ',dusmass(isa,jsa)
+
+!lzhang
+!! retrieve col mass density
+! VarName='DUCMASS'
+! VcoordName='atmos col'
+! l=1
+! call assignnemsiovar(im,jsta,jend,jsta_2l,jend_2u &
+! ,l,nrec,fldsize,spval,tmp &
+! ,recname,reclevtyp,reclev,VarName,VcoordName &
+! ,ducmass)
+!! if(debugprint)print*,'sample ',VarName,' = ',ducmass(isa,jsa)
+
+!lzhang
+!! retrieve sfc mass concentration (pm2.5)
+! VarName='DUSMASS25'
+! VcoordName='atmos col'
+! l=1
+! call assignnemsiovar(im,jsta,jend,jsta_2l,jend_2u &
+! ,l,nrec,fldsize,spval,tmp &
+! ,recname,reclevtyp,reclev,VarName,VcoordName &
+! ,dusmass25)
! if(debugprint)print*,'sample ',VarName,' = ',dusmass25(isa,jsa)
-! retrieve col mass density (pm2.5)
- VarName='DUCMASS25'
- VcoordName='atmos col'
- l=1
- call assignnemsiovar(im,jsta,jend,jsta_2l,jend_2u &
- ,l,nrec,fldsize,spval,tmp &
- ,recname,reclevtyp,reclev,VarName,VcoordName &
- ,ducmass25)
+!lzhang
+!! retrieve col mass density (pm2.5)
+! VarName='DUCMASS25'
+! VcoordName='atmos col'
+! l=1
+! call assignnemsiovar(im,jsta,jend,jsta_2l,jend_2u &
+! ,l,nrec,fldsize,spval,tmp &
+! ,recname,reclevtyp,reclev,VarName,VcoordName &
+! ,ducmass25)
! if(debugprint)print*,'sample ',VarName,' = ',ducmass25(isa,jsa)
if (me == 0) print *,'after aer files reading,mype=',me
diff --git a/comupp/src/unipost/INITPOST_NETCDF.f b/comupp/src/unipost/INITPOST_NETCDF.f
index 2f202a6c2..28595d7f4 100644
--- a/comupp/src/unipost/INITPOST_NETCDF.f
+++ b/comupp/src/unipost/INITPOST_NETCDF.f
@@ -56,10 +56,11 @@ SUBROUTINE INITPOST_NETCDF(ncid3d)
uz0, vz0, ptop, htop, pbot, hbot, ptopl, pbotl, ttopl, ptopm, pbotm, ttopm, &
ptoph, pboth, pblcfr, ttoph, runoff, maxtshltr, mintshltr, maxrhshltr, &
minrhshltr, dzice, smcwlt, suntime, fieldcapa, htopd, hbotd, htops, hbots, &
- cuppt, dusmass, ducmass, dusmass25, ducmass25, aswintoa, &
- maxqshltr, minqshltr, acond, sr, u10h, v10h, &
- avgedir,avgecan,avgetrans,avgesnow,avgprec_cont, avgcprate_cont, &
- avisbeamswin,avisdiffswin,airbeamswin,airdiffswin, &
+ cuppt, dusmass, ducmass, dusmass25, ducmass25, aswintoa,rel_vort_maxhy1, &
+ maxqshltr, minqshltr, acond, sr, u10h, v10h,refd_max, w_up_max, w_dn_max, &
+ up_heli_max,up_heli_min,up_heli_max03,up_heli_min03,rel_vort_max01,u10max, v10max, &
+ avgedir,avgecan,avgetrans,avgesnow,avgprec_cont,avgcprate_cont,rel_vort_max, &
+ avisbeamswin,avisdiffswin,airbeamswin,airdiffswin,refdm10c_max,wspd10max, &
alwoutc,alwtoac,aswoutc,aswtoac,alwinc,aswinc,avgpotevp,snoavg
use soil, only: sldpth, sh2o, smc, stc
use masks, only: lmv, lmh, htm, vtm, gdlat, gdlon, dx, dy, hbm2, sm, sice
@@ -118,8 +119,8 @@ SUBROUTINE INITPOST_NETCDF(ncid3d)
! ALSO, EXTRACT IS CALLED WITH DUMMY ( A REAL ) EVEN WHEN THE NUMBERS ARE
! INTEGERS - THIS IS OK AS LONG AS INTEGERS AND REALS ARE THE SAME SIZE.
LOGICAL RUNB,SINGLRST,SUBPOST,NEST,HYDRO,IOOMG,IOALL
-! logical, parameter :: debugprint = .false., zerout = .false.
- logical, parameter :: debugprint = .true., zerout = .false.
+ logical, parameter :: debugprint = .true., zerout = .false.
+! logical, parameter :: debugprint = .true., zerout = .false.
logical :: convert_rad_to_deg=.false.
CHARACTER*32 varcharval
! CHARACTER*40 CONTRL,FILALL,FILMST,FILTMP,FILTKE,FILUNV,FILCLD,FILRAD,FILSFC
@@ -288,6 +289,69 @@ SUBROUTINE INITPOST_NETCDF(ncid3d)
print*,'lonstart,latstart,cenlon,cenlat,dyval,dxval', &
lonstart,latstart,cenlon,cenlat,dyval,dxval
+
+! Jili Dong add support for regular lat lon (2019/03/22) start
+ else if(trim(varcharval)=='latlon')then
+ MAPTYPE=0
+ idrt=0
+
+ Status=nf90_get_att(ncid3d,nf90_global,'lon1',dum_const)
+ if(Status/=0)then
+ print*,'lonstart not found; assigning missing value'
+ lonstart=spval
+ else
+ if(dum_const<0.)then
+ lonstart=nint((dum_const+360.)*gdsdegr)
+ else
+ lonstart=dum_const*gdsdegr
+ end if
+ end if
+ Status=nf90_get_att(ncid3d,nf90_global,'lat1',dum_const)
+ if(Status/=0)then
+ print*,'latstart not found; assigning missing value'
+ latstart=spval
+ else
+ latstart=dum_const*gdsdegr
+ end if
+
+ Status=nf90_get_att(ncid3d,nf90_global,'lon2',dum_const)
+ if(Status/=0)then
+ print*,'lonlast not found; assigning missing value'
+ lonlast=spval
+ else
+ if(dum_const<0.)then
+ lonlast=nint((dum_const+360.)*gdsdegr)
+ else
+ lonlast=dum_const*gdsdegr
+ end if
+ end if
+ Status=nf90_get_att(ncid3d,nf90_global,'lat2',dum_const)
+ if(Status/=0)then
+ print*,'latlast not found; assigning missing value'
+ latlast=spval
+ else
+ latlast=dum_const*gdsdegr
+ end if
+
+ Status=nf90_get_att(ncid3d,nf90_global,'dlon',dum_const)
+ if(Status/=0)then
+ print*,'dlmd not found; assigning missing value'
+ dxval=spval
+ else
+ dxval=dum_const*gdsdegr
+ end if
+ Status=nf90_get_att(ncid3d,nf90_global,'dlat',dum_const)
+ if(Status/=0)then
+ print*,'dphd not found; assigning missing value'
+ dyval=spval
+ else
+ dyval=dum_const*gdsdegr
+ end if
+
+ print*,'lonstart,latstart,dyval,dxval', &
+ lonstart,lonlast,latstart,latlast,dyval,dxval
+
+! Jili Dong add support for regular lat lon (2019/03/22) end
else ! setting default maptype
MAPTYPE=0
@@ -333,7 +397,7 @@ SUBROUTINE INITPOST_NETCDF(ncid3d)
nrec=15
allocate (recname(nrec))
recname=[character(len=20) :: 'ugrd','vgrd','spfh','tmp','o3mr', &
- 'presnh','vvel', 'clwmr','dpres', &
+ 'presnh','dzdt', 'clwmr','dpres', &
'delz','icmr','rwmr', &
'snmr','grle','cld_amt']
else
@@ -413,6 +477,18 @@ SUBROUTINE INITPOST_NETCDF(ncid3d)
lonstart = nint(dummy(1,1)*gdsdegr)
lonlast = nint(dummy(im,jm)*gdsdegr)
end if
+
+! Jili Dong add support for regular lat lon (2019/03/22) start
+ if (MAPTYPE .eq. 0) then
+ if(lonstart<0.)then
+ lonstart=lonstart+360.*gdsdegr
+ end if
+ if(lonlast<0.)then
+ lonlast=lonlast+360.*gdsdegr
+ end if
+ end if
+! Jili Dong add support for regular lat lon (2019/03/22) end
+
end if
print*,'lonstart,lonlast ',lonstart,lonlast
! get latitude
@@ -506,17 +582,18 @@ SUBROUTINE INITPOST_NETCDF(ncid3d)
!$omp parallel do private(i,j,ip1)
do j = jsta, jend_m
- do i = 1, im
+ do i = 1, im-1
ip1 = i + 1
- if (ip1 > im) ip1 = ip1 - im
+! if (ip1 > im) ip1 = ip1 - im
DX (i,j) = ERAD*COS(GDLAT(I,J)*DTR) *(GDLON(IP1,J)-GDLON(I,J))*DTR
- DY (i,j) = ERAD*(GDLAT(I,J)-GDLAT(I,J+1))*DTR ! like A*DPH
+ DY (i,j) = ERAD*(GDLAT(I,J+1)-GDLAT(I,J))*DTR ! like A*DPH
! F(I,J)=1.454441e-4*sin(gdlat(i,j)*DTR) ! 2*omeg*sin(phi)
! if (i == ii .and. j == jj) print*,'sample LATLON, DY, DY=' &
! ,i,j,GDLAT(I,J),GDLON(I,J),DX(I,J),DY(I,J)
end do
end do
-
+ if(debugprint)print*,'me sample dx dy= ' &
+ ,me,dx(isa,jsa),dy(isa,jsa)
!$omp parallel do private(i,j)
do j=jsta,jend
do i=1,im
@@ -625,14 +702,20 @@ SUBROUTINE INITPOST_NETCDF(ncid3d)
cwm(i,j,l)=spval
! zint(i,j,l)=zint(i,j,l+1)+buf(i,j)
! if(abs(dpres(i,j,l))>1.0e5)print*,'bad dpres ',i,j,dpres(i,j,l)
+!make sure delz is positive
if(dpres(i,j,l)/=spval .and. t(i,j,l)/=spval .and. &
q(i,j,l)/=spval .and. buf3d(i,j,l)/=spval)then
pmid(i,j,l)=rgas*dpres(i,j,l)* &
- t(i,j,l)*(q(i,j,l)*fv+1.0)/grav/buf3d(i,j,l)
+ t(i,j,l)*(q(i,j,l)*fv+1.0)/grav/abs(buf3d(i,j,l))
else
pmid(i,j,l)=spval
end if
- omga(i,j,l)=(-1.)*wh(i,j,l)*dpres(i,j,l)/buf3d(i,j,l)
+! dong add missing value
+ if (wh(i,j,l) < spval) then
+ omga(i,j,l)=(-1.)*wh(i,j,l)*dpres(i,j,l)/abs(buf3d(i,j,l))
+ else
+ omga(i,j,l) = spval
+ end if
! if(t(i,j,l)>1000.)print*,'bad T ',t(i,j,l)
enddo
enddo
@@ -663,7 +746,53 @@ SUBROUTINE INITPOST_NETCDF(ncid3d)
if(debugprint)print*,'sample l cwm for FV3',l, &
cwm(isa,jsa,l)
end do
+! max hourly updraft velocity
+ VarName='upvvelmax'
+ call read_netcdf_2d_scatter(me,ncid3d,1,im,jm,jsta,jsta_2l &
+ ,jend_2u,MPI_COMM_COMP,icnt,idsp,spval,VarName,w_up_max)
+ if(debugprint)print*,'sample ',VarName,' = ',w_up_max(isa,jsa)
+! max hourly downdraft velocity
+ VarName='dnvvelmax'
+ call read_netcdf_2d_scatter(me,ncid3d,1,im,jm,jsta,jsta_2l &
+ ,jend_2u,MPI_COMM_COMP,icnt,idsp,spval,VarName,w_dn_max)
+ if(debugprint)print*,'sample ',VarName,' = ',w_dn_max(isa,jsa)
+! max hourly updraft helicity
+ VarName='uhmax25'
+ call read_netcdf_2d_scatter(me,ncid3d,1,im,jm,jsta,jsta_2l &
+ ,jend_2u,MPI_COMM_COMP,icnt,idsp,spval,VarName,up_heli_max)
+ if(debugprint)print*,'sample ',VarName,' = ',up_heli_max(isa,jsa)
+! min hourly updraft helicity
+ VarName='uhmin25'
+ call read_netcdf_2d_scatter(me,ncid3d,1,im,jm,jsta,jsta_2l &
+ ,jend_2u,MPI_COMM_COMP,icnt,idsp,spval,VarName,up_heli_min)
+ if(debugprint)print*,'sample ',VarName,' = ',up_heli_min(isa,jsa)
+! max hourly 0-3km updraft helicity
+ VarName='uhmax03'
+ call read_netcdf_2d_scatter(me,ncid3d,1,im,jm,jsta,jsta_2l &
+ ,jend_2u,MPI_COMM_COMP,icnt,idsp,spval,VarName,up_heli_max03)
+ if(debugprint)print*,'sample ',VarName,' = ',up_heli_max03(isa,jsa)
+! min hourly 0-3km updraft helicity
+ VarName='uhmin03'
+ call read_netcdf_2d_scatter(me,ncid3d,1,im,jm,jsta,jsta_2l &
+ ,jend_2u,MPI_COMM_COMP,icnt,idsp,spval,VarName,up_heli_min03)
+ if(debugprint)print*,'sample ',VarName,' = ',up_heli_min03(isa,jsa)
+
+! max 0-1km relative vorticity max
+ VarName='maxvort01'
+ call read_netcdf_2d_scatter(me,ncid3d,1,im,jm,jsta,jsta_2l &
+ ,jend_2u,MPI_COMM_COMP,icnt,idsp,spval,VarName,rel_vort_max01)
+ if(debugprint)print*,'sample ',VarName,' = ',rel_vort_max01(isa,jsa)
+! max 0-2km relative vorticity max
+ VarName='maxvort02'
+ call read_netcdf_2d_scatter(me,ncid3d,1,im,jm,jsta,jsta_2l &
+ ,jend_2u,MPI_COMM_COMP,icnt,idsp,spval,VarName,rel_vort_max)
+ if(debugprint)print*,'sample ',VarName,' =',rel_vort_max(isa,jsa)
+! max hybrid lev 1 relative vorticity max
+ VarName='maxvorthy1'
+ call read_netcdf_2d_scatter(me,ncid3d,1,im,jm,jsta,jsta_2l &
+ ,jend_2u,MPI_COMM_COMP,icnt,idsp,spval,VarName,rel_vort_maxhy1)
+ if(debugprint)print*,'sample ',VarName,' =',rel_vort_maxhy1(isa,jsa)
! surface pressure
VarName='pressfc'
call read_netcdf_2d_scatter(me,ncid3d,1,im,jm,jsta,jsta_2l &
@@ -685,7 +814,7 @@ SUBROUTINE INITPOST_NETCDF(ncid3d)
end do
end do
- do l=2,lm
+ do l=2,lp1
do j=jsta,jend
do i=1,im
pint(i,j,l) = pint(i,j,l-1) + dpres(i,j,l-1)
@@ -709,6 +838,8 @@ SUBROUTINE INITPOST_NETCDF(ncid3d)
! end do
! surface height from FV3
+! dong set missing value for zint
+! zint=spval
VarName='hgtsfc'
call read_netcdf_2d_scatter(me,ncid3d,1,im,jm,jsta,jsta_2l &
,jend_2u,MPI_COMM_COMP,icnt,idsp,spval,VarName &
@@ -728,7 +859,8 @@ SUBROUTINE INITPOST_NETCDF(ncid3d)
do j=jsta,jend
do i=1,im
if(zint(i,j,l+1)/=spval .and. buf3d(i,j,l)/=spval)then
- zint(i,j,l)=zint(i,j,l+1)+buf3d(i,j,l)
+!make sure delz is positive
+ zint(i,j,l)=zint(i,j,l+1)+abs(buf3d(i,j,l))
! if(zint(i,j,l)>1.0E6)print*,'bad H ',i,j,l,zint(i,j,l)
else
zint(i,j,l)=spval
@@ -1005,7 +1137,7 @@ SUBROUTINE INITPOST_NETCDF(ncid3d)
! end do
! end do
- VarName='ref3D'
+ VarName='refl_10cm'
do l=1,lm
call read_netcdf_3d_scatter(me,ncid2d,1,im,jm,jsta,jsta_2l &
,jend_2u,MPI_COMM_COMP,icnt,idsp,spval,VarName &
@@ -1105,6 +1237,12 @@ SUBROUTINE INITPOST_NETCDF(ncid3d)
QS(i,j) = SPVAL ! GFS does not have surface specific humidity
twbs(i,j) = SPVAL ! GFS does not have inst sensible heat flux
qwbs(i,j) = SPVAL ! GFS does not have inst latent heat flux
+!assign sst
+ if (sm(i,j) /= 0.0) then
+ sst(i,j) = ths(i,j) * (pint(i,j,lp1)/p1000)**capa
+ else
+ sst(i,j) = spval
+ endif
enddo
enddo
if(debugprint)print*,'sample ',VarName,' = ',ths(isa,jsa)
@@ -1191,13 +1329,62 @@ SUBROUTINE INITPOST_NETCDF(ncid3d)
enddo
enddo
+! convective precip rate in m per physics time step
+! VarName='cnvprcp'
+!set cprate as 0.
+ do j=jsta,jend
+ do i=1,im
+ cprate(i,j) = 0.
+ enddo
+ enddo
+
! GFS does not have accumulated total, gridscale, and convective precip, will use inst precip to derive in SURFCE.f
+! max hourly 1-km agl reflectivity
+ VarName='refdmax'
+ call read_netcdf_2d_scatter(me,ncid2d,1,im,jm,jsta,jsta_2l &
+ ,jend_2u,MPI_COMM_COMP,icnt,idsp,spval,VarName,refd_max)
+ if(debugprint)print*,'sample ',VarName,' = ',refd_max(isa,jsa)
+! max hourly -10C reflectivity
+ VarName='refdmax263k'
+ call read_netcdf_2d_scatter(me,ncid2d,1,im,jm,jsta,jsta_2l &
+ ,jend_2u,MPI_COMM_COMP,icnt,idsp,spval,VarName,refdm10c_max)
+ if(debugprint)print*,'sample ',VarName,' = ',refdm10c_max(isa,jsa)
+
+! max hourly u comp of 10m agl wind
+ VarName='u10max'
+ call read_netcdf_2d_scatter(me,ncid2d,1,im,jm,jsta,jsta_2l &
+ ,jend_2u,MPI_COMM_COMP,icnt,idsp,spval,VarName,u10max)
+ if(debugprint)print*,'sample ',VarName,' = ',u10max(isa,jsa)
+! max hourly v comp of 10m agl wind
+ VarName='v10max'
+ call read_netcdf_2d_scatter(me,ncid2d,1,im,jm,jsta,jsta_2l &
+ ,jend_2u,MPI_COMM_COMP,icnt,idsp,spval,VarName,v10max)
+ if(debugprint)print*,'sample ',VarName,' = ',v10max(isa,jsa)
+! max hourly 10m agl wind speed
+ VarName='spd10max'
+ call read_netcdf_2d_scatter(me,ncid2d,1,im,jm,jsta,jsta_2l &
+ ,jend_2u,MPI_COMM_COMP,icnt,idsp,spval,VarName,wspd10max)
+ if(debugprint)print*,'sample ',VarName,' = ',wspd10max(isa,jsa)
+
+
+! 2m T using nemsio
+ VarName='tmp2m'
+ call read_netcdf_2d_scatter(me,ncid2d,1,im,jm,jsta,jsta_2l &
+ ,jend_2u,MPI_COMM_COMP,icnt,idsp,spval,VarName,tshltr)
+ if(debugprint)print*,'sample ',VarName,' = ',tshltr(isa,jsa)
! inst snow water eqivalent using nemsio
VarName='weasd'
call read_netcdf_2d_scatter(me,ncid2d,1,im,jm,jsta,jsta_2l &
,jend_2u,MPI_COMM_COMP,icnt,idsp,spval,VarName,sno)
+! mask water areas
+!$omp parallel do private(i,j)
+ do j=jsta,jend
+ do i=1,im
+ if (sm(i,j) == 1.0 .and. sice(i,j)==0.) sno(i,j) = spval
+ enddo
+ enddo
if(debugprint)print*,'sample ',VarName,' = ',sno(isa,jsa)
! ave snow cover
@@ -1207,6 +1394,7 @@ SUBROUTINE INITPOST_NETCDF(ncid3d)
! snow cover is multipled by 100 in SURFCE before writing it out
do j=jsta,jend
do i=1,im
+ if (sm(i,j)==1.0 .and. sice(i,j)==0.) snoavg(i,j)=spval
if(snoavg(i,j)/=spval)snoavg(i,j)=snoavg(i,j)/100.
end do
end do
@@ -1218,6 +1406,7 @@ SUBROUTINE INITPOST_NETCDF(ncid3d)
!$omp parallel do private(i,j)
do j=jsta,jend
do i=1,im
+ if (sm(i,j)==1.0 .and. sice(i,j)==0.) si(i,j)=spval
if (si(i,j) /= spval) si(i,j) = si(i,j) * 1000.0
CLDEFI(i,j) = SPVAL ! GFS does not have convective cloud efficiency
lspa(i,j) = spval ! GFS does not have similated precip
@@ -1229,7 +1418,6 @@ SUBROUTINE INITPOST_NETCDF(ncid3d)
enddo
if(debugprint)print*,'sample ',VarName,' = ',si(isa,jsa)
-
! 2m T using nemsio
VarName='tmp2m'
call read_netcdf_2d_scatter(me,ncid2d,1,im,jm,jsta,jsta_2l &
@@ -1394,6 +1582,7 @@ SUBROUTINE INITPOST_NETCDF(ncid3d)
do j=jsta,jend
do i=1,im
if (cmc(i,j) /= spval) cmc(i,j) = cmc(i,j) * 0.001
+ if (sm(i,j) /= 0.0) cmc(i,j) = spval
enddo
enddo
! if(debugprint)print*,'sample ',VarName,' = ',cmc(isa,jsa)
@@ -1424,6 +1613,13 @@ SUBROUTINE INITPOST_NETCDF(ncid3d)
endif
enddo
enddo
+! mask water areas
+!$omp parallel do private(i,j)
+ do j=jsta,jend
+ do i=1,im
+ if (sm(i,j) /= 0.0) vegfrc(i,j) = spval
+ enddo
+ enddo
! if(debugprint)print*,'sample ',VarName,' = ',vegfrc(isa,jsa)
! GFS doesn not yet output soil layer thickness, assign SLDPTH to be the same as nam
@@ -1434,66 +1630,150 @@ SUBROUTINE INITPOST_NETCDF(ncid3d)
SLDPTH(4) = 1.0
! liquid volumetric soil mpisture in fraction using nemsio
- VarName='slc1'
+ VarName='soill1'
call read_netcdf_2d_scatter(me,ncid2d,1,im,jm,jsta,jsta_2l &
,jend_2u,MPI_COMM_COMP,icnt,idsp,spval,VarName,sh2o(1,jsta_2l,1))
+! mask water areas
+!$omp parallel do private(i,j)
+ do j=jsta,jend
+ do i=1,im
+ if (sm(i,j) /= 0.0) sh2o(i,j,1) = spval
+ enddo
+ enddo
if(debugprint)print*,'sample l',VarName,' = ',1,sh2o(isa,jsa,1)
- VarName='slc2'
+ VarName='soill2'
call read_netcdf_2d_scatter(me,ncid2d,1,im,jm,jsta,jsta_2l &
,jend_2u,MPI_COMM_COMP,icnt,idsp,spval,VarName,sh2o(1,jsta_2l,2))
+! mask water areas
+!$omp parallel do private(i,j)
+ do j=jsta,jend
+ do i=1,im
+ if (sm(i,j) /= 0.0) sh2o(i,j,2) = spval
+ enddo
+ enddo
if(debugprint)print*,'sample l',VarName,' = ',1,sh2o(isa,jsa,2)
- VarName='slc3'
+ VarName='soill3'
call read_netcdf_2d_scatter(me,ncid2d,1,im,jm,jsta,jsta_2l &
,jend_2u,MPI_COMM_COMP,icnt,idsp,spval,VarName,sh2o(1,jsta_2l,3))
+! mask water areas
+!$omp parallel do private(i,j)
+ do j=jsta,jend
+ do i=1,im
+ if (sm(i,j) /= 0.0) sh2o(i,j,3) = spval
+ enddo
+ enddo
if(debugprint)print*,'sample l',VarName,' = ',1,sh2o(isa,jsa,3)
- VarName='slc4'
+ VarName='soill4'
call read_netcdf_2d_scatter(me,ncid2d,1,im,jm,jsta,jsta_2l &
,jend_2u,MPI_COMM_COMP,icnt,idsp,spval,VarName,sh2o(1,jsta_2l,4))
+! mask water areas
+!$omp parallel do private(i,j)
+ do j=jsta,jend
+ do i=1,im
+ if (sm(i,j) /= 0.0) sh2o(i,j,4) = spval
+ enddo
+ enddo
if(debugprint)print*,'sample l',VarName,' = ',1,sh2o(isa,jsa,4)
! volumetric soil moisture using nemsio
VarName='soilw1'
call read_netcdf_2d_scatter(me,ncid2d,1,im,jm,jsta,jsta_2l &
,jend_2u,MPI_COMM_COMP,icnt,idsp,spval,VarName,smc(1,jsta_2l,1))
+! mask water areas
+!$omp parallel do private(i,j)
+ do j=jsta,jend
+ do i=1,im
+ if (sm(i,j) /= 0.0) smc(i,j,1) = spval
+ enddo
+ enddo
if(debugprint)print*,'sample l',VarName,' = ',1,smc(isa,jsa,1)
VarName='soilw2'
call read_netcdf_2d_scatter(me,ncid2d,1,im,jm,jsta,jsta_2l &
,jend_2u,MPI_COMM_COMP,icnt,idsp,spval,VarName,smc(1,jsta_2l,2))
+! mask water areas
+!$omp parallel do private(i,j)
+ do j=jsta,jend
+ do i=1,im
+ if (sm(i,j) /= 0.0) smc(i,j,2) = spval
+ enddo
+ enddo
if(debugprint)print*,'sample l',VarName,' = ',1,smc(isa,jsa,2)
VarName='soilw3'
call read_netcdf_2d_scatter(me,ncid2d,1,im,jm,jsta,jsta_2l &
,jend_2u,MPI_COMM_COMP,icnt,idsp,spval,VarName,smc(1,jsta_2l,3))
+! mask water areas
+!$omp parallel do private(i,j)
+ do j=jsta,jend
+ do i=1,im
+ if (sm(i,j) /= 0.0) smc(i,j,3) = spval
+ enddo
+ enddo
if(debugprint)print*,'sample l',VarName,' = ',1,smc(isa,jsa,3)
VarName='soilw4'
call read_netcdf_2d_scatter(me,ncid2d,1,im,jm,jsta,jsta_2l &
,jend_2u,MPI_COMM_COMP,icnt,idsp,spval,VarName,smc(1,jsta_2l,4))
+! mask water areas
+!$omp parallel do private(i,j)
+ do j=jsta,jend
+ do i=1,im
+ if (sm(i,j) /= 0.0) smc(i,j,4) = spval
+ enddo
+ enddo
if(debugprint)print*,'sample l',VarName,' = ',1,smc(isa,jsa,4)
! soil temperature using nemsio
VarName='soilt1'
call read_netcdf_2d_scatter(me,ncid2d,1,im,jm,jsta,jsta_2l &
,jend_2u,MPI_COMM_COMP,icnt,idsp,spval,VarName,stc(1,jsta_2l,1))
+! mask water areas
+!$omp parallel do private(i,j)
+ do j=jsta,jend
+ do i=1,im
+ if (sm(i,j) /= 0.0) stc(i,j,1) = spval
+ enddo
+ enddo
if(debugprint)print*,'sample l','stc',' = ',1,stc(isa,jsa,1)
VarName='soilt2'
call read_netcdf_2d_scatter(me,ncid2d,1,im,jm,jsta,jsta_2l &
,jend_2u,MPI_COMM_COMP,icnt,idsp,spval,VarName,stc(1,jsta_2l,2))
+! mask water areas
+!$omp parallel do private(i,j)
+ do j=jsta,jend
+ do i=1,im
+ if (sm(i,j) /= 0.0) stc(i,j,2) = spval
+ enddo
+ enddo
if(debugprint)print*,'sample stc = ',1,stc(isa,jsa,2)
VarName='soilt3'
call read_netcdf_2d_scatter(me,ncid2d,1,im,jm,jsta,jsta_2l &
,jend_2u,MPI_COMM_COMP,icnt,idsp,spval,VarName,stc(1,jsta_2l,3))
+! mask water areas
+!$omp parallel do private(i,j)
+ do j=jsta,jend
+ do i=1,im
+ if (sm(i,j) /= 0.0) stc(i,j,3) = spval
+ enddo
+ enddo
if(debugprint)print*,'sample stc = ',1,stc(isa,jsa,3)
VarName='soilt4'
call read_netcdf_2d_scatter(me,ncid2d,1,im,jm,jsta,jsta_2l &
,jend_2u,MPI_COMM_COMP,icnt,idsp,spval,VarName,stc(1,jsta_2l,4))
+! mask water areas
+!$omp parallel do private(i,j)
+ do j=jsta,jend
+ do i=1,im
+ if (sm(i,j) /= 0.0) stc(i,j,4) = spval
+ enddo
+ enddo
if(debugprint)print*,'sample stc = ',1,stc(isa,jsa,4)
!$omp parallel do private(i,j)
@@ -1664,12 +1944,26 @@ SUBROUTINE INITPOST_NETCDF(ncid3d)
VarName='gflux_ave'
call read_netcdf_2d_scatter(me,ncid2d,1,im,jm,jsta,jsta_2l &
,jend_2u,MPI_COMM_COMP,icnt,idsp,spval,VarName,subshx)
+! mask water areas
+!$omp parallel do private(i,j)
+ do j=jsta,jend
+ do i=1,im
+ if (sm(i,j) == 1.0 .and. sice(i,j) ==0.) subshx(i,j) = spval
+ enddo
+ enddo
! if(debugprint)print*,'sample l',VarName,' = ',1,subshx(isa,jsa)
! inst ground heat flux using nemsio
VarName='gflux'
call read_netcdf_2d_scatter(me,ncid2d,1,im,jm,jsta,jsta_2l &
,jend_2u,MPI_COMM_COMP,icnt,idsp,spval,VarName,grnflx)
+! mask water areas
+!$omp parallel do private(i,j)
+ do j=jsta,jend
+ do i=1,im
+ if (sm(i,j) == 1.0 .and. sice(i,j) ==0.) grnflx(i,j) = spval
+ enddo
+ enddo
! time averaged zonal momentum flux using gfsio
VarName='uflx_ave'
@@ -1706,12 +2000,26 @@ SUBROUTINE INITPOST_NETCDF(ncid3d)
VarName='pevpr_ave'
call read_netcdf_2d_scatter(me,ncid2d,1,im,jm,jsta,jsta_2l &
,jend_2u,MPI_COMM_COMP,icnt,idsp,spval,VarName,avgpotevp)
+! mask water areas
+!$omp parallel do private(i,j)
+ do j=jsta,jend
+ do i=1,im
+ if (sm(i,j) == 1.0 .and. sice(i,j) ==0.) avgpotevp(i,j) = spval
+ enddo
+ enddo
! if(debugprint)print*,'sample l',VarName,' = ',1,potevp(isa,jsa)
! inst potential evaporation
VarName='pevpr'
call read_netcdf_2d_scatter(me,ncid2d,1,im,jm,jsta,jsta_2l &
,jend_2u,MPI_COMM_COMP,icnt,idsp,spval,VarName,potevp)
+! mask water areas
+!$omp parallel do private(i,j)
+ do j=jsta,jend
+ do i=1,im
+ if (sm(i,j) == 1.0 .and. sice(i,j) ==0.) potevp(i,j) = spval
+ enddo
+ enddo
do l=1,lm
!$omp parallel do private(i,j)
@@ -1806,7 +2114,7 @@ SUBROUTINE INITPOST_NETCDF(ncid3d)
sfcevp(i,j) = spval ! GFS does not have accumulated surface evaporation
acsnow(i,j) = spval ! GFS does not have averaged accumulated snow
acsnom(i,j) = spval ! GFS does not have snow melt
- sst(i,j) = spval ! GFS does not have sst????
+! sst(i,j) = spval ! GFS does not have sst????
thz0(i,j) = ths(i,j) ! GFS does not have THZ0, use THS to substitute
qz0(i,j) = spval ! GFS does not output humidity at roughness length
uz0(i,j) = spval ! GFS does not output u at roughness length
@@ -1964,27 +2272,46 @@ SUBROUTINE INITPOST_NETCDF(ncid3d)
VarName='watr_acc'
call read_netcdf_2d_scatter(me,ncid2d,1,im,jm,jsta,jsta_2l &
,jend_2u,MPI_COMM_COMP,icnt,idsp,spval,VarName,runoff)
+! mask water areas
+!$omp parallel do private(i,j)
+ do j=jsta,jend
+ do i=1,im
+ if (sm(i,j) /= 0.0) runoff(i,j) = spval
+ enddo
+ enddo
! if(debugprint)print*,'sample l',VcoordName,VarName,' = ', 1,runoff(isa,jsa)
! retrieve shelter max temperature using nemsio
- VarName='tmpmax_max2m'
+ VarName='t02max'
call read_netcdf_2d_scatter(me,ncid2d,1,im,jm,jsta,jsta_2l &
,jend_2u,MPI_COMM_COMP,icnt,idsp,spval,VarName,maxtshltr)
! retrieve shelter min temperature using nemsio
- VarName='tmpmin_min2m'
+ VarName='t02min'
call read_netcdf_2d_scatter(me,ncid2d,1,im,jm,jsta,jsta_2l &
,jend_2u,MPI_COMM_COMP,icnt,idsp,spval,VarName,mintshltr)
! if(debugprint)print*,'sample l',VcoordName,VarName,' = ', &
! 1,mintshltr(im/2,(jsta+jend)/2)
+
+! retrieve shelter max RH
+ VarName='rh02max'
+ call read_netcdf_2d_scatter(me,ncid2d,1,im,jm,jsta,jsta_2l &
+ ,jend_2u,MPI_COMM_COMP,icnt,idsp,spval,VarName,maxrhshltr)
+
+! retrieve shelter min temperature using nemsio
+ VarName='rh02min'
+ call read_netcdf_2d_scatter(me,ncid2d,1,im,jm,jsta,jsta_2l &
+ ,jend_2u,MPI_COMM_COMP,icnt,idsp,spval,VarName,minrhshltr)
+! if(debugprint)print*,'sample l',VcoordName,VarName,' = ', &
+! 1,mintshltr(im/2,(jsta+jend)/2)
-!$omp parallel do private(i,j)
- do j=jsta_2l,jend_2u
- do i=1,im
- MAXRHSHLTR(i,j) = SPVAL
- MINRHSHLTR(i,j) = SPVAL
- enddo
- enddo
+!!$omp parallel do private(i,j)
+! do j=jsta_2l,jend_2u
+! do i=1,im
+! MAXRHSHLTR(i,j) = SPVAL
+! MINRHSHLTR(i,j) = SPVAL
+! enddo
+! enddo
! retrieve ice thickness using nemsio
VarName='icetk'
@@ -1996,6 +2323,13 @@ SUBROUTINE INITPOST_NETCDF(ncid3d)
VarName='wilt'
call read_netcdf_2d_scatter(me,ncid2d,1,im,jm,jsta,jsta_2l &
,jend_2u,MPI_COMM_COMP,icnt,idsp,spval,VarName,smcwlt)
+! mask water areas
+!$omp parallel do private(i,j)
+ do j=jsta,jend
+ do i=1,im
+ if (sm(i,j) /= 0.0) smcwlt(i,j) = spval
+ enddo
+ enddo
! if(debugprint)print*,'sample l',VcoordName,VarName,' = ', 1,smcwlt(isa,jsa)
! retrieve sunshine duration using nemsio
@@ -2007,6 +2341,13 @@ SUBROUTINE INITPOST_NETCDF(ncid3d)
VarName='fldcp'
call read_netcdf_2d_scatter(me,ncid2d,1,im,jm,jsta,jsta_2l &
,jend_2u,MPI_COMM_COMP,icnt,idsp,spval,VarName,fieldcapa)
+! mask water areas
+!$omp parallel do private(i,j)
+ do j=jsta,jend
+ do i=1,im
+ if (sm(i,j) /= 0.0) fieldcapa(i,j) = spval
+ enddo
+ enddo
! if(debugprint)print*,'sample l',VcoordName,VarName,' = ', 1,fieldcapa(isa,jsa)
! retrieve time averaged surface visible beam downward solar flux
@@ -2064,9 +2405,9 @@ SUBROUTINE INITPOST_NETCDF(ncid3d)
! retrieve shelter max specific humidity using nemsio
VarName='spfhmax_max2m'
call read_netcdf_2d_scatter(me,ncid2d,1,im,jm,jsta,jsta_2l &
- ,jend_2u,MPI_COMM_COMP,icnt,idsp,spval,VarName,maxtshltr)
+ ,jend_2u,MPI_COMM_COMP,icnt,idsp,spval,VarName,maxqshltr)
! if(debugprint)print*,'sample l',VcoordName,VarName,' = ',
-! 1,maxtshltr(isa,jsa)
+! 1,maxqshltr(isa,jsa)
! retrieve shelter min temperature using nemsio
VarName='spfhmin_min2m'
@@ -2077,36 +2418,85 @@ SUBROUTINE INITPOST_NETCDF(ncid3d)
VarName='ssrun_acc'
call read_netcdf_2d_scatter(me,ncid2d,1,im,jm,jsta,jsta_2l &
,jend_2u,MPI_COMM_COMP,icnt,idsp,spval,VarName,SSROFF)
+! mask water areas
+!$omp parallel do private(i,j)
+ do j=jsta,jend
+ do i=1,im
+ if (sm(i,j) /= 0.0) ssroff(i,j) = spval
+ enddo
+ enddo
! retrieve direct soil evaporation
VarName='evbs_ave'
call read_netcdf_2d_scatter(me,ncid2d,1,im,jm,jsta,jsta_2l &
,jend_2u,MPI_COMM_COMP,icnt,idsp,spval,VarName,avgedir)
+! mask water areas
+!$omp parallel do private(i,j)
+ do j=jsta,jend
+ do i=1,im
+ if (sm(i,j) /= 0.0) avgedir(i,j) = spval
+ enddo
+ enddo
! retrieve CANOPY WATER EVAP
VarName='evcw_ave'
call read_netcdf_2d_scatter(me,ncid2d,1,im,jm,jsta,jsta_2l &
,jend_2u,MPI_COMM_COMP,icnt,idsp,spval,VarName,avgecan)
+! mask water areas
+!$omp parallel do private(i,j)
+ do j=jsta,jend
+ do i=1,im
+ if (sm(i,j) /= 0.0) avgecan(i,j) = spval
+ enddo
+ enddo
! retrieve PLANT TRANSPIRATION
VarName='trans_ave'
call read_netcdf_2d_scatter(me,ncid2d,1,im,jm,jsta,jsta_2l &
,jend_2u,MPI_COMM_COMP,icnt,idsp,spval,VarName,avgetrans)
+! mask water areas
+!$omp parallel do private(i,j)
+ do j=jsta,jend
+ do i=1,im
+ if (sm(i,j) /= 0.0) avgetrans(i,j) = spval
+ enddo
+ enddo
! retrieve snow sublimation
VarName='sbsno_ave'
call read_netcdf_2d_scatter(me,ncid2d,1,im,jm,jsta,jsta_2l &
,jend_2u,MPI_COMM_COMP,icnt,idsp,spval,VarName,avgesnow)
+! mask water areas
+!$omp parallel do private(i,j)
+ do j=jsta,jend
+ do i=1,im
+ if (sm(i,j)==1.0 .and. sice(i,j)==0.) avgesnow(i,j)=spval
+ enddo
+ enddo
! retrive total soil moisture
VarName='soilm'
call read_netcdf_2d_scatter(me,ncid2d,1,im,jm,jsta,jsta_2l &
,jend_2u,MPI_COMM_COMP,icnt,idsp,spval,VarName,smstot)
+! mask water areas
+!$omp parallel do private(i,j)
+ do j=jsta,jend
+ do i=1,im
+ if (sm(i,j) /= 0.0) smstot(i,j) = spval
+ enddo
+ enddo
! retrieve snow phase change heat flux
VarName='snohf'
call read_netcdf_2d_scatter(me,ncid2d,1,im,jm,jsta,jsta_2l &
,jend_2u,MPI_COMM_COMP,icnt,idsp,spval,VarName,snopcx)
+! mask water areas
+!$omp parallel do private(i,j)
+ do j=jsta,jend
+ do i=1,im
+ if (sm(i,j) /= 0.0) snopcx(i,j) = spval
+ enddo
+ enddo
! GFS does not have deep convective cloud top and bottom fields
@@ -2319,6 +2709,8 @@ subroutine read_netcdf_2d_scatter(me,ncid,ifhr,im,jm,jsta,jsta_2l &
real,intent(out) :: buf(im,jsta_2l:jend_2u)
integer :: iret,i,j,jj,varid
real,parameter :: spval_netcdf=9.99e+20
+! dong for hgtsfc 2d var but with 3d missing value
+ real,parameter :: spval_netcdf_3d=-1.e+10
real dummy(im,jm),dummy2(im,jm)
if(me == 0) then
@@ -2339,7 +2731,13 @@ subroutine read_netcdf_2d_scatter(me,ncid,ifhr,im,jm,jsta,jsta_2l &
jj=j
do i=1,im
dummy(i,j)=dummy2(i,jj)
- if(abs(dummy(i,j)-spval_netcdf)<0.1)dummy(i,j)=spval
+! dong for hgtsfc and pressfc
+ if (trim(varname) .eq. "hgtsfc" .or. trim(varname) &
+ .eq. "pressfc") then
+ if(abs(dummy(i,j)-spval_netcdf_3d)<0.1)dummy(i,j)=spval
+ else
+ if(abs(dummy(i,j)-spval_netcdf)<0.1)dummy(i,j)=spval
+ end if
end do
end do
end if
diff --git a/comupp/src/unipost/MDL2AGL.f b/comupp/src/unipost/MDL2AGL.f
index d0fa88a0b..633534564 100644
--- a/comupp/src/unipost/MDL2AGL.f
+++ b/comupp/src/unipost/MDL2AGL.f
@@ -45,6 +45,10 @@ SUBROUTINE MDL2AGL
!
use vrbls3d, only: zmid, zint, dbz, dbzr, dbzi, dbzc, uh, vh, pmid, t, q, ref_10cm
use vrbls2d, only: refd_max, up_heli_max, up_heli_max16, grpl_max, &
+ up_heli_min, up_heli_min16, up_heli_max02, &
+ up_heli_min02, up_heli_max03, up_heli_min03, &
+ rel_vort_max, rel_vort_max01, hail_max2d, hail_maxk1,&
+ refdm10c_max,rel_vort_maxhy1, &
ltg1_max, ltg2_max, ltg3_max, up_heli, up_heli16, &
nci_ltg, nca_ltg, nci_wq, nca_wq, nci_refd, nca_refd,&
u10, v10, u10h, v10h
@@ -388,6 +392,41 @@ SUBROUTINE MDL2AGL
else
fld_info(cfld)%ntrange=0
endif
+ fld_info(cfld)%ntrange=1
+ datapd(1:im,1:jend-jsta+1,cfld)=GRID1(1:im,jsta:jend)
+ endif
+ END IF
+
+!--- Max Derived Radar Reflectivity at -10C
+ IF((IGET(785).GT.0) )THEN
+ DO J=JSTA,JEND
+ DO I=1,IM
+ GRID1(I,J)=REFDM10C_MAX(I,J)
+ ENDDO
+ ENDDO
+ ID(1:25)=0
+ ID(02)=129
+ ID(9)=105
+ ID(11) = NINT(ZAGL(2))
+ ID(20) = 2
+ ID(19) = IFHR
+ IF (IFHR.EQ.0) THEN
+ ID(18) = 0
+ ELSE
+ ID(18) = IFHR - 1
+ ENDIF
+ if(grib=='grib1') then
+ CALL GRIBIT(IGET(785),LP,GRID1,IM,JM)
+ elseif(grib=='grib2') then
+ cfld=cfld+1
+ fld_info(cfld)%ifld=IAVBLFLD(IGET(785))
+ fld_info(cfld)%lvl=LVLSXML(LP,IGET(785))
+ if (IFHR .gt. 0) then
+ fld_info(cfld)%tinvstat=1
+ else
+ fld_info(cfld)%tinvstat=0
+ endif
+ fld_info(cfld)%ntrange=1
datapd(1:im,1:jend-jsta+1,cfld)=GRID1(1:im,jsta:jend)
endif
END IF
@@ -418,12 +457,12 @@ SUBROUTINE MDL2AGL
cfld=cfld+1
fld_info(cfld)%ifld=IAVBLFLD(IGET(420))
fld_info(cfld)%lvl=LVLSXML(LP,IGET(420))
- fld_info(cfld)%tinvstat = 1
if (IFHR > 0) then
- fld_info(cfld)%ntrange = 1
+ fld_info(cfld)%tinvstat = 1
else
- fld_info(cfld)%ntrange = 0
+ fld_info(cfld)%tinvstat = 0
endif
+ fld_info(cfld)%ntrange = 1
datapd(1:im,1:jend-jsta+1,cfld) = GRID1(1:im,jsta:jend)
endif
END IF
@@ -464,6 +503,400 @@ SUBROUTINE MDL2AGL
endif
END IF
+!--- Min Updraft Helicity
+ IF((IGET(786).GT.0) )THEN
+ DO J=JSTA,JEND
+ DO I=1,IM
+ GRID1(I,J)=UP_HELI_MIN(I,J)
+ ENDDO
+ ENDDO
+ ID(1:25)=0
+ ID(02)=129
+! ID(11) = NINT(ZAGL(2))
+ ID(9) = 106
+ ID(10) = 50
+ ID(11) = 20
+ ID(20) = 2
+ ID(19) = IFHR
+ IF (IFHR.EQ.0) THEN
+ ID(18) = 0
+ ELSE
+ ID(18) = IFHR - 1
+ ENDIF
+ if(grib=='grib1') then
+ CALL GRIBIT(IGET(786),LP,GRID1,IM,JM)
+ elseif(grib=='grib2') then
+ cfld=cfld+1
+ fld_info(cfld)%ifld=IAVBLFLD(IGET(786))
+ fld_info(cfld)%lvl=LVLSXML(LP,IGET(786))
+ if (IFHR > 0) then
+ fld_info(cfld)%tinvstat = 1
+ else
+ fld_info(cfld)%tinvstat = 0
+ endif
+ fld_info(cfld)%ntrange = 1
+ datapd(1:im,1:jend-jsta+1,cfld) = GRID1(1:im,jsta:jend)
+ endif
+ END IF
+
+!--- Min Updraft Helicity 1-6 km
+ IF((IGET(787).GT.0) )THEN
+ DO J=JSTA,JEND
+ DO I=1,IM
+ GRID1(I,J)=UP_HELI_MIN16(I,J)
+ ENDDO
+ ENDDO
+ ID(1:25)=0
+ ID(02)=129
+! ID(11) = NINT(ZAGL(2))
+ ID(9) = 106
+ ID(10) = 60
+ ID(11) = 10
+ ID(20) = 2
+ ID(19) = IFHR
+ IF (IFHR.EQ.0) THEN
+ ID(18) = 0
+ ELSE
+ ID(18) = IFHR - 1
+ ENDIF
+ if(grib=='grib1') then
+ CALL GRIBIT(IGET(787),LP,GRID1,IM,JM)
+ elseif(grib=='grib2') then
+ cfld=cfld+1
+ fld_info(cfld)%ifld=IAVBLFLD(IGET(787))
+ fld_info(cfld)%lvl=LVLSXML(LP,IGET(787))
+ if (ifhr == 0) then
+ fld_info(cfld)%tinvstat = 0
+ else
+ fld_info(cfld)%tinvstat = 1
+ endif
+ fld_info(cfld)%ntrange = 1
+ datapd(1:im,1:jend-jsta+1,cfld) = GRID1(1:im,jsta:jend)
+ endif
+ END IF
+
+!--- Max Updraft Helicity 0-2 km
+ IF((IGET(788).GT.0) )THEN
+ DO J=JSTA,JEND
+ DO I=1,IM
+ GRID1(I,J)=UP_HELI_MAX02(I,J)
+ ENDDO
+ ENDDO
+ ID(1:25)=0
+ ID(02)=129
+! ID(11) = NINT(ZAGL(2))
+ ID(9) = 106
+ ID(10) = 50
+ ID(11) = 20
+ ID(20) = 2
+ ID(19) = IFHR
+ IF (IFHR.EQ.0) THEN
+ ID(18) = 0
+ ELSE
+ ID(18) = IFHR - 1
+ ENDIF
+ if(grib=='grib1') then
+ CALL GRIBIT(IGET(788),LP,GRID1,IM,JM)
+ elseif(grib=='grib2') then
+ cfld=cfld+1
+ fld_info(cfld)%ifld=IAVBLFLD(IGET(788))
+ fld_info(cfld)%lvl=LVLSXML(LP,IGET(788))
+ if (IFHR > 0) then
+ fld_info(cfld)%tinvstat = 1
+ else
+ fld_info(cfld)%tinvstat = 0
+ endif
+ fld_info(cfld)%ntrange = 1
+ datapd(1:im,1:jend-jsta+1,cfld) = GRID1(1:im,jsta:jend)
+ endif
+ END IF
+!--- Min Updraft Helicity 0-2 km
+ IF((IGET(789).GT.0) )THEN
+ DO J=JSTA,JEND
+ DO I=1,IM
+ GRID1(I,J)=UP_HELI_MIN02(I,J)
+ ENDDO
+ ENDDO
+ ID(1:25)=0
+ ID(02)=129
+! ID(11) = NINT(ZAGL(2))
+ ID(9) = 106
+ ID(10) = 60
+ ID(11) = 10
+ ID(20) = 2
+ ID(19) = IFHR
+ IF (IFHR.EQ.0) THEN
+ ID(18) = 0
+ ELSE
+ ID(18) = IFHR - 1
+ ENDIF
+ if(grib=='grib1') then
+ CALL GRIBIT(IGET(789),LP,GRID1,IM,JM)
+ elseif(grib=='grib2') then
+ cfld=cfld+1
+ fld_info(cfld)%ifld=IAVBLFLD(IGET(789))
+ fld_info(cfld)%lvl=LVLSXML(LP,IGET(789))
+ if (ifhr == 0) then
+ fld_info(cfld)%tinvstat = 0
+ else
+ fld_info(cfld)%tinvstat = 1
+ endif
+ fld_info(cfld)%ntrange = 1
+ datapd(1:im,1:jend-jsta+1,cfld) = GRID1(1:im,jsta:jend)
+ endif
+ END IF
+
+!--- Max Updraft Helicity 0-3 km
+ IF((IGET(790).GT.0) )THEN
+ DO J=JSTA,JEND
+ DO I=1,IM
+ GRID1(I,J)=UP_HELI_MAX03(I,J)
+ ENDDO
+ ENDDO
+ ID(1:25)=0
+ ID(02)=129
+! ID(11) = NINT(ZAGL(2))
+ ID(9) = 106
+ ID(10) = 50
+ ID(11) = 20
+ ID(20) = 2
+ ID(19) = IFHR
+ IF (IFHR.EQ.0) THEN
+ ID(18) = 0
+ ELSE
+ ID(18) = IFHR - 1
+ ENDIF
+ if(grib=='grib1') then
+ CALL GRIBIT(IGET(790),LP,GRID1,IM,JM)
+ elseif(grib=='grib2') then
+ cfld=cfld+1
+ fld_info(cfld)%ifld=IAVBLFLD(IGET(790))
+ fld_info(cfld)%lvl=LVLSXML(LP,IGET(790))
+ if (IFHR > 0) then
+ fld_info(cfld)%tinvstat = 1
+ else
+ fld_info(cfld)%tinvstat = 0
+ endif
+ fld_info(cfld)%ntrange = 1
+ datapd(1:im,1:jend-jsta+1,cfld) = GRID1(1:im,jsta:jend)
+ endif
+ END IF
+
+!--- Min Updraft Helicity 0-3 km
+ IF((IGET(791).GT.0) )THEN
+ DO J=JSTA,JEND
+ DO I=1,IM
+ GRID1(I,J)=UP_HELI_MIN03(I,J)
+ ENDDO
+ ENDDO
+ ID(1:25)=0
+ ID(02)=129
+! ID(11) = NINT(ZAGL(2))
+ ID(9) = 106
+ ID(10) = 60
+ ID(11) = 10
+ ID(20) = 2
+ ID(19) = IFHR
+ IF (IFHR.EQ.0) THEN
+ ID(18) = 0
+ ELSE
+ ID(18) = IFHR - 1
+ ENDIF
+ if(grib=='grib1') then
+ CALL GRIBIT(IGET(791),LP,GRID1,IM,JM)
+ elseif(grib=='grib2') then
+ cfld=cfld+1
+ fld_info(cfld)%ifld=IAVBLFLD(IGET(791))
+ fld_info(cfld)%lvl=LVLSXML(LP,IGET(791))
+ if (ifhr == 0) then
+ fld_info(cfld)%tinvstat = 0
+ else
+ fld_info(cfld)%tinvstat = 1
+ endif
+ fld_info(cfld)%ntrange = 1
+ datapd(1:im,1:jend-jsta+1,cfld) = GRID1(1:im,jsta:jend)
+ endif
+ END IF
+
+!--- Max Relative Vertical Vorticity 0-2 km
+ IF((IGET(792).GT.0) )THEN
+ DO J=JSTA,JEND
+ DO I=1,IM
+ GRID1(I,J)=REL_VORT_MAX(I,J)
+ ENDDO
+ ENDDO
+ ID(1:25)=0
+ ID(02)=129
+! ID(11) = NINT(ZAGL(2))
+ ID(9) = 106
+ ID(10) = 50
+ ID(11) = 20
+ ID(20) = 2
+ ID(19) = IFHR
+ IF (IFHR.EQ.0) THEN
+ ID(18) = 0
+ ELSE
+ ID(18) = IFHR - 1
+ ENDIF
+ if(grib=='grib1') then
+ CALL GRIBIT(IGET(792),LP,GRID1,IM,JM)
+ elseif(grib=='grib2') then
+ cfld=cfld+1
+ fld_info(cfld)%ifld=IAVBLFLD(IGET(792))
+ fld_info(cfld)%lvl=LVLSXML(LP,IGET(792))
+ if (IFHR > 0) then
+ fld_info(cfld)%tinvstat = 1
+ else
+ fld_info(cfld)%tinvstat = 0
+ endif
+ fld_info(cfld)%ntrange = 1
+ datapd(1:im,1:jend-jsta+1,cfld) = GRID1(1:im,jsta:jend)
+ endif
+ END IF
+
+!--- Max Relative Vertical Vorticity 0-1 km
+ IF((IGET(793).GT.0) )THEN
+ DO J=JSTA,JEND
+ DO I=1,IM
+ GRID1(I,J)=REL_VORT_MAX01(I,J)
+ ENDDO
+ ENDDO
+ ID(1:25)=0
+ ID(02)=129
+! ID(11) = NINT(ZAGL(2))
+ ID(9) = 106
+ ID(10) = 60
+ ID(11) = 10
+ ID(20) = 2
+ ID(19) = IFHR
+ IF (IFHR.EQ.0) THEN
+ ID(18) = 0
+ ELSE
+ ID(18) = IFHR - 1
+ ENDIF
+ if(grib=='grib1') then
+ CALL GRIBIT(IGET(793),LP,GRID1,IM,JM)
+ elseif(grib=='grib2') then
+ cfld=cfld+1
+ fld_info(cfld)%ifld=IAVBLFLD(IGET(793))
+ fld_info(cfld)%lvl=LVLSXML(LP,IGET(793))
+ if (ifhr > 0) then
+ fld_info(cfld)%tinvstat = 1
+ else
+ fld_info(cfld)%tinvstat = 0
+ endif
+ fld_info(cfld)%ntrange = 1
+ datapd(1:im,1:jend-jsta+1,cfld) = GRID1(1:im,jsta:jend)
+ endif
+ END IF
+!--- Max Relative Vertical Vorticity @ hybrid level 1
+ IF((IGET(890).GT.0) )THEN
+ DO J=JSTA,JEND
+ DO I=1,IM
+ GRID1(I,J)=REL_VORT_MAXHY1(I,J)
+ ENDDO
+ ENDDO
+ ID(1:25)=0
+ ID(02)=129
+! ID(11) = NINT(ZAGL(2))
+ ID(9) = 106
+ ID(10) = 60
+ ID(11) = 10
+ ID(20) = 2
+ ID(19) = IFHR
+ IF (IFHR.EQ.0) THEN
+ ID(18) = 0
+ ELSE
+ ID(18) = IFHR - 1
+ ENDIF
+ if(grib=='grib1') then
+ CALL GRIBIT(IGET(890),LP,GRID1,IM,JM)
+ elseif(grib=='grib2') then
+ cfld=cfld+1
+ fld_info(cfld)%ifld=IAVBLFLD(IGET(890))
+ fld_info(cfld)%lvl=LVLSXML(LP,IGET(890))
+ if (ifhr > 0) then
+ fld_info(cfld)%tinvstat = 1
+ else
+ fld_info(cfld)%tinvstat = 0
+ endif
+ fld_info(cfld)%ntrange = 1
+ datapd(1:im,1:jend-jsta+1,cfld) = GRID1(1:im,jsta:jend)
+ endif
+ END IF
+
+!--- Max Hail Diameter in Column
+ IF((IGET(794).GT.0) )THEN
+ DO J=JSTA,JEND
+ DO I=1,IM
+ GRID1(I,J)=HAIL_MAX2D(I,J)
+ ENDDO
+ ENDDO
+ ID(1:25)=0
+ ID(02)=129
+! ID(11) = NINT(ZAGL(2))
+ ID(9) = 106
+ ID(10) = 60
+ ID(11) = 10
+ ID(20) = 2
+ ID(19) = IFHR
+ IF (IFHR.EQ.0) THEN
+ ID(18) = 0
+ ELSE
+ ID(18) = IFHR - 1
+ ENDIF
+ if(grib=='grib1') then
+ CALL GRIBIT(IGET(794),LP,GRID1,IM,JM)
+ elseif(grib=='grib2') then
+ cfld=cfld+1
+ fld_info(cfld)%ifld=IAVBLFLD(IGET(794))
+ fld_info(cfld)%lvl=LVLSXML(LP,IGET(794))
+ if (ifhr == 0) then
+ fld_info(cfld)%tinvstat = 0
+ else
+ fld_info(cfld)%tinvstat = 1
+ endif
+ fld_info(cfld)%ntrange = 1
+ datapd(1:im,1:jend-jsta+1,cfld) = GRID1(1:im,jsta:jend)
+ endif
+ END IF
+
+!--- Max Hail Diameter at k=1
+ IF((IGET(795).GT.0) )THEN
+ DO J=JSTA,JEND
+ DO I=1,IM
+ GRID1(I,J)=HAIL_MAXK1(I,J)
+ ENDDO
+ ENDDO
+ ID(1:25)=0
+ ID(02)=129
+! ID(11) = NINT(ZAGL(2))
+ ID(9) = 106
+ ID(10) = 60
+ ID(11) = 10
+ ID(20) = 2
+ ID(19) = IFHR
+ IF (IFHR.EQ.0) THEN
+ ID(18) = 0
+ ELSE
+ ID(18) = IFHR - 1
+ ENDIF
+ if(grib=='grib1') then
+ CALL GRIBIT(IGET(795),LP,GRID1,IM,JM)
+ elseif(grib=='grib2') then
+ cfld=cfld+1
+ fld_info(cfld)%ifld=IAVBLFLD(IGET(795))
+ fld_info(cfld)%lvl=LVLSXML(LP,IGET(795))
+ if (ifhr == 0) then
+ fld_info(cfld)%tinvstat = 0
+ else
+ fld_info(cfld)%tinvstat = 1
+ endif
+ fld_info(cfld)%ntrange = 1
+ datapd(1:im,1:jend-jsta+1,cfld) = GRID1(1:im,jsta:jend)
+ endif
+ END IF
+
!--- Max Column Integrated Graupel
IF((IGET(429).GT.0) )THEN
DO J=JSTA,JEND
diff --git a/comupp/src/unipost/MDL2P.f b/comupp/src/unipost/MDL2P.f
index 0cf1ec484..91ff5a662 100644
--- a/comupp/src/unipost/MDL2P.f
+++ b/comupp/src/unipost/MDL2P.f
@@ -56,7 +56,7 @@ SUBROUTINE MDL2P(iostatusD3D)
!$$$
!
!
- use vrbls4d, only: DUST
+ use vrbls4d, only: DUST, SMOKE
use vrbls3d, only: PINT, O3, PMID, T, Q, UH, VH, WH, OMGA, Q2, CWM, &
QQW, QQI, QQR, QQS, QQG, DBZ, F_RIMEF, TTND, CFR, &
ICING_GFIP, RLWTT, RSWTT, VDIFFTT, TCUCN, TCUCNS, &
@@ -75,7 +75,8 @@ SUBROUTINE MDL2P(iostatusD3D)
use ctlblk_mod, only: MODELNAME, LP1, ME, JSTA, JEND, LM, SPVAL, SPL, &
ALSL, JEND_M, SMFLAG, GRIB, CFLD, FLD_INFO, DATAPD,&
TD3D, IFHR, IFMIN, IM, JM, NBIN_DU, JSTA_2L, &
- JEND_2U, LSM, d3d_on, gocart_on, ioform, imp_physics
+ JEND_2U, LSM, d3d_on, gocart_on, ioform, NBIN_SM, &
+ imp_physics
use rqstfld_mod, only: IGET, LVLS, ID, IAVBLFLD, LVLSXML
use gridspec_mod, only: GRIDTYPE, MAPTYPE, DXVAL
!- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
@@ -102,7 +103,7 @@ SUBROUTINE MDL2P(iostatusD3D)
&, ICINGFSL, ICINGVSL &
&, GTGSL,CATSL,MWTSL
! REAL D3DSL(IM,JM,27),DUSTSL(IM,JM,NBIN_DU)
- REAL, allocatable :: D3DSL(:,:,:), DUSTSL(:,:,:)
+ REAL, allocatable :: D3DSL(:,:,:), DUSTSL(:,:,:), SMOKESL(:,:,:)
!
integer,intent(in) :: iostatusD3D
INTEGER, dimension(im,jsta_2l:jend_2u) :: NL1X, NL1XF
@@ -166,6 +167,15 @@ SUBROUTINE MDL2P(iostatusD3D)
enddo
enddo
endif
+ if (.not. allocated(smokesl)) allocate(smokesl(im,jm,nbin_sm))
+!$omp parallel do private(i,j,l)
+ do l=1,nbin_sm
+ do j=1,jm
+ do i=1,im
+ SMOKESL(i,j,l) = SPVAL
+ enddo
+ enddo
+ enddo
!
! SET TOTAL NUMBER OF POINTS ON OUTPUT GRID.
!
@@ -209,6 +219,8 @@ SUBROUTINE MDL2P(iostatusD3D)
(IGET(438) > 0) .OR. (IGET(439) > 0) .OR. &
(IGET(440) > 0) .OR. (IGET(441) > 0) .OR. &
(IGET(442) > 0) .OR. (IGET(455) > 0) .OR. &
+! ADD SMOKE FIELDS
+ (IGET(738) > 0) .OR. &
! NCAR ICING
(IGET(450) > 0) .OR. (MODELNAME == 'RAPR') .OR.&
(IGET(480) > 0) .OR. (MODELNAME == 'RAPR') .OR.&
@@ -246,6 +258,8 @@ SUBROUTINE MDL2P(iostatusD3D)
OSL(I,J) = SPVAL
USL(I,J) = SPVAL
VSL(I,J) = SPVAL
+! dong initialize wsl
+ WSL(I,J) = SPVAL
Q2SL(I,J) = SPVAL
C1D(I,J) = SPVAL ! Total condensate
QW1(I,J) = SPVAL ! Cloud water
@@ -366,6 +380,9 @@ SUBROUTINE MDL2P(iostatusD3D)
IF(DUST(I,J,1,K) < SPVAL) DUSTSL(I,J,K) = DUST(I,J,1,K)
ENDDO
endif
+ DO K = 1, NBIN_SM
+ IF(SMOKE(I,J,1,K) < SPVAL) SMOKESL(I,J,K)=SMOKE(I,J,1,K)
+ ENDDO
! only interpolate GFS d3d fields when reqested
! if(iostatusD3D ==0 .and. d3d_on)then
@@ -571,6 +588,10 @@ SUBROUTINE MDL2P(iostatusD3D)
DUSTSL(I,J,K) = DUST(I,J,LL,K) + (DUST(I,J,LL,K)-DUST(I,J,LL-1,K))*FACT
ENDDO
endif
+ DO K = 1, NBIN_SM
+ IF(SMOKE(I,J,LL,K) < SPVAL .AND. SMOKE(I,J,LL-1,K) < SPVAL) &
+ SMOKESL(I,J,K)=SMOKE(I,J,LL,K)+(SMOKE(I,J,LL,K)-SMOKE(I,J,LL-1,K))*FACT
+ ENDDO
! only interpolate GFS d3d fields when == ested
! if(iostatusD3D==0)then
@@ -1114,7 +1135,7 @@ SUBROUTINE MDL2P(iostatusD3D)
!
IF(IGET(012) > 0)THEN
IF(LVLS(LP,IGET(012)) > 0)THEN
- IF(IGET(023) > 0 .AND. NINT(SPL(LP)) == 100000) THEN
+ IF((IGET(023) > 0 .OR. IGET(445) > 0) .AND. NINT(SPL(LP)) == 100000) THEN
GO TO 222
ELSE
!$omp parallel do private(i,j)
@@ -1314,7 +1335,7 @@ SUBROUTINE MDL2P(iostatusD3D)
ENDDO
ENDDO
!
- IF(MODELNAME == 'GFS')THEN
+ IF(MODELNAME == 'GFS' .or. MODELNAME == 'FV3R')THEN
CALL CALRH_GFS(EGRID2(1,jsta),TSL(1,jsta),QSL(1,jsta),EGRID1(1,jsta))
ELSEIF (MODELNAME == 'RAPR')THEN
CALL CALRH_GSD(EGRID2(1,jsta),TSL(1,jsta),QSL(1,jsta),EGRID1(1,jsta))
@@ -2258,6 +2279,35 @@ SUBROUTINE MDL2P(iostatusD3D)
endif
ENDIF
ENDIF
+! E. James - 8 Dec 2017: SMOKE from WRF-CHEM
+!--- SMOKE
+ IF (IGET(738) > 0) THEN
+ IF (LVLS(LP,IGET(738)) > 0) THEN
+!$omp parallel do private(i,j)
+ DO J=JSTA,JEND
+ DO I=1,IM
+ GRID1(I,J) = (1./RD)*SMOKESL(I,J,1)*(SPL(LP)/TSL(I,J))
+ ENDDO
+ ENDDO
+ if(grib == 'grib1')then
+ ID(1:46)=0
+ ID(02)=141 ! Parameter Table 141
+ ID(36)=2
+ CALL GRIBIT(IGET(738),LP,GRID1,IM,JM)
+ elseif(grib == 'grib2') then
+ cfld = cfld + 1
+ fld_info(cfld)%ifld=IAVBLFLD(IGET(738))
+ fld_info(cfld)%lvl=LVLSXML(LP,IGET(738))
+!$omp parallel do private(i,j,jj)
+ do j=1,jend-jsta+1
+ jj = jsta+j-1
+ do i=1,im
+ datapd(i,j,cfld) = GRID1(i,jj)
+ enddo
+ enddo
+ endif
+ ENDIF
+ ENDIF
if (gocart_on) then
!--- DUST
IF (IGET(438) > 0) THEN
@@ -4156,6 +4206,8 @@ SUBROUTINE MDL2P(iostatusD3D)
! ADJUST 1000 MB HEIGHT TO MEMBEANCE SLP
IF(IGET(023) > 0.OR.IGET(445) > 0)THEN
IF(IGET(012) > 0)THEN
+! dong add missing value to 1000 mb hgt
+ GRID1= spval
DO LP=LSM,1,-1
IF(ABS(SPL(LP)-1.0E5) <= 1.0E-5)THEN
IF(LVLS(LP,IGET(012)) > 0)THEN
@@ -4173,6 +4225,7 @@ SUBROUTINE MDL2P(iostatusD3D)
!$omp parallel do private(i,j,PSLPIJ,ALPSL,PSFC)
DO J=JSTA,JEND
DO I=1,IM
+ IF(PSLP(I,J) < spval) THEN
PSLPIJ = PSLP(I,J)
ALPSL = LOG(PSLPIJ)
PSFC = PINT(I,J,NINT(LMH(I,J))+1)
@@ -4183,6 +4236,7 @@ SUBROUTINE MDL2P(iostatusD3D)
ENDIF
Z1000(I,J) = GRID1(I,J)*GI
GRID1(I,J) = Z1000(I,J)
+ END IF
ENDDO
ENDDO
END IF
diff --git a/comupp/src/unipost/MDLFLD.f b/comupp/src/unipost/MDLFLD.f
index 069f065ee..5ea2dddcb 100755
--- a/comupp/src/unipost/MDLFLD.f
+++ b/comupp/src/unipost/MDLFLD.f
@@ -75,7 +75,7 @@ SUBROUTINE MDLFLD
! MACHINE : CRAY C-90
!$$$
!
- use vrbls4d, only: dust, salt, suso, waso, soot
+ use vrbls4d, only: dust, salt, suso, waso, soot, smoke
use vrbls3d, only: zmid, t, pmid, q, cwm, f_ice, f_rain, f_rimef, qqw, qqi,&
qqr, qqs, cfr, cfr_raw, dbz, dbzr, dbzi, dbzc, qqw, nlice, nrain, qqg, zint, qqni,&
qqnr, qqnw, qqnwfa, qqnifa, uh, vh, mcvg, omga, wh, q2, ttnd, rswtt, &
@@ -172,6 +172,7 @@ SUBROUTINE MDLFLD
! ALLOCATE LOCAL ARRAYS
!
! Set up logical flag to indicate whether model outputs radar directly
+ Model_Radar = .false.
IF (ABS(MAXVAL(REF_10CM)-SPVAL)>SMALL)Model_Radar=.True.
if(me==0)print*,'Did post read in model derived radar ref ',Model_Radar
ALLOCATE(EL (IM,JSTA_2L:JEND_2U,LM))
@@ -635,12 +636,23 @@ SUBROUTINE MDLFLD
ENDIF
ELSEIF (IICE == 1) THEN
QQG(I,J,L) = max(QQG(I,J,L),0.0)
- DBZR(I,J,L) = ((QQR(I,J,L)*DENS)**1.75) * 3.630803E-9 * 1.E18 ! Z FOR RAIN
- DBZI(I,J,L) = DBZI(I,J,L) + ((QQS(I,J,L)*DENS)**1.75) * &
+ if(QQR(I,J,L) < SPVAL .and. QQR(I,J,L)> 0.0) then
+ DBZR(I,J,L) = ((QQR(I,J,L)*DENS)**1.75) * 3.630803E-9 * 1.E18 ! Z FOR RAIN
+ else
+ DBZR(I,J,L) = 0.
+ endif
+ if(QQS(I,J,L) < SPVAL .and. QQS(I,J,L) > 0.0) then
+ DBZI(I,J,L) = DBZI(I,J,L) + ((QQS(I,J,L)*DENS)**1.75) * &
& 2.18500E-10 * 1.E18 ! Z FOR SNOW
- IF (QQG(I,J,L) < SPVAL) &
+ else
+ DBZI(I,J,L) = DBZI(I,J,L)
+ endif
+ IF (QQG(I,J,L) < SPVAL .and. QQG(I,J,L)> 0.0) then
DBZI(I,J,L) = DBZI(I,J,L) + ((QQG(I,J,L)*DENS)**1.75) * &
& 1.033267E-9 * 1.E18 ! Z FOR GRAUP
+ else
+ DBZI(I,J,L) = DBZI(I,J,L)
+ endif
IF (Model_Radar) THEN
ze_nc=10.**(0.1*REF_10CM(I,J,L))
DBZ(I,J,L) = ze_nc+CUREFL(I,J)
@@ -858,7 +870,8 @@ SUBROUTINE MDLFLD
(IGET(450).GT.0).OR.(IGET(480).GT.0).OR. &
(IGET(774).GT.0).OR.(IGET(747).GT.0).OR. &
(IGET(464).GT.0).OR.(IGET(467).GT.0).OR. &
- (IGET(909).GT.0) ) THEN
+ (IGET(629).GT.0).OR.(IGET(630).GT.0).OR. &
+ (IGET(909).GT.0).OR.(IGET(737).GT.0) ) THEN
DO 190 L=1,LM
@@ -2235,8 +2248,36 @@ SUBROUTINE MDLFLD
endif
END IF
ENDIF
-
-! ---- ADD GOCART FIELDS
+!
+! E. James - 8 Dec 2017: SMOKE from WRF-CHEM
+! SMOKE
+ IF (IGET(737).GT.0) THEN
+ IF (LVLS(L,IGET(737)).GT.0) THEN
+ LL=LM-L+1
+ ID(1:25) = 0
+ ID(14) = 2
+!$omp parallel do private(i,j)
+ DO J=JSTA,JEND
+ DO I=1,IM
+ GRID1(I,J) = (1./RD)*(PMID(I,J,LL)/T(I,J,LL))*SMOKE(I,J,LL,1)
+ ENDDO
+ ENDDO
+ if(grib=="grib1") then
+ CALL GRIBIT(IGET(737),L,GRID1,IM,JM)
+ else if(grib=="grib2" )then
+ cfld=cfld+1
+ fld_info(cfld)%ifld=IAVBLFLD(IGET(737))
+ fld_info(cfld)%lvl=LVLSXML(L,IGET(737))
+!$omp parallel do private(i,j,jj)
+ do j=1,jend-jsta+1
+ jj = jsta+j-1
+ do i=1,im
+ datapd(i,j,cfld) = GRID1(i,jj)
+ enddo
+ enddo
+ endif
+ END IF
+ ENDIF
!
! DUST 1
IF (IGET(629).GT.0) THEN
@@ -2247,7 +2288,8 @@ SUBROUTINE MDLFLD
!$omp parallel do private(i,j)
DO J=JSTA,JEND
DO I=1,IM
- GRID1(I,J) = DUST(I,J,LL,1)
+ !GRID1(I,J) = DUST(I,J,LL,1)
+ GRID1(I,J) = DUST(I,J,LL,1)*RHOMID(I,J,LL) !lzhang ug/kg-->ug/m3
ENDDO
ENDDO
if(grib=="grib1") then
@@ -2276,7 +2318,8 @@ SUBROUTINE MDLFLD
!$omp parallel do private(i,j)
DO J=JSTA,JEND
DO I=1,IM
- GRID1(I,J) = DUST(I,J,LL,2)
+ !GRID1(I,J) = DUST(I,J,LL,2)
+ GRID1(I,J) = DUST(I,J,LL,2)*RHOMID(I,J,LL) !lzhang ug/kg-->ug/m3
ENDDO
ENDDO
if(grib=="grib1") then
@@ -2305,7 +2348,8 @@ SUBROUTINE MDLFLD
!$omp parallel do private(i,j)
DO J=JSTA,JEND
DO I=1,IM
- GRID1(I,J) = DUST(I,J,LL,3)
+ !GRID1(I,J) = DUST(I,J,LL,3)
+ GRID1(I,J) = DUST(I,J,LL,3)*RHOMID(I,J,LL) !lzhang ug/kg-->ug/m3
ENDDO
ENDDO
if(grib=="grib1") then
@@ -2334,7 +2378,8 @@ SUBROUTINE MDLFLD
!$omp parallel do private(i,j)
DO J=JSTA,JEND
DO I=1,IM
- GRID1(I,J) = DUST(I,J,LL,4)
+ !GRID1(I,J) = DUST(I,J,LL,4)
+ GRID1(I,J) = DUST(I,J,LL,4)*RHOMID(I,J,LL) !lzhang ug/kg-->ug/m3
ENDDO
ENDDO
if(grib=="grib1") then
@@ -2363,7 +2408,8 @@ SUBROUTINE MDLFLD
!$omp parallel do private(i,j)
DO J=JSTA,JEND
DO I=1,IM
- GRID1(I,J) = DUST(I,J,LL,5)
+ !GRID1(I,J) = DUST(I,J,LL,5)
+ GRID1(I,J) = DUST(I,J,LL,5)*RHOMID(I,J,LL) !lzhang ug/kg-->ug/m3
ENDDO
ENDDO
if(grib=="grib1") then
@@ -2392,7 +2438,7 @@ SUBROUTINE MDLFLD
!$omp parallel do private(i,j)
DO J=JSTA,JEND
DO I=1,IM
- GRID1(I,J) = SALT(I,J,LL,2)
+ GRID1(I,J) = SALT(I,J,LL,1)*RHOMID(I,J,LL) !lzhang ug/kg-->ug/m3
ENDDO
ENDDO
if(grib=="grib1") then
@@ -2421,7 +2467,7 @@ SUBROUTINE MDLFLD
!$omp parallel do private(i,j)
DO J=JSTA,JEND
DO I=1,IM
- GRID1(I,J) = SALT(I,J,LL,3)
+ GRID1(I,J) = SALT(I,J,LL,2)*RHOMID(I,J,LL) !lzhang ug/kg-->ug/m3
ENDDO
ENDDO
if(grib=="grib1") then
@@ -2450,7 +2496,7 @@ SUBROUTINE MDLFLD
!$omp parallel do private(i,j)
DO J=JSTA,JEND
DO I=1,IM
- GRID1(I,J) = SALT(I,J,LL,4)
+ GRID1(I,J) = SALT(I,J,LL,3)*RHOMID(I,J,LL) !lzhang ug/kg-->ug/m3
ENDDO
ENDDO
if(grib=="grib1") then
@@ -2479,7 +2525,7 @@ SUBROUTINE MDLFLD
!$omp parallel do private(i,j)
DO J=JSTA,JEND
DO I=1,IM
- GRID1(I,J) = SALT(I,J,LL,5)
+ GRID1(I,J) = SALT(I,J,LL,4)*RHOMID(I,J,LL) !lzhang ug/kg-->ug/m3
ENDDO
ENDDO
if(grib=="grib1") then
@@ -2508,7 +2554,7 @@ SUBROUTINE MDLFLD
!$omp parallel do private(i,j)
DO J=JSTA,JEND
DO I=1,IM
- GRID1(I,J) = SALT(I,J,LL,1)
+ GRID1(I,J) = SALT(I,J,LL,5)*RHOMID(I,J,LL) !lzhang ug/kg-->ug/m3
ENDDO
ENDDO
if(grib=="grib1") then
@@ -2537,7 +2583,8 @@ SUBROUTINE MDLFLD
!$omp parallel do private(i,j)
DO J=JSTA,JEND
DO I=1,IM
- GRID1(I,J) = SUSO(I,J,LL,1)
+ !GRID1(I,J) = SUSO(I,J,LL,1)
+ GRID1(I,J) = SUSO(I,J,LL,1)*RHOMID(I,J,LL) !lzhang ug/kg-->ug/m3
ENDDO
ENDDO
if(grib=="grib1") then
@@ -2566,7 +2613,8 @@ SUBROUTINE MDLFLD
!$omp parallel do private(i,j)
DO J=JSTA,JEND
DO I=1,IM
- GRID1(I,J) = WASO(I,J,LL,1)
+ !GRID1(I,J) = WASO(I,J,LL,1)
+ GRID1(I,J) = WASO(I,J,LL,1)*RHOMID(I,J,LL) !lzhang
ENDDO
ENDDO
if(grib=="grib1") then
@@ -2595,7 +2643,8 @@ SUBROUTINE MDLFLD
!$omp parallel do private(i,j)
DO J=JSTA,JEND
DO I=1,IM
- GRID1(I,J) = WASO(I,J,LL,2)
+ !GRID1(I,J) = WASO(I,J,LL,2)
+ GRID1(I,J) = WASO(I,J,LL,2)*RHOMID(I,J,LL) !lzhang
ENDDO
ENDDO
if(grib=="grib1") then
@@ -2624,7 +2673,8 @@ SUBROUTINE MDLFLD
!$omp parallel do private(i,j)
DO J=JSTA,JEND
DO I=1,IM
- GRID1(I,J) = SOOT(I,J,LL,1)
+ !GRID1(I,J) = SOOT(I,J,LL,1)
+ GRID1(I,J) = SOOT(I,J,LL,1)*RHOMID(I,J,LL) !lzhang
ENDDO
ENDDO
if(grib=="grib1") then
@@ -2653,7 +2703,8 @@ SUBROUTINE MDLFLD
!$omp parallel do private(i,j)
DO J=JSTA,JEND
DO I=1,IM
- GRID1(I,J) = SOOT(I,J,LL,2)
+ !GRID1(I,J) = SOOT(I,J,LL,2)
+ GRID1(I,J) = SOOT(I,J,LL,2)*RHOMID(I,J,LL) !lzhang
ENDDO
ENDDO
if(grib=="grib1") then
diff --git a/comupp/src/unipost/MISCLN.f b/comupp/src/unipost/MISCLN.f
index 8f0361125..e7172c4ae 100644
--- a/comupp/src/unipost/MISCLN.f
+++ b/comupp/src/unipost/MISCLN.f
@@ -2292,10 +2292,12 @@ SUBROUTINE MISCLN
EGRID2,EGRID3,EGRID4,EGRID5)
!
IF (IGET(032).GT.0.or.IGET(566)>0) THEN
+! dong add missing value for cape
+ GRID1=spval
!$omp parallel do private(i,j)
DO J=JSTA,JEND
DO I=1,IM
- GRID1(I,J) = EGRID1(I,J)
+ IF(T1D(I,J) < spval) GRID1(I,J) = EGRID1(I,J)
ENDDO
ENDDO
CALL BOUND(GRID1,D00,H99999)
@@ -2320,10 +2322,12 @@ SUBROUTINE MISCLN
ENDIF
!
IF (IGET(107) > 0 .or. IGET(567) > 0) THEN
+! dong add missing value for cape
+ GRID1=spval
!$omp parallel do private(i,j)
DO J=JSTA,JEND
DO I=1,IM
- GRID1(I,J) = - EGRID2(I,J)
+ IF(T1D(I,J) < spval) GRID1(I,J) = - EGRID2(I,J)
ENDDO
ENDDO
!
@@ -2332,7 +2336,7 @@ SUBROUTINE MISCLN
!$omp parallel do private(i,j)
DO J=JSTA,JEND
DO I=1,IM
- GRID1(I,J) = - GRID1(I,J)
+ IF(T1D(I,J) < spval) GRID1(I,J) = - GRID1(I,J)
ENDDO
ENDDO
!
@@ -3391,10 +3395,12 @@ SUBROUTINE MISCLN
EGRID2,EGRID3,EGRID4,EGRID5)
IF (IGET(032).GT.0.or.IGET(582)>0) THEN
+! dong add missing value for cape
+ GRID1=spval
!$omp parallel do private(i,j)
DO J=JSTA,JEND
DO I=1,IM
- GRID1(I,J) = EGRID1(I,J)
+ IF(T1D(I,J) < spval) GRID1(I,J) = EGRID1(I,J)
ENDDO
ENDDO
@@ -3419,10 +3425,12 @@ SUBROUTINE MISCLN
endif
ENDIF
IF (IGET(107).GT.0.or.IGET(583)>0) THEN
+! dong add missing value for cape
+ GRID1=spval
!$omp parallel do private(i,j)
DO J=JSTA,JEND
DO I=1,IM
- GRID1(I,J) = - EGRID2(I,J)
+ IF(T1D(I,J) < spval) GRID1(I,J) = - EGRID2(I,J)
ENDDO
ENDDO
!
@@ -3431,7 +3439,7 @@ SUBROUTINE MISCLN
!$omp parallel do private(i,j)
DO J=JSTA,JEND
DO I=1,IM
- GRID1(I,J) = - GRID1(I,J)
+ IF(T1D(I,J) < spval) GRID1(I,J) = - GRID1(I,J)
ENDDO
ENDDO
!
@@ -3526,10 +3534,12 @@ SUBROUTINE MISCLN
EGRID2,EGRID3,EGRID4,EGRID5)
!
IF (IGET(032).GT.0.or.IGET(584)>0) THEN
+! dong add missing value to cin
+ GRID1 = spval
!$omp parallel do private(i,j)
DO J=JSTA,JEND
DO I=1,IM
- GRID1(I,J) = EGRID1(I,J)
+ IF(T1D(I,J) < spval) GRID1(I,J) = EGRID1(I,J)
ENDDO
ENDDO
CALL BOUND(GRID1,D00,H99999)
@@ -3555,17 +3565,19 @@ SUBROUTINE MISCLN
ENDIF
IF (IGET(107).GT.0.or.IGET(585)>0) THEN
+! dong add missing value to cin
+ GRID1 = spval
!$omp parallel do private(i,j)
DO J=JSTA,JEND
DO I=1,IM
- GRID1(I,J) = - EGRID2(I,J)
+ IF(T1D(I,J) < spval) GRID1(I,J) = - EGRID2(I,J)
ENDDO
ENDDO
CALL BOUND(GRID1,D00,H99999)
DO J=JSTA,JEND
DO I=1,IM
- GRID1(I,J) = - GRID1(I,J)
+ IF(T1D(I,J) < spval) GRID1(I,J) = - GRID1(I,J)
ENDDO
ENDDO
ID(1:25)=0
diff --git a/comupp/src/unipost/MPI_FIRST.f b/comupp/src/unipost/MPI_FIRST.f
index e805bc2ce..a0492d89b 100644
--- a/comupp/src/unipost/MPI_FIRST.f
+++ b/comupp/src/unipost/MPI_FIRST.f
@@ -37,7 +37,7 @@ SUBROUTINE MPI_FIRST()
! MACHINE : IBM RS/6000 SP
!$$$
!
- use vrbls4d, only: dust, salt, soot, waso, suso
+ use vrbls4d, only: dust, salt, soot, waso, suso, pp25, pp10
use vrbls3d, only: u, v, t, q, uh, vh, wh, pmid, pmidv, pint, alpint, zmid, &
zint, q2, omga, t_adj, ttnd, rswtt, rlwtt, exch_h, train, tcucn, &
el_pbl, cwm, f_ice, f_rain, f_rimef, qqw, qqi, qqr, qqs,qqg, qqni, qqnr, &
@@ -49,9 +49,12 @@ SUBROUTINE MPI_FIRST()
duwt, suem, susd, sudp, suwt, ocem, ocsd, ocdp, ocwt, bcem, bcsd, &
bcdp, bcwt, ssem, sssd, ssdp, sswt, ext, dpres, rhomid
use vrbls2d, only: wspd10max, w_up_max, w_dn_max, w_mean, refd_max, up_heli_max, &
- prate_max, fprate_max, &
+ prate_max, fprate_max, swupt, &
up_heli_max16, grpl_max, up_heli, up_heli16, ltg1_max, ltg2_max, &
- ltg3_max, nci_ltg, nca_ltg, nci_wq, nca_wq, nci_refd, &
+ up_heli_min, up_heli_min16, up_heli_max02, up_heli_min02, up_heli_max03, &
+ up_heli_min03, rel_vort_max, rel_vort_max01, wspd10umax, wspd10vmax, &
+ refdm10c_max, hail_max2d, hail_maxk1, ltg3_max,rel_vort_maxhy1, &
+ nci_ltg, nca_ltg, nci_wq, nca_wq, nci_refd, &
u10, v10, tshltr, qshltr, mrshltr, smstav, ssroff, bgroff, &
nca_refd, vegfrc, acsnow, acsnom, cmc, sst, qz0, thz0, uz0, vz0, qs, ths,&
sno, snonc, snoavg, psfcavg, t10m, t10avg, akmsavg, akhsavg, u10max, &
@@ -74,7 +77,9 @@ SUBROUTINE MPI_FIRST()
avisdiffswin, airbeamswin, airdiffswin, snowfall, dusmass, ducmass, &
dusmass25, susmass, sucmass, susmass25, sucmass25, ocsmass, occmass, &
ocsmass25, occmass25, bcsmass, bccmass, bcsmass25, bccmass25, &
- sssmass, sscmass, sssmass25, sscmass25, ducmass25
+ sssmass, sscmass, sssmass25, sscmass25, ducmass25, &
+ dustcb, sscb, bccb, occb, sulfcb, dustallcb, ssallcb,dustpm,sspm, pp25cb,&
+ pp10cb !lzhang
use soil, only: smc, stc, sh2o, sldpth, rtdpth, sllevel
use masks, only: htm, vtm, hbm2, sm, sice, lmh, gdlat, gdlon, dx, dy, lmv
use ctlblk_mod, only: me, num_procs, jm, jsta, jend, jsta_m, jsta_m2, &
diff --git a/comupp/src/unipost/RQSTFLD.f b/comupp/src/unipost/RQSTFLD.f
index f573f4a05..af429aeeb 100644
--- a/comupp/src/unipost/RQSTFLD.f
+++ b/comupp/src/unipost/RQSTFLD.f
@@ -15,6 +15,10 @@ module RQSTFLD_mod
! 2014-12-09 William Lewis added MSG/SEVIRI imager,
! GOES-13 and GOES-15 imagers,
! and completed SSMI and SSMIS (F13-F20)
+! 2019-04-01 Sharon Nebuda added GOES-16 GOES-17 ABI IR Channels 7-16
+! 2019-04-22 Wen Meng increased model MXLVL to 500
+! 2019-05-08 Wen Meng added continuous accumulated precipitations(417, 418,
+! 419).
!--------------------------------------------------------------------
implicit none
@@ -284,6 +288,15 @@ module RQSTFLD_mod
DATA IFILV(034),AVBL(034),IQ(034),IS(034),AVBLGRB2(034) &
& /1,'ACM GRD SCALE PRECIP',062,001, &
& 'ACM NCPCP ON surface'/
+ DATA IFILV(417),AVBL(417),IQ(417),IS(417),AVBLGRB2(417) &
+ & /1,'CACM TOTAL PRECIP ',061,001, &
+ & 'CACM A_PCP ON surface'/
+ DATA IFILV(418),AVBL(418),IQ(418),IS(418),AVBLGRB2(418) &
+ & /1,'CACM CONVCTIVE PRECIP',063,001, &
+ & 'CACM ACPCP ON surface'/
+ DATA IFILV(419),AVBL(419),IQ(419),IS(419),AVBLGRB2(419) &
+ & /1,'ACM GRD SCALE PRECIP',062,001, &
+ & 'CACM NCPCP ON surface'/
DATA IFILV(035),AVBL(035),IQ(035),IS(035),AVBLGRB2(035) &
& /1,'ACM SNOWFALL ',065,001, &
& 'ACM WEASD ON surface'/
@@ -353,7 +366,7 @@ module RQSTFLD_mod
DATA IFILV(148),AVBL(148),IQ(148),IS(148),AVBLGRB2(148) &
& /1,'CLOUD BOT PRESSURE ',001,002, &
& 'PRES ON cloud_base'/
- DATA IFILV(787),AVBL(787),IQ(787),IS(787),AVBLGRB2(787) &
+ DATA IFILV(798),AVBL(798),IQ(798),IS(798),AVBLGRB2(798) &
& /1,'GSD CLD BOT PRESSURE',001,002, &
& 'GSD PRES ON cloud_base'/
DATA IFILV(149),AVBL(149),IQ(149),IS(149),AVBLGRB2(149) &
@@ -695,7 +708,7 @@ module RQSTFLD_mod
& 'UPHL ON spec_hgt_lvl_above_grnd'/ !427
DATA IFILV(428),AVBL(428),IQ(428),IS(428),AVBLGRB2(428) &
& /1,'VERT INTEG GRAUP ',179,200, &
- & 'GRMR ON entire_atmos_single_lyr'/ !428
+ & 'TCOLG ON entire_atmos_single_lyr'/ !428
DATA IFILV(429),AVBL(429),IQ(429),IS(429),AVBLGRB2(429) &
& /1,'MAX VERT INTEG GRAUP',239,200, &
& 'MAXVIG ON entire_atmos_single_lyr'/ !429
@@ -1846,32 +1859,29 @@ module RQSTFLD_mod
DATA IFILV(614),AVBL(614),IQ(614),IS(614),AVBLGRB2(614) &
& /1,'BC AER OPT DEP 550 ',137,200, &
'Black carbon aer opt dep at 550 '/
-! ADD DUST PRODUCTION AND REMOVAL FLUXES (GOCART)
- DATA IFILV(615),AVBL(615),IQ(615),IS(615),AVBLGRB2(615) &
- & /1,'DUST EMISSION FLUX ',151,200, &
- 'dust emission fluxes '/
+! ADD BC, OC, SULF AEROSOL COLUMN MASS DENSITY (GOCART)
DATA IFILV(616),AVBL(616),IQ(616),IS(616),AVBLGRB2(616) &
- & /1,'DUST SEDIMENTATION ',152,200, &
- 'dust sedimentation fluxes '/
+ & /1,'BC COL MASS DEN ',151,200, &
+ 'fine bc col mass density '/
DATA IFILV(617),AVBL(617),IQ(617),IS(617),AVBLGRB2(617) &
- & /1,'DUST DRY DEPOSITION ',153,200, &
- 'dust dry deposition fluxes '/
+ & /1,'OC COL MASS DEN ',152,200, &
+ 'fine oc col mass density '/
DATA IFILV(618),AVBL(618),IQ(618),IS(618),AVBLGRB2(618) &
- & /1,'DUST WET DEPOSITION ',154,200, &
- 'dust wet deposition fluxes '/
+ & /1,'SULF COL MASS DEN ',153,200, &
+ 'fine sulf col mass density '/
! ADD AEROSOL SURFACE MASS CONCENTRATION (GOCART), use table 129
DATA IFILV(619),AVBL(619),IQ(619),IS(619),AVBLGRB2(619) &
- & /1,'CR AER SFC MASS CON ',156,001, &
- 'coarse aer sfc mass concentration '/
+ & /1,'PM10 SFC MASS CON ',154,001, &
+ 'coarse sfc mass concentration '/
DATA IFILV(620),AVBL(620),IQ(620),IS(620),AVBLGRB2(620) &
- & /1,'FN AER SFC MASS CON ',157,001, &
- 'fine aer sfc mass concentration '/
-! ADD AEROSOL COLUMN MASS DENSITY (GOCART)
+ & /1,'PM25 SFC MASS CON ',155,001, &
+ 'fine sfc mass concentration '/
+! ADD PM10 and PM25 AEROSOL COLUMN MASS DENSITY (GOCART)
DATA IFILV(621),AVBL(621),IQ(621),IS(621),AVBLGRB2(621) &
- & /1,'CR AER COL MASS DEN ',155,200, &
+ & /1,'PM10 COL MASS DEN ',156,200, &
'coarse aerosol col mass density '/
DATA IFILV(622),AVBL(622),IQ(622),IS(622),AVBLGRB2(622) &
- & /1,'FN AER COL MASS DEN ',158,200, &
+ & /1,'PM25 COL MASS DEN ',157,200, &
'fine aerosol col mass density '/
! ADD AEROSOL OPTICAL DEPTH AT OTHER CHANNELS (GOCART)
DATA IFILV(623),AVBL(623),IQ(623),IS(623),AVBLGRB2(623) &
@@ -1922,8 +1932,8 @@ module RQSTFLD_mod
& /1,'SEASALT 4 ON MDL SFC',248,109, &
& 'SS4 ON hybrid_lvl'/
DATA IFILV(638),AVBL(638),IQ(638),IS(638),AVBLGRB2(638) &
- & /1,'SEASALT 0 ON MDL SFC',253,109, &
- & 'SS0 ON hybrid_lvl'/
+ & /1,'SEASALT 5 ON MDL SFC',253,109, &
+ & 'SS5 ON hybrid_lvl'/
DATA IFILV(639),AVBL(639),IQ(639),IS(639),AVBLGRB2(639) &
& /1,'SULFATE ON MDL SFC ',254,109, &
& 'SO4 ON hybrid_lvl'/
@@ -1946,6 +1956,168 @@ module RQSTFLD_mod
DATA IFILV(645),AVBL(645),IQ(645),IS(645),AVBLGRB2(645) &
& /1,'DPRES ON MDL SFCS ',1,110, &
& 'DPRES hybrid_lvl '/
+! ADD OTHER PM2.5 AEROSOL COLUMN MASS DENSITY (GOCART)
+ DATA IFILV(646),AVBL(646),IQ(646),IS(646),AVBLGRB2(646) &
+ & /1,'DUST COL MASS DEN ',159,200, &
+ 'fine dust col mass density '/
+ DATA IFILV(647),AVBL(647),IQ(647),IS(647),AVBLGRB2(647) &
+ & /1,'SEAS COL MASS DEN ',160,200, &
+ 'fine seas col mass density '/
+ DATA IFILV(648),AVBL(648),IQ(648),IS(648),AVBLGRB2(648) &
+ & /1,'SINGLE SCAT ALBD 340',131,200, &
+ 'Aer single scatter alb at 340 nm'/
+ DATA IFILV(649),AVBL(649),IQ(649),IS(649),AVBLGRB2(649) &
+ & /1,'AER ASYM FACTOR 340 ',130,200, &
+ 'Aerosol asymmetry factor at 340 nm'/
+! ADD AEROSOL SCATTERING AOT
+ DATA IFILV(650),AVBL(650),IQ(650),IS(650),AVBLGRB2(650) &
+ & /1,'AER SCAT OPT DEP 550',129,200, &
+ 'Total scat aer opt dep at 550 nm'/
+ DATA IFILV(651),AVBL(651),IQ(651),IS(651),AVBLGRB2(651) &
+ & /1,'DU SCAT OPT DEP 550 ',129,200, &
+ 'DUST scat aer opt dep at 550 nm'/
+ DATA IFILV(652),AVBL(652),IQ(652),IS(652),AVBLGRB2(652) &
+ & /1,'SS SCAT OPT DEP 550 ',129,200, &
+ 'SALT scat aer opt dep at 550 nm'/
+ DATA IFILV(653),AVBL(653),IQ(653),IS(653),AVBLGRB2(653) &
+ & /1,'SU SCAT OPT DEP 550 ',129,200, &
+ 'SUSO scat aer opt dep at 550 nm'/
+ DATA IFILV(654),AVBL(654),IQ(654),IS(654),AVBLGRB2(654) &
+ & /1,'OC SCAT OPT DEP 550 ',129,200, &
+ 'WASO scat aer opt dep at 550 nm'/
+ DATA IFILV(655),AVBL(655),IQ(655),IS(655),AVBLGRB2(655) &
+ & /1,'BC SCAT OPT DEP 550 ',129,200, &
+ 'SOOT scat aer opt dep at 550 nm'/
+! ADD AEROSOL ANGTROM EXPONENT
+ DATA IFILV(656),AVBL(656),IQ(656),IS(656),AVBLGRB2(656) &
+ & /1,'ANGSTROM EXP 440_860',255,200, &
+ 'Angstrom exponent 440-860 nm '/
+
+! ADD DUST,SS, OC,BC, SU PRODUCTION AND REMOVAL FLUXES (GOCART)
+ DATA IFILV(659),AVBL(659),IQ(659),IS(659),AVBLGRB2(659) &
+ & /1,'DUST EMISSION FLUX ',151,200, &
+ 'dust emission fluxes '/
+ DATA IFILV(660),AVBL(660),IQ(660),IS(660),AVBLGRB2(660) &
+ & /1,'DUST SEDIMENTATION ',152,200, &
+ 'dust sedimentation fluxes '/
+ DATA IFILV(661),AVBL(661),IQ(661),IS(661),AVBLGRB2(661) &
+ & /1,'DUST DRY DEPOSITION ',153,200, &
+ 'dust dry deposition fluxes '/
+ DATA IFILV(662),AVBL(662),IQ(662),IS(662),AVBLGRB2(662) &
+ & /1,'DUST WET DEPOSITION ',154,200, &
+ 'dust wet deposition fluxes '/
+ DATA IFILV(663),AVBL(663),IQ(663),IS(663),AVBLGRB2(663) &
+ & /1,'SS EMISSION FLUX ',151,200, &
+ 'seasalt emission fluxes '/
+ DATA IFILV(664),AVBL(664),IQ(664),IS(664),AVBLGRB2(664) &
+ & /1,'SS SEDIMENTATION ',152,200, &
+ 'seasalt sedimentation fluxes '/
+ DATA IFILV(665),AVBL(665),IQ(665),IS(665),AVBLGRB2(665) &
+ & /1,'SS DRY DEPOSITION ',153,200, &
+ 'seasalt dry deposition fluxes '/
+ DATA IFILV(666),AVBL(666),IQ(666),IS(666),AVBLGRB2(666) &
+ & /1,'SS WET DEPOSITION ',154,200, &
+ 'seasalt wet deposition fluxes '/
+ DATA IFILV(667),AVBL(667),IQ(667),IS(667),AVBLGRB2(667) &
+ & /1,'BC EMISSION FLUX ',151,200, &
+ 'black carbon emission fluxes '/
+ DATA IFILV(668),AVBL(668),IQ(668),IS(668),AVBLGRB2(668) &
+ & /1,'BC SEDIMENTATION ',152,200, &
+ 'black carbon sedimentation fluxes '/
+ DATA IFILV(669),AVBL(669),IQ(669),IS(669),AVBLGRB2(669) &
+ & /1,'BC DRY DEPOSITION ',153,200, &
+ 'black carbon dry deposition fluxes'/
+ DATA IFILV(670),AVBL(670),IQ(670),IS(670),AVBLGRB2(670) &
+ & /1,'BC WET DEPOSITION ',154,200, &
+ 'black carbon wet deposition fluxes'/
+ DATA IFILV(671),AVBL(671),IQ(671),IS(671),AVBLGRB2(671) &
+ & /1,'OC EMISSION FLUX ',151,200, &
+ 'pom emission fluxes '/
+ DATA IFILV(672),AVBL(672),IQ(672),IS(672),AVBLGRB2(672) &
+ & /1,'OC SEDIMENTATION ',152,200, &
+ 'pom sedimentation fluxes '/
+ DATA IFILV(673),AVBL(673),IQ(673),IS(673),AVBLGRB2(673) &
+ & /1,'OC DRY DEPOSITION ',153,200, &
+ 'pom dry deposition fluxes '/
+ DATA IFILV(674),AVBL(674),IQ(674),IS(674),AVBLGRB2(674) &
+ & /1,'OC WET DEPOSITION ',154,200, &
+ 'pom wet deposition fluxes '/
+ DATA IFILV(675),AVBL(675),IQ(675),IS(675),AVBLGRB2(675) &
+ & /1,'SU EMISSION FLUX ',151,200, &
+ 'suldate emission fluxes '/
+ DATA IFILV(676),AVBL(676),IQ(676),IS(676),AVBLGRB2(676) &
+ & /1,'SU SEDIMENTATION ',152,200, &
+ 'sulfate sedimentation fluxes '/
+ DATA IFILV(677),AVBL(677),IQ(677),IS(677),AVBLGRB2(677) &
+ & /1,'SU DRY DEPOSITION ',153,200, &
+ 'sulfate dry deposition fluxes '/
+ DATA IFILV(678),AVBL(678),IQ(678),IS(678),AVBLGRB2(678) &
+ & /1,'SU WET DEPOSITION ',154,200, &
+ 'sulfate wet deposition fluxes '/
+ DATA IFILV(679),AVBL(679),IQ(679),IS(679),AVBLGRB2(679) &
+ & /1,'DU SCAVENGING FLUX ',155,200, &
+ 'dust scavenging fluxes '/
+ DATA IFILV(680),AVBL(680),IQ(680),IS(680),AVBLGRB2(680) &
+ & /1,'SS SCAVENGING FLUX ',156,200, &
+ 'seasalt scavenging fluxes '/
+ DATA IFILV(681),AVBL(681),IQ(681),IS(681),AVBLGRB2(681) &
+ & /1,'BC SCAVENGING FLUX ',157,200, &
+ 'black carbon scavenging fluxes '/
+ DATA IFILV(682),AVBL(682),IQ(682),IS(682),AVBLGRB2(682) &
+ & /1,'OC SCAVENGING FLUX ',158,200, &
+ 'organic carbon scavenging fluxes '/
+! DATA IFILV(683),AVBL(683),IQ(683),IS(683),AVBLGRB2(683) &
+! & /1,'SS CR SFC MASS CON ',159,200, &
+! 'seasalt cr sfc mass concentration '/
+ DATA IFILV(684),AVBL(684),IQ(684),IS(684),AVBLGRB2(684) &
+ & /1,'SEAS25 SFC MASS CON ',159,200, &
+ 'seas pm25 sfc mass concentration '/
+! DATA IFILV(685),AVBL(685),IQ(685),IS(685),AVBLGRB2(685) &
+! & /1,'DU CR SFC MASS CON ',160,001, &
+! 'dust cr sfc mass con '/
+ DATA IFILV(686),AVBL(686),IQ(686),IS(686),AVBLGRB2(686) &
+ & /1,'DUST25 SFC MASS CON ',161,001, &
+ 'dust pm25 sfc mass con '/
+!#if 0
+! DATA IFILV(687),AVBL(687),IQ(687),IS(687),AVBLGRB2(687) &
+! & /1,'BC SFC MASS CON ',162,001, &
+! 'black carbon sfc mass con '/
+! DATA IFILV(688),AVBL(688),IQ(688),IS(688),AVBLGRB2(688) &
+! & /1,'OC SFC MASS CON ',163,001, &
+! 'organic carbon sfc mass con '/
+! DATA IFILV(689),AVBL(689),IQ(689),IS(689),AVBLGRB2(689) &
+! & /1,'SU SFC MASS CON ',164,001, &
+! 'sulfate sfc mass con '/
+! DATA IFILV(690),AVBL(690),IQ(690),IS(690),AVBLGRB2(690) &
+! & /1,'INST SU SFC MASS CON',164,001, &
+! 'instn sulfate sfc mass con '/
+! DATA IFILV(691),AVBL(691),IQ(691),IS(691),AVBLGRB2(691) &
+! & /1,'INST OC SFC MASS CON',164,001, &
+! 'instn organic carbon sfc mass con '/
+! DATA IFILV(692),AVBL(692),IQ(692),IS(692),AVBLGRB2(692) &
+! & /1,'INST BC SFC MASS CON',164,001, &
+! 'instn black carbon sfc mass con '/
+! DATA IFILV(693),AVBL(693),IQ(693),IS(693),AVBLGRB2(693) &
+! & /1,'INST DU CR SMASS ',164,001, &
+! 'instn du coarse mode sfc mass con '/
+! DATA IFILV(694),AVBL(694),IQ(694),IS(694),AVBLGRB2(694) &
+! & /1,'INST DU FN SMASS ',164,001, &
+! 'instn du fine mode sfc mass con '/
+! DATA IFILV(695),AVBL(695),IQ(695),IS(695),AVBLGRB2(695) &
+! & /1,'INST SS CR SMASS ',164,001, &
+! 'instn ss coarse mode sfc mass con '/
+! DATA IFILV(696),AVBL(696),IQ(696),IS(696),AVBLGRB2(696) &
+! & /1,'INST SS FN SMASS ',164,001, &
+! 'instn ss fine mode sfc mass con '/
+! DATA IFILV(697),AVBL(697),IQ(697),IS(697),AVBLGRB2(697) &
+! & /1,'INST AER CR SMASS ',164,001, &
+! 'instn aer coarse mode sfc mass con'/
+! DATA IFILV(698),AVBL(698),IQ(698),IS(698),AVBLGRB2(698) &
+! & /1,'INST AER FN SMASS ',164,001, &
+! 'instn aer fine mode sfc mass con '/
+!#endif
+
+
! Reserving Index 601-700 for GOCART
!
@@ -2103,14 +2275,31 @@ module RQSTFLD_mod
& /1,'AVE NORMAL SW RAD ',254,001, &
& 'AVE NSWRF ON surface'/
! E. James
-! 11 May 2015
-! Adding instantaneous direct normal and diffuse horizontal irradiance
- DATA IFILV(772),AVBL(772),IQ(772),IS(772),AVBLGRB2(772) &
- & /1,'INSTN DIR NOR IRRAD ',166,001, &
- & 'INST SWDDNI ON surface'/
- DATA IFILV(773),AVBL(773),IQ(773),IS(773),AVBLGRB2(773) &
- & /1,'INSTN DIF HOR IRRAD ',167,001, &
- & 'INST SWDDIF ON surface'/
+! 15 Jun 2016
+! Adding vertically-integrated smoke AOD
+ DATA IFILV(735),AVBL(735),IQ(735),IS(735),AVBLGRB2(735) &
+ & /1,'VRTCLY INTGRTD AOD ',129,200, &
+ & 'AOD ON entire_atmos_single_lyr'/
+! Adding vertically-integrated smoke variable
+ DATA IFILV(736),AVBL(736),IQ(736),IS(736),AVBLGRB2(736) &
+ & /1,'VRTCLY INTGRTD SMOKE',237,200, &
+ & 'SMOKE ON entire_atmos_single_lyr'/
+! Adding smoke variable on mdl surfaces
+ DATA IFILV(737),AVBL(737),IQ(737),IS(737),AVBLGRB2(737) &
+ & /1,'SMOKE ON MDL SURFCS ',203,109, &
+ & 'SM1 ON hybrid_lvl'/
+! Adding smoke variable on p surfaces
+ DATA IFILV(738),AVBL(738),IQ(738),IS(738),AVBLGRB2(738) &
+ & /1,'SMOKE ON P SURFCS ',203,100, &
+ & 'SM1 ON isobaric_sfc'/
+! Adding lowest model level smoke
+ DATA IFILV(739),AVBL(739),IQ(739),IS(739),AVBLGRB2(739) &
+ & /1,'SMOKE NEAR SURFACE ',203,105, &
+ & 'SM1 ON spec_hgt_lvl_above_grnd'/
+! Adding mean fire radiative power
+ DATA IFILV(740),AVBL(740),IQ(740),IS(740),AVBLGRB2(740) &
+ & /1,'MEAN FIRE RDIATV PWR',164,001, &
+ & 'MEAN FIRE RADIATIVE POWER ON surface'/
! E. James
! 28 Mar 2016
! Adding clear-sky surface up and downwelling short and longwave irradiance
@@ -2126,6 +2315,15 @@ module RQSTFLD_mod
DATA IFILV(745),AVBL(745),IQ(745),IS(745),AVBLGRB2(745) &
& /1,'INSTN CLRSKY LGWV UP',162,001, &
& 'INST LWUPBC ON surface'/
+! E. James
+! 11 May 2015
+! Adding instantaneous direct normal and diffuse horizontal irradiance
+ DATA IFILV(772),AVBL(772),IQ(772),IS(772),AVBLGRB2(772) &
+ & /1,'INSTN DIR NOR IRRAD ',166,001, &
+ & 'INST SWDDNI ON surface'/
+ DATA IFILV(773),AVBL(773),IQ(773),IS(773),AVBLGRB2(773) &
+ & /1,'INSTN DIF HOR IRRAD ',167,001, &
+ & 'INST SWDDIF ON surface'/
!
! satellite index 800-899
@@ -2258,6 +2456,89 @@ module RQSTFLD_mod
DATA IFILV(911),AVBL(911),IQ(911),IS(911),AVBLGRB2(911) &
& /1,'VTEMP AT FD HEIGHTS ',012,103, &
& 'VTMP ON spec_alt_above_mean_sea_lvl'/
+
+! Add GOES-16 & GOES-17 ABI IR Channels 7-16
+! Grib2 defines each channel as a separate output field
+ DATA IFILV(927),AVBL(927),IQ(927),IS(927),AVBLGRB2(927) &
+ & /1,'G16 CH7 NON-NADIR ',118,109, &
+ & 'G16 CH7 ABI TB TOA '/ !Table 130
+
+ DATA IFILV(928),AVBL(928),IQ(928),IS(928),AVBLGRB2(928) &
+ & /1,'G16 CH8 NON-NADIR ',118,109, &
+ & 'G16 CH8 ABI TB TOA '/ !Table 130
+
+ DATA IFILV(929),AVBL(929),IQ(929),IS(929),AVBLGRB2(929) &
+ & /1,'G16 CH9 NON-NADIR ',118,109, &
+ & 'G16 CH9 ABI TB TOA '/ !Table 130
+
+ DATA IFILV(930),AVBL(930),IQ(930),IS(930),AVBLGRB2(930) &
+ & /1,'G16 CH10 NON-NADIR ',118,109, &
+ & 'G16 CH10 ABI TB TOA '/ !Table 130
+
+ DATA IFILV(931),AVBL(931),IQ(931),IS(931),AVBLGRB2(931) &
+ & /1,'G16 CH11 NON-NADIR ',118,109, &
+ & 'G16 CH11 ABI TB TOA '/ !Table 130
+
+ DATA IFILV(932),AVBL(932),IQ(932),IS(932),AVBLGRB2(932) &
+ & /1,'G16 CH12 NON-NADIR ',118,109, &
+ & 'G16 CH12 ABI TB TOA '/ !Table 130
+
+ DATA IFILV(933),AVBL(933),IQ(933),IS(933),AVBLGRB2(933) &
+ & /1,'G16 CH13 NON-NADIR ',118,109, &
+ & 'G16 CH13 ABI TB TOA '/ !Table 130
+
+ DATA IFILV(934),AVBL(934),IQ(934),IS(934),AVBLGRB2(934) &
+ & /1,'G16 CH14 NON-NADIR ',118,109, &
+ & 'G16 CH14 ABI TB TOA '/ !Table 130
+
+ DATA IFILV(935),AVBL(935),IQ(935),IS(935),AVBLGRB2(935) &
+ & /1,'G16 CH15 NON-NADIR ',118,109, &
+ & 'G16 CH15 ABI TB TOA '/ !Table 130
+
+ DATA IFILV(936),AVBL(936),IQ(936),IS(936),AVBLGRB2(936) &
+ & /1,'G16 CH16 NON-NADIR ',118,109, &
+ & 'G16 CH16 ABI TB TOA '/ !Table 130
+
+ DATA IFILV(937),AVBL(937),IQ(937),IS(937),AVBLGRB2(937) &
+ & /1,'G17 CH7 NON-NADIR ',118,109, &
+ & 'G17 CH7 ABI TB TOA '/ !Table 130
+
+ DATA IFILV(938),AVBL(938),IQ(938),IS(938),AVBLGRB2(938) &
+ & /1,'G17 CH8 NON-NADIR ',118,109, &
+ & 'G17 CH8 ABI TB TOA '/ !Table 130
+
+ DATA IFILV(939),AVBL(939),IQ(939),IS(939),AVBLGRB2(939) &
+ & /1,'G17 CH9 NON-NADIR ',118,109, &
+ & 'G17 CH9 ABI TB TOA '/ !Table 130
+
+ DATA IFILV(940),AVBL(940),IQ(940),IS(940),AVBLGRB2(940) &
+ & /1,'G17 CH10 NON-NADIR ',118,109, &
+ & 'G17 CH10 ABI TB TOA '/ !Table 130
+
+ DATA IFILV(941),AVBL(941),IQ(941),IS(941),AVBLGRB2(941) &
+ & /1,'G17 CH11 NON-NADIR ',118,109, &
+ & 'G17 CH11 ABI TB TOA '/ !Table 130
+
+ DATA IFILV(942),AVBL(942),IQ(942),IS(942),AVBLGRB2(942) &
+ & /1,'G17 CH12 NON-NADIR ',118,109, &
+ & 'G17 CH12 ABI TB TOA '/ !Table 130
+
+ DATA IFILV(943),AVBL(943),IQ(943),IS(943),AVBLGRB2(943) &
+ & /1,'G17 CH13 NON-NADIR ',118,109, &
+ & 'G17 CH13 ABI TB TOA '/ !Table 130
+
+ DATA IFILV(944),AVBL(944),IQ(944),IS(944),AVBLGRB2(944) &
+ & /1,'G17 CH14 NON-NADIR ',118,109, &
+ & 'G17 CH14 ABI TB TOA '/ !Table 130
+
+ DATA IFILV(945),AVBL(945),IQ(945),IS(945),AVBLGRB2(945) &
+ & /1,'G17 CH15 NON-NADIR ',118,109, &
+ & 'G17 CH15 ABI TB TOA '/ !Table 130
+
+ DATA IFILV(946),AVBL(946),IQ(946),IS(946),AVBLGRB2(946) &
+ & /1,'G17 CH16 NON-NADIR ',118,109, &
+ & 'G17 CH16 ABI TB TOA '/ !Table 130
+
!end initialization
!
end module RQSTFLD_mod
diff --git a/comupp/src/unipost/SELECT_CHANNELS.f b/comupp/src/unipost/SELECT_CHANNELS.f
index 980f6e6bf..9b84f7b0d 100644
--- a/comupp/src/unipost/SELECT_CHANNELS.f
+++ b/comupp/src/unipost/SELECT_CHANNELS.f
@@ -92,20 +92,20 @@ subroutine SELECT_CHANNELS_L(channelinfo,nchannels,channels,L,igot)
endif
if(L(i).eq.1)then
k=k+1
-! temp(k)=channelinfo%Channel_Index(channels(i))
- endif
- if(L(i).eq.0)then
+ temp(k)=channelinfo%Channel_Index(channels(i))
+ endif
+ if(L(i).eq.0)then
channelinfo%Process_Channel(channels(i))=.FALSE. ! turn off channel processing
- endif
+ endif
enddo
! if no channels were selected, then set igot=0
if(k.eq.0)then
igot=0
return
-! else
-! channelinfo%n_channels=k
-! channelinfo%Channel_Index(1:k)=temp(1:k)
+! else
+! channelinfo%n_channels=k
+! channelinfo%Channel_Index(1:k)=temp(1:k)
endif
end subroutine SELECT_CHANNELS_L
diff --git a/comupp/src/unipost/SET_OUTFLDS.f b/comupp/src/unipost/SET_OUTFLDS.f
index c3de7c9e7..1d982cd40 100755
--- a/comupp/src/unipost/SET_OUTFLDS.f
+++ b/comupp/src/unipost/SET_OUTFLDS.f
@@ -156,9 +156,9 @@ SUBROUTINE SET_OUTFLDS(kth,th,kpv,pv)
! which each different level will be counted as one record
!
NFLD = IFLD
+ NRECOUT = IREC
! Meng 04/19/18, add three fields for continous bucket
-! NRECOUT = IREC
- NRECOUT = IREC + 3
+! NRECOUT = IREC + 3
allocate(fld_info(NRECOUT+100))
do i=1,nrecout
fld_info(i)%ifld = 0
diff --git a/comupp/src/unipost/SLP_new.f b/comupp/src/unipost/SLP_new.f
index 56b8c11ea..7abe56394 100644
--- a/comupp/src/unipost/SLP_new.f
+++ b/comupp/src/unipost/SLP_new.f
@@ -48,7 +48,7 @@ SUBROUTINE MEMSLP(TPRES,QPRES,FIPRES)
use vrbls2d, only: pslp, fis
use masks, only: lmh
use params_mod, only: overrc, ad05, cft0, g, rd, d608, h1, kslpd
- use ctlblk_mod, only: jend, jsta, spl, num_procs, mpi_comm_comp, lsmp1, &
+ use ctlblk_mod, only: jend, jsta, spval, spl, num_procs, mpi_comm_comp, lsmp1, &
jsta_m, jend_m, lm, im, jsta_2l, jend_2u, lsm, jm,&
im_jm
!- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
@@ -72,6 +72,8 @@ SUBROUTINE MEMSLP(TPRES,QPRES,FIPRES)
INTEGER :: IHE(JM),IHW(JM),IVE(JM),IVW(JM),IHS(JM),IHN(JM)
integer ii,jj,I,J,L,N,LLMH,KM,KS,IHH2,KOUNT,KMN,NRLX,LHMNT, &
LMHIJ,LMAP1,KMM,LP,LXXX,IERR
+! dong
+ real a1,a2,a3,a4,a5,a6,a7,a8
!-----------------------------------------------------------------------
LOGICAL :: STDRD,DONE(IM,JSTA_2L:JEND_2U)
!-----------------------------------------------------------------------
@@ -101,7 +103,12 @@ SUBROUTINE MEMSLP(TPRES,QPRES,FIPRES)
DO I=1,IM
LLMH = NINT(LMH(I,J))
PSLP(I,J) = PINT(I,J,LLMH+1)
- TTV(I,J) = 0.
+! dong
+! TTV(I,J) = 0.
+ TTV(I,J) = spval
+ TNEW(I,J) = spval
+
+
LMHO(I,J) = 0
DONE(I,J) = .FALSE.
ENDDO
@@ -223,8 +230,11 @@ SUBROUTINE MEMSLP(TPRES,QPRES,FIPRES)
!$omp parallel do private(i,j)
DO J=JSTA,JEND
DO I=1,IM
+! dong
+! if (QPRES(I,J,LSM) .lt. spval) then
TTV(I,J) = TPRES(I,J,L)
HTM2D(I,J) = HTMO(I,J,L)
+! end if ! spval if
! IF(TTV(I,J).lt.150. .and. TTV(I,J).gt.325.0)print* &
! ,'abnormal IC for T relaxation',i,j,TTV(I,J)
enddo
@@ -238,6 +248,8 @@ SUBROUTINE MEMSLP(TPRES,QPRES,FIPRES)
!$omp parallel do private(i,j,tem)
DO J=JSTA_M,JEND_M
DO I=2,IM-1
+! dong
+ if (QPRES(I,J,LSM) .lt. spval) then
!HC IF(HTM2D(I,J,L).GT.0.5.AND.
!HC 1 HTM2D(I+IHW(J),J-1,L)*HTM2D(I+IHE(J),J-1,L)
@@ -252,6 +264,7 @@ SUBROUTINE MEMSLP(TPRES,QPRES,FIPRES)
TTV(I,J) = TPRES(I,J,L)*(1.+0.608*QPRES(I,J,L))
ENDIF
! if(i.eq.ii.and.j.eq.jj)print*,'Debug:L,TTV B SMOO= ',l,TTV(I,J)
+ end if ! spval
ENDDO
ENDDO
!
@@ -265,6 +278,9 @@ SUBROUTINE MEMSLP(TPRES,QPRES,FIPRES)
DO KM=1,KMM
I = IMNT(KM,L)
J = JMNT(KM,L)
+! dong
+! if (QPRES(I,J,LSM) .lt. spval) then
+
!HC TTV(I,J)=AD05*(4.*(TTV(I+IHW(J),J-1)+TTV(I+IHE(J),J-1)
!HC 1 +TTV(I+IHW(J),J+1)+TTV(I+IHE(J),J+1))
@@ -279,10 +295,42 @@ SUBROUTINE MEMSLP(TPRES,QPRES,FIPRES)
! 3 +TTV(I-1,J+1)+TTV(I+1,J+1))
! 4 -CFT0*TTV(I,J)
! eight point relaxation using old TTV
+ a1=TTV(I-1,J)
+ a2=TTV(I+1,J)
+ a3=TTV(I,J-1)
+ a4=TTV(I,J+1)
+ a5=TTV(I-1,J-1)
+ a6=TTV(I+1,J-1)
+ a7=TTV(I-1,J+1)
+ a8=TTV(I+1,J+1)
+! if ((a1-spval) .le. 1e-10) a1=TTV(I,J)
+! if ((a2-spval) .le. 1e-10) a2=TTV(I,J)
+! if ((a3-spval) .le. 1e-10) a3=TTV(I,J)
+! if ((a4-spval) .le. 1e-10) a4=TTV(I,J)
+! if ((a5-spval) .le. 1e-10) a5=TTV(I,J)
+! if ((a6-spval) .le. 1e-10) a6=TTV(I,J)
+! if ((a7-spval) .le. 1e-10) a7=TTV(I,J)
+! if ((a8-spval) .le. 1e-10) a8=TTV(I,J)
+
+ if ((a1 .lt. spval) .and. &
+ (a2 .lt. spval) .and. &
+ (a3 .lt. spval) .and. &
+ (a4 .lt. spval) .and. &
+ (a5 .lt. spval) .and. &
+ (a6 .lt. spval) .and. &
+ (a7 .lt. spval) .and. &
+ (a8 .lt. spval) .and. (TTV(I,J) .lt. spval)) then
+
+! TNEW(I,J) = AD05*(4.*(a1 +a2 +a3 &
+! +a4) +a5 +a6 &
+! +a7+a8)-TTV(I,J)*CFT0
TNEW(I,J) = AD05*(4.*(TTV(I-1,J) +TTV(I+1,J) +TTV(I,J-1) &
+TTV(I,J+1)) +TTV(I-1,J-1) +TTV(I+1,J-1) &
+TTV(I-1,J+1)+TTV(I+1,J+1))-TTV(I,J)*CFT0
+ else
+ TNEW(I,J) = TTV(I,J)
+ end if ! spval
! four point relaxation using old TTV
! TNEW(I,J)=TTV(I,J)+1.0*((TTV(I-1,J)+TTV(I+1,J)
@@ -294,6 +342,7 @@ SUBROUTINE MEMSLP(TPRES,QPRES,FIPRES)
! if(i.eq.ii.and.j.eq.jj)print*,'Debug: L,TTV A S'
! 1,l,TTV(I,J),N
! 1,l,TNEW(I,J),N
+! end if ! spval
enddo
!
@@ -301,7 +350,10 @@ SUBROUTINE MEMSLP(TPRES,QPRES,FIPRES)
DO KM=1,KMM
I = IMNT(KM,L)
J = JMNT(KM,L)
+! dong
+ if (QPRES(I,J,LSM) .lt. spval) then
TTV(I,J) = TNEW(I,J)
+ end if ! spval
END DO
END DO ! NRLX loop
!
@@ -309,7 +361,17 @@ SUBROUTINE MEMSLP(TPRES,QPRES,FIPRES)
DO KM=1,KMM
I = IMNT(KM,L)
J = JMNT(KM,L)
+
+! dong
+ if (QPRES(I,J,LSM) .lt. spval) then
+
+! dong try to fix missing value for hgtprs at 1000 mb
TPRES(I,J,L) = TTV(I,J)
+ end if ! spval
+
+! if (QPRES(I,J,L) < 1000) TPRES(I,J,L) = TTV(I,J)
+! if (QPRES(I,J,L) < 1000) TPRES(I,J,L) = 1
+
END DO
enddo ! end of l loop
!----------------------------------------------------------------
@@ -330,6 +392,10 @@ SUBROUTINE MEMSLP(TPRES,QPRES,FIPRES)
KOUNT = 0
DO J=JSTA,JEND
DO I=1,IM
+
+! dong
+! if (QPRES(I,J,LSM) .lt. spval) then
+
! P1(I,J)=SPL(NINT(LMH(I,J)))
! DONE(I,J)=.FALSE.
@@ -355,6 +421,9 @@ SUBROUTINE MEMSLP(TPRES,QPRES,FIPRES)
END IF
END DO
ENDIF
+
+! end if ! spval
+
ENDDO
ENDDO
!
@@ -363,6 +432,9 @@ SUBROUTINE MEMSLP(TPRES,QPRES,FIPRES)
DO 320 KM=1,KMM
I = IMNT(KM,LSM)
J = JMNT(KM,LSM)
+! dong
+! if (QPRES(I,J,LSM) .lt. spval) then
+
IF(DONE(I,J)) cycle
LMHIJ = LMHO(I,J)
GZ1 = FIPRES(I,J,LMHIJ)
@@ -394,6 +466,8 @@ SUBROUTINE MEMSLP(TPRES,QPRES,FIPRES)
! if(i.eq.ii.and.j.eq.jj)print*,'Debug:spl,FI,TLYR,PSLPA3=' &
! ,spl(lp),FIPRES(I,J,LP),TLYR,PSLP(I,J)
!HC EXPERIMENT
+! end if ! spval
+
320 CONTINUE
!
!*** WHEN SEA LEVEL IS BELOW THE LOWEST OUTPUT PRESSURE LEVEL,
@@ -415,6 +489,10 @@ SUBROUTINE MEMSLP(TPRES,QPRES,FIPRES)
LP = LSM
DO J=JSTA,JEND
DO I=1,IM
+
+! dong
+! if (QPRES(I,J,LSM) .lt. spval) then
+
! if(i.eq.ii.and.j.eq.jj)print*,'Debug: with 330 loop'
IF(DONE(I,J)) cycle
@@ -450,6 +528,8 @@ SUBROUTINE MEMSLP(TPRES,QPRES,FIPRES)
END IF
DONE(I,J) = .TRUE.
KOUNT = KOUNT + 1
+! end if ! spval
+
enddo
enddo
!HC 340 CONTINUE
diff --git a/comupp/src/unipost/SURFCE.f b/comupp/src/unipost/SURFCE.f
index 478958e4a..5834487be 100644
--- a/comupp/src/unipost/SURFCE.f
+++ b/comupp/src/unipost/SURFCE.f
@@ -63,13 +63,15 @@ SUBROUTINE SURFCE
!
! INCLUDE GRID DIMENSIONS. SET/DERIVE OTHER PARAMETERS.
!
+ use vrbls4d, only: smoke
use vrbls3d, only: zint, pint, t, pmid, q, f_rimef
use vrbls2d, only: ths, qs, qvg, qv2m, tsnow, tg, smstav, smstot, &
cmc, sno, snoavg, psfcavg, t10avg, snonc, ivgtyp, &
si, potevp, dzice, qwbs, vegfrc, isltyp, pshltr, &
tshltr, qshltr, mrshltr, maxtshltr, mintshltr, &
maxrhshltr, minrhshltr, u10, psfcavg, v10, u10max, &
- v10max, th10, t10m, q10, wspd10max, prec, sr, &
+ v10max, th10, t10m, q10, wspd10max, &
+ wspd10umax, wspd10vmax, prec, sr, &
cprate, avgcprate, avgprec, acprec, cuprec, ancprc, &
lspa, acsnow, acsnom, snowfall,ssroff, bgroff, &
runoff, pcp_bucket, rainnc_bucket, snow_bucket, &
@@ -89,7 +91,7 @@ SUBROUTINE SURFCE
use physcons,only: CON_EPS, CON_EPSM1
use params_mod, only: p1000, capa, h1m12, pq0, a2,a3, a4, h1, d00, d01,&
eps, oneps, d001, h99999, h100, small, h10e5, &
- elocp, g, xlai, tfrz
+ elocp, g, xlai, tfrz, rd
use ctlblk_mod, only: jsta, jend, lm, spval, grib, cfld, fld_info, &
datapd, nsoil, isf_surface_physics, tprec, ifmin,&
modelname, tmaxmin, pthresh, dtq2, dt, nphs, &
@@ -171,6 +173,9 @@ SUBROUTINE SURFCE
! SCALE ARRAY FIS BY GI TO GET SURFACE HEIGHT.
! ZSFC(I,J)=FIS(I,J)*GI
+! dong add missing value for zsfc
+ ZSFC(I,J) = spval
+ IF(ZINT(I,J,LM+1) < spval) &
ZSFC(I,J) = ZINT(I,J,LM+1)
PSFC(I,J) = PINT(I,J,NINT(LMH(I,J))+1) ! SURFACE PRESSURE.
!
@@ -183,6 +188,11 @@ SUBROUTINE SURFCE
! SURFACE SPECIFIC HUMIDITY, RELATIVE HUMIDITY, AND DEWPOINT.
! ADJUST SPECIFIC HUMIDITY IF RELATIVE HUMIDITY EXCEEDS 0.1 OR 1.0.
+! dong spfh sfc set missing value
+ QSFC(I,J) = spval
+ RHSFC(I,J) = spval
+ EVP(I,J) = spval
+ IF(TSFC(I,J) /= spval) then
QSFC(I,J) = MAX(H1M12,QS(I,J))
TSFCK = TSFC(I,J)
@@ -199,6 +209,7 @@ SUBROUTINE SURFCE
QSFC(I,J) = RHSFC(I,J)*QSAT
RHSFC(I,J) = RHSFC(I,J) * 100.0
EVP(I,J) = D001*PSFC(I,J)*QSFC(I,J)/(EPS+ONEPS*QSFC(I,J))
+ END IF
!
!mp ACCUMULATED NON-CONVECTIVE PRECIP.
!mp IF(IGET(034).GT.0)THEN
@@ -267,7 +278,7 @@ SUBROUTINE SURFCE
endif
ENDIF
if (allocated(zsfc)) deallocate(zsfc)
-! if (allocated(psfc)) deallocate(psfc)
+ if (allocated(psfc)) deallocate(psfc)
!
! SURFACE (SKIN) TEMPERATURE.
IF (IGET(026).GT.0) THEN
@@ -921,7 +932,9 @@ SUBROUTINE SURFCE
!$omp parallel do private(i,j)
DO J=JSTA,JEND
DO I=1,IM
- GRID1(I,J) = 100.*SNOAVG(I,J)
+! GRID1(I,J) = 100.*SNOAVG(I,J)
+ GRID1(I,J) = SNOAVG(I,J)
+ if (SNOAVG(I,J) /= spval) GRID1(I,J) = 100.*SNOAVG(I,J)
ENDDO
ENDDO
CALL BOUND(GRID1,D00,H100)
@@ -1074,11 +1087,13 @@ SUBROUTINE SURFCE
DO J=JSTA,JEND
DO I=1,IM
! GRID1(I,J)=PCTSNO(I,J)
+ IF ( SNO(I,J) /= SPVAL ) THEN
SNEQV = SNO(I,J)
IVEG = IVGTYP(I,J)
IF(IVEG.EQ.0)IVEG=7
CALL SNFRAC (SNEQV,IVEG,SNCOVR)
GRID1(I,J) = SNCOVR*100.
+ ENDIF
ENDDO
ENDDO
CALL BOUND(GRID1,D00,H100)
@@ -1558,12 +1573,12 @@ SUBROUTINE SURFCE
IF ( (IGET(106).GT.0).OR.(IGET(112).GT.0).OR. &
(IGET(113).GT.0).OR.(IGET(114).GT.0).OR. &
(IGET(138).GT.0).OR.(IGET(414).GT.0).OR. &
- (IGET(546).GT.0).OR. &
- (IGET(547).GT.0).OR.(IGET(548).GT.0).OR. &
+ (IGET(546).GT.0).OR.(IGET(547).GT.0).OR. &
+ (IGET(548).GT.0).OR.(IGET(739).GT.0).OR. &
(IGET(771).GT.0)) THEN
- if (.not. allocated(psfc)) allocate(psfc(im,jsta:jend))
-!
+ if (.not. allocated(psfc)) allocate(psfc(im,jsta:jend))
+!
!HC COMPUTE SHELTER PRESSURE BECAUSE IT WAS NOT OUTPUT FROM WRF
IF(MODELNAME .EQ. 'NCAR' .OR. MODELNAME.EQ.'RSM'.OR. MODELNAME.EQ.'RAPR')THEN
DO J=JSTA,JEND
@@ -2105,9 +2120,15 @@ SUBROUTINE SURFCE
if(ITMAXMIN==0) then
fld_info(cfld)%ntrange=0
else
- fld_info(cfld)%ntrange=(IFHR-ID(18))/ITMAXMIN
+!Meng 03/2019
+! fld_info(cfld)%ntrange=(IFHR-ID(18))/ITMAXMIN
+ fld_info(cfld)%ntrange=1
endif
- fld_info(cfld)%tinvstat=ITMAXMIN
+! fld_info(cfld)%tinvstat=ITMAXMIN
+ fld_info(cfld)%tinvstat=IFHR-ID(18)
+ if(IFHR==0) fld_info(cfld)%tinvstat=0
+ print*,'id(18),tinvstat,IFHR,ITMAXMIN in rhmax= ',ID(18),fld_info(cfld)%tinvstat, &
+ IFHR, ITMAXMIN
!$omp parallel do private(i,j,jj)
do j=1,jend-jsta+1
jj = jsta+j-1
@@ -2155,9 +2176,13 @@ SUBROUTINE SURFCE
if(ITMAXMIN==0) then
fld_info(cfld)%ntrange=0
else
- fld_info(cfld)%ntrange=(IFHR-ID(18))/ITMAXMIN
+!Meng 03/2019
+! fld_info(cfld)%ntrange=(IFHR-ID(18))/ITMAXMIN
+ fld_info(cfld)%ntrange=1
endif
- fld_info(cfld)%tinvstat=ITMAXMIN
+! fld_info(cfld)%tinvstat=ITMAXMIN
+ fld_info(cfld)%tinvstat=IFHR-ID(18)
+ if(IFHR==0) fld_info(cfld)%tinvstat=0
!$omp parallel do private(i,j,jj)
do j=1,jend-jsta+1
jj = jsta+j-1
@@ -2247,6 +2272,26 @@ SUBROUTINE SURFCE
endif
ENDIF
!
+! E. James - 12 Sep 2018: SMOKE from WRF-CHEM on lowest model level
+!
+ IF (IGET(739).GT.0) THEN
+ DO J=JSTA,JEND
+ DO I=1,IM
+ GRID1(I,J) = (1./RD)*(PMID(I,J,LM)/T(I,J,LM))*SMOKE(I,J,LM,1)
+ ENDDO
+ ENDDO
+ if(grib=='grib1') then
+ ID(1:25) = 0
+ ISVALUE = 2
+ ID(10) = MOD(ISVALUE/256,256)
+ ID(11) = MOD(ISVALUE,256)
+ CALL GRIBIT(IGET(739),LVLS(1,IGET(739)),GRID1,IM,JM)
+ elseif(grib=='grib2') then
+ cfld=cfld+1
+ fld_info(cfld)%ifld=IAVBLFLD(IGET(739))
+ datapd(1:im,1:jend-jsta+1,cfld) = GRID1(1:im,jsta:jend)
+ endif
+ ENDIF
!
! BLOCK 3. ANEMOMETER LEVEL (10M) WINDS, THETA, AND Q.
!
@@ -2637,6 +2682,89 @@ SUBROUTINE SURFCE
enddo
endif
ENDIF
+
+! ANEMOMETER LEVEL (10 M) MAX WIND SPEED U COMPONENT.
+!
+ IF (IGET(783).GT.0) THEN
+ ID(1:25) = 0
+ ISVALUE = 10
+ ID(10) = MOD(ISVALUE/256,256)
+ ID(11) = MOD(ISVALUE,256)
+ ID(20) = 2
+ ID(19) = IFHR
+ IF (IFHR.EQ.0) THEN
+ ID(18) = 0
+ ELSE
+ ID(18) = IFHR - 1
+ ENDIF
+!$omp parallel do private(i,j)
+ DO J=JSTA,JEND
+ DO I=1,IM
+ GRID1(I,J) = WSPD10UMAX(I,J)
+ ENDDO
+ ENDDO
+ if(grib=='grib1') then
+ CALL GRIBIT(IGET(783),LVLS(1,IGET(783)),GRID1,IM,JM)
+ elseif(grib=='grib2') then
+ cfld=cfld+1
+ fld_info(cfld)%ifld=IAVBLFLD(IGET(783))
+ if (ifhr.eq.0) then
+ fld_info(cfld)%tinvstat=0
+ else
+ fld_info(cfld)%tinvstat=1
+ endif
+ fld_info(cfld)%ntrange=1
+!$omp parallel do private(i,j,jj)
+ do j=1,jend-jsta+1
+ jj = jsta+j-1
+ do i=1,im
+ datapd(i,j,cfld) = GRID1(i,jj)
+ enddo
+ enddo
+ endif
+ ENDIF
+
+! ANEMOMETER LEVEL (10 M) MAX WIND SPEED V COMPONENT.
+!
+ IF (IGET(784).GT.0) THEN
+ ID(1:25) = 0
+ ISVALUE = 10
+ ID(10) = MOD(ISVALUE/256,256)
+ ID(11) = MOD(ISVALUE,256)
+ ID(20) = 2
+ ID(19) = IFHR
+ IF (IFHR.EQ.0) THEN
+ ID(18) = 0
+ ELSE
+ ID(18) = IFHR - 1
+ ENDIF
+!$omp parallel do private(i,j)
+ DO J=JSTA,JEND
+ DO I=1,IM
+ GRID1(I,J) = WSPD10VMAX(I,J)
+ ENDDO
+ ENDDO
+ if(grib=='grib1') then
+ CALL GRIBIT(IGET(784),LVLS(1,IGET(784)),GRID1,IM,JM)
+ elseif(grib=='grib2') then
+ cfld=cfld+1
+ fld_info(cfld)%ifld=IAVBLFLD(IGET(784))
+ if (ifhr.eq.0) then
+ fld_info(cfld)%tinvstat=0
+ else
+ fld_info(cfld)%tinvstat=1
+ endif
+ fld_info(cfld)%ntrange=1
+!$omp parallel do private(i,j,jj)
+ do j=1,jend-jsta+1
+ jj = jsta+j-1
+ do i=1,im
+ datapd(i,j,cfld) = GRID1(i,jj)
+ enddo
+ enddo
+ endif
+ ENDIF
+
!
! SRD
!
@@ -2965,16 +3093,16 @@ SUBROUTINE SURFCE
END IF
ENDDO
ENDDO
-! Chuang 3/29/2018: add continuous bucket
- DO J=JSTA,JEND
- DO I=1,IM
- IF(AVGPREC_CONT(I,J) < SPVAL)THEN
- GRID2(I,J) = AVGPREC_CONT(I,J)*FLOAT(IFHR)*3600.*1000./DTQ2
- ELSE
- GRID2(I,J) = SPVAL
- END IF
- ENDDO
- ENDDO
+!! Chuang 3/29/2018: add continuous bucket
+! DO J=JSTA,JEND
+! DO I=1,IM
+! IF(AVGPREC_CONT(I,J) < SPVAL)THEN
+! GRID2(I,J) = AVGPREC_CONT(I,J)*FLOAT(IFHR)*3600.*1000./DTQ2
+! ELSE
+! GRID2(I,J) = SPVAL
+! END IF
+! ENDDO
+! ENDDO
ELSE
!$omp parallel do private(i,j)
DO J=JSTA,JEND
@@ -3005,13 +3133,71 @@ SUBROUTINE SURFCE
datapd(i,j,cfld) = GRID1(i,jj)
enddo
enddo
+!! add continuous bucket
+! if(MODELNAME == 'GFS' .OR. MODELNAME == 'FV3R') then
+! cfld=cfld+1
+! fld_info(cfld)%ifld=IAVBLFLD(IGET(087))
+! fld_info(cfld)%ntrange=1
+! fld_info(cfld)%tinvstat=IFHR
+! print*,'tinvstat in cont bucket= ',fld_info(cfld)%tinvstat
+! do j=1,jend-jsta+1
+! jj = jsta+j-1
+! do i=1,im
+! datapd(i,j,cfld) = GRID2(i,jj)
+! enddo
+! enddo
+! endif
+ endif
+ ENDIF
+
+!
+! CONTINOUS ACCUMULATED TOTAL PRECIPITATION.
+ IF (IGET(417).GT.0) THEN
+ ID(1:25) = 0
+ ITPREC = NINT(TPREC)
+!mp
+ if (ITPREC .ne. 0) then
+ IFINCR = MOD(IFHR,ITPREC)
+ IF(IFMIN .GE. 1)IFINCR= MOD(IFHR*60+IFMIN,ITPREC*60)
+ else
+ IFINCR = 0
+ endif
+!mp
+ ID(18) = 0
+ ID(19) = IFHR
+ IF(IFMIN .GE. 1)ID(19)=IFHR*60+IFMIN
+ ID(20) = 4
+ IF (IFINCR.EQ.0) THEN
+ ID(18) = IFHR-ITPREC
+ ELSE
+ ID(18) = IFHR-IFINCR
+ IF(IFMIN .GE. 1)ID(18)=IFHR*60+IFMIN-IFINCR
+ ENDIF
+ IF(MODELNAME == 'GFS' .OR. MODELNAME == 'FV3R') THEN
+! Chuang 3/29/2018: add continuous bucket
+!$omp parallel do private(i,j)
+ DO J=JSTA,JEND
+ DO I=1,IM
+ IF(AVGPREC_CONT(I,J) < SPVAL)THEN
+ GRID2(I,J) = AVGPREC_CONT(I,J)*FLOAT(IFHR)*3600.*1000./DTQ2
+ ELSE
+ GRID2(I,J) = SPVAL
+ END IF
+ ENDDO
+ ENDDO
+ ENDIF
+ IF (ID(18).LT.0) ID(18) = 0
+ if(grib=='grib1') then
+ CALL GRIBIT(IGET(417),LVLS(1,IGET(417)),GRID1,IM,JM)
+ elseif(grib=='grib2') then
! add continuous bucket
if(MODELNAME == 'GFS' .OR. MODELNAME == 'FV3R') then
cfld=cfld+1
- fld_info(cfld)%ifld=IAVBLFLD(IGET(087))
+ fld_info(cfld)%ifld=IAVBLFLD(IGET(417))
fld_info(cfld)%ntrange=1
fld_info(cfld)%tinvstat=IFHR
print*,'tinvstat in cont bucket= ',fld_info(cfld)%tinvstat
+!$omp parallel do private(i,j,jj)
do j=1,jend-jsta+1
jj = jsta+j-1
do i=1,im
@@ -3057,16 +3243,16 @@ SUBROUTINE SURFCE
END IF
ENDDO
ENDDO
-! Chuang 3/29/2018: add continuous bucket
- DO J=JSTA,JEND
- DO I=1,IM
- IF(AVGCPRATE_CONT(I,J) < SPVAL)THEN
- GRID2(I,J) = AVGCPRATE_CONT(I,J)*FLOAT(IFHR)*3600.*1000./DTQ2
- ELSE
- GRID2(I,J) = SPVAL
- END IF
- ENDDO
- ENDDO
+!! Chuang 3/29/2018: add continuous bucket
+! DO J=JSTA,JEND
+! DO I=1,IM
+! IF(AVGCPRATE_CONT(I,J) < SPVAL)THEN
+! GRID2(I,J) = AVGCPRATE_CONT(I,J)*FLOAT(IFHR)*3600.*1000./DTQ2
+! ELSE
+! GRID2(I,J) = SPVAL
+! END IF
+! ENDDO
+! ENDDO
ELSE
!$omp parallel do private(i,j)
DO J=JSTA,JEND
@@ -3090,12 +3276,69 @@ SUBROUTINE SURFCE
datapd(i,j,cfld) = GRID1(i,jj)
enddo
enddo
+!! add continuous bucket
+! if(MODELNAME == 'GFS' .OR. MODELNAME == 'FV3R') then
+! cfld=cfld+1
+! fld_info(cfld)%ifld=IAVBLFLD(IGET(033))
+! fld_info(cfld)%ntrange=1
+! fld_info(cfld)%tinvstat=IFHR
+! do j=1,jend-jsta+1
+! jj = jsta+j-1
+! do i=1,im
+! datapd(i,j,cfld) = GRID2(i,jj)
+! enddo
+! enddo
+! endif
+ endif
+ ENDIF
+
+! CONTINOUS ACCUMULATED CONVECTIVE PRECIPITATION.
+ IF (IGET(418).GT.0) THEN
+ ID(1:25) = 0
+ ITPREC = NINT(TPREC)
+!mp
+ if (ITPREC .ne. 0) then
+ IFINCR = MOD(IFHR,ITPREC)
+ IF(IFMIN .GE. 1)IFINCR= MOD(IFHR*60+IFMIN,ITPREC*60)
+ else
+ IFINCR = 0
+ endif
+!mp
+ ID(18) = 0
+ ID(19) = IFHR
+ IF(IFMIN .GE. 1)ID(19)=IFHR*60+IFMIN
+ ID(20) = 4
+ IF (IFINCR.EQ.0) THEN
+ ID(18) = IFHR-ITPREC
+ ELSE
+ ID(18) = IFHR-IFINCR
+ IF(IFMIN .GE. 1)ID(18)=IFHR*60+IFMIN-IFINCR
+ ENDIF
+ IF (ID(18).LT.0) ID(18) = 0
+ IF(MODELNAME == 'GFS' .OR. MODELNAME == 'FV3R') THEN
+! Chuang 3/29/2018: add continuous bucket
+!$omp parallel do private(i,j)
+ DO J=JSTA,JEND
+ DO I=1,IM
+ IF(AVGCPRATE_CONT(I,J) < SPVAL)THEN
+ GRID2(I,J) = AVGCPRATE_CONT(I,J)*FLOAT(IFHR)*3600.*1000./DTQ2
+ ELSE
+ GRID2(I,J) = SPVAL
+ END IF
+ ENDDO
+ ENDDO
+ ENDIF
+! write(6,*) 'call gribit...convective precip'
+ if(grib=='grib1') then
+ CALL GRIBIT(IGET(418),LVLS(1,IGET(418)),GRID1,IM,JM)
+ elseif(grib=='grib2') then
! add continuous bucket
if(MODELNAME == 'GFS' .OR. MODELNAME == 'FV3R') then
cfld=cfld+1
- fld_info(cfld)%ifld=IAVBLFLD(IGET(033))
+ fld_info(cfld)%ifld=IAVBLFLD(IGET(418))
fld_info(cfld)%ntrange=1
fld_info(cfld)%tinvstat=IFHR
+!$omp parallel do private(i,j,jj)
do j=1,jend-jsta+1
jj = jsta+j-1
do i=1,im
@@ -3142,17 +3385,17 @@ SUBROUTINE SURFCE
END IF
ENDDO
ENDDO
-! Chuang 3/29/2018: add continuous bucket
- DO J=JSTA,JEND
- DO I=1,IM
- IF(AVGCPRATE_CONT(I,J) < SPVAL .AND. AVGPREC_CONT(I,J) < SPVAL)THEN
- GRID2(I,J) = (AVGPREC_CONT(I,J) - AVGCPRATE_CONT(I,J)) &
- *FLOAT(IFHR)*3600.*1000./DTQ2
- ELSE
- GRID2(I,J) = SPVAL
- END IF
- ENDDO
- ENDDO
+!! Chuang 3/29/2018: add continuous bucket
+! DO J=JSTA,JEND
+! DO I=1,IM
+! IF(AVGCPRATE_CONT(I,J) < SPVAL .AND. AVGPREC_CONT(I,J) < SPVAL)THEN
+! GRID2(I,J) = (AVGPREC_CONT(I,J) - AVGCPRATE_CONT(I,J)) &
+! *FLOAT(IFHR)*3600.*1000./DTQ2
+! ELSE
+! GRID2(I,J) = SPVAL
+! END IF
+! ENDDO
+! ENDDO
ELSE
!$omp parallel do private(i,j)
DO J=JSTA,JEND
@@ -3176,12 +3419,70 @@ SUBROUTINE SURFCE
datapd(i,j,cfld) = GRID1(i,jj)
enddo
enddo
+!! add continuous bucket
+! if(MODELNAME == 'GFS' .OR. MODELNAME == 'FV3R') then
+! cfld=cfld+1
+! fld_info(cfld)%ifld=IAVBLFLD(IGET(034))
+! fld_info(cfld)%ntrange=1
+! fld_info(cfld)%tinvstat=IFHR
+! do j=1,jend-jsta+1
+! jj = jsta+j-1
+! do i=1,im
+! datapd(i,j,cfld) = GRID2(i,jj)
+! enddo
+! enddo
+! endif
+ endif
+ ENDIF
+
+! CONTINOUS ACCUMULATED GRID-SCALE PRECIPITATION.
+ IF (IGET(419).GT.0) THEN
+ ID(1:25) = 0
+ ITPREC = NINT(TPREC)
+!mp
+ if (ITPREC .ne. 0) then
+ IFINCR = MOD(IFHR,ITPREC)
+ IF(IFMIN .GE. 1)IFINCR= MOD(IFHR*60+IFMIN,ITPREC*60)
+ else
+ IFINCR = 0
+ endif
+!mp
+ ID(18) = 0
+ ID(19) = IFHR
+ IF(IFMIN .GE. 1)ID(19)=IFHR*60+IFMIN
+ ID(20) = 4
+ IF (IFINCR.EQ.0) THEN
+ ID(18) = IFHR-ITPREC
+ ELSE
+ ID(18) = IFHR-IFINCR
+ IF(IFMIN .GE. 1)ID(18)=IFHR*60+IFMIN-IFINCR
+ ENDIF
+ IF (ID(18).LT.0) ID(18) = 0
+ IF(MODELNAME == 'GFS' .OR. MODELNAME == 'FV3R') THEN
+! Chuang 3/29/2018: add continuous bucket
+!$omp parallel do private(i,j)
+ DO J=JSTA,JEND
+ DO I=1,IM
+ IF(AVGCPRATE_CONT(I,J) < SPVAL .AND. AVGPREC_CONT(I,J) < SPVAL)THEN
+ GRID2(I,J) = (AVGPREC_CONT(I,J) - AVGCPRATE_CONT(I,J)) &
+ *FLOAT(IFHR)*3600.*1000./DTQ2
+ ELSE
+ GRID2(I,J) = SPVAL
+ END IF
+ ENDDO
+ ENDDO
+ ENDIF
+! write(6,*) 'call gribit...grid-scale precip'
+ if(grib=='grib1') then
+ CALL GRIBIT(IGET(419),LVLS(1,IGET(419)), GRID1,IM,JM)
+ elseif(grib=='grib2') then
! add continuous bucket
if(MODELNAME == 'GFS' .OR. MODELNAME == 'FV3R') then
cfld=cfld+1
- fld_info(cfld)%ifld=IAVBLFLD(IGET(034))
+ fld_info(cfld)%ifld=IAVBLFLD(IGET(419))
fld_info(cfld)%ntrange=1
fld_info(cfld)%tinvstat=IFHR
+!$omp parallel do private(i,j,jj)
do j=1,jend-jsta+1
jj = jsta+j-1
do i=1,im
@@ -5294,11 +5595,13 @@ SUBROUTINE SURFCE
ENDIF
!
! SURFACE DRAG COEFFICIENT.
+! dong add missing value for cd
IF (IGET(132).GT.0) THEN
+ GRID1=spval
CALL CALDRG(EGRID1(1,jsta_2l))
DO J=JSTA,JEND
DO I=1,IM
- GRID1(I,J)=EGRID1(I,J)
+ IF(USTAR(I,J) < spval) GRID1(I,J)=EGRID1(I,J)
ENDDO
ENDDO
if(grib=='grib1') then
@@ -5463,6 +5766,8 @@ SUBROUTINE SURFCE
!
! INSTANTANEOUS SENSIBLE HEAT FLUX
IF (IGET(154).GT.0) THEN
+! dong add missing value to shtfl
+ GRID1 = spval
IF(MODELNAME.EQ.'NCAR'.OR.MODELNAME.EQ.'RSM' .OR. &
MODELNAME.EQ.'RAPR')THEN
!4omp parallel do private(i,j)
@@ -5475,7 +5780,7 @@ SUBROUTINE SURFCE
!4omp parallel do private(i,j)
DO J=JSTA,JEND
DO I=1,IM
- GRID1(I,J) = -TWBS(I,J)
+ IF(TWBS(I,J) < spval) GRID1(I,J) = -TWBS(I,J)
ENDDO
ENDDO
END IF
@@ -5491,6 +5796,8 @@ SUBROUTINE SURFCE
!
! INSTANTANEOUS LATENT HEAT FLUX
IF (IGET(155).GT.0) THEN
+! dong add missing value to lhtfl
+ GRID1 = spval
IF(MODELNAME.EQ.'NCAR'.OR.MODELNAME.EQ.'RSM' .OR. &
MODELNAME.EQ.'RAPR')THEN
!4omp parallel do private(i,j)
@@ -5503,7 +5810,7 @@ SUBROUTINE SURFCE
!4omp parallel do private(i,j)
DO J=JSTA,JEND
DO I=1,IM
- GRID1(I,J) = -QWBS(I,J)
+ IF(QWBS(I,J) < spval) GRID1(I,J) = -QWBS(I,J)
ENDDO
ENDDO
END IF
diff --git a/comupp/src/unipost/VRBLS2D_mod.f b/comupp/src/unipost/VRBLS2D_mod.f
index ead562587..921508219 100644
--- a/comupp/src/unipost/VRBLS2D_mod.f
+++ b/comupp/src/unipost/VRBLS2D_mod.f
@@ -39,6 +39,12 @@ module vrbls2d
,WSPD10MAX(:,:),W_UP_MAX(:,:),W_DN_MAX(:,:),REFD_MAX(:,:) &
,UP_HELI_MAX(:,:),UP_HELI_MAX16(:,:),GRPL_MAX(:,:),QRMAX(:,:) &
,UP_HELI(:,:),UP_HELI16(:,:),LTG1_MAX(:,:),LTG2_MAX(:,:),LTG3_MAX(:,:) &
+ ,UP_HELI_MIN(:,:),UP_HELI_MIN16(:,:) &
+ ,UP_HELI_MAX02(:,:),UP_HELI_MIN02(:,:) &
+ ,UP_HELI_MAX03(:,:),UP_HELI_MIN03(:,:) &
+ ,REL_VORT_MAX(:,:),REL_VORT_MAX01(:,:),REL_VORT_MAXHY1(:,:) &
+ ,WSPD10UMAX(:,:),WSPD10VMAX(:,:) &
+ ,REFDM10C_MAX(:,:),HAIL_MAX2D(:,:),HAIL_MAXK1(:,:) &
,NCI_LTG(:,:),NCA_LTG(:,:),NCI_WQ(:,:),NCA_WQ(:,:) &
,NCI_REFD(:,:),NCA_REFD(:,:) &
,RAINC_BUCKET(:,:),RAINNC_BUCKET(:,:),SNOW_BUCKET(:,:) &
@@ -49,7 +55,9 @@ module vrbls2d
,SWRADmean(:,:),U10mean(:,:),V10mean(:,:),SPDUV10mean(:,:) &
,SWNORMmean(:,:),SNFDEN(:,:),SNDEPAC(:,:),SWDDNI(:,:),SWDDIF(:,:) &
,SWDNBC(:,:),SWDDNIC(:,:),SWDDIFC(:,:), SWUPBC(:,:), SWUPT(:,:) &
- ,TAOD5502D(:,:),AERASY2D(:,:),AERSSA2D(:,:) &
+ ,TAOD5502D(:,:),AERASY2D(:,:),AERSSA2D(:,:),MEAN_FRP(:,:) &
+ ,LWP(:,:),IWP(:,:) &
+ ,INT_SMOKE(:,:),INT_AOD(:,:) &
! add new fields for GFS
,SFCUX(:,:),SFCVX(:,:),AVGALBEDO(:,:),AVGCPRATE(:,:) &
,AVGPREC(:,:),PTOP(:,:),PBOT(:,:),AVGCFRACH(:,:) &
@@ -76,6 +84,10 @@ module vrbls2d
,SUSMASS(:,:),SUCMASS(:,:),SUSMASS25(:,:),SUCMASS25(:,:) &
,OCSMASS(:,:),OCCMASS(:,:),OCSMASS25(:,:),OCCMASS25(:,:) &
,BCSMASS(:,:),BCCMASS(:,:),BCSMASS25(:,:),BCCMASS25(:,:) &
- ,SSSMASS(:,:),SSCMASS(:,:),SSSMASS25(:,:),SSCMASS25(:,:)
+ ,SSSMASS(:,:),SSCMASS(:,:),SSSMASS25(:,:),SSCMASS25(:,:) &
+ ,DUSTCB(:,:),SSCB(:,:),OCCB(:,:),BCCB(:,:),SULFCB(:,:) &
+ ,DUSTALLCB(:,:),SSALLCB(:,:),DUSTPM(:,:),SSPM(:,:),PP25CB(:,:) &
+ ,PP10CB(:,:)!lzhang, add for FV3-Chem
+
!
end module vrbls2d
diff --git a/comupp/src/unipost/VRBLS3D_mod.f b/comupp/src/unipost/VRBLS3D_mod.f
index 23f6df303..bdd875198 100644
--- a/comupp/src/unipost/VRBLS3D_mod.f
+++ b/comupp/src/unipost/VRBLS3D_mod.f
@@ -3,6 +3,7 @@
! 11-10-18 SARAH LU - MODIFIED TO INCLUDE AEROSOL OPTICAL PROPERTIES
! 11-12-15 SARAH LU - MODIFIED TO INCLUDE AEROSOL DIAG FIELDS
! 12-01-06 SARAH LU - MODIFIED TO INCLUDE AIR DENSITY AND LAYER THICKNESS
+! 15-07-02 SARAH LU - MODIFIED TO INCLUDE SCATTERING AEROSOL OPTICAL THICKNESS
module vrbls3d
!- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
implicit none
@@ -51,19 +52,23 @@ module vrbls3d
,cnvctmgdrag(:,:,:) &
,QQNWFA(:,:,:) &
,QQNIFA(:,:,:) &
+ ,TAOD5503D(:,:,:) &
+ ,AEXTC55(:,:,:) &
!
! Add aerosol optical properties for GOCART (NGAC)
,ext(:,:,:), asy(:,:,:) &
- ,ssa(:,:,:) &
+ ,ssa(:,:,:), sca(:,:,:) &
! Add aerosol diagnosis fields for GOCART (NGAC)
,duem(:,:,:), dusd(:,:,:) &
,dudp(:,:,:), duwt(:,:,:) &
+ ,dusv(:,:,:), sssv(:,:,:) &
,suem(:,:,:), susd(:,:,:) &
,sudp(:,:,:), suwt(:,:,:) &
,ssem(:,:,:), sssd(:,:,:) &
,ssdp(:,:,:), sswt(:,:,:) &
,ocem(:,:,:), ocsd(:,:,:) &
,ocdp(:,:,:), ocwt(:,:,:) &
+ ,ocsv(:,:,:), bcsv(:,:,:) &
,bcem(:,:,:), bcsd(:,:,:) &
,bcdp(:,:,:), bcwt(:,:,:) &
! Add air density and thickness for GOCART (NGAC)
diff --git a/comupp/src/unipost/VRBLS4D_mod.f b/comupp/src/unipost/VRBLS4D_mod.f
index a371317be..9606a56a0 100644
--- a/comupp/src/unipost/VRBLS4D_mod.f
+++ b/comupp/src/unipost/VRBLS4D_mod.f
@@ -10,5 +10,8 @@ module vrbls4d
real, allocatable :: SOOT(:,:,:,:) ! black carbon
real, allocatable :: WASO(:,:,:,:) ! organic carbon
real, allocatable :: SUSO(:,:,:,:) ! sulfate
+ real, allocatable :: SMOKE(:,:,:,:)
+ real, allocatable :: PP25(:,:,:,:) ! PP25
+ real, allocatable :: PP10(:,:,:,:) ! PP10
!
end module vrbls4d
diff --git a/comupp/src/unipost/WRFPOST.f b/comupp/src/unipost/WRFPOST.f
index 5962b0767..1ebc24fe2 100644
--- a/comupp/src/unipost/WRFPOST.f
+++ b/comupp/src/unipost/WRFPOST.f
@@ -293,8 +293,8 @@ PROGRAM WRFPOST
! set default for kpo, kth, th, kpv, pv
kpo = 0
po = 0
- kth = 4
- th = (/320.,450.,550.,650.,(0.,k=kth+1,komax)/) ! isentropic level to output
+ kth = 6
+ th = (/310.,320.,350.,450.,550.,650.,(0.,k=kth+1,komax)/) ! isentropic level to output
kpv = 8
pv = (/0.5,-0.5,1.0,-1.0,1.5,-1.5,2.0,-2.0,(0.,k=kpv+1,komax)/)
@@ -577,7 +577,7 @@ PROGRAM WRFPOST
IM_JM = IM*JM
! opening GFS flux file
- IF(MODELNAME == 'GFS' .OR. MODELNAME == 'FV3R') THEN
+ IF(MODELNAME == 'GFS') THEN
! iunit=33
call nemsio_open(ffile,trim(fileNameFlux),'read',iret=iostatusFlux)
if ( iostatusFlux /= 0 ) then
@@ -707,10 +707,13 @@ PROGRAM WRFPOST
ELSE IF(MODELNAME == 'NMM') THEN
print*,'CALLING INITPOST_NMM TO PROCESS NMM NETCDF OUTPUT'
CALL INITPOST_NMM
- ELSE
+ ELSE IF (MODELNAME == 'FV3R') THEN
! use netcdf library to read output directly
print*,'CALLING INITPOST_NETCDF'
CALL INITPOST_NETCDF(ncid3d)
+ ELSE
+ PRINT*,'POST does not have netcdf option for model,',MODELNAME,' STOPPING,'
+ STOP 9998
END IF
ELSE IF(TRIM(IOFORM) == 'binarympiio') THEN
IF(MODELNAME == 'NCAR' .OR. MODELNAME == 'RAPR' .OR. MODELNAME == 'NMM') THEN
@@ -745,7 +748,7 @@ PROGRAM WRFPOST
! close nemsio file for serial read
call nemsio_close(nfile,iret=status)
CALL INITPOST_NEMS_MPIIO()
- ELSE IF(MODELNAME == 'GFS' .OR. MODELNAME == 'FV3R') THEN
+ ELSE IF(MODELNAME == 'GFS') THEN
! close nemsio file for serial read
call nemsio_close(nfile,iret=status)
call nemsio_close(ffile,iret=status)
diff --git a/comupp/src/unipost/grib2_module.f b/comupp/src/unipost/grib2_module.f
index 903792e93..7d858ea13 100644
--- a/comupp/src/unipost/grib2_module.f
+++ b/comupp/src/unipost/grib2_module.f
@@ -899,9 +899,27 @@ subroutine gengrb2msg(idisc,icatg, iparm,nprm,nlvl,fldlvl1,fldlvl2,ntrange,tinvs
!
call get_g2_sec5packingmethod(pset%packing_method,idrsnum,ierr)
if(maxval(datafld1)==minval(datafld1))then
- idrsnum=0
- print*,' changing to simple packing for constant fields'
+ idrsnum=0
+ print*,' changing to simple packing for constant fields'
end if
+ if(modelname=='RAPR') then
+ if((abs(maxval(datafld1)-minval(datafld1)) < 1.1) .and. (datafld1(1) > 500.0))then
+ idrsnum=0
+ print*,' changing to simple packing for constant fields: max-min < 0.1'
+ end if
+
+ if(trim(pset%param(nprm)%shortname)=='UGRD_ON_SPEC_HGT_LVL_ABOVE_GRND_10m'.or.&
+ trim(pset%param(nprm)%shortname)=='VGRD_ON_SPEC_HGT_LVL_ABOVE_GRND_10m'.or.&
+ trim(pset%param(nprm)%shortname)=='VWSH_ON_SPEC_HGT_LVL_ABOVE_GRND'.or.&
+ trim(pset%param(nprm)%shortname)=='VUCSH_ON_SPEC_HGT_LVL_ABOVE_GRND_0-1km'.or.&
+ trim(pset%param(nprm)%shortname)=='VVCSH_ON_SPEC_HGT_LVL_ABOVE_GRND_0-1km'.or.&
+ trim(pset%param(nprm)%shortname)=='VUCSH_ON_SPEC_HGT_LVL_ABOVE_GRND_0-6km'.or.&
+ trim(pset%param(nprm)%shortname)=='VVCSH_ON_SPEC_HGT_LVL_ABOVE_GRND_0-6km')then
+ idrsnum=0
+ print*,' changing to simple packing for field: ',trim(pset%param(nprm)%shortname)
+ endif
+ endif
+
! print *,'aft g2sec5,packingmethod=',pset%packing_method,'idrsnum=',idrsnum, &
! 'data=',maxval(datafld1),minval(datafld1)
!
diff --git a/comupp/src/unipost/gtg_smoothseams.f90 b/comupp/src/unipost/gtg_smoothseams.f90
new file mode 100644
index 000000000..c11137fec
--- /dev/null
+++ b/comupp/src/unipost/gtg_smoothseams.f90
@@ -0,0 +1,5 @@
+ subroutine getseams(seamfile,fillnumber,npts,ipts,jpts)
+ end subroutine getseams
+
+subroutine gtg_smoothseams(ismooth,IM,JM,jsta_2L,jend_2U,jsta,jend,fillnumber,npts,ipts,jpts,fld)
+end subroutine gtg_smoothseams
diff --git a/comupp/src/unipost/makefile b/comupp/src/unipost/makefile
index b84d7d655..9a0532809 100644
--- a/comupp/src/unipost/makefile
+++ b/comupp/src/unipost/makefile
@@ -50,7 +50,7 @@ OBJS_FT = wrf_io_flags.o getVariable.o \
getIVariableN.o kinds_mod.o machine.o physcons.o \
native_endianness.o \
retrieve_index.o ZENSUN.o \
- CLDFRAC_ZHAO.o GFSPOST.o GETGBANDSCATTER.o \
+ CLDFRAC_ZHAO.o GFSPOST.o GFSPOSTSIG.o GETGBANDSCATTER.o \
blockIO.o
# -----------
@@ -80,7 +80,7 @@ OBJS_F = VRBLS2D_mod.o VRBLS3D_mod.o VRBLS4D_mod.o MASKS_mod.o PMICRPH.o SOIL_m
GEO_ZENITH_ANGLE.o GFIP3.o GRIDAVG.o CALUPDHEL.o MSFPS.o INITPOST_GFS_SIGIO.o\
AllGETHERV_GSD.o SELECT_CHANNELS.o ALLOCATE_ALL.o INITPOST_NEMS_MPIIO.o ASSIGNNEMSIOVAR.o INITPOST_GFS_NEMS_MPIIO.o \
INITPOST_NETCDF.o \
- gtg_ctlblk.o gtg_indices.o gtg_filter.o gtg_compute.o gtg_config.o map_routines.o gtg_algo.o
+ gtg_ctlblk.o gtg_indices.o gtg_filter.o gtg_compute.o gtg_config.o map_routines.o gtg_algo.o gtg_smoothseams.o
OBJS = $(OBJS_F) $(OBJXML) $(OBJS_FT)
diff --git a/comupp/src/unipost/makefile_module b/comupp/src/unipost/makefile_module
index de9195e1c..5557ee7c0 100755
--- a/comupp/src/unipost/makefile_module
+++ b/comupp/src/unipost/makefile_module
@@ -26,26 +26,14 @@ CPP = $(myCPP) $(myCPPFLAGS)
CPPFLAGS = -DLINUX
FREE = -FR
-WRF_INC = -I$(WRFPATH)/external/io_quilt -I$(WRFPATH)/frame
-WRF_LIB = $(WRFPATH)/main/libwrflib.a \
- $(WRFPATH)/frame/pack_utils.o \
- $(WRFPATH)/frame/module_internal_header_util.o \
- $(WRFPATH)/external/io_grib1/libio_grib1.a \
- $(WRFPATH)/external/io_grib_share/libio_grib_share.a \
- $(WRFPATH)/external/io_int/libwrfio_int.a \
- $(WRFPATH)/external/io_netcdf/libwrfio_nf.a \
- $(WRFPATH)/external/esmf_time_f90/libesmf_time.a \
- $(WRFPATH)/external/RSL_LITE/librsl_lite.a
-
NETCDF_INC = -I$(NETCDF)/include
-NETCDF_LDFLAGS = -L$(NETCDF)/lib -lnetcdf
+NETCDF_LDFLAGS = -L$(NETCDF)/lib -lnetcdff -lnetcdf
CFLAGS = -DLINUX -Dfunder -DFortranByte=char -DFortranInt=int -DFortranLlong='long long'
FFLAGS = $(OPTS) $(FREE) $(DEBUG) \
-I$(SFCIO_INC4) \
-I$(NEMSIO_INC) \
- $(WRF_INC) \
-I$(SIGIO_INC4) \
-I$(G2_INC4) \
-I$(G2TMPL_INC) \
@@ -55,7 +43,7 @@ FFLAGS = $(OPTS) $(FREE) $(DEBUG) \
-I$(IP_INC4) \
$(NETCDF_INC)
-LIBS = $(WRF_LIB) \
+LIBS = $(WRFIO_LIB) \
$(G2TMPL_LIB) \
$(G2_LIB4) \
$(JASPER_LIB) \
@@ -74,12 +62,11 @@ LIBS = $(WRF_LIB) \
$(NETCDF_LDFLAGS)
-OBJS = wrf_io_flags.o getVariable.o getIVariable.o getIVariableN.o \
+OBJS = wrf_io_flags.o getVariable.o getIVariableN.o \
kinds_mod.o machine.o physcons.o \
- native_endianness.o blockIO.o initialize_byte_swap_wrf_binary_file.o \
- count_recs_wrf_binary_file.o inventory_wrf_binary_file.o \
- next_buf.o retrieve_index.o ZENSUN.o CLDFRAC_ZHAO.o \
- GFSPOST.o GETGBANDSCATTER.o \
+ native_endianness.o blockIO.o \
+ retrieve_index.o ZENSUN.o CLDFRAC_ZHAO.o \
+ GFSPOST.o GFSPOSTSIG.o GETGBANDSCATTER.o \
VRBLS2D_mod.o VRBLS3D_mod.o VRBLS4D_mod.o MASKS_mod.o PMICRPH.o SOIL_mod.o \
CMASSI.o CTLBLK.o GRIDSPEC.o LOOKUP.o PARAMR.o RHGRD.o RQSTFLD.o xml_perl_data.o \
cuparm.o params.o svptbl.o get_postfilename.o grib2_module.o \
@@ -100,14 +87,14 @@ OBJS = wrf_io_flags.o getVariable.o getIVariable.o getIVariableN.o \
SPLINE.o TABLE.o TABLEQ.o TRPAUS.o TTBLEX.o WETBULB.o WRFPOST.o \
CALMICT.o MICROINIT.o GPVS.o MDL2SIGMA.o \
ETCALC.o CANRES.o CALGUST.o WETFRZLVL.o SNFRAC.o MDL2AGL.o SNFRAC_GFS.o \
- AVIATION.o DEALLOCATE.o INITPOST_NMM_BIN_MPIIO.o \
+ AVIATION.o DEALLOCATE.o \
CALPBL.o MDL2SIGMA2.o INITPOST_GFS.o CALRH_GFS.o LFMFLD_GFS.o \
CALRAD_WCLOUD_newcrtm.o MDL2THANDPV.o CALPBLREGIME.o POLEAVG.o \
INITPOST_NEMS.o GETNEMSNDSCATTER.o ICAOHEIGHT.o INITPOST_GFS_NEMS.o \
- INITPOST_BIN_MPIIO.o GEO_ZENITH_ANGLE.o GFIP3.o GRIDAVG.o CALUPDHEL.o INITPOST_GFS_SIGIO.o \
+ GEO_ZENITH_ANGLE.o GFIP3.o GRIDAVG.o CALUPDHEL.o INITPOST_GFS_SIGIO.o \
AllGETHERV_GSD.o MSFPS.o SELECT_CHANNELS.o ALLOCATE_ALL.o INITPOST_NEMS_MPIIO.o ASSIGNNEMSIOVAR.o \
INITPOST_GFS_NEMS_MPIIO.o INITPOST_NETCDF.o \
- gtg_ctlblk.o gtg_indices.o gtg_filter.o gtg_compute.o gtg_config.o map_routines.o gtg_algo.o
+ gtg_ctlblk.o gtg_indices.o gtg_filter.o gtg_compute.o gtg_config.o map_routines.o gtg_algo.o gtg_smoothseams.o
.SUFFIXES: .F .f .o .f90 .c
diff --git a/parm/hafs.xml b/parm/hafs.xml
index c0cc6a5d4..3c24b63c2 100755
--- a/parm/hafs.xml
+++ b/parm/hafs.xml
@@ -409,7 +409,7 @@
CD_ON_SURFACE
CD
NCEP
- 3.0
+ 6.0
diff --git a/parm/hires_micro_lookup.dat b/parm/hires_micro_lookup.dat
new file mode 100755
index 000000000..4f33d59c4
Binary files /dev/null and b/parm/hires_micro_lookup.dat differ
diff --git a/parm/post_avblflds.xml b/parm/post_avblflds.xml
index 7bcb31b20..cae0a07a8 100755
--- a/parm/post_avblflds.xml
+++ b/parm/post_avblflds.xml
@@ -3665,7 +3665,7 @@
MAX_UPHL_ON_SPEC_HGT_LVL_ABOVE_GRND_2-5km
maximum Updraft Helicity on Specified Height Level Above Ground
tmpl4_8
- UPHL
+ MXUPHL
MAX
spec_hgt_lvl_above_grnd
5000.
diff --git a/parm/post_avblflds_comupp.xml b/parm/post_avblflds_comupp.xml
new file mode 100644
index 000000000..9d408ba12
--- /dev/null
+++ b/parm/post_avblflds_comupp.xml
@@ -0,0 +1,5399 @@
+
+
+
+
+
+
+ 1
+ PRES_ON_HYBRID_LVL
+ PRES
+ hybrid_lvl
+ 6.0
+
+
+
+ 2
+ TMP_ON_HYBRID_LVL
+ TMP
+ hybrid_lvl
+ 4.0
+
+
+
+ 3
+ POT_ON_HYBRID_LVL
+ POT
+ hybrid_lvl
+ 4.0
+
+
+
+ 4
+ DPT_ON_HYBRID_LVL
+ DPT
+ hybrid_lvl
+ 5.0
+
+
+
+ 5
+ SPFH_ON_HYBRID_LVL
+ SPFH
+ hybrid_lvl
+ 7.0
+
+
+
+ 6
+ RH_ON_HYBRID_LVL
+ RH
+ hybrid_lvl
+ 4.0
+
+
+
+ 7
+ UGRD_ON_HYBRID_LVL
+ UGRD
+ hybrid_lvl
+ 4.0
+
+
+
+ 8
+ VGRD_ON_HYBRID_LVL
+ VGRD
+ hybrid_lvl
+ 4.0
+
+
+
+ 9
+ VVEL_ON_HYBRID_LVL
+ VVEL
+ hybrid_lvl
+ 5.0
+
+
+
+ 10
+ ABSV_ON_HYBRID_LVL
+ ABSV
+ hybrid_lvl
+ 3.0
+
+
+
+ 11
+ TKE_ON_HYBRID_LVL
+ TKE
+ hybrid_lvl
+ 3.0
+
+
+
+ 12
+ HGT_ON_ISOBARIC_SFC
+ HGT
+ isobaric_sfc
+ 6.0
+
+
+
+ 13
+ TMP_ON_ISOBARIC_SFC
+ TMP
+ isobaric_sfc
+ 3.0
+
+
+
+ 14
+ POT_ON_ISOBARIC_SFC
+ POT
+ isobaric_sfc
+ 4.0
+
+
+
+ 15
+ DPT_ON_ISOBARIC_SFC
+ DPT
+ isobaric_sfc
+ 5.0
+
+
+
+ 16
+ SPFH_ON_ISOBARIC_SFC
+ SPFH
+ isobaric_sfc
+ 4.0
+
+
+
+ 17
+ RH_ON_ISOBARIC_SFC
+ RH
+ isobaric_sfc
+ 2.0
+
+
+
+ 18
+ UGRD_ON_ISOBARIC_SFC
+ UGRD
+ isobaric_sfc
+ 4.0
+
+
+
+ 19
+ VGRD_ON_ISOBARIC_SFC
+ VGRD
+ isobaric_sfc
+ 4.0
+
+
+
+ 20
+ VVEL_ON_ISOBARIC_SFC
+ VVEL
+ isobaric_sfc
+ 5.0
+
+
+
+ 21
+ ABSV_ON_ISOBARIC_SFC
+ ABSV
+ isobaric_sfc
+ 4.0
+
+
+
+ 22
+ TKE_ON_ISOBARIC_SFC
+ TKE
+ isobaric_sfc
+ 3.0
+
+
+
+ 23
+ MSLET_ON_MEAN_SEA_LVL
+ MSLET
+ NCEP
+ mean_sea_lvl
+ 6.0
+
+
+
+ 24
+ PRES_ON_SURFACE
+ PRES
+ surface
+ 6.0
+
+
+
+ 25
+ HGT_ON_SURFACE
+ HGT
+ surface
+ 6.0
+
+
+
+ 26
+ TMP_ON_SURFACE
+ TMP
+ surface
+ 4.0
+
+
+
+ 27
+ POT_ON_SURFACE
+ POT
+ surface
+ 5.0
+
+
+
+ 28
+ SPFH_ON_SURFACE
+ SPFH
+ surface
+ 3.0
+
+
+
+ 29
+ DPT_ON_SURFACE
+ DPT
+ surface
+ 4.0
+
+
+
+ 30
+ LFTX_ON_ISOBARIC_SFC_500-1000hpa
+ LFTX
+ isobaric_sfc
+ 50000.
+ isobaric_sfc
+ 100000.
+ 3.0
+
+
+
+ 31
+ 4LFTX_ON_SPEC_PRES_ABOVE_GRND
+ 4LFTX
+ spec_pres_above_grnd
+ spec_pres_above_grnd
+ 3.0
+
+
+
+ 32
+ CAPE_ON_SURFACE
+ CAPE
+ surface
+ 4.0
+
+
+
+ 33
+ ACM_ACPCP_ON_SURFACE
+ tmpl4_8
+ ACPCP
+ ACM
+ surface
+ 4.0
+
+
+
+ 34
+ ACM_NCPCP_ON_SURFACE
+ tmpl4_8
+ NCPCP
+ ACM
+ surface
+ 4.0
+
+
+
+ 35
+ ACM_WEASD_ON_SURFACE
+ tmpl4_8
+ WEASD
+ ACM
+ surface
+ 4.0
+
+
+
+ 36
+ SOILM_ON_DEPTH_BEL_LAND_SFC
+ SOILM
+ depth_bel_land_sfc
+ 2
+ depth_bel_land_sfc
+ 2
+ 3.0
+
+
+
+ 37
+ LCDC_ON_LOW_CLOUD_LYR
+ LCDC
+ low_cloud_lyr
+ 3.0
+
+
+
+ 38
+ MCDC_ON_MID_CLOUD_LYR
+ MCDC
+ mid_cloud_lyr
+ 3.0
+
+
+
+ 39
+ HCDC_ON_HIGH_CLOUD_LYR
+ HCDC
+ high_cloud_lyr
+ 3.0
+
+
+
+ 40
+ SWHR_ON_HYBRID_LVL
+ SWHR
+ hybrid_lvl
+ 3.0
+
+
+
+ 41
+ LWHR_ON_HYBRID_LVL
+ LWHR
+ hybrid_lvl
+ 3.0
+
+
+
+ 42
+ AVE_LHTFL_ON_SURFACE
+ tmpl4_8
+ LHTFL
+ AVE
+ surface
+ 4.0
+
+
+
+ 43
+ AVE_SHTFL_ON_SURFACE
+ tmpl4_8
+ SHTFL
+ AVE
+ surface
+ 4.0
+
+
+
+ 44
+ SFCR_ON_SURFACE
+ SFCR
+ surface
+ 2.7
+
+
+
+ 45
+ FRICV_ON_SURFACE
+ FRICV
+ surface
+ 4.0
+
+
+
+ 46
+ AVE_MFLX_ON_SURFACE
+ tmpl4_8
+ MFLX
+ AVE
+ surface
+ -3.0
+
+
+
+ 47
+ ACM_EVP_ON_SURFACE
+ tmpl4_8
+ EVP
+ ACM
+ surface
+ 4.0
+
+
+
+ 48
+ NLAT_ON_SURFACE
+ NLAT
+ surface
+ 4.0
+
+
+
+ 49
+ ELON_ON_SURFACE
+ ELON
+ surface
+ 4.0
+
+
+
+ 50
+ LAND_ON_SURFACE
+ LAND
+ surface
+ 1.0
+
+
+
+ 51
+ ICEC_ON_SURFACE
+ ICEC
+ surface
+ 3.0
+
+
+
+ 52
+ LMH_ON_SURFACE
+ LMH
+ surface
+ 2.0
+
+
+
+ 53
+ LMV_ON_SURFACE
+ LMV
+ surface
+ 2.0
+
+
+
+ 54
+ PRES_ON_TROPOPAUSE
+ PRES
+ tropopause
+ 6.0
+
+
+
+ 55
+ TMP_ON_TROPOPAUSE
+ TMP
+ tropopause
+ 3.0
+
+
+
+ 56
+ UGRD_ON_TROPOPAUSE
+ UGRD
+ tropopause
+ 4.0
+
+
+
+ 57
+ VGRD_ON_TROPOPAUSE
+ VGRD
+ tropopause
+ 4.0
+
+
+
+ 58
+ VWSH_ON_TROPOPAUSE
+ VWSH
+ tropopause
+ 3.0
+
+
+
+ 59
+ TMP_ON_SPEC_ALT_ABOVE_MEAN_SEA_LVL
+ TMP
+ spec_alt_above_mean_sea_lvl
+ 3.0
+
+
+
+ 60
+ UGRD_ON_SPEC_ALT_ABOVE_MEAN_SEA_LVL
+ UGRD
+ spec_alt_above_mean_sea_lvl
+ 4.0
+
+
+
+ 61
+ VGRD_ON_SPEC_ALT_ABOVE_MEAN_SEA_LVL
+ VGRD
+ spec_alt_above_mean_sea_lvl
+ 4.0
+
+
+
+ 62
+ HGT_ON_0C_ISOTHERM
+ HGT
+ 0C_isotherm
+ 6.0
+
+
+
+ 63
+ RH_ON_0C_ISOTHERM
+ RH
+ 0C_isotherm
+ 2.0
+
+
+
+ 64
+ UGRD_ON_SPEC_HGT_LVL_ABOVE_GRND_10m
+ UGRD
+ spec_hgt_lvl_above_grnd
+ 10.
+ 4.0
+
+
+
+ 65
+ VGRD_ON_SPEC_HGT_LVL_ABOVE_GRND_10m
+ VGRD
+ spec_hgt_lvl_above_grnd
+ 10.
+ 4.0
+
+
+
+ 66
+ RH_ON_SIGMA_LVL_0.33-1.0
+ RH
+ sigma_lvl
+ 2
+ 33.
+ sigma_lvl
+ 2
+ 100.
+ 2.0
+
+
+
+ 67
+ PRES_ON_SPEC_PRES_ABOVE_GRND
+ PRES
+ spec_pres_above_grnd
+ spec_pres_above_grnd
+ 6.0
+
+
+
+ 68
+ TMP_ON_SPEC_PRES_ABOVE_GRND
+ TMP
+ spec_pres_above_grnd
+ spec_pres_above_grnd
+ 3.0
+
+
+
+ 69
+ POT_ON_SPEC_PRES_ABOVE_GRND
+ POT
+ spec_pres_above_grnd
+ spec_pres_above_grnd
+ 4.0
+
+
+
+ 70
+ DPT_ON_SPEC_PRES_ABOVE_GRND
+ DPT
+ spec_pres_above_grnd
+ spec_pres_above_grnd
+ 3.0
+
+
+
+ 71
+ SPFH_ON_SPEC_PRES_ABOVE_GRND
+ SPFH
+ spec_pres_above_grnd
+ spec_pres_above_grnd
+ 5.0
+
+
+
+ 72
+ RH_ON_SPEC_PRES_ABOVE_GRND
+ RH
+ spec_pres_above_grnd
+ spec_pres_above_grnd
+ 2.0
+
+
+
+ 73
+ UGRD_ON_SPEC_PRES_ABOVE_GRND
+ UGRD
+ spec_pres_above_grnd
+ spec_pres_above_grnd
+ 4.0
+
+
+
+ 74
+ VGRD_ON_SPEC_PRES_ABOVE_GRND
+ VGRD
+ spec_pres_above_grnd
+ spec_pres_above_grnd
+ 4.0
+
+
+
+ 75
+ PLI_ON_SPEC_PRES_ABOVE_GRND
+ PLI
+ spec_pres_above_grnd
+ spec_pres_above_grnd
+ 3.0
+
+
+
+ 76
+ RH_ON_SURFACE
+ RH
+ surface
+ 4.0
+
+
+
+ 77
+ HGT_ON_HYBRID_LVL
+ HGT
+ hybrid_lvl
+ 4.0
+
+
+
+ 78
+ AVE_LRGHR_ON_HYBRID_LVL
+ tmpl4_8
+ LRGHR
+ AVE
+ hybrid_lvl
+ 3.0
+
+
+
+ 79
+ AVE_CNVHR_ON_HYBRID_LVL
+ tmpl4_8
+ CNVHR
+ AVE
+ hybrid_lvl
+ 2.7
+
+
+
+ 80
+ PWAT_ON_ENTIRE_ATMOS_SINGLE_LYR
+ PWAT
+ entire_atmos_single_lyr
+ 3.0
+
+
+
+ 81
+ RH_ON_SIGMA_LVL_0.66-1.0
+ RH
+ sigma_lvl
+ 2
+ 66.
+ sigma_lvl
+ 2
+ 100.
+ 2.0
+
+
+
+ 82
+ RH_ON_SIGMA_LVL_0.33-0.66
+ RH
+ sigma_lvl
+ 2
+ 33.
+ sigma_lvl
+ 2
+ 66.
+ 2.0
+
+
+
+ 83
+ MCONV_ON_HYBRID_LVL
+ MCONV
+ hybrid_lvl
+ 3.0
+
+
+
+ 84
+ STRM_ON_HYBRID_LVL
+ STRM
+ hybrid_lvl
+ 3.0
+
+
+
+ 85
+ MCONV_ON_ISOBARIC_SFC
+ MCONV
+ isobaric_sfc
+ 3.0
+
+
+
+ 86
+ STRM_ON_ISOBARIC_SFC
+ STRM
+ isobaric_sfc
+ 3.0
+
+
+
+ 87
+ ACM_APCP_ON_SURFACE
+ tmpl4_8
+ APCP
+ ACM
+ surface
+ 4.0
+
+
+
+ 88
+ MCONV_ON_SPEC_PRES_ABOVE_GRND
+ MCONV
+ spec_pres_above_grnd
+ spec_pres_above_grnd
+ 3.0
+
+
+
+ 89
+ PWAT_ON_SPEC_PRES_ABOVE_GRND
+ PWAT
+ spec_pres_above_grnd
+ spec_pres_above_grnd
+ 3.0
+
+
+
+ 90
+ VVEL_ON_SPEC_PRES_ABOVE_GRND
+ VVEL
+ spec_pres_above_grnd
+ spec_pres_above_grnd
+ 5.0
+
+
+
+ 91
+ PRES_ON_SIGMA_LVL_0.98230
+ PRES
+ sigma_lvl
+ 5
+ 98230.
+ 6.0
+
+
+
+ 92
+ TMP_ON_SIGMA_LVL_0.98230
+ TMP
+ sigma_lvl
+ 5
+ 98230.
+ 4.0
+
+
+
+ 93
+ SPFH_ON_SIGMA_LVL_0.98230
+ SPFH
+ sigma_lvl
+ 5
+ 98230.
+ 3.0
+
+
+
+ 94
+ RH_ON_SIGMA_LVL_0.98230
+ RH
+ sigma_lvl
+ 5
+ 98230.
+ 4.0
+
+
+
+ 95
+ UGRD_ON_SIGMA_LVL_0.98230
+ UGRD
+ sigma_lvl
+ 5
+ 98230.
+ 5.0
+
+
+
+ 96
+ VGRD_ON_SIGMA_LVL_0.98230
+ VGRD
+ sigma_lvl
+ 5
+ 98230.
+ 5.0
+
+
+
+ 97
+ TMP_ON_SIGMA_LVL_0.89671
+ TMP
+ sigma_lvl
+ 5
+ 89671.
+ 4.0
+
+
+
+ 98
+ TMP_ON_SIGMA_LVL_0.78483
+ TMP
+ sigma_lvl
+ 5
+ 78483.
+ 4.0
+
+
+
+ 99
+ RH_ON_SIGMA_LVL_0.47_1.0
+ RH
+ sigma_lvl
+ 2
+ 47.
+ sigma_lvl
+ 2
+ 100.
+ 2.0
+
+
+
+ 100
+ RH_ON_SIGMA_LVL_0.47_0.96
+ RH
+ sigma_lvl
+ 2
+ 47.
+ sigma_lvl
+ 2
+ 96.
+ 2.0
+
+
+
+ 101
+ RH_ON_SIGMA_LVL_0.18_0.47
+ RH
+ sigma_lvl
+ 2
+ 18.
+ sigma_lvl
+ 2
+ 47.
+ 2.0
+
+
+
+ 102
+ RH_ON_SIGMA_LVL_0.84_0.98
+ RH
+ sigma_lvl
+ 2
+ 84.
+ sigma_lvl
+ 2
+ 98.
+ 2.0
+
+
+
+ 103
+ MCONV_ON_SIGMA_LVL_0.85_1.0
+ MCONV
+ sigma_lvl
+ 2
+ 85.
+ sigma_lvl
+ 2
+ 100.
+ 3.0
+
+
+
+ 104
+ PWAT_ON_SIGMA_LVL_0.33_1.0
+ PWAT
+ sigma_lvl
+ 2
+ 33.
+ sigma_lvl
+ 2
+ 100.
+ 2.0
+
+
+
+ 105
+ PRES_ON_MEAN_SEA_LVL
+ PRMSL
+ mean_sea_lvl
+ 6.0
+
+
+
+ 106
+ TMP_ON_SPEC_HGT_LVL_ABOVE_GRND_2m
+ TMP
+ spec_hgt_lvl_above_grnd
+ 2.
+ 4.0
+
+
+
+ 107
+ CIN_ON_SURFACE
+ CIN
+ surface
+ 4.0
+
+
+
+ 108
+ POT_ON_TROPOPAUSE
+ POT
+ tropopause
+ 5.0
+
+
+
+ 109
+ HGT_ON_LVL_OF_ADIAB_COND_FROM_SFC
+ HGT
+ lvl_of_adiab_cond_from_sfc
+ 5.0
+
+
+
+ 110
+ PRES_ON_LVL_OF_ADIAB_COND_FROM_SFC
+ PRES
+ lvl_of_adiab_cond_from_sfc
+ 6.0
+
+
+
+ 111
+ RI_ON_HYBRID_LVL
+ RI
+ hybrid_lvl
+ 3.0
+
+
+
+ 112
+ SPFH_ON_SPEC_HGT_LVL_ABOVE_GRND_2m
+ SPFH
+ spec_hgt_lvl_above_grnd
+ 2.
+ 4.0
+
+
+
+ 113
+ DPT_ON_SPEC_HGT_LVL_ABOVE_GRND_2m
+ DPT
+ spec_hgt_lvl_above_grnd
+ 2.
+ 4.0
+
+
+
+ 114
+ RH_ON_SPEC_HGT_LVL_ABOVE_GRND_2m
+ RH
+ spec_hgt_lvl_above_grnd
+ 2.
+ 3.0
+
+
+
+ 115
+ TSOIL_ON_DEPTH_BEL_LAND_SFC_3m
+ TSOIL
+ depth_bel_land_sfc
+ 3.
+ 3.0
+
+
+
+ 116
+ TSOIL_ON_DEPTH_BEL_LAND_SFC
+ TSOIL
+ depth_bel_land_sfc
+ 2
+ depth_bel_land_sfc
+ 2
+ 4.0
+
+
+
+ 117
+ SOILW_ON_DEPTH_BEL_LAND_SFC
+ SOILW
+ NCEP
+ depth_bel_land_sfc
+ 2
+ depth_bel_land_sfc
+ 2
+ 3.0
+
+
+
+ 118
+ CNWAT_ON_SURFACE
+ CNWAT
+ surface
+ 1.0
+
+
+
+ 119
+ WEASD_ON_SURFACE
+ WEASD
+ surface
+ 4.0
+
+
+
+ 120
+ SNOWC_ON_SURFACE
+ SNOWC
+ surface
+ 3.0
+
+
+
+ 121
+ ACM_SNOM_ON_SURFACE
+ tmpl4_8
+ SNOM
+ ACM
+ surface
+ 4.0
+
+
+
+ 122
+ ACM_SSRUN_ON_SURFACE
+ tmpl4_8
+ SSRUN
+ ACM
+ surface
+ 4.0
+
+
+
+ 123
+ ACM_BGRUN_ON_SURFACE
+ tmpl4_8
+ BGRUN
+ ACM
+ surface
+ 4.0
+
+
+
+ 124
+ CLWMR_ON_HYBRID_LVL
+ CLWMR
+ hybrid_lvl
+ 3.0
+
+
+
+ 125
+ CICE_ON_HYBRID_LVL
+ CICE
+ hybrid_lvl
+ 3.0
+
+
+
+ 126
+ AVE_DSWRF_ON_SURFACE
+ tmpl4_8
+ DSWRF
+ AVE
+ surface
+ 3.0
+
+
+
+ 127
+ AVE_DLWRF_ON_SURFACE
+ tmpl4_8
+ DLWRF
+ AVE
+ surface
+ 3.0
+
+
+
+ 128
+ AVE_USWRF_ON_SURFACE
+ tmpl4_8
+ USWRF
+ AVE
+ surface
+ 3.0
+
+
+
+ 129
+ AVE_ULWRF_ON_SURFACE
+ tmpl4_8
+ ULWRF
+ AVE
+ surface
+ 3.0
+
+
+
+ 130
+ AVE_USWRF_ON_TOP_OF_ATMOS
+ tmpl4_8
+ USWRF
+ AVE
+ top_of_atmos
+ 3.0
+
+
+
+ 131
+ AVE_ULWRF_ON_TOP_OF_ATMOS
+ tmpl4_8
+ ULWRF
+ AVE
+ top_of_atmos
+ 3.0
+
+
+
+ 132
+ CD_ON_SURFACE
+ CD
+ surface
+ 3.0
+
+
+
+ 133
+ UFLX_ON_SURFACE
+ UFLX
+ surface
+ 3.0
+
+
+
+ 134
+ VFLX_ON_SURFACE
+ VFLX
+ surface
+ 3.0
+
+
+
+ 135
+ AVE_GFLUX_ON_SURFACE
+ tmpl4_8
+ GFLUX
+ AVE
+ surface
+ 4.0
+
+
+
+ 136
+ AVE_SNOHF_ON_SURFACE
+ tmpl4_8
+ SNOHF
+ AVE
+ surface
+ 4.0
+
+
+
+ 137
+ ACM_PEVAP_ON_SURFACE
+ tmpl4_8
+ PEVAP
+ ACM
+ surface
+ 4.0
+
+
+
+ 138
+ PRES_ON_SPEC_HGT_LVL_ABOVE_GRND_2m
+ PRES
+ spec_hgt_lvl_above_grnd
+ 2.
+ 6.0
+
+
+
+ 139
+ AVE_CDLYR_ON_ENTIRE_ATMOS
+ tmpl4_8
+ CDLYR
+ AVE
+ entire_atmos_single_lyr
+ 3.0
+
+
+
+ 140
+ TTRAD_ON_HYBRID_LVL
+ TTRAD
+ hybrid_lvl
+ 3.0
+
+
+
+ 141
+ INST_USWRF_ON_SURFACE
+ USWRF
+ surface
+ 4.0
+
+
+
+ 142
+ INST_ULWRF_ON_SURFACE
+ ULWRF
+ surface
+ 4.0
+
+
+
+ 143
+ AVE_CDCON_ON_ENTIRE_ATMOS
+ tmpl4_8
+ CDCON
+ AVE
+ entire_atmos_single_lyr
+ 3.0
+
+
+
+ 144
+ AVE_TCDC_ON_ENTIRE_ATMOS
+ tmpl4_8
+ TCDC
+ AVE
+ entire_atmos_single_lyr
+ 3.0
+
+
+
+ 145
+ TCDC_ON_HYBRID_LVL
+ TCDC
+ hybrid_lvl
+ 3.0
+
+
+
+ 146
+ BMIXL_ON_HYBRID_LVL
+ BMIXL
+ hybrid_lvl
+ 3.0
+
+
+
+ 147
+ AMIXL_ON_HYBRID_LVL
+ AMIXL
+ hybrid_lvl
+ 3.0
+
+
+
+ 148
+ PRES_ON_CLOUD_BASE
+ PRES
+ cloud_base
+ 6.0
+
+
+
+ 149
+ PRES_ON_CLOUD_TOP
+ PRES
+ cloud_top
+ 6.0
+
+
+
+ 150
+ ALBDO_ON_SURFACE
+ ALBDO
+ surface
+ 3.0
+
+
+
+ 151
+ WTMP_ON_SURFACE
+ WTMP
+ surface
+ 5.0
+
+
+
+ 152
+ INST_GFLUX_ON_SURFACE
+ GFLUX
+ surface
+ 3.0
+
+
+
+ 153
+ CLWMR_ON_ISOBARIC_SFC
+ CLWMR
+ isobaric_sfc
+ 4.0
+
+
+
+ 154
+ INST_SHTFL_ON_SURFACE
+ SHTFL
+ surface
+ 4.0
+
+
+
+ 155
+ INST_LHTFL_ON_SURFACE
+ LHTFL
+ surface
+ 4.0
+
+
+
+ 156
+ INST_DSWRF_ON_SURFACE
+ DSWRF
+ surface
+ 4.0
+
+
+
+ 157
+ INST_DLWRF_ON_SURFACE
+ DLWRF
+ surface
+ 4.0
+
+
+
+ 158
+ POT_ON_SPEC_HGT_LVL_ABOVE_GRND_10m
+ POT
+ spec_hgt_lvl_above_grnd
+ 5.0
+
+
+
+ 159
+ SPFH_ON_SPEC_HGT_LVL_ABOVE_GRND_10m
+ SPFH
+ spec_hgt_lvl_above_grnd
+ 3.0
+
+
+
+ 160
+ INST_CRAIN_ON_SURFACE
+ CRAIN
+ surface
+ 1.0
+
+
+
+ 161
+ INST_TCDC_ON_ENTIRE_ATMOS
+ TCDC
+ entire_atmos_single_lyr
+ 3.0
+
+
+
+ 162
+ HLCY_ON_SPEC_HGT_LVL_ABOVE_GRND
+ HLCY
+ spec_hgt_lvl_above_grnd
+ spec_hgt_lvl_above_grnd
+ 4.0
+
+
+
+ 163
+ USTM_ON_SPEC_HGT_LVL_ABOVE_GRND
+ USTM
+ spec_hgt_lvl_above_grnd
+ spec_hgt_lvl_above_grnd
+ 4.0
+
+
+
+ 164
+ VSTM_ON_SPEC_HGT_LVL_ABOVE_GRND
+ VSTM
+ spec_hgt_lvl_above_grnd
+ spec_hgt_lvl_above_grnd
+ 4.0
+
+
+
+ 165
+ HGT_ON_HGHST_TROP_FRZ_LVL
+ HGT
+ hghst_trop_frz_lvl
+ 6.0
+
+
+
+ 166
+ CICE_ON_ISOBARIC_SFC
+ CICE
+ isobaric_sfc
+ 6.0
+
+
+
+ 167
+ INST_PRATE_ON_SURFACE
+ PRATE
+ surface
+ 3.0
+
+
+
+ 168
+ TMP_ON_CLOUD_TOP
+ TMP
+ cloud_top
+ 5.0
+
+
+
+ 169
+ SFEXC_ON_SURFACE
+ SFEXC
+ surface
+ 3.0
+
+
+
+ 170
+ VEG_ON_SURFACE
+ VEG
+ surface
+ 3.0
+
+
+
+ 171
+ MSTAV_ON_DEPTH_BEL_LAND_SFC
+ MSTAV
+ depth_bel_land_sfc
+ 2
+ depth_bel_land_sfc
+ 2
+ 3.0
+
+
+
+ 172
+ CPOFP_ON_SURFACE
+ CPOFP
+ surface
+ 4.0
+
+
+
+ 173
+ PRES_ON_MAX_WIND
+ PRES
+ max_wind
+ 6.0
+
+
+
+ 174
+ HGT_ON_MAX_WIND
+ HGT
+ max_wind
+ 6.0
+
+
+
+ 175
+ UGRD_ON_MAX_WIND
+ UGRD
+ max_wind
+ 4.0
+
+
+
+ 176
+ VGRD_ON_MAX_WIND
+ VGRD
+ max_wind
+ 4.0
+
+
+
+ 177
+ HGT_ON_TROPOPAUSE
+ HGT
+ tropopause
+ 6.0
+
+
+
+ 178
+ HGT_ON_CLOUD_BASE
+ HGT
+ cloud_base
+ 6.0
+
+
+
+ 179
+ HGT_ON_CLOUD_TOP
+ HGT
+ cloud_top
+ 6.0
+
+
+
+ 180
+ VIS_ON_SURFACE
+ VIS
+ surface
+ 3.0
+
+
+
+ 181
+ RWMR_ON_HYBRID_LVL
+ RWMR
+ hybrid_lvl
+ 3.0
+
+
+
+ 182
+ SNMR_ON_HYBRID_LVL
+ SNMR
+ hybrid_lvl
+ 3.0
+
+
+
+ 183
+ RWMR_ON_ISOBARIC_SFC
+ RWMR
+ isobaric_sfc
+ 3.0
+
+
+
+ 184
+ SNMR_ON_ISOBARIC_SFC
+ SNMR
+ isobaric_sfc
+ 3.0
+
+
+
+ 185
+ FRAIN_ON_HYBRID_LVL
+ FRAIN
+ hybrid_lvl
+ 3.0
+
+
+
+ 186
+ FICE_ON_HYBRID_LVL
+ FICE
+ hybrid_lvl
+ 3.0
+
+
+
+ 187
+ RIME_ON_HYBRID_LVL
+ RIME
+ hybrid_lvl
+ 3.0
+
+
+
+ 188
+ PRES_ON_CONVECTIVE_CLOUD_BOT_LVL
+ PRES
+ convective_cloud_bot_lvl
+ 6.0
+
+
+
+ 189
+ PRES_ON_CONVECTIVE_CLOUD_TOP_LVL
+ PRES
+ convective_cloud_top_lvl
+ 6.0
+
+
+
+ 190
+ PRES_ON_SHALL_CONVECTIVE_CLOUD_BOT_LVL
+ PRES
+ shall_convective_cloud_bot_lvl
+ 6.0
+
+
+
+ 191
+ PRES_ON_SHALL_CONVECTIVE_CLOUD_TOP_LVL
+ PRES
+ shall_convective_cloud_top_lvl
+ 6.0
+
+
+
+ 192
+ PRES_ON_DEEP_CONVECTIVE_CLOUD_BOT_LVL
+ PRES
+ deep_convective_cloud_bot_lvl
+ 6.0
+
+
+
+ 193
+ PRES_ON_DEEP_CONVECTIVE_CLOUD_TOP_LVL
+ PRES
+ deep_convective_cloud_top_lvl
+ 6.0
+
+
+
+ 194
+ PRES_ON_GRID_SCALE_CLOUD_BOT_LVL
+ PRES
+ grid_scale_cloud_bot_lvl
+ 6.0
+
+
+
+ 195
+ PRES_ON_GRID_SCALE_CLOUD_TOP_LVL
+ PRES
+ grid_scale_cloud_top_lvl
+ 6.0
+
+
+
+ 196
+ CDCON_ON_ENTIRE_ATMOS
+ CDCON
+ entire_atmos_single_lyr
+ 2.0
+
+
+
+ 197
+ CUEFI_ON_ENTIRE_ATMOS_SINGLE_LYR
+ CUEFI
+ entire_atmos_single_lyr
+ 3.0
+
+
+
+ 198
+ TCOND_ON_ISOBARIC_SFC
+ TCOND
+ isobaric_sfc
+ 3.0
+
+
+
+ 199
+ TCOND_ON_HYBRID_LVL
+ TCOND
+ hybrid_lvl
+ 3.0
+
+
+
+ 200
+ TCOLW_ON_ENTIRE_ATMOS
+ TCOLW
+ entire_atmos_single_lyr
+ 5.0
+
+
+
+ 201
+ TCOLI_ON_ENTIRE_ATMOS
+ TCOLI
+ entire_atmos_single_lyr
+ 5.0
+
+
+
+ 202
+ TCOLR_ON_ENTIRE_ATMOS
+ TCOLR
+ entire_atmos_single_lyr
+ 5.0
+
+
+
+ 203
+ TCOLS_ON_ENTIRE_ATMOS
+ TCOLS
+ entire_atmos_single_lyr
+ 5.0
+
+
+
+ 204
+ TCOLC_ON_ENTIRE_ATMOS
+ TCOLC
+ entire_atmos_single_lyr
+ 5.0
+
+
+
+ 205
+ HGT_ON_SIGMA_LVLS
+ HGT
+ sigma_lvl
+ 5.0
+
+
+
+ 206
+ TMP_ON_SIGMA_LVLS
+ TMP
+ sigma_lvl
+ 4.0
+
+
+
+ 207
+ SPFH_ON_SIGMA_LVLS
+ SPFH
+ sigma_lvl
+ 3.0
+
+
+
+ 208
+ UGRD_ON_SIGMA_LVLS
+ UGRD
+ sigma_lvl
+ 4.0
+
+
+
+ 209
+ VGRD_ON_SIGMA_LVLS
+ VGRD
+ sigma_lvl
+ 4.0
+
+
+
+ 210
+ VVEL_ON_SIGMA_LVLS
+ VVEL
+ sigma_lvl
+ 5.0
+
+
+
+ 211
+ CLWMR_ON_SIGMA_LVLS
+ CLWMR
+ sigma_lvl
+ 4.0
+
+
+
+ 212
+ CICE_ON_SIGMA_LVLS
+ CICE
+ sigma_lvl
+ 6.0
+
+
+
+ 213
+ RWMR_ON_SIGMA_LVLS
+ RWMR
+ sigma_lvl
+ 3.0
+
+
+
+ 214
+ SNMR_ON_SIGMA_LVLS
+ SNMR
+ sigma_lvl
+ 3.0
+
+
+
+ 215
+ TCOND_ON_SIGMA_LVLS
+ TCOND
+ sigma_lvl
+ 3.0
+
+
+
+ 216
+ PRES_ON_SIGMA_LVLS
+ PRES
+ sigma_lvl
+ 6.0
+
+
+
+ 217
+ TKE_ON_SIGMA_LVLS
+ TKE
+ sigma_lvl
+ 3.0
+
+
+
+ 218
+ VGTYP_ON_SURFACE
+ VGTYP
+ surface
+ 3.0
+
+
+
+ 219
+ SOTYP_ON_SURFACE
+ SOTYP
+ surface
+ 3.0
+
+
+
+ 220
+ CCOND_ON_SURFACE
+ CCOND
+ surface
+ 3.0
+
+
+
+ 221
+ HPBL_ON_SURFACE
+ HPBL
+ surface
+ 6.0
+
+
+
+ 222
+ TCDC_ON_SIGMA_LVLS
+ TCDC
+ sigma_lvl
+ 2
+ 3.0
+
+
+
+ 223
+ SLTYP_ON_SURFACE
+ SLTYP
+ surface
+ 3.0
+
+
+
+ 224
+ SNOD_ON_SURFACE
+ SNOD
+ surface
+ 6.0
+
+
+
+ 225
+ SOILL_ON_DEPTH_BEL_LAND_SFC
+ SOILL
+ depth_bel_land_sfc
+ depth_bel_land_sfc
+ 3.0
+
+
+
+ 226
+ SNFALB_ON_SURFACE
+ SNFALB
+ surface
+ 3.0
+
+
+
+ 227
+ MXSALB_ON_SURFACE
+ MXSALB
+ surface
+ 3.0
+
+
+
+ 228
+ EVCW_ON_SURFACE
+ EVCW
+ surface
+ 3.0
+
+
+
+ 229
+ EVBS_ON_SURFACE
+ EVBS
+ surface
+ 3.0
+
+
+
+ 230
+ TRANS_ON_SURFACE
+ TRANS
+ surface
+ 3.0
+
+
+
+ 231
+ SBSNO_ON_SURFACE
+ SBSNO
+ surface
+ 3.0
+
+
+
+ 232
+ SMDRY_ON_SURFACE
+ SMDRY
+ surface
+ 3.0
+
+
+
+ 233
+ POROS_ON_SURFACE
+ POROS
+ surface
+ 3.0
+
+
+
+ 234
+ RSMIN_ON_SURFACE
+ RSMIN
+ surface
+ 3.0
+
+
+
+ 235
+ RLYRS_ON_SURFACE
+ RLYRS
+ surface
+ 3.0
+
+
+
+ 236
+ WILT_ON_SURFACE
+ WILT
+ surface
+ 3.0
+
+
+
+ 237
+ SMREF_ON_SURFACE
+ SMREF
+ surface
+ 3.0
+
+
+
+ 238
+ RCS_ON_SURFACE
+ RCS
+ surface
+ 3.0
+
+
+
+ 239
+ RCT_ON_SURFACE
+ RCT
+ surface
+ 5.0
+
+
+
+ 240
+ RCQ_ON_SURFACE
+ RCQ
+ surface
+ 3.0
+
+
+
+ 241
+ RCSOL_ON_SURFACE
+ RCSOL
+ surface
+ 3.0
+
+
+
+ 242
+ PEVPR_ON_SURFACE
+ PEVPR
+ surface
+ 6.0
+
+
+
+ 243
+ VEDH_ON_SIGMA_LVLS
+ VEDH
+ sigma_lvl
+ 4.0
+
+
+
+ 245
+ GUST_ON_SURFACE
+ GUST
+ surface
+ 3.0
+
+
+
+ 246
+ PLPL_ON_SPEC_PRES_ABOVE_GRND
+ PLPL
+ NCEP
+ spec_pres_above_grnd
+ spec_pres_above_grnd
+ 6.0
+
+
+
+ 247
+ HGT_ON_LWST_LVL_OF_WET_BULB_ZERO
+ HGT
+ lwst_lvl_of_wet_bulb_zero
+ -5.0
+
+
+
+ 249
+ CPRAT_ON_SURFACE
+ CPRAT
+ surface
+ 4.0
+
+
+
+ 250
+ REFD_ON_HYBRID_LVL
+ REFD
+ hybrid_lvl
+ 4.0
+
+
+
+ 251
+ REFD_ON_ISOBARIC_SFC
+ REFD
+ isobaric_sfc
+ 4.0
+
+
+
+ 252
+ REFC_ON_ENTIRE_ATMOS
+ REFC
+ entire_atmos_single_lyr
+ 4.0
+
+
+
+ 253
+ REFD_ON_SPEC_HGT_LVL_ABOVE_GRND
+ REFD
+ spec_hgt_lvl_above_grnd
+ 4.0
+
+
+
+ 254
+ LAI_ON_SURFACE
+ LAI
+ surface
+ -3.0
+
+
+
+ 255
+ GRLE_ON_SIGMA_LVLS
+ GRLE
+ sigma_lvl
+ 3.0
+
+
+
+ 256
+ ACM_LSPA_ON_SURFACE
+ tmpl4_8
+ LSPA
+ ACM
+ surface
+ 3.0
+
+
+
+ 257
+ TIPD_ON_ISOBARIC_SFC
+ TIPD
+ isobaric_sfc
+ 6.0
+
+
+
+ 258
+ TPFI_ON_ISOBARIC_SFC
+ TPFI
+ isobaric_sfc
+ 6.0
+
+
+
+ 259
+ VWSH_ON_SPEC_HGT_LVL_ABOVE_GRND
+ VWSH
+ spec_hgt_lvl_above_grnd
+ 6.0
+
+
+
+ 260
+ HGT_ON_CLOUD_CEILING
+ HGT
+ cloud_ceilng
+ 6.0
+
+
+
+ 261
+ VIS_ON_CLOUD_BASE
+ VIS
+ cloud_base
+ 6.0
+
+
+
+ 262
+ INST_CSDSF_ON_SURFACE
+ CSDSF
+ surface
+ 4.0
+
+
+
+ 263
+ RIME_ON_ISOBARIC_SFC
+ RIME
+ isobaric_sfc
+ 3.0
+
+
+
+ 264
+ DZDT_ON_HYBRID_LVL
+ DZDT
+ hybrid_lvl
+ -5.0
+
+
+
+ 265
+ SBT122_ON_TOP_OF_ATMOS_FROM_LWRAD
+ SBT122
+ top_of_atmos
+ 5.0
+
+
+
+ 266
+ AVE_ALBDO_ON_SURFACE
+ tmpl4_8
+ ALBDO
+ AVE
+ surface
+ 4.0
+
+
+
+ 267
+ O3MR_ON_HYBRID_LVL
+ O3MR
+ hybrid_lvl
+ 7.0
+
+
+
+ 268
+ O3MR_ON_ISOBARIC_SFC
+ O3MR
+ isobaric_sfc
+ 5.0
+
+
+
+ 269
+ AVE_UFLX_ON_SURFACE
+ tmpl4_8
+ UFLX
+ AVE
+ surface
+ 4.0
+
+
+
+ 270
+ AVE_VFLX_ON_SURFACE
+ tmpl4_8
+ VFLX
+ AVE
+ surface
+ 4.0
+
+
+
+ 271
+ AVE_PRATE_ON_SURFACE
+ tmpl4_8
+ PRATE
+ AVE
+ surface
+ 4.0
+
+
+
+ 272
+ AVE_CPRAT_ON_SURFACE
+ tmpl4_8
+ CPRAT
+ AVE
+ surface
+ 4.0
+
+
+
+ 273
+ PRES_ON_HYBRID_LVL_LLM
+ PRES
+ hybrid_lvl
+ hybrid_lvl
+ 3.0
+
+
+
+ 274
+ INST_ULWRF_ON_TOP_OF_ATMOS
+ ULWRF
+ top_of_atmos
+ 4.0
+
+
+
+ 275
+ BRTMP_ON_TOP_OF_ATMOS
+ BRTMP
+ top_of_atmos
+ 3.0
+
+
+
+ 276
+ REFZR_ON_ENTIRE_ATMOS
+ REFZR
+ entire_atmos_single_lyr
+ -4.0
+
+
+
+ 277
+ REFZI_ON_ENTIRE_ATMOS
+ REFZI
+ entire_atmos_single_lyr
+ -4.0
+
+
+
+ 278
+ REFZC_ON_ENTIRE_ATMOS
+ REFZC
+ entire_atmos_single_lyr
+ -4.0
+
+
+
+ 279
+ REFZR_ON_SPEC_HGT_LVL_ABOVE_GRND
+ REFZR
+ spec_hgt_lvl_above_grnd
+ -4.0
+
+
+
+ 280
+ REFZI_ON_SPEC_HGT_LVL_ABOVE_GRND
+ REFZI
+ spec_hgt_lvl_above_grnd
+ -4.0
+
+
+
+ 281
+ REFZC_ON_SPEC_HGT_LVL_ABOVE_GRND
+ REFZC
+ spec_hgt_lvl_above_grnd
+ -4.0
+
+
+
+ 282
+ PRES_ON_TOP_OF_ATMOS
+ PRES
+ top_of_atmos
+ 3.0
+
+
+
+
+ 283
+ PRES_ON_HYBRID_LVL_1L
+ PRES
+ hybrid_lvl
+ hybrid_lvl
+ 3.0
+
+
+
+ 284
+ DZDT_ON_ISOBARIC_SFC
+ DZDT
+ isobaric_sfc
+ -5.0
+
+
+
+ 285
+ TCLSW_ON_ENTIRE_ATMOS
+ TCLSW
+ entire_atmos_single_lyr
+ 5.0
+
+
+
+ 286
+ TCOLM_ON_ENTIRE_ATMOS
+ TCOLM
+ entire_atmos_single_lyr
+ 5.0
+
+
+
+ 287
+ HGT_ON_LWST_BOT_LVL_OF_SUPERCOOLED_LIQ_WATER_LYR
+ HGT
+ lwst_bot_lvl_of_supercooled_liq_water_lyr
+ 6.0
+
+
+
+ 288
+ HGT_ON_HGHST_TOP_LVL_OF_SUPERCOOLED_LIQ_WATER_LYR
+ HGT
+ hghst_top_lvl_of_supercooled_liq_water_lyr
+ 5.0
+
+
+
+ 289
+ HGT_ON_PLANETARY_BOUND_LYR
+ HGT
+ planetary_bound_lyr
+ -4.0
+
+
+
+ 290
+ SWHR_ON_ENTIRE_ATMOS
+ SWHR
+ entire_atmos_single_lyr
+ 5.0
+
+
+
+ 291
+ LWHR_ON_ENTIRE_ATMOS
+ LWHR
+ entire_atmos_single_lyr
+ 5.0
+
+
+
+ 292
+ AVE_LRGHR_ON_ENTIRE_ATMOS
+ tmpl4_8
+ LRGHR
+ AVE
+ entire_atmos_single_lyr
+ 5.0
+
+
+
+ 293
+ AVE_CNVHR_ON_ENTIRE_ATMOS
+ tmpl4_8
+ CNVHR
+ AVE
+ entire_atmos_single_lyr
+ 5.0
+
+
+
+ 294
+ TTRAD_ON_ISOBARIC_SFC
+ TTRAD
+ isobaric_sfc
+ 5.0
+
+
+
+ 295
+ MCONV_ON_ENTIRE_ATMOS
+ MCONV
+ entire_atmos_single_lyr
+ 5.0
+
+
+
+ 296
+ TMP_ON_SIGMA_LVL_HPC
+ TMP
+ sigma_lvl
+ 2
+ -4.0
+
+
+
+ 297
+ AVE_CDUVB_ON_SURFACE
+ tmpl4_8
+ CDUVB
+ AVE
+ surface
+ 3.0
+
+
+
+ 298
+ AVE_DUVB_ON_SURFACE
+ tmpl4_8
+ DUVB
+ AVE
+ surface
+ 3.0
+
+
+
+ 299
+ TOZNE_ON_ENTIRE_ATMOS_SINGLE_LYR
+ TOZNE
+ entire_atmos_single_lyr
+ 4.0
+
+
+
+ 300
+ AVE_TCDC_ON_LOW_CLOUD_LYR
+ tmpl4_8
+ TCDC
+ AVE
+ low_cloud_lyr
+ 3.0
+
+
+
+ 301
+ AVE_TCDC_ON_MID_CLOUD_LYR
+ tmpl4_8
+ TCDC
+ AVE
+ mid_cloud_lyr
+ 3.0
+
+
+
+ 302
+ AVE_TCDC_ON_HIGH_CLOUD_LYR
+ tmpl4_8
+ TCDC
+ AVE
+ high_cloud_lyr
+ 3.0
+
+
+
+ 303
+ AVE_PRES_ON_LOW_CLOUD_BOT_LVL
+ tmpl4_8
+ PRES
+ AVE
+ low_cloud_bot_lvl
+ 6.0
+
+
+
+ 304
+ AVE_PRES_ON_LOW_CLOUD_TOP_LVL
+ tmpl4_8
+ PRES
+ AVE
+ low_cloud_top_lvl
+ 6.0
+
+
+
+ 305
+ AVE_TMP_ON_LOW_CLOUD_TOP_LVL
+ tmpl4_8
+ TMP
+ AVE
+ low_cloud_top_lvl
+ 3.0
+
+
+
+ 306
+ AVE_PRES_ON_MID_CLOUD_BOT_LVL
+ tmpl4_8
+ PRES
+ AVE
+ mid_cloud_bot_lvl
+ 6.0
+
+
+
+ 307
+ AVE_PRES_ON_MID_CLOUD_TOP_LVL
+ tmpl4_8
+ PRES
+ AVE
+ mid_cloud_top_lvl
+ 6.0
+
+
+
+ 308
+ AVE_TMP_ON_MID_CLOUD_TOP_LVL
+ tmpl4_8
+ TMP
+ AVE
+ mid_cloud_top_lvl
+ 3.0
+
+
+
+ 309
+ AVE_PRES_ON_HIGH_CLOUD_BOT_LVL
+ tmpl4_8
+ PRES
+ AVE
+ high_cloud_bot_lvl
+ 6.0
+
+
+
+ 310
+ AVE_PRES_ON_HIGH_CLOUD_TOP_LVL
+ tmpl4_8
+ PRES
+ AVE
+ high_cloud_top_lvl
+ 6.0
+
+
+
+ 311
+ AVE_TMP_ON_HIGH_CLOUD_TOP_LVL
+ tmpl4_8
+ TMP
+ AVE
+ high_cloud_top_lvl
+ 3.0
+
+
+
+ 312
+ RH_ON_ENTIRE_ATMOS_SINGLE_LYR
+ RH
+ entire_atmos_single_lyr
+ 2.0
+
+
+
+ 313
+ AVE_CWORK_ON_ENTIRE_ATMOS_SINGLE_LYR
+ tmpl4_8
+ CWORK
+ AVE
+ entire_atmos_single_lyr
+ 4.0
+
+
+
+ 314
+ TMP_ON_MAX_WIND
+ TMP
+ max_wind
+ 3.0
+
+
+
+ 315
+ AVE_U-GWD_ON_SURFACE
+ tmpl4_8
+ U-GWD
+ AVE
+ surface
+ 5.0
+
+
+
+ 316
+ AVE_V-GWD_ON_SURFACE
+ tmpl4_8
+ V-GWD
+ AVE
+ surface
+ 5.0
+
+
+
+ 317
+ AVE_CRAIN_ON_SURFACE
+ tmpl4_8
+ CRAIN
+ AVE
+ surface
+ 1.0
+
+
+
+ 318
+ RH_ON_SIGMA_LVL_0.44-1.0
+ RH
+ sigma_lvl
+ 2
+ 44.
+ sigma_lvl
+ 2
+ 100.
+ 2.0
+
+
+
+ 319
+ RH_ON_SIGMA_LVL_0.72-0.94
+ RH
+ sigma_lvl
+ 2
+ 72.
+ sigma_lvl
+ 2
+ 94.
+ 2.0
+
+
+
+ 320
+ RH_ON_SIGMA_LVL_0.44-0.72
+ RH
+ sigma_lvl
+ 2
+ 44.
+ sigma_lvl
+ 2
+ 72.
+ 2.0
+
+
+
+ 321
+ TMP_ON_SIGMA_LVL_0.9950
+ TMP
+ sigma_lvl
+ 4
+ 9950.
+ 4.0
+
+
+
+ 322
+ POT_ON_SIGMA_LVL_0.9950
+ POT
+ sigma_lvl
+ 4
+ 9950.
+ 4.0
+
+
+
+ 323
+ RH_ON_SIGMA_LVL_0.9950
+ RH
+ sigma_lvl
+ 4
+ 9950.
+ 3.0
+
+
+
+ 324
+ UGRD_ON_SIGMA_LVL_0.9950
+ UGRD
+ sigma_lvl
+ 4
+ 9950.
+ 4.0
+
+
+
+ 325
+ VGRD_ON_SIGMA_LVL_0.9950
+ VGRD
+ sigma_lvl
+ 4
+ 9950.
+ 4.0
+
+
+
+ 326
+ VVEL_ON_SIGMA_LVL_0.9950
+ VVEL
+ sigma_lvl
+ 4
+ 9950.
+ 5.0
+
+
+
+ 327
+ SBT122_ON_TOP_OF_ATMOS
+ SBT122
+ top_of_atmos
+ 4.0
+
+
+
+ 328
+ SBT123_ON_TOP_OF_ATMOS
+ SBT123
+ top_of_atmos
+ 4.0
+
+
+
+ 329
+ SBT124_ON_TOP_OF_ATMOS
+ SBT124
+ top_of_atmos
+ 4.0
+
+
+
+ 330
+ SBT126_ON_TOP_OF_ATMOS
+ SBT126
+ top_of_atmos
+ 4.0
+
+
+
+ 331
+ TCDC_ON_ISOBARIC_SFC
+ TCDC
+ isobaric_sfc
+ 3.0
+
+
+
+ 332
+ UGRD_ON_ISENTROPIC_LVL
+ UGRD
+ isentropic_lvl
+ 4.0
+
+
+
+ 333
+ VGRD_ON_ISENTROPIC_LVL
+ VGRD
+ isentropic_lvl
+ 4.0
+
+
+
+ 334
+ TMP_ON_ISENTROPIC_LVL
+ TMP
+ isentropic_lvl
+ 3.0
+
+
+
+ 335
+ PVORT_ON_ISENTROPIC_LVL
+ PVORT
+ isentropic_lvl
+ 4.0
+
+
+
+ 336
+ UGRD_ON_POT_VORT_SFC
+ UGRD
+ pot_vort_sfc
+ 4.0
+
+
+
+ 337
+ VGRD_ON_POT_VORT_SFC
+ VGRD
+ pot_vort_sfc
+ 4.0
+
+
+
+ 338
+ TMP_ON_POT_VORT_SFC
+ TMP
+ pot_vort_sfc
+ 4.0
+
+
+
+ 339
+ HGT_ON_POT_VORT_SFC
+ HGT
+ pot_vort_sfc
+ 6.0
+
+
+
+ 340
+ PRES_ON_POT_VORT_SFC
+ PRES
+ pot_vort_sfc
+ 6.0
+
+
+
+ 341
+ VWSH_ON_POT_VORT_SFC
+ VWSH
+ pot_vort_sfc
+ 3.0
+
+
+
+ 342
+ AVE_TCDC_ON_BOUND_LYR_CLOUD_LYR
+ tmpl4_8
+ TCDC
+ AVE
+ bound_lyr_cloud_lyr
+ 3.0
+
+
+
+ 343
+ ACM_WATR_ON_SURFACE
+ tmpl4_8
+ WATR
+ ACM
+ surface
+ 6.0
+
+
+
+ 344
+ PBLREG_ON_SURFACE
+ PBLREG
+ surface
+ 2.0
+
+
+
+ 345
+ MAX_TMAX_ON_SPEC_HGT_LVL_ABOVE_GRND_2m
+ tmpl4_8
+ TMAX
+ MAX
+ spec_hgt_lvl_above_grnd
+ 2.
+ 4.0
+
+
+
+ 346
+ MIN_TMIN_ON_SPEC_HGT_LVL_ABOVE_GRND_2m
+ tmpl4_8
+ TMIN
+ MIN
+ spec_hgt_lvl_above_grnd
+ 2.
+ 4.0
+
+
+
+ 347
+ MAX_MAXRH_ON_SPEC_HGT_LVL_ABOVE_GRND_2m
+ tmpl4_8
+ MAXRH
+ MAX
+ spec_hgt_lvl_above_grnd
+ 2.
+ -2.0
+
+
+
+ 348
+ MIN_MINRH_ON_SPEC_HGT_LVL_ABOVE_GRND_2m
+ tmpl4_8
+ MINRH
+ NCEP
+ MIN
+ spec_hgt_lvl_above_grnd
+ 2.
+ -2.0
+
+
+
+ 349
+ ICETK_ON_SURFACE
+ ICETK
+ surface
+ 3.0
+
+
+
+ 350
+ RH_ON_HGHST_TROP_FRZ_LVL
+ RH
+ hghst_trop_frz_lvl
+ 2.0
+
+
+
+
+ 351
+ LAPR_ON_ISENTROPIC_LVL
+ LAPR
+ isentropic_lvl
+ 2.0
+
+
+
+ 352
+ RH_ON_ISENTROPIC_LVL
+ RH
+ isentropic_lvl
+ 2.0
+
+
+
+ 353
+ MNTSF_ON_ISENTROPIC_LVL
+ MNTSF
+ isentropic_lvl
+ 4.0
+
+
+
+
+ 354
+ SWHR_ON_ISOBARIC_SFC
+ SWHR
+ isobaric_sfc
+ 5.0
+
+
+
+ 355
+ LWHR_ON_ISOBARIC_SFC
+ LWHR
+ isobaric_sfc
+ 5.0
+
+
+
+ 356
+ VDFHR_ON_ISOBARIC_SFC
+ VDFHR
+ isobaric_sfc
+ 3.0
+
+
+
+ 357
+ CNVHR_ON_ISOBARIC_SFC
+ CNVHR
+ isobaric_sfc
+ 2.7
+
+
+
+
+ 358
+ SHAHR_ON_ISOBARIC_SFC
+ SHAHR
+ isobaric_sfc
+ 3.0
+
+
+
+ 359
+ LRGHR_ON_ISOBARIC_SFC
+ LRGHR
+ isobaric_sfc
+ 3.0
+
+
+
+ 360
+ VDFMR_ON_ISOBARIC_SFC
+ VDFMR
+ isobaric_sfc
+ 3.0
+
+
+
+ 361
+ CNVMR_ON_ISOBARIC_SFC
+ CNVMR
+ isobaric_sfc
+ 3.0
+
+
+
+ 362
+ SHAMR_ON_ISOBARIC_SFC
+ SHAMR
+ isobaric_sfc
+ 3.0
+
+
+
+ 363
+ LRGMR_ON_ISOBARIC_SFC
+ LRGMR
+ isobaric_sfc
+ 3.0
+
+
+
+ 364
+ VDFOZ_ON_ISOBARIC_SFC
+ VDFOZ
+ isobaric_sfc
+ 7.0
+
+
+
+ 365
+ POZ_ON_ISOBARIC_SFC
+ POZ
+ isobaric_sfc
+ 4.0
+
+
+
+ 366
+ TOZ_ON_ISOBARIC_SFC
+ TOZ
+ isobaric_sfc
+ 3.0
+
+
+
+ 367
+ PVMW_ON_ISOBARIC_SFC
+ PVMW
+ isobaric_sfc
+ 3.0
+
+
+
+ 368
+ SNOT_ON_ISOBARIC_SFC
+ SNOT
+ isobaric_sfc
+ 3.0
+
+
+
+ 369
+ VDFUA_ON_ISOBARIC_SFC
+ VDFUA
+ isobaric_sfc
+ 3.0
+
+
+
+ 370
+ GWDU_ON_ISOBARIC_SFC
+ GWDU
+ isobaric_sfc
+ 3.0
+
+
+
+ 371
+ CNVU_ON_ISOBARIC_SFC
+ CNVU
+ isobaric_sfc
+ 3.0
+
+
+
+ 372
+ VDFVA_ON_ISOBARIC_SFC
+ VDFVA
+ isobaric_sfc
+ 3.0
+
+
+
+ 373
+ GWDV_ON_ISOBARIC_SFC
+ GWDV
+ isobaric_sfc
+ 3.0
+
+
+
+ 374
+ CNVV_ON_ISOBARIC_SFC
+ CNVV
+ isobaric_sfc
+ 3.0
+
+
+
+ 375
+ CDLYR_ON_ISOBARIC_SFC
+ CDLYR
+ isobaric_sfc
+ 3.0
+
+
+
+ 376
+ SBC123_ON_TOP_OF_ATMOS
+ SBC123
+ top_of_atmos
+ 4.0
+
+
+
+ 377
+ SBC124_ON_TOP_OF_ATMOS
+ SBC124
+ top_of_atmos
+ 4.0
+
+
+
+ 378
+ VVEL_ON_ISENTROPIC_LVL
+ VVEL
+ isentropic_lvl
+ 5.0
+
+
+
+
+
+
+ 379
+ TTDIA_ON_ISOBARIC_SFC
+ TTDIA
+ isobaric_sfc
+ 3.0
+
+
+
+ 380
+ VEDH_ON_HYBRID_LVL
+ VEDH
+ hybrid_lvl
+ 3.0
+
+
+
+ 381
+ MIXHT_ON_SURFACE
+ MIXHT
+ surface
+ -4.0
+
+
+
+
+ 382
+ AVE_CSDLF_ON_SURFACE
+ tmpl4_8
+ CSDLF
+ AVE
+ surface
+ 3.0
+
+
+
+ 383
+ AVE_CSDSF_ON_SURFACE
+ tmpl4_8
+ CSDSF
+ AVE
+ surface
+ 3.0
+
+
+
+ 384
+ AVE_CSULF_ON_SURFACE
+ tmpl4_8
+ CSULF
+ AVE
+ surface
+ 3.0
+
+
+
+ 385
+ AVE_CSULF_ON_TOP_OF_ATMOS
+ tmpl4_8
+ CSULF
+ AVE
+ top_of_atmos
+ 3.0
+
+
+
+ 386
+ AVE_CSUSF_ON_SURFACE
+ tmpl4_8
+ CSUSF
+ AVE
+ surface
+ 3.0
+
+
+
+ 387
+ AVE_CSUSF_ON_TOP_OF_ATMOS
+ tmpl4_8
+ CSUSF
+ AVE
+ top_of_atmos
+ 3.0
+
+
+
+ 388
+ AVE_DSWRF_ON_TOP_OF_ATMOS
+ tmpl4_8
+ DSWRF
+ AVE
+ top_of_atmos
+ 4.0
+
+
+
+ 389
+ UGRD_ON_PLANETARY_BOUND_LYR
+ UGRD
+ planetary_bound_lyr
+ -4.0
+
+
+
+ 390
+ VGRD_ON_PLANETARY_BOUND_LYR
+ VGRD
+ planetary_bound_lyr
+ -4.0
+
+
+
+
+ 391
+ CNVUMF_ON_ISOBARIC_SFC
+ CNVUMF
+ isobaric_sfc
+ 3.0
+
+
+
+ 392
+ CNVDMF_ON_ISOBARIC_SFC
+ CNVDMF
+ isobaric_sfc
+ 3.0
+
+
+
+ 393
+ CNVEMF_ON_ISOBARIC_SFC
+ CNVEMF
+ isobaric_sfc
+ 3.0
+
+
+
+ 394
+ CNVWDU_ON_ISOBARIC_SFC
+ CNVWDU
+ isobaric_sfc
+ 3.0
+
+
+
+ 395
+ CNVWDV_ON_ISOBARIC_SFC
+ CNVWDV
+ isobaric_sfc
+ 3.0
+
+
+
+
+ 396
+ SUNSD_ON_SURFACE
+ SUNSD
+ surface
+ 5.0
+
+
+
+ 397
+ FLDCP_ON_SURFACE
+ FLDCP
+ NCEP
+ surface
+ 4.0
+
+
+
+
+ 398
+ ICAHT_ON_MAX_WIND
+ ICAHT
+ max_wind
+ 6.0
+
+
+
+ 399
+ ICAHT_ON_TROPOPAUSE
+ ICAHT
+ tropopause
+ 6.0
+
+
+
+ 400
+ RETOP_ON_ENTIRE_ATMOS_SINGLE_LYR
+ RETOP
+ entire_atmos_single_lyr
+ 6.0
+
+
+
+
+
+ 401
+ AVE_VBDSF_ON_SURFACE
+ averaged surface visible beam downward solar flux
+ tmpl4_8
+ VBDSF
+ AVE
+ surface
+ 3.0
+
+
+
+ 402
+ AVE_VDDSF_ON_SURFACE
+ averaged surface visible diffuse downward solar flux
+ tmpl4_8
+ VDDSF
+ AVE
+ surface
+ 3.0
+
+
+
+ 403
+ AVE_NBDSF_ON_SURFACE
+ averaged surface near IR beam downward solar flux
+ tmpl4_8
+ NBDSF
+ AVE
+ surface
+ 3.0
+
+
+
+ 404
+ AVE_NDDSF_ON_SURFACE
+ averaged surface near IR beam downward solar flux
+ tmpl4_8
+ NDDSF
+ AVE
+ surface
+ 3.0
+
+
+
+ 405
+ AVE_SRWEQ_ON_SURFACE
+ averaged snow rate on surface
+ tmpl4_8
+ SRWEQ
+ AVE
+ surface
+ 3.0
+
+
+
+ 406
+ GSD_PRES_ON_CLOUD_TOP
+ GSD_pressure on cloud top
+ PRES
+ cloud_top
+ 6.0
+
+
+
+ 407
+ GSD_INST_CRAIN_ON_SURFACE
+ GSD_instant precipitation type on surface
+ CRAIN
+ surface
+ 1.0
+
+
+
+ 408
+ GSD_HGT_ON_CLOUD_BASE
+ GSD_geopotential height on cloud base
+ HGT
+ cloud_base
+ 6.0
+
+
+
+ 409
+ GSD_HGT_ON_CLOUD_TOP
+ GSD_geopotential height on cloud top
+ HGT
+ cloud_top
+ 6.0
+
+
+
+ 410
+ GSD_VIS_ON_CLOUD_TOP
+ GSD_visibility on cloud top
+ VIS
+ cloud_top
+ 6.0
+
+
+
+
+ 411
+ WMIXE_ON_SPEC_HGT_LVL_ABOVE_GRND
+ instant wind mixing energy on Specified Height Level Above Ground
+ WMIXE
+ spec_hgt_lvl_above_grnd
+ -4.0
+
+
+
+ 412
+ UGRD_ON_SPEC_HGT_LVL_ABOVE_GRND
+ U-Component of Wind on Specified Height Level Above Ground
+ UGRD
+ spec_hgt_lvl_above_grnd
+ 80.
+ -4.0
+
+
+
+ 413
+ VGRD_ON_SPEC_HGT_LVL_ABOVE_GRND
+ V-Component of Wind on Specified Height Level Above Ground
+ VGRD
+ spec_hgt_lvl_above_grnd
+ 80.
+ -4.0
+
+
+
+
+ 415
+ GRMR_ON_HYBRID_LVL
+ Graupel mixing ration on hybrid level
+ GRMR
+ hybrid_lvl
+ 3.0
+
+
+
+ 416
+ GRMR_ON_ISOBARIC_SFC
+ Graupel mixing ration on isobaric surface
+ GRMR
+ isobaric_sfc
+ 3.0
+
+
+
+ 420
+ MAX_UPHL_ON_SPEC_HGT_LVL_ABOVE_GRND_2-5km
+ maximum Updraft Helicity on Specified Height Level Above Ground
+ tmpl4_8
+ MXUPHL
+ MAX
+ spec_hgt_lvl_above_grnd
+ 5000.
+ spec_hgt_lvl_above_grnd
+ 2000.
+ -3.0
+
+
+
+ 421
+ MAX_REF_ON_SPEC_HGT_LVL_ABOVE_GRND_1km
+ maximum Updraft Helicity on Specified Height Level Above Ground
+ tmpl4_8
+ MAXREF
+ MAX
+ spec_hgt_lvl_above_grnd
+ 1000.
+ -4.0
+
+
+
+ 422
+ MAX_WIND_ON_SPEC_HGT_LVL_ABOVE_GRND_10m
+ maximum wind speed on 10 meter Above Ground
+ tmpl4_8
+ WIND
+ MAX
+ spec_hgt_lvl_above_grnd
+ 10.
+ -4.0
+
+
+
+ 423
+ MAX_MAXUVV_ON_ISOBARIC_SFC_40-100hpa
+ hourly maximum Upward Vertical Velocity between 40-100hpa
+ tmpl4_8
+ MAXUVV
+ NCEP
+ MAX
+ isobaric_sfc
+ 40000.
+ isobaric_sfc
+ 100000.
+ -4.0
+
+
+
+ 424
+ MAX_MAXDVV_ON_ISOBARIC_SFC_40-100hpa
+ hourly maximum Downward Vertical Velocity between 40-100hpa
+ tmpl4_8
+ MAXDVV
+ NCEP
+ MAX
+ isobaric_sfc
+ 40000.
+ isobaric_sfc
+ 100000.
+ -4.0
+
+
+
+
+ 425
+ AVE_DZDT_ON_SIGMA_LVL_0.5-0.8
+ average Vertical velocity between sigma lvl 0.5 and 0.8
+ tmpl4_8
+ DZDT
+ AVE
+ sigma_lvl
+ 2
+ 50.
+ sigma_lvl
+ 2
+ 80.
+ 3.0
+
+
+
+ 426
+ HGT_ON_SPEC_HGT_LVL_ABOVE_GRND
+ Echo Tops in KFT (highest HGTin meters of the 18-dBZ reflectivity on a model level)
+ HGT
+ spec_hgt_lvl_above_grnd
+ 4.0
+
+
+
+ 427
+ UPHL_ON_SPEC_HGT_LVL_ABOVE_GRND_2-5km
+ Updraft Helicity on Specified Height Level Above Ground
+ UPHL
+ spec_hgt_lvl_above_grnd
+ 5000.
+ spec_hgt_lvl_above_grnd
+ 2000.
+ -3.0
+
+
+
+
+ 428
+ GRMR_ON_ENTIRE_ATMOS_SINGLE_LYR
+ Graupel mixing ratio on entire atmosphere
+ GRMR
+ entire_atmos_single_lyr
+ 3.0
+
+
+
+ 429
+ MAXVIG_ON_ENTIRE_ATMOS_SINGLE_LYR
+ Hourly Maximum of Column Vertical Integrated Graupel on entire atmosphere
+ tmpl4_8
+ TCOLG
+ MAX
+ entire_atmos_single_lyr
+ 3.0
+
+
+
+ 430
+ VUCSH_ON_SPEC_HGT_LVL_ABOVE_GRND_0-1km
+ Vertical u-component shear between 0 to 1000m Above Ground
+ VUCSH
+ spec_hgt_lvl_above_grnd
+ 0.
+ spec_hgt_lvl_above_grnd
+ 1000.
+ 3.0
+
+
+
+ 431
+ VVCSH_ON_SPEC_HGT_LVL_ABOVE_GRND_0-1km
+ Vertical v-component shear between 0 to 1000m Above Ground
+ VVCSH
+ spec_hgt_lvl_above_grnd
+ 0.
+ spec_hgt_lvl_above_grnd
+ 1000.
+ 3.0
+
+
+
+ 432
+ VUCSH_ON_SPEC_HGT_LVL_ABOVE_GRND_0-6km
+ Vertical u-component shear between 0 to 6000m Above Ground
+ VUCSH
+ spec_hgt_lvl_above_grnd
+ 0.
+ spec_hgt_lvl_above_grnd
+ 6000.
+ 3.0
+
+
+
+ 433
+ VVCSH_ON_SPEC_HGT_LVL_ABOVE_GRND_0-6km
+ Vertical v-component shear between 0 to 6000m Above Ground
+ VVCSH
+ spec_hgt_lvl_above_grnd
+ 0.
+ spec_hgt_lvl_above_grnd
+ 6000.
+ 3.0
+
+
+
+
+ 434
+ BUCKET_APCP_ON_SURFACE
+ bucket Total precipitation on surface
+ tmpl4_8
+ APCP
+ ACM
+ surface
+ 4.0
+
+
+
+ 435
+ BUCKET_ACPCP_ON_SURFACE
+ bucket Convective precipitation on surface
+ tmpl4_8
+ ACPCP
+ ACM
+ surface
+ 4.0
+
+
+
+ 436
+ BUCKET_NCPCP_ON_SURFACE
+ bucket Large scale precipitation on surface
+ tmpl4_8
+ NCPCP
+ ACM
+ surface
+ 4.0
+
+
+
+ 437
+ BUCKET_WEASD_ON_SURFACE
+ bucket snow precipitation on surface
+ tmpl4_8
+ WEASD
+ ACM
+ surface
+ 4.0
+
+
+
+
+
+ 438
+ DUST1_ON_ISOBARIC_LVL
+ tmpl4_48
+ MASSMR
+ isobaric_lvl
+ dust_dry
+ between_first_second_limit_noincl2ndlmt
+ 7
+ 2
+ 7
+ 20
+ 11.0
+
+
+
+ 439
+ DUST2_ON_ISOBARIC_LVL
+ tmpl4_48
+ MASSMR
+ isobaric_lvl
+ dust_dry
+ between_first_second_limit_noincl2ndlmt
+ 7
+ 20
+ 7
+ 36
+ 11.0
+
+
+
+ 440
+ DUST3_ON_ISOBARIC_LVL
+ tmpl4_48
+ MASSMR
+ isobaric_lvl
+ dust_dry
+ between_first_second_limit_noincl2ndlmt
+ 7
+ 36
+ 7
+ 60
+ 11.0
+
+
+
+ 441
+ DUST4_ON_ISOBARIC_LVL
+ tmpl4_48
+ MASSMR
+ isobaric_lvl
+ dust_dry
+ between_first_second_limit_noincl2ndlmt
+ 7
+ 60
+ 7
+ 120
+ 11.0
+
+
+
+ 442
+ DUST5_ON_ISOBARIC_LVL
+ tmpl4_48
+ MASSMR
+ isobaric_lvl
+ dust_dry
+ between_first_second_limit_noincl2ndlmt
+ 7
+ 120
+ 7
+ 200
+ 11.0
+
+
+
+ 443
+ HGT_ON_EQUIL_LVL
+ geopotential height on Equilibrium level
+ HGT
+ equil_lvl
+ 6.0
+
+
+
+ 444
+ LTNG_ON_SURFACE
+ lightning
+ LTNG
+ NCEP
+ surface
+ 1.0
+
+
+
+ 445
+ MAPS_PRMSL_ON_MEAN_SEA_LVL
+ PRMSL
+ mean_sea_lvl
+ 4.0
+
+
+
+ 446
+ SBT112_ON_TOP_OF_ATMOS
+ SBT112
+ top_of_atmos
+ 4.0
+
+
+
+ 447
+ SBT113_ON_TOP_OF_ATMOS
+ SBT113
+ top_of_atmos
+ 4.0
+
+
+
+ 448
+ SBT114_ON_TOP_OF_ATMOS
+ SBT114
+ top_of_atmos
+ 4.0
+
+
+
+ 449
+ SBT115_ON_TOP_OF_ATMOS
+ SBT115
+ top_of_atmos
+ 4.0
+
+
+
+
+ 450
+ ICIP_ON_ISOBARIC_SFC
+ Total Icing Potential Diagnostic on isobaric sfc
+ ICIP
+ isobaric_sfc
+ 3.0
+
+
+
+ 451
+ SPFH_ON_SPEC_ALT_ABOVE_MEAN_SEA_LVL
+ SPFH
+ spec_alt_above_mean_sea_lvl
+ 5.0
+
+
+
+ 452
+ VTCAPE_ON_SURFACE
+ Virtual Temperature Based Convective Available Potential Energy on surface
+ CAPE
+ surface
+ 4.0
+
+
+
+ 453
+ VTCIN_ON_SURFACE
+ Virtual Temperature Based Convective Inhibition on surface
+ CIN
+ surface
+ 4.0
+
+
+
+
+ 454
+ VRATE_ON_PLANETARY_BOUND_LYR
+ Ventilation Rate on planetary boundary layer
+ VRATE
+ NCEP
+ planetary_bound_lyr
+ 3.0
+
+
+
+ 455
+ HINDEX_ON_SURFACE
+ Haines Index on surface
+ HINDEX
+ surface
+ 3.0
+
+
+
+ 456
+ NON_NADIR_SBT122_ON_TOP_OF_ATMOS
+ Simulated Brightness Temperature for GOES12, Channel 2 on top of atmosphere
+ SBT122
+ top_of_atmos
+ 4.0
+
+
+
+ 457
+ NON_NADIR_SBT123_ON_TOP_OF_ATMOS
+ Simulated Brightness Temperature for GOES12, Channel 3 on top of atmosphere
+ SBT123
+ top_of_atmos
+ 4.0
+
+
+
+ 458
+ NON_NADIR_SBT124_ON_TOP_OF_ATMOS
+ Simulated Brightness Temperature for GOES12, Channel 4 on top of atmosphere
+ SBT124
+ top_of_atmos
+ 4.0
+
+
+
+ 459
+ NON_NADIR_SBT126_ON_TOP_OF_ATMOS
+ Simulated Brightness Temperature for GOES12, Channel 6 on top of atmosphere
+ SBT126
+ top_of_atmos
+ 4.0
+
+
+
+ 460
+ SBT112_ON_TOP_OF_ATMOS
+ Simulated Brightness Temperature for GOES11, Channel 2 on top of atmosphere
+ SBT112
+ top_of_atmos
+ 4.0
+
+
+
+ 461
+ SBT113_ON_TOP_OF_ATMOS
+ Simulated Brightness Temperature for GOES11, Channel 3 on top of atmosphere
+ SBT113
+ top_of_atmos
+ 4.0
+
+
+
+ 462
+ SBT114_ON_TOP_OF_ATMOS
+ Simulated Brightness Temperature for GOES11, Channel 4 on top of atmosphere
+ SBT114
+ top_of_atmos
+ 4.0
+
+
+
+ 463
+ SBT115_ON_TOP_OF_ATMOS
+ Simulated Brightness Temperature for GOES11, Channel 5 on top of atmosphere
+ SBT115
+ top_of_atmos
+ 4.0
+
+
+
+ 482
+ PRES_ON_SPEC_ALT_ABOVE_MEAN_SEA_LVL
+ pressure between Specific Altitude Above Mean Sea Level
+ PRES
+ spec_alt_above_mean_sea_lvl
+ spec_alt_above_mean_sea_lvl
+ 3.0
+
+
+
+
+ 483
+ AMSRE9_ON_TOP_OF_ATMOS
+ Simulated Brightness Temperature for AMSRE on Aqua, Channel 9 on top of atmosphere
+ AMSRE9
+ top_of_atmos
+ 4.0
+
+
+
+ 484
+ AMSRE10_ON_TOP_OF_ATMOS
+ Simulated Brightness Temperature for AMSRE on Aqua, Channel 10 on top of atmosphere
+ AMSRE10
+ top_of_atmos
+ 4.0
+
+
+
+ 485
+ AMSRE11_ON_TOP_OF_ATMOS
+ Simulated Brightness Temperature for AMSRE on Aqua, Channel 11 on top of atmosphere
+ AMSRE11
+ top_of_atmos
+ 4.0
+
+
+
+ 486
+ AMSRE12_ON_TOP_OF_ATMOS
+ Simulated Brightness Temperature for AMSRE on Aqua, Channel 12 on top of atmosphere
+ AMSRE12
+ top_of_atmos
+ 4.0
+
+
+
+ 487
+ GSD_PRES_ON_CLOUD_BASE
+ PRES
+ cloud_base
+ 3.0
+
+
+
+ 488
+ TMITB6_ON_TOP_OF_ATMOS
+ Simulated Brightness Temperature for TMI TRMM, Channel 6 on top of atmosphere
+ AMSRE9
+ top_of_atmos
+ 4.0
+
+
+
+ 489
+ TMITB7_ON_TOP_OF_ATMOS
+ Simulated Brightness Temperature for TMI TRMM, Channel 7 on top of atmosphere
+ AMSRE10
+ top_of_atmos
+ 4.0
+
+
+
+ 490
+ TMITB8_ON_TOP_OF_ATMOS
+ Simulated Brightness Temperature for TMI TRMM, Channel 8 on top of atmosphere
+ AMSRE11
+ top_of_atmos
+ 4.0
+
+
+
+ 490
+ TMITB9_ON_TOP_OF_ATMOS
+ Simulated Brightness Temperature for TMI TRMM, Channel 9 on top of atmosphere
+ AMSRE12
+ top_of_atmos
+ 4.0
+
+
+
+ 492
+ SSMITB4_ON_TOP_OF_ATMOS
+ Simulated Brightness Temperature for SSMI TB, Channel 4 on top of atmosphere
+ AMSRE9
+ top_of_atmos
+ 4.0
+
+
+
+ 493
+ SSMITB5_ON_TOP_OF_ATMOS
+ Simulated Brightness Temperature for SSMI TB, Channel 5 on top of atmosphere
+ AMSRE10
+ top_of_atmos
+ 4.0
+
+
+
+ 494
+ SSMITB6_ON_TOP_OF_ATMOS
+ Simulated Brightness Temperature for SSMI TB, Channel 6 on top of atmosphere
+ AMSRE11
+ top_of_atmos
+ 4.0
+
+
+
+ 495
+ SSMITB7_ON_TOP_OF_ATMOS
+ Simulated Brightness Temperature for SSMI TB, Channel 7 on top of atmosphere
+ AMSRE12
+ top_of_atmos
+ 4.0
+
+
+
+ 496
+ SSMISTB15_ON_TOP_OF_ATMOS
+ Simulated Brightness Temperature for SSMIS TB, Channel 15 on top of atmosphere
+ AMSRE9
+ top_of_atmos
+ 4.0
+
+
+
+ 497
+ SSMISTB16_ON_TOP_OF_ATMOS
+ Simulated Brightness Temperature for SSMIS TB, Channel 16 on top of atmosphere
+ AMSRE10
+ top_of_atmos
+ 4.0
+
+
+
+ 498
+ SSMISTB17_ON_TOP_OF_ATMOS
+ Simulated Brightness Temperature for SSMIS TB, Channel 17 on top of atmosphere
+ AMSRE11
+ top_of_atmos
+ 4.0
+
+
+
+ 499
+ SSMISTB18_ON_TOP_OF_ATMOS
+ Simulated Brightness Temperature for SSMIS TB, Channel 18 on top of atmosphere
+ AMSRE12
+ top_of_atmos
+ 4.0
+
+
+
+ 500
+ AVE_SNOWC_ON_SURFACE
+ tmpl4_8
+ SNOWC
+ AVE
+ surface
+ 3.0
+
+
+
+ 501
+ AVE_PRES_ON_SURFACE
+ tmpl4_8
+ PRES
+ AVE
+ surface
+ 5.0
+
+
+
+ 502
+ AVE_TMP_ON_SPEC_HGT_LVL_ABOVE_GRND_10m
+ tmpl4_8
+ TMP
+ AVE
+ spec_hgt_lvl_above_grnd
+ 10.
+ -4.0
+
+
+
+ 503
+ AVE_AKHS_ON_SURFACE
+ tmpl4_8
+ AKHS
+ AVE
+ surface
+ 3.0
+
+
+
+ 504
+ AVE_AKMS_ON_SURFACE
+ tmpl4_8
+ AKMS
+ AVE
+ surface
+ 3.0
+
+
+
+ 505
+ TMP_ON_SPEC_HGT_LVL_ABOVE_GRND_10m
+ TMP
+ spec_hgt_lvl_above_grnd
+ 10.
+ -4.0
+
+
+
+ 506
+ MAX_MAXUW_ON_SPEC_HGT_LVL_ABOVE_GRND_10m
+ U Component of Hourly Maximum 10m Wind Speed (m/s)
+ tmpl4_8
+ MAXUW
+ MAX
+ spec_hgt_lvl_above_grnd
+ 10.
+ -4.0
+
+
+
+ 507
+ MAX_MAXVW_ON_SPEC_HGT_LVL_ABOVE_GRND_10m
+ V Component of Hourly Maximum 10m Wind Speed (m/s)
+ tmpl4_8
+ MAXVW
+ MAX
+ spec_hgt_lvl_above_grnd
+ 10.
+ -4.0
+
+
+
+ 551
+ CSNOW_ON_SURFACE
+ Categorical snow on surface
+ CSNOW
+ NCEP
+ surface
+ 1.0
+
+
+
+ 552
+ CICEP_ON_SURFACE
+ Categorical ice pellets on surface
+ CICEP
+ NCEP
+ surface
+ 1.0
+
+
+
+ 553
+ CFRZR_ON_SURFACE
+ Categorical freezing rain on surface
+ CFRZR
+ NCEP
+ surface
+ 1.0
+
+
+
+ 555
+ AVE_CSNOW_ON_SURFACE
+ average Categorical snow on surface
+ tmpl4_8
+ CSNOW
+ AVE
+ surface
+ 1.0
+
+
+
+ 556
+ AVE_CICEP_ON_SURFACE
+ average Categorical ice pellets on surface
+ tmpl4_8
+ CICEP
+ AVE
+ surface
+ 1.0
+
+
+
+ 557
+ AVE_CFRZR_ON_SURFACE
+ average Categorical freezing rain on surface
+ tmpl4_8
+ CFRZR
+ AVE
+ surface
+ 1.0
+
+
+
+ 559
+ GSD_CSNOW_ON_SURFACE
+ GSD_Categorical snow on surface
+ CSNOW
+ surface
+ 1.0
+
+
+
+ 560
+ GSD_CICEP_ON_SURFACE
+ GSD_Categorical ice pellets on surface
+ CICEP
+ surface
+ 1.0
+
+
+
+ 561
+ GSD_CFRZR_ON_SURFACE
+ GSD_Categorical freezing rain on surface
+ CFRZR
+ surface
+ 1.0
+
+
+
+ 563
+ GSD_AVE_CSNOW_ON_SURFACE
+ GSD_average Categorical snow on surface
+ tmpl4_8
+ CSNOW
+ AVE
+ surface
+ 1.0
+
+
+
+ 564
+ GSD_AVE_CICEP_ON_SURFACE
+ GSD_average Categorical ice pellets on surface
+ tmpl4_8
+ CICEP
+ AVE
+ surface
+ 1.0
+
+
+
+ 565
+ GSD_AVE_CFRZR_ON_SURFACE
+ GSD_average Categorical freezing rain on surface
+ tmpl4_8
+ CFRZR
+ AVE
+ surface
+ 1.0
+
+
+
+ 566
+ BEST_CAPE_ON_SPEC_PRES_ABOVE_GRND
+ CAPE
+ spec_pres_above_grnd
+ 0.
+ spec_pres_above_grnd
+ 0.
+ 4.0
+
+
+
+ 567
+ BEST_CIN_ON_SPEC_PRES_ABOVE_GRND
+ CIN
+ spec_pres_above_grnd
+ 0.
+ spec_pres_above_grnd
+ 0.
+ 4.0
+
+
+
+ 575
+ CWAT_ON_ENTIRE_ATMOS_SINGLE_LYR
+ CWAT
+ entire_atmos_single_lyr
+ 3.0
+
+
+
+ 576
+ UGRD_ON_SPEC_HGT_LVL_ABOVE_GRND_FDHGT
+ UGRD
+ spec_hgt_lvl_above_grnd
+ -4.0
+
+
+
+ 577
+ VGRD_ON_SPEC_HGT_LVL_ABOVE_GRND_FDHGT
+ VGRD
+ spec_hgt_lvl_above_grnd
+ -4.0
+
+
+
+ 578
+ SPFH_ON_SPEC_HGT_LVL_ABOVE_GRND_FDHGT
+ SPFH
+ spec_hgt_lvl_above_grnd
+ 3.0
+
+
+
+ 579
+ PRES_ON_SPEC_HGT_LVL_ABOVE_GRND_FDHGT
+ PRES
+ spec_hgt_lvl_above_grnd
+ 3.0
+
+
+
+ 580
+ ICI_ON_SPEC_ALT_ABOVE_MEAN_SEA_LVL_FDHGT
+ ICI
+ spec_alt_above_mean_sea_lvl
+ 3.0
+
+
+
+ 581
+ VIL_ON_ENTIRE_ATMOS
+ entire atmosphere Vertically Integrated Liquid (kg/m-2)
+ VIL
+ entire_atmos_single_lyr
+ 4.0
+
+
+
+ 582
+ MIXED_LAYER_CAPE_ON_SPEC_PRES_ABOVE_GRND
+ CAPE
+ spec_pres_above_grnd
+ 0.
+ spec_pres_above_grnd
+ 0.
+ 4.0
+
+
+
+ 583
+ MIXED_LAYER_CIN_ON_SPEC_PRES_ABOVE_GRND
+ CIN
+ spec_pres_above_grnd
+ 0.
+ spec_pres_above_grnd
+ 0.
+ 4.0
+
+
+
+ 584
+ UNSTABLE_CAPE_ON_SPEC_PRES_ABOVE_GRND
+ CAPE
+ spec_pres_above_grnd
+ 0.
+ spec_pres_above_grnd
+ 0.
+ 4.0
+
+
+
+ 585
+ UNSTABLE_CIN_ON_SPEC_PRES_ABOVE_GRND
+ CIN
+ spec_pres_above_grnd
+ 0.
+ spec_pres_above_grnd
+ 0.
+
+
+
+ 586
+ TMP_ON_SPEC_HGT_LVL_ABOVE_GRND_FDHGT
+ TMP
+ spec_hgt_lvl_above_grnd
+ 3.0
+
+
+
+ 587
+ ICI_ON_SPEC_HGT_LVL_ABOVE_GRND_FDHGT
+ ICI
+ spec_hgt_lvl_above_grnd
+ 3.0
+
+
+
+ 601
+ DUST1_ON_SPEC_ALT_ABOVE_MEAN_SEA_LVL_FDHGT
+ tmpl4_48
+ MASSMR
+ spec_alt_above_mean_sea_lvl
+ dust_dry
+ between_first_second_limit_noincl2ndlmt
+ 7
+ 2
+ 7
+ 20
+ 11.0
+
+
+
+ 602
+ DUST2_ON_SPEC_ALT_ABOVE_MEAN_SEA_LVL_FDHGT
+ tmpl4_48
+ MASSMR
+ spec_alt_above_mean_sea_lvl
+ dust_dry
+ between_first_second_limit_noincl2ndlmt
+ 7
+ 20
+ 7
+ 36
+ 11.0
+
+
+
+ 603
+ DUST3_ON_SPEC_ALT_ABOVE_MEAN_SEA_LVL_FDHGT
+ tmpl4_48
+ MASSMR
+ spec_alt_above_mean_sea_lvl
+ dust_dry
+ between_first_second_limit_noincl2ndlmt
+ 7
+ 36
+ 7
+ 60
+ 11.0
+
+
+
+ 604
+ DUST4_ON_SPEC_ALT_ABOVE_MEAN_SEA_LVL_FDHGT
+ tmpl4_48
+ MASSMR
+ spec_alt_above_mean_sea_lvl
+ dust_dry
+ between_first_second_limit_noincl2ndlmt
+ 7
+ 60
+ 7
+ 120
+ 11.0
+
+
+
+ 605
+ DUST5_ON_SPEC_ALT_ABOVE_MEAN_SEA_LVL_FDHGT
+ tmpl4_48
+ MASSMR
+ spec_alt_above_mean_sea_lvl
+ dust_dry
+ between_first_second_limit_noincl2ndlmt
+ 7
+ 120
+ 7
+ 200
+ 11.0
+
+
+
+
+ 606
+ AECOEF_ON_HYBRID_LVL
+ AECOFF
+ hybrid_lvl
+ 11.0
+
+
+
+ 607
+ ASYSFK_ON_HYBRID_LVL
+ ASYSFK
+ hybrid_lvl
+ 11.0
+
+
+
+ 608
+ SSALBK_ON_HYBRID_LVL
+ SSALBK
+ hybrid_lvl
+ 11.0
+
+
+
+ 609
+ AER_OPT_DEP_at550
+ tmpl4_48
+ AOTK
+ entire_atmos
+ total_aerosol
+ smaller_than_first_limit
+ 6
+ 20
+ between_first_second_limit
+ 9
+ 545
+ 9
+ 565
+ 9.0
+
+
+
+ 610
+ DUST_AER_OPT_DEP_at550
+ tmpl4_48
+ AOTK
+ entire_atmos
+ dust_dry
+ smaller_than_first_limit
+ 6
+ 20
+ between_first_second_limit
+ 9
+ 545
+ 9
+ 565
+ 9.0
+
+
+
+ 611
+ Seasalt_AER_OPT_DEP_at550
+ tmpl4_48
+ AOTK
+ entire_atmos
+ sea_salt_dry
+ smaller_than_first_limit
+ 6
+ 20
+ between_first_second_limit
+ 9
+ 545
+ 9
+ 565
+ 9.0
+
+
+
+ 612
+ SULFATE_AER_OPT_DEP_at550
+ tmpl4_48
+ AOTK
+ entire_atmos
+ sulphate_dry
+ smaller_than_first_limit
+ 6
+ 20
+ between_first_second_limit
+ 9
+ 545
+ 9
+ 565
+ 9.0
+
+
+
+ 613
+ ORGANIC_CARBON_AER_OPT_DEP_at550
+ tmpl4_48
+ AOTK
+ entire_atmos
+ sea_salt_dry
+ smaller_than_first_limit
+ 6
+ 20
+ between_first_second_limit
+ 9
+ 545
+ 9
+ 565
+ 9.0
+
+
+
+ 614
+ BLACK_CARBON_AER_OPT_DEP_at550
+ tmpl4_48
+ AOTK
+ entire_atmos
+ black_carbondry
+ smaller_than_first_limit
+ 6
+ 20
+ between_first_second_limit
+ 9
+ 545
+ 9
+ 565
+ 9.0
+
+
+
+ 615
+ DUST_EMISSION_FLUX
+ tmpl4_48
+ AEMFLX
+ entire_atmos
+ dust_dry
+ smaller_than_first_limit
+ 6
+ 20
+ 9.0
+
+
+
+ 616
+ DUST_SEDIMENTATION_FLUX
+ tmpl4_48
+ SEDMFLX
+ entire_atmos
+ dust_dry
+ smaller_than_first_limit
+ 6
+ 20
+ 9.0
+
+
+
+ 617
+ DUST_DRY_DEPOSITION_FLUX
+ tmpl4_48
+ DDMFLX
+ entire_atmos
+ dust_dry
+ smaller_than_first_limit
+ 6
+ 20
+ 9.0
+
+
+
+ 618
+ DUST_WET_DEPOSITION_FLUX
+ tmpl4_48
+ WLSMFLX
+ entire_atmos
+ dust_dry
+ smaller_than_first_limit
+ 6
+ 20
+ 9.0
+
+
+
+ 619
+ CR_AER_SFC_MASS_CON
+ tmpl4_48
+ MASSDEN
+ surface
+ dust_dry
+ smaller_than_first_limit
+ 6
+ 10
+ 9.0
+
+
+
+ 620
+ FN_AER_SFC_MASS_CON
+ tmpl4_48
+ MASSDEN
+ surface
+ dust_dry
+ smaller_than_first_limit
+ 7
+ 25
+ 9.0
+
+
+
+ 621
+ CR_AER_COL_MASS_DEN
+ tmpl4_48
+ COLMD
+ entire_atmos
+ dust_dry
+ smaller_than_first_limit
+ 6
+ 10
+ 9.0
+
+
+
+ 622
+ FN_AER_COL_MASS_DEN
+ tmpl4_48
+ COLMD
+ entire_atmos
+ dust_dry
+ smaller_than_first_limit
+ 7
+ 25
+ 9.0
+
+
+
+ 623
+ AER_OPT_DEP_at340
+ tmpl4_48
+ AOTK
+ entire_atmos
+ total_aerosol
+ smaller_than_first_limit
+ 6
+ 20
+ between_first_second_limit
+ 9
+ 338
+ 9
+ 342
+ 9.0
+
+
+
+ 624
+ AER_OPT_DEP_at440
+ tmpl4_48
+ AOTK
+ entire_atmos
+ total_aerosol
+ smaller_than_first_limit
+ 6
+ 20
+ between_first_second_limit
+ 9
+ 430
+ 9
+ 450
+ 9.0
+
+
+
+ 625
+ AER_OPT_DEP_at660
+ tmpl4_48
+ AOTK
+ entire_atmos
+ total_aerosol
+ smaller_than_first_limit
+ 6
+ 20
+ between_first_second_limit
+ 9
+ 620
+ 9
+ 670
+ 9.0
+
+
+
+ 626
+ AER_OPT_DEP_at860
+ tmpl4_48
+ AOTK
+ entire_atmos
+ total_aerosol
+ smaller_than_first_limit
+ 6
+ 20
+ between_first_second_limit
+ 9
+ 841
+ 9
+ 876
+ 9.0
+
+
+
+ 627
+ AER_OPT_DEP_at1630
+ tmpl4_48
+ AOTK
+ entire_atmos
+ total_aerosol
+ smaller_than_first_limit
+ 6
+ 20
+ between_first_second_limit
+ 9
+ 1628
+ 9
+ 1652
+ 9.0
+
+
+
+ 628
+ AER_OPT_DEP_at11100
+ tmpl4_48
+ AOTK
+ entire_atmos
+ total_aerosol
+ smaller_than_first_limit
+ 6
+ 20
+ between_first_second_limit
+ 9
+ 11000
+ 9
+ 11200
+ 9.0
+
+
+
+ 629
+ DUST1_ON_HYBRID_LVL
+ tmpl4_48
+ MASSMR
+ hybrid_lvl
+ dust_dry
+ between_first_second_limit_noincl2ndlmt
+ 7
+ 2
+ 7
+ 20
+ 11.0
+
+
+
+ 630
+ DUST2_ON_HYBRID_LVL
+ tmpl4_48
+ MASSMR
+ hybrid_lvl
+ dust_dry
+ between_first_second_limit_noincl2ndlmt
+ 7
+ 20
+ 7
+ 36
+ 11.0
+
+
+
+ 631
+ DUST3_ON_HYBRID_LVL
+ tmpl4_48
+ MASSMR
+ hybrid_lvl
+ dust_dry
+ between_first_second_limit_noincl2ndlmt
+ 7
+ 36
+ 7
+ 60
+ 11.0
+
+
+
+ 632
+ DUST4_ON_HYBRID_LVL
+ tmpl4_48
+ MASSMR
+ hybrid_lvl
+ dust_dry
+ between_first_second_limit_noincl2ndlmt
+ 7
+ 60
+ 7
+ 120
+ 11.0
+
+
+
+ 633
+ DUST5_ON_HYBRID_LVL
+ tmpl4_48
+ MASSMR
+ hybrid_lvl
+ dust_dry
+ between_first_second_limit_noincl2ndlmt
+ 7
+ 120
+ 7
+ 200
+ 11.0
+
+
+
+
+ 750
+ GSD_WV_MIXR_ON_HYBRID_LVL
+ MIXR
+ hybrid_lvl
+ 3.0
+
+
+
+ 751
+ GSD_VPTMP_ON_HYBRID_LVL
+ VPTMP
+ hybrid_lvl
+ 3.0
+
+
+
+ 752
+ GSD_NCIP_ON_HYBRID_LVL
+ Number concentration for ice particles on hybrid level
+ NCIP
+ hybrid_lvl
+ 3.0
+
+
+
+ 754
+ GSD_NCRAIN_ON_HYBRID_LVL
+ NCRAIN
+ hybrid_lvl
+ 3.0
+
+
+
+ 546
+ GSD_POT_ON_SPEC_HGT_LVL_ABOVE_GRND_2m
+ POT
+ spec_hgt_lvl_above_grnd
+ 2.
+ 4.0
+
+
+
+
+ 547
+ GSD_DEPR_ON_SPEC_HGT_LVL_ABOVE_GRND_2m
+ DEPR
+ spec_hgt_lvl_above_grnd
+ 2.
+ 3.0
+
+
+
+ 548
+ GSD_EPOT_ON_SURFACE
+ EPOT
+ surface
+ 3.0
+
+
+
+ 753
+ GSD_PRES_ON_0C_ISOTHERM
+ GSD_pressure on Level of 0 deg (C) isotherm
+ PRES
+ 0C_isotherm
+ 3.0
+
+
+
+ 756
+ GSD_PRES_ON_HGHST_TROP_FRZ_LVL
+ GSD_pressure on Highest tropospheric freezing level
+ PRES
+ hghst_trop_frz_lvl
+ 3.0
+
+
+
+
+ 700
+ GSD_MAX_UPHL_ON_SPEC_HGT_LVL_ABOVE_GRND_1-6km
+ tmpl4_8
+ MXUPHL
+ MAX
+ spec_hgt_lvl_above_grnd
+ 6000.
+ spec_hgt_lvl_above_grnd
+ 1000.
+ 3.0
+
+
+
+ 701
+ GSD_UPHL_ON_SPEC_HGT_LVL_ABOVE_GRND_1-6km
+ MXUPHL
+ spec_hgt_lvl_above_grnd
+ 6000.
+ spec_hgt_lvl_above_grnd
+ 1000.
+ 3.0
+
+
+
+
+ 702
+ GSD_MAX_LTG_THREAT1_ON_ENTIRE_ATMOS
+ LTGTHREAT1
+ entire_atmos
+ 3.0
+
+
+
+ 703
+ GSD_MAX_LTG_THREAT2_ON_ENTIRE_ATMOS
+ LTGTHREAT2
+ entire_atmos
+ 3.0
+
+
+
+ 704
+ GSD_MAX_LTG_THREAT3_ON_ENTIRE_ATMOS
+ LTNG
+ entire_atmos
+ 3.0
+
+
+
+ 705
+ GSD_NCI_LTG_ON_ENTIRE_ATMOS
+ GSD_Convective Initiation Lightning
+ NCILTG
+ entire_atmos
+ 3.0
+
+
+
+ 706
+ GSD_NCA_LTG_ON_ENTIRE_ATMOS
+ GSD_Convective Activity Lightning
+ NCALTG
+ entire_atmos
+ 3.0
+
+
+
+ 707
+ GSD_NCI_WQ_ON_ENTIRE_ATMOS
+ GSD_Convective Initiation Vertical Hydrometeor Flux
+ NCIWQ
+ entire_atmos
+ 3.0
+
+
+
+ 708
+ GSD_NCA_WQ_ON_ENTIRE_ATMOS
+ GSD_Convective Activity Vertical Hydrometeor Flux
+ NCAWQ
+ entire_atmos
+ 3.0
+
+
+
+ 709
+ GSD_NCI_REFL_ON_ENTIRE_ATMOS
+ GSD_Convective Initiation Reflectivity
+ NCIREFL
+ entire_atmos
+ 3.0
+
+
+
+ 710
+ GSD_NCA_REFL_ON_ENTIRE_ATMOS
+ GSD_Convective Activity Reflectivity
+ NCAREFL
+ entire_atmos
+ 3.0
+
+
+
+ 749
+ GSD_RH_WRT_PRECIP_WATER_ON_ENTIRE_ATMOS
+ RELATIVE HUMIDITY WITH RESPECT TO PRECIPITABLE WATER
+ RH_PWAT
+ entire_atmos
+ 3.0
+
+
+
+ 748
+ GSD_REFL_ON_SPEC_HGT_LVL_ABOVE_GRND_1km
+ REFL
+ spec_hgt_lvl_above_grnd
+ 1000.
+ 3.0
+
+
+
+ 757
+ GSD_REFL_ON_SPEC_HGT_LVL_ABOVE_GRND_4km
+ REFL
+ spec_hgt_lvl_above_grnd
+ 4000.
+ 3.0
+
+
+
+ 758
+ GSD_HGT_ON_CONVECTIVE_CLOUD_TOP_LVL
+ HGT
+ convective_cloud_top_lvl
+ 4.0
+
+
+
+ 760
+ GSD_MIXR_ON_SPEC_HGT_LVL_ABOVE_GRND_2m
+ MIXR
+ spec_hgt_lvl_above_grnd
+ 2.
+ 3.0
+
+
+
+ 762
+ GSD_MIXR_ON_SURFACE
+ MIXR
+ SURFACE
+ 3.0
+
+
+
+ 761
+ GSD_INSIDE_SNOW_TMP_ON_SURFACE
+ TMP
+ SURFACE
+ 4.0
+
+
+
+ 768
+ GSD_ECHOTOP_ON_CLOUD_TOP
+ Echo top height (Highest height in meters of the 18-dBZ reflectivity on a model level)
+ RETOP
+ cloud_top
+ 3.0
+
+
+
+ 769
+ GSD_VIL_ON_ENTIRE_ATMOS
+ VIL
+ entire_atmos
+ 4.0
+
+
+
+ 770
+ GSD_RADARVIL_ON_ENTIRE_ATMOS
+ VIL
+ entire_atmos
+ 3.0
+
+
+
+ 727
+ GSD_UPHL_ON_SPEC_HGT_LVL_ABOVE_GRND_2-5km
+ UPHL
+ spec_hgt_lvl_above_grnd
+ 5000.
+ spec_hgt_lvl_above_grnd
+ 2000.
+ 3.0
+
+
+
+ 808
+ APTMP_ON_SPEC_HGT_LVL_ABOVE_GRND_2m
+ APTMP
+ spec_hgt_lvl_above_grnd
+ 2.
+ 4.0
+
+
+
+
+
diff --git a/parm/postcntrl_comupp.xml b/parm/postcntrl_comupp.xml
new file mode 100644
index 000000000..e4df0ba93
--- /dev/null
+++ b/parm/postcntrl_comupp.xml
@@ -0,0 +1,702 @@
+
+
+
+
+ WRFPRS
+ 4
+ ncep_nco
+ v2003
+ local_tab_yes1
+ fcst
+ oper
+ fcst
+ fcst
+ hour
+ nws_ncep
+ wrf_em_ncar_arwrf
+ complex_packing_spatial_diff
+ 2nd_ord_sptdiff
+ fltng_pnt
+ lossless
+
+
+ PRES_ON_HYBRID_LVL
+ PRES
+ 1. 2. 3. 4. 5.
+ 6.0
+
+
+
+ HGT_ON_HYBRID_LVL
+ HGT
+ 1. 2. 3. 4. 5.
+ 4.0
+
+
+
+ TMP_ON_HYBRID_LVL
+ TMP
+ 1. 2. 3. 4. 5.
+ 4.0
+
+
+
+ POT_ON_HYBRID_LVL
+ POT
+ 1. 2. 3. 4. 5.
+ 4.0
+
+
+
+ DPT_ON_HYBRID_LVL
+ DPT
+ 1. 2. 3. 4. 5.
+ 5.0
+
+
+
+ SPFH_ON_HYBRID_LVL
+ SPFH
+ 1.
+ 7.0
+
+
+
+ RH_ON_HYBRID_LVL
+ RH
+ 1.
+ 4.0
+
+
+
+ UGRD_ON_HYBRID_LVL
+ UGRD
+ 1. 2. 3. 4. 5.
+ 4.0
+
+
+
+ VGRD_ON_HYBRID_LVL
+ VGRD
+ 1. 2. 3. 4. 5.
+ 4.0
+
+
+
+ VVEL_ON_HYBRID_LVL
+ VVEL
+ 1.
+ 5.0
+
+
+
+ REFD_ON_HYBRID_LVL
+ REFD
+ NCEP
+ 1. 2.
+ 4.0
+
+
+
+ HGT_ON_ISOBARIC_SFC
+ HGT
+ 200. 500. 700. 1000. 2000. 3000. 5000. 7000. 7500. 10000. 12500. 15000. 17500. 20000. 22500. 25000. 27500. 30000. 32500. 35000. 37500. 40000. 42500. 45000.
+47500. 50000. 52500. 55000. 57500. 60000. 62500. 65000. 67500. 70000. 72500. 75000. 77500. 80000. 82500. 85000. 87500. 90000. 92500. 95000. 97500. 100000.
+ 6.0
+
+
+
+ TMP_ON_ISOBARIC_SFC
+ TMP
+ 200. 500. 700. 1000. 2000. 3000. 5000. 7000. 7500. 10000. 12500. 15000. 17500. 20000. 22500. 25000. 27500. 30000. 32500. 35000. 37500. 40000. 42500. 45000.
+47500. 50000. 52500. 55000. 57500. 60000. 62500. 65000. 67500. 70000. 72500. 75000. 77500. 80000. 82500. 85000. 87500. 90000. 92500. 95000. 97500. 100000.
+ 3.0
+
+
+
+ DPT_ON_ISOBARIC_SFC
+ DPT
+ 200. 500. 700. 1000. 2000. 3000. 5000. 7000. 7500. 10000. 12500. 15000. 17500. 20000. 22500. 25000. 27500. 30000. 32500. 35000. 37500. 40000. 42500. 45000.
+47500. 50000. 52500. 55000. 57500. 60000. 62500. 65000. 67500. 70000. 72500. 75000. 77500. 80000. 82500. 85000. 87500. 90000. 92500. 95000. 97500. 100000.
+ 5.0
+
+
+
+ RH_ON_ISOBARIC_SFC
+ RH
+ 200. 500. 700. 1000. 2000. 3000. 5000. 7000. 7500. 10000. 12500. 15000. 17500. 20000. 22500. 25000. 27500. 30000. 32500. 35000. 37500. 40000. 42500. 45000.
+47500. 50000. 52500. 55000. 57500. 60000. 62500. 65000. 67500. 70000. 72500. 75000. 77500. 80000. 82500. 85000. 87500. 90000. 92500. 95000. 97500. 100000.
+ 2.0
+
+
+
+ UGRD_ON_ISOBARIC_SFC
+ UGRD
+ 200. 500. 700. 1000. 2000. 3000. 5000. 7000. 7500. 10000. 12500. 15000. 17500. 20000. 22500. 25000. 27500. 30000. 32500. 35000. 37500. 40000. 42500. 45000.
+47500. 50000. 52500. 55000. 57500. 60000. 62500. 65000. 67500. 70000. 72500. 75000. 77500. 80000. 82500. 85000. 87500. 90000. 92500. 95000. 97500. 100000.
+ 4.0
+
+
+
+ VGRD_ON_ISOBARIC_SFC
+ VGRD
+ 200. 500. 700. 1000. 2000. 3000. 5000. 7000. 7500. 10000. 12500. 15000. 17500. 20000. 22500. 25000. 27500. 30000. 32500. 35000. 37500. 40000. 42500. 45000.
+47500. 50000. 52500. 55000. 57500. 60000. 62500. 65000. 67500. 70000. 72500. 75000. 77500. 80000. 82500. 85000. 87500. 90000. 92500. 95000. 97500. 100000.
+ 4.0
+
+
+
+ VVEL_ON_ISOBARIC_SFC
+ VVEL
+ 200. 500. 700. 1000. 2000. 3000. 5000. 7000. 7500. 10000. 12500. 15000. 17500. 20000. 22500. 25000. 27500. 30000. 32500. 35000. 37500. 40000. 42500. 45000.
+47500. 50000. 52500. 55000. 57500. 60000. 62500. 65000. 67500. 70000. 72500. 75000. 77500. 80000. 82500. 85000. 87500. 90000. 92500. 95000. 97500. 100000.
+ 5.0
+
+
+
+ CICE_ON_ISOBARIC_SFC
+ CICE
+ 200. 500. 700. 1000. 2000. 3000. 5000. 7000. 7500. 10000. 12500. 15000. 17500. 20000. 22500. 25000. 27500. 30000. 32500. 35000. 37500. 40000. 42500. 45000.
+47500. 50000. 52500. 55000. 57500. 60000. 62500. 65000. 67500. 70000. 72500. 75000. 77500. 80000. 82500. 85000. 87500. 90000. 92500. 95000. 97500. 100000.
+ 6.0
+
+
+
+ MSLET_ON_MEAN_SEA_LVL
+ MSLET
+ NCEP
+ 6.0
+
+
+
+ PRES_ON_MEAN_SEA_LVL
+ PRMSL
+ 6.0
+
+
+
+ TMP_ON_SPEC_HGT_LVL_ABOVE_GRND_2m
+ TMP
+ 4.0
+
+
+
+ SPFH_ON_SPEC_HGT_LVL_ABOVE_GRND_2m
+ SPFH
+ 4.0
+
+
+
+ DPT_ON_SPEC_HGT_LVL_ABOVE_GRND_2m
+ DPT
+ 4.0
+
+
+
+ RH_ON_SPEC_HGT_LVL_ABOVE_GRND_2m
+ RH
+ 3.0
+
+
+
+ UGRD_ON_SPEC_HGT_LVL_ABOVE_GRND_10m
+ UGRD
+ 10.
+ 4.0
+
+
+
+ VGRD_ON_SPEC_HGT_LVL_ABOVE_GRND_10m
+ VGRD
+ 10.
+ 4.0
+
+
+
+ PLPL_ON_SPEC_PRES_ABOVE_GRND
+ PLPL
+ NCEP
+ 25500.
+ 0.
+ 6.0
+
+
+
+ SPFH_ON_SPEC_HGT_LVL_ABOVE_GRND_10m
+ SPFH
+ 10.
+ 3.0
+
+
+
+ PRES_ON_SURFACE
+ PRES
+ 6.0
+
+
+
+ HGT_ON_SURFACE
+ HGT
+ 6.0
+
+
+
+ POT_ON_SURFACE
+ POT
+ 5.0
+
+
+
+ SPFH_ON_SURFACE
+ SPFH
+ 3.0
+
+
+
+ TMP_ON_SURFACE
+ TMP
+ 4.0
+
+
+
+ TSOIL_ON_DEPTH_BEL_LAND_SFC
+ TSOIL
+ 2 2 2 2
+ 0. 10. 40. 100.
+ 2 2 2 2
+ 10. 40. 100. 200.
+ 4.0
+
+
+
+ SOILW_ON_DEPTH_BEL_LAND_SFC
+ SOILW
+ NCEP
+ 2 2 2 2
+ 0. 10. 40. 100.
+ 2 2 2 2
+ 10. 40. 100. 200.
+ 3.0
+
+
+
+ SOILL_ON_DEPTH_BEL_LAND_SFC
+ SOILL
+ NCEP
+ 2 2 2 2
+ 0. 10. 40. 100.
+ 2 2 2 2
+ 10. 40. 100. 200.
+ 3.0
+
+
+
+ SOILM_ON_DEPTH_BEL_LAND_SFC
+ SOILM
+ 2
+ 0.
+ 2
+ 200.
+ 3.0
+
+
+
+ WEASD_ON_SURFACE
+ WEASD
+ 4.0
+
+
+
+ SNOWC_ON_SURFACE
+ SNOWC
+ NCEP
+ 3.0
+
+
+
+ LFTX_ON_ISOBARIC_SFC_500-1000hpa
+ LFTX
+ NCEP
+ 50000.
+ 100000.
+ 3.0
+
+
+
+ CAPE_ON_SURFACE
+ CAPE
+ 4.0
+
+
+
+ BEST_CAPE_ON_SPEC_PRES_ABOVE_GRND
+ CAPE
+ 18000.
+ 0.
+ 4.0
+
+
+
+ MIXED_LAYER_CAPE_ON_SPEC_PRES_ABOVE_GRND
+ CAPE
+ 9000.
+ 0.
+ 4.0
+
+
+
+ UNSTABLE_CAPE_ON_SPEC_PRES_ABOVE_GRND
+ CAPE
+ 25500.
+ 0.
+ 4.0
+
+
+
+ CIN_ON_SURFACE
+ CIN
+ 4.0
+
+
+
+ BEST_CIN_ON_SPEC_PRES_ABOVE_GRND
+ CIN
+ 18000.
+ 0.
+ 4.0
+
+
+
+ MIXED_LAYER_CIN_ON_SPEC_PRES_ABOVE_GRND
+ CIN
+ 9000.
+ 0.
+ 4.0
+
+
+
+ UNSTABLE_CIN_ON_SPEC_PRES_ABOVE_GRND
+ CIN
+ 25500.
+ 0.
+ 4.0
+
+
+
+ PWAT_ON_ENTIRE_ATMOS_SINGLE_LYR
+ PWAT
+ 3.0
+
+
+
+ HLCY_ON_SPEC_HGT_LVL_ABOVE_GRND
+ HLCY
+ 3000. 1000.
+ 4.0
+
+
+
+ USTM_ON_SPEC_HGT_LVL_ABOVE_GRND
+ USTM
+ NCEP
+ 6000.
+ 4.0
+
+
+
+ VSTM_ON_SPEC_HGT_LVL_ABOVE_GRND
+ VSTM
+ NCEP
+ 6000.
+ 4.0
+
+
+
+ ACM_APCP_ON_SURFACE
+ APCP
+ 4.0
+
+
+
+ INST_CRAIN_ON_SURFACE
+ CRAIN
+ NCEP
+ 1.0
+
+
+
+ CSNOW_ON_SURFACE
+ CSNOW
+ NCEP
+ 1.0
+
+
+
+ CICEP_ON_SURFACE
+ CICEP
+ NCEP
+ 1.0
+
+
+
+ CFRZR_ON_SURFACE
+ CFRZR
+ NCEP
+ 1.0
+
+
+
+ TCDC_ON_HYBRID_LVL
+ TCDC
+ 1. 2.
+ 3.0
+
+
+
+ LCDC_ON_LOW_CLOUD_LYR
+ LCDC
+ 3.0
+
+
+
+ MCDC_ON_MID_CLOUD_LYR
+ MCDC
+ 3.0
+
+
+
+ HCDC_ON_HIGH_CLOUD_LYR
+ HCDC
+ 3.0
+
+
+
+ VIS_ON_SURFACE
+ VIS
+ 3.0
+
+
+
+ GSD_VIS_ON_CLOUD_TOP
+ VIS
+ 3.0
+
+
+
+ HGT_ON_LVL_OF_ADIAB_COND_FROM_SFC
+ HGT
+ 5.0
+
+
+
+ PRES_ON_LVL_OF_ADIAB_COND_FROM_SFC
+ PRES
+ 6.0
+
+
+
+ HGT_ON_TROPOPAUSE
+ HGT
+ 6.0
+
+
+
+
+ PRES_ON_SPEC_HGT_LVL_ABOVE_GRND_FDHGT
+ PRES
+ 30. 50. 80. 100.
+ 3.0
+
+
+
+ UGRD_ON_SPEC_HGT_LVL_ABOVE_GRND
+ 80.
+ 4.0
+
+
+
+ VGRD_ON_SPEC_HGT_LVL_ABOVE_GRND
+ 80.
+ 4.0
+
+
+
+ UGRD_ON_SPEC_PRES_ABOVE_GRND
+ UGRD
+ 3000. 6000. 9000. 12000. 15000. 18000.
+ 0. 3000. 6000. 9000. 12000. 15000.
+ 4.0
+
+
+
+ VGRD_ON_SPEC_PRES_ABOVE_GRND
+ VGRD
+ 3000. 6000. 9000. 12000. 15000. 18000.
+ 0. 3000. 6000. 9000. 12000. 15000.
+ 4.0
+
+
+
+ VVEL_ON_SPEC_PRES_ABOVE_GRND
+ VVEL
+ 3000. 9000. 18000.
+ 0. 6000. 15000.
+ 5.0
+
+
+
+ HGT_ON_CLOUD_BASE
+ HGT
+ 6.0
+
+
+
+ HGT_ON_CLOUD_TOP
+ HGT
+ 6.0
+
+
+
+ TMP_ON_CLOUD_TOP
+ TMP
+ 5.0
+
+
+
+ REFC_ON_ENTIRE_ATMOS
+ REFC
+ NCEP
+ 4.0
+
+
+
+ REFD_ON_SPEC_HGT_LVL_ABOVE_GRND
+ REFD
+ NCEP
+ 4000. 1000.
+ 4.0
+
+
+
+ HGT_ON_CLOUD_CEILING
+ HGT
+ 6.0
+
+
+
+ MSLET_ON_MEAN_SEA_LVL
+ MSLET
+ NCEP
+ 6.0
+
+
+
+ PRES_ON_MEAN_SEA_LVL
+ PRMSL
+ 6.0
+
+
+
+ PRES_ON_SPEC_HGT_LVL_ABOVE_GRND_2m
+ PRES
+ 6.0
+
+
+
+ TMP_ON_SPEC_HGT_LVL_ABOVE_GRND_2m
+ TMP
+ 4.0
+
+
+
+ SPFH_ON_SPEC_HGT_LVL_ABOVE_GRND_2m
+ SPFH
+ 4.0
+
+
+
+ DPT_ON_SPEC_HGT_LVL_ABOVE_GRND_2m
+ DPT
+ 4.0
+
+
+
+ RH_ON_SPEC_HGT_LVL_ABOVE_GRND_2m
+ RH
+ 3.0
+
+
+
+ PRES_ON_SURFACE
+ PRES
+ 6.0
+
+
+
+ VEG_ON_SURFACE
+ VEG
+ 3.0
+
+
+
+ MSTAV_ON_DEPTH_BEL_LAND_SFC
+ MSTAV
+ NCEP
+ 2
+ 0.
+ 2
+ 100.
+ 3.0
+
+
+
+ 4LFTX_ON_SPEC_PRES_ABOVE_GRND
+ 4LFTX
+ NCEP
+ 18000.
+ 0.
+ 3.0
+
+
+
+ NLAT_ON_SURFACE
+ NLAT
+ NCEP
+ 4.0
+
+
+
+ ELON_ON_SURFACE
+ ELON
+ NCEP
+ 4.0
+
+
+
+ LAND_ON_SURFACE
+ LAND
+ 1.0
+
+
+ NON_NADIR_SBT123_ON_TOP_OF_ATMOS
+ 4.0
+
+
+
+ NON_NADIR_SBT124_ON_TOP_OF_ATMOS
+ 4.0
+
+
+
+ SBT113_ON_TOP_OF_ATMOS
+ 4.0
+
+
+
+ SBT114_ON_TOP_OF_ATMOS
+ 4.0
+
+
+
+
+
diff --git a/parm/postxconfig-NT-WRF_comupp.txt b/parm/postxconfig-NT-WRF_comupp.txt
new file mode 100644
index 000000000..c59bb0e24
--- /dev/null
+++ b/parm/postxconfig-NT-WRF_comupp.txt
@@ -0,0 +1,3681 @@
+1
+99
+WRFPRS
+4
+ncep_nco
+v2003
+local_tab_yes1
+fcst
+oper
+fcst
+fcst
+hour
+nws_ncep
+wrf_em_ncar_arwrf
+complex_packing_spatial_diff
+2nd_ord_sptdiff
+fltng_pnt
+lossless
+1
+PRES_ON_HYBRID_LVL
+?
+1
+tmpl4_0
+PRES
+?
+?
+hybrid_lvl
+0
+?
+5
+1. 2. 3. 4. 5.
+?
+0
+?
+0
+?
+?
+?
+0
+0.0
+0
+0.0
+?
+0
+0.0
+0
+0.0
+1
+6.0
+0
+0
+0
+?
+?
+?
+77
+HGT_ON_HYBRID_LVL
+?
+1
+tmpl4_0
+HGT
+?
+?
+hybrid_lvl
+0
+?
+5
+1. 2. 3. 4. 5.
+?
+0
+?
+0
+?
+?
+?
+0
+0.0
+0
+0.0
+?
+0
+0.0
+0
+0.0
+1
+4.0
+0
+0
+0
+?
+?
+?
+2
+TMP_ON_HYBRID_LVL
+?
+1
+tmpl4_0
+TMP
+?
+?
+hybrid_lvl
+0
+?
+5
+1. 2. 3. 4. 5.
+?
+0
+?
+0
+?
+?
+?
+0
+0.0
+0
+0.0
+?
+0
+0.0
+0
+0.0
+1
+4.0
+0
+0
+0
+?
+?
+?
+3
+POT_ON_HYBRID_LVL
+?
+1
+tmpl4_0
+POT
+?
+?
+hybrid_lvl
+0
+?
+5
+1. 2. 3. 4. 5.
+?
+0
+?
+0
+?
+?
+?
+0
+0.0
+0
+0.0
+?
+0
+0.0
+0
+0.0
+1
+4.0
+0
+0
+0
+?
+?
+?
+4
+DPT_ON_HYBRID_LVL
+?
+1
+tmpl4_0
+DPT
+?
+?
+hybrid_lvl
+0
+?
+5
+1. 2. 3. 4. 5.
+?
+0
+?
+0
+?
+?
+?
+0
+0.0
+0
+0.0
+?
+0
+0.0
+0
+0.0
+1
+5.0
+0
+0
+0
+?
+?
+?
+5
+SPFH_ON_HYBRID_LVL
+?
+1
+tmpl4_0
+SPFH
+?
+?
+hybrid_lvl
+0
+?
+1
+1.
+?
+0
+?
+0
+?
+?
+?
+0
+0.0
+0
+0.0
+?
+0
+0.0
+0
+0.0
+1
+7.0
+0
+0
+0
+?
+?
+?
+6
+RH_ON_HYBRID_LVL
+?
+1
+tmpl4_0
+RH
+?
+?
+hybrid_lvl
+0
+?
+1
+1.
+?
+0
+?
+0
+?
+?
+?
+0
+0.0
+0
+0.0
+?
+0
+0.0
+0
+0.0
+1
+4.0
+0
+0
+0
+?
+?
+?
+7
+UGRD_ON_HYBRID_LVL
+?
+1
+tmpl4_0
+UGRD
+?
+?
+hybrid_lvl
+0
+?
+5
+1. 2. 3. 4. 5.
+?
+0
+?
+0
+?
+?
+?
+0
+0.0
+0
+0.0
+?
+0
+0.0
+0
+0.0
+1
+4.0
+0
+0
+0
+?
+?
+?
+8
+VGRD_ON_HYBRID_LVL
+?
+1
+tmpl4_0
+VGRD
+?
+?
+hybrid_lvl
+0
+?
+5
+1. 2. 3. 4. 5.
+?
+0
+?
+0
+?
+?
+?
+0
+0.0
+0
+0.0
+?
+0
+0.0
+0
+0.0
+1
+4.0
+0
+0
+0
+?
+?
+?
+9
+VVEL_ON_HYBRID_LVL
+?
+1
+tmpl4_0
+VVEL
+?
+?
+hybrid_lvl
+0
+?
+1
+1.
+?
+0
+?
+0
+?
+?
+?
+0
+0.0
+0
+0.0
+?
+0
+0.0
+0
+0.0
+1
+5.0
+0
+0
+0
+?
+?
+?
+250
+REFD_ON_HYBRID_LVL
+?
+1
+tmpl4_0
+REFD
+NCEP
+?
+hybrid_lvl
+0
+?
+2
+1. 2.
+?
+0
+?
+0
+?
+?
+?
+0
+0.0
+0
+0.0
+?
+0
+0.0
+0
+0.0
+1
+4.0
+0
+0
+0
+?
+?
+?
+12
+HGT_ON_ISOBARIC_SFC
+?
+1
+tmpl4_0
+HGT
+?
+?
+isobaric_sfc
+0
+?
+46
+200. 500. 700. 1000. 2000. 3000. 5000. 7000. 7500. 10000. 12500. 15000. 17500. 20000. 22500. 25000. 27500. 30000. 32500. 35000. 37500. 40000. 42500. 45000. 47500. 50000. 52500. 55000. 57500. 60000. 62500. 65000. 67500. 70000. 72500. 75000. 77500. 80000. 82500. 85000. 87500. 90000. 92500. 95000. 97500. 100000.
+?
+0
+?
+0
+?
+?
+?
+0
+0.0
+0
+0.0
+?
+0
+0.0
+0
+0.0
+1
+6.0
+0
+0
+0
+?
+?
+?
+13
+TMP_ON_ISOBARIC_SFC
+?
+1
+tmpl4_0
+TMP
+?
+?
+isobaric_sfc
+0
+?
+46
+200. 500. 700. 1000. 2000. 3000. 5000. 7000. 7500. 10000. 12500. 15000. 17500. 20000. 22500. 25000. 27500. 30000. 32500. 35000. 37500. 40000. 42500. 45000. 47500. 50000. 52500. 55000. 57500. 60000. 62500. 65000. 67500. 70000. 72500. 75000. 77500. 80000. 82500. 85000. 87500. 90000. 92500. 95000. 97500. 100000.
+?
+0
+?
+0
+?
+?
+?
+0
+0.0
+0
+0.0
+?
+0
+0.0
+0
+0.0
+1
+3.0
+0
+0
+0
+?
+?
+?
+15
+DPT_ON_ISOBARIC_SFC
+?
+1
+tmpl4_0
+DPT
+?
+?
+isobaric_sfc
+0
+?
+46
+200. 500. 700. 1000. 2000. 3000. 5000. 7000. 7500. 10000. 12500. 15000. 17500. 20000. 22500. 25000. 27500. 30000. 32500. 35000. 37500. 40000. 42500. 45000. 47500. 50000. 52500. 55000. 57500. 60000. 62500. 65000. 67500. 70000. 72500. 75000. 77500. 80000. 82500. 85000. 87500. 90000. 92500. 95000. 97500. 100000.
+?
+0
+?
+0
+?
+?
+?
+0
+0.0
+0
+0.0
+?
+0
+0.0
+0
+0.0
+1
+5.0
+0
+0
+0
+?
+?
+?
+17
+RH_ON_ISOBARIC_SFC
+?
+1
+tmpl4_0
+RH
+?
+?
+isobaric_sfc
+0
+?
+46
+200. 500. 700. 1000. 2000. 3000. 5000. 7000. 7500. 10000. 12500. 15000. 17500. 20000. 22500. 25000. 27500. 30000. 32500. 35000. 37500. 40000. 42500. 45000. 47500. 50000. 52500. 55000. 57500. 60000. 62500. 65000. 67500. 70000. 72500. 75000. 77500. 80000. 82500. 85000. 87500. 90000. 92500. 95000. 97500. 100000.
+?
+0
+?
+0
+?
+?
+?
+0
+0.0
+0
+0.0
+?
+0
+0.0
+0
+0.0
+1
+2.0
+0
+0
+0
+?
+?
+?
+18
+UGRD_ON_ISOBARIC_SFC
+?
+1
+tmpl4_0
+UGRD
+?
+?
+isobaric_sfc
+0
+?
+46
+200. 500. 700. 1000. 2000. 3000. 5000. 7000. 7500. 10000. 12500. 15000. 17500. 20000. 22500. 25000. 27500. 30000. 32500. 35000. 37500. 40000. 42500. 45000. 47500. 50000. 52500. 55000. 57500. 60000. 62500. 65000. 67500. 70000. 72500. 75000. 77500. 80000. 82500. 85000. 87500. 90000. 92500. 95000. 97500. 100000.
+?
+0
+?
+0
+?
+?
+?
+0
+0.0
+0
+0.0
+?
+0
+0.0
+0
+0.0
+1
+4.0
+0
+0
+0
+?
+?
+?
+19
+VGRD_ON_ISOBARIC_SFC
+?
+1
+tmpl4_0
+VGRD
+?
+?
+isobaric_sfc
+0
+?
+46
+200. 500. 700. 1000. 2000. 3000. 5000. 7000. 7500. 10000. 12500. 15000. 17500. 20000. 22500. 25000. 27500. 30000. 32500. 35000. 37500. 40000. 42500. 45000. 47500. 50000. 52500. 55000. 57500. 60000. 62500. 65000. 67500. 70000. 72500. 75000. 77500. 80000. 82500. 85000. 87500. 90000. 92500. 95000. 97500. 100000.
+?
+0
+?
+0
+?
+?
+?
+0
+0.0
+0
+0.0
+?
+0
+0.0
+0
+0.0
+1
+4.0
+0
+0
+0
+?
+?
+?
+20
+VVEL_ON_ISOBARIC_SFC
+?
+1
+tmpl4_0
+VVEL
+?
+?
+isobaric_sfc
+0
+?
+46
+200. 500. 700. 1000. 2000. 3000. 5000. 7000. 7500. 10000. 12500. 15000. 17500. 20000. 22500. 25000. 27500. 30000. 32500. 35000. 37500. 40000. 42500. 45000. 47500. 50000. 52500. 55000. 57500. 60000. 62500. 65000. 67500. 70000. 72500. 75000. 77500. 80000. 82500. 85000. 87500. 90000. 92500. 95000. 97500. 100000.
+?
+0
+?
+0
+?
+?
+?
+0
+0.0
+0
+0.0
+?
+0
+0.0
+0
+0.0
+1
+5.0
+0
+0
+0
+?
+?
+?
+166
+CICE_ON_ISOBARIC_SFC
+?
+1
+tmpl4_0
+CICE
+?
+?
+isobaric_sfc
+0
+?
+46
+200. 500. 700. 1000. 2000. 3000. 5000. 7000. 7500. 10000. 12500. 15000. 17500. 20000. 22500. 25000. 27500. 30000. 32500. 35000. 37500. 40000. 42500. 45000. 47500. 50000. 52500. 55000. 57500. 60000. 62500. 65000. 67500. 70000. 72500. 75000. 77500. 80000. 82500. 85000. 87500. 90000. 92500. 95000. 97500. 100000.
+?
+0
+?
+0
+?
+?
+?
+0
+0.0
+0
+0.0
+?
+0
+0.0
+0
+0.0
+1
+6.0
+0
+0
+0
+?
+?
+?
+23
+MSLET_ON_MEAN_SEA_LVL
+?
+1
+tmpl4_0
+MSLET
+NCEP
+?
+mean_sea_lvl
+0
+?
+0
+?
+?
+0
+?
+0
+?
+?
+?
+0
+0.0
+0
+0.0
+?
+0
+0.0
+0
+0.0
+1
+6.0
+0
+0
+0
+?
+?
+?
+105
+PRES_ON_MEAN_SEA_LVL
+?
+1
+tmpl4_0
+PRMSL
+?
+?
+mean_sea_lvl
+0
+?
+0
+?
+?
+0
+?
+0
+?
+?
+?
+0
+0.0
+0
+0.0
+?
+0
+0.0
+0
+0.0
+1
+6.0
+0
+0
+0
+?
+?
+?
+106
+TMP_ON_SPEC_HGT_LVL_ABOVE_GRND_2m
+?
+1
+tmpl4_0
+TMP
+?
+?
+spec_hgt_lvl_above_grnd
+0
+?
+1
+2.
+?
+0
+?
+0
+?
+?
+?
+0
+0.0
+0
+0.0
+?
+0
+0.0
+0
+0.0
+1
+4.0
+0
+0
+0
+?
+?
+?
+112
+SPFH_ON_SPEC_HGT_LVL_ABOVE_GRND_2m
+?
+1
+tmpl4_0
+SPFH
+?
+?
+spec_hgt_lvl_above_grnd
+0
+?
+1
+2.
+?
+0
+?
+0
+?
+?
+?
+0
+0.0
+0
+0.0
+?
+0
+0.0
+0
+0.0
+1
+4.0
+0
+0
+0
+?
+?
+?
+113
+DPT_ON_SPEC_HGT_LVL_ABOVE_GRND_2m
+?
+1
+tmpl4_0
+DPT
+?
+?
+spec_hgt_lvl_above_grnd
+0
+?
+1
+2.
+?
+0
+?
+0
+?
+?
+?
+0
+0.0
+0
+0.0
+?
+0
+0.0
+0
+0.0
+1
+4.0
+0
+0
+0
+?
+?
+?
+114
+RH_ON_SPEC_HGT_LVL_ABOVE_GRND_2m
+?
+1
+tmpl4_0
+RH
+?
+?
+spec_hgt_lvl_above_grnd
+0
+?
+1
+2.
+?
+0
+?
+0
+?
+?
+?
+0
+0.0
+0
+0.0
+?
+0
+0.0
+0
+0.0
+1
+3.0
+0
+0
+0
+?
+?
+?
+64
+UGRD_ON_SPEC_HGT_LVL_ABOVE_GRND_10m
+?
+1
+tmpl4_0
+UGRD
+?
+?
+spec_hgt_lvl_above_grnd
+0
+?
+1
+10.
+?
+0
+?
+0
+?
+?
+?
+0
+0.0
+0
+0.0
+?
+0
+0.0
+0
+0.0
+1
+4.0
+0
+0
+0
+?
+?
+?
+65
+VGRD_ON_SPEC_HGT_LVL_ABOVE_GRND_10m
+?
+1
+tmpl4_0
+VGRD
+?
+?
+spec_hgt_lvl_above_grnd
+0
+?
+1
+10.
+?
+0
+?
+0
+?
+?
+?
+0
+0.0
+0
+0.0
+?
+0
+0.0
+0
+0.0
+1
+4.0
+0
+0
+0
+?
+?
+?
+246
+PLPL_ON_SPEC_PRES_ABOVE_GRND
+?
+1
+tmpl4_0
+PLPL
+NCEP
+?
+spec_pres_above_grnd
+0
+?
+1
+25500.
+spec_pres_above_grnd
+0
+?
+1
+0.
+?
+?
+0
+0.0
+0
+0.0
+?
+0
+0.0
+0
+0.0
+1
+6.0
+0
+0
+0
+?
+?
+?
+159
+SPFH_ON_SPEC_HGT_LVL_ABOVE_GRND_10m
+?
+1
+tmpl4_0
+SPFH
+?
+?
+spec_hgt_lvl_above_grnd
+0
+?
+1
+10.
+?
+0
+?
+0
+?
+?
+?
+0
+0.0
+0
+0.0
+?
+0
+0.0
+0
+0.0
+1
+3.0
+0
+0
+0
+?
+?
+?
+24
+PRES_ON_SURFACE
+?
+1
+tmpl4_0
+PRES
+?
+?
+surface
+0
+?
+0
+?
+?
+0
+?
+0
+?
+?
+?
+0
+0.0
+0
+0.0
+?
+0
+0.0
+0
+0.0
+1
+6.0
+0
+0
+0
+?
+?
+?
+25
+HGT_ON_SURFACE
+?
+1
+tmpl4_0
+HGT
+?
+?
+surface
+0
+?
+0
+?
+?
+0
+?
+0
+?
+?
+?
+0
+0.0
+0
+0.0
+?
+0
+0.0
+0
+0.0
+1
+6.0
+0
+0
+0
+?
+?
+?
+27
+POT_ON_SURFACE
+?
+1
+tmpl4_0
+POT
+?
+?
+surface
+0
+?
+0
+?
+?
+0
+?
+0
+?
+?
+?
+0
+0.0
+0
+0.0
+?
+0
+0.0
+0
+0.0
+1
+5.0
+0
+0
+0
+?
+?
+?
+28
+SPFH_ON_SURFACE
+?
+1
+tmpl4_0
+SPFH
+?
+?
+surface
+0
+?
+0
+?
+?
+0
+?
+0
+?
+?
+?
+0
+0.0
+0
+0.0
+?
+0
+0.0
+0
+0.0
+1
+3.0
+0
+0
+0
+?
+?
+?
+26
+TMP_ON_SURFACE
+?
+1
+tmpl4_0
+TMP
+?
+?
+surface
+0
+?
+0
+?
+?
+0
+?
+0
+?
+?
+?
+0
+0.0
+0
+0.0
+?
+0
+0.0
+0
+0.0
+1
+4.0
+0
+0
+0
+?
+?
+?
+116
+TSOIL_ON_DEPTH_BEL_LAND_SFC
+?
+1
+tmpl4_0
+TSOIL
+?
+?
+depth_bel_land_sfc
+4
+2 2 2 2
+4
+0. 10. 40. 100.
+depth_bel_land_sfc
+4
+2 2 2 2
+4
+10. 40. 100. 200.
+?
+?
+0
+0.0
+0
+0.0
+?
+0
+0.0
+0
+0.0
+1
+4.0
+0
+0
+0
+?
+?
+?
+117
+SOILW_ON_DEPTH_BEL_LAND_SFC
+?
+1
+tmpl4_0
+SOILW
+NCEP
+?
+depth_bel_land_sfc
+4
+2 2 2 2
+4
+0. 10. 40. 100.
+depth_bel_land_sfc
+4
+2 2 2 2
+4
+10. 40. 100. 200.
+?
+?
+0
+0.0
+0
+0.0
+?
+0
+0.0
+0
+0.0
+1
+3.0
+0
+0
+0
+?
+?
+?
+225
+SOILL_ON_DEPTH_BEL_LAND_SFC
+?
+1
+tmpl4_0
+SOILL
+NCEP
+?
+depth_bel_land_sfc
+4
+2 2 2 2
+4
+0. 10. 40. 100.
+depth_bel_land_sfc
+4
+2 2 2 2
+4
+10. 40. 100. 200.
+?
+?
+0
+0.0
+0
+0.0
+?
+0
+0.0
+0
+0.0
+1
+3.0
+0
+0
+0
+?
+?
+?
+36
+SOILM_ON_DEPTH_BEL_LAND_SFC
+?
+1
+tmpl4_0
+SOILM
+?
+?
+depth_bel_land_sfc
+1
+2
+1
+0.
+depth_bel_land_sfc
+1
+2
+1
+200.
+?
+?
+0
+0.0
+0
+0.0
+?
+0
+0.0
+0
+0.0
+1
+3.0
+0
+0
+0
+?
+?
+?
+119
+WEASD_ON_SURFACE
+?
+1
+tmpl4_0
+WEASD
+?
+?
+surface
+0
+?
+0
+?
+?
+0
+?
+0
+?
+?
+?
+0
+0.0
+0
+0.0
+?
+0
+0.0
+0
+0.0
+1
+4.0
+0
+0
+0
+?
+?
+?
+120
+SNOWC_ON_SURFACE
+?
+1
+tmpl4_0
+SNOWC
+NCEP
+?
+surface
+0
+?
+0
+?
+?
+0
+?
+0
+?
+?
+?
+0
+0.0
+0
+0.0
+?
+0
+0.0
+0
+0.0
+1
+3.0
+0
+0
+0
+?
+?
+?
+30
+LFTX_ON_ISOBARIC_SFC_500-1000hpa
+?
+1
+tmpl4_0
+LFTX
+NCEP
+?
+isobaric_sfc
+0
+?
+1
+50000.
+isobaric_sfc
+0
+?
+1
+100000.
+?
+?
+0
+0.0
+0
+0.0
+?
+0
+0.0
+0
+0.0
+1
+3.0
+0
+0
+0
+?
+?
+?
+32
+CAPE_ON_SURFACE
+?
+1
+tmpl4_0
+CAPE
+?
+?
+surface
+0
+?
+0
+?
+?
+0
+?
+0
+?
+?
+?
+0
+0.0
+0
+0.0
+?
+0
+0.0
+0
+0.0
+1
+4.0
+0
+0
+0
+?
+?
+?
+566
+BEST_CAPE_ON_SPEC_PRES_ABOVE_GRND
+?
+1
+tmpl4_0
+CAPE
+?
+?
+spec_pres_above_grnd
+0
+?
+1
+18000.
+spec_pres_above_grnd
+0
+?
+1
+0.
+?
+?
+0
+0.0
+0
+0.0
+?
+0
+0.0
+0
+0.0
+1
+4.0
+0
+0
+0
+?
+?
+?
+582
+MIXED_LAYER_CAPE_ON_SPEC_PRES_ABOVE_GRND
+?
+1
+tmpl4_0
+CAPE
+?
+?
+spec_pres_above_grnd
+0
+?
+1
+9000.
+spec_pres_above_grnd
+0
+?
+1
+0.
+?
+?
+0
+0.0
+0
+0.0
+?
+0
+0.0
+0
+0.0
+1
+4.0
+0
+0
+0
+?
+?
+?
+584
+UNSTABLE_CAPE_ON_SPEC_PRES_ABOVE_GRND
+?
+1
+tmpl4_0
+CAPE
+?
+?
+spec_pres_above_grnd
+0
+?
+1
+25500.
+spec_pres_above_grnd
+0
+?
+1
+0.
+?
+?
+0
+0.0
+0
+0.0
+?
+0
+0.0
+0
+0.0
+1
+4.0
+0
+0
+0
+?
+?
+?
+107
+CIN_ON_SURFACE
+?
+1
+tmpl4_0
+CIN
+?
+?
+surface
+0
+?
+0
+?
+?
+0
+?
+0
+?
+?
+?
+0
+0.0
+0
+0.0
+?
+0
+0.0
+0
+0.0
+1
+4.0
+0
+0
+0
+?
+?
+?
+567
+BEST_CIN_ON_SPEC_PRES_ABOVE_GRND
+?
+1
+tmpl4_0
+CIN
+?
+?
+spec_pres_above_grnd
+0
+?
+1
+18000.
+spec_pres_above_grnd
+0
+?
+1
+0.
+?
+?
+0
+0.0
+0
+0.0
+?
+0
+0.0
+0
+0.0
+1
+4.0
+0
+0
+0
+?
+?
+?
+583
+MIXED_LAYER_CIN_ON_SPEC_PRES_ABOVE_GRND
+?
+1
+tmpl4_0
+CIN
+?
+?
+spec_pres_above_grnd
+0
+?
+1
+9000.
+spec_pres_above_grnd
+0
+?
+1
+0.
+?
+?
+0
+0.0
+0
+0.0
+?
+0
+0.0
+0
+0.0
+1
+4.0
+0
+0
+0
+?
+?
+?
+585
+UNSTABLE_CIN_ON_SPEC_PRES_ABOVE_GRND
+?
+1
+tmpl4_0
+CIN
+?
+?
+spec_pres_above_grnd
+0
+?
+1
+25500.
+spec_pres_above_grnd
+0
+?
+1
+0.
+?
+?
+0
+0.0
+0
+0.0
+?
+0
+0.0
+0
+0.0
+1
+4.0
+0
+0
+0
+?
+?
+?
+80
+PWAT_ON_ENTIRE_ATMOS_SINGLE_LYR
+?
+1
+tmpl4_0
+PWAT
+?
+?
+entire_atmos_single_lyr
+0
+?
+0
+?
+?
+0
+?
+0
+?
+?
+?
+0
+0.0
+0
+0.0
+?
+0
+0.0
+0
+0.0
+1
+3.0
+0
+0
+0
+?
+?
+?
+162
+HLCY_ON_SPEC_HGT_LVL_ABOVE_GRND
+?
+1
+tmpl4_0
+HLCY
+?
+?
+spec_hgt_lvl_above_grnd
+0
+?
+2
+3000. 1000.
+spec_hgt_lvl_above_grnd
+0
+?
+0
+?
+?
+?
+0
+0.0
+0
+0.0
+?
+0
+0.0
+0
+0.0
+1
+4.0
+0
+0
+0
+?
+?
+?
+163
+USTM_ON_SPEC_HGT_LVL_ABOVE_GRND
+?
+1
+tmpl4_0
+USTM
+NCEP
+?
+spec_hgt_lvl_above_grnd
+0
+?
+1
+6000.
+spec_hgt_lvl_above_grnd
+0
+?
+0
+?
+?
+?
+0
+0.0
+0
+0.0
+?
+0
+0.0
+0
+0.0
+1
+4.0
+0
+0
+0
+?
+?
+?
+164
+VSTM_ON_SPEC_HGT_LVL_ABOVE_GRND
+?
+1
+tmpl4_0
+VSTM
+NCEP
+?
+spec_hgt_lvl_above_grnd
+0
+?
+1
+6000.
+spec_hgt_lvl_above_grnd
+0
+?
+0
+?
+?
+?
+0
+0.0
+0
+0.0
+?
+0
+0.0
+0
+0.0
+1
+4.0
+0
+0
+0
+?
+?
+?
+87
+ACM_APCP_ON_SURFACE
+?
+1
+tmpl4_8
+APCP
+?
+ACM
+surface
+0
+?
+0
+?
+?
+0
+?
+0
+?
+?
+?
+0
+0.0
+0
+0.0
+?
+0
+0.0
+0
+0.0
+1
+4.0
+0
+0
+0
+?
+?
+?
+160
+INST_CRAIN_ON_SURFACE
+?
+1
+tmpl4_0
+CRAIN
+NCEP
+?
+surface
+0
+?
+0
+?
+?
+0
+?
+0
+?
+?
+?
+0
+0.0
+0
+0.0
+?
+0
+0.0
+0
+0.0
+1
+1.0
+0
+0
+0
+?
+?
+?
+551
+CSNOW_ON_SURFACE
+Categorical snow on surface
+1
+tmpl4_0
+CSNOW
+NCEP
+?
+surface
+0
+?
+0
+?
+?
+0
+?
+0
+?
+?
+?
+0
+0.0
+0
+0.0
+?
+0
+0.0
+0
+0.0
+1
+1.0
+0
+0
+0
+?
+?
+?
+552
+CICEP_ON_SURFACE
+Categorical ice pellets on surface
+1
+tmpl4_0
+CICEP
+NCEP
+?
+surface
+0
+?
+0
+?
+?
+0
+?
+0
+?
+?
+?
+0
+0.0
+0
+0.0
+?
+0
+0.0
+0
+0.0
+1
+1.0
+0
+0
+0
+?
+?
+?
+553
+CFRZR_ON_SURFACE
+Categorical freezing rain on surface
+1
+tmpl4_0
+CFRZR
+NCEP
+?
+surface
+0
+?
+0
+?
+?
+0
+?
+0
+?
+?
+?
+0
+0.0
+0
+0.0
+?
+0
+0.0
+0
+0.0
+1
+1.0
+0
+0
+0
+?
+?
+?
+145
+TCDC_ON_HYBRID_LVL
+?
+1
+tmpl4_0
+TCDC
+?
+?
+hybrid_lvl
+0
+?
+2
+1. 2.
+?
+0
+?
+0
+?
+?
+?
+0
+0.0
+0
+0.0
+?
+0
+0.0
+0
+0.0
+1
+3.0
+0
+0
+0
+?
+?
+?
+37
+LCDC_ON_LOW_CLOUD_LYR
+?
+1
+tmpl4_0
+LCDC
+?
+?
+low_cloud_lyr
+0
+?
+0
+?
+?
+0
+?
+0
+?
+?
+?
+0
+0.0
+0
+0.0
+?
+0
+0.0
+0
+0.0
+1
+3.0
+0
+0
+0
+?
+?
+?
+38
+MCDC_ON_MID_CLOUD_LYR
+?
+1
+tmpl4_0
+MCDC
+?
+?
+mid_cloud_lyr
+0
+?
+0
+?
+?
+0
+?
+0
+?
+?
+?
+0
+0.0
+0
+0.0
+?
+0
+0.0
+0
+0.0
+1
+3.0
+0
+0
+0
+?
+?
+?
+39
+HCDC_ON_HIGH_CLOUD_LYR
+?
+1
+tmpl4_0
+HCDC
+?
+?
+high_cloud_lyr
+0
+?
+0
+?
+?
+0
+?
+0
+?
+?
+?
+0
+0.0
+0
+0.0
+?
+0
+0.0
+0
+0.0
+1
+3.0
+0
+0
+0
+?
+?
+?
+180
+VIS_ON_SURFACE
+?
+1
+tmpl4_0
+VIS
+?
+?
+surface
+0
+?
+0
+?
+?
+0
+?
+0
+?
+?
+?
+0
+0.0
+0
+0.0
+?
+0
+0.0
+0
+0.0
+1
+3.0
+0
+0
+0
+?
+?
+?
+410
+GSD_VIS_ON_CLOUD_TOP
+GSD_visibility on cloud top
+1
+tmpl4_0
+VIS
+?
+?
+cloud_top
+0
+?
+0
+?
+?
+0
+?
+0
+?
+?
+?
+0
+0.0
+0
+0.0
+?
+0
+0.0
+0
+0.0
+1
+3.0
+0
+0
+0
+?
+?
+?
+109
+HGT_ON_LVL_OF_ADIAB_COND_FROM_SFC
+?
+1
+tmpl4_0
+HGT
+?
+?
+lvl_of_adiab_cond_from_sfc
+0
+?
+0
+?
+?
+0
+?
+0
+?
+?
+?
+0
+0.0
+0
+0.0
+?
+0
+0.0
+0
+0.0
+1
+5.0
+0
+0
+0
+?
+?
+?
+110
+PRES_ON_LVL_OF_ADIAB_COND_FROM_SFC
+?
+1
+tmpl4_0
+PRES
+?
+?
+lvl_of_adiab_cond_from_sfc
+0
+?
+0
+?
+?
+0
+?
+0
+?
+?
+?
+0
+0.0
+0
+0.0
+?
+0
+0.0
+0
+0.0
+1
+6.0
+0
+0
+0
+?
+?
+?
+177
+HGT_ON_TROPOPAUSE
+?
+1
+tmpl4_0
+HGT
+?
+?
+tropopause
+0
+?
+0
+?
+?
+0
+?
+0
+?
+?
+?
+0
+0.0
+0
+0.0
+?
+0
+0.0
+0
+0.0
+1
+6.0
+0
+0
+0
+?
+?
+?
+579
+PRES_ON_SPEC_HGT_LVL_ABOVE_GRND_FDHGT
+?
+1
+tmpl4_0
+PRES
+?
+?
+spec_hgt_lvl_above_grnd
+0
+?
+4
+30. 50. 80. 100.
+?
+0
+?
+0
+?
+?
+?
+0
+0.0
+0
+0.0
+?
+0
+0.0
+0
+0.0
+1
+3.0
+0
+0
+0
+?
+?
+?
+412
+UGRD_ON_SPEC_HGT_LVL_ABOVE_GRND
+U-Component of Wind on Specified Height Level Above Ground
+1
+tmpl4_0
+UGRD
+?
+?
+spec_hgt_lvl_above_grnd
+0
+?
+1
+80.
+?
+0
+?
+0
+?
+?
+?
+0
+0.0
+0
+0.0
+?
+0
+0.0
+0
+0.0
+1
+4.0
+0
+0
+0
+?
+?
+?
+413
+VGRD_ON_SPEC_HGT_LVL_ABOVE_GRND
+V-Component of Wind on Specified Height Level Above Ground
+1
+tmpl4_0
+VGRD
+?
+?
+spec_hgt_lvl_above_grnd
+0
+?
+1
+80.
+?
+0
+?
+0
+?
+?
+?
+0
+0.0
+0
+0.0
+?
+0
+0.0
+0
+0.0
+1
+4.0
+0
+0
+0
+?
+?
+?
+73
+UGRD_ON_SPEC_PRES_ABOVE_GRND
+?
+1
+tmpl4_0
+UGRD
+?
+?
+spec_pres_above_grnd
+0
+?
+6
+3000. 6000. 9000. 12000. 15000. 18000.
+spec_pres_above_grnd
+0
+?
+6
+0. 3000. 6000. 9000. 12000. 15000.
+?
+?
+0
+0.0
+0
+0.0
+?
+0
+0.0
+0
+0.0
+1
+4.0
+0
+0
+0
+?
+?
+?
+74
+VGRD_ON_SPEC_PRES_ABOVE_GRND
+?
+1
+tmpl4_0
+VGRD
+?
+?
+spec_pres_above_grnd
+0
+?
+6
+3000. 6000. 9000. 12000. 15000. 18000.
+spec_pres_above_grnd
+0
+?
+6
+0. 3000. 6000. 9000. 12000. 15000.
+?
+?
+0
+0.0
+0
+0.0
+?
+0
+0.0
+0
+0.0
+1
+4.0
+0
+0
+0
+?
+?
+?
+90
+VVEL_ON_SPEC_PRES_ABOVE_GRND
+?
+1
+tmpl4_0
+VVEL
+?
+?
+spec_pres_above_grnd
+0
+?
+3
+3000. 9000. 18000.
+spec_pres_above_grnd
+0
+?
+3
+0. 6000. 15000.
+?
+?
+0
+0.0
+0
+0.0
+?
+0
+0.0
+0
+0.0
+1
+5.0
+0
+0
+0
+?
+?
+?
+178
+HGT_ON_CLOUD_BASE
+?
+1
+tmpl4_0
+HGT
+?
+?
+cloud_base
+0
+?
+0
+?
+?
+0
+?
+0
+?
+?
+?
+0
+0.0
+0
+0.0
+?
+0
+0.0
+0
+0.0
+1
+6.0
+0
+0
+0
+?
+?
+?
+179
+HGT_ON_CLOUD_TOP
+?
+1
+tmpl4_0
+HGT
+?
+?
+cloud_top
+0
+?
+0
+?
+?
+0
+?
+0
+?
+?
+?
+0
+0.0
+0
+0.0
+?
+0
+0.0
+0
+0.0
+1
+6.0
+0
+0
+0
+?
+?
+?
+168
+TMP_ON_CLOUD_TOP
+?
+1
+tmpl4_0
+TMP
+?
+?
+cloud_top
+0
+?
+0
+?
+?
+0
+?
+0
+?
+?
+?
+0
+0.0
+0
+0.0
+?
+0
+0.0
+0
+0.0
+1
+5.0
+0
+0
+0
+?
+?
+?
+252
+REFC_ON_ENTIRE_ATMOS
+?
+1
+tmpl4_0
+REFC
+NCEP
+?
+entire_atmos_single_lyr
+0
+?
+0
+?
+?
+0
+?
+0
+?
+?
+?
+0
+0.0
+0
+0.0
+?
+0
+0.0
+0
+0.0
+1
+4.0
+0
+0
+0
+?
+?
+?
+253
+REFD_ON_SPEC_HGT_LVL_ABOVE_GRND
+?
+1
+tmpl4_0
+REFD
+NCEP
+?
+spec_hgt_lvl_above_grnd
+0
+?
+2
+4000. 1000.
+?
+0
+?
+0
+?
+?
+?
+0
+0.0
+0
+0.0
+?
+0
+0.0
+0
+0.0
+1
+4.0
+0
+0
+0
+?
+?
+?
+260
+HGT_ON_CLOUD_CEILING
+?
+1
+tmpl4_0
+HGT
+?
+?
+cloud_ceilng
+0
+?
+0
+?
+?
+0
+?
+0
+?
+?
+?
+0
+0.0
+0
+0.0
+?
+0
+0.0
+0
+0.0
+1
+6.0
+0
+0
+0
+?
+?
+?
+23
+MSLET_ON_MEAN_SEA_LVL
+?
+1
+tmpl4_0
+MSLET
+NCEP
+?
+mean_sea_lvl
+0
+?
+0
+?
+?
+0
+?
+0
+?
+?
+?
+0
+0.0
+0
+0.0
+?
+0
+0.0
+0
+0.0
+1
+6.0
+0
+0
+0
+?
+?
+?
+105
+PRES_ON_MEAN_SEA_LVL
+?
+1
+tmpl4_0
+PRMSL
+?
+?
+mean_sea_lvl
+0
+?
+0
+?
+?
+0
+?
+0
+?
+?
+?
+0
+0.0
+0
+0.0
+?
+0
+0.0
+0
+0.0
+1
+6.0
+0
+0
+0
+?
+?
+?
+138
+PRES_ON_SPEC_HGT_LVL_ABOVE_GRND_2m
+?
+1
+tmpl4_0
+PRES
+?
+?
+spec_hgt_lvl_above_grnd
+0
+?
+1
+2.
+?
+0
+?
+0
+?
+?
+?
+0
+0.0
+0
+0.0
+?
+0
+0.0
+0
+0.0
+1
+6.0
+0
+0
+0
+?
+?
+?
+106
+TMP_ON_SPEC_HGT_LVL_ABOVE_GRND_2m
+?
+1
+tmpl4_0
+TMP
+?
+?
+spec_hgt_lvl_above_grnd
+0
+?
+1
+2.
+?
+0
+?
+0
+?
+?
+?
+0
+0.0
+0
+0.0
+?
+0
+0.0
+0
+0.0
+1
+4.0
+0
+0
+0
+?
+?
+?
+112
+SPFH_ON_SPEC_HGT_LVL_ABOVE_GRND_2m
+?
+1
+tmpl4_0
+SPFH
+?
+?
+spec_hgt_lvl_above_grnd
+0
+?
+1
+2.
+?
+0
+?
+0
+?
+?
+?
+0
+0.0
+0
+0.0
+?
+0
+0.0
+0
+0.0
+1
+4.0
+0
+0
+0
+?
+?
+?
+113
+DPT_ON_SPEC_HGT_LVL_ABOVE_GRND_2m
+?
+1
+tmpl4_0
+DPT
+?
+?
+spec_hgt_lvl_above_grnd
+0
+?
+1
+2.
+?
+0
+?
+0
+?
+?
+?
+0
+0.0
+0
+0.0
+?
+0
+0.0
+0
+0.0
+1
+4.0
+0
+0
+0
+?
+?
+?
+114
+RH_ON_SPEC_HGT_LVL_ABOVE_GRND_2m
+?
+1
+tmpl4_0
+RH
+?
+?
+spec_hgt_lvl_above_grnd
+0
+?
+1
+2.
+?
+0
+?
+0
+?
+?
+?
+0
+0.0
+0
+0.0
+?
+0
+0.0
+0
+0.0
+1
+3.0
+0
+0
+0
+?
+?
+?
+24
+PRES_ON_SURFACE
+?
+1
+tmpl4_0
+PRES
+?
+?
+surface
+0
+?
+0
+?
+?
+0
+?
+0
+?
+?
+?
+0
+0.0
+0
+0.0
+?
+0
+0.0
+0
+0.0
+1
+6.0
+0
+0
+0
+?
+?
+?
+170
+VEG_ON_SURFACE
+?
+1
+tmpl4_0
+VEG
+?
+?
+surface
+0
+?
+0
+?
+?
+0
+?
+0
+?
+?
+?
+0
+0.0
+0
+0.0
+?
+0
+0.0
+0
+0.0
+1
+3.0
+0
+0
+0
+?
+?
+?
+171
+MSTAV_ON_DEPTH_BEL_LAND_SFC
+?
+1
+tmpl4_0
+MSTAV
+NCEP
+?
+depth_bel_land_sfc
+1
+2
+1
+0.
+depth_bel_land_sfc
+1
+2
+1
+100.
+?
+?
+0
+0.0
+0
+0.0
+?
+0
+0.0
+0
+0.0
+1
+3.0
+0
+0
+0
+?
+?
+?
+31
+4LFTX_ON_SPEC_PRES_ABOVE_GRND
+?
+1
+tmpl4_0
+4LFTX
+NCEP
+?
+spec_pres_above_grnd
+0
+?
+1
+18000.
+spec_pres_above_grnd
+0
+?
+1
+0.
+?
+?
+0
+0.0
+0
+0.0
+?
+0
+0.0
+0
+0.0
+1
+3.0
+0
+0
+0
+?
+?
+?
+48
+NLAT_ON_SURFACE
+?
+1
+tmpl4_0
+NLAT
+NCEP
+?
+surface
+0
+?
+0
+?
+?
+0
+?
+0
+?
+?
+?
+0
+0.0
+0
+0.0
+?
+0
+0.0
+0
+0.0
+1
+4.0
+0
+0
+0
+?
+?
+?
+49
+ELON_ON_SURFACE
+?
+1
+tmpl4_0
+ELON
+NCEP
+?
+surface
+0
+?
+0
+?
+?
+0
+?
+0
+?
+?
+?
+0
+0.0
+0
+0.0
+?
+0
+0.0
+0
+0.0
+1
+4.0
+0
+0
+0
+?
+?
+?
+50
+LAND_ON_SURFACE
+?
+1
+tmpl4_0
+LAND
+?
+?
+surface
+0
+?
+0
+?
+?
+0
+?
+0
+?
+?
+?
+0
+0.0
+0
+0.0
+?
+0
+0.0
+0
+0.0
+1
+1.0
+0
+0
+0
+?
+?
+?
+457
+NON_NADIR_SBT123_ON_TOP_OF_ATMOS
+Simulated Brightness Temperature for GOES12, Channel 3 on top of atmosphere
+1
+tmpl4_0
+SBT123
+?
+?
+top_of_atmos
+0
+?
+0
+?
+?
+0
+?
+0
+?
+?
+?
+0
+0.0
+0
+0.0
+?
+0
+0.0
+0
+0.0
+1
+4.0
+0
+0
+0
+?
+?
+?
+458
+NON_NADIR_SBT124_ON_TOP_OF_ATMOS
+Simulated Brightness Temperature for GOES12, Channel 4 on top of atmosphere
+1
+tmpl4_0
+SBT124
+?
+?
+top_of_atmos
+0
+?
+0
+?
+?
+0
+?
+0
+?
+?
+?
+0
+0.0
+0
+0.0
+?
+0
+0.0
+0
+0.0
+1
+4.0
+0
+0
+0
+?
+?
+?
+461
+SBT113_ON_TOP_OF_ATMOS
+Simulated Brightness Temperature for GOES11, Channel 3 on top of atmosphere
+1
+tmpl4_0
+SBT113
+?
+?
+top_of_atmos
+0
+?
+0
+?
+?
+0
+?
+0
+?
+?
+?
+0
+0.0
+0
+0.0
+?
+0
+0.0
+0
+0.0
+1
+4.0
+0
+0
+0
+?
+?
+?
+461
+SBT113_ON_TOP_OF_ATMOS
+Simulated Brightness Temperature for GOES11, Channel 3 on top of atmosphere
+1
+tmpl4_0
+SBT113
+?
+?
+top_of_atmos
+0
+?
+0
+?
+?
+0
+?
+0
+?
+?
+?
+0
+0.0
+0
+0.0
+?
+0
+0.0
+0
+0.0
+1
+4.0
+0
+0
+0
+?
+?
+?
+462
+SBT114_ON_TOP_OF_ATMOS
+Simulated Brightness Temperature for GOES11, Channel 4 on top of atmosphere
+1
+tmpl4_0
+SBT114
+?
+?
+top_of_atmos
+0
+?
+0
+?
+?
+0
+?
+0
+?
+?
+?
+0
+0.0
+0
+0.0
+?
+0
+0.0
+0
+0.0
+1
+4.0
+0
+0
+0
+?
+?
+?
+462
+SBT114_ON_TOP_OF_ATMOS
+Simulated Brightness Temperature for GOES11, Channel 4 on top of atmosphere
+1
+tmpl4_0
+SBT114
+?
+?
+top_of_atmos
+0
+?
+0
+?
+?
+0
+?
+0
+?
+?
+?
+0
+0.0
+0
+0.0
+?
+0
+0.0
+0
+0.0
+1
+4.0
+0
+0
+0
+?
+?
+?
diff --git a/parm/postxconfig-NT-hafs.txt b/parm/postxconfig-NT-hafs.txt
index 9e66cbb77..a0359f4c0 100644
--- a/parm/postxconfig-NT-hafs.txt
+++ b/parm/postxconfig-NT-hafs.txt
@@ -2118,7 +2118,7 @@ surface
0
0.0
1
-3.0
+6.0
0
0
0
diff --git a/parm/wrf_cntrl.parm b/parm/wrf_cntrl.parm
new file mode 100644
index 000000000..d6dc5cc54
--- /dev/null
+++ b/parm/wrf_cntrl.parm
@@ -0,0 +1,499 @@
+ KGTYPE******I5*******:(00255)********START OF THIS OUTPUT GRID******
+ IMDLTY *I5* :(00125)
+ DATSET *A6* :(WRFPRS)
+ (PRESS ON MDL SFCS ) SCAL=( 3.0)
+ L=(11000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000)
+ (HEIGHT ON MDL SFCS ) SCAL=( 6.0)
+ L=(11000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000)
+ (TEMP ON MDL SFCS ) SCAL=( 4.0)
+ L=(11000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000)
+ (POT TEMP ON MDL SFCS) SCAL=( 4.0)
+ L=(00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000)
+ (DWPT TEMP ON MDL SFC) SCAL=( 5.0)
+ L=(11000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000)
+ (SPEC HUM ON MDL SFCS) SCAL=( 3.0)
+ L=(11000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000)
+ (REL HUM ON MDL SFCS ) SCAL=( 4.0)
+ L=(10000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000)
+ (MST CNVG ON MDL SFCS) SCAL=( 3.0)
+ L=(00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000)
+ (U WIND ON MDL SFCS ) SCAL=( 4.0)
+ L=(11000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000)
+ (V WIND ON MDL SFCS ) SCAL=( 4.0)
+ L=(11000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000)
+ (OMEGA ON MDL SFCS ) SCAL=( 5.0)
+ L=(00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000)
+ (ABS VORT ON MDL SFCS) SCAL=( 3.0)
+ L=(00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000)
+ (STRMFUNC ON MDL SFCS) SCAL=( 3.0)
+ L=(00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000)
+ (TRBLNT KE ON MDL SFC) SCAL=( 3.0)
+ L=(00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000)
+ (RCHDSN NO ON MDL SFC) SCAL=( 3.0)
+ L=(00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000)
+ (RAIN ON MDL SFCS ) SCAL=( 6.0)
+ L=(00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000)
+ (SNOW ON MDL SFCS ) SCAL=( 6.0)
+ L=(00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000)
+ (F_RimeF ON MDL SFCS ) SCAL=( 3.0)
+ L=(00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000)
+ (CONDENSATE MDL SFCS ) SCAL=( 3.0)
+ L=(00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000)
+ (RADAR REFL MDL SFCS ) SCAL=( 4.0)
+ L=(11000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000)
+ (CLD WTR ON MDL SFCS ) SCAL=( 6.0)
+ L=(00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000)
+ (CLD ICE ON MDL SFCS ) SCAL=( 6.0)
+ L=(00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000)
+ (GRAUPEL ON MDL SFCS ) SCAL=( 6.0)
+ L=(00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000)
+ (CLD FRAC ON MDL SFCS) SCAL=( 3.0)
+ L=(00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000)
+ (MASTER LENGTH SCALE ) SCAL=( 3.0)
+ L=(00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000)
+ (ASYMPT MSTR LEN SCL ) SCAL=( 3.0)
+ L=(00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000)
+ (HEIGHT OF PRESS SFCS) SCAL=( 6.0)
+ L=(00000 01001 01010 10101 01010 10101 01010 11111 11111 10000 00000 00000 00000 00000)
+ (TEMP ON PRESS SFCS ) SCAL=( 4.0)
+ L=(00000 01001 01010 10101 01010 10101 01010 11111 11111 10000 00000 00000 00000 00000)
+ (POT TEMP ON P SFCS ) SCAL=( 4.0)
+ L=(00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000)
+ (DWPT TEMP ON P SFCS ) SCAL=( 4.0)
+ L=(00000 01001 01010 10101 01010 10101 01010 11111 11111 10000 00000 00000 00000 00000)
+ (SPEC HUM ON P SFCS ) SCAL=( 4.0)
+ L=(00000 01001 01010 10101 01010 10101 01010 11111 11111 10000 00000 00000 00000 00000)
+ (REL HUMID ON P SFCS ) SCAL=( 4.0)
+ L=(00000 01001 01010 10101 01010 10101 01010 11111 11111 10000 00000 00000 00000 00000)
+ (MST CNVG ON P SFCS ) SCAL=( 3.0)
+ L=(00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000)
+ (U WIND ON PRESS SFCS) SCAL=( 4.0)
+ L=(00000 01001 01010 10101 01010 10101 01010 11111 11111 10000 00000 00000 00000 00000)
+ (V WIND ON PRESS SFCS) SCAL=( 4.0)
+ L=(00000 01001 01010 10101 01010 10101 01010 11111 11111 10000 00000 00000 00000 00000)
+ (W WIND ON P SFCS ) SCAL=( 5.0)
+ L=(00000 01001 01010 10101 01010 10101 01010 11111 11111 10000 00000 00000 00000 00000)
+ (OMEGA ON PRESS SFCS ) SCAL=( 5.0)
+ L=(00000 01001 01010 10101 01010 10101 01010 11111 11111 10000 00000 00000 00000 00000)
+ (ABS VORT ON P SFCS ) SCAL=( 3.0)
+ L=(00000 01001 01010 10101 01010 10101 01010 11111 11111 10000 00000 00000 00000 00000)
+ (STRMFUNC ON P SFCS ) SCAL=( 3.0)
+ L=(00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000)
+ (TRBLNT KE ON P SFCS ) SCAL=( 3.0)
+ L=(00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000)
+ (CLOUD ICE ON P SFCS ) SCAL=( 6.0)
+ L=(00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000)
+ (CLOUD WATR ON P SFCS) SCAL=( 6.0)
+ L=(00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000)
+ (RAIN ON P SFCS ) SCAL=( 6.0)
+ L=(00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000)
+ (SNOW ON P SFCS ) SCAL=( 6.0)
+ L=(00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000)
+ (F_RimeF ON P SFCS ) SCAL=( 3.0)
+ L=(00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000)
+ (RADAR REFL ON P SFCS) SCAL=( 4.0)
+ L=(00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000)
+ (GRAUPEL ON P SFCS ) SCAL=( 6.0)
+ L=(10000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000)
+ (MAPS SLP ) SCAL=( 6.0)
+ L=(10000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000)
+ (MESINGER MEAN SLP ) SCAL=( 6.0)
+ L=(10000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000)
+ (SHUELL MEAN SLP ) SCAL=( 6.0)
+ L=(10000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000)
+ (SHELTER PRESSURE ) SCAL=( 6.0)
+ L=(00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000)
+ (SHELTER TEMPERATURE ) SCAL=( 5.0)
+ L=(10000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000)
+ (SHELTER SPEC HUMID ) SCAL=( 3.0)
+ L=(10000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000)
+ (SHELTER DEWPOINT ) SCAL=( 5.0)
+ L=(10000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000)
+ (SHELTER REL HUMID ) SCAL=( 4.0)
+ L=(10000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000)
+ (SHELTER MIX RATIO ) SCAL=( 4.0)
+ L=(00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000)
+ (U WIND AT ANEMOM HT ) SCAL=( 4.0)
+ L=(10000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000)
+ (V WIND AT ANEMOM HT ) SCAL=( 4.0)
+ L=(10000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000)
+ (SURFACE PRESSURE ) SCAL=( 6.0)
+ L=(10000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000)
+ (SURFACE HEIGHT ) SCAL=( 6.0)
+ L=(10000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000)
+ (SURFACE POT TEMP ) SCAL=( 5.0)
+ L=(00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000)
+ (SURFACE SPEC HUMID ) SCAL=( 3.0)
+ L=(00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000)
+ (SURFACE DEWPOINT ) SCAL=( 4.0)
+ L=(00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000)
+ (SURFACE REL HUMID ) SCAL=( 4.0)
+ L=(00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000)
+ (SFC (SKIN) TEMPRATUR) SCAL=( 5.0)
+ L=(10000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000)
+ (BOTTOM SOIL TEMP ) SCAL=( 5.0)
+ L=(10000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000)
+ (SOIL TEMPERATURE ) SCAL=( 3.0)
+ L=(11111 10000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000)
+ (SOIL MOISTURE ) SCAL=( 3.0)
+ L=(11111 10000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000)
+ (LIQUID SOIL MOISTURE) SCAL=( 3.0)
+ L=(11110 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000)
+ (TOTAL SOIL MOISTURE ) SCAL=( 3.0)
+ L=(10000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000)
+ (PLANT CANOPY SFC WTR) SCAL=( 3.0)
+ L=(00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000)
+ (SNOW WATER EQUIVALNT) SCAL=( 3.0)
+ L=(10000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000)
+ (PERCENT SNOW COVER ) SCAL=( 3.0)
+ L=(10000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000)
+ (SFC EXCHANGE COEF ) SCAL=( 3.0)
+ L=(00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000)
+ (GREEN VEG COVER ) SCAL=( 3.0)
+ L=(10000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000)
+ (VEGETATION TYPE ) SCAL=( 3.0)
+ L=(00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000)
+ (SOIL TYPE ) SCAL=( 3.0)
+ L=(00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000)
+ (SLOPE TYPE ) SCAL=( 3.0)
+ L=(00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000)
+ (SNOW FREE ALBEDO ) SCAL=( 3.0)
+ L=(00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000)
+ (MAXIMUM SNOW ALBEDO ) SCAL=( 3.0)
+ L=(00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000)
+ (CANOPY CONDUCTANCE ) SCAL=( 3.0)
+ L=(00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000)
+ (CANOPY COND SOLAR ) SCAL=( 3.0)
+ L=(00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000)
+ (CANOPY COND TEMP ) SCAL=( 5.0)
+ L=(00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000)
+ (CANOPY COND HUMID ) SCAL=( 3.0)
+ L=(00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000)
+ (CANOPY COND SOILM ) SCAL=( 3.0)
+ L=(00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000)
+ (SOIL MOIST REFERENCE) SCAL=( 3.0)
+ L=(00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000)
+ (SOIL MOIST POROSITY ) SCAL=( 3.0)
+ L=(00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000)
+ (NO OF ROOT LAYERS ) SCAL=( 1.0)
+ L=(00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000)
+ (MIN STOMATAL RESIST ) SCAL=( 3.0)
+ L=(00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000)
+ (SNOW DEPTH ) SCAL=( 6.0)
+ L=(10000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000)
+ (AIR DRY SOIL MOIST ) SCAL=( 3.0)
+ L=(00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000)
+ (SOIL MOIST WILT PT ) SCAL=( 3.0)
+ L=(00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000)
+ (SOIL MOISTURE AVAIL ) SCAL=( 3.0)
+ L=(10000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000)
+ (INST GROUND HEAT FLX) SCAL=( 4.0)
+ L=(10000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000)
+ (LIFTED INDEX--SURFCE) SCAL=( 3.0)
+ L=(10000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000)
+ (LIFTED INDEX--BEST ) SCAL=( 3.0)
+ L=(10000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000)
+ (LIFTED INDEX--BNDLYR) SCAL=( 3.0)
+ L=(10000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000)
+ (CNVCT AVBL POT ENRGY) SCAL=( 3.0)
+ L=(11110 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000)
+ (CNVCT INHIBITION ) SCAL=( 3.0)
+ L=(11110 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000)
+ (PRECIPITABLE WATER ) SCAL=( 3.0)
+ L=(10000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000)
+ (STORM REL HELICITY ) SCAL=( 3.0)
+ L=(10000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000)
+ (ACM TOTAL PRECIP ) SCAL=( 5.0)
+ L=(10000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000)
+ (ACM CONVCTIVE PRECIP) SCAL=( 5.0)
+ L=(10000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000)
+ (ACM GRD SCALE PRECIP) SCAL=( 5.0)
+ L=(10000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000)
+ (ACM GRD SCALE SW ICE) SCAL=( 4.0)
+ L=(10000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000)
+ (ACM SNOWFALL ) SCAL=( 5.0)
+ L=(10000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000)
+ (BUCKET SNOW PRECIP ) SCAL=( 5.0)
+ L=(00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000)
+ (BUCKET TOTAL PRECIP ) SCAL=( 5.0)
+ L=(00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000)
+ (BUCKET CONV PRECIP ) SCAL=( 5.0)
+ L=(00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000)
+ (BUCKET GRDSCALE PRCP) SCAL=( 5.0)
+ L=(00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000)
+ (ACM SNOW TOTAL/MELT ) SCAL=( 4.0)
+ L=(10000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000)
+ (ACM STORM SFC RNOFF ) SCAL=( 4.0)
+ L=(10000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000)
+ (ACM BSFL-GDWR RNOFF ) SCAL=( 4.0)
+ L=(00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000)
+ (INSTANT PRECIP TYPE ) SCAL=( 1.0)
+ L=(10000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000)
+ (GSD PRECIP TYPE ) SCAL=( 1.0)
+ L=(10000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000)
+ (INSTANT PRECIP RATE ) SCAL=( 3.0)
+ L=(10000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000)
+ (CONV PRECIP RATE ) SCAL=( 3.0)
+ L=(10000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000)
+ (FROZEN FRAC CLD SCHM) SCAL=( 4.0)
+ L=(00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000)
+ (SEA SFC TEMPERATURE ) SCAL=( 5.0)
+ L=(10000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000)
+ (LOW CLOUD FRACTION ) SCAL=( 3.0)
+ L=(10000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000)
+ (MID CLOUD FRACTION ) SCAL=( 3.0)
+ L=(10000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000)
+ (HIGH CLOUD FRACTION ) SCAL=( 3.0)
+ L=(10000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000)
+ (AVG TOTAL CLD FRAC ) SCAL=( 3.0)
+ L=(10000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000)
+ (AVG STRAT CLD FRAC ) SCAL=( 3.0)
+ L=(10000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000)
+ (AVG CNVCT CLD FRAC ) SCAL=( 3.0)
+ L=(10000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000)
+ (GSD CLD BOT HEIGHT ) SCAL=( 6.0)
+ L=(10000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000)
+ (GSD CLD TOP HEIGHT ) SCAL=( 6.0)
+ L=(10000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000)
+ (CLOUD BOT PRESSURE ) SCAL=( 6.0)
+ L=(10000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000)
+ (CLOUD TOP PRESSURE ) SCAL=( 6.0)
+ L=(10000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000)
+ (CLOUD TOP TEMPS ) SCAL=( 5.0)
+ L=(10000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000)
+ (CLOUD BOTTOM HEIGHT ) SCAL=( 6.0)
+ L=(10000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000)
+ (CLOUD TOP HEIGHT ) SCAL=( 6.0)
+ L=(10000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000)
+ (CONV CLOUD BOT PRESS) SCAL=( 6.0)
+ L=(00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000)
+ (CONV CLOUD TOP PRESS) SCAL=( 6.0)
+ L=(00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000)
+ (SHAL CU CLD BOT PRES) SCAL=( 6.0)
+ L=(00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000)
+ (SHAL CU CLD TOP PRES) SCAL=( 6.0)
+ L=(00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000)
+ (DEEP CU CLD BOT PRES) SCAL=( 6.0)
+ L=(00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000)
+ (DEEP CU CLD TOP PRES) SCAL=( 6.0)
+ L=(00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000)
+ (GRID CLOUD BOT PRESS) SCAL=( 6.0)
+ L=(00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000)
+ (GRID CLOUD TOP PRESS) SCAL=( 6.0)
+ L=(00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000)
+ (CONV CLOUD FRACTION ) SCAL=( 3.0)
+ L=(10000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000)
+ (MAX WIND PRESS LEVEL) SCAL=( 3.0)
+ L=(00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000)
+ (MAX WIND HGHT LEVEL ) SCAL=( 3.0)
+ L=(00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000)
+ (U COMP MAX WIND ) SCAL=( 5.0)
+ L=(00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000)
+ (V COMP MAX WIND ) SCAL=( 5.0)
+ L=(00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000)
+ (PBL HEIGHT ) SCAL=( 5.0)
+ L=(10000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000)
+ (COMPOSITE RADAR REFL) SCAL=( 4.0)
+ L=(10000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000)
+ (RADAR REFL AGL ) SCAL=( 4.0)
+ L=(11000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000)
+ (VISIBILITY ) SCAL=( 2.7)
+ L=(10000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000)
+ (GSD VISIBILITY ) SCAL=( 2.7)
+ L=(10000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000)
+ (LCL AGL HEIGHT ) SCAL=( 5.0)
+ L=(00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000)
+ (LCL PRESSURE ) SCAL=( 6.0)
+ L=(00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000)
+ (AVE GRDSCL RN TMPTDY) SCAL=( 3.0)
+ L=(00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000)
+ (AVE CNVCT RN TMPTDY ) SCAL=( 2.7)
+ L=(00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000)
+ (RADFLX CNVG TMP TNDY) SCAL=( 3.0)
+ L=(00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000)
+ (SW RAD TEMP TNDY ) SCAL=( 3.0)
+ L=(00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000)
+ (LW RAD TEMP TNDY ) SCAL=( 3.0)
+ L=(00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000)
+ (INSTN OUT SFC SW RAD) SCAL=( 4.0)
+ L=(10000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000)
+ (INSTN OUT SFC LW RAD) SCAL=( 4.0)
+ L=(10000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000)
+ (AVE INCMG SFC SW RAD) SCAL=( 4.0)
+ L=(10000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000)
+ (AVE INCMG SFC LW RAD) SCAL=( 4.0)
+ L=(10000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000)
+ (AVE OUTGO SFC SW RAD) SCAL=( 4.0)
+ L=(10000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000)
+ (AVE OUTGO SFC LW RAD) SCAL=( 4.0)
+ L=(10000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000)
+ (BRIGHTNESS TEMP ) SCAL=( 5.0)
+ L=(00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000)
+ (BRIGHTNESS TEMP NCAR) SCAL=( 5.0)
+ L=(10000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000)
+ (INSTN INC SFC SW RAD) SCAL=( 4.0)
+ L=(10000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000)
+ (INSTN INC SFC LW RAD) SCAL=( 4.0)
+ L=(10000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000)
+ (INSTN CLR INC SFC SW) SCAL=( 4.0)
+ L=(10000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000)
+ (ROUGHNESS LENGTH ) SCAL=( 2.7)
+ L=(10000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000)
+ (FRICTION VELOCITY ) SCAL=( 3.0)
+ L=(10000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000)
+ (SFC DRAG COEFFICIENT) SCAL=( 3.0)
+ L=(00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000)
+ (SFC U WIND STRESS ) SCAL=( 3.0)
+ L=(00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000)
+ (SFC V WIND STRESS ) SCAL=( 3.0)
+ L=(00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000)
+ (AVE SFC SENHEAT FX ) SCAL=( 4.0)
+ L=(10000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000)
+ (AVE GROUND HEAT FX ) SCAL=( 4.0)
+ L=(10000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000)
+ (AVE SNO PHSCNG HT FX) SCAL=( 4.0)
+ L=(00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000)
+ (AVE SFC LATHEAT FX ) SCAL=( 4.0)
+ L=(10000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000)
+ (AVE SFC MOMENTUM FX ) SCAL=( 4.0)
+ L=(10000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000)
+ (ACC SFC EVAPORATION ) SCAL=( 4.0)
+ L=(10000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000)
+ (ACC POT EVAPORATION ) SCAL=( 4.0)
+ L=(10000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000)
+ (INST SFC SENHEAT FX ) SCAL=( 3.0)
+ L=(10000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000)
+ (INST GROUND HEAT FLX) SCAL=( 3.0)
+ L=(00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000)
+ (INST SFC LATHEAT FX ) SCAL=( 3.0)
+ L=(10000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000)
+ (LATITUDE ) SCAL=( 4.0)
+ L=(10000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000)
+ (LONGITUDE ) SCAL=( 4.0)
+ L=(10000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000)
+ (LAND/SEA MASK ) SCAL=( 1.0)
+ L=(10000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000)
+ (SEA ICE MASK ) SCAL=( 1.0)
+ L=(10000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000)
+ (SFC MIDDAY ALBEDO ) SCAL=( 3.0)
+ L=(00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000)
+ (LIFT PCL LVL PRESS ) SCAL=( 3.0)
+ L=(00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000)
+ (PRESS AT TROPOPAUSE ) SCAL=( 6.0)
+ L=(00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000)
+ (HEIGHT AT TROPOPAUSE) SCAL=( 3.0)
+ L=(10000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000)
+ (TEMP AT TROPOPAUSE ) SCAL=( 5.0)
+ L=(00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000)
+ (POTENTL TEMP AT TROP) SCAL=( 5.0)
+ L=(00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000)
+ (U WIND AT TROPOPAUSE) SCAL=( 5.0)
+ L=(00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000)
+ (V WIND AT TROPOPAUSE) SCAL=( 5.0)
+ L=(00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000)
+ (SHEAR AT TROPOPAUSE ) SCAL=( 3.0)
+ L=(00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000)
+ (SPE HUM AT FD HEIGHT) SCAL=( 5.0)
+ L=(00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000)
+ (TEMP AT FD HEIGHTS ) SCAL=( 5.0)
+ L=(00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000)
+ (U WIND AT FD HEIGHTS) SCAL=( 5.0)
+ L=(00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000)
+ (V WIND AT FD HEIGHTS) SCAL=( 5.0)
+ L=(00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000)
+ (HEIGHT OF FRZ LVL ) SCAL=( 6.0)
+ L=(10000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000)
+ (REL HUMID AT FRZ LVL) SCAL=( 4.0)
+ L=(00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000)
+ (HIGHEST FREEZE LVL ) SCAL=( 5.0)
+ L=(10000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000)
+ (PRESS IN BNDRY LYR ) SCAL=( 6.0)
+ L=(00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000)
+ (TEMP IN BNDRY LYR ) SCAL=( 3.0)
+ L=(00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000)
+ (POT TMP IN BNDRY LYR) SCAL=( 3.0)
+ L=(00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000)
+ (DWPT IN BNDRY LYR ) SCAL=( 3.0)
+ L=(00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000)
+ (SPC HUM IN BNDRY LYR) SCAL=( 3.0)
+ L=(10000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000)
+ (REL HUM IN BNDRY LYR) SCAL=( 3.0)
+ L=(00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000)
+ (MST CNV IN BNDRY LYR) SCAL=( 3.0)
+ L=(00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000)
+ (P WATER IN BNDRY LYR) SCAL=( 3.0)
+ L=(10000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000)
+ (U WIND IN BNDRY LYR ) SCAL=( 5.0)
+ L=(10000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000)
+ (V WIND IN BNDRY LYR ) SCAL=( 5.0)
+ L=(10000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000)
+ (OMEGA IN BNDRY LYR ) SCAL=( 5.0)
+ L=(00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000)
+ (MAX 10m WIND SPEED ) SCAL=( 4.0)
+ L=(00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000)
+ (MAX UPDRAFT VERT VEL) SCAL=( 3.0)
+ L=(00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000)
+ (MAX DNDRAFT VERT VEL) SCAL=( 3.0)
+ L=(00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000)
+ (MAX 1km REFLECTIVITY) SCAL=( 4.0)
+ L=(00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000)
+ (MAX UPDRAFT HELICITY) SCAL=( 3.0)
+ L=(00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000)
+ (MEAN VERT VEL ) SCAL=( 3.0)
+ L=(00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000)
+ (MAX VERT INTEG GRAUP) SCAL=( 3.0)
+ L=(00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000)
+ (LCL AGL HEIGHT ) SCAL=( 5.0)
+ L=(00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000)
+ (U COMP STORM MOTION ) SCAL=( 4.0)
+ L=(00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000)
+ (V COMP STORM MOTION ) SCAL=( 4.0)
+ L=(00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000)
+ (U COMP 0-1 KM SHEAR ) SCAL=( 4.0)
+ L=(00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000)
+ (V COMP 0-1 KM SHEAR ) SCAL=( 4.0)
+ L=(00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000)
+ (U COMP 0-6 KM SHEAR ) SCAL=( 4.0)
+ L=(00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000)
+ (V COMP 0-6 KM SHEAR ) SCAL=( 4.0)
+ L=(00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000)
+ (SFC WIND GUST ) SCAL=( 3.0)
+ L=(10000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000)
+ (AVE OUTGO TOA SW RAD) SCAL=( 4.0)
+ L=(00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000)
+ (AVE OUTGO TOA LW RAD) SCAL=( 4.0)
+ L=(00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000)
+ (INSTN OUT TOA LW RAD) SCAL=( 3.0)
+ L=(10000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000)
+ (TOTAL CLD FRACTION ) SCAL=( 3.0)
+ L=(10000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000)
+ (TOTAL COLUMN CLD WTR) SCAL=( 5.0)
+ L=(10000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000)
+ (TOTAL COLUMN CLD ICE) SCAL=( 5.0)
+ L=(10000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000)
+ (TOTAL COLUMN RAIN ) SCAL=( 5.0)
+ L=(10000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000)
+ (TOTAL COLUMN SNOW ) SCAL=( 5.0)
+ L=(10000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000)
+ (TOTAL COL CONDENSATE) SCAL=( 5.0)
+ L=(10000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000)
+ (TOTAL COLD LIQUID ) SCAL=( 5.0)
+ L=(00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000)
+ (TOTAL MELTING ICE ) SCAL=( 5.0)
+ L=(00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000)
+ (CEILING ) SCAL=( 5.0)
+ L=(10000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000)
+ (EMISSIVITY ) SCAL=( 4.0)
+ L=(00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000)
+ (GOES TB - CH 2 ) SCAL=( 4.0)
+ L=(00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000)
+ (GOES TB - CH 3 ) SCAL=( 4.0)
+ L=(00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000)
+ (GOES TB - CH 4 ) SCAL=( 4.0)
+ L=(00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000)
+ (GOES TB - CH 5 ) SCAL=( 4.0)
+ L=(00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000)
+ (PV ON THETA SFCS ) SCAL=( 4.0)
+ L=(10000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000)
+***DONE WITH THIS GRID***
+
diff --git a/sorc/ncep_post.fd/CALRAD_WCLOUD_newcrtm.f b/sorc/ncep_post.fd/CALRAD_WCLOUD_newcrtm.f
index c5e459ffb..8c09ea3d4 100644
--- a/sorc/ncep_post.fd/CALRAD_WCLOUD_newcrtm.f
+++ b/sorc/ncep_post.fd/CALRAD_WCLOUD_newcrtm.f
@@ -320,7 +320,7 @@ SUBROUTINE CALRAD_WCLOUD
.or. iget(874) > 0 .or. iget(875) > 0 .or. iget(876) > 0 &
.or. iget(877) > 0 .or. iget(878) > 0 .or. iget(879) > 0 &
.or. iget(880) > 0 .or. iget(881) > 0 .or. iget(882) > 0 &
- .or. post_abig16 .or. post_abig17 > 0 ) then
+ .or. post_abig16 .or. post_abig17 ) then
! specify numbers of cloud species
! Thompson==8, Ferrier==5,95, WSM6==6, Lin==2
@@ -437,7 +437,7 @@ SUBROUTINE CALRAD_WCLOUD
endif
! SEVIRI
if(iget(876)>0)then
- call select_channels_L(channelinfo(15),8,(/ 1,2,3,4,5,6,7,8 /),lvls(1:7,iget(876)),iget(876))
+ call select_channels_L(channelinfo(15),8,(/ 1,2,3,4,5,6,7,8 /),lvls(1:8,iget(876)),iget(876))
endif
! MT2
if(iget(860)>0)then
diff --git a/sorc/ncep_post.fd/CLDRAD.f b/sorc/ncep_post.fd/CLDRAD.f
index 736ad5c6d..541927300 100644
--- a/sorc/ncep_post.fd/CLDRAD.f
+++ b/sorc/ncep_post.fd/CLDRAD.f
@@ -5137,52 +5137,52 @@ SUBROUTINE CLDRAD
ENDIF ! END OF LAEROPT IF-BLOCK
-#if 0
-!! Multiply by 1.E-6 to revert these fields back
- IF (IGET(659).GT.0) THEN
- GRID1=SPVAL
-!$omp parallel do private(i,j)
- DO J = JSTA,JEND
- DO I = 1,IM
- GRID1(I,J) = DUEM(I,J,1)*1.E-6
- DO K=2,NBIN_DU
- GRID1(I,J) = GRID1(I,J) + DUEM(I,J,K)*1.E-6
- END DO
- END DO
- END DO
- ID(1:25) = 0
- ID(02)=141
- if(grib=='grib1') then
- CALL GRIBIT(IGET(659),LVLS(1,IGET(659)),GRID1,IM,JM)
- elseif(grib=='grib2') then
- cfld=cfld+1
- fld_info(cfld)%ifld=IAVBLFLD(IGET(659))
- datapd(1:im,1:jend-jsta+1,cfld)=GRID1(1:im,jsta:jend)
- endif
- ENDIF
-
- IF (IGET(660).GT.0) THEN
- GRID1=SPVAL
-!$omp parallel do private(i,j)
- DO J = JSTA,JEND
- DO I = 1,IM
- GRID1(I,J) = DUSD(I,J,1)*1.E-6
- DO K=2,NBIN_DU
- GRID1(I,J) = GRID1(I,J)+ DUSD(I,J,K)*1.E-6
- END DO
- END DO
- END DO
- ID(1:25) = 0
- ID(02)=141
- if(grib=='grib1') then
- CALL GRIBIT(IGET(660),LVLS(1,IGET(660)),GRID1,IM,JM)
- elseif(grib=='grib2') then
- cfld=cfld+1
- fld_info(cfld)%ifld=IAVBLFLD(IGET(660))
- datapd(1:im,1:jend-jsta+1,cfld)=GRID1(1:im,jsta:jend)
- endif
- ENDIF
-#endif
+!#if 0
+!!! Multiply by 1.E-6 to revert these fields back
+! IF (IGET(659).GT.0) THEN
+! GRID1=SPVAL
+!!$omp parallel do private(i,j)
+! DO J = JSTA,JEND
+! DO I = 1,IM
+! GRID1(I,J) = DUEM(I,J,1)*1.E-6
+! DO K=2,NBIN_DU
+! GRID1(I,J) = GRID1(I,J) + DUEM(I,J,K)*1.E-6
+! END DO
+! END DO
+! END DO
+! ID(1:25) = 0
+! ID(02)=141
+! if(grib=='grib1') then
+! CALL GRIBIT(IGET(659),LVLS(1,IGET(659)),GRID1,IM,JM)
+! elseif(grib=='grib2') then
+! cfld=cfld+1
+! fld_info(cfld)%ifld=IAVBLFLD(IGET(659))
+! datapd(1:im,1:jend-jsta+1,cfld)=GRID1(1:im,jsta:jend)
+! endif
+! ENDIF
+!
+! IF (IGET(660).GT.0) THEN
+! GRID1=SPVAL
+!!$omp parallel do private(i,j)
+! DO J = JSTA,JEND
+! DO I = 1,IM
+! GRID1(I,J) = DUSD(I,J,1)*1.E-6
+! DO K=2,NBIN_DU
+! GRID1(I,J) = GRID1(I,J)+ DUSD(I,J,K)*1.E-6
+! END DO
+! END DO
+! END DO
+! ID(1:25) = 0
+! ID(02)=141
+! if(grib=='grib1') then
+! CALL GRIBIT(IGET(660),LVLS(1,IGET(660)),GRID1,IM,JM)
+! elseif(grib=='grib2') then
+! cfld=cfld+1
+! fld_info(cfld)%ifld=IAVBLFLD(IGET(660))
+! datapd(1:im,1:jend-jsta+1,cfld)=GRID1(1:im,jsta:jend)
+! endif
+! ENDIF
+!#endif
!! ADD DUST DRY DEPOSITION FLUXES (kg/m2/sec)
!
! IF (IGET(661).GT.0) THEN
diff --git a/sorc/ncep_post.fd/INITPOST_NMM_BIN_MPIIO_READ.f b/sorc/ncep_post.fd/INITPOST_NMM_BIN_MPIIO_READ.f
deleted file mode 100644
index 7d35c74ed..000000000
--- a/sorc/ncep_post.fd/INITPOST_NMM_BIN_MPIIO_READ.f
+++ /dev/null
@@ -1,585 +0,0 @@
-!
-! Public domain.
-!
-
-!>
-!! Module to retrieve a variable from a WRF I/O Internal format file.
-!!
-!! This module uses an index generated by module_io_int_idx.
-!
-!! If the MPI implementations actually supported the external32
-!! view on a file we could simply call:
-!!
-!! MPI_File_set_view(..., "external32", ...)
-!!
-!! However most do not. Instead we have do a native view and then
-!! do a byte order rearrangement.
-!!
-!! Usage consists of:
-!! 1) Creating an index of records in the file
-!! 2) Opening the file with MPI
-!! 3) Retrieving the data
-!! 4) Closing the file with MPI
-!!
-!! Example:
-!!
-!! USE module_io_int_idx, only: io_int_index, r_info
-!! USE module_io_int_read, only: io_int_fetch_data
-!!
-!! type(r_info), pointer :: r(:) => NULL() ! Define the array of records
-!!
-!! call io_int_index(filename, r, ierr) ! Get an index of reocrds
-!!
-!! call mpi_file_open(mpi_comm_world, trim(filename), &
-!! mpi_mode_rdonly, mpi_info_null, &
-!! iunit, ierr) ! MPI Open the file
-!!
-!! call io_int_fetch_data(iunit, r, 'TRUELAT1', garb, ierr)
-!! ! Get an record (into garb)
-!!
-!! call mpi_file_close(iunit, ierr) ! Close the file
-!!
-
-module INITPOST_NMM_BIN_MPIIO_READ
-
- use module_io_int_idx, only: io_int_loc, r_info
- use, intrinsic :: iso_c_binding, only: c_int32_t
-
- implicit none
-
- private
- public :: fetch_data
-
- interface
- integer(c_int32_t) &
- pure function ntohl(netlong) &
- bind(c, name="ntohl")
- import :: c_int32_t
- integer(c_int32_t), value, intent(in) :: netlong
- end function
- end interface
- interface fetch_data
- module procedure read_i0, read_i1, read_i2, read_i3, &
- read_r0, read_r1, read_r2, read_r3, &
- read_c1
- end interface fetch_data
-
- include "mpif.h"
-
-contains
-
- !>
- !! Read a single integer
- !
- subroutine read_i0(ifd, records, varname, pos, n, dst, ierr)
-
- integer, intent(in) :: ifd
- type(r_info), pointer, intent(in) :: records(:)
- character(len=*), intent(in) :: varname
- integer(kind=mpi_offset_kind), optional, intent(in) :: pos
- integer, optional, intent(in) :: n
- integer, intent(out) :: dst
- integer, intent(out) :: ierr
-
- integer(kind=mpi_offset_kind) :: offset
- integer :: count
- integer :: tmp
-
- call io_int_loc(varname, records, offset, count, ierr)
- if (ierr .ne. 0) then
- return
- end if
-
- if (present(pos)) then
- offset = pos
- end if
-
- call mpi_file_read_at(ifd, offset, tmp, 1, &
- mpi_integer4, mpi_status_ignore, ierr)
- if (ierr .ne. 0) then
- write(0,*) 'MPI IO: Unable to read ', varname
- return
- end if
- dst = ntohl(tmp)
-
- end subroutine read_i0
-
- !>
- !! Read a 1D integer array.
- !
- subroutine read_i1(ifd, records, varname, pos, n, dst, ierr)
-
- integer, intent(in) :: ifd
- type(r_info), pointer, intent(in) :: records(:)
- character(len=*), intent(in) :: varname
- integer(kind=mpi_offset_kind), optional, intent(in) :: pos
- integer, optional, intent(in) :: n
- integer, intent(inout) :: dst(:)
- integer, intent(out) :: ierr
-
- integer(kind=mpi_offset_kind) :: offset
- integer :: count
- integer :: num
- integer :: i
- integer :: its, ite
- integer, allocatable, dimension(:) :: tmp
-
- call io_int_loc(varname, records, offset, count, ierr)
- if (ierr .ne. 0) then
- return
- end if
-
- if (present(pos)) then
- offset = pos
- end if
- if (present(n)) then
- num = n
- its = 1
- ite = num
- else
- its = lbound(dst,1)
- ite = ubound(dst,1)
- num = ite - its + 1
- end if
-
- allocate(tmp(its:ite), stat=ierr)
- if (ierr .ne. 0) then
- write(0,*) 'Unable to allocate a temporary array'
- return
- end if
- tmp = 0
-
- call mpi_file_read_at(ifd, offset, tmp, num, &
- mpi_integer4, mpi_status_ignore, ierr)
- if (ierr .ne. 0) then
- write(0,*) 'MPI IO: Unable to read ', varname
- return
- end if
-
- forall(i=its:ite)
- dst(i) = transfer(ntohl(tmp(i)), 1.0)
- end forall
-
- deallocate(tmp)
-
- end subroutine read_i1
-
- !>
- !! Read a 2D integer array.
- !
- subroutine read_i2(ifd, records, varname, pos, n, dst, ierr)
-
- integer, intent(in) :: ifd
- type(r_info), pointer, intent(in) :: records(:)
- character(len=*), intent(in) :: varname
- integer(kind=mpi_offset_kind), optional, intent(in) :: pos
- integer, optional, intent(in) :: n
- integer, intent(inout) :: dst(:,:)
- integer, intent(out) :: ierr
-
- integer(kind=mpi_offset_kind) :: offset
- integer :: count
- integer :: num
- integer :: i, j
- integer :: its, ite, jts, jte
- integer, allocatable, dimension(:,:) :: tmp
-
- call io_int_loc(varname, records, offset, count, ierr)
- if (ierr .ne. 0) then
- return
- end if
-
- if (present(pos)) then
- offset = pos
- end if
-
- its = lbound(dst,1)
- ite = ubound(dst,1)
- jts = lbound(dst,2)
- jte = ubound(dst,2)
- num = (ite - its + 1) * (jte - jts +1)
-
- allocate(tmp(its:ite, jts:jte), stat=ierr)
- if (ierr .ne. 0) then
- write(0,*) 'Unable to allocate a temporary array'
- return
- end if
- tmp = 0
-
- if (present(n)) then
- num = n
- end if
-
- call mpi_file_read_at(ifd, offset, tmp, num, &
- mpi_integer4, mpi_status_ignore, ierr)
- if (ierr .ne. 0) then
- write(0,*) 'MPI IO: Unable to read ', varname
- return
- end if
-
- forall(i=its:ite, j=jts:jte)
- dst(i,j) = transfer(ntohl(tmp(i,j)), 1.0)
- end forall
-
- deallocate(tmp)
-
- end subroutine read_i2
-
- !>
- !! Read a 3D integer array
- !
- subroutine read_i3(ifd, records, varname, pos, n, dst, ierr)
-
- integer, intent(in) :: ifd
- type(r_info), pointer, intent(in) :: records(:)
- character(len=*), intent(in) :: varname
- integer(kind=mpi_offset_kind), optional, intent(in) :: pos
- integer, optional, intent(in) :: n
- integer, intent(inout) :: dst(:,:,:)
- integer, intent(out) :: ierr
-
- integer(kind=mpi_offset_kind) :: offset
- integer :: count
- integer :: num
- integer :: i, j, k
- integer :: its, ite, jts, jte, kts, kte
- integer, allocatable, dimension(:,:,:) :: tmp
-
- call io_int_loc(varname, records, offset, count, ierr)
- if (ierr .ne. 0) then
- return
- end if
-
- if (present(pos)) then
- offset = pos
- end if
-
- its = lbound(dst,1)
- ite = ubound(dst,1)
- jts = lbound(dst,2)
- jte = ubound(dst,2)
- kts = lbound(dst,3)
- kte = ubound(dst,3)
- num = (ite - its + 1) * (jte - jts + 1) * (kte - kts + 1)
-
- allocate(tmp(its:ite, jts:jte, kts:kte), stat=ierr)
- if (ierr .ne. 0) then
- write(0,*) 'Unable to allocate a temporary array'
- return
- end if
- tmp = 0
-
- if (present(n)) then
- num = n
- end if
-
- call mpi_file_read_at(ifd, offset, tmp, num, &
- mpi_integer4, mpi_status_ignore, ierr)
-
- if (ierr .ne. 0) then
- write(0,*) 'MPI IO: Unable to read ', varname
- return
- end if
-
- forall(i=its:ite, j=jts:jte, k=kts:kte)
- dst(i,j,k) = transfer(ntohl(tmp(i,j,k)), 1.0)
- end forall
-
- deallocate(tmp)
-
- end subroutine read_i3
-
- !>
- !! Read a single real.
- !
- subroutine read_r0(ifd, records, varname, pos, n, dst, ierr)
-
- integer, intent(in) :: ifd
- type(r_info), pointer, intent(in) :: records(:)
- character(len=*), intent(in) :: varname
- integer(kind=mpi_offset_kind), optional, intent(in) :: pos
- integer, optional, intent(in) :: n
- real, intent(out) :: dst
- integer, intent(out) :: ierr
-
- integer(kind=mpi_offset_kind) :: offset
- integer :: count
- integer :: tmp
-
- call io_int_loc(varname, records, offset, count, ierr)
- if (ierr .ne. 0) then
- return
- end if
- if (present(pos)) then
- offset = pos
- end if
-
-
- call mpi_file_read_at(ifd, offset, tmp, 1, &
- mpi_integer4, mpi_status_ignore, ierr)
- if (ierr .ne. 0) then
- write(0,*) 'MPI IO: Unable to read ', varname
- return
- end if
- dst = transfer(ntohl(tmp), 1.0)
-
- end subroutine read_r0
-
- !>
- !! Read a 1D real array.
- !
- subroutine read_r1(ifd, records, varname, pos, n, dst, ierr)
-
- integer, intent(in) :: ifd
- type(r_info), pointer, intent(in) :: records(:)
- character(len=*), intent(in) :: varname
- integer(kind=mpi_offset_kind), optional, intent(in) :: pos
- integer, optional, intent(in) :: n
- real, intent(inout) :: dst(:)
- integer, intent(out) :: ierr
-
- integer(kind=mpi_offset_kind) :: offset
- integer :: count
- integer :: num
- integer :: i
- integer :: its, ite
- integer, allocatable, dimension(:) :: tmp
-
- call io_int_loc(varname, records, offset, count, ierr)
- if (ierr .ne. 0) then
- return
- end if
-
- if (present(pos)) then
- offset = pos
- end if
- if (present(n)) then
- num = n
- its = 1
- ite = num
- else
- its = lbound(dst,1)
- ite = ubound(dst,1)
- num = ite - its + 1
- end if
-
- allocate(tmp(its:ite), stat=ierr)
- if (ierr .ne. 0) then
- write(0,*) 'Unable to allocate a temporary array'
- return
- end if
- tmp = 0
-
- call mpi_file_read_at(ifd, offset, tmp, num, &
- mpi_integer4, mpi_status_ignore, ierr)
- if (ierr .ne. 0) then
- write(0,*) 'MPI IO: Unable to read ', varname
- return
- end if
-
- forall(i=its:ite)
- dst(i) = transfer(ntohl(tmp(i)), 1.0)
- end forall
-
- deallocate(tmp)
-
- end subroutine read_r1
-
- !>
- !! Read a 2D real array.
- !
- subroutine read_r2(ifd, records, varname, pos, n, dst, ierr)
-
- integer, intent(in) :: ifd
- type(r_info), pointer, intent(in) :: records(:)
- character(len=*), intent(in) :: varname
- integer(kind=mpi_offset_kind), optional, intent(in) :: pos
- integer, optional, intent(in) :: n
- real, intent(inout) :: dst(:,:)
- integer, intent(out) :: ierr
-
- integer(kind=mpi_offset_kind) :: offset
- integer :: count
- integer :: num
- integer :: i, j
- integer :: its, ite, jts, jte
- integer, allocatable, dimension(:,:) :: tmp
-
- call io_int_loc(varname, records, offset, count, ierr)
- if (ierr .ne. 0) then
- return
- end if
-
- if (present(pos)) then
- offset = pos
- end if
-
- its = lbound(dst,1)
- ite = ubound(dst,1)
- jts = lbound(dst,2)
- jte = ubound(dst,2)
- num = (ite - its + 1) * (jte - jts + 1)
-
- allocate(tmp(its:ite, jts:jte), stat=ierr)
- if (ierr .ne. 0) then
- write(0,*) 'Unable to allocate a temporary array'
- return
- end if
- tmp = 0
-
- if (present(n)) then
- if ( n .le. num) then
- num = n
- end if
- end if
- call mpi_file_read_at(ifd, offset, tmp, num, &
- mpi_integer4, mpi_status_ignore, ierr)
- if (ierr .ne. 0) then
- write(0,*) 'MPI IO: Unable to read ', varname
- return
- end if
-
- forall(i=its:ite, j=jts:jte)
- dst(i,j) = transfer(ntohl(tmp(i,j)), 1.0)
- end forall
-
- deallocate(tmp)
-
- end subroutine read_r2
-
- !>
- !! Read a 3D real array
- !
- subroutine read_r3(ifd, records, varname, pos, n, dst, ierr)
-
- integer, intent(in) :: ifd
- type(r_info), pointer, intent(in) :: records(:)
- character(len=*), intent(in) :: varname
- integer(kind=mpi_offset_kind), optional, intent(in) :: pos
- integer, optional, intent(in) :: n
- real, intent(inout) :: dst(:,:,:)
- integer, intent(out) :: ierr
-
- integer(kind=mpi_offset_kind) :: offset
- integer :: count
- integer :: num
- integer :: i, j, k
- integer :: its, ite, jts, jte, kts, kte
- integer, allocatable, dimension(:,:,:) :: tmp
-
- call io_int_loc(varname, records, offset, count, ierr)
- if (ierr .ne. 0) then
- return
- end if
-
- if (present(pos)) then
- offset = pos
- end if
-
- its = lbound(dst,1)
- ite = ubound(dst,1)
- jts = lbound(dst,2)
- jte = ubound(dst,2)
- kts = lbound(dst,3)
- kte = ubound(dst,3)
- num = (ite - its + 1) * (jte - jts + 1) * (kte - kts + 1)
-
- allocate(tmp(its:ite, jts:jte, kts:kte), stat=ierr)
- if (ierr .ne. 0) then
- write(0,*) 'Unable to allocate a temporary array'
- return
- end if
- tmp = 0
-
- if (present(n)) then
- if ( n .le. num) then
- num = n
- end if
- end if
- call mpi_file_read_at(ifd, offset, tmp, num, &
- mpi_integer4, mpi_status_ignore, ierr)
-
- if (ierr .ne. 0) then
- write(0,*) 'MPI IO: Unable to read ', varname
- return
- end if
-
- forall(i=its:ite, j=jts:jte, k=kts:kte)
- dst(i,j,k) = transfer(ntohl(tmp(i,j,k)), 1.0)
- end forall
-
- deallocate(tmp)
-
- end subroutine read_r3
-
- !>
- !! Read a 1D character array.
- !
- subroutine read_c1(ifd, records, varname, pos, n, dst, ierr)
-
- integer, intent(in) :: ifd
- type(r_info), pointer, intent(in) :: records(:)
- character(len=*), intent(in) :: varname
- integer(kind=mpi_offset_kind), optional, intent(in) :: pos
- integer, optional, intent(in) :: n
- character(len=*), intent(inout) :: dst
- integer, intent(out) :: ierr
-
- integer(kind=mpi_offset_kind) :: offset
- integer :: count
- integer :: num
- integer :: i
- integer, allocatable, dimension(:) :: tmp
-
-
- call io_int_loc(varname, records, offset, count, ierr)
- if (ierr .ne. 0) then
- return
- end if
-
- if (present(pos)) then
- offset = pos
- end if
-
- num = count
-
- allocate(tmp(num), stat=ierr)
- if (ierr .ne. 0) then
- write(0,*) 'Unable to allocate a temporary array'
- return
- end if
- tmp = 0
-
- if (present(n)) then
- if ( n .le. num) then
- num = n
- end if
- end if
- call mpi_file_read_at(ifd, offset, tmp, num, &
- mpi_integer4, mpi_status_ignore, ierr)
- if (ierr .ne. 0) then
- write(0,*) 'MPI IO: Unable to read ', varname
- return
- end if
-
-! PGI and GNU fortran compilers do not like forall loops over
-! character arrays.
-! PGI: TPR#19016
-! GNU: http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50069
-!
-! XLF does not like transfer() with the mold being an array,
-! so we use achar() instead.
-!
-! forall(i=1:num)
-! dst(i:i) = transfer(ntohl(tmp(i)), dst)
-! end forall
-
- do i=1,num
- dst(i:i) = achar(ntohl(tmp(i)))
- end do
-
- deallocate(tmp)
-
- end subroutine read_c1
-
-end module INITPOST_NMM_BIN_MPIIO_READ
diff --git a/sorc/ncep_post.fd/RQSTFLD.f b/sorc/ncep_post.fd/RQSTFLD.f
index 1de6eba63..af429aeeb 100644
--- a/sorc/ncep_post.fd/RQSTFLD.f
+++ b/sorc/ncep_post.fd/RQSTFLD.f
@@ -24,7 +24,7 @@ module RQSTFLD_mod
implicit none
!
! increase MXFLD each time you add a new field
- INTEGER, PARAMETER :: MXFLD=950,MXLVL=500
+ INTEGER, PARAMETER :: MXFLD=950,MXLVL=70
CHARACTER*20 AVBL(MXFLD),FIELD(MXFLD)
CHARACTER*50 AVBLGRB2(MXFLD)
CHARACTER*6 DATSET
@@ -2078,44 +2078,44 @@ module RQSTFLD_mod
DATA IFILV(686),AVBL(686),IQ(686),IS(686),AVBLGRB2(686) &
& /1,'DUST25 SFC MASS CON ',161,001, &
'dust pm25 sfc mass con '/
-#if 0
- DATA IFILV(687),AVBL(687),IQ(687),IS(687),AVBLGRB2(687) &
- & /1,'BC SFC MASS CON ',162,001, &
- 'black carbon sfc mass con '/
- DATA IFILV(688),AVBL(688),IQ(688),IS(688),AVBLGRB2(688) &
- & /1,'OC SFC MASS CON ',163,001, &
- 'organic carbon sfc mass con '/
- DATA IFILV(689),AVBL(689),IQ(689),IS(689),AVBLGRB2(689) &
- & /1,'SU SFC MASS CON ',164,001, &
- 'sulfate sfc mass con '/
- DATA IFILV(690),AVBL(690),IQ(690),IS(690),AVBLGRB2(690) &
- & /1,'INST SU SFC MASS CON',164,001, &
- 'instn sulfate sfc mass con '/
- DATA IFILV(691),AVBL(691),IQ(691),IS(691),AVBLGRB2(691) &
- & /1,'INST OC SFC MASS CON',164,001, &
- 'instn organic carbon sfc mass con '/
- DATA IFILV(692),AVBL(692),IQ(692),IS(692),AVBLGRB2(692) &
- & /1,'INST BC SFC MASS CON',164,001, &
- 'instn black carbon sfc mass con '/
- DATA IFILV(693),AVBL(693),IQ(693),IS(693),AVBLGRB2(693) &
- & /1,'INST DU CR SMASS ',164,001, &
- 'instn du coarse mode sfc mass con '/
- DATA IFILV(694),AVBL(694),IQ(694),IS(694),AVBLGRB2(694) &
- & /1,'INST DU FN SMASS ',164,001, &
- 'instn du fine mode sfc mass con '/
- DATA IFILV(695),AVBL(695),IQ(695),IS(695),AVBLGRB2(695) &
- & /1,'INST SS CR SMASS ',164,001, &
- 'instn ss coarse mode sfc mass con '/
- DATA IFILV(696),AVBL(696),IQ(696),IS(696),AVBLGRB2(696) &
- & /1,'INST SS FN SMASS ',164,001, &
- 'instn ss fine mode sfc mass con '/
- DATA IFILV(697),AVBL(697),IQ(697),IS(697),AVBLGRB2(697) &
- & /1,'INST AER CR SMASS ',164,001, &
- 'instn aer coarse mode sfc mass con'/
- DATA IFILV(698),AVBL(698),IQ(698),IS(698),AVBLGRB2(698) &
- & /1,'INST AER FN SMASS ',164,001, &
- 'instn aer fine mode sfc mass con '/
-#endif
+!#if 0
+! DATA IFILV(687),AVBL(687),IQ(687),IS(687),AVBLGRB2(687) &
+! & /1,'BC SFC MASS CON ',162,001, &
+! 'black carbon sfc mass con '/
+! DATA IFILV(688),AVBL(688),IQ(688),IS(688),AVBLGRB2(688) &
+! & /1,'OC SFC MASS CON ',163,001, &
+! 'organic carbon sfc mass con '/
+! DATA IFILV(689),AVBL(689),IQ(689),IS(689),AVBLGRB2(689) &
+! & /1,'SU SFC MASS CON ',164,001, &
+! 'sulfate sfc mass con '/
+! DATA IFILV(690),AVBL(690),IQ(690),IS(690),AVBLGRB2(690) &
+! & /1,'INST SU SFC MASS CON',164,001, &
+! 'instn sulfate sfc mass con '/
+! DATA IFILV(691),AVBL(691),IQ(691),IS(691),AVBLGRB2(691) &
+! & /1,'INST OC SFC MASS CON',164,001, &
+! 'instn organic carbon sfc mass con '/
+! DATA IFILV(692),AVBL(692),IQ(692),IS(692),AVBLGRB2(692) &
+! & /1,'INST BC SFC MASS CON',164,001, &
+! 'instn black carbon sfc mass con '/
+! DATA IFILV(693),AVBL(693),IQ(693),IS(693),AVBLGRB2(693) &
+! & /1,'INST DU CR SMASS ',164,001, &
+! 'instn du coarse mode sfc mass con '/
+! DATA IFILV(694),AVBL(694),IQ(694),IS(694),AVBLGRB2(694) &
+! & /1,'INST DU FN SMASS ',164,001, &
+! 'instn du fine mode sfc mass con '/
+! DATA IFILV(695),AVBL(695),IQ(695),IS(695),AVBLGRB2(695) &
+! & /1,'INST SS CR SMASS ',164,001, &
+! 'instn ss coarse mode sfc mass con '/
+! DATA IFILV(696),AVBL(696),IQ(696),IS(696),AVBLGRB2(696) &
+! & /1,'INST SS FN SMASS ',164,001, &
+! 'instn ss fine mode sfc mass con '/
+! DATA IFILV(697),AVBL(697),IQ(697),IS(697),AVBLGRB2(697) &
+! & /1,'INST AER CR SMASS ',164,001, &
+! 'instn aer coarse mode sfc mass con'/
+! DATA IFILV(698),AVBL(698),IQ(698),IS(698),AVBLGRB2(698) &
+! & /1,'INST AER FN SMASS ',164,001, &
+! 'instn aer fine mode sfc mass con '/
+!#endif
! Reserving Index 601-700 for GOCART