From 454aa4f797eb322e356271c8537174a028e7b0f9 Mon Sep 17 00:00:00 2001 From: WenMeng-NOAA <48260754+WenMeng-NOAA@users.noreply.github.com> Date: Wed, 9 Oct 2019 14:05:00 -0400 Subject: [PATCH 01/21] Post libs (#9) * Add capability of building ncep_post v8.0.0 library for running in-line post. * Add the capability for building post library on WCOSS phase1/2. --- modulefiles/post/lib-v8.0.0-cray-intel | 57 ++++++++ modulefiles/post/lib-v8.0.0-hera | 54 ++++++++ modulefiles/post/lib-v8.0.0-wcoss | 54 ++++++++ modulefiles/post/lib-v8.0.0-wcoss_dell_p3 | 52 ++++++++ sorc/ncep_post.fd/CALWXT_BOURG.f | 5 +- sorc/ncep_post.fd/build_ncepost_lib.sh | 44 +++++++ sorc/ncep_post.fd/makefile_lib | 152 ++++++++++++++++++++++ 7 files changed, 417 insertions(+), 1 deletion(-) create mode 100755 modulefiles/post/lib-v8.0.0-cray-intel create mode 100755 modulefiles/post/lib-v8.0.0-hera create mode 100755 modulefiles/post/lib-v8.0.0-wcoss create mode 100755 modulefiles/post/lib-v8.0.0-wcoss_dell_p3 create mode 100755 sorc/ncep_post.fd/build_ncepost_lib.sh create mode 100644 sorc/ncep_post.fd/makefile_lib diff --git a/modulefiles/post/lib-v8.0.0-cray-intel b/modulefiles/post/lib-v8.0.0-cray-intel new file mode 100755 index 000000000..3c34033ae --- /dev/null +++ b/modulefiles/post/lib-v8.0.0-cray-intel @@ -0,0 +1,57 @@ +#%Module###################################################################### +## Jun.Wang@noaa.gov: Started NCEPPOST lib v6.3.0 +## Wen.Meng@noaa.gov 10/2019: Upgraded to v8.0.0 +##_____________________________________________________ +proc ModulesHelp { } { +puts stderr "Set environment veriables for NCEPPOST" +puts stderr "This module initializes the enviro nment " +puts stderr "for the Intel Compiler Suite $version\n" +} +module-whatis " NCEPPOST lib whatis description" + +#set ver v6.3.0 +#set envir dev +#set NCEPLIB /nwprod/lib + +#set sys [uname sysname] + +#setenv COMPF_MP mpiifort +setenv myFC ftn +setenv myFCFLAGS "-O2 -convert big_endian -traceback -g -fp-model source -qopenmp -fpp" +setenv myCPP /lib/cpp +setenv myCPPFLAGS "-P" +setenv ARCHV ar +setenv CPPC /lib/cpp +setenv version v8.0.0 +# + +module purge + +module use -a /usrx/local/prod/modulefiles +module use -a /gpfs/hps/nco/ops/nwprod/lib/modulefiles + +# Loading Intel Compiler Suite +module load PrgEnv-intel +module load craype-sandybridge +module switch intel intel/15.0.3.187 +module load craype/2.3.0 + +# Loading nceplibs modules +module load jasper-gnu-sandybridge/1.900.1 +module load png-gnu-sandybridge/1.2.49 +module load zlib-gnu-sandybridge/1.2.7 +module load g2-intel/3.1.0 +module load g2tmpl-intel/1.5.0 +#module load xmlparse/v2.0.0 + +module load w3emc-intel/2.2.0 +module load w3nco/2.0.6 +module load w3nco-intel/2.0.6 +module load bacio-intel/2.0.1 +module load gfsio-intel/1.1.0 +#module load sigio/2.1.0 +module load ip-intel/3.0.0 +module load sp-intel/2.0.2 +module load crtm-intel/2.2.6 + + diff --git a/modulefiles/post/lib-v8.0.0-hera b/modulefiles/post/lib-v8.0.0-hera new file mode 100755 index 000000000..715b5c7f9 --- /dev/null +++ b/modulefiles/post/lib-v8.0.0-hera @@ -0,0 +1,54 @@ +#%Module###################################################################### +## Jun.Wang@noaa.gov: Started NCEPPOST lib v6.3.0 +## Wen.Meng@noaa.gov 10/2019: Upgraded to v8.0.0 +##_____________________________________________________ +proc ModulesHelp { } { +puts stderr "Set environment veriables for NCEPPOST" +puts stderr "This module initializes the enviro nment " +puts stderr "for the Intel Compiler Suite $version\n" +} +module-whatis " NCEPPOST lib whatis description" + +#set ver v6.3.0 +#set envir dev +#set NCEPLIB /nwprod/lib + +#set sys [uname sysname] + +#setenv COMPF_MP mpiifort +setenv myFC mpiifort +setenv myFCFLAGS "-O3 -convert big_endian -traceback -g -fp-model source -qopenmp -fpp" +setenv myCPP /lib/cpp +setenv myCPPFLAGS "-P" +setenv ARCHV ar +setenv CPPC /lib/cpp +setenv version v8.0.0 +# + +module purge + +# Loading Intel Compiler Suite +#module load intel/19.0.4.243 +#module load impi/2019.0.4 +module load intel/18.0.5.274 +module load impi/2018.0.4 + +# Loading nceplibs modules +module use -a /scratch2/NCEPDEV/nwprod/NCEPLIBS/modulefiles +module load jasper/1.900.1 +module load png/1.2.44 +module load z/1.2.11 +module load g2/3.1.0 +module load g2tmpl/1.5.0 +#module load xmlparse/v2.0.0 + +module load w3emc/2.3.1 +module load w3nco/2.0.7 +module load bacio/2.0.3 +module load gfsio/1.1.0 +#module load sigio/2.1.1 +module load ip/3.0.2 +module load sp/2.0.3 +module load crtm/2.2.5 + + diff --git a/modulefiles/post/lib-v8.0.0-wcoss b/modulefiles/post/lib-v8.0.0-wcoss new file mode 100755 index 000000000..7fa2710b6 --- /dev/null +++ b/modulefiles/post/lib-v8.0.0-wcoss @@ -0,0 +1,54 @@ +#%Module###################################################################### +## Jun.Wang@noaa.gov: Started NCEPPOST lib v6.3.0 +## Wen.Meng@noaa.gov 10/2019: Upgraded to v8.0.0 +##_____________________________________________________ +proc ModulesHelp { } { +puts stderr "Set environment veriables for NCEPPOST" +puts stderr "This module initializes the enviro nment " +puts stderr "for the Intel Compiler Suite $version\n" +} +module-whatis " NCEPPOST lib whatis description" + +#set ver v6.3.0 +#set envir dev +#set NCEPLIB /nwprod/lib + +#set sys [uname sysname] + +#setenv COMPF_MP mpiifort +setenv myFC mpiifort +setenv myFCFLAGS "-O3 -convert big_endian -traceback -g -fp-model source -qopenmp -fpp" +setenv myCPP /lib/cpp +setenv myCPPFLAGS "-P" +setenv ARCHV ar +setenv CPPC /lib/cpp +setenv version v8.0.0 +# + +module purge + +# Loading Intel Compiler Suite +module load ics/16.0.3 +module load ibmpe +#module load ics/15.0.3 +##module load ibmpe/1.3.0.12 +#module load prod_util/1.1.0 + +# Loading nceplibs modules +module load jasper/v1.900.1 +module load png/v1.2.44 +module load z/v1.2.6 +module load g2/v3.1.0 +module load g2tmpl/v1.5.0 +#module load xmlparse/v2.0.0 + +module load w3emc/v2.2.0 +module load w3nco/v2.0.6 +module load bacio/v2.0.1 +module load gfsio/v1.1.0 +#module load sigio/2.1.0 +module load ip/v3.0.1 +module load sp/v2.0.2 +module load crtm/v2.2.4 + + diff --git a/modulefiles/post/lib-v8.0.0-wcoss_dell_p3 b/modulefiles/post/lib-v8.0.0-wcoss_dell_p3 new file mode 100755 index 000000000..97f3506a3 --- /dev/null +++ b/modulefiles/post/lib-v8.0.0-wcoss_dell_p3 @@ -0,0 +1,52 @@ +#%Module###################################################################### +## Jun.Wang@noaa.gov: Started NCEPPOST lib v6.3.0 +## Wen.Meng@noaa.gov 10/2019: Upgraded to v8.0.0 +##_____________________________________________________ +proc ModulesHelp { } { +puts stderr "Set environment veriables for NCEPPOST" +puts stderr "This module initializes the enviro nment " +puts stderr "for the Intel Compiler Suite $version\n" +} +module-whatis " NCEPPOST lib whatis description" + +#set ver v6.3.0 +#set envir dev +#set NCEPLIB /nwprod/lib + +#set sys [uname sysname] + +#setenv COMPF_MP mpiifort +setenv myFC mpiifort +setenv myFCFLAGS "-O3 -convert big_endian -traceback -g -fp-model source -qopenmp -fpp" +setenv myCPP /lib/cpp +setenv myCPPFLAGS "-P" +setenv ARCHV ar +setenv CPPC /lib/cpp +setenv version v8.0.0 +# + +module purge + +# Loading Intel Compiler Suite +module load ips/18.0.1.163 +module load impi/18.0.1 +#module load prod_util/1.1.0 + +# Loading nceplibs modules +module load jasper/1.900.1 +module load libpng/1.2.59 +module load zlib/1.2.11 +module load g2/3.1.0 +module load g2tmpl/1.5.0 +#module load xmlparse/v2.0.0 + +module load w3emc/2.3.0 +module load w3nco/2.0.6 +module load bacio/2.0.2 +module load gfsio/1.1.0 +#module load sigio/2.1.0 +module load ip/3.0.1 +module load sp/2.0.2 +module load crtm/2.2.6 + + diff --git a/sorc/ncep_post.fd/CALWXT_BOURG.f b/sorc/ncep_post.fd/CALWXT_BOURG.f index 078e224f2..8406f3f08 100644 --- a/sorc/ncep_post.fd/CALWXT_BOURG.f +++ b/sorc/ncep_post.fd/CALWXT_BOURG.f @@ -88,6 +88,8 @@ subroutine calwxt_bourg_post(im,jm,jsta_2l,jend_2u,jsta,jend,lm,lp1, & ! initialize weather type array to zero (ie, off). ! we do this since we want ptype to represent the ! instantaneous weather type on return. + print *,'in calwxtbg, jsta,jend=',jsta,jend,' im=',im + print *,'in calwxtbg,me=',me,'iseed=',iseed ! !$omp parallel do do j=jsta,jend @@ -104,9 +106,10 @@ subroutine calwxt_bourg_post(im,jm,jsta_2l,jend_2u,jsta,jend,lm,lp1, & !!$omp parallel do & ! & private(a,lmhk,tlmhk,iwrml,psfck,lhiwrm,pintk1,pintk2,area1, & ! & areape,dzkl,surfw,r1,r2) -! print *,' jsta,jend=',jsta,jend,' im=',im + print *,'incalwxtbg, rn',maxval(rn),minval(rn) do j=jsta,jend + if(me==1)print *,'incalwxtbg, j=',j do i=1,im lmhk = min(nint(lmh(i,j)),lm) psfck = pint(i,j,lmhk+1) diff --git a/sorc/ncep_post.fd/build_ncepost_lib.sh b/sorc/ncep_post.fd/build_ncepost_lib.sh new file mode 100755 index 000000000..a5f79f8ae --- /dev/null +++ b/sorc/ncep_post.fd/build_ncepost_lib.sh @@ -0,0 +1,44 @@ +SHELL=/bin/sh + +module purge +set -x +mac=$(hostname | cut -c1-1) +mac2=$(hostname | cut -c1-2) + +if [ $mac2 = hf ] ; then # For Hera + machine=hera + . /etc/profile + . /etc/profile.d/modules.sh +elif [ $mac = v -o $mac = m ] ; then # For Dell + machine=wcoss_dell_p3 + . $MODULESHOME/init/bash +elif [ $mac = t -o $mac = e -o $mac = g ] ; then # For WCOSS + machine=wcoss + . /usrx/local/Modules/default/init/bash +elif [ $mac = l -o $mac = s ] ; then # wcoss_c (i.e. luna and surge) + export machine=cray-intel +fi +export version=${1:-"v8.0.0"} + +moduledir=`dirname $(readlink -f ../../modulefiles/post)` +module use -a ${moduledir} +module load post/lib-${version}-${machine} +#module load nceppost_modulefile + +# +module list + +#sleep 1 + +BASE=`pwd` + +##################################### +cd ${BASE} +rm *.o *.mod incmod +#mkdir -m 775 -p $BASE/../../lib/include/ncep_post_${version}_4 +make -f makefile_lib clean +mkdir -m 775 -p include/ncep_post_${version}_4 +make -f makefile_lib + +exit 0 + diff --git a/sorc/ncep_post.fd/makefile_lib b/sorc/ncep_post.fd/makefile_lib new file mode 100644 index 000000000..2af4ff0b6 --- /dev/null +++ b/sorc/ncep_post.fd/makefile_lib @@ -0,0 +1,152 @@ +################################################################################ +# +# Makefile for NCEP Post +# +# Use: +# make - build the executable +# make clean - start with a clean slate +# +# The following macros will be of interest: +# +# TARGET - name of the executable +# FC - name of Fortran compiler +# CPP - name of CPP +# ARCH - architecture +# CPPFLAGS - CPP flags +# OPTS - compiler code optimizations +# LIST - source listing +# SMP - threading +# TRAPS - runtime traps for floating point exceptions +# PROFILE - source code profiling ( -pg ) +# DEBUG - -g +# MEM - user data area and stack size +# MAP - load map +# W3LIB - w3lib +# BACIO - bacio lib +# ESSL - ESSL library +# MASS - MASS library +# HPMLIB - hpm lib +# SEARCH - library search location +# +# This version for eta_post with more intelligent memory allocation +# Jim Tuccillo Feb 2001 +# +# This version for eta_post with asynchronous I/O server. +# Jim Tuccillo June 2001 + +# This version for NEMS_POST +# Jun Wang June 2010 +# +################################################################################# +# +# Define the name of the executable +# + #POSTLIBPATH=../.. + #TARGET = ${POSTLIBPATH}/lib/libncep_post_${version}_4.a + #INCMOD= ${POSTLIBPATH}/lib/include/ncep_post_${version}_4 + TARGET = libncep_post_${version}_4.a + INCMOD = include/ncep_post_${version}_4 + AR = ar + ARFLAGS = -rv + +# +# CPP, Compiler, and Linker Options +# + +#FC = mpfort -compiler ifort +#CPP = /lib/cpp -P +FC = $(myFC) $(myFCFLAGS) +CPP = $(myCPP) $(myCPPFLAGS) +ARCH = auto +CPPFLAGS = -DLINUX +OPTS = -O -fp-model strict +LIST = +FREE = -FR +#TRAPS = -qflttrap=ov:und:zero:inv:inex -qcheck -qinitauto=FF +TRAPS = +PROFILE = +DEBUG = -g +CFLAGS = -DLINUX -Dfunder -DFortranByte=char -DFortranInt=int -DFortranLlong='long long' +W3LIBDIR = /nwprod/lib + +#CRTM_INC = -I/nwprod/lib/incmod/crtm_2.0.6 +#W3_INC = -I/nwprod/lib/incmod/w3emc_v2.0.3_4 +#SIGIO_INC = -I/nwprod/lib/incmod/sigio_v1.0.1_4 +#GFSIO_INC = -I/nwprod/lib/incmod/gfsio_v1.1.0_4 +##jw G2_INC = -I/nwprod/lib/incmod/g2_4 -I/nwprod/lib/incmod/g2tmpl +#G2_INC = -I/nems/save/Jun.Wang/NGAC/lib/g2tmpl_v1.2.3/incmod/g2tmpl -I/nwprod/lib/incmod/g2_4 +#XML_INC = -I/nwprod/lib/incmod/xmlparse + + + +SEARCH = +# +# Assemble Options +# +#FFLAGS = $(OPTS) $(FREE) $(TRAPS) $(DEBUG) -I$(CRTM_INC) -I$(W3EMC_INC4) -I$(G2_INC4) -I$(G2TMPL_INC) -I$(XMLPARSE_INC) -I$(SIGIO_INC4) -I$(GFSIO_INC4) +FFLAGS = $(OPTS) $(FREE) $(TRAPS) $(DEBUG) -I$(CRTM_INC) -I$(W3EMC_INC4) -I$(G2_INC4) -I$(G2TMPL_INC) -I$(SIGIO_INC4) -I$(GFSIO_INC4) +FFLAGST = $(OPTS) $(FREE) $(TRAPS) $(DEBUG) -I$(CRTM_INC) -I$(W3EMC_INC4) -I$(SIGIO_INC4) -I$(GFSIO_INC4) + +# +# Threaded object files +# +OBJST= kinds_mod.o machine.o physcons.o ZENSUN.o CLDFRAC_ZHAO.o GFSPOST.o +# +# Non-threaded object files +# +#OBJXML= post_t.o +# +OBJS= 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 \ + SET_LVLSXML.o FILL_PSETFLD.o \ + BNDLYR.o BOUND.o CALCAPE.o CALDWP.o CALDRG.o CALHEL.o CALLCL.o \ + CALMCVG.o CALPOT.o CALPW.o CALRH.o CALRCH.o CALRH_GSD.o \ + CALSTRM.o CALTAU.o CALTHTE.o CALVIS.o CALVIS_GSD.o CALVOR.o CALWXT.o \ + CALWXT_RAMER.o CALWXT_BOURG.o CALWXT_REVISED.o CALRH_PW.o \ + CALWXT_EXPLICIT.o CALWXT_DOMINANT.o \ + CLDRAD.o CLMAX.o COLLECT.o COLLECT_LOC.o DEWPOINT.o \ + FDLVL.o FGAMMA.o FIXED.o FRZLVL.o FRZLVL2.o \ + GET_BITS.o GRIBIT.o LFMFLD.o \ + MAPSSLP.o MISCLN.o MIXLEN.o MDL2P.o MDLFLD.o \ + NGMFLD.o NGMSLP.o OTLFT.o OTLIFT.o SLP_new.o SLP_NMM.o EXCH.o \ + PARA_RANGE.o PROCESS.o EXCH2.o \ + READCNTRL.o READ_xml.o SET_OUTFLDS.o SCLFLD.o \ + SMOOTH.o SURFCE.o \ + SPLINE.o TABLE.o TABLEQ.o TRPAUS.o TTBLEX.o WETBULB.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 \ + CALPBL.o MDL2SIGMA2.o CALRH_GFS.o LFMFLD_GFS.o \ + CALRAD_WCLOUD_newcrtm.o MDL2THANDPV.o CALPBLREGIME.o POLEAVG.o \ + ICAOHEIGHT.o \ + GEO_ZENITH_ANGLE.o GFIP3.o GRIDAVG.o CALUPDHEL.o \ + AllGETHERV_GSD.o MSFPS.o SELECT_CHANNELS.o ALLOCATE_ALL.o \ + gtg_ctlblk.o gtg_indices.o gtg_filter.o gtg_compute.o gtg_config.o map_routines.o gtg_algo.o + + +.SUFFIXES: .F .f .o .f90 .c + +.F.f: + $(CPP) $(CPPFLAGS) $< > $*.f + +$(TARGET): $(OBJST) $(OBJXML) $(OBJS) + $(AR) $(ARFLAGS) $@ $(OBJST) $(OBJXML) $(OBJS) $(LIBS) + mv *.mod $(INCMOD) + +.f.o: + $(FC) $(FFLAGS) -c $< + +.f90.o: + $(FC) $(FFLAGS) -c $< + +.c.o : + ${CC} ${CFLAGS} -c $< + +clean: + /bin/rm -rf libncep_post_*.a *.lst *.o include +# +postcntrl_t.o : postcntrl_t.f90 + $(FC) $(FFLAGS) postcntrl_t.f90 + + From fb7af4ce676c6634f6f895d0502de5fae9ba91c6 Mon Sep 17 00:00:00 2001 From: WenMeng-NOAA <48260754+WenMeng-NOAA@users.noreply.github.com> Date: Thu, 10 Oct 2019 19:23:59 -0400 Subject: [PATCH 02/21] 1)setting total cloud water(cwm) with 5 GFDL MP species in fv3gfs nemsio read interface; 2)read pt from model output instead of setting as 0 in fv3gfs nemsio read interface; 3)setting zmid(:,:,l) in regional fv3 read interface. (#11) --- sorc/ncep_post.fd/INITPOST_GFS_NEMS_MPIIO.f | 11 +++++++++-- sorc/ncep_post.fd/INITPOST_NETCDF.f | 4 ++-- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/sorc/ncep_post.fd/INITPOST_GFS_NEMS_MPIIO.f b/sorc/ncep_post.fd/INITPOST_GFS_NEMS_MPIIO.f index 29ab5f09b..6b7ebf025 100644 --- a/sorc/ncep_post.fd/INITPOST_GFS_NEMS_MPIIO.f +++ b/sorc/ncep_post.fd/INITPOST_GFS_NEMS_MPIIO.f @@ -881,6 +881,12 @@ SUBROUTINE INITPOST_GFS_NEMS_MPIIO(iostatusAER) stop endif if(debugprint)print*,'sample ',ll,VarName,' = ',ll,qqg(isa,jsa,ll) +!define cwm + do j=jsta,jend + do i=1,im + cwm(i,j,ll)=qqg(i,j,ll)+qqs(i,j,ll)+qqr(i,j,ll)+qqi(i,j,ll)+qqw(i,j,ll) + enddo + enddo end if ! end of reading MP species for diff MP options @@ -1057,8 +1063,9 @@ SUBROUTINE INITPOST_GFS_NEMS_MPIIO(iostatusAER) ! construct interface pressure from model top (which is zero) and dp from top down PDTOP ! pdtop = spval - pt = 0. +! pt = 0. ! pd = spval ! GFS does not output PD + pt=ak5(lp1) ii = im/2 jj = (jsta+jend)/2 @@ -1240,7 +1247,7 @@ SUBROUTINE INITPOST_GFS_NEMS_MPIIO(iostatusAER) end do end do - do l=lp1,2,-1 + do l=lp1,1,-1 do j=jsta,jend do i=1,im alpint(i,j,l)=log(pint(i,j,l)) diff --git a/sorc/ncep_post.fd/INITPOST_NETCDF.f b/sorc/ncep_post.fd/INITPOST_NETCDF.f index 28595d7f4..0b95652b4 100644 --- a/sorc/ncep_post.fd/INITPOST_NETCDF.f +++ b/sorc/ncep_post.fd/INITPOST_NETCDF.f @@ -870,7 +870,7 @@ SUBROUTINE INITPOST_NETCDF(ncid3d) print*,'sample zint= ',isa,jsa,l,zint(isa,jsa,l) end do - do l=lp1,2,-1 + do l=lp1,1,-1 do j=jsta,jend do i=1,im alpint(i,j,l)=log(pint(i,j,l)) @@ -878,7 +878,7 @@ SUBROUTINE INITPOST_NETCDF(ncid3d) end do end do - do l=lm,2,-1 + do l=lm,1,-1 do j=jsta,jend do i=1,im if(zint(i,j,l+1)/=spval .and. zint(i,j,l)/=spval & From 467124f13d575c9f5f4bfd01e5a1488110da2d87 Mon Sep 17 00:00:00 2001 From: Jili Dong Date: Sat, 12 Oct 2019 19:06:46 -0400 Subject: [PATCH 03/21] HAFS post uv flux and drag coefficient fix (#12) * update modules for jet * fix for surface momentum flux and drag coefficient --- parm/hafs.xml | 2 +- parm/postxconfig-NT-hafs.txt | 2 +- sorc/ncep_post.fd/ALLOCATE_ALL.f | 2 ++ sorc/ncep_post.fd/CALDRG.f | 25 +++++++++++++++++-------- sorc/ncep_post.fd/DEALLOCATE.f | 2 ++ sorc/ncep_post.fd/INITPOST_NETCDF.f | 16 +++++++++++++++- sorc/ncep_post.fd/MPI_FIRST.f | 2 +- sorc/ncep_post.fd/SURFCE.f | 11 ++++++++++- sorc/ncep_post.fd/VRBLS2D_mod.f | 2 +- 9 files changed, 50 insertions(+), 14 deletions(-) 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/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/sorc/ncep_post.fd/ALLOCATE_ALL.f b/sorc/ncep_post.fd/ALLOCATE_ALL.f index 8d4390c95..f99a6de99 100644 --- a/sorc/ncep_post.fd/ALLOCATE_ALL.f +++ b/sorc/ncep_post.fd/ALLOCATE_ALL.f @@ -372,6 +372,8 @@ SUBROUTINE ALLOCATE_ALL() ! add GFS fields allocate(sfcux(im,jsta_2l:jend_2u)) allocate(sfcvx(im,jsta_2l:jend_2u)) + allocate(sfcuxi(im,jsta_2l:jend_2u)) + allocate(sfcvxi(im,jsta_2l:jend_2u)) allocate(avgalbedo(im,jsta_2l:jend_2u)) allocate(avgcprate(im,jsta_2l:jend_2u)) allocate(avgprec(im,jsta_2l:jend_2u)) diff --git a/sorc/ncep_post.fd/CALDRG.f b/sorc/ncep_post.fd/CALDRG.f index aa2cf4088..4809fb8ea 100644 --- a/sorc/ncep_post.fd/CALDRG.f +++ b/sorc/ncep_post.fd/CALDRG.f @@ -42,7 +42,7 @@ SUBROUTINE CALDRG(DRAGCO) ! ! use vrbls3d, only: uh, vh - use vrbls2d, only: uz0, vz0, ustar + use vrbls2d, only: uz0, vz0, ustar, u10, v10 use masks, only: lmh use params_mod, only: d00, d50, d25 use ctlblk_mod, only: jsta, jend, jsta_m, jend_m, modelname, spval, im, jm, & @@ -67,7 +67,9 @@ SUBROUTINE CALDRG(DRAGCO) !$omp parallel do private(i,j) DO J=JSTA,JEND DO I=1,IM - DRAGCO(I,J) = D00 +! DRAGCO(I,J) = D00 + DRAGCO(I,J) = 0.0 + ENDDO ENDDO ! @@ -76,21 +78,28 @@ SUBROUTINE CALDRG(DRAGCO) DO J=JSTA,JEND DO I=1,IM ! - LMHK=NINT(LMH(I,J)) + + IF (USTAR(I,J) /= SPVAL) THEN + +! LMHK=NINT(LMH(I,J)) ! ! COMPUTE A MEAN MASS POINT WIND SPEED BETWEEN THE ! FIRST ATMOSPHERIC ETA LAYER AND Z0. ACCORDING TO ! NETCDF OUTPUT, UZ0 AND VZ0 ARE AT MASS POINTS. (MEB 6/11/02) ! - UBAR=D50*(UH(I,J,LMHK)+UZ0(I,J)) - VBAR=D50*(VH(I,J,LMHK)+VZ0(I,J)) - WSPDSQ=UBAR*UBAR+VBAR*VBAR +! UBAR=D50*(UH(I,J,LMHK)+UZ0(I,J)) +! VBAR=D50*(VH(I,J,LMHK)+VZ0(I,J)) +! WSPDSQ=UBAR*UBAR+VBAR*VBAR + +! dong use 10m wind + WSPDSQ=U10(I,J)*U10(I,J)+V10(I,J)*V10(I,J) ! ! COMPUTE A DRAG COEFFICIENT. ! USTRSQ=USTAR(I,J)*USTAR(I,J) - IF(WSPDSQ .GT. 1.0E-6)DRAGCO(I,J)=USTRSQ/WSPDSQ -! + IF(WSPDSQ .GT. 1.0) DRAGCO(I,J)=USTRSQ/WSPDSQ + + END IF ENDDO ENDDO ELSE IF(gridtype=='E')THEN diff --git a/sorc/ncep_post.fd/DEALLOCATE.f b/sorc/ncep_post.fd/DEALLOCATE.f index 30fcc3a40..3d1d57a3d 100644 --- a/sorc/ncep_post.fd/DEALLOCATE.f +++ b/sorc/ncep_post.fd/DEALLOCATE.f @@ -289,6 +289,8 @@ SUBROUTINE DE_ALLOCATE ! add GFS fields deallocate(sfcux) deallocate(sfcvx) + deallocate(sfcuxi) + deallocate(sfcvxi) deallocate(avgalbedo) deallocate(avgcprate) deallocate(avgprec) diff --git a/sorc/ncep_post.fd/INITPOST_NETCDF.f b/sorc/ncep_post.fd/INITPOST_NETCDF.f index 0b95652b4..599e04fda 100644 --- a/sorc/ncep_post.fd/INITPOST_NETCDF.f +++ b/sorc/ncep_post.fd/INITPOST_NETCDF.f @@ -51,7 +51,7 @@ SUBROUTINE INITPOST_NETCDF(ncid3d) islope, cmc, grnflx, vegfrc, acfrcv, ncfrcv, acfrst, ncfrst, ssroff, & bgroff, rlwin, rlwtoa, cldwork, alwin, alwout, alwtoa, rswin, rswinc, & rswout, aswin, auvbin, auvbinc, aswout, aswtoa, sfcshx, sfclhx, subshx, & - snopcx, sfcux, sfcvx, sfcuvx, gtaux, gtauy, potevp, u10, v10, smstav, & + snopcx, sfcux, sfcvx, sfcuxi, sfcvxi, sfcuvx, gtaux, gtauy, potevp, u10, v10, smstav, & smstot, ivgtyp, isltyp, sfcevp, sfcexc, acsnow, acsnom, sst, thz0, qz0, & uz0, vz0, ptop, htop, pbot, hbot, ptopl, pbotl, ttopl, ptopm, pbotm, ttopm, & ptoph, pboth, pblcfr, ttoph, runoff, maxtshltr, mintshltr, maxrhshltr, & @@ -1976,6 +1976,20 @@ SUBROUTINE INITPOST_NETCDF(ncid3d) call read_netcdf_2d_scatter(me,ncid2d,1,im,jm,jsta,jsta_2l & ,jend_2u,MPI_COMM_COMP,icnt,idsp,spval,VarName,sfcvx) ! if(debugprint)print*,'sample l',VarName,' = ',1,sfcvx(isa,jsa) + +! dong read in inst surface flux +! inst zonal momentum flux using gfsio + VarName='uflx' + call read_netcdf_2d_scatter(me,ncid2d,1,im,jm,jsta,jsta_2l & + ,jend_2u,MPI_COMM_COMP,icnt,idsp,spval,VarName,sfcuxi) +! if(debugprint)print*,'sample l',VarName,' = ',1,sfcuxi(isa,jsa) + +! inst meridional momentum flux using nemsio + VarName='vflx' + call read_netcdf_2d_scatter(me,ncid2d,1,im,jm,jsta,jsta_2l & + ,jend_2u,MPI_COMM_COMP,icnt,idsp,spval,VarName,sfcvxi) +! if(debugprint)print*,'sample l',VarName,' = ',1,sfcvxi(isa,jsa) + !$omp parallel do private(i,j) do j=jsta_2l,jend_2u diff --git a/sorc/ncep_post.fd/MPI_FIRST.f b/sorc/ncep_post.fd/MPI_FIRST.f index a0492d89b..ad5677f75 100644 --- a/sorc/ncep_post.fd/MPI_FIRST.f +++ b/sorc/ncep_post.fd/MPI_FIRST.f @@ -68,7 +68,7 @@ SUBROUTINE MPI_FIRST() twbs, qwbs, sfcexc, grnflx, soiltb, z1000, slp, pslp, f, albedo, albase, & cldfra, cprate, cnvcfr, ivgtyp, hbotd, htopd, hbots, isltyp, htops, & cldefi, islope, si, lspa, rswinc, vis, pd, mxsnal, epsr, sfcux, & - sfcvx, avgalbedo, avgcprate, avgprec, ptop, pbot, avgcfrach, avgcfracm, & + sfcvx, sfcuxi, sfcvxi, avgalbedo, avgcprate, avgprec, ptop, pbot, avgcfrach, avgcfracm, & avgcfracl, avgtcdc, auvbin, auvbinc, ptopl, pbotl, ttopl, ptopm, & pbotm, ttopm, ptoph, pboth, ttoph, sfcugs, sfcvgs, pblcfr, cldwork, & gtaux, gtauy, mdltaux, mdltauy, runoff, maxtshltr, mintshltr, & diff --git a/sorc/ncep_post.fd/SURFCE.f b/sorc/ncep_post.fd/SURFCE.f index 55ac4e566..841595cdd 100644 --- a/sorc/ncep_post.fd/SURFCE.f +++ b/sorc/ncep_post.fd/SURFCE.f @@ -77,7 +77,7 @@ SUBROUTINE SURFCE runoff, pcp_bucket, rainnc_bucket, snow_bucket, & snownc, tmax, graup_bucket, graupelnc, qrmax, sfclhx,& rainc_bucket, sfcshx, subshx, snopcx, sfcuvx, & - sfcvx, smcwlt, suntime, pd, sfcux, sfcevp, z0, & + sfcvx, smcwlt, suntime, pd, sfcux, sfcuxi, sfcvxi, sfcevp, z0, & ustar, mdltaux, mdltauy, gtaux, gtauy, twbs, & sfcexc, grnflx, islope, czmean, czen, rswin,akhsavg ,& akmsavg, u10h, v10h,snfden,sndepac,qvl1, & @@ -5642,13 +5642,19 @@ SUBROUTINE SURFCE ! ! SURFACE U AND/OR V COMPONENT WIND STRESS IF ( (IGET(133).GT.0) .OR. (IGET(134).GT.0) ) THEN +! dong add missing value + GRID1 = spval CALL CALTAU(EGRID1(1,jsta),EGRID2(1,jsta)) ! ! SURFACE U COMPONENT WIND STRESS. +! dong for FV3, directly use model output IF (IGET(133).GT.0) THEN DO J=JSTA,JEND DO I=1,IM GRID1(I,J)=EGRID1(I,J) + IF(MODELNAME == 'FV3R') THEN + GRID1(I,J)=SFCUXI(I,J) + END IF ENDDO ENDDO ! @@ -5667,6 +5673,9 @@ SUBROUTINE SURFCE DO J=JSTA,JEND DO I=1,IM GRID1(I,J)=EGRID2(I,J) + IF(MODELNAME == 'FV3R') THEN + GRID1(I,J)=SFCVXI(I,J) + END IF ENDDO ENDDO if(grib=='grib1') then diff --git a/sorc/ncep_post.fd/VRBLS2D_mod.f b/sorc/ncep_post.fd/VRBLS2D_mod.f index 921508219..5f4d6ae72 100644 --- a/sorc/ncep_post.fd/VRBLS2D_mod.f +++ b/sorc/ncep_post.fd/VRBLS2D_mod.f @@ -59,7 +59,7 @@ module vrbls2d ,LWP(:,:),IWP(:,:) & ,INT_SMOKE(:,:),INT_AOD(:,:) & ! add new fields for GFS - ,SFCUX(:,:),SFCVX(:,:),AVGALBEDO(:,:),AVGCPRATE(:,:) & + ,SFCUX(:,:),SFCVX(:,:),SFCUXI(:,:), SFCVXI(:,:),AVGALBEDO(:,:),AVGCPRATE(:,:) & ,AVGPREC(:,:),PTOP(:,:),PBOT(:,:),AVGCFRACH(:,:) & ,AVGCFRACM(:,:),AVGCFRACL(:,:),AVGTCDC(:,:) & ,AUVBIN(:,:),AUVBINC(:,:) & From b78469b74e75db0f7bee775abefcd0d9465ca4eb Mon Sep 17 00:00:00 2001 From: Yunheng Wang <47898913+ywangwof@users.noreply.github.com> Date: Fri, 25 Oct 2019 14:42:26 -0500 Subject: [PATCH 04/21] Added lambert conformal projection for FV3SAR and handled composite reflectivity correctly (#14) --- sorc/ncep_post.fd/INITPOST_NETCDF.f | 78 ++++++++++++++++++++++++++++- sorc/ncep_post.fd/MDLFLD.f | 2 +- 2 files changed, 78 insertions(+), 2 deletions(-) diff --git a/sorc/ncep_post.fd/INITPOST_NETCDF.f b/sorc/ncep_post.fd/INITPOST_NETCDF.f index 599e04fda..cd820626a 100644 --- a/sorc/ncep_post.fd/INITPOST_NETCDF.f +++ b/sorc/ncep_post.fd/INITPOST_NETCDF.f @@ -77,7 +77,7 @@ SUBROUTINE INITPOST_NETCDF(ncid3d) nbin_oc, nbin_su, gocart_on, pt_tbl, hyb_sigp, filenameFlux, fileNameAER use gridspec_mod, only: maptype, gridtype, latstart, latlast, lonstart, lonlast, cenlon, & dxval, dyval, truelat2, truelat1, psmapf, cenlat,lonstartv, lonlastv, cenlonv, & - latstartv, latlastv, cenlatv,latstart_r,latlast_r,lonstart_r,lonlast_r + latstartv, latlastv, cenlatv,latstart_r,latlast_r,lonstart_r,lonlast_r, STANDLON use rqstfld_mod, only: igds, avbl, iq, is !- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - implicit none @@ -353,6 +353,82 @@ SUBROUTINE INITPOST_NETCDF(ncid3d) ! Jili Dong add support for regular lat lon (2019/03/22) end + ELSE IF (trim(varcharval)=='lambert_conformal')then + + MAPTYPE=1 + idrt=1 + Status=nf90_get_att(ncid3d,nf90_global,'cen_lon',dum_const) + if(Status/=0)then + print*,'cen_lon not found; assigning missing value' + cenlon=spval + else + if(dum_const<0.)then + cenlon=nint((dum_const+360.)*gdsdegr) + else + cenlon=dum_const*gdsdegr + end if + end if + Status=nf90_get_att(ncid3d,nf90_global,'cen_lat',dum_const) + if(Status/=0)then + print*,'cen_lat not found; assigning missing value' + cenlat=spval + else + cenlat=dum_const*gdsdegr + end if + + 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,'stdlat1',dum_const) + if(Status/=0)then + print*,'stdlat1 not found; assigning missing value' + truelat1=spval + else + truelat1=dum_const*gdsdegr + end if + Status=nf90_get_att(ncid3d,nf90_global,'stdlat2',dum_const) + if(Status/=0)then + print*,'stdlat2 not found; assigning missing value' + truelat2=spval + else + truelat2=dum_const*gdsdegr + end if + + Status=nf90_get_att(ncid3d,nf90_global,'dx',dum_const) + if(Status/=0)then + print*,'dx not found; assigning missing value' + dxval=spval + else + dxval=dum_const*1.E3 + end if + Status=nf90_get_att(ncid3d,nf90_global,'dy',dum_const) + if(Status/=0)then + print*,'dphd not found; assigning missing value' + dyval=spval + else + dyval=dum_const*1.E3 + end if + + STANDLON = cenlon + print*,'lonstart,latstart,cenlon,cenlat,truelat1,truelat2,stadlon,dyval,dxval', & + lonstart,latstart,cenlon,cenlat,truelat1,truelat2,standlon,dyval,dxval + else ! setting default maptype MAPTYPE=0 idrt=0 diff --git a/sorc/ncep_post.fd/MDLFLD.f b/sorc/ncep_post.fd/MDLFLD.f index 5ea2dddcb..d730cdd91 100644 --- a/sorc/ncep_post.fd/MDLFLD.f +++ b/sorc/ncep_post.fd/MDLFLD.f @@ -2876,7 +2876,7 @@ SUBROUTINE MDLFLD IF(IMP_PHYSICS == 8 .or. IMP_PHYSICS == 28) THEN !NMMB does not have composite radar ref in model output IF(MODELNAME=='NMM' .and. gridtype=='B' .or. & - MODELNAME=='NCAR'.or. & + MODELNAME=='NCAR'.or. MODELNAME=='FV3R' .or. & MODELNAME=='NMM' .and. gridtype=='E')THEN !$omp parallel do private(i,j,l) DO J=JSTA,JEND From e5163edb07e079a251789a9fc87a05a5303274ca Mon Sep 17 00:00:00 2001 From: WenMeng-NOAA <48260754+WenMeng-NOAA@users.noreply.github.com> Date: Tue, 29 Oct 2019 18:20:43 -0400 Subject: [PATCH 05/21] =?UTF-8?q?Change=20module=20name=20machine=20and=20?= =?UTF-8?q?physcons=20to=20machine=5Fpost=20and=20physcons=5F=E2=80=A6=20(?= =?UTF-8?q?#13)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Change module name machine and physcons to machine_post and physcons_post for solving conflict with FV3 model setting. * Tweak physcons.f --- sorc/ncep_post.fd/BNDLYR.f | 2 +- sorc/ncep_post.fd/CLDRAD.f | 2 +- sorc/ncep_post.fd/FRZLVL.f | 2 +- sorc/ncep_post.fd/FRZLVL2.f | 2 +- sorc/ncep_post.fd/GFIP3.f | 2 +- sorc/ncep_post.fd/GFSPOST.F | 12 +++--- sorc/ncep_post.fd/GFSPOSTSIG.F | 2 +- sorc/ncep_post.fd/ICAOHEIGHT.f | 2 +- sorc/ncep_post.fd/INITPOST_GFS.f | 2 +- sorc/ncep_post.fd/INITPOST_GFS_NEMS.f | 2 +- sorc/ncep_post.fd/INITPOST_GFS_NEMS_MPIIO.f | 2 +- sorc/ncep_post.fd/INITPOST_GFS_SIGIO.f | 3 +- sorc/ncep_post.fd/INITPOST_NETCDF.f | 2 +- sorc/ncep_post.fd/LFMFLD.f | 2 +- sorc/ncep_post.fd/MDL2P.f | 2 +- sorc/ncep_post.fd/MDL2THANDPV.f | 2 +- sorc/ncep_post.fd/SURFCE.f | 2 +- sorc/ncep_post.fd/machine.f | 4 +- sorc/ncep_post.fd/physcons.f | 45 +++++++++++---------- 19 files changed, 47 insertions(+), 47 deletions(-) diff --git a/sorc/ncep_post.fd/BNDLYR.f b/sorc/ncep_post.fd/BNDLYR.f index 758f7ed16..df5ad4359 100644 --- a/sorc/ncep_post.fd/BNDLYR.f +++ b/sorc/ncep_post.fd/BNDLYR.f @@ -70,7 +70,7 @@ SUBROUTINE BNDLYR(PBND,TBND,QBND,RHBND,UBND,VBND, & use params_mod, only: d00, gi, pq0, a2, a3, a4 use ctlblk_mod, only: jsta_2l, jend_2u, lm, jsta, jend, modelname, & jsta_m, jend_m, im, nbnd - use physcons, only: con_rd, con_rv, con_eps, con_epsm1 + use physcons_post, only: con_rd, con_rv, con_eps, con_epsm1 use gridspec_mod, only: gridtype ! implicit none diff --git a/sorc/ncep_post.fd/CLDRAD.f b/sorc/ncep_post.fd/CLDRAD.f index 736ad5c6d..653b192b9 100644 --- a/sorc/ncep_post.fd/CLDRAD.f +++ b/sorc/ncep_post.fd/CLDRAD.f @@ -122,7 +122,7 @@ SUBROUTINE CLDRAD use rqstfld_mod, only: IGET, ID, LVLS, IAVBLFLD use gridspec_mod, only: dyval, gridtype use cmassi_mod, only: TRAD_ice - use machine, only: kind_phys + use machine_post, only: kind_phys !- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - implicit none ! diff --git a/sorc/ncep_post.fd/FRZLVL.f b/sorc/ncep_post.fd/FRZLVL.f index e4d200dca..9aacd8e56 100644 --- a/sorc/ncep_post.fd/FRZLVL.f +++ b/sorc/ncep_post.fd/FRZLVL.f @@ -69,7 +69,7 @@ SUBROUTINE FRZLVL(ZFRZ,RHFRZ,PFRZL) use masks, only: lmh use params_mod, only: gi, d00, capa, d0065, tfrz, pq0, a2, a3, a4 use ctlblk_mod, only: jsta, jend, spval, lm, modelname, im - use physcons, only: con_rd, con_rv, con_eps, con_epsm1 + use physcons_post, only: con_rd, con_rv, con_eps, con_epsm1 implicit none diff --git a/sorc/ncep_post.fd/FRZLVL2.f b/sorc/ncep_post.fd/FRZLVL2.f index 6d9d45508..de0baac91 100644 --- a/sorc/ncep_post.fd/FRZLVL2.f +++ b/sorc/ncep_post.fd/FRZLVL2.f @@ -67,7 +67,7 @@ SUBROUTINE FRZLVL2(ISOTHERM,ZFRZ,RHFRZ,PFRZL) use masks, only: lmh, sm use params_mod, only: gi, d00, capa, d0065, tfrz, pq0, a2, a3, a4, d50 use ctlblk_mod, only: jsta, jend, spval, lm, modelname, im - use physcons, only: con_rd, con_rv, con_eps, con_epsm1 + use physcons_post, only: con_rd, con_rv, con_eps, con_epsm1 implicit none diff --git a/sorc/ncep_post.fd/GFIP3.f b/sorc/ncep_post.fd/GFIP3.f index 191ad4029..caa9f50bd 100644 --- a/sorc/ncep_post.fd/GFIP3.f +++ b/sorc/ncep_post.fd/GFIP3.f @@ -2099,7 +2099,7 @@ subroutine icing_algo(i,j,pres,temp,rh,hgt,omega,wh,& nz,xlat,xlon,xalt,prate,cprate,& cape,cin, ice_pot, ice_sev) use ctlblk_mod, only: imp_physics, SPVAL, DTQ2,me - use physcons,only: G => con_g, FV => con_fvirt, RD => con_rd + use physcons_post,only: G => con_g, FV => con_fvirt, RD => con_rd use DerivedFields, only : derive_fields use CloudLayers, only : calc_CloudLayers, clouds_t diff --git a/sorc/ncep_post.fd/GFSPOST.F b/sorc/ncep_post.fd/GFSPOST.F index 07c15042a..226c6ad03 100644 --- a/sorc/ncep_post.fd/GFSPOST.F +++ b/sorc/ncep_post.fd/GFSPOST.F @@ -52,7 +52,7 @@ subroutine pvetc(km,p,px,py,t,tx,ty,h,u,v,av,hm,s,bvf2,pvn,theta,sigma,pvu) ! Language: Fortran 90 ! !$$$ - use physcons, only: con_cp, con_g, con_rd, con_rocp + use physcons_post, only: con_cp, con_g, con_rd, con_rocp ! implicit none integer,intent(in):: km @@ -206,7 +206,7 @@ subroutine p2pv(km,pvu,h,t,p,u,v,kpv,pv,pvpt,pvpb,& ! Language: Fortran 90 ! !$$$ - use physcons, only: con_rog + use physcons_post, only: con_rog implicit none integer,intent(in):: km,kpv real,intent(in),dimension(km):: pvu,h,t,p,u,v @@ -409,7 +409,7 @@ subroutine tpause(km,p,u,v,t,h,ptp,utp,vtp,ttp,htp,shrtp) ! Language: Fortran 90 ! !$$$ - use physcons, only: con_rog + use physcons_post, only: con_rog implicit none integer,intent(in):: km real,intent(in),dimension(km):: p,u,v,t,h @@ -509,7 +509,7 @@ subroutine mxwind(km,p,u,v,t,h,pmw,umw,vmw,tmw,hmw) ! Language: Fortran 90 ! !$$$ - use physcons, only: con_rog + use physcons_post, only: con_rog implicit none integer,intent(in):: km real,intent(in),dimension(km):: p,u,v,t,h @@ -603,7 +603,7 @@ subroutine mptgen(mpirank,mpisize,nd,jt1,jt2,j1,j2,jx,jm,jn) ! Language: Fortran 90 ! !$$$ - use machine,only:kint_mpi + use machine_post,only:kint_mpi implicit none integer(kint_mpi),intent(in):: mpirank,mpisize,nd,jt1(nd),jt2(nd) integer(kint_mpi),intent(out):: j1(nd),j2(nd),jx(nd),jm(nd),jn(nd) @@ -720,7 +720,7 @@ subroutine mptranr4(mpicomm,mpisize,im,ida,idb,& ! language: fortran 90 ! !$$$ - use machine,only:kint_mpi + use machine_post,only:kint_mpi implicit none include 'mpif.h' integer(kint_mpi),intent(in):: mpicomm,mpisize diff --git a/sorc/ncep_post.fd/GFSPOSTSIG.F b/sorc/ncep_post.fd/GFSPOSTSIG.F index 97f111c8b..cedb096b1 100644 --- a/sorc/ncep_post.fd/GFSPOSTSIG.F +++ b/sorc/ncep_post.fd/GFSPOSTSIG.F @@ -76,7 +76,7 @@ subroutine rtsig(lusig,head,k1,k2,kgds,ijo,levs,ntrac,jcap,lnt2,me, & !$$$ 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 physcons_post, only : con_omega, con_fvirt use omp_lib implicit none integer(sigio_intkind),intent(in) :: lusig diff --git a/sorc/ncep_post.fd/ICAOHEIGHT.f b/sorc/ncep_post.fd/ICAOHEIGHT.f index 396fe28d2..f21dc427b 100644 --- a/sorc/ncep_post.fd/ICAOHEIGHT.f +++ b/sorc/ncep_post.fd/ICAOHEIGHT.f @@ -19,7 +19,7 @@ SUBROUTINE ICAOHEIGHT(MAXWP, & !input ! Software Standards: UMDP3 v6 use ctlblk_mod, only: jsta, jend, spval, im -use physcons, only: con_g, con_rd +use physcons_post, only: con_g, con_rd IMPLICIT None ! Subroutine Arguments: diff --git a/sorc/ncep_post.fd/INITPOST_GFS.f b/sorc/ncep_post.fd/INITPOST_GFS.f index bbd726dca..fe1550ea7 100644 --- a/sorc/ncep_post.fd/INITPOST_GFS.f +++ b/sorc/ncep_post.fd/INITPOST_GFS.f @@ -52,7 +52,7 @@ SUBROUTINE INITPOST_GFS(NREC,iunit,iostatusFlux,iunitd3d,iostatusD3D,gfile) use masks, only: lmv, lmh, htm, vtm, gdlat, gdlon, dx, dy, hbm2, sm, sice use kinds, only: i_llong use gfsio_module, only: gfsio_gfile, gfsio_getfilehead, gfsio_readrecvw34, gfsio_close - use physcons, only: con_g, con_fvirt, con_rd, con_eps, con_epsm1 + use physcons_post, only: con_g, con_fvirt, con_rd, con_eps, con_epsm1 use params_mod, only: erad, dtr, tfrz, p1000, capa use lookup_mod, only: thl, plq, ptbl, ttbl, rdq, rdth, rdp, rdthe, pl, qs0, sqs, sthe, the0, ttblq,& rdpq, rdtheq, stheq, the0q diff --git a/sorc/ncep_post.fd/INITPOST_GFS_NEMS.f b/sorc/ncep_post.fd/INITPOST_GFS_NEMS.f index d4b1147dc..dcfdda774 100644 --- a/sorc/ncep_post.fd/INITPOST_GFS_NEMS.f +++ b/sorc/ncep_post.fd/INITPOST_GFS_NEMS.f @@ -68,7 +68,7 @@ SUBROUTINE INITPOST_GFS_NEMS(NREC,iostatusFlux,iostatusD3D, & use masks, only: lmv, lmh, htm, vtm, gdlat, gdlon, dx, dy, hbm2, sm, sice ! use kinds, only: i_llong use nemsio_module, only: nemsio_gfile, nemsio_getfilehead, nemsio_getheadvar, nemsio_close - use physcons, only: grav => con_g, fv => con_fvirt, rgas => con_rd, & + use physcons_post, only: grav => con_g, fv => con_fvirt, rgas => con_rd, & eps => con_eps, epsm1 => con_epsm1 use params_mod, only: erad, dtr, tfrz, h1, d608, rd, p1000, capa use lookup_mod, only: thl, plq, ptbl, ttbl, rdq, rdth, rdp, rdthe, pl, qs0, sqs, sthe, & diff --git a/sorc/ncep_post.fd/INITPOST_GFS_NEMS_MPIIO.f b/sorc/ncep_post.fd/INITPOST_GFS_NEMS_MPIIO.f index 6b7ebf025..e68f39aeb 100644 --- a/sorc/ncep_post.fd/INITPOST_GFS_NEMS_MPIIO.f +++ b/sorc/ncep_post.fd/INITPOST_GFS_NEMS_MPIIO.f @@ -78,7 +78,7 @@ SUBROUTINE INITPOST_GFS_NEMS_MPIIO(iostatusAER) use masks, only: lmv, lmh, htm, vtm, gdlat, gdlon, dx, dy, hbm2, sm, sice ! use kinds, only: i_llong ! use nemsio_module, only: nemsio_gfile, nemsio_getfilehead, nemsio_getheadvar, nemsio_close - use physcons, only: grav => con_g, fv => con_fvirt, rgas => con_rd, & + use physcons_post, only: grav => con_g, fv => con_fvirt, rgas => con_rd, & eps => con_eps, epsm1 => con_epsm1 use params_mod, only: erad, dtr, tfrz, h1, d608, rd, p1000, capa use lookup_mod, only: thl, plq, ptbl, ttbl, rdq, rdth, rdp, rdthe, pl, qs0, sqs, sthe, & diff --git a/sorc/ncep_post.fd/INITPOST_GFS_SIGIO.f b/sorc/ncep_post.fd/INITPOST_GFS_SIGIO.f index 3ec2731cb..f75ed4df0 100644 --- a/sorc/ncep_post.fd/INITPOST_GFS_SIGIO.f +++ b/sorc/ncep_post.fd/INITPOST_GFS_SIGIO.f @@ -67,10 +67,9 @@ SUBROUTINE INITPOST_GFS_SIGIO(lusig,iunit,iostatusFlux,iostatusD3D,idrt,sighead) CUPPT, THZ0, MAXRHSHLTR, MINRHSHLTR, U10H, V10H use soil, only: SLDPTH, SH2O, SMC, STC use masks, only: LMV, LMH, HTM, VTM, GDLAT, GDLON, DX, DY, HBM2, SM, SICE - use physcons, only: CON_G, CON_FVIRT, CON_RD, CON_EPS, CON_EPSM1 + use physcons_post, only: CON_G, CON_FVIRT, CON_RD, CON_EPS, CON_EPSM1 use masks, only: LMV, LMH, HTM, VTM, GDLAT, GDLON, DX, DY, HBM2, & SM, SICE - use physcons, only: CON_G, CON_FVIRT, CON_RD, CON_EPS, CON_EPSM1 use params_mod, only: RTD, ERAD, DTR, TFRZ, P1000, CAPA use lookup_mod, only: THL, PLQ, PTBL, TTBL, RDQ, RDTH, RDP, RDTHE, PL, & QS0, SQS, STHE, THE0, TTBLQ, RDPQ, RDTHEQ, STHEQ, & diff --git a/sorc/ncep_post.fd/INITPOST_NETCDF.f b/sorc/ncep_post.fd/INITPOST_NETCDF.f index cd820626a..646a54973 100644 --- a/sorc/ncep_post.fd/INITPOST_NETCDF.f +++ b/sorc/ncep_post.fd/INITPOST_NETCDF.f @@ -64,7 +64,7 @@ SUBROUTINE INITPOST_NETCDF(ncid3d) 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 - use physcons, only: grav => con_g, fv => con_fvirt, rgas => con_rd, & + use physcons_post, only: grav => con_g, fv => con_fvirt, rgas => con_rd, & eps => con_eps, epsm1 => con_epsm1 use params_mod, only: erad, dtr, tfrz, h1, d608, rd, p1000, capa,pi use lookup_mod, only: thl, plq, ptbl, ttbl, rdq, rdth, rdp, rdthe, pl, qs0, sqs, sthe, & diff --git a/sorc/ncep_post.fd/LFMFLD.f b/sorc/ncep_post.fd/LFMFLD.f index 4a8793bff..26206ca7a 100644 --- a/sorc/ncep_post.fd/LFMFLD.f +++ b/sorc/ncep_post.fd/LFMFLD.f @@ -71,7 +71,7 @@ SUBROUTINE LFMFLD(RH3310,RH6610,RH3366,PW3310) use masks, only: lmh use params_mod, only: d00, d50, pq0, a2, a3, a4, h1, d01, gi use ctlblk_mod, only: jsta, jend, modelname, spval, im - use physcons, only: con_rd, con_rv, con_eps, con_epsm1 + use physcons_post, only: con_rd, con_rv, con_eps, con_epsm1 implicit none diff --git a/sorc/ncep_post.fd/MDL2P.f b/sorc/ncep_post.fd/MDL2P.f index 91ff5a662..3c35558be 100644 --- a/sorc/ncep_post.fd/MDL2P.f +++ b/sorc/ncep_post.fd/MDL2P.f @@ -68,7 +68,7 @@ SUBROUTINE MDL2P(iostatusD3D) CNVCTDMFLX, ICING_GFIS,GTG,CAT=>CATEDR,MWT use vrbls2d, only: T500, W_UP_MAX, W_DN_MAX, W_MEAN, PSLP, FIS, Z1000 use masks, only: LMH, SM - use physcons,only: CON_FVIRT, CON_ROG, CON_EPS, CON_EPSM1 + use physcons_post,only: CON_FVIRT, CON_ROG, CON_EPS, CON_EPSM1 use params_mod, only: H1M12, DBZMIN, H1, PQ0, A2, A3, A4, RHMIN, G, & RGAMOG, RD, D608, GI, ERAD, PI, SMALL, H100, & H99999, GAMMA diff --git a/sorc/ncep_post.fd/MDL2THANDPV.f b/sorc/ncep_post.fd/MDL2THANDPV.f index afd375765..915ae197c 100644 --- a/sorc/ncep_post.fd/MDL2THANDPV.f +++ b/sorc/ncep_post.fd/MDL2THANDPV.f @@ -41,7 +41,7 @@ SUBROUTINE MDL2THANDPV(kth,kpv,th,pv) use vrbls3d, only: pmid, t, uh, q, vh, zmid, omga, pint use vrbls2d, only: f use masks, only: gdlat, gdlon, dx, dy - use physcons, only: con_eps, con_epsm1 + use physcons_post, only: con_eps, con_epsm1 use params_mod, only: dtr, small, erad, d608, rhmin use CTLBLK_mod, only: spval, lm, jsta_2l, jend_2u, jsta_2l, grib, cfld, datapd, fld_info,& im, jm, jsta, jend, jsta_m, jend_m, modelname, global,gdsdegr,me diff --git a/sorc/ncep_post.fd/SURFCE.f b/sorc/ncep_post.fd/SURFCE.f index 841595cdd..c0c58dc07 100644 --- a/sorc/ncep_post.fd/SURFCE.f +++ b/sorc/ncep_post.fd/SURFCE.f @@ -88,7 +88,7 @@ SUBROUTINE SURFCE AVGCPRATE_CONT use soil, only: stc, sllevel, sldpth, smc, sh2o use masks, only: lmh, sm, sice, htm, gdlat, gdlon - use physcons,only: CON_EPS, CON_EPSM1 + use physcons_post,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, rd diff --git a/sorc/ncep_post.fd/machine.f b/sorc/ncep_post.fd/machine.f index 16bb1002b..d2d3468fc 100644 --- a/sorc/ncep_post.fd/machine.f +++ b/sorc/ncep_post.fd/machine.f @@ -1,4 +1,4 @@ - MODULE MACHINE + MODULE MACHINE_POST IMPLICIT NONE SAVE @@ -11,4 +11,4 @@ MODULE MACHINE integer kint_mpi parameter (kint_mpi = 4) - END MODULE MACHINE + END MODULE MACHINE_POST diff --git a/sorc/ncep_post.fd/physcons.f b/sorc/ncep_post.fd/physcons.f index a6f89960e..126c993c8 100644 --- a/sorc/ncep_post.fd/physcons.f +++ b/sorc/ncep_post.fd/physcons.f @@ -1,5 +1,5 @@ -module physcons - use machine,only:kind_phys +module physcons_post + use machine_post,only:kind_phys !- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - implicit none ! @@ -8,27 +8,28 @@ module physcons ! 1990/04/30: g and rd are made consistent with NWS usage. ! 2001/10/22: g made consistent with SI usage. ! Math constants - real(kind=kind_phys),parameter:: con_pi =3.141593e+0 ! pi - real(kind=kind_phys),parameter:: con_sqrt2 =1.414214e+0 ! square root of 2 - real(kind=kind_phys),parameter:: con_sqrt3 =1.732051e+0 ! square root of 3 +! real(kind=kind_phys),parameter:: con_pi =3.141593e+0 ! pi + real(kind=kind_phys),parameter:: con_pi =4.0d0*atan(1.0d0) + real(kind=kind_phys),parameter:: con_sqrt2 =1.414214e+0_kind_phys ! square root of 2 + real(kind=kind_phys),parameter:: con_sqrt3 =1.732051e+0_kind_phys ! square root of 3 ! Primary constants - real(kind=kind_phys),parameter:: con_rerth =6.3712e+6 ! radius of earth (m) - real(kind=kind_phys),parameter:: con_g =9.80665e+0! gravity (m/s2) - real(kind=kind_phys),parameter:: con_omega =7.2921e-5 ! ang vel of earth (1/s) - real(kind=kind_phys),parameter:: con_rd =2.8705e+2 ! gas constant air (J/kg/K) - real(kind=kind_phys),parameter:: con_rv =4.6150e+2 ! gas constant H2O (J/kg/K) - real(kind=kind_phys),parameter:: con_cp =1.0046e+3 ! spec heat air @p (J/kg/K) - real(kind=kind_phys),parameter:: con_cv =7.1760e+2 ! spec heat air @v (J/kg/K) - real(kind=kind_phys),parameter:: con_cvap =1.8460e+3 ! spec heat H2O gas (J/kg/K) - real(kind=kind_phys),parameter:: con_cliq =4.1855e+3 ! spec heat H2O liq (J/kg/K) - real(kind=kind_phys),parameter:: con_csol =2.1060e+3 ! spec heat H2O ice (J/kg/K) - real(kind=kind_phys),parameter:: con_hvap =2.5000e+6 ! lat heat H2O cond (J/kg) - real(kind=kind_phys),parameter:: con_hfus =3.3358e+5 ! lat heat H2O fusion (J/kg) - real(kind=kind_phys),parameter:: con_psat =6.1078e+2 ! pres at H2O 3pt (Pa) - real(kind=kind_phys),parameter:: con_sbc =5.6730e-8 ! stefan-boltzmann (W/m2/K4) - real(kind=kind_phys),parameter:: con_solr =1.3533e+3 ! solar constant (W/m2) - real(kind=kind_phys),parameter:: con_t0c =2.7315e+2 ! temp at 0C (K) - real(kind=kind_phys),parameter:: con_ttp =2.7316e+2 ! temp at H2O 3pt (K) + real(kind=kind_phys),parameter:: con_rerth =6.3712e+6_kind_phys ! radius of earth (m) + real(kind=kind_phys),parameter:: con_g =9.80665e+0_kind_phys! gravity (m/s2) + real(kind=kind_phys),parameter:: con_omega =7.2921e-5_kind_phys ! ang vel of earth (1/s) + real(kind=kind_phys),parameter:: con_rd =2.8705e+2_kind_phys ! gas constant air (J/kg/K) + real(kind=kind_phys),parameter:: con_rv =4.6150e+2_kind_phys ! gas constant H2O (J/kg/K) + real(kind=kind_phys),parameter:: con_cp =1.0046e+3_kind_phys ! spec heat air @p (J/kg/K) + real(kind=kind_phys),parameter:: con_cv =7.1760e+2_kind_phys ! spec heat air @v (J/kg/K) + real(kind=kind_phys),parameter:: con_cvap =1.8460e+3_kind_phys ! spec heat H2O gas (J/kg/K) + real(kind=kind_phys),parameter:: con_cliq =4.1855e+3_kind_phys ! spec heat H2O liq (J/kg/K) + real(kind=kind_phys),parameter:: con_csol =2.1060e+3_kind_phys ! spec heat H2O ice (J/kg/K) + real(kind=kind_phys),parameter:: con_hvap =2.5000e+6_kind_phys ! lat heat H2O cond (J/kg) + real(kind=kind_phys),parameter:: con_hfus =3.3358e+5_kind_phys ! lat heat H2O fusion (J/kg) + real(kind=kind_phys),parameter:: con_psat =6.1078e+2_kind_phys ! pres at H2O 3pt (Pa) + real(kind=kind_phys),parameter:: con_sbc =5.6730e-8_kind_phys ! stefan-boltzmann (W/m2/K4) + real(kind=kind_phys),parameter:: con_solr =1.3533e+3_kind_phys ! solar constant (W/m2) + real(kind=kind_phys),parameter:: con_t0c =2.7315e+2_kind_phys ! temp at 0C (K) + real(kind=kind_phys),parameter:: con_ttp =2.7316e+2_kind_phys ! temp at H2O 3pt (K) ! Secondary constants real(kind=kind_phys),parameter:: con_rocp =con_rd/con_cp real(kind=kind_phys),parameter:: con_cpor =con_cp/con_rd From 533f42c7bdc36824f6412b6b1f8fac68a4ca7103 Mon Sep 17 00:00:00 2001 From: WenMeng-NOAA <48260754+WenMeng-NOAA@users.noreply.github.com> Date: Thu, 31 Oct 2019 18:44:29 -0400 Subject: [PATCH 06/21] Post vessel (#19) * 1) Add computation of vessel icing; 2) Sync the changes in workflow scripts from gfs v15.2 implementation. * Add new routine CALVESSEL.f for calculating vessel icing. * Add bug fix for writting ID 588. --- parm/fv3sar_post_avblflds.xml | 8 +++ parm/global_1x1_paramlist_g2 | 1 + parm/global_1x1_paramlist_g2.f000 | 1 + parm/post_avblflds.xml | 8 +++ parm/postcntrl_gfs.xml | 6 ++ parm/postcntrl_gfs_f00.xml | 6 ++ parm/postxconfig-NT-GFS-F00.txt | 39 ++++++++++++- parm/postxconfig-NT-GFS.txt | 39 ++++++++++++- scripts/exgfs_nceppost.sh.ecf | 9 +++ sorc/ncep_post.fd/CALVESSEL.f | 64 +++++++++++++++++++++ sorc/ncep_post.fd/INITPOST_GFS_NEMS_MPIIO.f | 6 +- sorc/ncep_post.fd/INITPOST_NETCDF.f | 6 +- sorc/ncep_post.fd/RQSTFLD.f | 7 +++ sorc/ncep_post.fd/SURFCE.f | 41 ++++++++++++- sorc/ncep_post.fd/makefile_module | 2 +- ush/fv3gfs_downstream_nems.sh | 24 ++++---- 16 files changed, 249 insertions(+), 18 deletions(-) create mode 100644 sorc/ncep_post.fd/CALVESSEL.f diff --git a/parm/fv3sar_post_avblflds.xml b/parm/fv3sar_post_avblflds.xml index a4259c91a..4f9b7b4ab 100644 --- a/parm/fv3sar_post_avblflds.xml +++ b/parm/fv3sar_post_avblflds.xml @@ -4658,6 +4658,14 @@ 3.0 + + 588 + ICEG_ON_SPEC_ALT_ABOVE_MEAN_SEA_LVL + ICEG + spec_alt_above_mean_sea_lvl + 4.0 + + 601 DUST1_ON_SPEC_ALT_ABOVE_MEAN_SEA_LVL_FDHGT diff --git a/parm/global_1x1_paramlist_g2 b/parm/global_1x1_paramlist_g2 index b3beaee5e..08afa98cb 100644 --- a/parm/global_1x1_paramlist_g2 +++ b/parm/global_1x1_paramlist_g2 @@ -644,3 +644,4 @@ WEASD:surface WILT:surface SNOD:surface VIS:surface +ICEG:10 m above mean sea level diff --git a/parm/global_1x1_paramlist_g2.f000 b/parm/global_1x1_paramlist_g2.f000 index 9217ac1b8..e36532974 100644 --- a/parm/global_1x1_paramlist_g2.f000 +++ b/parm/global_1x1_paramlist_g2.f000 @@ -589,3 +589,4 @@ WEASD:surface WILT:surface SNOD:surface VIS:surface +ICEG:10 m above mean sea level diff --git a/parm/post_avblflds.xml b/parm/post_avblflds.xml index 7bcb31b20..7cb4d650d 100755 --- a/parm/post_avblflds.xml +++ b/parm/post_avblflds.xml @@ -4818,6 +4818,14 @@ 3.0 + + 588 + ICEG_ON_SPEC_ALT_ABOVE_MEAN_SEA_LVL + ICEG + spec_alt_above_mean_sea_lvl + 4.0 + + 601 DUST1_ON_SPEC_ALT_ABOVE_MEAN_SEA_LVL_FDHGT diff --git a/parm/postcntrl_gfs.xml b/parm/postcntrl_gfs.xml index bab48dcbf..e3e008044 100755 --- a/parm/postcntrl_gfs.xml +++ b/parm/postcntrl_gfs.xml @@ -1082,6 +1082,12 @@ 3.0 + + ICEG_ON_SPEC_ALT_ABOVE_MEAN_SEA_LVL + 10. + 4.0 + + diff --git a/parm/postcntrl_gfs_f00.xml b/parm/postcntrl_gfs_f00.xml index ce4db226b..8f2bc141c 100755 --- a/parm/postcntrl_gfs_f00.xml +++ b/parm/postcntrl_gfs_f00.xml @@ -816,6 +816,12 @@ 3.0 + + ICEG_ON_SPEC_ALT_ABOVE_MEAN_SEA_LVL + 10. + 4.0 + + diff --git a/parm/postxconfig-NT-GFS-F00.txt b/parm/postxconfig-NT-GFS-F00.txt index d58098f1b..129d2fc7e 100644 --- a/parm/postxconfig-NT-GFS-F00.txt +++ b/parm/postxconfig-NT-GFS-F00.txt @@ -1,5 +1,5 @@ 1 -136 +137 GFSPRS 0 ncep_nco @@ -5048,3 +5048,40 @@ hybrid_lvl ? ? ? +588 +ICEG_ON_SPEC_ALT_ABOVE_MEAN_SEA_LVL +? +1 +tmpl4_0 +ICEG +? +? +spec_alt_above_mean_sea_lvl +0 +? +1 +10. +? +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-GFS.txt b/parm/postxconfig-NT-GFS.txt index 2ea3fce2b..3acde431d 100644 --- a/parm/postxconfig-NT-GFS.txt +++ b/parm/postxconfig-NT-GFS.txt @@ -1,5 +1,5 @@ 1 -185 +186 GFSPRS 0 ncep_nco @@ -6861,3 +6861,40 @@ hybrid_lvl ? ? ? +588 +ICEG_ON_SPEC_ALT_ABOVE_MEAN_SEA_LVL +? +1 +tmpl4_0 +ICEG +? +? +spec_alt_above_mean_sea_lvl +0 +? +1 +10. +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +4.0 +0 +0 +0 +? +? +? diff --git a/scripts/exgfs_nceppost.sh.ecf b/scripts/exgfs_nceppost.sh.ecf index 18e8f2d33..274efbe11 100755 --- a/scripts/exgfs_nceppost.sh.ecf +++ b/scripts/exgfs_nceppost.sh.ecf @@ -472,13 +472,22 @@ do SPECIALFL=${PREFIX}gtg.grb2 SPECIALFLIDX=${PREFIX}gtg.grb2i + SPECIALFL0p25=${PREFIX}gtg.0p25 + +#Generate 0.25 deg. + $WGRIB2 $PGBOUT -set_grib_type same -new_grid_winds earth \ + -new_grid_interpolation bilinear \ + -set_bitmap 1 \ + -new_grid latlon 0:1440:0.25 90:721:-0.25 ${SPECIALFL0p25}.f${fhr}.grib2 if test $SENDCOM = "YES" then cp $PGBOUT $COMOUT/${SPECIALFL}f$fhr cp $PGIOUT $COMOUT/${SPECIALFLIDX}f$fhr + cp ${SPECIALFL0p25}.f${fhr}.grib2 $COMOUT/${SPECIALFL0p25}.f${fhr}.grib2 if [ $SENDDBN = YES ]; then $DBNROOT/bin/dbn_alert MODEL GFS_GTG_GB2 $job $COMOUT/${SPECIALFL}f$fhr + $DBNROOT/bin/dbn_alert MODEL GFS_GTG_0p25_GB2 $job $COMOUT/${SPECIALFL0p25}.f${fhr}.grib2 fi fi else diff --git a/sorc/ncep_post.fd/CALVESSEL.f b/sorc/ncep_post.fd/CALVESSEL.f new file mode 100644 index 000000000..cf5d11b4d --- /dev/null +++ b/sorc/ncep_post.fd/CALVESSEL.f @@ -0,0 +1,64 @@ + SUBROUTINE CALVESSEL(ICEG) +! Algorithm for calculating ice growth rate + use vrbls2d, only: sst, u10h, v10h, tshltr + use masks, only: sm, sice + use ctlblk_mod, only: jsta, jend, im, spval +!------------------------------------------- + implicit none + integer I, J + real TSFC_C,TSHLTR_C,SST_C + real, parameter :: C2K=273.15 + real, dimension(im,jsta:jend) :: pr, spd10 + real,intent(out) :: ICEG(im,jsta:jend) + +! allocate (thsfc(im,jsta:jend),tsfc(im,jsta:jend)) + + DO J=JSTA,JEND + DO I=1,IM +! CALCULATE SPEED + SPD10(i,j)=SQRT(U10H(I,J)**2+V10H(I,J)**2) + if (SPD10(i,j).gt.50) then + iceg(i,j)=0. + CYCLE + endif + +! Reverse of land mask use le instead of ge from original code +!! MASK CHECK + if((sice(i,j).ge.0.5).or.(sm(i,j).le.0.5)) then + ICEG(i,j)=0. + CYCLE + endif + +!!! CHANGE TEMP to FROM K to C +!!! TEMPERATURE CHECK + SST_C=SST(I,J)-C2K + TSHLTR_C=TSHLTR(I,J)-C2K + if((SST_C.lt.-1.7).OR. & + (SST_C.gt.12.0)) then + ICEG(I,j)=0. + CYCLE + endif + + if((TSHLTR_C.gt.0.).OR. & + (TSHLTR_C.lt.-40.)) then + ICEG(I,j)=0. + CYCLE + endif + +! CALCULATE ICE GROWTH + PR(i,j)=SPD10(i,j)*(-1.7-TSHLTR_C)/(1.+.4*(SST_C+1.7)) + ICEG(i,j)=(2.73E-02)*PR(i,j)+(2.91E-04)*PR(i,j)*PR(i,j) & + +(1.84E-06)*PR(i,j)**3 + +!! ICE GROWTH CHECK + if (ICEG(i,j).LT.0.) THEN + ICEG(I,J)=0. + else +! Convert to m/s from cm/hr + ICEG(i,j)=(1./3.6E+05)*ICEG(I,J) + endif + + ENDDO + ENDDO + + END diff --git a/sorc/ncep_post.fd/INITPOST_GFS_NEMS_MPIIO.f b/sorc/ncep_post.fd/INITPOST_GFS_NEMS_MPIIO.f index e68f39aeb..d2a29ae81 100644 --- a/sorc/ncep_post.fd/INITPOST_GFS_NEMS_MPIIO.f +++ b/sorc/ncep_post.fd/INITPOST_GFS_NEMS_MPIIO.f @@ -1989,7 +1989,11 @@ SUBROUTINE INITPOST_GFS_NEMS_MPIIO(iostatusAER) 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 + if (sice(i,j) >= 0.15) then + sst(i,j)=271.4 + else + sst(i,j) = ths(i,j) * (pint(i,j,lp1)/p1000)**capa + endif else sst(i,j) = spval endif diff --git a/sorc/ncep_post.fd/INITPOST_NETCDF.f b/sorc/ncep_post.fd/INITPOST_NETCDF.f index 646a54973..caddbdb4a 100644 --- a/sorc/ncep_post.fd/INITPOST_NETCDF.f +++ b/sorc/ncep_post.fd/INITPOST_NETCDF.f @@ -1315,7 +1315,11 @@ SUBROUTINE INITPOST_NETCDF(ncid3d) 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 + if (sice(i,j) >= 0.15) then + sst(i,j) = 271.4 + else + sst(i,j) = ths(i,j) * (pint(i,j,lp1)/p1000)**capa + endif else sst(i,j) = spval endif diff --git a/sorc/ncep_post.fd/RQSTFLD.f b/sorc/ncep_post.fd/RQSTFLD.f index 70ae3dc8a..ede321b23 100644 --- a/sorc/ncep_post.fd/RQSTFLD.f +++ b/sorc/ncep_post.fd/RQSTFLD.f @@ -1810,6 +1810,13 @@ module RQSTFLD_mod DATA IFILV(587),AVBL(587),IQ(587),IS(587),AVBLGRB2(587) & & /1,'ICING FDHEIGHT HGT ',168,105, & 'ICI ON spec_alt_above_mean_sea_lvl'/ +!icing vessel + + DATA IFILV(588),AVBL(588),IQ(588),IS(588),AVBLGRB2(588) & + & /1,'ICE GROWTH RATE AT FDHEIGHT HGT ', & + 097,001, & + & 'ICEG ON spec-hgt_above_mean_sea_lvl'/ + ! Reserving Index 550-600 for grib2 diff --git a/sorc/ncep_post.fd/SURFCE.f b/sorc/ncep_post.fd/SURFCE.f index c0c58dc07..a2f363c1f 100644 --- a/sorc/ncep_post.fd/SURFCE.f +++ b/sorc/ncep_post.fd/SURFCE.f @@ -85,7 +85,7 @@ SUBROUTINE SURFCE ,fieldcapa,edir,ecan,etrans,esnow,U10mean,V10mean, & avgedir,avgecan,avgetrans,avgesnow,acgraup,acfrain, & acond,maxqshltr,minqshltr,avgpotevp,AVGPREC_CONT, & - AVGCPRATE_CONT + AVGCPRATE_CONT,sst use soil, only: stc, sllevel, sldpth, smc, sh2o use masks, only: lmh, sm, sice, htm, gdlat, gdlon use physcons_post,only: CON_EPS, CON_EPSM1 @@ -130,6 +130,7 @@ SUBROUTINE SURFCE real, dimension(im,jsta:jend) :: evp real, dimension(im,jsta_2l:jend_2u) :: egrid1, egrid2 real, dimension(im,jm) :: grid1, grid2 + real, dimension(im,jsta_2l:jend_2u) :: iceg ! , ua, va real, allocatable, dimension(:,:,:) :: sleet, rain, freezr, snow ! real, dimension(im,jm,nalg) :: sleet, rain, freezr, snow @@ -2768,6 +2769,44 @@ SUBROUTINE SURFCE ! ! SRD ! + +! Ice Growth Rate +! + IF (IGET(588).GT.0) THEN + ID(1:25) = 0 + ISVALUE = 10 + + CALL CALVESSEL(ICEG(1,jsta)) + + DO J=JSTA,JEND + DO I=1,IM + GRID1(I,J) = ICEG(I,J) + ENDDO + ENDDO + + if(grib=='grib1') then + CALL GRIBIT(IGET(588),LVLS(1,IGET(588)),GRID1,IM,JM) + elseif(grib=='grib2') then + cfld=cfld+1 + fld_info(cfld)%ifld=IAVBLFLD(IGET(588)) + 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 + ! !*** BLOCK 4. PRECIPITATION RELATED FIELDS. !MEB 6/17/02 ASSUMING THAT ALL ACCUMULATED FIELDS NEVER EMPTY diff --git a/sorc/ncep_post.fd/makefile_module b/sorc/ncep_post.fd/makefile_module index 5557ee7c0..db8a3690d 100755 --- a/sorc/ncep_post.fd/makefile_module +++ b/sorc/ncep_post.fd/makefile_module @@ -94,7 +94,7 @@ OBJS = wrf_io_flags.o getVariable.o getIVariableN.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_smoothseams.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 CALVESSEL.o .SUFFIXES: .F .f .o .f90 .c diff --git a/ush/fv3gfs_downstream_nems.sh b/ush/fv3gfs_downstream_nems.sh index 4449c964c..d930d0683 100755 --- a/ush/fv3gfs_downstream_nems.sh +++ b/ush/fv3gfs_downstream_nems.sh @@ -220,26 +220,26 @@ date if [ $nset = 1 ]; then if [ $fhr3 = anl ]; then - $WGRIB2 -s pgb2file_${fhr3}_0p25 > $COMOUT/${PREFIX}pgrb2.0p25.anl.idx cp pgb2file_${fhr3}_0p25 $COMOUT/${PREFIX}pgrb2.0p25.anl + $WGRIB2 -s pgb2file_${fhr3}_0p25 > $COMOUT/${PREFIX}pgrb2.0p25.anl.idx if [ "$PGBS" = "YES" ]; then - $WGRIB2 -s pgb2file_${fhr3}_0p5 > $COMOUT/${PREFIX}pgrb2.0p50.anl.idx - $WGRIB2 -s pgb2file_${fhr3}_1p0 > $COMOUT/${PREFIX}pgrb2.1p00.anl.idx cp pgb2file_${fhr3}_0p5 $COMOUT/${PREFIX}pgrb2.0p50.anl cp pgb2file_${fhr3}_1p0 $COMOUT/${PREFIX}pgrb2.1p00.anl + $WGRIB2 -s pgb2file_${fhr3}_0p5 > $COMOUT/${PREFIX}pgrb2.0p50.anl.idx + $WGRIB2 -s pgb2file_${fhr3}_1p0 > $COMOUT/${PREFIX}pgrb2.1p00.anl.idx if [ "$PGB1F" = 'YES' ]; then cp pgbfile_${fhr3}_1p0 $COMOUT/${PREFIX}pgrb.1p00.anl $GRBINDEX $COMOUT/${PREFIX}pgrb.1p00.anl $COMOUT/${PREFIX}pgrb.1p00.anl.idx fi fi else - $WGRIB2 -s pgb2file_${fhr3}_0p25 > $COMOUT/${PREFIX}pgrb2.0p25.f${fhr3}.idx cp pgb2file_${fhr3}_0p25 $COMOUT/${PREFIX}pgrb2.0p25.f${fhr3} + $WGRIB2 -s pgb2file_${fhr3}_0p25 > $COMOUT/${PREFIX}pgrb2.0p25.f${fhr3}.idx if [ "$PGBS" = "YES" ]; then - $WGRIB2 -s pgb2file_${fhr3}_0p5 > $COMOUT/${PREFIX}pgrb2.0p50.f${fhr3}.idx - $WGRIB2 -s pgb2file_${fhr3}_1p0 > $COMOUT/${PREFIX}pgrb2.1p00.f${fhr3}.idx cp pgb2file_${fhr3}_0p5 $COMOUT/${PREFIX}pgrb2.0p50.f${fhr3} cp pgb2file_${fhr3}_1p0 $COMOUT/${PREFIX}pgrb2.1p00.f${fhr3} + $WGRIB2 -s pgb2file_${fhr3}_0p5 > $COMOUT/${PREFIX}pgrb2.0p50.f${fhr3}.idx + $WGRIB2 -s pgb2file_${fhr3}_1p0 > $COMOUT/${PREFIX}pgrb2.1p00.f${fhr3}.idx if [ "$PGB1F" = 'YES' ]; then cp pgbfile_${fhr3}_1p0 $COMOUT/${PREFIX}pgrb.1p00.f${fhr3} $GRBINDEX $COMOUT/${PREFIX}pgrb.1p00.f${fhr3} $COMOUT/${PREFIX}pgrb.1p00.f${fhr3}.idx @@ -250,23 +250,23 @@ date elif [ $nset = 2 ]; then if [ $fhr3 = anl ]; then - $WGRIB2 -s pgb2bfile_${fhr3}_0p25 > $COMOUT/${PREFIX}pgrb2b.0p25.anl.idx cp pgb2bfile_${fhr3}_0p25 $COMOUT/${PREFIX}pgrb2b.0p25.anl + $WGRIB2 -s pgb2bfile_${fhr3}_0p25 > $COMOUT/${PREFIX}pgrb2b.0p25.anl.idx if [ "$PGBS" = "YES" ]; then - $WGRIB2 -s pgb2bfile_${fhr3}_0p5 > $COMOUT/${PREFIX}pgrb2b.0p50.anl.idx - $WGRIB2 -s pgb2bfile_${fhr3}_1p0 > $COMOUT/${PREFIX}pgrb2b.1p00.anl.idx cp pgb2bfile_${fhr3}_0p5 $COMOUT/${PREFIX}pgrb2b.0p50.anl cp pgb2bfile_${fhr3}_1p0 $COMOUT/${PREFIX}pgrb2b.1p00.anl + $WGRIB2 -s pgb2bfile_${fhr3}_0p5 > $COMOUT/${PREFIX}pgrb2b.0p50.anl.idx + $WGRIB2 -s pgb2bfile_${fhr3}_1p0 > $COMOUT/${PREFIX}pgrb2b.1p00.anl.idx fi else - $WGRIB2 -s pgb2bfile_${fhr3}_0p25 > $COMOUT/${PREFIX}pgrb2b.0p25.f${fhr3}.idx cp pgb2bfile_${fhr3}_0p25 $COMOUT/${PREFIX}pgrb2b.0p25.f${fhr3} + $WGRIB2 -s pgb2bfile_${fhr3}_0p25 > $COMOUT/${PREFIX}pgrb2b.0p25.f${fhr3}.idx if [ "$PGBS" = "YES" ]; then - $WGRIB2 -s pgb2bfile_${fhr3}_0p5 > $COMOUT/${PREFIX}pgrb2b.0p50.f${fhr3}.idx - $WGRIB2 -s pgb2bfile_${fhr3}_1p0 > $COMOUT/${PREFIX}pgrb2b.1p00.f${fhr3}.idx cp pgb2bfile_${fhr3}_0p5 $COMOUT/${PREFIX}pgrb2b.0p50.f${fhr3} cp pgb2bfile_${fhr3}_1p0 $COMOUT/${PREFIX}pgrb2b.1p00.f${fhr3} + $WGRIB2 -s pgb2bfile_${fhr3}_0p5 > $COMOUT/${PREFIX}pgrb2b.0p50.f${fhr3}.idx + $WGRIB2 -s pgb2bfile_${fhr3}_1p0 > $COMOUT/${PREFIX}pgrb2b.1p00.f${fhr3}.idx fi fi fi From 2cc9925e8dc646835fb920a3a12b36e93fcee1ae Mon Sep 17 00:00:00 2001 From: WenMeng-NOAA <48260754+WenMeng-NOAA@users.noreply.github.com> Date: Tue, 5 Nov 2019 22:28:01 -0500 Subject: [PATCH 07/21] Post cape (#20) * Incorprate couple new computations from Jesse Meng such ad ESRH, DCAPE, Critical Angle. * Add a fix for defining LFC HGT. * Use new grib2 abbrev "DCAPE", "DCAPE", "ESP". * Use NCEP table for new variables, e.g. DCAPE. * Add changes for defining ESP. * Add further changes for 8 new varaibles for hrrr/rap implementation. --- parm/params_grib2_tbl_new_raphrrr | 6 + parm/post_avblflds.xml | 86 ++++ parm/post_avblflds_raphrrr.xml | 87 ++++ sorc/ncep_post.fd/CALCAPE2.f | 795 ++++++++++++++++++++++++++++++ sorc/ncep_post.fd/CALHEL2.f | 497 +++++++++++++++++++ sorc/ncep_post.fd/MISCLN.f | 363 +++++++++++++- sorc/ncep_post.fd/RQSTFLD.f | 29 +- sorc/ncep_post.fd/makefile_module | 3 +- 8 files changed, 1861 insertions(+), 5 deletions(-) create mode 100644 sorc/ncep_post.fd/CALCAPE2.f create mode 100644 sorc/ncep_post.fd/CALHEL2.f diff --git a/parm/params_grib2_tbl_new_raphrrr b/parm/params_grib2_tbl_new_raphrrr index 7d1bd1a0d..9acce6d3a 100755 --- a/parm/params_grib2_tbl_new_raphrrr +++ b/parm/params_grib2_tbl_new_raphrrr @@ -443,6 +443,12 @@ 0 7 198 1 LAI 0 7 199 1 MXUPHL 0 7 200 1 MNUPHL + 0 7 201 1 BNEGELAY + 0 7 202 1 BPOSELAY + 0 7 203 1 DCAPE + 0 7 204 1 EFHL + 0 7 205 1 ESP + 0 7 206 1 CANGLE ! GRIB2 - TABLE 4.2-0-11 PARAMETERS FOR DISCIPLINE 0 CATEGORY 11 0 11 1 0 MSTAV ! diff --git a/parm/post_avblflds.xml b/parm/post_avblflds.xml index 7cb4d650d..63f840182 100755 --- a/parm/post_avblflds.xml +++ b/parm/post_avblflds.xml @@ -6625,6 +6625,92 @@ 4.0 + + 950 + CAPE_ON_0_3KM_ABOVE_GRND + CAPE + spec_hgt_lvl_above_grnd + 0. + spec_hgt_lvl_above_grnd + 3000. + 4.0 + + + + 951 + CIN_ON_0_3KM_ABOVE_GRND + CIN + spec_hgt_lvl_above_grnd + 0. + spec_hgt_lvl_above_grnd + 3000. + 4.0 + + + + 952 + HGT_ON_LFC + HGT + level_free_convection + 6.0 + + + + 953 + EFF_HLCY_ON_SPEC_HGT_LVL_ABOVE_GRND + EFHL + NCEP + surface + 4.0 + + + + 954 + DOWNWARD_CAPE + DCAPE + NCEP + spec_pres_above_grnd + 40000. + spec_pres_above_grnd + 0. + 4.0 + + + + 955 + DENDRITIC_LAYER_DEPTH + LAYTH + NCEP + isothermal + 261. + isothermal + 256. + 4.0 + + + + 956 + ENHANCED_STRETCHING_POTENTIAL + ESP + NCEP + spec_hgt_lvl_above_grnd + 0. + spec_hgt_lvl_above_grnd + 3000. + 4.0 + + + + 957 + CRITICAL_ANGLE + DCAPE + NCEP + spec_hgt_lvl_above_grnd + 0. + spec_hgt_lvl_above_grnd + 500. + 4.0 + diff --git a/parm/post_avblflds_raphrrr.xml b/parm/post_avblflds_raphrrr.xml index 09713749f..a07a1b51a 100755 --- a/parm/post_avblflds_raphrrr.xml +++ b/parm/post_avblflds_raphrrr.xml @@ -5921,5 +5921,92 @@ -4.0 + + 950 + CAPE_ON_0_3KM_ABOVE_GRND + CAPE + spec_hgt_lvl_above_grnd + 0. + spec_hgt_lvl_above_grnd + 3000. + 4.0 + + + + 951 + CIN_ON_0_3KM_ABOVE_GRND + CIN + spec_hgt_lvl_above_grnd + 0. + spec_hgt_lvl_above_grnd + 3000. + 4.0 + + + + 952 + HGT_ON_LFC + HGT + level_free_convection + 6.0 + + + + 953 + EFF_HLCY_ON_SPEC_HGT_LVL_ABOVE_GRND + EFHL + NCEP + surface + 4.0 + + + + 954 + DOWNWARD_CAPE + DCAPE + NCEP + spec_pres_above_grnd + 40000. + spec_pres_above_grnd + 0. + 4.0 + + + + 955 + DENDRITIC_LAYER_DEPTH + LAYTH + NCEP + isothermal + 261. + isothermal + 256. + 4.0 + + + + 956 + ENHANCED_STRETCHING_POTENTIAL + ESP + NCEP + spec_hgt_lvl_above_grnd + 0. + spec_hgt_lvl_above_grnd + 3000. + 4.0 + + + + 957 + CRITICAL_ANGLE + CANGLE + NCEP + spec_hgt_lvl_above_grnd + 0. + spec_hgt_lvl_above_grnd + 500. + 4.0 + + diff --git a/sorc/ncep_post.fd/CALCAPE2.f b/sorc/ncep_post.fd/CALCAPE2.f new file mode 100644 index 000000000..6f593dc86 --- /dev/null +++ b/sorc/ncep_post.fd/CALCAPE2.f @@ -0,0 +1,795 @@ + SUBROUTINE CALCAPE2(ITYPE,DPBND,P1D,T1D,Q1D,L1D, & + CAPE,CINS,LFC,ESRHL,ESRHH, & + DCAPE,DGLD,ESP) +! SUBROUTINE CALCAPE(ITYPE,DPBND,P1D,T1D,Q1D,L1D,CAPE, & +! CINS,PPARC,ZEQL,THUND) +!$$$ SUBPROGRAM DOCUMENTATION BLOCK +! . . . +! SUBPROGRAM: CALCAPE COMPUTES CAPE AND CINS +! PRGRMMR: TREADON ORG: W/NP2 DATE: 93-02-10 +! +! ABSTRACT: +! +! THIS ROUTINE COMPUTES CAPE AND CINS GIVEN TEMPERATURE, +! PRESSURE, AND SPECIFIC HUMIDTY. IN "STORM AND CLOUD +! DYNAMICS" (1989, ACADEMIC PRESS) COTTON AND ANTHES DEFINE +! CAPE (EQUATION 9.16, P501) AS +! +! EL +! CAPE = SUM G * LN(THETAP/THETAA) DZ +! LCL +! +! WHERE, +! EL = EQUILIBRIUM LEVEL, +! LCL = LIFTING CONDENSTATION LEVEL, +! G = GRAVITATIONAL ACCELERATION, +! THETAP = LIFTED PARCEL POTENTIAL TEMPERATURE, +! THETAA = AMBIENT POTENTIAL TEMPERATURE. +! +! NOTE THAT THE INTEGRAND LN(THETAP/THETAA) APPROXIMATELY +! EQUALS (THETAP-THETAA)/THETAA. THIS RATIO IS OFTEN USED +! IN THE DEFINITION OF CAPE/CINS. +! +! TWO TYPES OF CAPE/CINS CAN BE COMPUTED BY THIS ROUTINE. THE +! SUMMATION PROCESS IS THE SAME FOR BOTH CASES. WHAT DIFFERS +! IS THE DEFINITION OF THE PARCEL TO LIFT. FOR ITYPE=1 THE +! PARCEL WITH THE WARMEST THETA-E IN A DPBND PASCAL LAYER ABOVE +! THE MODEL SURFACE IS LIFTED. THE ARRAYS P1D, T1D, AND Q1D +! ARE NOT USED. FOR ITYPE=2 THE ARRAYS P1D, T1D, AND Q1D +! DEFINE THE PARCEL TO LIFT IN EACH COLUMN. BOTH TYPES OF +! CAPE/CINS MAY BE COMPUTED IN A SINGLE EXECUTION OF THE POST +! PROCESSOR. +! +! THIS ALGORITHM PROCEEDS AS FOLLOWS. +! FOR EACH COLUMN, +! (1) INITIALIZE RUNNING CAPE AND CINS SUM TO 0.0 +! (2) COMPUTE TEMPERATURE AND PRESSURE AT THE LCL USING +! LOOK UP TABLE (PTBL). USE EITHER PARCEL THAT GIVES +! MAX THETAE IN LOWEST DPBND ABOVE GROUND (ITYPE=1) +! OR GIVEN PARCEL FROM T1D,Q1D,...(ITYPE=2). +! (3) COMPUTE THE TEMP OF A PARCEL LIFTED FROM THE LCL. +! WE KNOW THAT THE PARCEL'S +! EQUIVALENT POTENTIAL TEMPERATURE (THESP) REMAINS +! CONSTANT THROUGH THIS PROCESS. WE CAN +! COMPUTE TPAR USING THIS KNOWLEDGE USING LOOK +! UP TABLE (SUBROUTINE TTBLEX). +! (4) FIND THE EQUILIBRIUM LEVEL. THIS IS DEFINED AS THE +! HIGHEST POSITIVELY BUOYANT LAYER. +! (IF THERE IS NO POSITIVELY BUOYANT LAYER, CAPE/CINS +! WILL BE ZERO) +! (5) COMPUTE CAPE/CINS. +! (A) COMPUTE THETAP. WE KNOW TPAR AND P. +! (B) COMPUTE THETAA. WE KNOW T AND P. +! (6) ADD G*(THETAP-THETAA)*DZ TO THE RUNNING CAPE OR CINS SUM. +! (A) IF THETAP > THETAA, ADD TO THE CAPE SUM. +! (B) IF THETAP < THETAA, ADD TO THE CINS SUM. +! (7) ARE WE AT EQUILIBRIUM LEVEL? +! (A) IF YES, STOP THE SUMMATION. +! (B) IF NO, CONTIUNUE THE SUMMATION. +! (8) ENFORCE LIMITS ON CAPE AND CINS (I.E. NO NEGATIVE CAPE) +! +! PROGRAM HISTORY LOG: +! 93-02-10 RUSS TREADON +! 93-06-19 RUSS TREADON - GENERALIZED ROUTINE TO ALLOW FOR +! TYPE 2 CAPE/CINS CALCULATIONS. +! 94-09-23 MIKE BALDWIN - MODIFIED TO USE LOOK UP TABLES +! INSTEAD OF COMPLICATED EQUATIONS. +! 94-10-13 MIKE BALDWIN - MODIFIED TO CONTINUE CAPE/CINS CALC +! UP TO AT HIGHEST BUOYANT LAYER. +! 98-06-12 T BLACK - CONVERSION FROM 1-D TO 2-D +! 98-08-18 T BLACK - COMPUTE APE INTERNALLY +! 00-01-04 JIM TUCCILLO - MPI VERSION +! 02-01-15 MIKE BALDWIN - WRF VERSION +! 03-08-24 G MANIKIN - ADDED LEVEL OF PARCEL BEING LIFTED +! AS OUTPUT FROM THE ROUTINE AND ADDED +! THE DEPTH OVER WHICH ONE SEARCHES FOR +! THE MOST UNSTABLE PARCEL AS INPUT +! 10-09-09 G MANIKIN - CHANGED COMPUTATION TO USE VIRTUAL TEMP +! - ADDED EQ LVL HGHT AND THUNDER PARAMETER +! 15-xx-xx S MOORTHI - optimization and threading +! 19-09-03 J MENG - MODIFIED TO ADD 0-3KM CAPE/CINS, LFC, +! EFFECTIVE HELICITY, DOWNDRAFT CAPE, +! DENDRITIC GROWTH LAYER DEPTH, ESP +! +! USAGE: CALL CALCAPE2(ITYPE,DPBND,P1D,T1D,Q1D,L1D, & +! CAPE,CINS,LFC,ESRHL,ESRHH, & +! DCAPE,DGLD,ESP) +! +! INPUT ARGUMENT LIST: +! ITYPE - INTEGER FLAG SPECIFYING HOW PARCEL TO LIFT IS +! IDENTIFIED. SEE COMMENTS ABOVE. +! DPBND - DEPTH OVER WHICH ONE SEARCHES FOR MOST UNSTABLE PARCEL +! P1D - ARRAY OF PRESSURE OF PARCELS TO LIFT. +! T1D - ARRAY OF TEMPERATURE OF PARCELS TO LIFT. +! Q1D - ARRAY OF SPECIFIC HUMIDITY OF PARCELS TO LIFT. +! L1D - ARRAY OF MODEL LEVEL OF PARCELS TO LIFT. +! +! OUTPUT ARGUMENT LIST: +! CAPE - CONVECTIVE AVAILABLE POTENTIAL ENERGY (J/KG) +! CINS - CONVECTIVE INHIBITION (J/KG) +! LFC - LEVEL OF FREE CONVECTION (M) +! ESRHL - LOWER BOUND TO ACCOUNT FOR EFFECTIVE HELICITY CALCULATION +! ESRHH - UPPER BOUND TO ACCOUNT FOR EFFECTIVE HELICITY CALCULATION +! DCAPE - DOWNDRAFT CAPE (J/KG) +! DGLD - DENDRITIC GROWTH LAYER DEPTH (M) +! ESP - ENHANCED STRETCHING POTENTIAL +! +! OUTPUT FILES: +! STDOUT - RUN TIME STANDARD OUT. +! +! SUBPROGRAMS CALLED: +! UTILITIES: +! BOUND - BOUND (CLIP) DATA BETWEEN UPPER AND LOWER LIMTS. +! TTBLEX - LOOKUP TABLE ROUTINE TO GET T FROM THETAE AND P +! +! LIBRARY: +! COMMON - +! +! ATTRIBUTES: +! LANGUAGE: FORTRAN 90 +! MACHINE : CRAY C-90 +!$$$ +! + use vrbls3d, only: pmid, t, q, zint + use vrbls2d, only: fis + use gridspec_mod, only: gridtype + use masks, only: lmh + use params_mod, only: d00, h1m12, h99999, h10e5, capa, elocp, eps, & + oneps, g, tfrz + use lookup_mod, only: thl, rdth, jtb, qs0, sqs, rdq, itb, ptbl, & + plq, ttbl, pl, rdp, the0, sthe, rdthe, ttblq, & + itbq, jtbq, rdpq, the0q, stheq, rdtheq + use ctlblk_mod, only: jsta_2l, jend_2u, lm, jsta, jend, im, jm, me, jsta_m, jend_m + +! +!- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + implicit none +! +! INCLUDE/SET PARAMETERS. CONSTANTS ARE FROM BOLTON (MWR, 1980). + real,PARAMETER :: ISMTHP=2,ISMTHT=2,ISMTHQ=2 +! +! DECLARE VARIABLES. +! + integer,intent(in) :: ITYPE + real,intent(in) :: DPBND + integer, dimension(IM,Jsta:jend),intent(in) :: L1D + real, dimension(IM,Jsta:jend),intent(in) :: P1D,T1D +! real, dimension(IM,jsta:jend),intent(inout) :: Q1D,CAPE,CINS,PPARC,ZEQL + real, dimension(IM,jsta:jend),intent(inout) :: Q1D,CAPE,CINS + real, dimension(IM,jsta:jend) :: PPARC,ZEQL + real, dimension(IM,jsta:jend),intent(inout) :: LFC,ESRHL,ESRHH + real, dimension(IM,jsta:jend),intent(inout) :: DCAPE,DGLD,ESP + integer, dimension(im,jsta:jend) ::L12,L17,L3KM +! + integer, dimension(im,jsta:jend) :: IEQL, IPTB, ITHTB, PARCEL, KLRES, KHRES, LCL, IDX +! + real, dimension(im,jsta:jend) :: THESP, PSP, CAPE20, QQ, PP, THUND + integer, dimension(im,jsta:jend) :: PARCEL2 + real, dimension(im,jsta:jend) :: THESP2,PSP2 + real, dimension(im,jsta:jend) :: CAPE4,CINS4 + REAL, ALLOCATABLE :: TPAR(:,:,:) + REAL, ALLOCATABLE :: TPAR2(:,:,:) + + LOGICAL THUNDER(IM,jsta:jend), NEEDTHUN + real PSFCK,PKL,TBTK,QBTK,APEBTK,TTHBTK,TTHK,APESPK,TPSPK, & + BQS00K,SQS00K,BQS10K,SQS10K,BQK,SQK,TQK,PRESK,GDZKL,THETAP, & + THETAA,P00K,P10K,P01K,P11K,TTHESK,ESATP,QSATP,TVP,TV + real PRESK2, ESATP2, QSATP2, TVP2, THETAP2, TV2, THETAA2 + real,external :: fpvsnew + integer I,J,L,KNUML,KNUMH,LBEG,LEND,IQ, KB,ITTBK + integer IE,IW,JN,JS,IVE(JM),IVW(JM),JVN,JVS + integer ISTART,ISTOP,JSTART,JSTOP + real, dimension(IM,jsta:jend) :: HTSFC + +! integer I,J,L,KNUML,KNUMH,LBEG,LEND,IQ,IT,LMHK, KB,ITTBK +! +!************************************************************** +! START CALCAPE HERE. +! + ALLOCATE(TPAR(IM,JSTA_2L:JEND_2U,LM)) + ALLOCATE(TPAR2(IM,JSTA_2L:JEND_2U,LM)) +! +! COMPUTE CAPE/CINS +! +! WHICH IS: THE SUM FROM THE LCL TO THE EQ LEVEL OF +! G * (LN(THETAP) - LN(THETAA)) * DZ +! +! (POSITIVE AREA FOR CAPE, NEGATIVE FOR CINS) +! +! WHERE: +! THETAP IS THE PARCEL THETA +! THETAA IS THE AMBIENT THETA +! DZ IS THE THICKNESS OF THE LAYER +! +! USING LCL AS LEVEL DIRECTLY BELOW SATURATION POINT +! AND EQ LEVEL IS THE HIGHEST POSITIVELY BUOYANT LEVEL. +! +! IEQL = EQ LEVEL +! P_thetaemax - real pressure of theta-e max parcel (Pa) +! +! INITIALIZE CAPE AND CINS ARRAYS +! +!$omp parallel do + DO J=JSTA,JEND + DO I=1,IM + CAPE(I,J) = D00 + CAPE20(I,J) = D00 + CAPE4(I,J) = D00 + CINS(I,J) = D00 + CINS4(I,J) = D00 + LCL(I,J) = 0 + THESP(I,J) = D00 + IEQL(I,J) = LM + PARCEL(I,J) = LM + PSP(I,J) = D00 + PPARC(I,J) = D00 + THUNDER(I,J) = .TRUE. + LFC(I,J) = D00 + ESRHL(I,J) = D00 + ESRHH(I,J) = D00 + DCAPE(I,J) = D00 + DGLD(I,J) = D00 + ESP(I,J) = D00 + THESP2(I,J) = 500. + PSP2(I,J) = D00 + PARCEL2(I,J) = LM + ENDDO + ENDDO +! +!$omp parallel do + DO L=1,LM + DO J=JSTA,JEND + DO I=1,IM + TPAR(I,J,L) = D00 + TPAR2(I,J,L) = D00 + ENDDO + ENDDO + ENDDO +! +! FIND SURFACE HEIGHT +! + IF(gridtype == 'E')THEN + JVN = 1 + JVS = -1 + do J=JSTA,JEND + IVE(J) = MOD(J,2) + IVW(J) = IVE(J)-1 + enddo + ISTART = 2 + ISTOP = IM-1 + JSTART = JSTA_M + JSTOP = JEND_M + ELSE IF(gridtype == 'B')THEN + JVN = 1 + JVS = 0 + do J=JSTA,JEND + IVE(J)=1 + IVW(J)=0 + enddo + ISTART = 2 + ISTOP = IM-1 + JSTART = JSTA_M + JSTOP = JEND_M + ELSE + JVN = 0 + JVS = 0 + do J=JSTA,JEND + IVE(J) = 0 + IVW(J) = 0 + enddo + ISTART = 1 + ISTOP = IM + JSTART = JSTA + JSTOP = JEND + END IF +!!$omp parallel do private(htsfc,ie,iw) + IF(gridtype /= 'A') CALL EXCH(FIS(1:IM,JSTA:JEND)) + DO J=JSTART,JSTOP + DO I=ISTART,ISTOP + IE = I+IVE(J) + IW = I+IVW(J) + JN = J+JVN + JS = J+JVS +!mp PDSLVK=(PD(IW,J)*RES(IW,J)+PD(IE,J)*RES(IE,J)+ +!mp 1 PD(I,J+1)*RES(I,J+1)+PD(I,J-1)*RES(I,J-1))*0.25 +!mp PSFCK=AETA(LMV(I,J))*PDSLVK+PT + IF (gridtype=='B')THEN + HTSFC(I,J) = (0.25/g)*(FIS(IW,J)+FIS(IE,J)+FIS(I,JN)+FIS(IE,JN)) + ELSE + HTSFC(I,J) = (0.25/g)*(FIS(IW,J)+FIS(IE,J)+FIS(I,JN)+FIS(I,JS)) + ENDIF + ENDDO + ENDDO +! +! TYPE 2 CAPE/CINS: +! NOTE THAT FOR TYPE 1 CAPE/CINS ARRAYS P1D, T1D, Q1D +! ARE DUMMY ARRAYS. +! + IF (ITYPE == 2) THEN +!$omp parallel do private(i,j) + DO J=JSTA,JEND + DO I=1,IM + Q1D(I,J) = MIN(MAX(H1M12,Q1D(I,J)),H99999) + ENDDO + ENDDO + ENDIF +!-------FOR ITYPE=1--FIND MAXIMUM THETA E LAYER IN LOWEST DPBND ABOVE GROUND------- +!-------FOR ITYPE=2--FIND THETA E LAYER OF GIVEN T1D, Q1D, P1D--------------------- +!--------------TRIAL MAXIMUM BUOYANCY LEVEL VARIABLES------------------- + + DO KB=1,LM +!hc IF (ITYPE.EQ.2.AND.KB.GT.1) cycle + IF (ITYPE == 1 .OR. (ITYPE == 2 .AND. KB == 1)) THEN + +!$omp parallel do private(i,j,apebtk,apespk,bqk,bqs00k,bqs10k,iq,ittbk, & +!$omp & p00k,p01k,p10k,p11k,pkl,psfck,qbtk,sqk,sqs00k, & +!$omp & sqs10k,tbtk,tpspk,tqk,tthbtk,tthesk,tthk) + DO J=JSTA,JEND + DO I=1,IM + PSFCK = PMID(I,J,NINT(LMH(I,J))) + PKL = PMID(I,J,KB) + +!hc IF (ITYPE.EQ.1.AND.(PKL.LT.PSFCK-DPBND.OR.PKL.GT.PSFCK)) cycle + IF (ITYPE ==2 .OR. & + (ITYPE == 1 .AND. (PKL >= PSFCK-DPBND .AND. PKL <= PSFCK)))THEN + IF (ITYPE == 1) THEN + TBTK = T(I,J,KB) + QBTK = max(0.0, Q(I,J,KB)) + APEBTK = (H10E5/PKL)**CAPA + ELSE + PKL = P1D(I,J) + TBTK = T1D(I,J) + QBTK = max(0.0, Q1D(I,J)) + APEBTK = (H10E5/PKL)**CAPA + ENDIF + +!----------Breogan Gomez - 2009-02-06 +! To prevent QBTK to be less than 0 which leads to a unrealistic value of PRESK +! and a floating invalid. + +! if(QBTK < 0) QBTK = 0 + +!--------------SCALING POTENTIAL TEMPERATURE & TABLE INDEX-------------- + TTHBTK = TBTK*APEBTK + TTHK = (TTHBTK-THL)*RDTH + QQ(I,J) = TTHK - AINT(TTHK) + ITTBK = INT(TTHK) + 1 +!--------------KEEPING INDICES WITHIN THE TABLE------------------------- + IF(ITTBK < 1) THEN + ITTBK = 1 + QQ(I,J) = D00 + ENDIF + IF(ITTBK >= JTB) THEN + ITTBK = JTB-1 + QQ(I,J) = D00 + ENDIF +!--------------BASE AND SCALING FACTOR FOR SPEC. HUMIDITY--------------- + BQS00K = QS0(ITTBK) + SQS00K = SQS(ITTBK) + BQS10K = QS0(ITTBK+1) + SQS10K = SQS(ITTBK+1) +!--------------SCALING SPEC. HUMIDITY & TABLE INDEX--------------------- + BQK = (BQS10K-BQS00K)*QQ(I,J) + BQS00K + SQK = (SQS10K-SQS00K)*QQ(I,J) + SQS00K + TQK = (QBTK-BQK)/SQK*RDQ + PP(I,J) = TQK-AINT(TQK) + IQ = INT(TQK)+1 +!--------------KEEPING INDICES WITHIN THE TABLE------------------------- + IF(IQ < 1) THEN + IQ = 1 + PP(I,J) = D00 + ENDIF + IF(IQ >= ITB) THEN + IQ = ITB-1 + PP(I,J) = D00 + ENDIF +!--------------SATURATION PRESSURE AT FOUR SURROUNDING TABLE PTS.------- + P00K = PTBL(IQ ,ITTBK ) + P10K = PTBL(IQ+1,ITTBK ) + P01K = PTBL(IQ ,ITTBK+1) + P11K = PTBL(IQ+1,ITTBK+1) +!--------------SATURATION POINT VARIABLES AT THE BOTTOM----------------- + TPSPK = P00K + (P10K-P00K)*PP(I,J) + (P01K-P00K)*QQ(I,J) & + + (P00K-P10K-P01K+P11K)*PP(I,J)*QQ(I,J) + +!!from WPP::tgs APESPK=(H10E5/TPSPK)**CAPA + if (TPSPK > 1.0e-3) then + APESPK = (max(0.,H10E5/ TPSPK))**CAPA + else + APESPK = 0.0 + endif + + TTHESK = TTHBTK * EXP(ELOCP*QBTK*APESPK/TTHBTK) +!--------------CHECK FOR MAXIMUM THETA E-------------------------------- + IF(TTHESK > THESP(I,J)) THEN + PSP (I,J) = TPSPK + THESP(I,J) = TTHESK + PARCEL(I,J) = KB + ENDIF +!--------------CHECK FOR MINIMUM THETA E-------------------------------- + IF(TTHESK < THESP2(I,J)) THEN + PSP2 (I,J) = TPSPK + THESP2(I,J) = TTHESK + PARCEL2(I,J) = KB + ENDIF + END IF + ENDDO ! I loop + ENDDO ! J loop + END IF + ENDDO ! KB loop + +!----FIND THE PRESSURE OF THE PARCEL THAT WAS LIFTED +!$omp parallel do private(i,j) + DO J=JSTA,JEND + DO I=1,IM + PPARC(I,J) = PMID(I,J,PARCEL(I,J)) + ENDDO + ENDDO +! +!-----CHOOSE LAYER DIRECTLY BELOW PSP AS LCL AND------------------------ +!-----ENSURE THAT THE LCL IS ABOVE GROUND.------------------------------ +!-------(IN SOME RARE CASES FOR ITYPE=2, IT IS NOT)--------------------- + DO L=1,LM +!$omp parallel do private(i,j) + DO J=JSTA,JEND + DO I=1,IM + IF (PMID(I,J,L) < PSP(I,J)) LCL(I,J) = L+1 + ENDDO + ENDDO + ENDDO +!$omp parallel do private(i,j) + DO J=JSTA,JEND + DO I=1,IM + IF (LCL(I,J) > NINT(LMH(I,J))) LCL(I,J) = NINT(LMH(I,J)) + IF (ITYPE > 2) THEN + IF (T(I,J,LCL(I,J)) < 263.15) THEN + THUNDER(I,J) = .FALSE. + ENDIF + ENDIF + ENDDO + ENDDO +!----------------------------------------------------------------------- +!---------FIND TEMP OF PARCEL LIFTED ALONG MOIST ADIABAT (TPAR)--------- +!----------------------------------------------------------------------- + DO L=LM,1,-1 +!--------------SCALING PRESSURE & TT TABLE INDEX------------------------ + KNUML = 0 + KNUMH = 0 + DO J=JSTA,JEND + DO I=1,IM + KLRES(I,J) = 0 + KHRES(I,J) = 0 + IF(L <= LCL(I,J)) THEN + IF(PMID(I,J,L) < PLQ)THEN + KNUML = KNUML + 1 + KLRES(I,J) = 1 + ELSE + KNUMH = KNUMH + 1 + KHRES(I,J) = 1 + ENDIF + ENDIF + ENDDO + ENDDO +!*** +!*** COMPUTE PARCEL TEMPERATURE ALONG MOIST ADIABAT FOR PRESSURE 0) THEN + CALL TTBLEX(TPAR(1,JSTA_2L,L),TTBL,ITB,JTB,KLRES & + , PMID(1,JSTA_2L,L),PL,QQ,PP,RDP,THE0,STHE & + , RDTHE,THESP,IPTB,ITHTB) + ENDIF +!*** +!*** COMPUTE PARCEL TEMPERATURE ALONG MOIST ADIABAT FOR PRESSURE>PLQ +!** + IF(KNUMH > 0) THEN + CALL TTBLEX(TPAR(1,JSTA_2L,L),TTBLQ,ITBQ,JTBQ,KHRES & + , PMID(1,JSTA_2L,L),PLQ,QQ,PP,RDPQ & + ,THE0Q,STHEQ,RDTHEQ,THESP,IPTB,ITHTB) + ENDIF + +!------------SEARCH FOR EQ LEVEL---------------------------------------- +!$omp parallel do private(i,j) + DO J=JSTA,JEND + DO I=1,IM + IF(KHRES(I,J) > 0) THEN + IF(TPAR(I,J,L) > T(I,J,L)) IEQL(I,J) = L + ENDIF + ENDDO + ENDDO +! +!$omp parallel do private(i,j) + DO J=JSTA,JEND + DO I=1,IM + IF(KLRES(I,J) > 0) THEN + IF(TPAR(I,J,L) > T(I,J,L)) IEQL(I,J) = L + ENDIF + ENDDO + ENDDO +!----------------------------------------------------------------------- + ENDDO ! end of do l=lm,1,-1 loop +!------------COMPUTE CAPE AND CINS-------------------------------------- + LBEG = 1000 + LEND = 0 + DO J=JSTA,JEND + DO I=1,IM + LBEG = MIN(IEQL(I,J),LBEG) + LEND = MAX(LCL(I,J),LEND) + ENDDO + ENDDO +! +!$omp parallel do private(i,j) + DO J=JSTA,JEND + DO I=1,IM + IF(T(I,J,IEQL(I,J)) > 255.65) THEN + THUNDER(I,J) = .FALSE. + ENDIF + ENDDO + ENDDO +! +!reverse L order from bottom up for ESRH calculation +! + ESRHH = LCL + ESRHL = LCL +! DO L=LBEG,LEND + DO L=LEND,LBEG,-1 + +!$omp parallel do private(i,j) + DO J=JSTA,JEND + DO I=1,IM + IDX(I,J) = 0 + IF(L >= IEQL(I,J).AND.L <= LCL(I,J)) THEN + IDX(I,J) = 1 + ENDIF + ENDDO + ENDDO +! +!$omp parallel do private(i,j,gdzkl,presk,thetaa,thetap,esatp,qsatp,tvp,tv) + DO J=JSTA,JEND + DO I=1,IM + IF(IDX(I,J) > 0) THEN + PRESK = PMID(I,J,L) + GDZKL = (ZINT(I,J,L)-ZINT(I,J,L+1)) * G + ESATP = min(FPVSNEW(TPAR(I,J,L)),PRESK) + QSATP = EPS*ESATP/(PRESK-ESATP*ONEPS) + TVP = TPAR(I,J,L)*(1+0.608*QSATP) + THETAP = TVP*(H10E5/PRESK)**CAPA + TV = T(I,J,L)*(1+0.608*Q(I,J,L)) + THETAA = TV*(H10E5/PRESK)**CAPA + IF(THETAP < THETAA) THEN + CINS4(I,J) = CINS4(I,J) + (LOG(THETAP)-LOG(THETAA))*GDZKL + IF(ZINT(I,J,L)-HTSFC(I,J) <= 3000.) THEN + CINS(I,J) = CINS(I,J) + (LOG(THETAP)-LOG(THETAA))*GDZKL + ENDIF + ELSEIF(THETAP > THETAA) THEN + CAPE4(I,J) = CAPE4(I,J) + (LOG(THETAP)-LOG(THETAA))*GDZKL + IF(ZINT(I,J,L)-HTSFC(I,J) <= 3000.) THEN + CAPE(I,J) = CAPE(I,J) + (LOG(THETAP)-LOG(THETAA))*GDZKL + ENDIF + IF (THUNDER(I,J) .AND. T(I,J,L) < 273.15 & + .AND. T(I,J,L) > 253.15) THEN + CAPE20(I,J) = CAPE20(I,J) + (LOG(THETAP)-LOG(THETAA))*GDZKL + ENDIF + ENDIF + +! LFC + IF (ITYPE .NE. 1) THEN + PRESK2 = PMID(I,J,L+1) + ESATP2 = min(FPVSNEW(TPAR(I,J,L+1)),PRESK2) + QSATP2 = EPS*ESATP2/(PRESK2-ESATP2*ONEPS) + TVP2 = TPAR(I,J,L+1)*(1+0.608*QSATP2) + THETAP2 = TVP2*(H10E5/PRESK2)**CAPA + TV2 = T(I,J,L+1)*(1+0.608*Q(I,J,L+1)) + THETAA2 = TV2*(H10E5/PRESK2)**CAPA + IF(THETAP >= THETAA .AND. THETAP2 <= THETAA2) THEN + IF(LFC(I,J) == D00)THEN + LFC(I,J) = ZINT(I,J,L) + ENDIF + ENDIF + ENDIF +! +! ESRH/CAPE threshold check + IF(ZINT(I,J,L)-HTSFC(I,J) <= 3000.) THEN + IF(CAPE4(I,J) >= 100. .AND. CINS4(I,J) >= -250.) THEN + IF(ESRHL(I,J) == LCL(I,J)) ESRHL(I,J)=L + ENDIF + ESRHH(I,J)=L + ENDIF + + ENDIF !(IDX(I,J) > 0) + ENDDO + ENDDO + ENDDO + +!$omp parallel do private(i,j) + DO J=JSTA,JEND + DO I=1,IM + IF(ESRHH(I,J) > ESRHL(I,J)) ESRHH(I,J)=IEQL(I,J) + ENDDO + ENDDO +! +! ENFORCE LOWER LIMIT OF 0.0 ON CAPE AND UPPER +! LIMIT OF 0.0 ON CINS. +! ENFORCE LFC ABOVE LCL AND BELOW EL +! +!$omp parallel do private(i,j) + DO J=JSTA,JEND + DO I=1,IM + CAPE(I,J) = MAX(D00,CAPE(I,J)) + CINS(I,J) = MIN(CINS(I,J),D00) +! equillibrium height + ZEQL(I,J) = ZINT(I,J,IEQL(I,J)) + LFC(I,J) = MIN(LFC(I,J),ZINT(I,J,IEQL(I,J))) + LFC(I,J) = MAX(ZINT(I,J, LCL(I,J)),LFC(I,J)) + IF (CAPE20(I,J) < 75.) THEN + THUNDER(I,J) = .FALSE. + ENDIF + IF (THUNDER(I,J)) THEN + THUND(I,J) = 1.0 + ELSE + THUND(I,J) = 0.0 + ENDIF + ENDDO + ENDDO +!------------COMPUTE DCAPE-------------------------------------- +!----------------------------------------------------------------------- +!-----CHOOSE LAYER DIRECTLY BELOW PSP2 AS LCL AND------------------------ + DO L=1,LM +!$omp parallel do private(i,j) + DO J=JSTA,JEND + DO I=1,IM + IF (PMID(I,J,L) < PSP2(I,J)) LCL(I,J) = L+1 + ENDDO + ENDDO + ENDDO +!$omp parallel do private(i,j) + DO J=JSTA,JEND + DO I=1,IM + IF (LCL(I,J) > NINT(LMH(I,J))) LCL(I,J) = NINT(LMH(I,J)) + ENDDO + ENDDO + +!---------FIND TEMP OF PARCEL DESCENDED ALONG MOIST ADIABAT (TPAR)--------- +!----------------------------------------------------------------------- + + DO L=LM,1,-1 +!--------------SCALING PRESSURE & TT TABLE INDEX------------------------ + KNUML = 0 + KNUMH = 0 + DO J=JSTA,JEND + DO I=1,IM + KLRES(I,J) = 0 + KHRES(I,J) = 0 + ! IF(L <= LCL(I,J)) THEN + IF(PMID(I,J,L) < PLQ)THEN + KNUML = KNUML + 1 + KLRES(I,J) = 1 + ELSE + KNUMH = KNUMH + 1 + KHRES(I,J) = 1 + ENDIF + ! ENDIF + PSFCK = PMID(I,J,NINT(LMH(I,J))) + PKL = PMID(I,J,L) + IF(PKL >= PSFCK-DPBND) PARCEL2(I,J)=L + ENDDO + ENDDO +!*** +!*** COMPUTE PARCEL TEMPERATURE ALONG MOIST ADIABAT FOR PRESSURE 0) THEN + CALL TTBLEX(TPAR2(1,JSTA_2L,L),TTBL,ITB,JTB,KLRES & + , PMID(1,JSTA_2L,L),PL,QQ,PP,RDP,THE0,STHE & + , RDTHE,THESP2,IPTB,ITHTB) + ENDIF +!*** +!*** COMPUTE PARCEL TEMPERATURE ALONG MOIST ADIABAT FOR PRESSURE>PLQ +!** + IF(KNUMH > 0) THEN + CALL TTBLEX(TPAR2(1,JSTA_2L,L),TTBLQ,ITBQ,JTBQ,KHRES & + , PMID(1,JSTA_2L,L),PLQ,QQ,PP,RDPQ & + , THE0Q,STHEQ,RDTHEQ,THESP2,IPTB,ITHTB) + ENDIF + ENDDO ! end of do l=lm,1,-1 loop + + LBEG = LM + LEND = LM +!$omp parallel do private(i,j) + DO J=JSTA,JEND + DO I=1,IM + ! LBEG = MIN(PARCEL2(I,J),LBEG) + LBEG = MIN(LCL(I,J),LBEG) + ENDDO + ENDDO + + DO L=LBEG,LM +!$omp parallel do private(i,j) + DO J=JSTA,JEND + DO I=1,IM + IDX(I,J) = 0 + ! IF(L >= PARCEL2(I,J)) THEN + IF(L >= LCL(I,J)) THEN + IDX(I,J) = 1 + ENDIF + ENDDO + ENDDO +! +!$omp parallel do private(i,j,gdzkl,presk,thetaa,thetap,esatp,qsatp,tvp,tv) + DO J=JSTA,JEND + DO I=1,IM + IF(IDX(I,J) > 0) THEN + PRESK = PMID(I,J,L) + GDZKL = (ZINT(I,J,L)-ZINT(I,J,L+1)) * G + ESATP = min(FPVSNEW(TPAR2(I,J,L)),PRESK) + QSATP = EPS*ESATP/(PRESK-ESATP*ONEPS) + TVP = TPAR2(I,J,L)*(1+0.608*QSATP) + THETAP = TVP*(H10E5/PRESK)**CAPA + TV = T(I,J,L)*(1+0.608*Q(I,J,L)) + THETAA = TV*(H10E5/PRESK)**CAPA + !IF(THETAP > THETAA) THEN + IF(THETAP < THETAA) THEN + DCAPE(I,J) = DCAPE(I,J) + (LOG(THETAP)-LOG(THETAA))*GDZKL + ENDIF + ENDIF + ENDDO + ENDDO + ENDDO + +!$omp parallel do private(i,j) + DO J=JSTA,JEND + DO I=1,IM + !DCAPE(I,J) = MAX(D00,DCAPE(I,J)) + DCAPE(I,J) = MIN(D00,DCAPE(I,J)) + ENDDO + ENDDO +! +! Dendritic Growth Layer depth +! the layer with temperatures from -12 to -17 C in meters +! + L12=LM + L17=LM + DO L=LM,1,-1 +!$omp parallel do private(i,j) + DO J=JSTA,JEND + DO I=1,IM + IF(T(I,J,L) <= TFRZ-12. .AND. L12(I,J)==LM) L12(I,J)=L + IF(T(I,J,L) <= TFRZ-17. .AND. L17(I,J)==LM) L17(I,J)=L + ENDDO + ENDDO + ENDDO +!$omp parallel do private(i,j) + DO J=JSTA,JEND + DO I=1,IM + IF(L12(I,J).NE.LM .AND. L17(I,J).NE.LM) THEN + DGLD(I,J)=ZINT(I,J,L17(I,J))-ZINT(I,J,L12(I,J)) + DGLD(I,J)=MAX(DGLD(I,J),0.) + ENDIF + ENDDO + ENDDO +! +! Enhanced Stretching Potential +! ESP = (0-3 km MLCAPE / 50 J kg-1) * ((0-3 km lapse rate - 7.0) / 1.0 C (km-1) +! https://www.spc.noaa.gov/exper/soundings/help/params4.html +! + L3KM=LM + DO L=LM,1,-1 +!$omp parallel do private(i,j) + DO J=JSTA,JEND + DO I=1,IM + IF(ZINT(I,J,L)-HTSFC(I,J) <= 3000.) L3KM(I,J)=L + ENDDO + ENDDO + ENDDO +!$omp parallel do private(i,j) + DO J=JSTA,JEND + DO I=1,IM + ESP(I,J) = (CAPE(I,J) / 50.) * (T(I,J,LM) - T(I,J,L3KM(I,J)) - 7.0) + IF((T(I,J,LM) - T(I,J,L3KM(I,J))) < 7.0) ESP(I,J) = 0. +! IF(CAPE(I,J) < 250.) ESP(I,J) = 0. + ENDDO + ENDDO +! + DEALLOCATE(TPAR) + DEALLOCATE(TPAR2) +! + RETURN + END diff --git a/sorc/ncep_post.fd/CALHEL2.f b/sorc/ncep_post.fd/CALHEL2.f new file mode 100644 index 000000000..42da64d76 --- /dev/null +++ b/sorc/ncep_post.fd/CALHEL2.f @@ -0,0 +1,497 @@ + SUBROUTINE CALHEL2(LLOW,LUPP,DEPTH,UST,VST,HELI,CANGLE) +!$$$ SUBPROGRAM DOCUMENTATION BLOCK +! . . . +! SUBPROGRAM: CALHEL COMPUTES STORM RELATIVE HELICITY +! PRGRMMR: BALDWIN ORG: W/NP2 DATE: 94-08-22 +! +! ABSTRACT: +! THIS ROUTINE COMPUTES ESTIMATED STORM MOTION AND +! STORM-RELATIVE ENVIRONMENTAL HELICITY. +! (DAVIES-JONES ET AL 1990) THE ALGORITHM PROCEEDS AS +! FOLLOWS. +! +! THE STORM MOTION COMPUTATION NO LONGER EMPLOYS THE DAVIES AND +! JOHNS (1993) METHOD WHICH DEFINED STORM MOTION AS 30 DEGREES TO +! THE RIGHT OF THE 0-6 KM MEAN WIND AT 75% OF THE SPEED FOR MEAN +! SPEEDS LESS THAN 15 M/S AND 20 DEGREES TO THE RIGHT FOR SPEEDS +! GREATER THAN 15 M/S. INSTEAD, WE NOW USE THE DYNAMIC METHOD +! (BUNKERS ET AL. 1998) WHICH HAS BEEN FOUND TO DO BETTER IN +! CASES WITH 'NON-CLASSIC' HODOGRAPHS (SUCH AS NORTHWEST-FLOW +! EVENTS) AND DO AS WELL OR BETTER THAN THE OLD METHOD IN MORE +! CLASSIC SITUATIONS. +! +! PROGRAM HISTORY LOG: +! 94-08-22 MICHAEL BALDWIN +! 97-03-27 MICHAEL BALDWIN - SPEED UP CODE +! 98-06-15 T BLACK - CONVERSION FROM 1-D TO 2-D +! 00-01-04 JIM TUCCILLO - MPI VERSION +! 00-01-10 G MANIKIN - CHANGED TO BUNKERS METHOD +! 02-05-22 G MANIKIN - NOW ALLOW CHOICE OF COMPUTING +! HELICITY OVER TWO DIFFERENT +! (0-1 and 0-3 KM) DEPTHS +! 03-03-25 G MANIKIN - MODIFIED CODE TO COMPUTE MEAN WINDS +! USING ARITHMETIC AVERAGES INSTEAD OF +! MASS WEIGHTING; DIFFERENCES ARE MINOR +! BUT WANT TO BE CONSISTENT WITH THE +! BUNKERS METHOD +! 04-04-16 M PYLE - MINIMAL MODIFICATIONS, BUT PUT INTO +! NMM WRFPOST CODE +! 05=02-25 H CHUANG - ADD COMPUTATION FOR ARW A GRID +! 05-07-07 BINBIN ZHOU - ADD RSM FOR A GRID +! 19-09-03 J MENG - MODIFIED TO COMPUTE EFFECTIVE HELICITY +! AND CRITICAL ANGLE +! +! USAGE: CALHEL(UST,VST,HELI) +! INPUT ARGUMENT LIST: +! LLOW - LOWER BOUND CAPE>=100 AND CINS>=-250 +! LUPP - UPPER BOUND CAPE< 100 OR CINS< -250 +! DPTH - DEPTH IN METERS OVER WHICH HELICITY SHOULD BE COMPUTED; +! ALLOWS ONE TO DISTINGUISH 0-3 KM AND 0-1 KM VALUES +! +! OUTPUT ARGUMENT LIST: +! UST - ESTIMATED U COMPONENT (M/S) OF STORM MOTION. +! VST - ESTIMATED V COMPONENT (M/S) OF STORM MOTION. +! HELI - STORM-RELATIVE HELICITY (M**2/S**2) +! CANGLE - CRITICAL ANGLE +! CRA +! USHR1 - U COMPONENT (M/S) OF 0-1 KM SHEAR +! VSHR1 - V COMPONENT (M/S) OF 0-1 KM SHEAR +! USHR6 - U COMPONENT (M/S) OF 0-0.5 to 5.5-6.0 KM SHEAR +! VSHR6 - V COMPONENT (M/S) OF 0-0.5 to 5.5-6.0 KM SHEAR +! CRA + +! +! OUTPUT FILES: +! NONE +! +! SUBPROGRAMS CALLED: +! UTILITIES: +! +! LIBRARY: +! COMMON - VRBLS +! LOOPS +! PHYS +! EXTRA +! MASKS +! OPTIONS +! INDX +! +! ATTRIBUTES: +! LANGUAGE: FORTRAN 90 +! MACHINE : IBM SP +!$$$ +! + use vrbls3d, only: zmid, uh, vh, u, v, zint + use vrbls2d, only: fis, u10, v10 + use masks, only: lmv + use params_mod, only: g + use lookup_mod, only: ITB,JTB,ITBQ,JTBQ + use ctlblk_mod, only: jsta, jend, jsta_m, jend_m, jsta_2l, jend_2u, & + lm, im, jm, me + use gridspec_mod, only: gridtype +!- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + implicit none +! + real,PARAMETER :: P150=15000.0,P300=30000.0,S15=15.0 + real,PARAMETER :: D3000=3000.0,PI6=0.5235987756,PI9=0.34906585 + real,PARAMETER :: D5500=5500.0,D6000=6000.0,D7000=7000.0 + real,PARAMETER :: D500=500.0 +! CRA + real,PARAMETER :: D1000=1000.0 + real,PARAMETER :: D1500=1500.0 +! CRA + REAL, PARAMETER :: pi = 3.1415927 + +! +! DECLARE VARIABLES +! + integer,dimension(IM,jsta_2l:jend_2u),intent(in) :: LLOW, LUPP + real,intent(in) :: DEPTH(2) + REAL,dimension(IM,jsta_2l:jend_2u), intent(out) :: UST,VST + REAL,dimension(IM,jsta_2l:jend_2u,2),intent(out) :: HELI + REAL,dimension(IM,jsta_2l:jend_2u), intent(out) :: CANGLE +! + real, dimension(im,jsta_2l:jend_2u) :: HTSFC, UST6, VST6, UST5, VST5, & + UST1, VST1, USHR1, VSHR1, & + USHR6, VSHR6, U1, V1, U2, V2, & + HGT1, HGT2, UMEAN, VMEAN + real, dimension(im,jsta_2l:jend_2u) :: USHR05,VSHR05 + +! REAL HTSFC(IM,JM) +! +! REAL UST6(IM,JM),VST6(IM,JM) +! REAL UST5(IM,JM),VST5(IM,JM) +! REAL UST1(IM,JM),VST1(IM,JM) +! CRA +! REAL USHR1(IM,JM),VSHR1(IM,JM),USHR6(IM,JM),VSHR6(IM,JM) +! REAL U1(IM,JM),V1(IM,JM),U2(IM,JM),V2(IM,JM) +! REAL HGT1(IM,JM),HGT2(IM,JM),UMEAN(IM,JM),VMEAN(IM,JM) +! CRA + + integer, dimension(im,jsta_2l:jend_2u) :: COUNT6, COUNT5, COUNT1, L1, L2 +! INTEGER COUNT6(IM,JM),COUNT5(IM,JM),COUNT1(IM,JM) +! CRA +! INTEGER L1(IM,JM),L2(IM,JM) +! CRA + + INTEGER IVE(JM),IVW(JM) + integer I,J,IW,IE,JS,JN,JVN,JVS,L,N,lv + integer ISTART,ISTOP,JSTART,JSTOP + real Z2,DZABV,UMEAN5,VMEAN5,UMEAN1,VMEAN1,UMEAN6,VMEAN6, & + DENOM,Z1,Z3,DZ,DZ1,DZ2,DU1,DU2,DV1,DV2 +! +!**************************************************************** +! START CALHEL HERE +! +! INITIALIZE ARRAYS. +! +!$omp parallel do private(i,j) + DO J=JSTA,JEND + DO I=1,IM + UST(I,J) = 0.0 + VST(I,J) = 0.0 + HELI(I,J,1) = 0.0 + HELI(I,J,2) = 0.0 + CANGLE(I,J) = 0.0 + UST1(I,J) = 0.0 + VST1(I,J) = 0.0 + UST5(I,J) = 0.0 + VST5(I,J) = 0.0 + UST6(I,J) = 0.0 + VST6(I,J) = 0.0 + COUNT6(I,J) = 0 + COUNT5(I,J) = 0 + COUNT1(I,J) = 0 +! CRA + USHR05(I,J) = 0.0 + VSHR05(I,J) = 0.0 + USHR1(I,J) = 0.0 + VSHR1(I,J) = 0.0 + USHR6(I,J) = 0.0 + VSHR6(I,J) = 0.0 + U1(I,J) = 0.0 + U2(I,J) = 0.0 + V1(I,J) = 0.0 + V2(I,J) = 0.0 + UMEAN(I,J) = 0.0 + VMEAN(I,J) = 0.0 + HGT1(I,J) = 0.0 + HGT2(I,J) = 0.0 + L1(I,J) = 0 + L2(I,J) = 0 +! CRA + + ENDDO + ENDDO + IF(gridtype == 'E')THEN + JVN = 1 + JVS = -1 + do J=JSTA,JEND + IVE(J) = MOD(J,2) + IVW(J) = IVE(J)-1 + enddo + ISTART = 2 + ISTOP = IM-1 + JSTART = JSTA_M + JSTOP = JEND_M + ELSE IF(gridtype == 'B')THEN + JVN = 1 + JVS = 0 + do J=JSTA,JEND + IVE(J)=1 + IVW(J)=0 + enddo + ISTART = 2 + ISTOP = IM-1 + JSTART = JSTA_M + JSTOP = JEND_M + ELSE + JVN = 0 + JVS = 0 + do J=JSTA,JEND + IVE(J) = 0 + IVW(J) = 0 + enddo + ISTART = 1 + ISTOP = IM + JSTART = JSTA + JSTOP = JEND + END IF +! +! LOOP OVER HORIZONTAL GRID. +! +! CALL EXCH(RES(1,jsta_2l) +! CALL EXCH(PD() + +! DO L = 1,LP1 +! CALL EXCH(ZINT(1,jsta_2l,L)) +! END DO +! +!!$omp parallel do private(htsfc,ie,iw) + IF(gridtype /= 'A') CALL EXCH(FIS(1:IM,JSTA_2L:JEND_2U)) + DO L = 1,LM + IF(gridtype /= 'A') CALL EXCH(ZMID(1:IM,JSTA_2L:JEND_2U,L)) + DO J=JSTART,JSTOP + DO I=ISTART,ISTOP + IE = I+IVE(J) + IW = I+IVW(J) + JN = J+JVN + JS = J+JVS +!mp PDSLVK=(PD(IW,J)*RES(IW,J)+PD(IE,J)*RES(IE,J)+ +!mp 1 PD(I,J+1)*RES(I,J+1)+PD(I,J-1)*RES(I,J-1))*0.25 +!mp PSFCK=AETA(LMV(I,J))*PDSLVK+PT + IF (gridtype=='B')THEN + HTSFC(I,J) = (0.25/g)*(FIS(IW,J)+FIS(IE,J)+FIS(I,JN)+FIS(IE,JN)) +! +! COMPUTE MASS WEIGHTED MEAN WIND IN THE 0-6 KM LAYER, THE +! 0-0.5 KM LAYER, AND THE 5.5-6 KM LAYER +! + Z2 = 0.25*(ZMID(IW,J,L)+ZMID(IE,J,L)+ZMID(I,JN,L)+ZMID(IE,JN,L)) + ELSE + HTSFC(I,J) = (0.25/g)*(FIS(IW,J)+FIS(IE,J)+FIS(I,JN)+FIS(I,JS)) +! +! COMPUTE MASS WEIGHTED MEAN WIND IN THE 0-6 KM LAYER, THE +! 0-0.5 KM LAYER, AND THE 5.5-6 KM LAYER +! + Z2 = 0.25*(ZMID(IW,J,L)+ZMID(IE,J,L)+ZMID(I,JN,L)+ZMID(I,JS,L)) + END IF + DZABV = Z2-HTSFC(I,J) + + lv = NINT(LMV(I,J)) + IF (DZABV <= D6000 .AND. L <= lv) THEN + UST6(I,J) = UST6(I,J) + UH(I,J,L) + VST6(I,J) = VST6(I,J) + VH(I,J,L) + COUNT6(I,J) = COUNT6(I,J) + 1 + ENDIF + + IF (DZABV < D6000 .AND. DZABV >= D5500 .AND. L <= lv) THEN + UST5(I,J) = UST5(I,J) + UH(I,J,L) + VST5(I,J) = VST5(I,J) + VH(I,J,L) + COUNT5(I,J) = COUNT5(I,J) + 1 + ENDIF + + IF (DZABV < D500 .AND. L <= lv) THEN + UST1(I,J) = UST1(I,J) + UH(I,J,L) + VST1(I,J) = VST1(I,J) + VH(I,J,L) + COUNT1(I,J) = COUNT1(I,J) + 1 + ENDIF +! CRA + IF (DZABV >= D1000 .AND. DZABV <= D1500 .AND. L <= lv) THEN + U2(I,J) = U(I,J,L) + V2(I,J) = V(I,J,L) + HGT2(I,J) = DZABV + L2(I,J) = L + ENDIF + + IF (DZABV >= D500 .AND. DZABV < D1000 .AND. & + L <= lv .AND. L1(I,J) <= L2(I,J)) THEN + U1(I,J) = U(I,J,L) + V1(I,J) = V(I,J,L) + HGT1(I,J) = DZABV + L1(I,J) = L + ENDIF +! CRA + + ENDDO + ENDDO + ENDDO +! +! CASE WHERE THERE IS NO LEVEL WITH HEIGHT BETWEEN 5500 AND 6000 +! + DO J=JSTART,JSTOP + DO I=ISTART,ISTOP + IF (COUNT5(I,J) == 0) THEN + DO L=LM,1,-1 + IE=I+IVE(J) + IW=I+IVW(J) + JN=J+JVN + JS=J+JVS + IF (gridtype=='B')THEN + Z2 = 0.25*(ZMID(IW,J,L)+ZMID(IE,J,L)+ZMID(I,JN,L)+ZMID(IE,JN,L)) + ELSE + Z2 = 0.25*(ZMID(IW,J,L)+ZMID(IE,J,L)+ZMID(I,JN,L)+ZMID(I,JS,L)) + END IF + + DZABV=Z2-HTSFC(I,J) + IF (DZABV < D7000 .AND. DZABV >= D6000) THEN + UST5(I,J) = UST5(I,J) + UH(I,J,L) + VST5(I,J) = VST5(I,J) + VH(I,J,L) + COUNT5(I,J) = 1 + GOTO 30 + ENDIF + ENDDO + ENDIF +30 CONTINUE + ENDDO + ENDDO + +! +!$omp parallel do private(i,j,umean6,vmean6,umean5,vmean5,umean1,vmean1,denom) + + DO J=JSTART,JSTOP + DO I=ISTART,ISTOP + IF (COUNT6(I,J) > 0 .AND. COUNT1(I,J) > 0 .AND. COUNT5(I,J) > 0) THEN + UMEAN5 = UST5(I,J) / COUNT5(I,J) + VMEAN5 = VST5(I,J) / COUNT5(I,J) + UMEAN1 = UST1(I,J) / COUNT1(I,J) + VMEAN1 = VST1(I,J) / COUNT1(I,J) + UMEAN6 = UST6(I,J) / COUNT6(I,J) + VMEAN6 = VST6(I,J) / COUNT6(I,J) + +! +! COMPUTE STORM MOTION VECTOR +! IT IS DEFINED AS 7.5 M/S TO THE RIGHT OF THE 0-6 KM MEAN +! WIND CONSTRAINED ALONG A LINE WHICH IS BOTH PERPENDICULAR +! TO THE 0-6 KM MEAN VERTICAL WIND SHEAR VECTOR AND PASSES +! THROUGH THE 0-6 KM MEAN WIND. THE WIND SHEAR VECTOR IS +! SET AS THE DIFFERENCE BETWEEN THE 5.5-6 KM WIND (THE HEAD +! OF THE SHEAR VECTOR) AND THE 0-0.5 KM WIND (THE TAIL). +! THIS IS FOR THE RIGHT-MOVING CASE; WE IGNORE THE LEFT MOVER. + +! CRA + USHR6(I,J) = UMEAN5 - UMEAN1 + VSHR6(I,J) = VMEAN5 - VMEAN1 + + DENOM = USHR6(I,J)*USHR6(I,J)+VSHR6(I,J)*VSHR6(I,J) + IF (DENOM .NE. 0.0) THEN + UST(I,J) = UMEAN6 + (7.5*VSHR6(I,J)/SQRT(DENOM)) + VST(I,J) = VMEAN6 - (7.5*USHR6(I,J)/SQRT(DENOM)) + ELSE + UST(I,J) = 0 + VST(I,J) = 0 + ENDIF + ELSE + UST(I,J) = 0.0 + VST(I,J) = 0.0 + USHR6(I,J) = 0.0 + VSHR6(I,J) = 0.0 + ENDIF + + IF(L1(I,J) > 0 .AND. L2(I,J) > 0) THEN + UMEAN(I,J) = U1(I,J) + (D1000 - HGT1(I,J))*(U2(I,J) - & + U1(I,J))/(HGT2(I,J) - HGT1(I,J)) + VMEAN(I,J) = V1(I,J) + (D1000 - HGT1(I,J))*(V2(I,J) - & + V1(I,J))/(HGT2(I,J) - HGT1(I,J)) + ELSE IF(L1(I,J) > 0 .AND. L2(I,J) == 0) THEN + UMEAN(I,J) = U1(I,J) + VMEAN(I,J) = V1(I,J) + ELSE IF(L1(I,J) == 0 .AND. L2(I,J) > 0) THEN + UMEAN(I,J) = U2(I,J) + VMEAN(I,J) = U2(I,J) + ELSE + UMEAN(I,J) = 0.0 + VMEAN(I,J) = 0.0 + ENDIF + + IF(L1(I,J) > 0 .OR. L2(I,J) > 0) THEN + USHR05(I,J) = UMEAN1 - U10(I,J) + VSHR05(I,J) = VMEAN1 - V10(I,J) + USHR1(I,J) = UMEAN(I,J) - U10(I,J) + VSHR1(I,J) = VMEAN(I,J) - V10(I,J) + ELSE + USHR05(I,J) = 0.0 + VSHR05(I,J) = 0.0 + USHR1(I,J) = 0.0 + VSHR1(I,J) = 0.0 + ENDIF +! CRA + +!tgs USHR = UMEAN5 - UMEAN1 +! VSHR = VMEAN5 - VMEAN1 + +! UST(I,J) = UMEAN6 + (7.5*VSHR/SQRT(USHR*USHR+VSHR*VSHR)) +! VST(I,J) = VMEAN6 - (7.5*USHR/SQRT(USHR*USHR+VSHR*VSHR)) +! ELSE +! UST(I,J) = 0.0 +! VST(I,J) = 0.0 +! ENDIF + + ENDDO + ENDDO +! +! COMPUTE STORM-RELATIVE HELICITY +! +!!$omp parallel do private(i,j,n,l,du1,du2,dv1,dv2,dz,dz1,dz2,dzabv,ie,iw,jn,js,z1,z2,z3) + DO N=1,2 ! for dfferent helicity depth + DO L = 2,LM-1 + if(GRIDTYPE /= 'A')then + call exch(ZINT(1,jsta_2l,L)) + call exch(ZINT(1,jsta_2l,L+1)) + end if + DO J=JSTART,JSTOP + DO I=ISTART,ISTOP + IW=I+IVW(J) + IE=I+IVE(J) + JN=J+JVN + JS=J+JVS + IF (gridtype=='B')THEN + Z2=0.25*(ZMID(IW,J,L)+ZMID(IE,J,L)+ & + ZMID(I,JN,L)+ZMID(IE,JN,L)) + ELSE + Z2=0.25*(ZMID(IW,J,L)+ZMID(IE,J,L)+ & + ZMID(I,JN,L)+ZMID(I,JS,L)) + END IF + DZABV=Z2-HTSFC(I,J) +! + IF(DZABV < DEPTH(N) .AND. L <= NINT(LMV(I,J)))THEN + IF (gridtype=='B')THEN + Z1 = 0.25*(ZMID(IW,J,L+1)+ZMID(IE,J,L+1)+ & + ZMID(I,JN,L+1)+ZMID(IE,JN,L+1)) + Z3 = 0.25*(ZMID(IW,J,L-1)+ZMID(IE,J,L-1)+ & + ZMID(I,JN,L-1)+ZMID(IE,JN,L-1)) + DZ = 0.25*((ZINT(IW,J,L)+ZINT(IE,J,L)+ & + ZINT(I,JN,L)+ZINT(IE,JN,L))- & + (ZINT(IW,J,L+1)+ZINT(IE,J,L+1)+ & + ZINT(I,JN,L+1)+ZINT(IE,JN,L+1))) + ELSE + Z1 = 0.25*(ZMID(IW,J,L+1)+ZMID(IE,J,L+1)+ & + ZMID(I,JN,L+1)+ZMID(I,JS,L+1)) + Z3 = 0.25*(ZMID(IW,J,L-1)+ZMID(IE,J,L-1)+ & + ZMID(I,JN,L-1)+ZMID(I,JS,L-1)) + DZ = 0.25*((ZINT(IW,J,L)+ZINT(IE,J,L)+ & + ZINT(I,JS,L)+ZINT(I,JN,L))- & + (ZINT(IW,J,L+1)+ZINT(IE,J,L+1)+ & + ZINT(I,JS,L+1)+ZINT(I,JN,L+1))) + END IF + DZ1 = Z1-Z2 + DZ2 = Z2-Z3 + DU1 = UH(I,J,L+1)-UH(I,J,L) + DU2 = UH(I,J,L)-UH(I,J,L-1) + DV1 = VH(I,J,L+1)-VH(I,J,L) + DV2 = VH(I,J,L)-VH(I,J,L-1) + IF( L >= LUPP(I,J) .AND. L <= LLOW(I,J) ) THEN + HELI(I,J,N) = ((VH(I,J,L)-VST(I,J))* & + (DZ2*(DU1/DZ1)+DZ1*(DU2/DZ2)) & + - (UH(I,J,L)-UST(I,J))* & + (DZ2*(DV1/DZ1)+DZ1*(DV2/DZ2))) & + *DZ/(DZ1+DZ2)+HELI(I,J,N) + ENDIF + IF(LUPP(I,J) == LLOW(I,J)) HELI(I,J,N) = 0. + +! if(i==im/2.and.j==(jsta+jend)/2)print*,'Debug Helicity',depth(N),l,dz1,dz2,du1, & +! du2,dv1,dv2,ust(i,j),vst(i,j) + ENDIF + ENDDO + ENDDO + ENDDO + END DO ! end of different helicity depth + +! CRITICAL ANGLE +! the angle between the storm-relative wind at the surface and the +! 0-500 m AGL shear vector +! https://www.spc.noaa.gov/exper/mesoanalysis/help/help_crit.html + + DO J=JSTART,JSTOP + DO I=ISTART,ISTOP + CANGLE(I,J)=ATAN2(VSHR05(I,J),USHR05(I,J))-ATAN2(VST(I,J),UST(I,J)) + CANGLE(I,J)=(CANGLE(I,J)/PI)*180. + IF(CANGLE(I,J) > 180.) CANGLE(I,J)=360.-CANGLE(I,J) + IF(CANGLE(I,J) < 0. .AND. CANGLE(I,J) >= -180.) CANGLE(I,J)=-CANGLE(I,J) + IF(CANGLE(I,J) < -180.) CANGLE(I,J)=360.+CANGLE(I,J) + ENDDO + ENDDO +! +! END OF ROUTINE. +! + RETURN + END diff --git a/sorc/ncep_post.fd/MISCLN.f b/sorc/ncep_post.fd/MISCLN.f index e7172c4ae..1ce4d85e8 100644 --- a/sorc/ncep_post.fd/MISCLN.f +++ b/sorc/ncep_post.fd/MISCLN.f @@ -43,6 +43,7 @@ SUBROUTINE MISCLN ! i storm motion part of the code ! 17-06-01 Y Mao - ADD FD levels for GTG(EDPARM CATEDR MWTURB) and allow ! levels input from control file +! 19-09-03 J Meng - ADD CAPE related variables for HRRR ! ! USAGE: CALL MISCLN ! INPUT ARGUMENT LIST: @@ -113,8 +114,7 @@ SUBROUTINE MISCLN real,dimension(im,jm) :: GRID1, GRID2 real,dimension(im,jsta:jend) :: P1D, T1D, Q1D, U1D, V1D, SHR1D, Z1D, & RH1D, EGRID1, EGRID2, EGRID3, EGRID4, & - EGRID5 - + EGRID5, EGRID6, EGRID7, EGRID8 real, dimension(:,:,:),allocatable :: OMGBND, PWTBND, QCNVBND, & PBND, TBND, QBND, & UBND, VBND, RHBND, & @@ -135,6 +135,8 @@ SUBROUTINE MISCLN MAXWP, MAXWZ, MAXWU, MAXWV, & MAXWT ! MAXWT, RHPW + INTEGER,dimension(:,:),allocatable :: LLOW, LUPP + REAL, dimension(:,:),allocatable :: CANGLE ! integer I,J,jj,L,ITYPE,ISVALUE,LBND,ILVL,IFD,ITYPEFDLVL(NFD), & iget1, iget2, iget3 @@ -407,7 +409,7 @@ SUBROUTINE MISCLN if (allocated(ushr1)) deallocate(ushr1) if (allocated(vshr1)) deallocate(vshr1) if (allocated(ushr6)) deallocate(ushr6) - if (allocated(vshr1)) deallocate(vshr1) + if (allocated(vshr6)) deallocate(vshr6) if (allocated(ust)) deallocate(ust) if (allocated(vst)) deallocate(vst) if (allocated(heli)) deallocate(heli) @@ -3690,6 +3692,361 @@ SUBROUTINE MISCLN endif ENDIF ENDIF +! +! EXPAND HRRR CAPE/CIN RELATED VARIABLES +! +! CAPE AND CINS 0-3KM, FOLLOW ML PROCEDURE WITH HEIGHT 0-3KM + + FIELD1=.FALSE. + FIELD2=.FALSE. +! + IF(IGET(032).GT.0)THEN + IF(LVLS(3,IGET(032)).GT.0)FIELD1=.TRUE. + ENDIF + IF(IGET(107).GT.0)THEN + IF(LVLS(3,IGET(107)).GT.0)FIELD2=.TRUE. + ENDIF +! + IF(IGET(950).GT.0)THEN + FIELD1=.TRUE. + ENDIF + IF(IGET(951).GT.0)THEN + FIELD2=.TRUE. + ENDIF +! + IF(FIELD1.OR.FIELD2)THEN + ITYPE = 2 +! +!$omp parallel do private(i,j) + DO J=JSTA,JEND + DO I=1,IM + EGRID1(I,J) = -H99999 + EGRID2(I,J) = -H99999 + EGRID3(I,J) = -H99999 + EGRID4(I,J) = -H99999 + EGRID5(I,J) = -H99999 + EGRID6(I,J) = -H99999 + EGRID7(I,J) = -H99999 + EGRID8(I,J) = -H99999 +! ENDDO +! ENDDO +! DO J=JSTA,JEND +! DO I=1,IM + LB2(I,J) = (LVLBND(I,J,1) + LVLBND(I,J,2) + & + LVLBND(I,J,3))/3 + P1D(I,J) = (PBND(I,J,1) + PBND(I,J,2) + PBND(I,J,3))/3 + T1D(I,J) = (TBND(I,J,1) + TBND(I,J,2) + TBND(I,J,3))/3 + Q1D(I,J) = (QBND(I,J,1) + QBND(I,J,2) + QBND(I,J,3))/3 + ENDDO + ENDDO +! + DPBND = 0. + CALL CALCAPE2(ITYPE,DPBND,P1D,T1D,Q1D,LB2, & + EGRID1,EGRID2,EGRID3,EGRID4,EGRID5, & + EGRID6,EGRID7,EGRID8) +! +! CAPE1, CINS2, LFC3, ESRHL4,ESRHH5, +! DCAPE6,DGLD7, ESP8) +! + IF (IGET(032).GT.0.or.IGET(950)>0) THEN +! dong add missing value for cape + GRID1=spval +!$omp parallel do private(i,j) + DO J=JSTA,JEND + DO I=1,IM + IF(T1D(I,J) < spval) GRID1(I,J) = EGRID1(I,J) + ENDDO + ENDDO + CALL BOUND(GRID1,D00,H99999) + ID(1:25) = 0 + ID(09) = 116 + ID(10) = PETABND(3)+15. + ID(11) = PETABND(1)-15. + if(grib=='grib1') then + CALL GRIBIT(IGET(32),LVLS(3,IGET(32)),GRID1,IM,JM) + elseif(grib=='grib2') then + cfld=cfld+1 + fld_info(cfld)%ifld=IAVBLFLD(IGET(950)) + fld_info(cfld)%lvl=LVLSXML(1,IGET(950)) +!$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 !950 +! + IF (IGET(107).GT.0.or.IGET(951)>0) THEN +! dong add missing value for cape + GRID1=spval +!$omp parallel do private(i,j) + DO J=JSTA,JEND + DO I=1,IM + IF(T1D(I,J) < spval) GRID1(I,J) = - EGRID2(I,J) + ENDDO + ENDDO +! + CALL BOUND(GRID1,D00,H99999) +! +!$omp parallel do private(i,j) + DO J=JSTA,JEND + DO I=1,IM + IF(T1D(I,J) < spval) GRID1(I,J) = - GRID1(I,J) + ENDDO + ENDDO +! + ID(1:25) = 0 + ID(09) = 116 + ID(10) = PETABND(3)+15. + ID(11) = PETABND(1)-15. + if(grib=='grib1') then + CALL GRIBIT(IGET(107),LVLS(3,IGET(107)),GRID1,IM,JM) + elseif(grib=='grib2') then + cfld=cfld+1 + fld_info(cfld)%ifld=IAVBLFLD(IGET(951)) + fld_info(cfld)%lvl=LVLSXML(1,IGET(951)) +!$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 !951 + +! LFC HEIGHT + + IF (IGET(952).GT.0) THEN +!$omp parallel do private(i,j) + DO J=JSTA,JEND + DO I=1,IM + GRID1(I,J) = EGRID3(I,J) + ENDDO + ENDDO + CALL BOUND(GRID1,D00,H99999) + ID(1:25) = 0 + if(grib=='grib1') then + CALL GRIBIT(IGET(952),LVLS(1,IGET(952)),GRID1,IM,JM) + elseif(grib=='grib2') then + cfld=cfld+1 + fld_info(cfld)%ifld=IAVBLFLD(IGET(952)) + fld_info(cfld)%lvl=LVLSXML(1,IGET(952)) +!$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 !952 + +! EFFECTIVE STORM RELATIVE HELICITY AND STORM MOTION. + + allocate(USHR1(IM,jsta_2l:jend_2u),VSHR1(IM,jsta_2l:jend_2u), & + USHR6(IM,jsta_2l:jend_2u),VSHR6(IM,jsta_2l:jend_2u)) + allocate(UST(IM,jsta_2l:jend_2u),VST(IM,jsta_2l:jend_2u), & + HELI(IM,jsta_2l:jend_2u,2)) + allocate(LLOW(IM,jsta_2l:jend_2u),LUPP(IM,jsta_2l:jend_2u), & + CANGLE(IM,jsta_2l:jend_2u)) + + iget1 = IGET(953) + iget2 = -1 + iget3 = -1 + if (iget1 > 0) then + iget2 = LVLS(1,iget1) + iget3 = LVLS(2,iget1) + endif + if(me==0) write(0,*) '953 ',iget1,iget2,iget3 + IF (iget1 > 0 .OR. IGET(162) > 0 .OR. IGET(953) > 0) THEN + DEPTH(1) = 3000.0 + DEPTH(2) = 1000.0 +!$omp parallel do private(i,j) + DO J=JSTA,JEND + DO I=1,IM + LLOW(I,J) = INT(EGRID4(I,J)) + LUPP(I,J) = INT(EGRID5(I,J)) + ENDDO + ENDDO + +! CALL CALHEL(DEPTH,UST,VST,HELI,USHR1,VSHR1,USHR6,VSHR6) + CALL CALHEL2(LLOW,LUPP,DEPTH,UST,VST,HELI,CANGLE) +! + IF (iget2 > 0) then +!$omp parallel do private(i,j) + DO J=JSTA,JEND + DO I=1,IM + GRID1(I,J) = HELI(I,J,1) + ! GRID1(I,J) = HELI(I,J,2) + ENDDO + ENDDO + if(grib=='grib1') then + ID(1:25) = 0 + ID(10) = 30 + ID(11) = 0 + CALL GRIBIT(iget1,iget2,GRID1,IM,JM) + elseif(grib=='grib2') then + cfld=cfld+1 + fld_info(cfld)%ifld=IAVBLFLD(iget1) + fld_info(cfld)%lvl=LVLSXML(1,iget1) +!$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 !953 + +! Critical Angle + + IF (IGET(957).GT.0) THEN +!$omp parallel do private(i,j) + DO J=JSTA,JEND + DO I=1,IM + GRID1(I,J) = CANGLE(I,J) + ! IF(EGRID1(I,J)<100. .OR. EGRID2(I,J)>-250.) THEN + ! GRID1(I,J) = 0. + ! ENDIF + ENDDO + ENDDO + ID(1:25) = 0 + if(grib=='grib1') then + CALL GRIBIT(IGET(957),LVLS(1,IGET(957)),GRID1,IM,JM) + elseif(grib=='grib2') then + cfld=cfld+1 + fld_info(cfld)%ifld=IAVBLFLD(IGET(957)) + fld_info(cfld)%lvl=LVLSXML(1,IGET(957)) +!$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 !957 + +! Dendritic Layer Depth, -17C < T < -12C + + IF (IGET(955).GT.0) THEN +!$omp parallel do private(i,j) + DO J=JSTA,JEND + DO I=1,IM + GRID1(I,J) = EGRID7(I,J) + ENDDO + ENDDO + CALL BOUND(GRID1,D00,H99999) + ID(1:25) = 0 + if(grib=='grib1') then + CALL GRIBIT(IGET(955),LVLS(1,IGET(955)),GRID1,IM,JM) + elseif(grib=='grib2') then + cfld=cfld+1 + fld_info(cfld)%ifld=IAVBLFLD(IGET(955)) + fld_info(cfld)%lvl=LVLSXML(1,IGET(955)) +!$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 !955 + +! Enhanced Stretching Potential + + IF (IGET(956).GT.0) THEN +!$omp parallel do private(i,j) + DO J=JSTA,JEND + DO I=1,IM + GRID1(I,J) = EGRID8(I,J) + ENDDO + ENDDO + CALL BOUND(GRID1,D00,H99999) + ID(1:25) = 0 + if(grib=='grib1') then + CALL GRIBIT(IGET(956),LVLS(1,IGET(956)),GRID1,IM,JM) + elseif(grib=='grib2') then + cfld=cfld+1 + fld_info(cfld)%ifld=IAVBLFLD(IGET(956)) + fld_info(cfld)%lvl=LVLSXML(1,IGET(956)) +!$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 !956 + +! Downdraft CAPE + + ITYPE = 1 + ! DO J=JSTA,JEND + ! DO I=1,IM + ! LB2(I,J) = (LVLBND(I,J,1) + LVLBND(I,J,2) + & + ! LVLBND(I,J,3))/3 + ! P1D(I,J) = (PBND(I,J,1) + PBND(I,J,2) + PBND(I,J,3))/3 + ! T1D(I,J) = (TBND(I,J,1) + TBND(I,J,2) + TBND(I,J,3))/3 + ! Q1D(I,J) = (QBND(I,J,1) + QBND(I,J,2) + QBND(I,J,3))/3 + ! ENDDO + ! ENDDO + + DPBND = 400.E2 + ! CALL CALCAPE2(ITYPE,DPBND,P1D,T1D,Q1D,LB2, & + ! EGRID1,EGRID2,EGRID3,EGRID4,EGRID5, & + ! EGRID6,EGRID7,EGRID8) + + IF (IGET(032).GT.0.or.IGET(954)>0) THEN + GRID1 = spval +!$omp parallel do private(i,j) + DO J=JSTA,JEND + DO I=1,IM + IF(T1D(I,J) < spval) GRID1(I,J) = -EGRID6(I,J) + ENDDO + ENDDO + CALL BOUND(GRID1,D00,H99999) + ID(1:25) = 0 + ID(09) = 116 + ID(10) = 255 + ID(11) = 0 + if(grib=='grib1') then + CALL GRIBIT(IGET(32),4,GRID1,IM,JM) + elseif(grib=='grib2') then + cfld=cfld+1 + fld_info(cfld)%ifld=IAVBLFLD(IGET(954)) + fld_info(cfld)%lvl=LVLSXML(1,IGET(954)) +!$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 !954 + + if (allocated(ushr1)) deallocate(ushr1) + if (allocated(vshr1)) deallocate(vshr1) + if (allocated(ushr6)) deallocate(ushr6) + if (allocated(vshr6)) deallocate(vshr6) + if (allocated(ust)) deallocate(ust) + if (allocated(vst)) deallocate(vst) + if (allocated(heli)) deallocate(heli) + if (allocated(llow)) deallocate(llow) + if (allocated(lupp)) deallocate(lupp) + if (allocated(cangle))deallocate(cangle) + + ENDIF if (allocated(pbnd)) deallocate(pbnd) if (allocated(tbnd)) deallocate(tbnd) diff --git a/sorc/ncep_post.fd/RQSTFLD.f b/sorc/ncep_post.fd/RQSTFLD.f index ede321b23..d4b8be3c8 100644 --- a/sorc/ncep_post.fd/RQSTFLD.f +++ b/sorc/ncep_post.fd/RQSTFLD.f @@ -19,12 +19,13 @@ module RQSTFLD_mod ! 2019-04-22 Wen Meng increased model MXLVL to 500 ! 2019-05-08 Wen Meng added continuous accumulated precipitations(417, 418, ! 419). +! 2019-09-03 Jesse Meng added cape related variables for hrrr (950-957) !-------------------------------------------------------------------- implicit none ! ! increase MXFLD each time you add a new field - INTEGER, PARAMETER :: MXFLD=950,MXLVL=500 + INTEGER, PARAMETER :: MXFLD=957,MXLVL=500 CHARACTER*20 AVBL(MXFLD),FIELD(MXFLD) CHARACTER*50 AVBLGRB2(MXFLD) CHARACTER*6 DATSET @@ -2546,6 +2547,32 @@ module RQSTFLD_mod & /1,'G17 CH16 NON-NADIR ',118,109, & & 'G17 CH16 ABI TB TOA '/ !Table 130 +!-- ADD HRRR CAPE/CIN RELATED VARIABLES + DATA IFILV(950),AVBL(950),IQ(950),IS(950),AVBLGRB2(950) & + & /1,'CAPE 0-3KM ',157,116, & + & 'CAPE ON spec_hgt_above_grnd'/ + DATA IFILV(951),AVBL(951),IQ(951),IS(951),AVBLGRB2(951) & + & /1,'CIN 0-3KM ',156,116, & + & 'CIN ON spec_hgt_above_grnd'/ + DATA IFILV(952),AVBL(952),IQ(952),IS(952),AVBLGRB2(952) & + & /1,'LFC AGL HEIGHT ',007,014, & + & 'HGT ON lvl_of_free_convection'/ + DATA IFILV(953),AVBL(953),IQ(953),IS(953),AVBLGRB2(953) & + & /1,'STORM REL HELICITY ',190,255, & + & 'HLCY ON spec_hgt_lvl_above_grnd'/ + DATA IFILV(954),AVBL(954),IQ(954),IS(954),AVBLGRB2(954) & + & /1,'DOWNDRAFT CAPE ',157,116, & + & 'CAPE ON spec_pres_above_grnd'/ + DATA IFILV(955),AVBL(955),IQ(955),IS(955),AVBLGRB2(955) & + & /1,'DENDRITIC LAYER DEPTH',007,020, & + & 'THICHNESS -12C_-17C_isotherm'/ + DATA IFILV(956),AVBL(956),IQ(956),IS(956),AVBLGRB2(956) & + & /1,'ENHANCED STRETCHING POTENTIAL',157,116,& + & 'ESP ON spec_pres_above_grnd'/ + DATA IFILV(957),AVBL(957),IQ(957),IS(957),AVBLGRB2(957) & + & /1,'CRITICAL ANGLE ',157,116, & + & 'CRITICAL ANGLE ON spec_pres_above_grnd'/ + !end initialization ! end module RQSTFLD_mod diff --git a/sorc/ncep_post.fd/makefile_module b/sorc/ncep_post.fd/makefile_module index db8a3690d..0481aec92 100755 --- a/sorc/ncep_post.fd/makefile_module +++ b/sorc/ncep_post.fd/makefile_module @@ -94,7 +94,8 @@ OBJS = wrf_io_flags.o getVariable.o getIVariableN.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_smoothseams.o CALVESSEL.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 CALVESSEL.o \ + CALHEL2.o CALCAPE2.o .SUFFIXES: .F .f .o .f90 .c From 6b01d9dec691c9a64896a39853e6cd0839db2012 Mon Sep 17 00:00:00 2001 From: WenMeng-NOAA <48260754+WenMeng-NOAA@users.noreply.github.com> Date: Wed, 6 Nov 2019 11:09:25 -0500 Subject: [PATCH 08/21] Add xml and flat txt files for outputting aerosol fileds from fv3gefs. (#21) --- parm/postcntrl_gefs_aerosol.xml | 372 +++++ parm/postxconfig-NT-gefs-aerosol.txt | 2238 ++++++++++++++++++++++++++ 2 files changed, 2610 insertions(+) create mode 100755 parm/postcntrl_gefs_aerosol.xml create mode 100644 parm/postxconfig-NT-gefs-aerosol.txt diff --git a/parm/postcntrl_gefs_aerosol.xml b/parm/postcntrl_gefs_aerosol.xml new file mode 100755 index 000000000..61fa7a8fe --- /dev/null +++ b/parm/postcntrl_gefs_aerosol.xml @@ -0,0 +1,372 @@ + + + + + GFSPRS + 0 + ncep_nco + v2003 + local_tab_yes1 + fcst + oper + fcst + fcst + hour + nws_ncep + gfs_avn + complex_packing_spatial_diff + 2nd_ord_sptdiff + fltng_pnt + lossless + + + HGT_ON_ISOBARIC_SFC + 40. 100. 200. 300. 500. 700. 1000. 1500. 2000. 3000. 4000. 5000. 7000. 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 + 40. 100. 200. 300. 500. 700. 1000. 1500. 2000. 3000. 4000. 5000. 7000. 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 + + + + UGRD_ON_ISOBARIC_SFC + 100. 200. 300. 500. 700. 1000. 2000. 3000. 5000. 7000. 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 + 100. 200. 300. 500. 700. 1000. 2000. 3000. 5000. 7000. 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 + + + + O3MR_ON_ISOBARIC_SFC + NCEP + 40. 100. 200. 300. 500. 700. 1000. 1500. 2000. 3000. 4000. 5000. 7000. 10000. 12500. 15000. 20000. 25000. 30000. 35000. 40000. 50000. 70000. 85000. 100000. + 5.0 + + + + REFC_ON_ENTIRE_ATMOS + NCEP + 4.0 + + + + REFD_ON_SPEC_HGT_LVL_ABOVE_GRND + REFD + NCEP + 1000. + 4.0 + + + + DUST1_ON_HYBRID_LVL + NCEP + 1. + 11.0 + + + + DUST2_ON_HYBRID_LVL + NCEP + 1. + 11.0 + + + + DUST3_ON_HYBRID_LVL + NCEP + 1. + 11.0 + + + + DUST4_ON_HYBRID_LVL + NCEP + 1. + 11.0 + + + + DUST5_ON_HYBRID_LVL + NCEP + 1. + 11.0 + + + + SEASALT1_ON_HYBRID_LVL + NCEP + 1. + 11.0 + + + + SEASALT2_ON_HYBRID_LVL + NCEP + 1. + 11.0 + + + + SEASALT3_ON_HYBRID_LVL + NCEP + 1. + 11.0 + + + + SEASALT4_ON_HYBRID_LVL + NCEP + 1. + 11.0 + + + + SEASALT5_ON_HYBRID_LVL + NCEP + 1. + 11.0 + + + + BCPHILIC_ON_HYBRID_LVL + NCEP + 1. + 11.0 + + + + BCPHOBIC_ON_HYBRID_LVL + NCEP + 1. + 11.0 + + + + OCPHILIC_ON_HYBRID_LVL + NCEP + 1. + 11.0 + + + + OCPHOBIC_ON_HYBRID_LVL + NCEP + 1. + 11.0 + + + + SO4_ON_HYBRID_LVL + NCEP + 1. + 11.0 + + + + PRES_ON_MEAN_SEA_LVL + 6.0 + + + + TMP_ON_SURFACE + 4.0 + + + + AER_OPT_DEP_at550 + 9.0 + + + + DUST_AER_OPT_DEP_at550 + 9.0 + + + + SEASALT_AER_OPT_DEP_at550 + 9.0 + + + + SULFATE_AER_OPT_DEP_at550 + 9.0 + + + + ORGANIC_CARBON_AER_OPT_DEP_at550 + 9.0 + + + + BLACK_CARBON_AER_OPT_DEP_at550 + 9.0 + + + + AER_SCAT_OPT_DEP_at550 + 9.0 + + + + DUST_AER_SCAT_OPT_DEP_at550 + 9.0 + + + + SEASALT_AER_SCAT_OPT_DEP_at550 + 9.0 + + + + SULFATE_AER_SCAT_OPT_DEP_at550 + 9.0 + + + + ORGANIC_CARBON_AER_SCAT_OPT_DEP_at550 + 9.0 + + + + BLACK_CARBON_AER_SCAT_OPT_DEP_at550 + 9.0 + + + + SINGLE_SCAT_ALBD_at340 + 9.0 + + + + AER_ASYM_FACTOR_at340 + 9.0 + + + + AER_OPT_DEP_at340 + 9.0 + + + + AER_OPT_DEP_at440 + 9.0 + + + + AER_OPT_DEP_at660 + 9.0 + + + + AER_OPT_DEP_at860 + 9.0 + + + + AER_OPT_DEP_at1630 + 9.0 + + + + AER_OPT_DEP_at11100 + 9.0 + + + + DUST25_SFC_MASS_CON + NCEP + 9.0 + + + + SEAS25_SFC_MASS_CON + NCEP + 9.0 + + + + PM10_SFC_MASS_CON + NCEP + 9.0 + + + + PM25_SFC_MASS_CON + NCEP + 9.0 + + + + PM10_COL_MASS_DEN + 9.0 + + + + PM25_COL_MASS_DEN + 9.0 + + + + DUST_COL_MASS_DEN + 9.0 + + + + SEAS_COL_MASS_DEN + 9.0 + + + + BC_COL_MASS_DEN + 9.0 + + + + OC_COL_MASS_DEN + 9.0 + + + + SULF_COL_MASS_DEN + 9.0 + + + + TOZNE_ON_ENTIRE_ATMOS_SINGLE_LYR + 4.0 + + + + AVE_PRATE_ON_SURFACE + 4.0 + + + + AVE_CPRAT_ON_SURFACE + NCEP + 4.0 + + + ACM_APCP_ON_SURFACE + -4.0 + + + + ACM_ACPCP_ON_SURFACE + -4.0 + + + + + diff --git a/parm/postxconfig-NT-gefs-aerosol.txt b/parm/postxconfig-NT-gefs-aerosol.txt new file mode 100644 index 000000000..e67e103aa --- /dev/null +++ b/parm/postxconfig-NT-gefs-aerosol.txt @@ -0,0 +1,2238 @@ +1 +60 +GFSPRS +0 +ncep_nco +v2003 +local_tab_yes1 +fcst +oper +fcst +fcst +hour +nws_ncep +gfs_avn +complex_packing_spatial_diff +2nd_ord_sptdiff +fltng_pnt +lossless +12 +HGT_ON_ISOBARIC_SFC +? +1 +tmpl4_0 +HGT +? +? +isobaric_sfc +0 +? +50 +40. 100. 200. 300. 500. 700. 1000. 1500. 2000. 3000. 4000. 5000. 7000. 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 +? +50 +40. 100. 200. 300. 500. 700. 1000. 1500. 2000. 3000. 4000. 5000. 7000. 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 +? +? +? +18 +UGRD_ON_ISOBARIC_SFC +? +1 +tmpl4_0 +UGRD +? +? +isobaric_sfc +0 +? +47 +100. 200. 300. 500. 700. 1000. 2000. 3000. 5000. 7000. 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 +? +47 +100. 200. 300. 500. 700. 1000. 2000. 3000. 5000. 7000. 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 +? +? +? +268 +O3MR_ON_ISOBARIC_SFC +? +1 +tmpl4_0 +O3MR +NCEP +? +isobaric_sfc +0 +? +25 +40. 100. 200. 300. 500. 700. 1000. 1500. 2000. 3000. 4000. 5000. 7000. 10000. 12500. 15000. 20000. 25000. 30000. 35000. 40000. 50000. 70000. 85000. 100000. +? +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 +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 +? +1 +1000. +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +4.0 +0 +0 +0 +? +? +? +629 +DUST1_ON_HYBRID_LVL +? +1 +tmpl4_48 +PMTF +NCEP +? +hybrid_lvl +0 +? +1 +1. +? +0 +? +0 +? +dust_dry +between_first_second_limit_noincl2ndlmt +7 +2 +7 +20 +? +0 +0.0 +0 +0.0 +1 +11.0 +0 +0 +0 +? +? +? +630 +DUST2_ON_HYBRID_LVL +? +1 +tmpl4_48 +PMTF +NCEP +? +hybrid_lvl +0 +? +1 +1. +? +0 +? +0 +? +dust_dry +between_first_second_limit_noincl2ndlmt +7 +20 +7 +36 +? +0 +0.0 +0 +0.0 +1 +11.0 +0 +0 +0 +? +? +? +631 +DUST3_ON_HYBRID_LVL +? +1 +tmpl4_48 +PMTC +NCEP +? +hybrid_lvl +0 +? +1 +1. +? +0 +? +0 +? +dust_dry +between_first_second_limit_noincl2ndlmt +7 +36 +7 +60 +? +0 +0.0 +0 +0.0 +1 +11.0 +0 +0 +0 +? +? +? +632 +DUST4_ON_HYBRID_LVL +? +1 +tmpl4_48 +PMTC +NCEP +? +hybrid_lvl +0 +? +1 +1. +? +0 +? +0 +? +dust_dry +between_first_second_limit_noincl2ndlmt +7 +60 +7 +120 +? +0 +0.0 +0 +0.0 +1 +11.0 +0 +0 +0 +? +? +? +633 +DUST5_ON_HYBRID_LVL +? +1 +tmpl4_48 +PMTC +NCEP +? +hybrid_lvl +0 +? +1 +1. +? +0 +? +0 +? +dust_dry +between_first_second_limit_noincl2ndlmt +7 +120 +7 +200 +? +0 +0.0 +0 +0.0 +1 +11.0 +0 +0 +0 +? +? +? +634 +SEASALT1_ON_HYBRID_LVL +? +1 +tmpl4_48 +PMTF +NCEP +? +hybrid_lvl +0 +? +1 +1. +? +0 +? +0 +? +sea_salt_dry +between_first_second_limit_noincl2ndlmt +8 +6 +8 +20 +? +0 +0.0 +0 +0.0 +1 +11.0 +0 +0 +0 +? +? +? +635 +SEASALT2_ON_HYBRID_LVL +? +1 +tmpl4_48 +PMTF +NCEP +? +hybrid_lvl +0 +? +1 +1. +? +0 +? +0 +? +sea_salt_dry +between_first_second_limit_noincl2ndlmt +7 +2 +7 +10 +? +0 +0.0 +0 +0.0 +1 +11.0 +0 +0 +0 +? +? +? +636 +SEASALT3_ON_HYBRID_LVL +? +1 +tmpl4_48 +PMTC +NCEP +? +hybrid_lvl +0 +? +1 +1. +? +0 +? +0 +? +sea_salt_dry +between_first_second_limit_noincl2ndlmt +7 +10 +7 +30 +? +0 +0.0 +0 +0.0 +1 +11.0 +0 +0 +0 +? +? +? +637 +SEASALT4_ON_HYBRID_LVL +? +1 +tmpl4_48 +PMTC +NCEP +? +hybrid_lvl +0 +? +1 +1. +? +0 +? +0 +? +sea_salt_dry +between_first_second_limit_noincl2ndlmt +7 +30 +7 +100 +? +0 +0.0 +0 +0.0 +1 +11.0 +0 +0 +0 +? +? +? +638 +SEASALT5_ON_HYBRID_LVL +? +1 +tmpl4_48 +PMTC +NCEP +? +hybrid_lvl +0 +? +1 +1. +? +0 +? +0 +? +sea_salt_dry +between_first_second_limit_noincl2ndlmt +7 +100 +7 +200 +? +0 +0.0 +0 +0.0 +1 +11.0 +0 +0 +0 +? +? +? +643 +BCPHILIC_ON_HYBRID_LVL +? +1 +tmpl4_48 +PMTF +NCEP +? +hybrid_lvl +0 +? +1 +1. +? +0 +? +0 +? +black_carbon_hydrophilic +equall_to_first_limit +10 +236 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +11.0 +0 +0 +0 +? +? +? +642 +BCPHOBIC_ON_HYBRID_LVL +? +1 +tmpl4_48 +PMTF +NCEP +? +hybrid_lvl +0 +? +1 +1. +? +0 +? +0 +? +black_carbon_hydrophobic +equall_to_first_limit +10 +236 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +11.0 +0 +0 +0 +? +? +? +641 +OCPHILIC_ON_HYBRID_LVL +? +1 +tmpl4_48 +PMTF +NCEP +? +hybrid_lvl +0 +? +1 +1. +? +0 +? +0 +? +particulate_org_matter_hydrophilic +equall_to_first_limit +10 +424 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +11.0 +0 +0 +0 +? +? +? +640 +OCPHOBIC_ON_HYBRID_LVL +? +1 +tmpl4_48 +PMTF +NCEP +? +hybrid_lvl +0 +? +1 +1. +? +0 +? +0 +? +particulate_org_matter_hydrophobic +equall_to_first_limit +10 +424 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +11.0 +0 +0 +0 +? +? +? +639 +SO4_ON_HYBRID_LVL +? +1 +tmpl4_48 +PMTF +NCEP +? +hybrid_lvl +0 +? +1 +1. +? +0 +? +0 +? +sulphate_dry +equall_to_first_limit +9 +139 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +11.0 +0 +0 +0 +? +? +? +105 +PRES_ON_MEAN_SEA_LVL +? +1 +tmpl4_0 +PRES +? +? +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 +? +? +? +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 +? +? +? +609 +AER_OPT_DEP_at550 +? +1 +tmpl4_48 +AOTK +? +? +entire_atmos +0 +? +0 +? +? +0 +? +0 +? +total_aerosol +smaller_than_first_limit +6 +20 +0 +0.0 +between_first_second_limit +9 +545 +9 +565 +1 +9.0 +0 +0 +0 +? +? +? +610 +DUST_AER_OPT_DEP_at550 +? +1 +tmpl4_48 +AOTK +? +? +entire_atmos +0 +? +0 +? +? +0 +? +0 +? +dust_dry +smaller_than_first_limit +6 +20 +0 +0.0 +between_first_second_limit +9 +545 +9 +565 +1 +9.0 +0 +0 +0 +? +? +? +611 +SEASALT_AER_OPT_DEP_at550 +? +1 +tmpl4_48 +AOTK +? +? +entire_atmos +0 +? +0 +? +? +0 +? +0 +? +sea_salt_dry +smaller_than_first_limit +6 +20 +0 +0.0 +between_first_second_limit +9 +545 +9 +565 +1 +9.0 +0 +0 +0 +? +? +? +612 +SULFATE_AER_OPT_DEP_at550 +? +1 +tmpl4_48 +AOTK +? +? +entire_atmos +0 +? +0 +? +? +0 +? +0 +? +sulphate_dry +smaller_than_first_limit +6 +20 +0 +0.0 +between_first_second_limit +9 +545 +9 +565 +1 +9.0 +0 +0 +0 +? +? +? +613 +ORGANIC_CARBON_AER_OPT_DEP_at550 +? +1 +tmpl4_48 +AOTK +? +? +entire_atmos +0 +? +0 +? +? +0 +? +0 +? +particulate_org_matter_dry +smaller_than_first_limit +6 +20 +0 +0.0 +between_first_second_limit +9 +545 +9 +565 +1 +9.0 +0 +0 +0 +? +? +? +614 +BLACK_CARBON_AER_OPT_DEP_at550 +? +1 +tmpl4_48 +AOTK +? +? +entire_atmos +0 +? +0 +? +? +0 +? +0 +? +black_carbon_dry +smaller_than_first_limit +6 +20 +0 +0.0 +between_first_second_limit +9 +545 +9 +565 +1 +9.0 +0 +0 +0 +? +? +? +650 +AER_SCAT_OPT_DEP_at550 +? +1 +tmpl4_48 +SCTAOTK +? +? +entire_atmos +0 +? +0 +? +? +0 +? +0 +? +total_aerosol +smaller_than_first_limit +6 +20 +0 +0.0 +between_first_second_limit +9 +545 +9 +565 +1 +9.0 +0 +0 +0 +? +? +? +651 +DUST_AER_SCAT_OPT_DEP_at550 +? +1 +tmpl4_48 +SCTAOTK +? +? +entire_atmos +0 +? +0 +? +? +0 +? +0 +? +dust_dry +smaller_than_first_limit +6 +20 +0 +0.0 +between_first_second_limit +9 +545 +9 +565 +1 +9.0 +0 +0 +0 +? +? +? +652 +SEASALT_AER_SCAT_OPT_DEP_at550 +? +1 +tmpl4_48 +SCTAOTK +? +? +entire_atmos +0 +? +0 +? +? +0 +? +0 +? +sea_salt_dry +smaller_than_first_limit +6 +20 +0 +0.0 +between_first_second_limit +9 +545 +9 +565 +1 +9.0 +0 +0 +0 +? +? +? +653 +SULFATE_AER_SCAT_OPT_DEP_at550 +? +1 +tmpl4_48 +SCTAOTK +? +? +entire_atmos +0 +? +0 +? +? +0 +? +0 +? +sulphate_dry +smaller_than_first_limit +8 +70 +0 +0.0 +between_first_second_limit +9 +545 +9 +565 +1 +9.0 +0 +0 +0 +? +? +? +654 +ORGANIC_CARBON_AER_SCAT_OPT_DEP_at550 +? +1 +tmpl4_48 +SCTAOTK +? +? +entire_atmos +0 +? +0 +? +? +0 +? +0 +? +particulate_org_matter_dry +smaller_than_first_limit +8 +70 +0 +0.0 +between_first_second_limit +9 +545 +9 +565 +1 +9.0 +0 +0 +0 +? +? +? +655 +BLACK_CARBON_AER_SCAT_OPT_DEP_at550 +? +1 +tmpl4_48 +SCTAOTK +? +? +entire_atmos +0 +? +0 +? +? +0 +? +0 +? +black_carbon_dry +smaller_than_first_limit +8 +70 +0 +0.0 +between_first_second_limit +9 +545 +9 +565 +1 +9.0 +0 +0 +0 +? +? +? +648 +SINGLE_SCAT_ALBD_at340 +? +1 +tmpl4_48 +SSALBK +? +? +entire_atmos +0 +? +0 +? +? +0 +? +0 +? +total_aerosol +smaller_than_first_limit +6 +20 +0 +0.0 +between_first_second_limit +9 +338 +9 +342 +1 +9.0 +0 +0 +0 +? +? +? +649 +AER_ASYM_FACTOR_at340 +? +1 +tmpl4_48 +ASYSFK +? +? +entire_atmos +0 +? +0 +? +? +0 +? +0 +? +total_aerosol +smaller_than_first_limit +6 +20 +0 +0.0 +between_first_second_limit +9 +338 +9 +342 +1 +9.0 +0 +0 +0 +? +? +? +623 +AER_OPT_DEP_at340 +? +1 +tmpl4_48 +AOTK +? +? +entire_atmos +0 +? +0 +? +? +0 +? +0 +? +total_aerosol +smaller_than_first_limit +6 +20 +0 +0.0 +between_first_second_limit +9 +338 +9 +342 +1 +9.0 +0 +0 +0 +? +? +? +624 +AER_OPT_DEP_at440 +? +1 +tmpl4_48 +AOTK +? +? +entire_atmos +0 +? +0 +? +? +0 +? +0 +? +total_aerosol +smaller_than_first_limit +6 +20 +0 +0.0 +between_first_second_limit +9 +430 +9 +450 +1 +9.0 +0 +0 +0 +? +? +? +625 +AER_OPT_DEP_at660 +? +1 +tmpl4_48 +AOTK +? +? +entire_atmos +0 +? +0 +? +? +0 +? +0 +? +total_aerosol +smaller_than_first_limit +6 +20 +0 +0.0 +between_first_second_limit +9 +620 +9 +670 +1 +9.0 +0 +0 +0 +? +? +? +626 +AER_OPT_DEP_at860 +? +1 +tmpl4_48 +AOTK +? +? +entire_atmos +0 +? +0 +? +? +0 +? +0 +? +total_aerosol +smaller_than_first_limit +6 +20 +0 +0.0 +between_first_second_limit +9 +841 +9 +876 +1 +9.0 +0 +0 +0 +? +? +? +627 +AER_OPT_DEP_at1630 +? +1 +tmpl4_48 +AOTK +? +? +entire_atmos +0 +? +0 +? +? +0 +? +0 +? +total_aerosol +smaller_than_first_limit +6 +20 +0 +0.0 +between_first_second_limit +9 +1628 +9 +1652 +1 +9.0 +0 +0 +0 +? +? +? +628 +AER_OPT_DEP_at11100 +? +1 +tmpl4_48 +AOTK +? +? +entire_atmos +0 +? +0 +? +? +0 +? +0 +? +total_aerosol +smaller_than_first_limit +6 +20 +0 +0.0 +between_first_second_limit +9 +11000 +9 +11200 +1 +9.0 +0 +0 +0 +? +? +? +686 +DUST25_SFC_MASS_CON +? +1 +tmpl4_48 +PMTF +NCEP +? +surface +0 +? +0 +? +? +0 +? +0 +? +dust_dry +smaller_than_first_limit +7 +25 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +9.0 +0 +0 +0 +? +? +? +684 +SEAS25_SFC_MASS_CON +? +1 +tmpl4_48 +PMTF +NCEP +? +surface +0 +? +0 +? +? +0 +? +0 +? +sea_salt_dry +smaller_than_first_limit +7 +25 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +9.0 +0 +0 +0 +? +? +? +619 +PM10_SFC_MASS_CON +? +1 +tmpl4_48 +PMTC +NCEP +? +surface +0 +? +0 +? +? +0 +? +0 +? +total_aerosol +smaller_than_first_limit +6 +10 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +9.0 +0 +0 +0 +? +? +? +620 +PM25_SFC_MASS_CON +? +1 +tmpl4_48 +PMTF +NCEP +? +surface +0 +? +0 +? +? +0 +? +0 +? +total_aerosol +smaller_than_first_limit +7 +25 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +9.0 +0 +0 +0 +? +? +? +621 +PM10_COL_MASS_DEN +? +1 +tmpl4_48 +COLMD +? +? +entire_atmos +0 +? +0 +? +? +0 +? +0 +? +total_aerosol +smaller_than_first_limit +6 +10 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +9.0 +0 +0 +0 +? +? +? +622 +PM25_COL_MASS_DEN +? +1 +tmpl4_48 +COLMD +? +? +entire_atmos +0 +? +0 +? +? +0 +? +0 +? +total_aerosol +smaller_than_first_limit +7 +25 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +9.0 +0 +0 +0 +? +? +? +646 +DUST_COL_MASS_DEN +? +1 +tmpl4_48 +COLMD +? +? +entire_atmos +0 +? +0 +? +? +0 +? +0 +? +dust_dry +smaller_than_first_limit +7 +25 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +9.0 +0 +0 +0 +? +? +? +647 +SEAS_COL_MASS_DEN +? +1 +tmpl4_48 +COLMD +? +? +entire_atmos +0 +? +0 +? +? +0 +? +0 +? +sea_salt_dry +smaller_than_first_limit +7 +25 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +9.0 +0 +0 +0 +? +? +? +616 +BC_COL_MASS_DEN +? +1 +tmpl4_48 +COLMD +? +? +entire_atmos +0 +? +0 +? +? +0 +? +0 +? +black_carbon_dry +smaller_than_first_limit +10 +236 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +9.0 +0 +0 +0 +? +? +? +617 +OC_COL_MASS_DEN +? +1 +tmpl4_48 +COLMD +? +? +entire_atmos +0 +? +0 +? +? +0 +? +0 +? +particulate_org_matter_dry +smaller_than_first_limit +10 +424 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +9.0 +0 +0 +0 +? +? +? +618 +SULF_COL_MASS_DEN +? +1 +tmpl4_48 +COLMD +? +? +entire_atmos +0 +? +0 +? +? +0 +? +0 +? +sulphate_dry +smaller_than_first_limit +7 +25 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +9.0 +0 +0 +0 +? +? +? +299 +TOZNE_ON_ENTIRE_ATMOS_SINGLE_LYR +? +1 +tmpl4_0 +TOZNE +? +? +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 +? +? +? +271 +AVE_PRATE_ON_SURFACE +? +1 +tmpl4_8 +PRATE +? +AVE +surface +0 +? +0 +? +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +4.0 +0 +0 +0 +? +? +? +272 +AVE_CPRAT_ON_SURFACE +? +1 +tmpl4_8 +CPRAT +NCEP +AVE +surface +0 +? +0 +? +? +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 +? +? +? +33 +ACM_ACPCP_ON_SURFACE +? +1 +tmpl4_8 +ACPCP +? +ACM +surface +0 +? +0 +? +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +-4.0 +0 +0 +0 +? +? +? From 6378bf7f7f61c8344ac0aff3be53ab4753455f3e Mon Sep 17 00:00:00 2001 From: Kate Fossell Date: Wed, 6 Nov 2019 13:50:18 -0700 Subject: [PATCH 09/21] Sync with community code in prep for new build structure (#16) * Fix allocation issue for PSFC in Block 2 * Fix mods for selecting satellite channels in CALRAD_WCLOUD_newcrtm * Fix grib codes in RQSTFLD.f for wind shear variables * Fix incorrect EL level for TAUX/TAUY calculation * Fix typo in Wind Energy Calculation (UPP ID 411) * Fix index for SEVIRI * Remove extraneous greater than sign * Revert MXLVL back to 70 for short term sync of code * Comment out #if 0 blocks, this syntax fails with some compilers * Correct pname for max updraft helicity * Add community control files * Uncomment new chem code fields. Add compiler directive for commmunity set mxlvls to 07 for grib1 * Move RQSTFLD and READCNTRL to .F files to be preprocessed for COMMCODE compiler directive * Add line accidently deleted for dust25 * Remove READCNTRL.f and RQSTFLD.f since they were moved to .F files for preprocessing --- parm/hires_micro_lookup.dat | Bin 0 -> 43400 bytes parm/post_avblflds.xml | 2 +- parm/post_avblflds_comupp.xml | 5399 +++++++++++++++++ parm/postcntrl_comupp.xml | 702 +++ parm/postxconfig-NT-WRF_comupp.txt | 3681 +++++++++++ parm/wrf_cntrl.parm | 499 ++ sorc/ncep_post.fd/CALRAD_WCLOUD_newcrtm.f | 40 +- sorc/ncep_post.fd/CALTAU.f | 2 +- sorc/ncep_post.fd/CLDRAD.f | 2 - sorc/ncep_post.fd/MDL2AGL.f | 2 +- .../ncep_post.fd/{READCNTRL.f => READCNTRL.F} | 5 + sorc/ncep_post.fd/{RQSTFLD.f => RQSTFLD.F} | 19 +- sorc/ncep_post.fd/SELECT_CHANNELS.f | 9 +- sorc/ncep_post.fd/SURFCE.f | 2 +- 14 files changed, 10326 insertions(+), 38 deletions(-) create mode 100755 parm/hires_micro_lookup.dat create mode 100644 parm/post_avblflds_comupp.xml create mode 100644 parm/postcntrl_comupp.xml create mode 100644 parm/postxconfig-NT-WRF_comupp.txt create mode 100644 parm/wrf_cntrl.parm rename sorc/ncep_post.fd/{READCNTRL.f => READCNTRL.F} (99%) rename sorc/ncep_post.fd/{RQSTFLD.f => RQSTFLD.F} (99%) diff --git a/parm/hires_micro_lookup.dat b/parm/hires_micro_lookup.dat new file mode 100755 index 0000000000000000000000000000000000000000..4f33d59c407646101fa6cbb802cd06c647fc7cfb GIT binary patch literal 43400 zcmXt;X;e+$|Hq4@0nvn18c22TIeR=iCEcx(ga$)0&ogC~Oi7|qqC!!bA}JC=DkMWG z88T0qXEKYg|NcGrKe+2YXth@R^Lf8tuXXlGORL>|Ja|Pl9{JxzJSp!no*iY17e!CO zD-U1A(XG^Yebs+BamQGk67Pr86RU9Mo;sX!eJaj1kH`688hrS{Dtvr`KQ8^9kI(K; z!xux_;aXpFe8VLV-*vCSkB2YEFV>yH@2*7SFOCoKudP)?tGzX8Io5{g9(zR$EW%0K z^>w6!_IqNwww`n{T|v4W{7AYEb|m)NPQ>BlC*r&+lF0ry2zLBLSlb)K_3uj3`^QJp z=Wh?<)3zJ&>+y#84_ZRRIY@BHb0W?{#s$nH;yh$}hmJ&?iOl_bhlq2L2(#lvoQdNs^82i8w1s)o&o;ykuL)&P1GOvD_>NtGWFvmoVlbBLG+IUn1Vh?$V;kg-I}h1B^}${BLG|?gmjYH>!Q~0u{5Pt@PDY z%#Z3#3!!3$)bQ#6D&|OyyjxK*OKN;}9ToGW<^$@em?`c2=sp#5rB*A8sF*Fabqu6p zzO>u@BUH?oI%YhiV$M`O$yzpqlUOPVk>l8SxOq+6S)*eTuUZ$QOf>84B1sMsw{8(>Gpe(9F_ zb5!h@W{kN=#h&T*kC2L8)9kg)RP3AXvU8?l=XB4xQY!XN_su*)#qQ~Wj%}#eKRtNy zG8Gx1hgQ9&A_w${dl(g2phy23MnxWI$@v^AGC@zJ_*0P!S~htC71^L?dNojy4_eu& zkcy1Zs^4#@$O*mFm_S8VXiZ%b6?vg`XTDI88G7wRITg8~H;=ucB0Kc*<{okz2*a{iPzZtJs-NRYZOj z`wv?ckzu8K^>RhzSm|-VL=jn5oDxG6k!M9Uf3PAltwq}byGwSlzzt7710Hyzm1C``k)Me0~OH;WssMNB6^_&gv2SL8%ogJql)N< zG9-S3B08cB+i$Iio+!gFjaEcglo9U+DxxpS=nkJ0(HUi|o0lSbql};8r-<$-6E|rq zqCd*ybF&rEA!X|K7)A6*nV}x4h%PC!Cf6&XPs*HZ9Yu6X348EN5xr98TQ5~ax0Hnw z$`#QsWpVCtMRZIF|1?e!JyVwTI;DuNDJx>D6wx8UDx!xSkis+;gm)c7ay;S0>jTO;N zC9#FKBKoN$xm{62N0ki=4=JLjN^;>_MRZl!_->UV`l@Vlo~?+^Dw}5%DWbPZYF>~c zx~rtU>#vCZDqFx-MRZu%y3k7zJyy1z?5l__E1B9kis-Yl-EXKOI<4&3JW&z7RO(e3-2WRw$)DgB8IG<#gd_MKD7t?|e!T z+)ygkE>Q$Klrv57ir|NGZv0P0Fhr@mdP)%-QL6gfRRl|v3&n#K!4u_@qn#p{qFmnY zs|cvf|1~LsLCXE;zKYOhbn?e zN@K2}BDkbHBbJI_lk&VGS`mCwUIut8f>Fw=N8=R1Ddo-FYl>i%@~&l;B6y{|Pd}pw zW+@*ft_W@^pDH^lf?Z0}XkSI}OZoEciXs@Md`mv02#zT~)Nd5QGUeyx6^h`Q@_WWK zMKDeIqo1z`t|@;H3{d{ZwtxN_Ciup*miA+UaZG!lB@>)uExK-Jf_1FLmrG3WjgOI zn94fOKFX{&}4VMl;ph-%N0tsUOud!D=Sm7{UavnS5zA6U=6y zd=wMhX7Feu6YOT_pg9x#W_b4xCK%4h_9!Me&S=^xCRomtlI@^eoXPzsQm~a5|THVNm2blNTr%bqj^^M!Wgb$d{h8IjYf%Qv$$AlM{ zZ{`jr+`#(p`on}Dm|uP?CLF;A6rX0o6Kr6aEfcO_gDwIle8K#$y=B4~Ea2f#CcMD{ z-^^gb9W3aF6BGVmLv*$<;Se^|_y`joVZ&@Am~aUThVPj02^-$WkO`--kf7U4c!iCa z6vTvE*vLf-neYo6wcdvb$FR{E=b7*f8&mj^3D>Z(m6c5RhK;-1j|u0n@t?w(@D7{U zdMFd_VUw)yG2tIJ*`+-b4q{URnwanqn>u496E0%Y)|_C%M{N3zY$lw>=zRbV@q7KneZ43AM=$7m$9W$-w>syR%!ki~QiV#0?krZAofC$e?EU6}A9Tlb^| z6K-VdBQ#9-k;R%^XTp&z_MrIuzRKeIH8bH#7T36u3171K70a1$CQIm4#)LOnLh*1W z+{qFHeVFhkOMDl{ghN?UY?7&Z)U=&Ecw4rOn8-T-0sGN zTUko4drbJ1rQE&Bgk#yJ2x}%h%QkmD!-Q+u<`XBG@GVOnsn3LSS?ccsCcMkiG7d1| zUY73umkIx}^oM(xa4_2vxr+%8v#oYNnQ$@NdVUuZK4#md?`FcuEW@yw2`{sZ!u?FR znPm<+$b_F+=FiqlIGSzGJkErt*^WMCOt_lucxlOmuUS??EfdaW+4v?C-e%c%6eirw za#p=z!ryGC!w)7L&UV(0V8Y{U*J5KPT+Vh|+c4pCE%AK&zmIgK+XU&}seI|ppJ&qV zx6yK|^V{WiVKs8c#hqoFyIo}G?U!VF_O`4UU?=CV7Ido;)XXupFT^MqU$X zD95=J${Ty!k+%d*m9vf_Id`bLTnPHf$NM3=~oBx%)5Ys=6rDEXEr#|))$nyZU*O88iR{>uYlTskKp=)W8hBo0Px7W19)!v z47@e!4?cGp4}SFN5B{#!h1&0PVJk-is25fN4J&U#qaLfFarzBtZq^7p=NyMty`rJb z(+RNK)?v_b%tok&Z6Iv_8B(o<(B;1@=x(?I@*ZuWcThF-jh_Gq-Y|nfYCSk?QxF`f z{|$~!_JEVRzlYPRoWVmIG0;6;a&~g zuwI5K?jPXh-wI4G{{^=t1;g!A++lX#mT;Hk2lrY}hxSk!ADJUU`D zEQvIPrwSWk*{kR9tn)W`esLJQSPfu}lPj!CPJ`FAC&GqhhvA)nYvF^0SMZ7bJ@~A0 z4SW^)9KN&r2R}Z32fysgfj=TVVe_yQ_^+2X(oPLPEmN#ft4+U9>urCLer|hYSmK4+ z)}|q&*ME_*!F^;3%aHk~Tc}gQBxG@>30eL%LtT51MYe0~k$r7f_MeNNph(GfdCYS_{J&MmYhyC#6j12}a#)j$Fahr#KaXZIW*l2+%ZeL-F zjoUrKCgX~+Y0)xl-g-3dIOaF*bSxTMbO5-^oKx7c#tU1k>v7i&gR#w*+t_YoUu=K& zFzzn7Vu!8Qv7=re>=b?&JHH)@)#E;4sbMt+0X7(3x`naNI!w-w#EMT(%r3RZJ^l5u z>rGSKYpg4Fe?1U;ERM#!)jixNeJu8Jeu%v*Mq{548TV__$NiJq-~nn!Jg{aE_7B~M z15NC3(1{ax$iy%_tnCmSd@>k^%s7BYTHMB?YD4gt=(c!VuOE2)w`M%Cs3V>{cNw0F zEbz214R}V$TRbb0;W_=6;xID{Jh$;Ro`0kbUbxm5FCI~W!{K@yq4yRqdj{}|GdXxw z&IlZNCLgapauY}8TH-YsD{*x4cf5ApZXB~}9bOkc7q6cmg=6Pj#c?z3aQw8>IAQ8M zoH*4BCr#^zH_TXxlV>;Ljq^t0l*M21rWJSb=C!YI>W0oZZR=#5zWXoUa(F-9TAqWq z)t<*0kJ{nPPf2)3OMtUF8sluWDbDenhIfv*f_Kdyk9Q{w!h3Q@;=Sj#;@l@jc;CNL zoYyrQAKqp>2KlkDy+s^oiUo|dXbO;~Kd54eH1>xg=KjRZp zIX*e|Ha@jc#-)`F`1G#~Tn?&n#WV|iCaVmey%U2gO%LJoL2YqW(n);bN+G_~_BFm7 z&<9tiw8J$wf8p9LBXHe>8~Ez}R9xS59AEEkf^V!Z$2V_Q;#>AV@a+XV@tw+r_?~$z zzCYt9eo&T!ADI^7$Fp1GCzadqQ|k=;Y-t64-Y^rtr2hETrf~fF%RBsbSOtDp(uhA; zO~D_de&J7V`r@X+vG_~rQv9t)D*nFdC;q8@4gZ?k9{+y47ylVN3jaMHiT}BNAX>xk z5p9!2M7u7Jv`E-NTKe@QI(nHz=fZZ0O-1mcj`NP5iDC62yFiBk`6;;b7%oL__x)dee}-nWWK zap^>!GmC)0PXsD<1X%-|UJ~fhj|90#k-@z-lOerElcDZrWLWPh zBv`YE4EG#GLi)ZSBmDZ4kpU~os9}A{=+QQ0%%m(bc2)x!x9|!XzcQUni0wiqZjK<6 zvg63)g9FJFaaTU|(g-r`_6{=r)d4c&mx|0XxKCzVnUOhABB9=$NLWZ3nLFnnnHN2p z%+KgW798;)3#+rqqG!L!;(t9zc;|m)sq&UY1O=02pw)!N!B#&B+)T;WNqgcWNm>3iSax}Vs6!tb#pw)`j+No z{Z?-h3z|r5RWpejJC($J_ayO2%Sb{GSCUZSM-oRICy8IuNmAkyvcYjH*>LV4Ngmgm zBsX^<8`C363UwhV^+9A)=r^*t%~i7bzzCA+r%O^_W0JPMiKIK$k@QQ0$(EUzY&Bd# zwjPwowg5o3eXb)Jn{!B}%S)1Z?-<#>>O0xdEsX5A6iTu}f01m{BP9Ej0m+$=L3ZkG zAv+H_lU>6aszEi?(h3#-(FL)Kj6 z6#p_JN5y-HW8-CV+%%FLzxaietn5inkQ8#_^nS-Eyq%P`ttX}DBgyF%sicen zQueV0Dc?7jR7^zVjOAK#=9Vuxn=*@>8}yb`8fcTsDt~f*jUTDvX{74E8RSCgHga*9 z6}jZrmt6XFf?PfkL#mfHk{Y*kQqz2mTsa+2YF8DII?wLpYAY4FdNH2VC#)pb0&kM* zW>d-ayNAe)>>=dl)Fq@rYDXHrd?2?@1(Mrq{K=gG3FNM6FuD6+J-L@Fk^A!k$pd#S z@=*67d3dcqd9=fiJf4|Ep12GpjXL3^@tO&FnjJ!(g&rr*d!HsR+6I#s4_wL1gW2TO z%2DKXKrVS>JDt4wl1AQEIgoc-0eL^WgnZx+$w#vudn$ny@wf8f3PRjuY%OTO`-+`Dbni{4z(>86s z&^A%-w9StzwC$V(+V<%R+HS-y+U}|oHS)PkjZUY~_VhGupKn4t*cZ_b8R68}WG6L_ zzfVncmQj-x-KfcTMoq)!QqxzjsoBI6)a?FdY99QXn%9q`9S1bij#aN|Cr^Fa>9mG+ z?%6;)7gtgXc$-=r{_SuI5i^*VJ@s zV;V+nHf^T1CM~IL${}iJoJ;LeZcuxZp45KR8QRTsGwqgoj&|>;PrGkPqYf5hsYB*k z+Qa%G?UCa_9lKdj$6Q0|3BAKFqdc^Cz6&Qmxqn!=yGDOxp{V%}DYlnyWF8%A{+kXx7)ytF z&!@xg#nIsT&2+dy79GB`FAZ^9LPM^-q$6g9(2+WBbmaCSbQHVw|IfJ2t+vNGdLXQ>~Yq>+5hZO=W(Uyoadcn&QTLXoD&u}JExnLJMSE5?p$EK+xg_iIOhv_ z^PF#n7CJwD*24LV(JPhqa(k72{VbJn+%;8~1A(gU%2ySTE~s2npQya&g{uP2T~&?R z@KH7G4p%MQWul7wIZ(B(v0Symc&REacDQPX?-SMDAzf7k`}0-D{fDb6ybM&AViQ%@ z?aNgUOg5@sj(nv0+`K~d=f^^|j-#jAKxc)zeTQ*s^MHD_WyMpq{gfSQXH9E0@<-~P zo3+%uLy@}Q#op?Gk}CD^XCu|)2Ygje|8!YB@A`9f#P;6ad54+m>O&*c*CxJF-|`ung^>i_fxOD(>(mUMrYONO0_B%?t;B$JFzQYWoplI4molC9}9se7f7 zoqbtyjrNc{jzvk{E$>PFXFrnsKOdHcrj$q{0|TV-&ex@>cI&0tJ$0q| zvldI?r+Z4Pq&g|;VU85T?4;Q3Tct#^c2aU?gS1)kmeL>EOBv~Jq^yazrClENQm(qU zbU-y+Ds;D%j*K&sj&J%aow_$#s!&Esl{|Jx;0%I-2@DD7Xrh-yFuGuHNdEO zG%(h_2~6A819R&-&`FsAEP~X)a{gRkz2zaWsr&@&zApgXrBR^AjK{#~z;mGbvI)ri zB7mDt0{m_QQ2dSnmx3DL)@c`TU+)Dx{=Nf!mW}{kzvF<<>OY{rkpmd8GXePbssw@e z0>F^Sn;=*{0)#va2BXsYfw4nVz=X~+nDopMOg%ar%t*KeX3u;G!U96Ud^Z9XsY*e( z{Z6pVZX{UQVtu z#Z3a6UJn4N86QCUU@NfIuo7&$WC1ec+JYVa$spVO3dm_p2D^$}z@D{}KJpCWdbNm?+7Zg8o}B8`JnQ& zHK?jT4lceK461d%fh#=ntT+gs=uQMr z1E+xJJF>vb&k}g!s}0`m{0Kg_7z92~`3SyTc?!O}d4r#Mk3h4HHTb(V5^5PPfZ7A| zV2fle*z#rxY-N=Nb*B}>*2R`kzr|%}FytaM%zh5#DR)Pp9~ zDrhF>L-Wm9u;ZV%u=BL_(Beh{wDdNCR!85$uFjUwCi^_J>--Jcr*4MbO_o51O`oBo zc@uQX41=m}!BAbW3(CEcA*j}eX!L7{KLX6QQlG<5r~9dyrm0zG{D zLCxo>u+R3^&})DOdjDb2r?3F}PSt^a)>q+xyF=ihEpael#6lQk`3w$z3gFOuZy3Df z9t`oB3P*Na4@bRChGWjU!EqV;;DjZ$a8mGfIHhL-oMz<%XXxa@nIEpf+4qfMXmvH5 zTNVZ97bCbZKMOA2rwzmR_J-MjK>reKEu{Cip?y(jRu%=ZlL=;8sh{O-Z*<=tUU!8f?`>0G$Ga}3-Q z1mNDd1eklC!~NP1VV>qGJh19A%s*of3v?(f^!)}8Z3u*iZ-u}kHqEej_6T_N#1ME~ zuL~>*iGU~aLgC5(dc)EodGK`JQCQwG8di)ofoD!e!gHPcU}bmc~Bc)@)QyqFUT zFYC2})pN(en!B@LtxqtlJMtUW+b@9EHZOrUT2FvCmv@8>O{?MUnN{%4vr2exd?vjA z&>cP;Qve@5ybqsD_yQYWJciHaM8N0YzQC7}Q{n42G4Rc{eej+0eE7c96@CoJfuEi` zz^3KV@T*xO{B|e;{us0p{(Ohv?}Tgc510%8UT=i|BHWNx@?)euoaO;+=yDf zxrKDjok6X(7b4y8b*S~wK%|GPkbb**r2jr28C>y2h6TE)&4x16cK#65E?5g0xgACA zZKk0Py3MG=hh50{Rv%f~Oq*rPre-Jn5-)AHEPeNGlB_bw|5$$>#De51H^)f*&exp#&ky*%f zwmx!Oxg7OMF+%QpYf^PcT?u|lQ)}gTeN6_5lQ)u4p-)Mo|B(!jj0a{e@0xi+iLg7O#(b8Qx zDB|l>wA{xZt=Q^^R=$rwk+#!NWX)ByI=mc3b)SZ!u5CbTB8Q`B`6h~fa0jhTOh7Tc z>rl*xGPEwc7g|3!9L2T@K(QrzQQYi(DBd;%#Wx&92?-@A(aRMj{$7TXia6RZvlJ!U zzemXr4x)|e?@-DR9ki)k3EFh|KeTz>XO!AE5v8@ zZ86JGMt>WW*=8=vyqbcxr&6?I1M1JU)NGtiB` zPUt4Ph#H)X&@Ib$=(bT2x})QW?)(~o?tXMd_nz0G`wt*`aMK$-taV0@E}Tb?&sw4< zr`w~(l8fl+QHq`wtwGNZtwApe`=OTwkI}1wzvy*gGkSA)zqr5FM(>XIMek3^=tG4z z`gndG`c$2ZK4067n(mH7UmDBM*SGi4w{O4E53MTnvkgJNI!!>oyU#(*1fV~CiqYSo zw&=eJGWs{~HrDD>hP5ug!rDWZW9^3vaf|8aaEmW%aLbkHSjV6X)=6uPTiN;JRt2xI zZm+Lc_tG%jdU#*l`uQ@fx6l~tw`_&=Qx;+aI}dD7Gz}YizQTsrU*a}X0B-aB6K)%8 zg4=Z|!tDxjuu-3P*yv_DZa?EJZvP+09X1hc>==iQ%LZbTp#j+BO&vB}eHEK^*1=|n zDzUlmb!`4*9PSv=3wJUp#+?oh!JYes;?9jG*kbu_+@;ef+@;tETL$`J%Xg2lRqSbO z-2-6j%1^lKBwK8weHPnfmt$M*h;1Le#CDP1*xu%&xN|qc-6pNU-CK>q-E)hugWm$| z@IDLo*od*C(hfV`nTwrPI$>w~wb=PmN3067#%i+^tS$}3(xg{dHr$BiBM&hc?T2A2 z4-5--VHC0i;}!)NAN0W_Bn;D*jhGgG$I57qnSKw?e z&cbfBi*c`&8?Za@$L^2&;ockXVGplD?D4%5*6cfl`DhvUG1`dxoI8R&!(FhKWP!aJ zXJPLx829xbhJ9MK!9JxfxZi?O?5jGCeV-ZN{+X|^UogZ2j6UE2m-X?$=yW_t6M+Xc zx5EC%p5lN7LvSGYiUZ#};Gn!lJb3y~Jfz1eJmkeXJao@BJZwrC4tB7`!7t9?;rrT) zcLSU82-P(_;)8@o9`1ohElj|pd#=Ev{~X0*&V=K!G5heifn)G^;~9AT?T>gub}Kw_ zng^Z)g7Bmt33zhF1Uw~nKAt*cIG$!TA5VMv3Qs?xgJ-NT$}fvNy6_>2Gl8Q1aPwr`H5cHxfI2`e4% zJ*jkjuiEbTZ-Il8{`jv>Cds8v)`NaHIc;C%q(skk@@)OiDL@+LH2QZ-r&$a1og#Kj zaazj{I3*^3bV~EQ;FLAO)@k1@eW#-G)lR3)qMa_>=T6tn?>jxbINa&Y*C3}K+iRR# zOg3@W?-kdjxtqg9PB*)AW@yf2ZZ_XOikXByo)Mm{G%>r>&ag zJg+&@d3k-jbF_AqbL^!$=M87>I;XyQDZg(!X({rw> z(08s)KkD3&*UkCi&sgV|Yi>Ay8Z_4VSMUgxc0jXA*DP9P@Mn*zeXDwv8Om2#L_Sb; z{i>tt9)DD&@?E4tDo2$IbyxMCoS^b5O;q{0|4{|L*rFPK;=5|>@oLqS#|5f6%2?IH zWBXOhrud696G7uy!xn;!WXGhs&rK8>anVf1GTDb@3X4iKhjnED-Wp(@&i>z z3QbidS8P>fy3bVSMn6|wtXr?D9oIs2!?00xry)`GsC=aAc~zF`?Ykyb6W*-)xuvV> zpVd=!i^eW$-M+`v`X^1)Z8fXa?Hi2LrYrubJGrE)EnB=-cYPe9w!dnk?r}|4t6o~D zVY{np+W(=t=N3P;`|siEK6BmFeSf>F{kDXu0|pFH4>kUy4*9rOJ?2Sgl>6 z>N&0%>iKIrsh2#pRj(NFLA`oGl{(tTPQ9+%WOZD-P<5hCvN~D!f_jr#fI1CQ_1593 z>dg2(>a3b@^)3qs_1=Yl)cfy$P#+x3)rW3;R2NV2P?xmquRc}SM_oQctv-jks4ujh zufF_FPhIKul z-d56H7%#QF-cHhWvy=4pFOUpv2TN^p@}&08iIQ%= z{3s17ij#uc?30Gh{Ur^5Y$J^tQ7Dal@Ijh5M@O34+Dw{p;FdIJRE;#x{HC<mWr@11Xy9mSSAzN$b5oNpZocQbH(|lHxx}$%RX$lsi+TRQ(7kU2|93 zx;#Y6C=ZZ!=p{+nAs*7sf_c&&!%k9eXn$${Z7(U`w^AyoXe%A={YN@-HcvX{?68q<^@Dtj)K{E#Cf+ zbuy00x&gVeUhCtsexg1tT{p8^F zU*wQqU*u79UF9)vo8|GdKg$!pjFP9U8X!+^e@vd48z;~4`Ywk(e=pBZ43HPOrO8X) z&z2+h{E$~nwv!`G+sUiLzsXULPsq^&I>~EGF3IbhCd=zH8|65Ya5+BFNKVvGlapeZ zoNU-2Z`_zHZ?YIJZ{F)8rzuEIzc5|iI{J{j?OQiFGr3IO0pjJX`b~1q;w$p5uAcJl z>TdGhh}QBx^)h*XV=MVUhM|0L_%ON9{I`7QZU?z2dzoB3GfY0_azQT9i;z#;-z=Xh z_LWa>2$jo2yUJ$*hs)6&{X!+uwxANuBwsOs@A9C%pG4j=?>*Z@NM#?wd zHOdV?tmHebwB&o{@8t*TiSnbqyX7YnZ^=*Bypo^qJ1f7eA1}ZD`#^pthsYl$*2|wV z+~lTP8{}^tAILvO8;kpxMRN0}EAoGR)IiIx9%wHy11x~`0bTcHp!I@o zK<~gCp#S0|FtjfNZ6=n2w!6(hyO;Aodr1d$SXcy%%d&u}K_M_3p%2XW$AXT3x`56> zcEDmE0+!l4fz_B1!1@#eHeJ>M+ZD~guJHos*8d&oeuRM@UG;%uq7!iXI}51h_5|wZ zK|mgT4}gZt01asmaQ!|&2j2xs!wldux*zEIY$tFFiwC{_RD<3L89-zG1n?urfv4X` z;PtEu^j)ohel{I}@0otUZ^{%f(C{-DRNMpt#-9N}M&@8}`Fk*QK>`SNiUGqL=YbJB zT7Xfbt-%<}YB2V3Fc`mg9+((56HM-945sP_gK2jsfEfin!K~<)V9wayAk1w%nAdq2 znE(3^Soml)SX^}qgdesC5j*;TdC>-+u(V*PbN-0(FZe&QyO5M~JyS9AwS3AJFu_8TDi&^oZOG9RSeT?#gRJ^@k< zmV>lzH$ghT54MaQ0k*CP2HUp(1Q`{5LFTirV2A#4kOg;u>=DC2&YF0zvoI9wy8i*} zX=4lax_<__VWYslT{FP`J6_;G`)we<|8a0IdL<~R_zepGbpVGw8bDFxB5>qfEI6u{ z1davxgX8H%pyWv|I4PxqQ_FgR(#s*BtjlUp9_kG$&YlNnJ9h@>=DC8(%O63N!yRxT zx;wb|bRxLyy$Mw3P5@Whv<0>Eb3ola15n?0Ah>oo2;Asu1#WK82e-7gfZGeb!JXH0 z!M*Vp!Tme$!NXw&;L$Y(o&>%CjrG^Tv!O%5^E)Qs<+wfI)hiwFX8u0#_Ma(upBM=~ zS~Y-Ahg6`+I{|#T`v`nnU<7`&Re_)TM}gn{vO)99pWtsC0{`SNs5Nsk)b=j|yCyn@zmkHN0blA+DR3}}1j6SQmag7()7VYh43VE1b+p~JPmu*Z#N z=y=-$I^Ev|of{>ndfgJLKfQy}ug?(Z1VLzY4I;}W5Ie7e#5Ebx{&%1**X|?sSjMU;xUXSZD90kJ-9Zj5XKBQ zfa{DPTzAm|u3vo?#=3Wgu|J$(T+s&@AGR7MsIS9>H=khQ{#!6L z=fjO*S}+Ai!IbaOaMP(_aC78OnA$H8rnO6eX$^~EdX@@qnVt!^;zqdj?^C$#QVGmR z^Mjd_O5t|&0PfJLhC8mN!mJzsv*%BOIo>gFr?@lR`If<5Z!I!|wwd-!cO}*y#Zu9yEcEN{+(E=fmNX>qfBg$u#)%(+l`q+Yi1l-UnZH`vYI~ zw1Te(c7|^z*ub|-9O1j9cJTe45AZ|T1^Dr{xX=3%44aI!;1^XY{Mw(uZ_}>8@9X-* zAGwd<&r8GMueX)3*~k?BAp!7jNIm>-RY&-5?{uU!Z35D2{(`hOnxPgB`KU$dL)3D} zTyf8rhIFFLQ7a1twJNGcx&vMz-RDuL^{Vwq&!QXBJL-q@1Mi7DKV4)Hn~n^{?;2K) zLv1FmKy9_1P}^)z)K2pgwR_wH8AaYg?d@8l_UF!{4pWVgv0f!I&ToTE0`4P|ua3xc zYinfYF&3FU>y6Cga!^Nf1a-V)fjX^jk2*VTLY=Q=Ba7t@sEb1Y>QdhdSuVFjRz0pG zs~d*MI`RzaDyvY}d!La_+;C*;>W*w*9YuCq&LI2#eUbfdAJpx@FVuak3OTgDjvOkx zpdL#;BS*Cxa(tpjPHAb#dEgGDYAGSrN%2x}-ZvyUyCbRby?7xMj6iUI1lx;CA`8f%(D9C$b2h?{|0`hT4MLtam z>Q}Z5`Nnh9KO_$MIiw-KZx9WrbVUOoP{8eLDDc2q6twaV8a(&{ z8q#AC8uDiu8hWi48n$oV|3Bku+y*viJYHdq*BTp*uhmA)z~jD}pg@1kuvg18BUe>u z#+jYbOv)?QO!r9B%&vFP%$w+|S=7{06A>AsS=DxsW_3-7Cc1;ACT5tUX8o2BP2Am+ znnX)`&4$s(H5)UhYBt?#uSx6lPP1j$G0nD(>6*-%6it@yJWY;fnP%6LRhm5oGc~!- zA~boOLp1q=xTYY|RCDO?cTG{_Da}#iNX_v+UYZl3Z#1VeVl}5Pm}$yC@7A2{(n?e5 zm8hwjc}{b2V;jxoqmMN;cUx#`|2)&wTffv?*PPef95+gHYo(3mPR1t9y%I~!gX^0# zkKW(bG`7~(JnPy=^Mbi+UJdM_c{Bd4=H0>^&4+bEG@rJd*EH=Pq4`=;qxpWpLi6*+ zIL+_JQJOz*^ECf`OX6CqJh=9nPP|3TJl-;PFxQDs;;j-1*G&rLtvA?ly$y`(Ctc`XT1IL0^VWCM{YcSKR22Emzz$_;b!A5ar2NFykp=} z-l^YL-r1v;TPWjs7nKjUw0X>}%<{OkK__ng_Zjc{c^0>M=EH3pmU6p`-rWAgBHk^} zgLmIHmOI3?;XRgiC%Nq6lXa5#h!sM8VTpq{u{)nUsUrMDb9T6sQ!GG{U1K-T^~NX z*oMzpmdHar$MG=zmOQNX7oWR1o6j3@lh3zK;`1A8_=3IX`NEm{e38_aFZvkA7az{z zOBVR^aGJ@(zm4Wgk9Fe_i>C5riUVKvh$6*U#YTBOQ5q-fo`$`wrjY z_m*$j_L6UTlg_ugx$v#AWBJzGNBOoM+xWJ{5qw+aKb~PSj%Q3L;~9k!Jmc>Sp6U0C zXKqR3nJ;wsc4E)BM*_aR<}2UPc_-g7)sXKfisU=~3+GvWD|l8~PoDMU9M6^r&kmo* zv(IhjIqh!qoDoqxXLlQ(^I;9&*|VJQjM~q4)@cS5c2Jr)5 zGI_qsZJxi}l;@Yf=LcJ6@q_(F@`G`w`N1oHctHn=7Yyyn3(`$_!JR^0XxWPwj!oc& z+2y>j@d7{8?I1ribv!?`&z2v0y_O$#KF1Hw`os_C-{yzkm+>Nb87~U`!ix$$c+tnL z{0PY7N5Z!8BZcGnk&p9vF)-uBp$mEO!ELIPk2t|Csr2o z6DL3M6W{CjNnFiOhKBN!`+xG2&vW@Hn+N>VXd`|q-GraI)`pk1IlxPO9`n-GBYEkm z9lZ2gEk6yK`RN%S_~~7j`RNBUd71fBUKTizm&G3BWoN5+S#v2br%QSHoG4zt=ehVd z+7Z0M`~t7=f51BS=cQC)W zYzx0w(7-P~$>f(zkMK+VBKf6=*8Ebw_tR1}i>S11^y_whGle}iqc3!jDjMr3_@S1O&U+MmcUkMi9F_ZX}V;lID z7t49A`C?ux{+`-J=XmX&dA#<8aoL+bTsByS%NJb7<#rLc{G=Q%&pv|7zr4p4 z5|+4vNWc{vPUDJTUtDq52v^ioxKideu7o>q<+cyF@+^xh@1MYxKU48%`CIri7ll8& zI^xd}4fykez4-IbX8c9o0e>;7$6s6&@RzfO_)CEZe`%D!RnrBy3e@7N&Bt(6@Lyb& zn~bZzE8?$`%kWo05dON(8&B-T@z<*i{#qu6zYhE0>iJT*+BytZ@BfCYlZSD2kuI)o zGs53y^6@w08TgyaWc)4k8~%331b?gUz~9BU;_vz;`1`6K`1@fo{5@R}e=krJgKI4&;LgXjQ7*W)U<$6Ssls)Wcj7v| zc3fv0gX{MH!F7pqaNQG6T=!!uuAjOT*YmA${pv5c{$K*GPhO1cpFYF&KQ(Z})KuKS z`;Hq{BiwMn4mTv4HBH%i>cje6m@(YgaSdIsXgs50DmkHd{$3vuJ<4g5n> z68|vk$3I-3;vd1c@Q-Xa{Nw!!{G;n3{;6b&e}XdnbKN-p>0^$6rYyrhpLpY+^`W>) z{1|T1IfE2?grpr zm7e%l|4iJh`~){cW8A#%FK#}(7&j->;O2rJ-28Q-J!FV~tFFesjUfK*q>q0e9>c#A zzTw{mVfgo#ar}EA3AZT!!!687+~UxTTfA#=OALiu?ySNsWrnz=dkt96Z4?h`sp3KCg$Gw8;KA(=@Zga|JQ#5S z4_?Z_gAf11gP*MNVDk(-I9iH_W`yG*y?Jh!Q-Uxd9Isbm8H5A$Yh^ z4G;H6;1L;RJTfl`lQV0o`~c(GZVZAHpNg74b-=J|6i!f=5Qb z;ZcP&JgRdVkFqQ9sC6eE-Fy;{?q7gMPyfWDNsf5*Mim~NcxJR>A0BOfh(|}H@R;0u zJf@X`$LRBTY*_^!bI!tJ9(j1o_X8e_j=^J>J@MH66?p8eEFP<^!eiYx@jnR)|5Gl) z|MZvQf9MYWXKRfAZ7IP2_Rqur0yFWy_-FXv)xY@PBMtoT{WAQoJ{Xeu_P z*;GtE-&Ab2gQ=L-WK%KycvCToZz{&UG!-+qG!?V1F%`34WGc3y&{WKIsi~O9lmF+q zddF^T(+jgP(o6QX(93Qp)_Z*Atlq~O9lfTQYQ2%BSNhVuoAi~xyw=yb?xrs~UaoKM z1oiE0c=~QGVfsgM-s%U+%U~nSc0933uFn#vLz;^jZgY^eC8tk&{HaPT#H1PLrHwZn_ zWe{C{#ULdz#^6%^OoLm?;tlRwWE&LbcN)A;H#Mjh(=}+SEi~vcId3qo!!w++{IH?y zvKqsg5tfGPTHg$HCY2iUNWLMRn`O8tm~Uut*TQg>k&B_TYMr5rqqX6l0R_V&gWnBL z<;*n@YQ?T@T07uVb!@^ zh7C^khON6Y40{Vz4aauyc$2dq@TR_*%9EQRmKu)pZ0Os(HJ$-H=bC)pHeXrZ?sZ>z`&=7%KH2s>znC;$V3#Q`WS0vs zLd=mDo!7=o2yx)0p77&kMCI|aURCjKXh2?WTo|u_Jk5LDnaC^rl+AnnpWj+ehFX2@(F)V zpeldfR}o)lDd6k9e$VIcQ0G%~K6(n=PXd^#sEix?1CZ0Mc1gI+AKo$n#Ao2xBYyKtt!+2p8TliOOsw$u*- zx29!+|BMR-o|$_E-s%B@!vMB z6gMV_`J5n#Kbj;+(tj#QY1kr2&)6Zz@Q@N*GTkY-GA~e&Ewx2(W5`*M^LM@A&d72> zzRWGbg9-lhV{2!@GoMC5VV;7ZcxYTuy8N2pU8a-Zlk{6bh0l4xm;RH2Z^!clbqZ?* zjW_oQemTw;w91|mw7<_2bSKvd{(9F4hMY|WW7aQ)Vwv}a;#bRr5_wX>DaHB1skI-3 z)5dIsvf5ZEzoJyAc=D@IsUTE1YjCD;wuy;QEtC?f*Ub{nGwKy;CFcrtBsK^adT$cy z{aGh8+?62YcWMcVqm@FD!i4Bj_C+CUnL<1SSw6e(I!kJG$KZQ5Ps)e_CBf>jdql9_M$A$S5HKGUeB88834GEvz|0H}azg}3ln-#t+?GTob zhQiWRC*eDJ1>uL&Il?jt6=6jXBmAOpM));7Q23n=7uJ5r5jO07Df~HGTKMawk+9|P zWnmk&TiDTKF6=Jw5cUN$2?y4_5e^fdg<}d1!ts7DVv<+rM7`+~A+h5sA=z9(Nd4zX zOzqJlrX6!2rb~|zvPpx4yl^9-@XDH)u`Q99Iq3*7>tX|;viu=2yH}A=JFh~hugWJh zB-)61k1i8hhXFAkt{`-Vb%=$}iV3|?F~Y!UF2OVCAOvEegz#$H9`U{5hE6{KZwO-I$o$Ek9f4$m3Z9ZLOhKNAf8*SAYKf~6Gb;0 zh~gbHh!XAF#Onqb;!VaO;+@+=;sbwx_&7)qWiKaq$`icm&$~2;s>Oh)o?T3Q`wNJg zinl~vzB$p5szCfWEk!hWy(5~p3==JDHV}U-Yl(JKccOCF#DGmN zF*H%D7}+_O81uPIjGuEN#VRVuNk3Fc@tz4Dvcw5eQl*TX!s{lb%&(JEH|UVk2bYu6 zq85-cx4w|mKg=d&y8tP#q)sZp98z(U4msnr1*w!{LC*a4hE$f;BvsghCJrmxNUY2g;zF{-c`{rTtpvy1v@Z3A(k*YTGXxwJ za`sfxcMl@{R>zX37+unTPAwTA{)h}{?I!~(7L%u+RFOf~qR8O*5b{jm9WvyA7#ZrC zLx!#MCc~{f$+ISzWCT5jJZI2NMr!{cqtvy@XysHgW`;8vD}RKHll?@-%i53$ayn$9 z0z)P#1(V6MO~@1t9Wr%+E1AacCDY*(^1Rs>^1{k(WX48$@}m0+GV@p-dFiY(dHF&T znU(jQyz(Z6yxRDhyf&gnUY|Ki-XQeIn>Oj>t=%bP&Y3Lo_O<`W+_&4vJDvB)yqV$T zJua2Z-?ox02-PO<=j|gOG}w}lDl0jr4T1FP_TT8yo zRw0Xi49nxf9%6 z4KG(}-l{c}CLyG>6gnxbo=22+r4cp1pn%dzHK7)qil!Fs{7vbunoH@i9HpOIOzNPBP+y8X_Jg84LnzUAg4>Q z)Nabi@GQkGctIh}D#}=Wm|CRzhccNxms+ecg~BRkl<900%1m{DGM_6)Ez#_wmM)a0 zEDXO<%cye7l53@wn-@}6E3Q-4j!!8Ymn3S1R}p1{VxfMiHJ8Gk-U6S6^ZvG|ezqRiuci(QxPrv9gqR@fdYrsFXUyzfK+A_LDl2Fhco!w4sho{Y)J!3~+q*J~=1(cua zL(1>I6?MvK4RvZ*azZ!5gbFYopaSY#sK8Se)aeBusnf4(sh~aXRIt)bD)_!Lb!PJe zDrCwTD&(d#6}nc73jOzj3d?Gv!dDkk;iKBr*(@z8!Y-1E_?Jta%l4om9j{SQQ_fOR zc}i5Y%Ty{x=>-*2*g?g5KcwOo&ZXk2cvO5yDV1O%NhNfDp%O0}P)Y0gRI)-1mHbMH zN;zIer2;^uwy&bnE>%(Kn`cqyXSY%3%iXC9XFaG4D=q5clx@_-LQ^W!x0SlISem*t z_L#c-Sc1wrHb`Ar6ir?E_ldgtESb9IZ%$=ftfj6`lcTP`UrXJH-c8+f9Hwr~6HvE) zNmDsD;;7pP9#Xj`Nz|RGa@3u&Db(GR3sl~YVd|c!lgbx6L*>6~rV5fjQ1^FxQ4fsv zQxBzWsfS-&CqaGj2rJk&0sHfV?si*y_)U(oU6FMDhsTT)is6y)_RFSqTRWz(d zy)4^H6=(0JUIi*rC7TaYuQ@lWbk-IqV@7_#(SpJv#Xkbl! zlCh^gwGB{ZANEk?x&KiWadW6jpA_oz=JWs0agAQAB8`eYpBt5i%rbhPHf~gQGt=nv z{e?!=Pj(yCK8Z1EykBPYD@Vqt^@6QYNB9e)o&&p$`W@FA4Kqnb{}e1Zv7Tp~_&1u9 zc<#qdxpa=38kE9K+Y!x8UmD2CX?bz-BR-sBc@U>`^(8m!gg&RT>L#bE70ju1MRMwo z2RMy0*_`H@yPUQ<#m)aQlUs1bgVS|i%IOO(at57A9PgGKC-BhV2>s6-*<{6u(mgrg zXv0DI5^f^>;JBmPIb)#{x2O?vi=*Fgrc3NNv)*sqk_;YavGN4BY^0T2p0$XxULC>N zj7W2~7yY?a))L(6?j&wayanfAJeONrKc92-=Q!sD8Ql6;v$%~rzHytS^0_USYq@Pp zmvP%0TRGR0Ke!$0s@%@}E8K27U+%xQ`<%yVJQP1OylG_dOT**n&G9 zu$2q4Ucv<{_Hn^gUfh|qY%atliwiaI=0dxqxUjqxT)2-1cXqKG7a^g-MUrX5_|70AW!&gT;NbGd}hrCj1|OD<`@0hdfa z;gb7VE+s#JOFevvOEWspr44W6(jRnk=a0H`7tlTK!pJKwjx$kLRxBS#wwSU*@in(v0C2$YFFXJA?RdSD4n{ZELPIFIQKIERBe9k>H%H*E)T5->>Kj&V!>2QVf z4swN6FTO?e4U@XLhCD^Cap!dIhuVAY$Ghp=&yz>ECh`T>^iziW6{o>9TWWF5Lyg?;Y#**= z!!NE?ZW-75^eFdd?>Vkb%bsg1Q{viBz2rJX7F@@V6I^F>3fEPK5`?q z$GFkZN^Z=^m>c^Q#{G*9;>PhAZoFL|iP`)_Vi$Fg*pL~Tw9*w#y5x=~jjTiBt1%MK zQbXdS>k z_5?KDbQhW)D?rnKe?_v!`;qK92_*aD0Fq-`kX(p4lB@AY@)Ig+^8WQm{&N>n&~HZy z$EuOShr38oI|eBpScDWyq|pqu2sFcE7Mk%i4k;1^9nTQS~i+9vIMDH*CF+k?MS_?4$WO;jOK>N zqPaC+kcL13X`HY_8t+%4c^cc$yge(>yeAlG%BdsGjlYrRjbx-bW{I?HhLKi^AJS@5 zLE6Y0X@}Gz?P?n|U;hZ2e>f4%fAt3GD0d+pH+iIUw+$_rT#gplJwOXCq@V>|ThYSB za%f?A9$NU_0qGjFBi$pLk?yNJq^GQe^jtO}z1%{iFV=TF+$neQp#FH6BJf}Fs%hE->z8i>drjGa#p@{#z9tjMzk>JolBq+L$ zgo@9Ra8o%FW>+EMkQySEzC%P*E+XpU5y|sJ2AmKwi$f@U0#zT7@%$oW zyypQjzW)I&lDLW%t#n6=k}z7-G#!};zaSHz5M=UF9xaxCj21g@MvF6>(c(@kgpFP! z96%%d{sJ@$#X|rMt-8LW}awk@Kdz)!veHz)@8J9{Wr8NgF@SWUqjmkf6?{> zl4$$G9mr*pA97iifn37hA(x7o$W=`hxo*)zu9uyWYnugfqX2R{tdHED%tSjRD73>$ z4(*6&Mms7mqMdVc(9W&4XlE7=?QE+>yQnC%>+njn>xm-TJ-G<&UcMLYKHHCWR}`ZE z)Clz7=F8~6OUu!Jt?!XLVSwBZyh82|3FIN>g*=vyBahJI$m3%K+M_%L?OE@L_MAV4 z_B8b)PeTLbxz`wZ=6N8`;d^NB;;(3LKr`C=dKh`h^N^Rl1@cN7$dTo6*U@L+Iq|VB|aH4f541N4{3ikgt0a@;zII zd~=>7-?9(Lx33iWDPKo^>;#-skl(Q*$S=(Y`90f-{2Hy%DG3gpTBw0eSt_AZyMCcl zp|8=Y8<)_j5B}&>w=42jT8R9CJn~=LiTn@WME*$;$p6s>O+f)|OHiQPEEG7grUb4&i30cApum_h6nO6v3aoNLfy3(P^qgFD zdXXnOy?LVT`x2ebIDt+VEkviA@=%bJGYZm|LqS&QD9C*Y3JPyRLAQ>gpigsAP)`90 zp1B+agE|zv?hpz-Jc5FgE}`H@00r0FK*8h7(HYHRbjHjHo!R~!oe6Y6XD-*GGbP^W zOv_IcBC`jD@VZfm?KTwR*@i+QCt~hP6jHGch5UVkLRAn7W$&R-XJr(6G!%uV^q|lu zyHRM}D-EqA*uK6n456gCdM@SLN zS%V@1exr!X$|&O1J{0jg4V{zzh0Ym@&^eoZ=$uCiI(N1noy%d+xleBBT+ewFsZ@?4 zfg*}rYmFigg`voVY!rF_4~qPzhayK;qo}#3P?Sk7irV}YMfpufQ5ixMRp^GIekP%4 z$!rw8@GFX5HjJWosiNqRWhgrPAc}r_7Dcz;K{0YwC`R}b#Z2sTV)ltpOtcM(x$BBz zD)*t7{!|pJatFn-?@+AMFBI!DhGJ7@qS(jtQEV+jvEz$SoTeR$Gu@BkwjDrm{(&ei zGZe+Wj74$3GEuzLYZR~d48u^K#ZV-)r}}& zUjs^rZbu1sf1-rS3G{cMM3pj>$d;f)r%IIQGto{iM2U}{qr{p=DDmGNlr%2_CE;Y0 zwDl-TIu(YJE(W8dB6pP3v;rkhF+<6^B9v^YhLU$pN68_QDEZoFl>DX~CAYmsDY92k ziXZ`{ten7JJCqV>gi>-LN-0-HDSeYs>dbbO3f`d9wP7grP#Q{2*oso`TcOlyU6eW^ zhSKI#qcr1JC~adZN;|O+rKP)~v}bxKtw9Q)+qh*bd+8^ zfYO^^qw`Y}|DWTEF8Ayc<<+N%UWQx|Rd&4+H7oH%gWYzt{I3A0Z1LFmjz%=Lpuo&WijgLC8o2ClZU6lkI z*B%4gXQY9hHD+MXJqh5Q@&))r<^W%-*}&g!892RF2b?)r1j3?5Kt$dh5LG)0;^c0D z#3e65ik}upFMJCwPEQAy*XMz&Ij_JCnIe$m-U9BFcY+C~8F+B#2zX*R1fE|r1TO_s zK}r5O@YW(0eE4Pp$`81KFEhtM^@FLP)@37ToT&nuN;*J`zZGaV%Lm<3TS4C^YcP0T z2aI|nMr>gaBR=aaBO#^ENRAjVQr$-x=~fR$rs)nN`@@5g|8bO2Z0cc@TC15^J>rbY z$ZolXWV1UtN?=adcZZSG89n8WL2N=Di1&l#~A;YV(Wdy@l7;+xPh?e#- zV9y%{Cf;U@ioYFm`4( zjD4^jv-V>!CY>{YUwyhm!T(V`E9b#k5F2@1pzuaHU9=QT$ulp8e z-&;lI0RIqk=v+T@q<;x>Y-190qWCG}n^3{{eXwTyr`%=&OnRBX!`jU0Tni?s-I_V0 zZ_b3c&1FI_HZx(3mzlHLLMCF{dFEW^WG3?0OeR_%GBF;@nAnN_aRWn4f=L0Bcv_c9 zdLPTAsC;Eow@qi#Zpbp}gDuR3r5Q{{v@3J5A&F!)6D3pzs$eM5zKf%4ixiW4JR$hg5p!Wpm>QtoE*{tB~}zcNreh1S+NgJ zNw9!Y8_vP0S~76zFKH;9y%J8_+YM!yUr=Vu9!@VDhO(hkpq$-KD6cjj$~Rg=g=?>% z;{G5w!#D>jP0@!+A1A??Nk(v%OA%BS#z5uaDyUMt0nU!Hf~uQNLN!Abs5UST=e)Fm z>QVi0?v{F}A=HB!V_)ICx8+bXMHXuP_Yi8MY&d_qIGq3eG1R${1Q(o?fD2b$fV$d| zP`9rM>b(kp`bn3dfk!PgG>wM5SqCAnD>awFRg-SPRX-Bp>X(tw?#g_)CZqz|?@@sct9QY*^Z;Bp`yX64 zwg);kj6tX3Vd#9_0su!@Z|p zK(GBpaNpKRaKCK`^fq>Z2Ml82!P#~2kkmPNs6Q7T{v`pARAxY*mnraQUOhZ^*$*C% zw}U5wH^7re%AqfK3Vmq+f;S=Gwt?$>uOp)e=U=N5ZICpI}tX4j4US z5JpEngE0yjFec&#jFtNaW6v7HIN3}X7rqF_%g%xEVO=mmRud+KZ-Z~-F8t(wpROMh=vOG+mI~%5_+rsl&&*1sYweZ5i z4tU|}EttWJhZ(o-z>8D|ym-$ZW*Yr~nU4>^OQyQ;(o0=Ral^V92Vq6!23p-@cxT__`rsQ4=P{7hns`p!FU#&X}U;XrgC0<)$$-nLJb?9AKs%isEFF%8CXb1S_g&usn$`HP- zCEz=EZ}@Jw6uv)W20y6uzz>)2!H@J$__0U=ep;gmKQ%hQGOw?&e9~T69yuRYX#Rl} zIRmiLbTX{`v<-gV`VM~Xv4vm!rC^oPXIPba2Yv+);n!Evu-efTR=3=N-;VBq-(?rW z@99#ohJ>)D&<@r*oP@Q_^{~#z6V}T*!20v*uz_lX4aEZ3=tRQCwmkU5mk)m`y@o%t zVqp{73!6S{hQGEa!CwOnusLiM{H^&K{?3bqEmq#JrEWQF^$vu8q%Xri>GNP4?F-vV z7sK|=KVkddBG?f&1$Jun!p;J3*k$_yb~UYp-N)o%&y4r5=W0Fd#ou6W)oR%1c>?~O zG7A5urNe$^DeQmG!U4C%aA0B_2jk-4kWc~+z4C*@TO8r=kPwbU&48nZi{WU|LO8ZD z8IJY$!hh#V;kbbl94{hSF`))4cFdX;d%cpKqAGJL!6cPuZNYmU&BgHm1HH?&SNDrCyt4F4zg2l2|Fc1o1Ib< z#!B(jSSgw-eJ?xxkvc0Y^M#dNpUlc;?`LI44zY69D_FVYiTEdwl}C?Q z`7kk7{ySn7cv-B%aYch@ZSj5iQD#^~c-N`D6SFlQJYFVYs z5mu>RlbyNDft{HU&dzMIaW7s(Zhgo$i z306I&pH=VdX6Ksqv2$Z5&@zS9FkZuIM0m3rjUU;0i~&0@_&q!C`*K!O_>Ce>XBVnnVHbM3u?r{WT31zp)%ECMbqf_(z1h;Np2r+k@5MS+UnPsxcmK!g zzp!NuRGzQ~9t&B67e83T*{fK?JrrwL_=e@F-e-B90W9z3NtQonKg;*>XZf#gvVytw ztiW5E6_jpcg_=)T;UPm-`0fo$=qzFhpRX+OX+m^O&xR#WPGiZ>@+`$`Vk!SVma6{F zil}L<=!_mKs^7}e@IFgN%w_3cJ6W)3j0LgRSJ=M=K$2Qpdn4|(ho{W^9@fEK%?b_u(bJ;N@IYG;?Wd$AVF+F6T? z?X1PvdcB5u*(nEvdb%^SS#Ud)+)r4wQ8zlt#Kb~ zonp;e50tPrYc{YpH-ED$rX6EfxUuYt=l@vSxwWkAk!!4NUQvTIITvuhgvu=a~@v-T-jto_h! z)?w`g?qsuT74ETX_e^KkzOiA~>0M*j1^#B&{cvR+aRuv`c7SypHDR5c9TEETk?b1t;!+n)&uG6){1a;n<$3e7WItX);-E@U+utd&$-LG zC`hm_o<6M0`zF>^aDa6^3s~3oM%Hab5$kqi6T3r}$L{c0!0vcw!0zO;?9OmIc4zw; zcGrpv?5>+)>~1+*cK4p!?CuW~`=7A%|2ZzWM?e4d!iJPjF$NVYOzF9Y^Ln<}YG5vnZ z_tJaH-z16(tRt!5pg&Y78%2e8>rv-!f1#p%&QWpJ>!?H>mP(OaN2PTHQy1#0sm!ly zsH|@Ub*%|eHwMm7w`WYF?$X0l{uWFMG|@SqA9ssMN{vXil!Aril)EdiR3;m6Dc%463rO8CYm*Cib#ciC{lHj7R~Xy zCz^Znm1ti5W|6kCiAZPF1JS~W9FbnRrO0rOsffShf=F0!Nkqvhi|CyTL`?A|k&%9u z2u1Qli^eQP*rQZr_CrjxbVHtKS@np>YU4YRP16j~%DrPEyGeUQ_Hm)2b%d(O={*!} z@RAg5o^31ITC`T=;$14*q2DRm^&?v3exX9-=~61%$74m_g9k*1UdxMo(oTtvANCRX z8Xge&r7Da36{SQ0L8K^fJXjRuvqcm<5FrXVG+h)r_*)cyTv8M<*;{lj42z;vHi)7# zOGL5sK~Y?Bs3^gCM3mTlPm~<;PL#UPOq5pmLv-FnOq4NYjp$OuS7QrA}0J0l0>%`=!$Y{e~9iT4U6tM?GhEJ@kIA)wuv5Q)QTSOz9xD~ z*NC1^@)W)J=prh*5Fjc(pd~7?mK2rF|4;PhpP1-fb-(Dt16$FjZPdMdt5ORqDbr|lV_Wr8Z`=^4tj?BhMOT(tx(KX8v$RL-JjFzK|?x_Wx1&klN4 z>Nu_Z;xn!CyPQ^4m_w_vyXZMvM``u2m-O6%N3=#$!X`Qb& z^g`J*TGw2W);n^C*1x@&6f_*TjibUZ9Y--_GUTS)&45&R=APgDLO*$%1ovIoA4rb52>O( z#^Y(v1DW*Rwt9M>D?#tC9ib06RnP}3^XbEDr0FA{j?qU~YtYBaROu7;OX!ndf@$9y zU9{ic_w*@xIelu-mG*x$KnI*Mr2{Pu>CkIU$Y&|vzU(nw& zq~jVb>G*r|=!B3%bmHb9Itl2~$ujnIa^osG<^Cf&HS#^3wmY0oH}9p-&wW6jA2glt zi{3Jjehi%7lHKEi-5isaEQ)!v!t(ER?;^N z>*$;EY4pwBR{B=eS32j3GkrTVg3b+fpzrJ}r0+UErt{3V)Ax91=zL{wx8hAy`fE%sT^)Oj{ub9qe^2;F*CZ#=wP`JMUB*4S zK5Hf2aQ!shn9HYs6y(r9pPr?gUOCXeK7`QCRblk+h8DV|O_Ofzucq6?chT)~%jk|d zigc&$NxBQ{rMs8N(LHNs(Y@RL(tZ2g>AwMI=>9ledfh)o~M`mY4zN&^$2b0|M&11Hs%W9GIIy01XpQ zpi$ip<{c^rnzN*UW^OXjT6GL)bvy&w;ksZxPaMpDgMiNNM_|FU7_i{lC9u$19W4Aa z4s^pMfS%w#p!d-j=!(vG!yV!YJuQvFc6AP0bx}m zAWp;sQYQkCrImp4@&uyU9zgW;HK2Fc10Zh>K>j|!Y#s$rdNP2yhJaoF2pCCb0;5}9 zfOFmrkfbd@IY)u<26?bZsuwJ}D-KMy1cSx0USRQqbbxm%1JhX@z_f5VF!TBV%r&Ec z`G=2S$w>k%6;1<7>*fKAh(xdqJAq~0=YVBK3s`O+3#_IT1FQQhf%Si#z-Ar+Y|4&; z6{pRCEw>fePK?LOi-BO3<7u#3ZZcS1_!!t7sRnBZ9$52h7}%#a0S5;suvS(dtbK{W zy5sS{ky#2HI~{=2m1f|)?GRY6eip3%+ypj6J^~wUUV=?irNE}bGO+n%IoM*n32YgX z16%W&!M6P#U^_VTUzv49@_!);h4`S_as;+YjtA)B(Hxyav0k{{sK* z(FE?qG~nK&0zB>>1A7kffG4*Wc#d5Id!O$GUV(SOJ}YssU+zBGUtSKp6CJ^U%`?Ek z1zONNxYPL;s_Sv&~PJp%&HW`lsg9UySy2@v>F z4xHwdgVQm!;PmJp5aenOg5JFV!HgpaPUpaxsm9=p*Gh1vIv0d25rB{zA3>B0R>Xhwt!Uml_1sk z21xCZ0cqPWgS1L_kiKjkNWbp^&Ku@}^JxHFP^bYH{G-8z{zQjB89kp~x7#e$1P zB9O@%fXwT2z$Hy9a4F^*xGZf2E+20JmwTE)){ah)Rig*4*d>4~B{aCY=pVRxrvh9v zm;tVxw*}eCDIh!C30#+8!1bdfxZbk`+}QOD+-RV|O~*EH^W!sc%d#5WdOjEA7@Y<= zxBr3L24&#(#g8CYy$s~WNrOA``@x+vQsAz5JGgtS5!@Y^3-Y{nfV@A=;GSC?xYytb z@;4j+`CqPrf;Ebu;Qdu_-^vo)FQ&i)vrXW^lO*sE$%2Oy^`=L3GLx28vblL2(ibUa5TpuaZkZiTYbmk~Rapp0@$KK0gjhwZDSW%n#tr!q4E% zRUvq5m}fe$9u;D3ExXHXU~y9FtN3KkGhX(EaO^6n-q zojpsJ-h1!8qoRl?VlUXRVnGzeUO?<(!QK%R#e!l(!GemS$bG+i=lgqqJd?~mNhY)N z>}K*L=bXD2)wz2Pf4O@%47mFqS={{x7q|z3Mcji{SFSPIi)(x<)+A4DG;hLro z<(m4Gx#oHD+#~sX?onw2_gF=&O}@p5Yta?kJ}>SG*&seoGv=P!)NxO*ui;v~w{Wd3 zAGv2S*4#7kxB5J{f_whAfO|2&ihHT}lY6-#m}}E9;@bB0a<5EOxmWcQxYsT#xz|m` zTzg~-*WPiDdoxX%dn*~lyK@=akIv(|g!x>TIDS8eD|4Se9_PNyOyj=F2XS9Fq;uc&PIKSt zoVaesH(Yn~7Vdk(LGJs{f839SS=>+6Tink*wOo&RIoESz2lp$qm;2SZl>1#|%=HfI z=6WktxIY}>{#+I7oQF)|{(fA|_010C{tYkW{_T9n^_wMg{kL>Y#0nQC5;N6IBrbC% zl8Wj7-QybV{1t4pKV*o}v3IMCPFKhoU0QJ2=;p?WMvaf7jauy+jM|@HGwQ6GZS=D| z%c#Hpok)7g5RtsAjYv_~Or$hYQlzHQE7E{Sq?3O|q<5oVG@0ubk&~}PW&uqiUSX8T zuJwh;`HH2;^SZmp|Lsyyn8rIXSLF&(($hLoW=w@>nzWl})&(8W+*>80`HohiMYnH= zmc?p|R>~%e*3>-|t)Ctw+U%e%+BTLIRSrHX+AY0Dv~P%m=#Wmf=$KQ9sIFkC==8Z% zQT;G`(dBGw(Y3bKqTA6!MEAeQiJDie5k0k9D0JYSv#7f?PxPz& zv8eA@-{mK+-<}h=X zL^H)p#2B>FEM~#RNM_NVaAwIF4`x{tWma@sGOJWfm^Hi)Q|Xwass6B%+3&KDIe569IihaH99!1R93RlloS2=%oa(n^ z&d&E?>W6(`E>=8X8qBnrtBr4&8&iifx5rd4cdxcG4`$>rP0W1eQRfKe$)QoqvuS6T zmv*0-*D7Vqo35wK`&$>7kB9o1u8m5}*M)nS?*+|F&(xbt@6-%2K5Qy0VOzyY-gwDM z`Tu04U;k!h^G>jGaxtv@)@STsGXr+W!|AMI?lN}R$c60iQ!J|#{hl2;WF4z=N`X~N z$zn%qoMOj3RAe=li?LtM`s`RaC06HpKdZZ94?7_shMlP0$4=^6&KjKi#ZF!w!-|qN zv8>HkG1g0-HSRNKOdOc=WB4mJ%W*ZEGuw~NJMovD_H!*e!&HYYn7NKEykNl2k+Eav8q8yh zeU;dGvz*zIsyFQXMrn4T#B6qvsFYnCCC@HdEy*rzNM)Dx2C*xcGi+(ndUj<+8@sA? z7rRESn_U~Qku57b&8};XV>hVHWH*NPv70I++0E~!vs*+-?AH7X?6ylqY{k$9F*a)> zTe<%nyR*-St@4awcklSa?&;}d_j=f}`>GV#{rxfQ!I0tXq2q?^5v4cm(VU0uu|{jQ zmYd8T-%!NX_4%?VV?)_fH)Yr}^ap!(Yd(8^kT+XDeJOk4Z76%m|1W#_Y6*MAVgq~i z;9d5*?qc@F=F{vgWq0=W3KRCOe2G{)A%uM(=Gtp4kzt#pf3wXCL)piJwb+)GJo{8- zC)>I;oqev?%f2|ekZt2**;hC3vh5*j*f$-g*>|%-*$+cUupO02>?gAhw)37O`#EU} z`&F`?{kBDl{cb*!{qabj?V0As{#Lof_MTYC{tdmu{*#!*_U~#Z5>+Kca^`h1!1Dx= z8gECW{wyZa52h2D>c2#`SgiFMs!HUHtBAbfJ0kz#DjC$^Nd{NskRh{ei9+ZlqG(CmW30XtofjX;xZBP|_q011zgJqU4IE7L z7MqiaGn&YxR9T`Qc908u9FJCf;)2 zh|h>L;;UXo{Pg^YKj|a^{5cZnI)MZQjUvJECrL=|D-v3KN{q2mBjFXjB;u&}+VLeL z67{f)M8A_JF~4t5?>=c|!&AOwtYf&w-d5w z{s~g8mqMzq$B@0Lo5(&zmh3zHne6u!Ya{nakOQ02$U$C;9Bg|-4lNi$4(kVz!*?ag zk=)zlsM=+6^z09EEOs%ekvAhXhg?Xl|5Q@@=K?vtV;ZS*b|Q6O3dxD}N61MekdyCJ z$*EFPa@sV7oPN6^ix!GAt zZf)L7ZaX)U+rJ#iovL@_uKz7^Pr8rXtFa^ZV;_?TN-N2OOL?R*x1K!I9ZeoSyh)no zSCeLw{iONbJMw5_7br&o57))}?rnc-3L?4>h#zUC%* z;k1mr__Lh6Jk(6u;>^h_wPy0__Ga?Bco%6m(V03efT_;8FqonWUZny_iCvubC$}kQlYY6Bk4fz`*h$@TPmj{Mdfmj zP`QVNRGurK^6L_)e9sa(DCj61bV{BM9+OW8&w5J-Kc7a22-Vl# zCsa{imMV(#&Wc^7bg1`WI`r5&I!r~C4$E(*!=4_b!}+arc*PnzLiz|Dk@%2~xM@O_ zjOJ6NRo|)7j|EgY*orEj`9nu)AEzTrj?$6uk5Lu3Myhf|lB$jjrK&UbQPt;;RL!=T zs_jmsqlW0wQQ3p(sHUHEw1rrQdiyv!M#h_tN!d-u+|!`y+)}E(S%YdwG*XR(^;F|l z9MvR_RC7Zt)%-V|YQ^oNS~q@BZPtluuYXLn|Ao`B@uTS2n**p0`+@3gct~~npU`m$ zzv;L;#1SzUTS!;l}TAH%%5|pjuDH)qf$`x)j;XZS=88MG&SCS zfpUY(DL1W{a&23wiCY6TsryDv$2m~b6+5VDuPQZ*FQaDnov69>IBH%kMJ<#YsKuP6 z)Z)`-Y8iByS~d)zR%{rx+EP!g2MN@A+GA?{I*0OJ4CT-KrI_@ZV%Ud^&D$SJy-cqFUd6OmA#mHwKY+1pRv^Y;%e$cCs3ct^VC;4 zkNVEnq`p68sb9i(>i6g+^>gz zU>f;n5RJ-Eq)}~tG}><&jlTMs##p-0n1hFDtd1*^+KVKj~V%Fy`u(KNn= zqY3V&G~q%5P2{R+;$8`wq&br&t$t3E2QH<_vvg?kmuEC3zJ{he*+f%4^Jwbje41vy zmZlwSqv^VSG=1YznlV(8W|Rccj9w|4nYoi@zR99lq2p=ReQBEQ_={$rm7qD|cau{c zKy$Uu)7-MJG;c@&%`1LS^M3E3Q?m%2`nHcw3%^3AJuIiwUANKc7dOy+^V2l{@OwIA zq86R8t&q-CX{9q)B+&v{8Cp#z* zQH?*HqcV-o@i{{0tmvV0Zrani1Gmw+_A+$toK!mZ%zHZbcd|I6`RBiTT;5<+6)y^T z$y4ovyvb`l-eQLm&xeQdw#vVFhif&wbACAQt~-VIy4lJ5WiH`^6o2xedsX>Jn?Za` z;~737x`$8x_<~Q*w&k!m0>36ilVAJe3%{=P4!=QfJHPR)4Zqo|gD-!z zh2NSJ!*7>R=PQ=B@RcL0`JG!T_^NRU{O;Y+eD$OpesA?Cb9gr)zbX+k6rvtdqe)#roa5{FUtH~yCVKxSs{P_&3(Sn_#ppq?n}Pu zb}j!%^)~-FDvWR0UBf@=G~ioVJN{YjUH*AZJ^$jn8Q(_y`Bxcl`PbDS`S#a0`L|uZN|N3VS-#zX(|J`K~|08od z|8vb0zNhvy|Et-b|NY}N|3~RF|CgD`_qo>b|Kel${=(akaEXLOlNlr7<=gkbTpqsXT~z< zG)~1h!#a$czY61?kASX;*p}Nvx7`rqEf!$>N>7Y`vm6sF{4im~LQHs73_b1u^cIyu z@5wz(G%Ux&!pE3+=OZR*Ibc$z5+RN~%9|NOV04DY< zm_19tbjpKe$AQg@0b5rNwl^2VS`ws41XBMDbbuzPoi6CSbD)=HU@Wx(#&(i0E_R0T z1#KAj7lX523a&sM+=*atKUTwp7{MeX876yY!Q@RNOveVoG;BOf*S&?Qm|xv&urAE( zn_)Iv0%mo|F#Dnf^N9g4k1B!r1}m7~JqioiHdt66gGC+>i@nQW@iGsVDhjZ4-2%%w zWw5OEgXM=8u+n5;>Fxe-<1ysRS_Jp6%L6H;ZWKOhq|wDc(ERi1J&VZQ~<{SML5p- z0msTmaJ*3n$FBq6q{_m{+6zvxL2z0;22KZ$!0932^gA6>Gz&4st`bv{;xT2}Crmjq z8&jILV9M_%IBQ&mv&{=Q$IpfHVhK3!FNX8oD{%gH8!jWe;bOKCE}=YJ3d7*C?F3vd z%EIOK54g$>hpS#ET%8l(nra8vWgFpo;3Zt|+=uJuk8m4y7jA4h+z@F)|&7Pm4#=10zB7^gy%5}c;4F$&(3yu4SEePy&ibk zSHUZK0la3L!E4iJc-5K0tFaPZpFhESa1XpEa`3h{g?Hpvco($7d;L;)AM=Cvoptc; z;NT-O8$Q}6;A15ZpTHdWw;BPn@{`Q{m4<7>mse9qS!UXN79(_C2SPV& zMd$%NgkCs@(B?pdcI-!JzXHOPq7kNd9AQ>+2=f|&usBPE*N! z5mH`=P+5hDNiB%5`iuzAFNlaWLd3LmL@drjMEO)i9126k#aKi%*&^coL`3`u1Xi2Rp}sA1O-HEuAX zI4?vwtwvPv3q+;%B5F28)JkVW?GPcVM(n#X6;Y2<5hae_sK4omR@6hZ_Ao@Ve-LeV z2GRaY5uF%`=oyNLUXqFEa&emjrx1NU4$=1qAX=gx{)AJIsa=Q^bsvfcWZxCzQfmpW} zhzmm8)N2JKSL5lJ^q>P)16fzho!ZxIMmLVm=04Zrdky22NlqKVkvY`hlyW@~@ zd^A!n-$hDeK2qA+k@BS!DgU~Vs*r(H^}$HhpNUknHl#WgA=SSHsj>Y?&B;RQoaaa_ z-GJ0BzmU4$5~-)Eka|tr?~y%H-^@X3_dcXa{zlp`Q>1AwK$_tJq*ex)2%H$0DP- z5*h75$oTpm8U1OBh%{|G9#uSGxZ`eXJjIC!6sy`HAH5` zLu4KrhRicL$h`glnc}q|v%LkG-xQJAUx2J3&yh9S2w8e-kY(J4EZZr_@?4Fqu!G1- z?nKsfZ)BB-eXE+0wQUlz_WL306Oc#24A`Mk4$B z801JQBS+ByIb#MPXQBskjK3krrVBY9-;oo#A2~^7$eCJ>oZ^GXDK$Y(x!Cq}AgA^s zaxU&b&fQYvv}PjbgB@~y${|;3AaaLRAXj}Bawl0JmwSj@+j+?K%tvmR19FpYA$RIx z3*renIZt%gAjlMDB<2$o;Vgc?0Z_r}z(fV=9q1Q5$*2 z75}%#mC?o=35oyL=1)q&eAShhuMma#vh|oR`5h(yEK%~u1tq_ZV#)k_SQ6ETC9c1) zg!jP`<2)=eypAOkPGQMdKde+$Md@>~meASF5cA5SbfYUumnWmNL; zi;8WlQ4u7dVp10>FAns`(%prqnFlSQmvGPK~%R=q9eWnB)2(M?Ab|hQ=+Kc<|N= z57Hg*VB~k)e=rL7H$BJwG#fmd@E1>88}L*)2v16_@WiMUEw8_!rK%n+xvqF~Z5P_b z>&xqvQF!(5BVLsWcxC$!ZT%b3c6AK8YFp6h=#Nif_4s)1J3hKzLdVy?=-6Y8j+9jN zbcNz)UK)NBwBh>$d3^V`M0a;3x+{y(9i<^ioXA1{k9hq1G8q3XPNJ_S27N9a`1{=r zfAF_OrRNn1x-BwY3DRQEqq&`j<(e5scICfGPZ8Js~t@%V4bueET<=ic(_2>#}M+XRM({BrE z_FDz5xw{3e`Z_@?%~;SHHdN3&ZzO2W$PhHG&k34x3k2P2Q(=6rvM}CFLKrWRC+ODR z5p=UZ2)ZVg!nppA!laGE1cPxi1Oq!o!9e+_p#MlD=x>}P=tuq%^!1|zBRwM4YDyGX zK2BhT1c4p>L0~?V3QXO2ftl|p5RKUa*RxwNRqqr`(}oJBS-OI0K%HPpmJ6oxRbox2 zxq`*+dxF)jy@GXWjbL3XD_CC%6|B#$5v+HM+xzVh_*f;uW;!R>cDxhpDn)|bKQqBz z@0VcDB@1SjF@msczF>d(ui!M=MwlYj5_0yrDmXuB6I__Bg4sbvu<0HqI9YuZT#7XX zx1IY050#~Yr|MS0^R|azK46q!r@B{gj?EO@H?|61i}D1Y?H>idiP3_;%Ra%}`i5XH zxm0kq3=_N}w+nvS^+G^Lix4a$5<<4;3Fe7|1p5=Ig4?w|!KYDM2u$8AgmgX=!mF%= z$SeMWdGTJs!CqeQ7=Bgo`>{p{iSiX9b}kfRr2T}rngN3O+NFZSz7K+@y0Z{)y=$QPMUR`{=jAm&Swo%#2yFZ&5=g z=jzdKGHB~M6OGY2|0%f>jk(5u!lnM>Gj=LJY&=HzW2_|ZKVMAX_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/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 69214d004..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 @@ -409,35 +409,35 @@ SUBROUTINE CALRAD_WCLOUD endif endif - ! SSMI, F13-F15 (19H,19V,37H,37V,85H,85V) + ! SSMI, F13-F15 (19H,19V,??H,37H,37V,85H,85V) if(iget(800)>0)then - call select_channels_L(channelinfo(7),6,(/ 1,2,4,5,6,7 /),lvls(1:6,iget(800)),iget(800)) + call select_channels_L(channelinfo(7),7,(/ 1,2,3,4,5,6,7 /),lvls(1:7,iget(800)),iget(800)) endif if(iget(806)>0)then - call select_channels_L(channelinfo(8),6,(/ 1,2,4,5,6,7 /),lvls(1:6,iget(806)),iget(806)) + call select_channels_L(channelinfo(8),7,(/ 1,2,3,4,5,6,7 /),lvls(1:7,iget(806)),iget(806)) endif if(iget(812)>0)then - call select_channels_L(channelinfo(9),6,(/ 1,2,4,5,6,7 /),lvls(1:6,iget(812)),iget(812)) + call select_channels_L(channelinfo(9),7,(/ 1,2,3,4,5,6,7 /),lvls(1:7,iget(812)),iget(812)) endif ! SSMIS, F16-F20 (183H,19H,19V,37H,37V,91H,91V) if(iget(818)>0)then - call select_channels_L(channelinfo(10),7,(/ 9,12,13,15,16,17,18 /),lvls(1:7,iget(818)),iget(818)) + call select_channels_L(channelinfo(10),24,(/ 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24 /),lvls(1:24,iget(818)),iget(818)) endif if(iget(825)>0)then - call select_channels_L(channelinfo(11),7,(/ 9,12,13,15,16,17,18 /),lvls(1:7,iget(825)),iget(825)) + call select_channels_L(channelinfo(11),24,(/ 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24 /),lvls(1:24,iget(825)),iget(825)) endif if(iget(832)>0)then - call select_channels_L(channelinfo(12),7,(/ 9,12,13,15,16,17,18 /),lvls(1:7,iget(832)),iget(832)) + call select_channels_L(channelinfo(12),24,(/ 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24 /),lvls(1:24,iget(832)),iget(832)) endif if(iget(839)>0)then - call select_channels_L(channelinfo(13),7,(/ 9,12,13,15,16,17,18 /),lvls(1:7,iget(839)),iget(839)) + call select_channels_L(channelinfo(13),24,(/ 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24 /),lvls(1:24,iget(839)),iget(839)) endif if(iget(846)>0)then - call select_channels_L(channelinfo(14),7,(/ 9,12,13,15,16,17,18 /),lvls(1:7,iget(846)),iget(846)) + call select_channels_L(channelinfo(14),24,(/ 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24 /),lvls(1:24,iget(846)),iget(846)) endif ! SEVIRI if(iget(876)>0)then - call select_channels_L(channelinfo(15),7,(/ 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 @@ -1622,7 +1622,7 @@ SUBROUTINE CALRAD_WCLOUD if (isis=='ssmi_f13')then ! writing ssmi to grib (37 & 85 GHz) nc=0 - do ixchan=1,6 + do ixchan=1,7 igot=iget(800) ichan=ixchan if(lvls(ixchan,igot).eq.1)then @@ -1644,7 +1644,7 @@ SUBROUTINE CALRAD_WCLOUD end if ! end of outputting ssmi f13 if (isis=='ssmi_f14')then ! writing ssmi to grib (19,37 & 85 GHz) nc=0 - do ixchan=1,6 + do ixchan=1,7 igot=iget(806) ichan=ixchan if(lvls(ixchan,igot).eq.1)then @@ -1667,7 +1667,7 @@ SUBROUTINE CALRAD_WCLOUD end if ! end of outputting ssmi f14 if (isis=='ssmi_f15')then ! writing ssmi to grib (19,37 & 85 GHz) nc=0 - do ixchan=1,6 + do ixchan=1,7 igot=iget(812) ichan=ixchan if(lvls(ixchan,igot).eq.1)then @@ -1690,7 +1690,7 @@ SUBROUTINE CALRAD_WCLOUD end if ! end of outputting ssmi f15 if (isis=='ssmis_f16')then ! writing ssmis to grib (183,19,37 & 85GHz) nc=0 - do ixchan=1,7 + do ixchan=1,24 igot=iget(818) ichan=ixchan print*,'ixchan,lvls=',ixchan,lvls(ixchan,igot) @@ -1713,7 +1713,7 @@ SUBROUTINE CALRAD_WCLOUD end if ! end of outputting ssmis f16 if (isis=='ssmis_f17')then ! writing ssmis to grib (183,19,37 &85GHz) nc=0 - do ixchan=1,7 + do ixchan=1,24 igot=iget(825) ichan=ixchan if(lvls(ixchan,igot).eq.1)then @@ -1736,7 +1736,7 @@ SUBROUTINE CALRAD_WCLOUD end if ! end of outputting ssmis f17 if (isis=='ssmis_f18')then ! writing ssmis to grib (183,19,37 &85GHz) nc=0 - do ixchan=1,7 + do ixchan=1,24 igot=iget(832) ichan=ixchan if(lvls(ixchan,igot).eq.1)then @@ -1759,7 +1759,7 @@ SUBROUTINE CALRAD_WCLOUD end if ! end of outputting ssmis f18 if (isis=='ssmis_f19')then ! writing ssmis to grib (183,19,37 &85GHz) nc=0 - do ixchan=1,7 + do ixchan=1,24 igot=iget(839) ichan=ixchan if(lvls(ixchan,igot).eq.1)then @@ -1782,7 +1782,7 @@ SUBROUTINE CALRAD_WCLOUD end if ! end of outputting ssmis f19 if (isis=='ssmis_f20')then ! writing ssmis to grib (183,19,37 &85GHz) nc=0 - do ixchan=1,7 + do ixchan=1,24 igot=iget(846) ichan=ixchan if(lvls(ixchan,igot).eq.1)then @@ -1926,7 +1926,7 @@ SUBROUTINE CALRAD_WCLOUD end if ! end of outputting goes 12 if (isis=='seviri_m10')then ! writing msg/severi 10 nc=0 - do ixchan=1,7 + do ixchan=1,8 ichan=ixchan igot=iget(876) if(lvls(ixchan,igot).eq.1)then diff --git a/sorc/ncep_post.fd/CALTAU.f b/sorc/ncep_post.fd/CALTAU.f index 381452245..222c4e10f 100644 --- a/sorc/ncep_post.fd/CALTAU.f +++ b/sorc/ncep_post.fd/CALTAU.f @@ -125,7 +125,7 @@ SUBROUTINE CALTAU(TAUX,TAUY) ! ! COMPUTE U (EGRIDU) AND V (EGRIDV) WIND STRESSES. ! - ELSQR = EL(I,J,LMHK)*EL(I,J,LMHK) + ELSQR = EL(I,J,LMHK-1)*EL(I,J,LMHK-1) TAUX(I,J) = RHO*ELSQR*DELUDZ*DELUDZ TAUY(I,J) = RHO*ELSQR*DELVDZ*DELVDZ diff --git a/sorc/ncep_post.fd/CLDRAD.f b/sorc/ncep_post.fd/CLDRAD.f index 653b192b9..51ab9f111 100644 --- a/sorc/ncep_post.fd/CLDRAD.f +++ b/sorc/ncep_post.fd/CLDRAD.f @@ -5137,7 +5137,6 @@ 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 @@ -5182,7 +5181,6 @@ SUBROUTINE CLDRAD 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/MDL2AGL.f b/sorc/ncep_post.fd/MDL2AGL.f index 0c6fb93f1..633534564 100644 --- a/sorc/ncep_post.fd/MDL2AGL.f +++ b/sorc/ncep_post.fd/MDL2AGL.f @@ -1562,7 +1562,7 @@ SUBROUTINE MDL2AGL PAGL(I,J) = EXP(PAGLL+(PAGLL-PAGLU)*FACT) TAGL(I,J) = TAGLL+(TAGLL-TAGLU)*FACT - QAGL(I,J) = QAGLL+(QAGLL-TAGLU)*FACT + QAGL(I,J) = QAGLL+(QAGLL-QAGLU)*FACT UAGL(I,J) = UAGLL+(UAGLL-UAGLU)*FACT VAGL(I,J) = VAGLL+(VAGLL-VAGLU)*FACT ! diff --git a/sorc/ncep_post.fd/READCNTRL.f b/sorc/ncep_post.fd/READCNTRL.F similarity index 99% rename from sorc/ncep_post.fd/READCNTRL.f rename to sorc/ncep_post.fd/READCNTRL.F index ca9b0d785..3d8174595 100644 --- a/sorc/ncep_post.fd/READCNTRL.f +++ b/sorc/ncep_post.fd/READCNTRL.F @@ -131,7 +131,12 @@ SUBROUTINE READCNTRL(kth,IEOF) 1061 FORMAT(30X,F4.1) 1070 FORMAT(A4) 1080 FORMAT(A2) + +#ifdef COMMCODE 1090 FORMAT(T5,14(5I1,1X)) +#else + 1090 FORMAT(T5,100(5I1,1X)) +#endif ! ! SEE IF WE WANT THIS FIELD. THE SUM OF THE LEVELS ! INDICATORS MUST BE GREATER THAN ZERO IF WE WANT diff --git a/sorc/ncep_post.fd/RQSTFLD.f b/sorc/ncep_post.fd/RQSTFLD.F similarity index 99% rename from sorc/ncep_post.fd/RQSTFLD.f rename to sorc/ncep_post.fd/RQSTFLD.F index d4b8be3c8..cf5718c0c 100644 --- a/sorc/ncep_post.fd/RQSTFLD.f +++ b/sorc/ncep_post.fd/RQSTFLD.F @@ -25,7 +25,12 @@ module RQSTFLD_mod implicit none ! ! increase MXFLD each time you add a new field - INTEGER, PARAMETER :: MXFLD=957,MXLVL=500 + INTEGER, PARAMETER :: MXFLD=957 +#ifdef COMMCODE + INTEGER, PARAMETER :: MXLVL=70 +#else + INTEGER, PARAMETER :: MXLVL=500 +#endif CHARACTER*20 AVBL(MXFLD),FIELD(MXFLD) CHARACTER*50 AVBLGRB2(MXFLD) CHARACTER*6 DATSET @@ -716,16 +721,16 @@ module RQSTFLD_mod ! SRD ! CRA DATA IFILV(430),AVBL(430),IQ(430),IS(430),AVBLGRB2(430) & - & /1,'U COMP 0-1 KM SHEAR ',230,106, & + & /1,'U COMP 0-1 KM SHEAR ',045,106, & & 'UUCSH ON spec_hgt_lvl_above_grnd'/ !430 DATA IFILV(431),AVBL(431),IQ(431),IS(431),AVBLGRB2(431) & - & /1,'V COMP 0-1 KM SHEAR ',238,106, & + & /1,'V COMP 0-1 KM SHEAR ',046,106, & & 'VVCSH ON spec_hgt_lvl_above_grnd'/ !431 DATA IFILV(432),AVBL(432),IQ(432),IS(432),AVBLGRB2(432) & - & /1,'U COMP 0-6 KM SHEAR ',239,106, & + & /1,'U COMP 0-6 KM SHEAR ',045,106, & & 'UUCSH ON spec_hgt_lvl_above_grnd'/ !432 DATA IFILV(433),AVBL(433),IQ(433),IS(433),AVBLGRB2(433) & - & /1,'V COMP 0-6 KM SHEAR ',241,106, & + & /1,'V COMP 0-6 KM SHEAR ',046,106, & & 'VVCSH ON spec_hgt_lvl_above_grnd'/ !433 ! CRA @@ -2086,7 +2091,6 @@ 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 '/ @@ -2123,9 +2127,6 @@ module RQSTFLD_mod 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 ! diff --git a/sorc/ncep_post.fd/SELECT_CHANNELS.f b/sorc/ncep_post.fd/SELECT_CHANNELS.f index dab0281a8..9b84f7b0d 100644 --- a/sorc/ncep_post.fd/SELECT_CHANNELS.f +++ b/sorc/ncep_post.fd/SELECT_CHANNELS.f @@ -94,15 +94,18 @@ subroutine SELECT_CHANNELS_L(channelinfo,nchannels,channels,L,igot) k=k+1 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 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/sorc/ncep_post.fd/SURFCE.f b/sorc/ncep_post.fd/SURFCE.f index a2f363c1f..d37fe024d 100644 --- a/sorc/ncep_post.fd/SURFCE.f +++ b/sorc/ncep_post.fd/SURFCE.f @@ -1578,7 +1578,7 @@ SUBROUTINE SURFCE (IGET(548).GT.0).OR.(IGET(739).GT.0).OR. & (IGET(771).GT.0)) THEN - 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 From 1716356edd27a412a1cf433ffeb5a630e47d33ff Mon Sep 17 00:00:00 2001 From: WenMeng-NOAA <48260754+WenMeng-NOAA@users.noreply.github.com> Date: Sat, 9 Nov 2019 22:13:49 -0500 Subject: [PATCH 10/21] Post gfs netcdf (#22) * Add capacity for reading fv3gfs netcdf files. * Initializing 3D radar reflectivity in read interface for gfs in netcdf. * Inlinepost (#1) * modified: jobs/JGLOBAL_NCEPPOST, scripts/exgdas_nceppost.sh.ecf, scripts/exgfs_nceppost.sh.ecf, ush/gfs_nceppost.sh Add an option INLINE_POST. If it is true, the grib2 "master" file is produced by the inline post in the forecast model. gfs_nceppost.sh script is then skipped. Also set FILTER=0 to turn off 5wav-filtered data. The UPP still needs to be modified to read in netcdf history files to produce sflux, goes image and gtg products. * add sflux to inlin post * Add for new parm files for running inline post new file: parm/post_tag_gfs128 new file: parm/post_tag_gfs65 new file: parm/postcntrl_gfs_two.xml new file: parm/postxconfig-NT-GFS-TWO.txt * Bug fix of in-line post in ex-scripts. * Add control file at F00 for in-line post. * Teak INITPOST_GFS_NETCDF.f. * Add capacity of processing global FV3 outputs in netcdf in workflow scripts. * Tweak reading netcdf 2D field from FV3 output. * change physcon module to physcon_post in INITPOST_GFS_NETCDF.f. * Sync the change of dbnet alert type for gtg product from NCO. --- jobs/JGLOBAL_NCEPPOST | 1 + parm/makefile | 22 +- parm/post_tag_gfs128 | 4 + parm/post_tag_gfs65 | 4 + parm/postcntrl_gfs_f00_two.xml | 1115 +++ parm/postcntrl_gfs_two.xml | 1708 ++++ parm/postxconfig-NT-GFS-F00-TWO.txt | 6769 ++++++++++++++ parm/postxconfig-NT-GFS-TWO.txt | 10765 ++++++++++++++++++++++ scripts/exgdas_nceppost.sh.ecf | 49 +- scripts/exgfs_nceppost.sh.ecf | 48 +- sorc/ncep_post.fd/INITPOST_GFS_NETCDF.f | 2691 ++++++ sorc/ncep_post.fd/INITPOST_NETCDF.f | 79 +- sorc/ncep_post.fd/WRFPOST.f | 3 + sorc/ncep_post.fd/makefile_module | 2 +- ush/gfs_nceppost.sh | 21 +- ush/global_nceppost.sh | 1 + 16 files changed, 23197 insertions(+), 85 deletions(-) create mode 100644 parm/post_tag_gfs128 create mode 100644 parm/post_tag_gfs65 create mode 100755 parm/postcntrl_gfs_f00_two.xml create mode 100755 parm/postcntrl_gfs_two.xml create mode 100644 parm/postxconfig-NT-GFS-F00-TWO.txt create mode 100644 parm/postxconfig-NT-GFS-TWO.txt create mode 100644 sorc/ncep_post.fd/INITPOST_GFS_NETCDF.f diff --git a/jobs/JGLOBAL_NCEPPOST b/jobs/JGLOBAL_NCEPPOST index adfa8192f..a945fbea9 100755 --- a/jobs/JGLOBAL_NCEPPOST +++ b/jobs/JGLOBAL_NCEPPOST @@ -78,6 +78,7 @@ export HOMECRTM=${HOMECRTM:-${NWROOT}/lib/crtm/${crtm_ver}} export FIXCRTM=${CRTM_FIX:-${HOMECRTM}/fix} #export FIXCRTM=${FIXCRTM:-${NWROOThps}/hwrf.${hwrf_ver}/fix/hwrf-crtm-2.0.6} export PARMpost=${PARMpost:-$HOMEgfs/parm/post} +export INLINE_POST=${WRITE_DOPOST:-".false."} if [ $RUN_ENVIR = "nco" ]; then export COMIN=${COMIN:-$ROTDIR/$RUN.$PDY/$cyc} diff --git a/parm/makefile b/parm/makefile index 798cbed99..e0ddbd650 100644 --- a/parm/makefile +++ b/parm/makefile @@ -22,6 +22,8 @@ GEFSANLFLATFILENAME = postxconfig-NT-GEFS-ANL.txt GEFSF00FLATFILENAME = postxconfig-NT-GEFS-F00.txt FV3SARFLATFILENAME = postxconfig-NT-fv3sar.txt HAFSFLATFILENAME = postxconfig-NT-hafs.txt +GFSTWOFLATFILENAME = postxconfig-NT-GFS-TWO.txt +GFSTWOF00FLATFILENAME = postxconfig-NT-GFS-F00-TWO.txt # Source Post XML file @@ -45,6 +47,8 @@ GEFSCTRLF00FILENAME = postcntrl_gefs_f00.xml FV3SARAVAILXMLFILENAME = fv3sar_post_avblflds.xml FV3SARCTRLFILENAME = fv3sar.xml HAFSCTRLFILENAME = hafs.xml +GFSTWOCTRLFILENAME = postcntrl_gfs_two.xml +GFSTWOF00CTRLFILENAME = postcntrl_gfs_f00_two.xml # Post flat file generator @@ -65,6 +69,8 @@ PERLXMLGEFSANL = /usr/bin/perl $(PERLXML) $(GEFSANLCTRLFILENAME) $(GFSAVAILXMLF PERLXMLGEFSF00 = /usr/bin/perl $(PERLXML) $(GEFSCTRLF00FILENAME) $(GFSAVAILXMLFILENAME) $(GEFSF00FLATFILENAME) PERLXMLFV3SAR = /usr/bin/perl $(PERLXML) $(FV3SARCTRLFILENAME) $(FV3SARAVAILXMLFILENAME) $(FV3SARFLATFILENAME) PERLXMLHAFS = /usr/bin/perl $(PERLXML) $(HAFSCTRLFILENAME) $(FV3SARAVAILXMLFILENAME) $(HAFSFLATFILENAME) +PERLXMLGFSTWO = /usr/bin/perl $(PERLXML) $(GFSTWOCTRLFILENAME) $(GFSAVAILXMLFILENAME) $(GFSTWOFLATFILENAME) +PERLXMLGFSTWOF00 = /usr/bin/perl $(PERLXML) $(GFSTWOF00CTRLFILENAME) $(GFSAVAILXMLFILENAME) $(GFSTWOF00FLATFILENAME) # File to look for change @@ -80,12 +86,14 @@ NGACXMLS = $(NGACAVAILXMLFILENAME) $(NGACCTRLFILENAME) GEFSXMLS = $(GFSAVAILXMLFILENAME) $(GEFSCTRLFILENAME) GEFSANLXMLS = $(GFSAVAILXMLFILENAME) $(GEFSANLCTRLFILENAME) GEFSF00XMLS = $(GFSAVAILXMLFILENAME) $(GEFSCTRLF00FILENAME) -FV3SARXMLS = $(NMMAVAILXMLFILENAME) $(FV3SARCTRLFILENAME) -HAFSXMLS = $(NMMAVAILXMLFILENAME) $(HAFSCTRLFILENAME) +FV3SARXMLS = $(FV3SARAVAILXMLFILENAME) $(FV3SARCTRLFILENAME) +HAFSXMLS = $(FV3SARAVAILXMLFILENAME) $(HAFSCTRLFILENAME) +GFSTWOXMLS = $(GFSAVAILXMLFILENAME) $(GFSTWOCTRLFILENAME) +GFSTWOF00XMLS = $(GFSAVAILXMLFILENAME) $(GFSTWOF00CTRLFILENAME) # If action is triggered; run the following -all: $(GFSFLATFILENAME) $(GFSGOESFLATFILENAME) $(GFSANLFLATFILENAME) $(GFSF00FLATFILENAME) $(GFSFLUXFLATFILENAME) $(GFSFLUXF00FLATFILENAME) $(NMMFLATFILENAME) $(NGACFLATFILENAME) $(GEFSFLATFILENAME) $(GEFSANLFLATFILENAME) $(GEFSF00FLATFILENAME) $(FV3SARFLATFILENAME) $(HAFSFLATFILENAME) +all: $(GFSFLATFILENAME) $(GFSGOESFLATFILENAME) $(GFSANLFLATFILENAME) $(GFSF00FLATFILENAME) $(GFSFLUXFLATFILENAME) $(GFSFLUXF00FLATFILENAME) $(NMMFLATFILENAME) $(NGACFLATFILENAME) $(GEFSFLATFILENAME) $(GEFSANLFLATFILENAME) $(GEFSF00FLATFILENAME) $(FV3SARFLATFILENAME) $(HAFSFLATFILENAME) $(GFSTWOFLATFILENAME) $(GFSTWOF00FLATFILENAME) $(GFSFLATFILENAME): $(GFSXMLS) $(PERLXMLGFS) $(GFSGOESFLATFILENAME): $(GFSGOESXMLS) @@ -110,8 +118,12 @@ $(GEFSF00FLATFILENAME): $(GEFSF00XMLS) $(PERLXMLGEFSF00) $(FV3SARFLATFILENAME): $(FV3SARXMLS) $(PERLXMLFV3SAR) -$(HAFSFLATFILENAME): $(FV3SARXMLS) +$(HAFSFLATFILENAME): $(HAFSXMLS) $(PERLXMLHAFS) +$(GFSTWOFLATFILENAME): $(GFSTWOXMLS) + $(PERLXMLGFSTWO) +$(GFSTWOF00FLATFILENAME): $(GFSTWOF00XMLS) + $(PERLXMLGFSTWOF00) # Make clean @@ -119,4 +131,4 @@ $(HAFSFLATFILENAME): $(FV3SARXMLS) clean: @echo @echo '==== CLEAN ===================================================' - /bin/rm -f $(GFSFLATFILENAME) $(GFSGOESFLATFILENAME) $(GFSANLFLATFILENAME) $(GFSF00FLATFILENAME) $(NMMFLATFILENAME) $(NGACFLATFILENAME) $(GEFSFLATFILENAME) $(GEFSANLFLATFILENAME) $(GEFSF00FLATFILENAME) $(FV3SARFLATFILENAME) $(HAFSFLATFILENAME) + /bin/rm -f $(GFSFLATFILENAME) $(GFSGOESFLATFILENAME) $(GFSANLFLATFILENAME) $(GFSF00FLATFILENAME) $(NMMFLATFILENAME) $(NGACFLATFILENAME) $(GEFSFLATFILENAME) $(GEFSANLFLATFILENAME) $(GEFSF00FLATFILENAME) $(FV3SARFLATFILENAME) $(HAFSFLATFILENAME) $(GFSTWOFLATFILENAME) $(GFSTWOF00FLATFILENAME) diff --git a/parm/post_tag_gfs128 b/parm/post_tag_gfs128 new file mode 100644 index 000000000..9a9a3bdde --- /dev/null +++ b/parm/post_tag_gfs128 @@ -0,0 +1,4 @@ +&NAMPGB + KPO=57,PO=1000.,975.,950.,925.,900.,875.,850.,825.,800.,775.,750.,725.,700.,675.,650.,625.,600.,575.,550.,525.,500.,475.,450.,425.,400.,375.,350.,325.,300.,275.,250.,225.,200.,175.,150.,125.,100.,70.,50.,40.,30.,20.,15.,10.,7.,5.,3.,2.,1.,0.7,0.4,0.2,0.1,0.07,0.04,0.02,0.01, + / +EOF diff --git a/parm/post_tag_gfs65 b/parm/post_tag_gfs65 new file mode 100644 index 000000000..2653fea19 --- /dev/null +++ b/parm/post_tag_gfs65 @@ -0,0 +1,4 @@ +&NAMPGB + KPO=50,PO=1000.,975.,950.,925.,900.,875.,850.,825.,800.,775.,750.,725.,700.,675.,650.,625.,600.,575.,550.,525.,500.,475.,450.,425.,400.,375.,350.,325.,300.,275.,250.,225.,200.,175.,150.,125.,100.,70.,50.,40.,30.,20.,15.,10.,7.,5.,3.,2.,1.,0.4, + / +EOF diff --git a/parm/postcntrl_gfs_f00_two.xml b/parm/postcntrl_gfs_f00_two.xml new file mode 100755 index 000000000..9a6767699 --- /dev/null +++ b/parm/postcntrl_gfs_f00_two.xml @@ -0,0 +1,1115 @@ + + + + + GFSPRS + 0 + ncep_nco + v2003 + local_tab_yes1 + fcst + oper + fcst + fcst + hour + nws_ncep + anal_gfs + complex_packing_spatial_diff + 2nd_ord_sptdiff + fltng_pnt + lossless + + + HGT_ON_ISOBARIC_SFC + 40. 100. 200. 300. 500. 700. 1000. 1500. 2000. 3000. 4000. 5000. 7000. 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 + 40. 100. 200. 300. 500. 700. 1000. 1500. 2000. 3000. 4000. 5000. 7000. 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 + + + + SPFH_ON_ISOBARIC_SFC + 100. 200. 300. 500. 700. 1000. 2000. 3000. 5000. 7000. 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 + + + + RH_ON_ISOBARIC_SFC + 100. 200. 300. 500. 700. 1000. 2000. 3000. 5000. 7000. 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 + + + + UGRD_ON_ISOBARIC_SFC + 100. 200. 300. 500. 700. 1000. 2000. 3000. 5000. 7000. 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 + 100. 200. 300. 500. 700. 1000. 2000. 3000. 5000. 7000. 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 + + + + DZDT_ON_ISOBARIC_SFC + 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 + + + + VVEL_ON_ISOBARIC_SFC + 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 + + + + ABSV_ON_ISOBARIC_SFC + 40. 100. 200. 300. 500. 700. 1000. 1500. 2000. 3000. 4000. 5000. 7000. 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 + + + + O3MR_ON_ISOBARIC_SFC + NCEP + 40. 100. 200. 300. 500. 700. 1000. 1500. 2000. 3000. 4000. 5000. 7000. 10000. 12500. 15000. 20000. 25000. 30000. 35000. 40000. 50000. 70000. 85000. 100000. + 5.0 + + + + CLWMR_ON_ISOBARIC_SFC + 5000. 7000. 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 + + + + ICMR_ON_ISOBARIC_SFC + 5000. 7000. 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 + + + + RWMR_ON_ISOBARIC_SFC + 5000. 7000. 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 + + + + SNMR_ON_ISOBARIC_SFC + 5000. 7000. 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 + + + + GRLE_ON_ISOBARIC_SFC + 5000. 7000. 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 + + + + REFC_ON_ENTIRE_ATMOS + NCEP + 4.0 + + + + MSLET_ON_MEAN_SEA_LVL + 6.0 + + + + PRES_ON_MEAN_SEA_LVL + 6.0 + + + + TMP_ON_SPEC_HGT_LVL_ABOVE_GRND_2m + 4.0 + + + + SPFH_ON_SPEC_HGT_LVL_ABOVE_GRND_2m + 4.0 + + + + DPT_ON_SPEC_HGT_LVL_ABOVE_GRND_2m + 4.0 + + + + RH_ON_SPEC_HGT_LVL_ABOVE_GRND_2m + 3.0 + + + + UGRD_ON_SPEC_HGT_LVL_ABOVE_GRND_10m + 4.0 + + + + VGRD_ON_SPEC_HGT_LVL_ABOVE_GRND_10m + 4.0 + + + + PRES_ON_SURFACE + 6.0 + + + + HGT_ON_SURFACE + 6.0 + + + + TMP_ON_SURFACE + 4.0 + + + + TSOIL_ON_DEPTH_BEL_LAND_SFC + 2 2 2 2 + 0. 10. 40. 100. + 2 2 2 2 + 10. 40. 100. 200. + 4.0 + + + + SOILW_ON_DEPTH_BEL_LAND_SFC + 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 + NCEP + 2 2 2 2 + 0. 10. 40. 100. + 2 2 2 2 + 10. 40. 100. 200. + 3.0 + + + + CNWAT_ON_SURFACE + NCEP + 1.0 + + + + WEASD_ON_SURFACE + 3.0 + + + + PEVPR_ON_SURFACE + NCEP + 6.0 + + + + ICETK_ON_SURFACE + 3.0 + + + + SNOD_ON_SURFACE + 3.0 + yes + + + + WILT_ON_SURFACE + NCEP + 4.0 + yes + + + + FLDCP_ON_SURFACE + NCEP + 4.0 + yes + + + + GFS_LFTX_ON_SURFACE + NCEP + 3.0 + + + + GFS_4LFTX_ON_SURFACE + NCEP + 3.0 + + + + PLI_ON_SPEC_PRES_ABOVE_GRND + 3000. + 0. + 3.0 + + + + CAPE_ON_SURFACE + 4.0 + + + + BEST_CAPE_ON_SPEC_PRES_ABOVE_GRND + 4.0 + + + + UNSTABLE_CAPE_ON_SPEC_PRES_ABOVE_GRND + 4.0 + + + + CIN_ON_SURFACE + 0. + 4.0 + + + + BEST_CIN_ON_SPEC_PRES_ABOVE_GRND + 4.0 + + + + UNSTABLE_CIN_ON_SPEC_PRES_ABOVE_GRND + 4.0 + + + + PWAT_ON_ENTIRE_ATMOS_SINGLE_LYR + 3.0 + + + + HLCY_ON_SPEC_HGT_LVL_ABOVE_GRND + 3000. + 0. + 4.0 + + + + USTM_ON_SPEC_HGT_LVL_ABOVE_GRND + NCEP + 6000. + 0. + 4.0 + + + + VSTM_ON_SPEC_HGT_LVL_ABOVE_GRND + NCEP + 6000. + 0. + 4.0 + + + + INST_CRAIN_ON_SURFACE + NCEP + 1.0 + + + + CSNOW_ON_SURFACE + NCEP + 1.0 + + + + CICEP_ON_SURFACE + NCEP + 1.0 + + + + CFRZR_ON_SURFACE + NCEP + 1.0 + + + + VIS_ON_SURFACE + 6.0 + + + + BRTMP_ON_TOP_OF_ATMOS + 3.0 + + + + SFCR_ON_SURFACE + 4.0 + + + + FRICV_ON_SURFACE + NCEP + 4.0 + + + + LAND_ON_SURFACE + + + + ICEC_ON_SURFACE + 3.0 + + + + PRES_ON_TROPOPAUSE + 6.0 + + + + HGT_ON_TROPOPAUSE + 6.0 + + + + TMP_ON_TROPOPAUSE + 3.0 + + + + UGRD_ON_TROPOPAUSE + 4.0 + + + + VGRD_ON_TROPOPAUSE + 4.0 + + + + VWSH_ON_TROPOPAUSE + NCEP + 3.0 + + + + TMP_ON_SPEC_ALT_ABOVE_MEAN_SEA_LVL + 305. 457. 610. 914. 1829. 2743. 3658. 4572. + 3.0 + + + + UGRD_ON_SPEC_ALT_ABOVE_MEAN_SEA_LVL + 305. 457. 610. 914. 1829. 2743. 3658. 4572. + 4.0 + + + + VGRD_ON_SPEC_ALT_ABOVE_MEAN_SEA_LVL + 305. 457. 610. 914. 1829. 2743. 3658. 4572. + 4.0 + + + + TMP_ON_SPEC_HGT_LVL_ABOVE_GRND_FDHGT + 80. 100. + 3.0 + + + + UGRD_ON_SPEC_HGT_LVL_ABOVE_GRND_FDHGT + 20. 30. 40. 50. 80. 100. + 4.0 + + + + VGRD_ON_SPEC_HGT_LVL_ABOVE_GRND_FDHGT + 20. 30. 40. 50. 80. 100. + 4.0 + + + + PRES_ON_SPEC_HGT_LVL_ABOVE_GRND_FDHGT + 80. + 6.0 + + + + SPFH_ON_SPEC_HGT_LVL_ABOVE_GRND_FDHGT + 80. + 4.0 + + + + HGT_ON_0C_ISOTHERM + 6.0 + + + + RH_ON_0C_ISOTHERM + 2.0 + + + + HGT_ON_HGHST_TROP_FRZ_LVL + 6.0 + + + + RH_ON_HGHST_TROP_FRZ_LVL + 2.0 + + + + TMP_ON_SPEC_PRES_ABOVE_GRND + 3000. 6000. 9000. 12000. 15000. 18000. + 0. 3000. 6000. 9000. 12000. 15000. + 3.0 + + + + DPT_ON_SPEC_PRES_ABOVE_GRND + 3000. + 0. + 3.0 + + + + SPFH_ON_SPEC_PRES_ABOVE_GRND + 3000. 6000. 9000. 12000. 15000. 18000. + 0. 3000. 6000. 9000. 12000. 15000. + 5.0 + + + + RH_ON_SPEC_PRES_ABOVE_GRND + 3000. 6000. 9000. 12000. 15000. 18000. + 0. 3000. 6000. 9000. 12000. 15000. + 2.0 + + + + PWAT_ON_SPEC_PRES_ABOVE_GRND + 3000. + 0. + 3.0 + + + + UGRD_ON_SPEC_PRES_ABOVE_GRND + 3000. 6000. 9000. 12000. 15000. 18000. + 0. 3000. 6000. 9000. 12000. 15000. + 4.0 + + + + VGRD_ON_SPEC_PRES_ABOVE_GRND + 3000. 6000. 9000. 12000. 15000. 18000. + 0. 3000. 6000. 9000. 12000. 15000. + 4.0 + + + + RH_ON_SIGMA_LVL_0.33-1.0 + + + + RH_ON_SIGMA_LVL_0.44-1.0 + + + + RH_ON_SIGMA_LVL_0.72-0.94 + + + + RH_ON_SIGMA_LVL_0.44-0.72 + + + + TMP_ON_SIGMA_LVL_0.9950 + 4.0 + + + + POT_ON_SIGMA_LVL_0.9950 + 4.0 + + + + RH_ON_SIGMA_LVL_0.9950 + 3.0 + + + + UGRD_ON_SIGMA_LVL_0.9950 + 4.0 + + + + VGRD_ON_SIGMA_LVL_0.9950 + 4.0 + + + + VVEL_ON_SIGMA_LVL_0.9950 + 5.0 + + + + PRES_ON_MAX_WIND + 6.0 + + + + HGT_ON_MAX_WIND + 6.0 + + + + UGRD_ON_MAX_WIND + 4.0 + + + + VGRD_ON_MAX_WIND + 4.0 + + + + TMP_ON_MAX_WIND + 3.0 + + + + HPBL_ON_SURFACE + NCEP + 6.0 + + + + CWAT_ON_ENTIRE_ATMOS_SINGLE_LYR + 3.0 + + + + RH_ON_ENTIRE_ATMOS_SINGLE_LYR + 2.0 + + + + TOZNE_ON_ENTIRE_ATMOS_SINGLE_LYR + 4.0 + + + + GUST_ON_SURFACE + 3.0 + + + + PLPL_ON_SPEC_PRES_ABOVE_GRND + 25500. + 0. + 6.0 + + + + TCDC_ON_ISOBARIC_SFC + 5000. 7000. 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 + + + + UGRD_ON_ISENTROPIC_LVL + 320. + 4.0 + + + + VGRD_ON_ISENTROPIC_LVL + 320. + 4.0 + + + + TMP_ON_ISENTROPIC_LVL + 320. + 3.0 + + + + PVORT_ON_ISENTROPIC_LVL + 320. + 4.0 + + + + MNTSF_ON_ISENTROPIC_LVL + 320. + 4.0 + + + + UGRD_ON_POT_VORT_SFC + 9 9 9 9 9 9 9 9 + 500. -500. 1000. -1000. 1500. -1500. 2000. -2000. + 4.0 + + + + VGRD_ON_POT_VORT_SFC + 9 9 9 9 9 9 9 9 + 500. -500. 1000. -1000. 1500. -1500. 2000. -2000. + 4.0 + + + + TMP_ON_POT_VORT_SFC + 9 9 9 9 9 9 9 9 + 500. -500. 1000. -1000. 1500. -1500. 2000. -2000. + 4.0 + + + + HGT_ON_POT_VORT_SFC + 9 9 9 9 9 9 9 9 + 500. -500. 1000. -1000. 1500. -1500. 2000. -2000. + 6.0 + + + + PRES_ON_POT_VORT_SFC + 9 9 9 9 9 9 9 9 + 500. -500. 1000. -1000. 1500. -1500. 2000. -2000. + 6.0 + + + + VWSH_ON_POT_VORT_SFC + NCEP + 9 9 9 9 9 9 9 9 + 500. -500. 1000. -1000. 1500. -1500. 2000. -2000. + 3.0 + + + + MAX_TMAX_ON_SPEC_HGT_LVL_ABOVE_GRND_2m + 4.0 + + + + MIN_TMIN_ON_SPEC_HGT_LVL_ABOVE_GRND_2m + 4.0 + + + + ICAHT_ON_MAX_WIND + 6.0 + + + + ICAHT_ON_TROPOPAUSE + 6.0 + + + + SUNSD_ON_SURFACE + NCEP + 5.0 + + + + UGRD_ON_PLANETARY_BOUND_LYR + 3.0 + + + + VGRD_ON_PLANETARY_BOUND_LYR + 3.0 + + + + VRATE_ON_PLANETARY_BOUND_LYR + 3.0 + + + + HINDEX_ON_SURFACE + 1.0 + + + + CPOFP_ON_SURFACE + 4.0 + + + + APTMP_ON_SPEC_HGT_LVL_ABOVE_GRND_2m + 4.0 + + + + INST_PRATE_ON_SURFACE + 3.0 + + + + CPRAT_ON_SURFACE + 4.0 + + + + SNMR_ON_HYBRID_LVL + 1. + 3.0 + + + + RWMR_ON_HYBRID_LVL + 1. + 3.0 + + + + CLWMR_ON_HYBRID_LVL + 1. + 3.0 + + + + ICMR_ON_HYBRID_LVL + 1. + 3.0 + + + + GRLE_ON_HYBRID_LVL + 1. + 3.0 + + + + + + + GFSFLX + 0 + ncep_nco + v2003 + local_tab_yes1 + fcst + oper + fcst + fcst + hour + nws_ncep + gfs_avn + complex_packing_spatial_diff + 2nd_ord_sptdiff + fltng_pnt + lossless + + + TMP_ON_SPEC_HGT_LVL_ABOVE_GRND_2m + 4.0 + + + + SPFH_ON_SPEC_HGT_LVL_ABOVE_GRND_2m + 4.0 + + + + UGRD_ON_SPEC_HGT_LVL_ABOVE_GRND_10m + 4.0 + + + + VGRD_ON_SPEC_HGT_LVL_ABOVE_GRND_10m + 4.0 + + + + PRES_ON_SURFACE + 6.0 + + + + HGT_ON_SURFACE + 6.0 + + + + TMP_ON_SURFACE + 4.0 + + + + TSOIL_ON_DEPTH_BEL_LAND_SFC + 2 2 2 2 + 0. 10. 40. 100. + 2 2 2 2 + 10. 40. 100. 200. + 4.0 + + + + SOILW_ON_DEPTH_BEL_LAND_SFC + 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 + NCEP + 2 2 2 2 + 0. 10. 40. 100. + 2 2 2 2 + 10. 40. 100. 200. + 3.0 + + + + CNWAT_ON_SURFACE + NCEP + 1.0 + + + + WEASD_ON_SURFACE + 3.0 + + + + PEVPR_ON_SURFACE + NCEP + 6.0 + + + + + ICETK_ON_SURFACE + 3.0 + + + + SNOD_ON_SURFACE + 3.0 + yes + + + + WILT_ON_SURFACE + NCEP + 4.0 + yes + + + + FLDCP_ON_SURFACE + NCEP + 4.0 + yes + + + + GFS_LFTX_ON_SURFACE + NCEP + 3.0 + + + + PWAT_ON_ENTIRE_ATMOS_SINGLE_LYR + 3.0 + + + + INST_DSWRF_ON_SURFACE + NCEP + 3.0 + + + + INST_DLWRF_ON_SURFACE + NCEP + 3.0 + + + + INST_USWRF_ON_SURFACE + NCEP + 3.0 + + + + INST_ULWRF_ON_SURFACE + NCEP + 3.0 + + + + SFCR_ON_SURFACE + 4.0 + + + + VEG_ON_SURFACE + 3.0 + + + + VGTYP_ON_SURFACE + NCEP + 3.0 + + + + SOTYP_ON_SURFACE + 3.0 + + + + SLTYP_ON_SURFACE + NCEP + 3.0 + + + + FRICV_ON_SURFACE + NCEP + 4.0 + + + + SFEXC_ON_SURFACE + NCEP + 4.0 + + + + ACOND_ON_SURFACE + NCEP + 4.0 + + + + INST_SHTFL_ON_SURFACE + 4.0 + + + + INST_GFLUX_ON_SURFACE + NCEP + 4.0 + + + + INST_LHTFL_ON_SURFACE + 4.0 + + + + LAND_ON_SURFACE + + + + ICEC_ON_SURFACE + 3.0 + + + + HPBL_ON_SURFACE + NCEP + 6.0 + + + + GFS_TCDC_ON_CONVECTIVE_CLOUD_LYR + 2.0 + + + + SUNSD_ON_SURFACE + NCEP + 5.0 + + + + CPOFP_ON_SURFACE + 4.0 + + + + TMP_ON_HYBRID_LVL + 1. + 4.0 + + + + SPFH_ON_HYBRID_LVL + 1. + 7.0 + + + + UGRD_ON_HYBRID_LVL + 1. + 4.0 + + + + VGRD_ON_HYBRID_LVL + 1. + 4.0 + + + + HGT_ON_HYBRID_LVL + 1. + 4.0 + + + + SOILM_ON_DEPTH_BEL_LAND_SFC + 2 + 0. + 2 + 200. + 4.0 + + + + + diff --git a/parm/postcntrl_gfs_two.xml b/parm/postcntrl_gfs_two.xml new file mode 100755 index 000000000..ea10cf1e3 --- /dev/null +++ b/parm/postcntrl_gfs_two.xml @@ -0,0 +1,1708 @@ + + + + + GFSPRS + 0 + ncep_nco + v2003 + local_tab_yes1 + fcst + oper + fcst + fcst + hour + nws_ncep + gfs_avn + complex_packing_spatial_diff + 2nd_ord_sptdiff + fltng_pnt + lossless + + + HGT_ON_ISOBARIC_SFC + 1. 2. 4. 7. 10. 20. 40. 70. 100. 200. 300. 500. 700. 1000. 1500. 2000. 3000. 4000. 5000. 7000. 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 + 1. 2. 4. 7. 10. 20. 40. 70. 100. 200. 300. 500. 700. 1000. 1500. 2000. 3000. 4000. 5000. 7000. 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 + + + + SPFH_ON_ISOBARIC_SFC + 1. 2. 4. 7. 10. 20. 40. 70. 100. 200. 300. 500. 700. 1000. 1500. 2000. 3000. 4000. 5000. 7000. 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 + + + + RH_ON_ISOBARIC_SFC + 1. 2. 4. 7. 10. 20. 40. 70. 100. 200. 300. 500. 700. 1000. 1500. 2000. 3000. 4000. 5000. 7000. 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 + + + + UGRD_ON_ISOBARIC_SFC + 1. 2. 4. 7. 10. 20. 40. 70. 100. 200. 300. 500. 700. 1000. 1500. 2000. 3000. 4000. 5000. 7000. 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 + 1. 2. 4. 7. 10. 20. 40. 70. 100. 200. 300. 500. 700. 1000. 1500. 2000. 3000. 4000. 5000. 7000. 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 + + + + DZDT_ON_ISOBARIC_SFC + 1. 2. 4. 7. 10. 20. 40. 70. 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 + + + + VVEL_ON_ISOBARIC_SFC + 1. 2. 4. 7. 10. 20. 40. 70. 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 + + + + ABSV_ON_ISOBARIC_SFC + 1. 2. 4. 7. 10. 20. 40. 70. 100. 200. 300. 500. 700. 1000. 1500. 2000. 3000. 4000. 5000. 7000. 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 + + + + O3MR_ON_ISOBARIC_SFC + NCEP + 1. 2. 4. 7. 10. 20. 40. 70. 100. 200. 300. 500. 700. 1000. 1500. 2000. 3000. 4000. 5000. 7000. 10000. 12500. 15000. 20000. 25000. 30000. 35000. 40000. 50000. 70000. 85000. 100000. + 5.0 + + + + CLWMR_ON_ISOBARIC_SFC + 5000. 7000. 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 + + + + ICMR_ON_ISOBARIC_SFC + 5000. 7000. 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 + + + + RWMR_ON_ISOBARIC_SFC + 5000. 7000. 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 + + + + SNMR_ON_ISOBARIC_SFC + 5000. 7000. 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 + + + + GRLE_ON_ISOBARIC_SFC + 5000. 7000. 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 + + + + ICIP_ON_ISOBARIC_SFC + 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 + + + + ICSEV_ON_ISOBARIC_SFC + 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 + + + + REFC_ON_ENTIRE_ATMOS + NCEP + 4.0 + + + + MSLET_ON_MEAN_SEA_LVL + 6.0 + + + + PRES_ON_MEAN_SEA_LVL + 6.0 + + + + TMP_ON_SPEC_HGT_LVL_ABOVE_GRND_2m + 4.0 + + + + SPFH_ON_SPEC_HGT_LVL_ABOVE_GRND_2m + 4.0 + + + + DPT_ON_SPEC_HGT_LVL_ABOVE_GRND_2m + 4.0 + + + + RH_ON_SPEC_HGT_LVL_ABOVE_GRND_2m + 3.0 + + + + UGRD_ON_SPEC_HGT_LVL_ABOVE_GRND_10m + 4.0 + + + + VGRD_ON_SPEC_HGT_LVL_ABOVE_GRND_10m + 4.0 + + + + PRES_ON_SURFACE + 6.0 + + + + HGT_ON_SURFACE + 6.0 + + + + TMP_ON_SURFACE + 4.0 + + + + TSOIL_ON_DEPTH_BEL_LAND_SFC + 2 2 2 2 + 0. 10. 40. 100. + 2 2 2 2 + 10. 40. 100. 200. + 4.0 + + + + SOILW_ON_DEPTH_BEL_LAND_SFC + 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 + NCEP + 2 2 2 2 + 0. 10. 40. 100. + 2 2 2 2 + 10. 40. 100. 200. + 3.0 + + + + CNWAT_ON_SURFACE + NCEP + 1.0 + + + + WEASD_ON_SURFACE + 3.0 + + + + PEVPR_ON_SURFACE + NCEP + 6.0 + + + + ICETK_ON_SURFACE + 3.0 + + + + SNOD_ON_SURFACE + 3.0 + yes + + + + WILT_ON_SURFACE + NCEP + 4.0 + yes + + + + FLDCP_ON_SURFACE + NCEP + 4.0 + yes + + + + GFS_LFTX_ON_SURFACE + NCEP + 3.0 + + + + GFS_4LFTX_ON_SURFACE + NCEP + 3.0 + + + + PLI_ON_SPEC_PRES_ABOVE_GRND + 3000. + 0. + 3.0 + + + + CAPE_ON_SURFACE + 4.0 + + + + BEST_CAPE_ON_SPEC_PRES_ABOVE_GRND + 4.0 + + + + UNSTABLE_CAPE_ON_SPEC_PRES_ABOVE_GRND + 4.0 + + + + CIN_ON_SURFACE + 0. + 4.0 + + + + BEST_CIN_ON_SPEC_PRES_ABOVE_GRND + 4.0 + + + + UNSTABLE_CIN_ON_SPEC_PRES_ABOVE_GRND + 4.0 + + + + PWAT_ON_ENTIRE_ATMOS_SINGLE_LYR + 3.0 + + + + HLCY_ON_SPEC_HGT_LVL_ABOVE_GRND + 3000. + 0. + 4.0 + + + + USTM_ON_SPEC_HGT_LVL_ABOVE_GRND + NCEP + 6000. + 0. + 4.0 + + + + VSTM_ON_SPEC_HGT_LVL_ABOVE_GRND + NCEP + 6000. + 0. + 4.0 + + + + ACM_APCP_ON_SURFACE + -4.0 + + + + ACM_ACPCP_ON_SURFACE + -4.0 + + + + ACM_NCPCP_ON_SURFACE + -4.0 + + + + CACM_APCP_ON_SURFACE + -4.0 + + + + CACM_ACPCP_ON_SURFACE + -4.0 + + + + CACM_NCPCP_ON_SURFACE + -4.0 + + + + INST_CRAIN_ON_SURFACE + NCEP + 1.0 + + + + CSNOW_ON_SURFACE + NCEP + 1.0 + + + + CICEP_ON_SURFACE + NCEP + 1.0 + + + + CFRZR_ON_SURFACE + NCEP + 1.0 + + + + AVE_CRAIN_ON_SURFACE + NCEP + 1.0 + + + + AVE_CSNOW_ON_SURFACE + NCEP + 1.0 + + + + AVE_CICEP_ON_SURFACE + NCEP + 1.0 + + + + AVE_CFRZR_ON_SURFACE + NCEP + 1.0 + + + + AVE_PRATE_ON_SURFACE + 4.0 + + + + AVE_CPRAT_ON_SURFACE + NCEP + 4.0 + + + + AVE_TCDC_ON_LOW_CLOUD_LYR + 3.0 + + + + AVE_TCDC_ON_MID_CLOUD_LYR + 3.0 + + + + AVE_TCDC_ON_HIGH_CLOUD_LYR + 3.0 + + + + AVE_TCDC_ON_ENTIRE_ATMOS + 3.0 + + + + VIS_ON_SURFACE + 6.0 + + + + AVE_DSWRF_ON_SURFACE + NCEP + 3.0 + + + + AVE_CDUVB_ON_SURFACE + NCEP + 3.0 + + + + AVE_DUVB_ON_SURFACE + NCEP + 3.0 + + + + AVE_DLWRF_ON_SURFACE + NCEP + 3.0 + + + + AVE_USWRF_ON_SURFACE + NCEP + 3.0 + + + + AVE_ULWRF_ON_SURFACE + NCEP + 3.0 + + + + AVE_USWRF_ON_TOP_OF_ATMOS + NCEP + 3.0 + + + + AVE_ULWRF_ON_TOP_OF_ATMOS + NCEP + 3.0 + + + + BRTMP_ON_TOP_OF_ATMOS + 3.0 + + + + SFCR_ON_SURFACE + 4.0 + + + + FRICV_ON_SURFACE + NCEP + 4.0 + + + + AVE_SHTFL_ON_SURFACE + 4.0 + + + + AVE_GFLUX_ON_SURFACE + NCEP + 4.0 + + + + AVE_LHTFL_ON_SURFACE + 4.0 + + + + AVE_UFLX_ON_SURFACE + 4.0 + + + + AVE_VFLX_ON_SURFACE + 4.0 + + + + LAND_ON_SURFACE + + + + ICEC_ON_SURFACE + 3.0 + + + + AVE_ALBDO_ON_SURFACE + 4.0 + + + + PRES_ON_TROPOPAUSE + 6.0 + + + + HGT_ON_TROPOPAUSE + 6.0 + + + + TMP_ON_TROPOPAUSE + 3.0 + + + + UGRD_ON_TROPOPAUSE + 4.0 + + + + VGRD_ON_TROPOPAUSE + 4.0 + + + + VWSH_ON_TROPOPAUSE + NCEP + 3.0 + + + + TMP_ON_SPEC_ALT_ABOVE_MEAN_SEA_LVL + 305. 457. 610. 914. 1829. 2743. 3658. 4572. + 3.0 + + + + UGRD_ON_SPEC_ALT_ABOVE_MEAN_SEA_LVL + 305. 457. 610. 914. 1829. 2743. 3658. 4572. + 4.0 + + + + VGRD_ON_SPEC_ALT_ABOVE_MEAN_SEA_LVL + 305. 457. 610. 914. 1829. 2743. 3658. 4572. + 4.0 + + + + TMP_ON_SPEC_HGT_LVL_ABOVE_GRND_FDHGT + 80. 100. + 3.0 + + + + UGRD_ON_SPEC_HGT_LVL_ABOVE_GRND_FDHGT + 20. 30. 40. 50. 80. 100. + 4.0 + + + + VGRD_ON_SPEC_HGT_LVL_ABOVE_GRND_FDHGT + 20. 30. 40. 50. 80. 100. + 4.0 + + + + PRES_ON_SPEC_HGT_LVL_ABOVE_GRND_FDHGT + 80. + 6.0 + + + + SPFH_ON_SPEC_HGT_LVL_ABOVE_GRND_FDHGT + 80. + 4.0 + + + + HGT_ON_0C_ISOTHERM + 6.0 + + + + RH_ON_0C_ISOTHERM + 2.0 + + + + HGT_ON_HGHST_TROP_FRZ_LVL + 6.0 + + + + RH_ON_HGHST_TROP_FRZ_LVL + 2.0 + + + + TMP_ON_SPEC_PRES_ABOVE_GRND + 3000. 6000. 9000. 12000. 15000. 18000. + 0. 3000. 6000. 9000. 12000. 15000. + 3.0 + + + + DPT_ON_SPEC_PRES_ABOVE_GRND + 3000. + 0. + 3.0 + + + + SPFH_ON_SPEC_PRES_ABOVE_GRND + 3000. 6000. 9000. 12000. 15000. 18000. + 0. 3000. 6000. 9000. 12000. 15000. + 5.0 + + + + RH_ON_SPEC_PRES_ABOVE_GRND + 3000. 6000. 9000. 12000. 15000. 18000. + 0. 3000. 6000. 9000. 12000. 15000. + 2.0 + + + + PWAT_ON_SPEC_PRES_ABOVE_GRND + 3000. + 0. + 3.0 + + + + UGRD_ON_SPEC_PRES_ABOVE_GRND + 3000. 6000. 9000. 12000. 15000. 18000. + 0. 3000. 6000. 9000. 12000. 15000. + 4.0 + + + + VGRD_ON_SPEC_PRES_ABOVE_GRND + 3000. 6000. 9000. 12000. 15000. 18000. + 0. 3000. 6000. 9000. 12000. 15000. + 4.0 + + + + RH_ON_SIGMA_LVL_0.33-1.0 + + + + RH_ON_SIGMA_LVL_0.44-1.0 + + + + RH_ON_SIGMA_LVL_0.72-0.94 + + + + RH_ON_SIGMA_LVL_0.44-0.72 + + + + TMP_ON_SIGMA_LVL_0.9950 + 4.0 + + + + POT_ON_SIGMA_LVL_0.9950 + 4.0 + + + + RH_ON_SIGMA_LVL_0.9950 + 3.0 + + + + UGRD_ON_SIGMA_LVL_0.9950 + 4.0 + + + + VGRD_ON_SIGMA_LVL_0.9950 + 4.0 + + + + VVEL_ON_SIGMA_LVL_0.9950 + 5.0 + + + + PRES_ON_MAX_WIND + 6.0 + + + + HGT_ON_MAX_WIND + 6.0 + + + + UGRD_ON_MAX_WIND + 4.0 + + + + VGRD_ON_MAX_WIND + 4.0 + + + + TMP_ON_MAX_WIND + 3.0 + + + + HPBL_ON_SURFACE + NCEP + 6.0 + + + + PRES_ON_CONVECTIVE_CLOUD_BOT_LVL + 6.0 + + + + PRES_ON_CONVECTIVE_CLOUD_TOP_LVL + 6.0 + + + + AVE_PRES_ON_LOW_CLOUD_BOT_LVL + 6.0 + + + + AVE_PRES_ON_MID_CLOUD_BOT_LVL + 6.0 + + + + AVE_PRES_ON_HIGH_CLOUD_BOT_LVL + 6.0 + + + + AVE_PRES_ON_LOW_CLOUD_TOP_LVL + 6.0 + + + + AVE_PRES_ON_MID_CLOUD_TOP_LVL + 6.0 + + + + AVE_PRES_ON_HIGH_CLOUD_TOP_LVL + 6.0 + + + + AVE_TMP_ON_LOW_CLOUD_TOP_LVL + 3.0 + + + + AVE_TMP_ON_MID_CLOUD_TOP_LVL + 3.0 + + + + AVE_TMP_ON_HIGH_CLOUD_TOP_LVL + 3.0 + + + + GFS_TCDC_ON_CONVECTIVE_CLOUD_LYR + 2.0 + + + + CWAT_ON_ENTIRE_ATMOS_SINGLE_LYR + 3.0 + + + + RH_ON_ENTIRE_ATMOS_SINGLE_LYR + 2.0 + + + + TOZNE_ON_ENTIRE_ATMOS_SINGLE_LYR + 4.0 + + + + GUST_ON_SURFACE + 3.0 + + + + PLPL_ON_SPEC_PRES_ABOVE_GRND + 25500. + 0. + 6.0 + + + + TCDC_ON_ISOBARIC_SFC + 5000. 7000. 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 + + + + UGRD_ON_ISENTROPIC_LVL + 320. + 4.0 + + + + VGRD_ON_ISENTROPIC_LVL + 320. + 4.0 + + + + TMP_ON_ISENTROPIC_LVL + 320. + 3.0 + + + + PVORT_ON_ISENTROPIC_LVL + 320. + 4.0 + + + + MNTSF_ON_ISENTROPIC_LVL + 320. + 4.0 + + + + UGRD_ON_POT_VORT_SFC + 9 9 9 9 9 9 9 9 + 500. -500. 1000. -1000. 1500. -1500. 2000. -2000. + 4.0 + + + + VGRD_ON_POT_VORT_SFC + 9 9 9 9 9 9 9 9 + 500. -500. 1000. -1000. 1500. -1500. 2000. -2000. + 4.0 + + + + TMP_ON_POT_VORT_SFC + 9 9 9 9 9 9 9 9 + 500. -500. 1000. -1000. 1500. -1500. 2000. -2000. + 4.0 + + + + HGT_ON_POT_VORT_SFC + 9 9 9 9 9 9 9 9 + 500. -500. 1000. -1000. 1500. -1500. 2000. -2000. + 6.0 + + + + PRES_ON_POT_VORT_SFC + 9 9 9 9 9 9 9 9 + 500. -500. 1000. -1000. 1500. -1500. 2000. -2000. + 6.0 + + + + VWSH_ON_POT_VORT_SFC + NCEP + 9 9 9 9 9 9 9 9 + 500. -500. 1000. -1000. 1500. -1500. 2000. -2000. + 3.0 + + + + AVE_TCDC_ON_BOUND_LYR_CLOUD_LYR + 3.0 + + + + AVE_CWORK_ON_ENTIRE_ATMOS_SINGLE_LYR + NCEP + 4.0 + + + + AVE_U-GWD_ON_SURFACE + NCEP + 5.0 + + + + AVE_V-GWD_ON_SURFACE + NCEP + 5.0 + + + + ACM_WATR_ON_SURFACE + 6.0 + + + + MAX_TMAX_ON_SPEC_HGT_LVL_ABOVE_GRND_2m + 4.0 + + + + MIN_TMIN_ON_SPEC_HGT_LVL_ABOVE_GRND_2m + 4.0 + + + + ICAHT_ON_MAX_WIND + 6.0 + + + + ICAHT_ON_TROPOPAUSE + 6.0 + + + + SUNSD_ON_SURFACE + NCEP + 5.0 + + + + UGRD_ON_PLANETARY_BOUND_LYR + 3.0 + + + + VGRD_ON_PLANETARY_BOUND_LYR + 3.0 + + + + VRATE_ON_PLANETARY_BOUND_LYR + 3.0 + + + + HINDEX_ON_SURFACE + 1.0 + + + + CPOFP_ON_SURFACE + 4.0 + + + + APTMP_ON_SPEC_HGT_LVL_ABOVE_GRND_2m + 4.0 + + + + INST_PRATE_ON_SURFACE + 3.0 + + + + CPRAT_ON_SURFACE + 4.0 + + + + SNMR_ON_HYBRID_LVL + 1. + 3.0 + + + + RWMR_ON_HYBRID_LVL + 1. + 3.0 + + + + CLWMR_ON_HYBRID_LVL + 1. + 3.0 + + + + ICMR_ON_HYBRID_LVL + 1. + 3.0 + + + + GRLE_ON_HYBRID_LVL + 1. + 3.0 + + + + + + + GFSFLX + 0 + ncep_nco + v2003 + local_tab_yes1 + fcst + oper + fcst + fcst + hour + nws_ncep + gfs_avn + complex_packing_spatial_diff + 2nd_ord_sptdiff + fltng_pnt + lossless + + + TMP_ON_SPEC_HGT_LVL_ABOVE_GRND_2m + 4.0 + + + + SPFH_ON_SPEC_HGT_LVL_ABOVE_GRND_2m + 4.0 + + + + UGRD_ON_SPEC_HGT_LVL_ABOVE_GRND_10m + 4.0 + + + + VGRD_ON_SPEC_HGT_LVL_ABOVE_GRND_10m + 4.0 + + + + PRES_ON_SURFACE + 6.0 + + + + HGT_ON_SURFACE + 6.0 + + + + TMP_ON_SURFACE + 4.0 + + + + TSOIL_ON_DEPTH_BEL_LAND_SFC + 2 2 2 2 + 0. 10. 40. 100. + 2 2 2 2 + 10. 40. 100. 200. + 4.0 + + + + SOILW_ON_DEPTH_BEL_LAND_SFC + 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 + NCEP + 2 2 2 2 + 0. 10. 40. 100. + 2 2 2 2 + 10. 40. 100. 200. + 3.0 + + + + CNWAT_ON_SURFACE + NCEP + 1.0 + + + + WEASD_ON_SURFACE + 3.0 + + + + AVE_PEVPR_ON_SURFACE + NCEP + 6.0 + + + + PEVPR_ON_SURFACE + NCEP + 6.0 + + + + + ICETK_ON_SURFACE + 3.0 + + + + SNOD_ON_SURFACE + 3.0 + yes + + + + WILT_ON_SURFACE + NCEP + 4.0 + yes + + + + FLDCP_ON_SURFACE + NCEP + 4.0 + yes + + + + GFS_LFTX_ON_SURFACE + NCEP + 3.0 + + + + PWAT_ON_ENTIRE_ATMOS_SINGLE_LYR + 3.0 + + + + AVE_PRATE_ON_SURFACE + 4.0 + + + + AVE_CPRAT_ON_SURFACE + NCEP + 4.0 + + + + AVE_TCDC_ON_LOW_CLOUD_LYR + 3.0 + + + + AVE_TCDC_ON_MID_CLOUD_LYR + 3.0 + + + + AVE_TCDC_ON_HIGH_CLOUD_LYR + 3.0 + + + + AVE_TCDC_ON_ENTIRE_ATMOS + 3.0 + + + + AVE_DSWRF_ON_SURFACE + NCEP + 3.0 + + + + INST_DSWRF_ON_SURFACE + NCEP + 3.0 + + + + AVE_DSWRF_ON_TOP_OF_ATMOS + NCEP + 3.0 + + + + AVE_CDUVB_ON_SURFACE + NCEP + 3.0 + + + + AVE_DUVB_ON_SURFACE + NCEP + 3.0 + + + + AVE_DLWRF_ON_SURFACE + NCEP + 3.0 + + + + INST_DLWRF_ON_SURFACE + NCEP + 3.0 + + + + AVE_USWRF_ON_SURFACE + NCEP + 3.0 + + + + INST_USWRF_ON_SURFACE + NCEP + 3.0 + + + + AVE_ULWRF_ON_SURFACE + NCEP + 3.0 + + + + INST_ULWRF_ON_SURFACE + NCEP + 3.0 + + + + AVE_USWRF_ON_TOP_OF_ATMOS + NCEP + 3.0 + + + + AVE_ULWRF_ON_TOP_OF_ATMOS + NCEP + 3.0 + + + + AVE_VBDSF_ON_SURFACE + NCEP + 3.0 + + + + AVE_VDDSF_ON_SURFACE + NCEP + 3.0 + + + + AVE_NBDSF_ON_SURFACE + NCEP + 3.0 + + + + AVE_NDDSF_ON_SURFACE + NCEP + 3.0 + + + + AVE_CSULF_ON_TOP_OF_ATMOS + NCEP + 3.0 + + + + AVE_CSUSF_ON_TOP_OF_ATMOS + NCEP + 3.0 + + + + AVE_CSDLF_ON_SURFACE + NCEP + 3.0 + + + + AVE_CSUSF_ON_SURFACE + NCEP + 3.0 + + + + AVE_CSDSF_ON_SURFACE + NCEP + 3.0 + + + + AVE_CSULF_ON_SURFACE + NCEP + 3.0 + + + + SFCR_ON_SURFACE + 4.0 + + + + VEG_ON_SURFACE + 3.0 + + + + VGTYP_ON_SURFACE + NCEP + 3.0 + + + + SOTYP_ON_SURFACE + 3.0 + + + + SLTYP_ON_SURFACE + NCEP + 3.0 + + + + FRICV_ON_SURFACE + NCEP + 4.0 + + + + SFEXC_ON_SURFACE + NCEP + 4.0 + + + + ACOND_ON_SURFACE + NCEP + 4.0 + + + + AVE_SHTFL_ON_SURFACE + 4.0 + + + + INST_SHTFL_ON_SURFACE + 4.0 + + + + AVE_GFLUX_ON_SURFACE + NCEP + 4.0 + + + + INST_GFLUX_ON_SURFACE + NCEP + 4.0 + + + + ACM_SSRUN_ON_SURFACE + NCEP + 4.0 + + + + AVE_LHTFL_ON_SURFACE + 4.0 + + + + INST_LHTFL_ON_SURFACE + 4.0 + + + + AVE_UFLX_ON_SURFACE + 4.0 + + + + AVE_VFLX_ON_SURFACE + 4.0 + + + + LAND_ON_SURFACE + + + + ICEC_ON_SURFACE + 3.0 + + + + AVE_ALBDO_ON_SURFACE + 4.0 + + + + HPBL_ON_SURFACE + NCEP + 6.0 + + + + PRES_ON_CONVECTIVE_CLOUD_BOT_LVL + 6.0 + + + + PRES_ON_CONVECTIVE_CLOUD_TOP_LVL + 6.0 + + + + AVE_PRES_ON_LOW_CLOUD_BOT_LVL + 6.0 + + + + AVE_PRES_ON_MID_CLOUD_BOT_LVL + 6.0 + + + + AVE_PRES_ON_HIGH_CLOUD_BOT_LVL + 6.0 + + + + AVE_PRES_ON_LOW_CLOUD_TOP_LVL + 6.0 + + + + AVE_PRES_ON_MID_CLOUD_TOP_LVL + 6.0 + + + + AVE_PRES_ON_HIGH_CLOUD_TOP_LVL + 6.0 + + + + AVE_TMP_ON_LOW_CLOUD_TOP_LVL + 3.0 + + + + AVE_TMP_ON_MID_CLOUD_TOP_LVL + 3.0 + + + + AVE_TMP_ON_HIGH_CLOUD_TOP_LVL + 3.0 + + + + GFS_TCDC_ON_CONVECTIVE_CLOUD_LYR + 2.0 + + + + AVE_TCDC_ON_BOUND_LYR_CLOUD_LYR + 3.0 + + + + AVE_CWORK_ON_ENTIRE_ATMOS_SINGLE_LYR + NCEP + 4.0 + + + + AVE_U-GWD_ON_SURFACE + NCEP + 5.0 + + + + AVE_V-GWD_ON_SURFACE + NCEP + 5.0 + + + + ACM_WATR_ON_SURFACE + 6.0 + + + + MAX_TMAX_ON_SPEC_HGT_LVL_ABOVE_GRND_2m + 4.0 + + + + MIN_TMIN_ON_SPEC_HGT_LVL_ABOVE_GRND_2m + 4.0 + + + + MAX_QMAX_ON_SPEC_HGT_LVL_ABOVE_GRND_2m + NCEP + 4.0 + + + + MIN_QMIN_ON_SPEC_HGT_LVL_ABOVE_GRND_2m + NCEP + 4.0 + + + + SUNSD_ON_SURFACE + NCEP + 5.0 + + + + CPOFP_ON_SURFACE + 4.0 + + + + TMP_ON_HYBRID_LVL + 1. + 4.0 + + + + SPFH_ON_HYBRID_LVL + 1. + 7.0 + + + + UGRD_ON_HYBRID_LVL + 1. + 4.0 + + + + VGRD_ON_HYBRID_LVL + 1. + 4.0 + + + + HGT_ON_HYBRID_LVL + 1. + 4.0 + + + + AVE_EVBS_ON_SURFACE + NCEP + 3.0 + + + + AVE_EVCW_ON_SURFACE + NCEP + 3.0 + + + + AVE_TRANS_ON_SURFACE + NCEP + 3.0 + + + + AVE_SBSNO_ON_SURFACE + NCEP + 3.0 + + + + AVE_SNOWC_ON_SURFACE + 3.0 + + + + SOILM_ON_DEPTH_BEL_LAND_SFC + 2 + 0. + 2 + 200. + 4.0 + + + + AVE_SNOHF_ON_SURFACE + 4.0 + + + + + diff --git a/parm/postxconfig-NT-GFS-F00-TWO.txt b/parm/postxconfig-NT-GFS-F00-TWO.txt new file mode 100644 index 000000000..8f1738e01 --- /dev/null +++ b/parm/postxconfig-NT-GFS-F00-TWO.txt @@ -0,0 +1,6769 @@ +2 +46 +136 +GFSPRS +0 +ncep_nco +v2003 +local_tab_yes1 +fcst +oper +fcst +fcst +hour +nws_ncep +anal_gfs +complex_packing_spatial_diff +2nd_ord_sptdiff +fltng_pnt +lossless +12 +HGT_ON_ISOBARIC_SFC +? +1 +tmpl4_0 +HGT +? +? +isobaric_sfc +0 +? +50 +40. 100. 200. 300. 500. 700. 1000. 1500. 2000. 3000. 4000. 5000. 7000. 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 +? +50 +40. 100. 200. 300. 500. 700. 1000. 1500. 2000. 3000. 4000. 5000. 7000. 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 +? +? +? +16 +SPFH_ON_ISOBARIC_SFC +? +1 +tmpl4_0 +SPFH +? +? +isobaric_sfc +0 +? +47 +100. 200. 300. 500. 700. 1000. 2000. 3000. 5000. 7000. 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 +? +? +? +17 +RH_ON_ISOBARIC_SFC +? +1 +tmpl4_0 +RH +? +? +isobaric_sfc +0 +? +47 +100. 200. 300. 500. 700. 1000. 2000. 3000. 5000. 7000. 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 +? +? +? +18 +UGRD_ON_ISOBARIC_SFC +? +1 +tmpl4_0 +UGRD +? +? +isobaric_sfc +0 +? +47 +100. 200. 300. 500. 700. 1000. 2000. 3000. 5000. 7000. 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 +? +47 +100. 200. 300. 500. 700. 1000. 2000. 3000. 5000. 7000. 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 +? +? +? +284 +DZDT_ON_ISOBARIC_SFC +? +1 +tmpl4_0 +DZDT +? +? +isobaric_sfc +0 +? +37 +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 +? +? +? +20 +VVEL_ON_ISOBARIC_SFC +? +1 +tmpl4_0 +VVEL +? +? +isobaric_sfc +0 +? +37 +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 +? +? +? +21 +ABSV_ON_ISOBARIC_SFC +? +1 +tmpl4_0 +ABSV +? +? +isobaric_sfc +0 +? +50 +40. 100. 200. 300. 500. 700. 1000. 1500. 2000. 3000. 4000. 5000. 7000. 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 +? +? +? +268 +O3MR_ON_ISOBARIC_SFC +? +1 +tmpl4_0 +O3MR +NCEP +? +isobaric_sfc +0 +? +25 +40. 100. 200. 300. 500. 700. 1000. 1500. 2000. 3000. 4000. 5000. 7000. 10000. 12500. 15000. 20000. 25000. 30000. 35000. 40000. 50000. 70000. 85000. 100000. +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +5.0 +0 +0 +0 +? +? +? +153 +CLWMR_ON_ISOBARIC_SFC +? +1 +tmpl4_0 +CLWMR +? +? +isobaric_sfc +0 +? +39 +5000. 7000. 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 +? +? +? +166 +ICMR_ON_ISOBARIC_SFC +? +1 +tmpl4_0 +ICMR +? +? +isobaric_sfc +0 +? +39 +5000. 7000. 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 +? +? +? +183 +RWMR_ON_ISOBARIC_SFC +? +1 +tmpl4_0 +RWMR +? +? +isobaric_sfc +0 +? +39 +5000. 7000. 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 +? +? +? +184 +SNMR_ON_ISOBARIC_SFC +? +1 +tmpl4_0 +SNMR +? +? +isobaric_sfc +0 +? +39 +5000. 7000. 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 +? +? +? +416 +GRLE_ON_ISOBARIC_SFC +Graupel mixing ration on isobaric surface +1 +tmpl4_0 +GRLE +? +? +isobaric_sfc +0 +? +39 +5000. 7000. 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 +? +? +? +252 +REFC_ON_ENTIRE_ATMOS +? +1 +tmpl4_0 +REFC +NCEP +? +entire_atmos +0 +? +0 +? +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +4.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 +PRES +? +? +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 +? +? +? +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 +? +? +? +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 +? +? +? +118 +CNWAT_ON_SURFACE +? +1 +tmpl4_0 +CNWAT +NCEP +? +surface +0 +? +0 +? +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +1.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 +3.0 +0 +0 +0 +? +? +? +242 +PEVPR_ON_SURFACE +? +1 +tmpl4_0 +PEVPR +NCEP +? +surface +0 +? +0 +? +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +6.0 +0 +0 +0 +? +? +? +349 +ICETK_ON_SURFACE +? +1 +tmpl4_0 +ICETK +? +? +surface +0 +? +0 +? +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +3.0 +0 +0 +0 +? +? +? +224 +SNOD_ON_SURFACE +? +1 +tmpl4_0 +SNOD +? +? +surface +0 +? +0 +? +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +3.0 +0 +0 +0 +? +? +yes +236 +WILT_ON_SURFACE +? +1 +tmpl4_0 +WILT +NCEP +? +surface +0 +? +0 +? +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +4.0 +0 +0 +0 +? +? +yes +397 +FLDCP_ON_SURFACE +? +1 +tmpl4_0 +FLDCP +NCEP +? +surface +0 +? +0 +? +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +4.0 +0 +0 +0 +? +? +yes +572 +GFS_LFTX_ON_SURFACE +? +1 +tmpl4_0 +LFTX +NCEP +? +surface +0 +? +0 +? +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +3.0 +0 +0 +0 +? +? +? +573 +GFS_4LFTX_ON_SURFACE +? +1 +tmpl4_0 +4LFTX +NCEP +? +surface +0 +? +0 +? +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +3.0 +0 +0 +0 +? +? +? +75 +PLI_ON_SPEC_PRES_ABOVE_GRND +? +1 +tmpl4_0 +PLI +? +? +spec_pres_above_grnd +0 +? +1 +3000. +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 +? +? +? +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 +0. +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 +0. +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 +? +1 +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 +0. +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 +0. +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 +? +1 +3000. +spec_hgt_lvl_above_grnd +0 +? +1 +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 +? +1 +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 +? +1 +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 +? +? +? +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 +6.0 +0 +0 +0 +? +? +? +275 +BRTMP_ON_TOP_OF_ATMOS +? +1 +tmpl4_0 +BRTMP +? +? +top_of_atmos +0 +? +0 +? +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +3.0 +0 +0 +0 +? +? +? +44 +SFCR_ON_SURFACE +? +1 +tmpl4_0 +SFCR +? +? +surface +0 +? +0 +? +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +4.0 +0 +0 +0 +? +? +? +45 +FRICV_ON_SURFACE +? +1 +tmpl4_0 +FRICV +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 +? +? +? +51 +ICEC_ON_SURFACE +? +1 +tmpl4_0 +ICEC +? +? +surface +0 +? +0 +? +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +3.0 +0 +0 +0 +? +? +? +54 +PRES_ON_TROPOPAUSE +? +1 +tmpl4_0 +PRES +? +? +tropopause +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 +? +? +? +55 +TMP_ON_TROPOPAUSE +? +1 +tmpl4_0 +TMP +? +? +tropopause +0 +? +0 +? +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +3.0 +0 +0 +0 +? +? +? +56 +UGRD_ON_TROPOPAUSE +? +1 +tmpl4_0 +UGRD +? +? +tropopause +0 +? +0 +? +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +4.0 +0 +0 +0 +? +? +? +57 +VGRD_ON_TROPOPAUSE +? +1 +tmpl4_0 +VGRD +? +? +tropopause +0 +? +0 +? +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +4.0 +0 +0 +0 +? +? +? +58 +VWSH_ON_TROPOPAUSE +? +1 +tmpl4_0 +VWSH +NCEP +? +tropopause +0 +? +0 +? +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +3.0 +0 +0 +0 +? +? +? +59 +TMP_ON_SPEC_ALT_ABOVE_MEAN_SEA_LVL +? +1 +tmpl4_0 +TMP +? +? +spec_alt_above_mean_sea_lvl +0 +? +8 +305. 457. 610. 914. 1829. 2743. 3658. 4572. +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +3.0 +0 +0 +0 +? +? +? +60 +UGRD_ON_SPEC_ALT_ABOVE_MEAN_SEA_LVL +? +1 +tmpl4_0 +UGRD +? +? +spec_alt_above_mean_sea_lvl +0 +? +8 +305. 457. 610. 914. 1829. 2743. 3658. 4572. +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +4.0 +0 +0 +0 +? +? +? +61 +VGRD_ON_SPEC_ALT_ABOVE_MEAN_SEA_LVL +? +1 +tmpl4_0 +VGRD +? +? +spec_alt_above_mean_sea_lvl +0 +? +8 +305. 457. 610. 914. 1829. 2743. 3658. 4572. +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +4.0 +0 +0 +0 +? +? +? +586 +TMP_ON_SPEC_HGT_LVL_ABOVE_GRND_FDHGT +? +1 +tmpl4_0 +TMP +? +? +spec_hgt_lvl_above_grnd +0 +? +2 +80. 100. +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +3.0 +0 +0 +0 +? +? +? +576 +UGRD_ON_SPEC_HGT_LVL_ABOVE_GRND_FDHGT +? +1 +tmpl4_0 +UGRD +? +? +spec_hgt_lvl_above_grnd +0 +? +6 +20. 30. 40. 50. 80. 100. +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +4.0 +0 +0 +0 +? +? +? +577 +VGRD_ON_SPEC_HGT_LVL_ABOVE_GRND_FDHGT +? +1 +tmpl4_0 +VGRD +? +? +spec_hgt_lvl_above_grnd +0 +? +6 +20. 30. 40. 50. 80. 100. +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +4.0 +0 +0 +0 +? +? +? +579 +PRES_ON_SPEC_HGT_LVL_ABOVE_GRND_FDHGT +? +1 +tmpl4_0 +PRES +? +? +spec_hgt_lvl_above_grnd +0 +? +1 +80. +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +6.0 +0 +0 +0 +? +? +? +578 +SPFH_ON_SPEC_HGT_LVL_ABOVE_GRND_FDHGT +? +1 +tmpl4_0 +SPFH +? +? +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 +? +? +? +62 +HGT_ON_0C_ISOTHERM +? +1 +tmpl4_0 +HGT +? +? +0C_isotherm +0 +? +0 +? +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +6.0 +0 +0 +0 +? +? +? +63 +RH_ON_0C_ISOTHERM +? +1 +tmpl4_0 +RH +? +? +0C_isotherm +0 +? +0 +? +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +2.0 +0 +0 +0 +? +? +? +165 +HGT_ON_HGHST_TROP_FRZ_LVL +? +1 +tmpl4_0 +HGT +? +? +hghst_trop_frz_lvl +0 +? +0 +? +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +6.0 +0 +0 +0 +? +? +? +350 +RH_ON_HGHST_TROP_FRZ_LVL +? +1 +tmpl4_0 +RH +? +? +hghst_trop_frz_lvl +0 +? +0 +? +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +2.0 +0 +0 +0 +? +? +? +68 +TMP_ON_SPEC_PRES_ABOVE_GRND +? +1 +tmpl4_0 +TMP +? +? +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 +3.0 +0 +0 +0 +? +? +? +70 +DPT_ON_SPEC_PRES_ABOVE_GRND +? +1 +tmpl4_0 +DPT +? +? +spec_pres_above_grnd +0 +? +1 +3000. +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 +? +? +? +71 +SPFH_ON_SPEC_PRES_ABOVE_GRND +? +1 +tmpl4_0 +SPFH +? +? +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 +5.0 +0 +0 +0 +? +? +? +72 +RH_ON_SPEC_PRES_ABOVE_GRND +? +1 +tmpl4_0 +RH +? +? +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 +2.0 +0 +0 +0 +? +? +? +89 +PWAT_ON_SPEC_PRES_ABOVE_GRND +? +1 +tmpl4_0 +PWAT +? +? +spec_pres_above_grnd +0 +? +1 +3000. +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 +? +? +? +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 +? +? +? +66 +RH_ON_SIGMA_LVL_0.33-1.0 +? +1 +tmpl4_0 +RH +? +? +sigma_lvl +1 +2 +1 +33. +sigma_lvl +1 +2 +1 +100. +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +2.0 +0 +0 +0 +? +? +? +318 +RH_ON_SIGMA_LVL_0.44-1.0 +? +1 +tmpl4_0 +RH +? +? +sigma_lvl +1 +2 +1 +44. +sigma_lvl +1 +2 +1 +100. +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +2.0 +0 +0 +0 +? +? +? +319 +RH_ON_SIGMA_LVL_0.72-0.94 +? +1 +tmpl4_0 +RH +? +? +sigma_lvl +1 +2 +1 +72. +sigma_lvl +1 +2 +1 +94. +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +2.0 +0 +0 +0 +? +? +? +320 +RH_ON_SIGMA_LVL_0.44-0.72 +? +1 +tmpl4_0 +RH +? +? +sigma_lvl +1 +2 +1 +44. +sigma_lvl +1 +2 +1 +72. +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +2.0 +0 +0 +0 +? +? +? +321 +TMP_ON_SIGMA_LVL_0.9950 +? +1 +tmpl4_0 +TMP +? +? +sigma_lvl +1 +4 +1 +9950. +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +4.0 +0 +0 +0 +? +? +? +322 +POT_ON_SIGMA_LVL_0.9950 +? +1 +tmpl4_0 +POT +? +? +sigma_lvl +1 +4 +1 +9950. +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +4.0 +0 +0 +0 +? +? +? +323 +RH_ON_SIGMA_LVL_0.9950 +? +1 +tmpl4_0 +RH +? +? +sigma_lvl +1 +4 +1 +9950. +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +3.0 +0 +0 +0 +? +? +? +324 +UGRD_ON_SIGMA_LVL_0.9950 +? +1 +tmpl4_0 +UGRD +? +? +sigma_lvl +1 +4 +1 +9950. +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +4.0 +0 +0 +0 +? +? +? +325 +VGRD_ON_SIGMA_LVL_0.9950 +? +1 +tmpl4_0 +VGRD +? +? +sigma_lvl +1 +4 +1 +9950. +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +4.0 +0 +0 +0 +? +? +? +326 +VVEL_ON_SIGMA_LVL_0.9950 +? +1 +tmpl4_0 +VVEL +? +? +sigma_lvl +1 +4 +1 +9950. +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +5.0 +0 +0 +0 +? +? +? +173 +PRES_ON_MAX_WIND +? +1 +tmpl4_0 +PRES +? +? +max_wind +0 +? +0 +? +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +6.0 +0 +0 +0 +? +? +? +174 +HGT_ON_MAX_WIND +? +1 +tmpl4_0 +HGT +? +? +max_wind +0 +? +0 +? +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +6.0 +0 +0 +0 +? +? +? +175 +UGRD_ON_MAX_WIND +? +1 +tmpl4_0 +UGRD +? +? +max_wind +0 +? +0 +? +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +4.0 +0 +0 +0 +? +? +? +176 +VGRD_ON_MAX_WIND +? +1 +tmpl4_0 +VGRD +? +? +max_wind +0 +? +0 +? +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +4.0 +0 +0 +0 +? +? +? +314 +TMP_ON_MAX_WIND +? +1 +tmpl4_0 +TMP +? +? +max_wind +0 +? +0 +? +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +3.0 +0 +0 +0 +? +? +? +221 +HPBL_ON_SURFACE +? +1 +tmpl4_0 +HPBL +NCEP +? +surface +0 +? +0 +? +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +6.0 +0 +0 +0 +? +? +? +575 +CWAT_ON_ENTIRE_ATMOS_SINGLE_LYR +? +1 +tmpl4_0 +CWAT +? +? +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 +? +? +? +312 +RH_ON_ENTIRE_ATMOS_SINGLE_LYR +? +1 +tmpl4_0 +RH +? +? +entire_atmos_single_lyr +0 +? +0 +? +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +2.0 +0 +0 +0 +? +? +? +299 +TOZNE_ON_ENTIRE_ATMOS_SINGLE_LYR +? +1 +tmpl4_0 +TOZNE +? +? +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 +? +? +? +245 +GUST_ON_SURFACE +? +1 +tmpl4_0 +GUST +? +? +surface +0 +? +0 +? +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +3.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 +? +? +? +331 +TCDC_ON_ISOBARIC_SFC +? +1 +tmpl4_0 +TCDC +? +? +isobaric_sfc +0 +? +39 +5000. 7000. 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 +? +? +? +332 +UGRD_ON_ISENTROPIC_LVL +? +1 +tmpl4_0 +UGRD +? +? +isentropic_lvl +0 +? +1 +320. +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +4.0 +0 +0 +0 +? +? +? +333 +VGRD_ON_ISENTROPIC_LVL +? +1 +tmpl4_0 +VGRD +? +? +isentropic_lvl +0 +? +1 +320. +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +4.0 +0 +0 +0 +? +? +? +334 +TMP_ON_ISENTROPIC_LVL +? +1 +tmpl4_0 +TMP +? +? +isentropic_lvl +0 +? +1 +320. +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +3.0 +0 +0 +0 +? +? +? +335 +PVORT_ON_ISENTROPIC_LVL +? +1 +tmpl4_0 +PVORT +? +? +isentropic_lvl +0 +? +1 +320. +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +4.0 +0 +0 +0 +? +? +? +353 +MNTSF_ON_ISENTROPIC_LVL +? +1 +tmpl4_0 +MNTSF +? +? +isentropic_lvl +0 +? +1 +320. +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +4.0 +0 +0 +0 +? +? +? +336 +UGRD_ON_POT_VORT_SFC +? +1 +tmpl4_0 +UGRD +? +? +pot_vort_sfc +8 +9 9 9 9 9 9 9 9 +8 +500. -500. 1000. -1000. 1500. -1500. 2000. -2000. +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +4.0 +0 +0 +0 +? +? +? +337 +VGRD_ON_POT_VORT_SFC +? +1 +tmpl4_0 +VGRD +? +? +pot_vort_sfc +8 +9 9 9 9 9 9 9 9 +8 +500. -500. 1000. -1000. 1500. -1500. 2000. -2000. +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +4.0 +0 +0 +0 +? +? +? +338 +TMP_ON_POT_VORT_SFC +? +1 +tmpl4_0 +TMP +? +? +pot_vort_sfc +8 +9 9 9 9 9 9 9 9 +8 +500. -500. 1000. -1000. 1500. -1500. 2000. -2000. +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +4.0 +0 +0 +0 +? +? +? +339 +HGT_ON_POT_VORT_SFC +? +1 +tmpl4_0 +HGT +? +? +pot_vort_sfc +8 +9 9 9 9 9 9 9 9 +8 +500. -500. 1000. -1000. 1500. -1500. 2000. -2000. +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +6.0 +0 +0 +0 +? +? +? +340 +PRES_ON_POT_VORT_SFC +? +1 +tmpl4_0 +PRES +? +? +pot_vort_sfc +8 +9 9 9 9 9 9 9 9 +8 +500. -500. 1000. -1000. 1500. -1500. 2000. -2000. +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +6.0 +0 +0 +0 +? +? +? +341 +VWSH_ON_POT_VORT_SFC +? +1 +tmpl4_0 +VWSH +NCEP +? +pot_vort_sfc +8 +9 9 9 9 9 9 9 9 +8 +500. -500. 1000. -1000. 1500. -1500. 2000. -2000. +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +3.0 +0 +0 +0 +? +? +? +345 +MAX_TMAX_ON_SPEC_HGT_LVL_ABOVE_GRND_2m +? +1 +tmpl4_8 +TMAX +? +MAX +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 +? +? +? +346 +MIN_TMIN_ON_SPEC_HGT_LVL_ABOVE_GRND_2m +? +1 +tmpl4_8 +TMIN +? +MIN +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 +? +? +? +398 +ICAHT_ON_MAX_WIND +? +1 +tmpl4_0 +ICAHT +? +? +max_wind +0 +? +0 +? +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +6.0 +0 +0 +0 +? +? +? +399 +ICAHT_ON_TROPOPAUSE +? +1 +tmpl4_0 +ICAHT +? +? +tropopause +0 +? +0 +? +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +6.0 +0 +0 +0 +? +? +? +396 +SUNSD_ON_SURFACE +? +1 +tmpl4_0 +SUNSD +NCEP +? +surface +0 +? +0 +? +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +5.0 +0 +0 +0 +? +? +? +389 +UGRD_ON_PLANETARY_BOUND_LYR +? +1 +tmpl4_0 +UGRD +? +? +planetary_bound_lyr +0 +? +0 +? +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +3.0 +0 +0 +0 +? +? +? +390 +VGRD_ON_PLANETARY_BOUND_LYR +? +1 +tmpl4_0 +VGRD +? +? +planetary_bound_lyr +0 +? +0 +? +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +3.0 +0 +0 +0 +? +? +? +454 +VRATE_ON_PLANETARY_BOUND_LYR +Ventilation Rate on planetary boundary layer +1 +tmpl4_0 +VRATE +NCEP +? +planetary_bound_lyr +0 +? +0 +? +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +3.0 +0 +0 +0 +? +? +? +455 +HINDEX_ON_SURFACE +Haines Index on surface +1 +tmpl4_0 +HINDEX +? +? +surface +0 +? +0 +? +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +1.0 +0 +0 +0 +? +? +? +172 +CPOFP_ON_SURFACE +? +1 +tmpl4_0 +CPOFP +? +? +surface +0 +? +0 +? +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +4.0 +0 +0 +0 +? +? +? +808 +APTMP_ON_SPEC_HGT_LVL_ABOVE_GRND_2m +? +1 +tmpl4_0 +APTMP +? +? +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 +? +? +? +167 +INST_PRATE_ON_SURFACE +? +1 +tmpl4_0 +PRATE +? +? +surface +0 +? +0 +? +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +3.0 +0 +0 +0 +? +? +? +249 +CPRAT_ON_SURFACE +? +1 +tmpl4_0 +CPRAT +? +? +surface +0 +? +0 +? +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +4.0 +0 +0 +0 +? +? +? +182 +SNMR_ON_HYBRID_LVL +? +1 +tmpl4_0 +SNMR +? +? +hybrid_lvl +0 +? +1 +1. +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +3.0 +0 +0 +0 +? +? +? +181 +RWMR_ON_HYBRID_LVL +? +1 +tmpl4_0 +RWMR +? +? +hybrid_lvl +0 +? +1 +1. +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +3.0 +0 +0 +0 +? +? +? +124 +CLWMR_ON_HYBRID_LVL +? +1 +tmpl4_0 +CLWMR +? +? +hybrid_lvl +0 +? +1 +1. +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +3.0 +0 +0 +0 +? +? +? +125 +ICMR_ON_HYBRID_LVL +? +1 +tmpl4_0 +ICMR +? +? +hybrid_lvl +0 +? +1 +1. +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +3.0 +0 +0 +0 +? +? +? +415 +GRLE_ON_HYBRID_LVL +Graupel mixing ration on hybrid level +1 +tmpl4_0 +GRLE +? +? +hybrid_lvl +0 +? +1 +1. +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +3.0 +0 +0 +0 +? +? +? +GFSFLX +0 +ncep_nco +v2003 +local_tab_yes1 +fcst +oper +fcst +fcst +hour +nws_ncep +gfs_avn +complex_packing_spatial_diff +2nd_ord_sptdiff +fltng_pnt +lossless +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 +? +? +? +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 +? +? +? +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 +? +? +? +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 +? +? +? +118 +CNWAT_ON_SURFACE +? +1 +tmpl4_0 +CNWAT +NCEP +? +surface +0 +? +0 +? +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +1.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 +3.0 +0 +0 +0 +? +? +? +242 +PEVPR_ON_SURFACE +? +1 +tmpl4_0 +PEVPR +NCEP +? +surface +0 +? +0 +? +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +6.0 +0 +0 +0 +? +? +? +349 +ICETK_ON_SURFACE +? +1 +tmpl4_0 +ICETK +? +? +surface +0 +? +0 +? +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +3.0 +0 +0 +0 +? +? +? +224 +SNOD_ON_SURFACE +? +1 +tmpl4_0 +SNOD +? +? +surface +0 +? +0 +? +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +3.0 +0 +0 +0 +? +? +yes +236 +WILT_ON_SURFACE +? +1 +tmpl4_0 +WILT +NCEP +? +surface +0 +? +0 +? +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +4.0 +0 +0 +0 +? +? +yes +397 +FLDCP_ON_SURFACE +? +1 +tmpl4_0 +FLDCP +NCEP +? +surface +0 +? +0 +? +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +4.0 +0 +0 +0 +? +? +yes +572 +GFS_LFTX_ON_SURFACE +? +1 +tmpl4_0 +LFTX +NCEP +? +surface +0 +? +0 +? +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +3.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 +? +? +? +156 +INST_DSWRF_ON_SURFACE +? +1 +tmpl4_0 +DSWRF +NCEP +? +surface +0 +? +0 +? +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +3.0 +0 +0 +0 +? +? +? +157 +INST_DLWRF_ON_SURFACE +? +1 +tmpl4_0 +DLWRF +NCEP +? +surface +0 +? +0 +? +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +3.0 +0 +0 +0 +? +? +? +141 +INST_USWRF_ON_SURFACE +? +1 +tmpl4_0 +USWRF +NCEP +? +surface +0 +? +0 +? +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +3.0 +0 +0 +0 +? +? +? +142 +INST_ULWRF_ON_SURFACE +? +1 +tmpl4_0 +ULWRF +NCEP +? +surface +0 +? +0 +? +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +3.0 +0 +0 +0 +? +? +? +44 +SFCR_ON_SURFACE +? +1 +tmpl4_0 +SFCR +? +? +surface +0 +? +0 +? +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +4.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 +? +? +? +218 +VGTYP_ON_SURFACE +? +1 +tmpl4_0 +VGTYP +NCEP +? +surface +0 +? +0 +? +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +3.0 +0 +0 +0 +? +? +? +219 +SOTYP_ON_SURFACE +? +1 +tmpl4_0 +SOTYP +? +? +surface +0 +? +0 +? +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +3.0 +0 +0 +0 +? +? +? +223 +SLTYP_ON_SURFACE +? +1 +tmpl4_0 +SLTYP +NCEP +? +surface +0 +? +0 +? +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +3.0 +0 +0 +0 +? +? +? +45 +FRICV_ON_SURFACE +? +1 +tmpl4_0 +FRICV +NCEP +? +surface +0 +? +0 +? +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +4.0 +0 +0 +0 +? +? +? +169 +SFEXC_ON_SURFACE +? +1 +tmpl4_0 +SFEXC +NCEP +? +surface +0 +? +0 +? +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +4.0 +0 +0 +0 +? +? +? +512 +ACOND_ON_SURFACE +? +1 +tmpl4_0 +ACOND +NCEP +? +surface +0 +? +0 +? +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +4.0 +0 +0 +0 +? +? +? +154 +INST_SHTFL_ON_SURFACE +? +1 +tmpl4_0 +SHTFL +? +? +surface +0 +? +0 +? +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +4.0 +0 +0 +0 +? +? +? +152 +INST_GFLUX_ON_SURFACE +? +1 +tmpl4_0 +GFLUX +NCEP +? +surface +0 +? +0 +? +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +4.0 +0 +0 +0 +? +? +? +155 +INST_LHTFL_ON_SURFACE +? +1 +tmpl4_0 +LHTFL +? +? +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 +? +? +? +51 +ICEC_ON_SURFACE +? +1 +tmpl4_0 +ICEC +? +? +surface +0 +? +0 +? +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +3.0 +0 +0 +0 +? +? +? +221 +HPBL_ON_SURFACE +? +1 +tmpl4_0 +HPBL +NCEP +? +surface +0 +? +0 +? +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +6.0 +0 +0 +0 +? +? +? +570 +GFS_TCDC_ON_CONVECTIVE_CLOUD_LYR +? +1 +tmpl4_0 +TCDC +? +? +convective_cloud_lyr +0 +? +0 +? +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +2.0 +0 +0 +0 +? +? +? +396 +SUNSD_ON_SURFACE +? +1 +tmpl4_0 +SUNSD +NCEP +? +surface +0 +? +0 +? +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +5.0 +0 +0 +0 +? +? +? +172 +CPOFP_ON_SURFACE +? +1 +tmpl4_0 +CPOFP +? +? +surface +0 +? +0 +? +? +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 +? +1 +1. +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +4.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 +? +? +? +7 +UGRD_ON_HYBRID_LVL +? +1 +tmpl4_0 +UGRD +? +? +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 +? +? +? +8 +VGRD_ON_HYBRID_LVL +? +1 +tmpl4_0 +VGRD +? +? +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 +? +? +? +77 +HGT_ON_HYBRID_LVL +? +1 +tmpl4_0 +HGT +? +? +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 +? +? +? +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 +4.0 +0 +0 +0 +? +? +? diff --git a/parm/postxconfig-NT-GFS-TWO.txt b/parm/postxconfig-NT-GFS-TWO.txt new file mode 100644 index 000000000..057d46f06 --- /dev/null +++ b/parm/postxconfig-NT-GFS-TWO.txt @@ -0,0 +1,10765 @@ +2 +105 +185 +GFSPRS +0 +ncep_nco +v2003 +local_tab_yes1 +fcst +oper +fcst +fcst +hour +nws_ncep +gfs_avn +complex_packing_spatial_diff +2nd_ord_sptdiff +fltng_pnt +lossless +12 +HGT_ON_ISOBARIC_SFC +? +1 +tmpl4_0 +HGT +? +? +isobaric_sfc +0 +? +57 +1. 2. 4. 7. 10. 20. 40. 70. 100. 200. 300. 500. 700. 1000. 1500. 2000. 3000. 4000. 5000. 7000. 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 +? +57 +1. 2. 4. 7. 10. 20. 40. 70. 100. 200. 300. 500. 700. 1000. 1500. 2000. 3000. 4000. 5000. 7000. 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 +? +? +? +16 +SPFH_ON_ISOBARIC_SFC +? +1 +tmpl4_0 +SPFH +? +? +isobaric_sfc +0 +? +57 +1. 2. 4. 7. 10. 20. 40. 70. 100. 200. 300. 500. 700. 1000. 1500. 2000. 3000. 4000. 5000. 7000. 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 +? +? +? +17 +RH_ON_ISOBARIC_SFC +? +1 +tmpl4_0 +RH +? +? +isobaric_sfc +0 +? +57 +1. 2. 4. 7. 10. 20. 40. 70. 100. 200. 300. 500. 700. 1000. 1500. 2000. 3000. 4000. 5000. 7000. 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 +? +? +? +18 +UGRD_ON_ISOBARIC_SFC +? +1 +tmpl4_0 +UGRD +? +? +isobaric_sfc +0 +? +57 +1. 2. 4. 7. 10. 20. 40. 70. 100. 200. 300. 500. 700. 1000. 1500. 2000. 3000. 4000. 5000. 7000. 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 +? +57 +1. 2. 4. 7. 10. 20. 40. 70. 100. 200. 300. 500. 700. 1000. 1500. 2000. 3000. 4000. 5000. 7000. 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 +? +? +? +284 +DZDT_ON_ISOBARIC_SFC +? +1 +tmpl4_0 +DZDT +? +? +isobaric_sfc +0 +? +45 +1. 2. 4. 7. 10. 20. 40. 70. 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 +? +? +? +20 +VVEL_ON_ISOBARIC_SFC +? +1 +tmpl4_0 +VVEL +? +? +isobaric_sfc +0 +? +45 +1. 2. 4. 7. 10. 20. 40. 70. 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 +? +? +? +21 +ABSV_ON_ISOBARIC_SFC +? +1 +tmpl4_0 +ABSV +? +? +isobaric_sfc +0 +? +57 +1. 2. 4. 7. 10. 20. 40. 70. 100. 200. 300. 500. 700. 1000. 1500. 2000. 3000. 4000. 5000. 7000. 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 +? +? +? +268 +O3MR_ON_ISOBARIC_SFC +? +1 +tmpl4_0 +O3MR +NCEP +? +isobaric_sfc +0 +? +32 +1. 2. 4. 7. 10. 20. 40. 70. 100. 200. 300. 500. 700. 1000. 1500. 2000. 3000. 4000. 5000. 7000. 10000. 12500. 15000. 20000. 25000. 30000. 35000. 40000. 50000. 70000. 85000. 100000. +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +5.0 +0 +0 +0 +? +? +? +153 +CLWMR_ON_ISOBARIC_SFC +? +1 +tmpl4_0 +CLWMR +? +? +isobaric_sfc +0 +? +39 +5000. 7000. 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 +? +? +? +166 +ICMR_ON_ISOBARIC_SFC +? +1 +tmpl4_0 +ICMR +? +? +isobaric_sfc +0 +? +39 +5000. 7000. 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 +? +? +? +183 +RWMR_ON_ISOBARIC_SFC +? +1 +tmpl4_0 +RWMR +? +? +isobaric_sfc +0 +? +39 +5000. 7000. 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 +? +? +? +184 +SNMR_ON_ISOBARIC_SFC +? +1 +tmpl4_0 +SNMR +? +? +isobaric_sfc +0 +? +39 +5000. 7000. 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 +? +? +? +416 +GRLE_ON_ISOBARIC_SFC +Graupel mixing ration on isobaric surface +1 +tmpl4_0 +GRLE +? +? +isobaric_sfc +0 +? +39 +5000. 7000. 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 +? +? +? +450 +ICIP_ON_ISOBARIC_SFC +Total Icing Potential Diagnostic on isobaric sfc +1 +tmpl4_0 +ICIP +? +? +isobaric_sfc +0 +? +37 +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 +? +? +? +480 +ICSEV_ON_ISOBARIC_SFC +Icing severity on isobaric levels +1 +tmpl4_0 +ICSEV +NCEP +? +isobaric_sfc +0 +? +37 +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 +? +? +? +252 +REFC_ON_ENTIRE_ATMOS +? +1 +tmpl4_0 +REFC +NCEP +? +entire_atmos +0 +? +0 +? +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +4.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 +PRES +? +? +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 +? +? +? +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 +? +? +? +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 +? +? +? +118 +CNWAT_ON_SURFACE +? +1 +tmpl4_0 +CNWAT +NCEP +? +surface +0 +? +0 +? +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +1.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 +3.0 +0 +0 +0 +? +? +? +242 +PEVPR_ON_SURFACE +? +1 +tmpl4_0 +PEVPR +NCEP +? +surface +0 +? +0 +? +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +6.0 +0 +0 +0 +? +? +? +349 +ICETK_ON_SURFACE +? +1 +tmpl4_0 +ICETK +? +? +surface +0 +? +0 +? +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +3.0 +0 +0 +0 +? +? +? +224 +SNOD_ON_SURFACE +? +1 +tmpl4_0 +SNOD +? +? +surface +0 +? +0 +? +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +3.0 +0 +0 +0 +? +? +yes +236 +WILT_ON_SURFACE +? +1 +tmpl4_0 +WILT +NCEP +? +surface +0 +? +0 +? +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +4.0 +0 +0 +0 +? +? +yes +397 +FLDCP_ON_SURFACE +? +1 +tmpl4_0 +FLDCP +NCEP +? +surface +0 +? +0 +? +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +4.0 +0 +0 +0 +? +? +yes +572 +GFS_LFTX_ON_SURFACE +? +1 +tmpl4_0 +LFTX +NCEP +? +surface +0 +? +0 +? +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +3.0 +0 +0 +0 +? +? +? +573 +GFS_4LFTX_ON_SURFACE +? +1 +tmpl4_0 +4LFTX +NCEP +? +surface +0 +? +0 +? +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +3.0 +0 +0 +0 +? +? +? +75 +PLI_ON_SPEC_PRES_ABOVE_GRND +? +1 +tmpl4_0 +PLI +? +? +spec_pres_above_grnd +0 +? +1 +3000. +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 +? +? +? +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 +0. +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 +0. +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 +? +1 +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 +0. +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 +0. +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 +? +1 +3000. +spec_hgt_lvl_above_grnd +0 +? +1 +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 +? +1 +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 +? +1 +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 +? +? +? +33 +ACM_ACPCP_ON_SURFACE +? +1 +tmpl4_8 +ACPCP +? +ACM +surface +0 +? +0 +? +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +-4.0 +0 +0 +0 +? +? +? +34 +ACM_NCPCP_ON_SURFACE +? +1 +tmpl4_8 +NCPCP +? +ACM +surface +0 +? +0 +? +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +-4.0 +0 +0 +0 +? +? +? +417 +CACM_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 +? +? +? +418 +CACM_ACPCP_ON_SURFACE +? +1 +tmpl4_8 +ACPCP +? +ACM +surface +0 +? +0 +? +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +-4.0 +0 +0 +0 +? +? +? +419 +CACM_NCPCP_ON_SURFACE +? +1 +tmpl4_8 +NCPCP +? +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 +? +? +? +317 +AVE_CRAIN_ON_SURFACE +? +1 +tmpl4_8 +CRAIN +NCEP +AVE +surface +0 +? +0 +? +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +1.0 +0 +0 +0 +? +? +? +555 +AVE_CSNOW_ON_SURFACE +average Categorical snow on surface +1 +tmpl4_8 +CSNOW +NCEP +AVE +surface +0 +? +0 +? +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +1.0 +0 +0 +0 +? +? +? +556 +AVE_CICEP_ON_SURFACE +average Categorical ice pellets on surface +1 +tmpl4_8 +CICEP +NCEP +AVE +surface +0 +? +0 +? +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +1.0 +0 +0 +0 +? +? +? +557 +AVE_CFRZR_ON_SURFACE +average Categorical freezing rain on surface +1 +tmpl4_8 +CFRZR +NCEP +AVE +surface +0 +? +0 +? +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +1.0 +0 +0 +0 +? +? +? +271 +AVE_PRATE_ON_SURFACE +? +1 +tmpl4_8 +PRATE +? +AVE +surface +0 +? +0 +? +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +4.0 +0 +0 +0 +? +? +? +272 +AVE_CPRAT_ON_SURFACE +? +1 +tmpl4_8 +CPRAT +NCEP +AVE +surface +0 +? +0 +? +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +4.0 +0 +0 +0 +? +? +? +300 +AVE_TCDC_ON_LOW_CLOUD_LYR +? +1 +tmpl4_8 +TCDC +? +AVE +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 +? +? +? +301 +AVE_TCDC_ON_MID_CLOUD_LYR +? +1 +tmpl4_8 +TCDC +? +AVE +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 +? +? +? +302 +AVE_TCDC_ON_HIGH_CLOUD_LYR +? +1 +tmpl4_8 +TCDC +? +AVE +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 +? +? +? +144 +AVE_TCDC_ON_ENTIRE_ATMOS +? +1 +tmpl4_8 +TCDC +? +AVE +entire_atmos +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 +6.0 +0 +0 +0 +? +? +? +126 +AVE_DSWRF_ON_SURFACE +? +1 +tmpl4_8 +DSWRF +NCEP +AVE +surface +0 +? +0 +? +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +3.0 +0 +0 +0 +? +? +? +297 +AVE_CDUVB_ON_SURFACE +? +1 +tmpl4_8 +CDUVB +NCEP +AVE +surface +0 +? +0 +? +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +3.0 +0 +0 +0 +? +? +? +298 +AVE_DUVB_ON_SURFACE +? +1 +tmpl4_8 +DUVB +NCEP +AVE +surface +0 +? +0 +? +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +3.0 +0 +0 +0 +? +? +? +127 +AVE_DLWRF_ON_SURFACE +? +1 +tmpl4_8 +DLWRF +NCEP +AVE +surface +0 +? +0 +? +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +3.0 +0 +0 +0 +? +? +? +128 +AVE_USWRF_ON_SURFACE +? +1 +tmpl4_8 +USWRF +NCEP +AVE +surface +0 +? +0 +? +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +3.0 +0 +0 +0 +? +? +? +129 +AVE_ULWRF_ON_SURFACE +? +1 +tmpl4_8 +ULWRF +NCEP +AVE +surface +0 +? +0 +? +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +3.0 +0 +0 +0 +? +? +? +130 +AVE_USWRF_ON_TOP_OF_ATMOS +? +1 +tmpl4_8 +USWRF +NCEP +AVE +top_of_atmos +0 +? +0 +? +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +3.0 +0 +0 +0 +? +? +? +131 +AVE_ULWRF_ON_TOP_OF_ATMOS +? +1 +tmpl4_8 +ULWRF +NCEP +AVE +top_of_atmos +0 +? +0 +? +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +3.0 +0 +0 +0 +? +? +? +275 +BRTMP_ON_TOP_OF_ATMOS +? +1 +tmpl4_0 +BRTMP +? +? +top_of_atmos +0 +? +0 +? +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +3.0 +0 +0 +0 +? +? +? +44 +SFCR_ON_SURFACE +? +1 +tmpl4_0 +SFCR +? +? +surface +0 +? +0 +? +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +4.0 +0 +0 +0 +? +? +? +45 +FRICV_ON_SURFACE +? +1 +tmpl4_0 +FRICV +NCEP +? +surface +0 +? +0 +? +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +4.0 +0 +0 +0 +? +? +? +43 +AVE_SHTFL_ON_SURFACE +? +1 +tmpl4_8 +SHTFL +? +AVE +surface +0 +? +0 +? +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +4.0 +0 +0 +0 +? +? +? +135 +AVE_GFLUX_ON_SURFACE +? +1 +tmpl4_8 +GFLUX +NCEP +AVE +surface +0 +? +0 +? +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +4.0 +0 +0 +0 +? +? +? +42 +AVE_LHTFL_ON_SURFACE +? +1 +tmpl4_8 +LHTFL +? +AVE +surface +0 +? +0 +? +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +4.0 +0 +0 +0 +? +? +? +269 +AVE_UFLX_ON_SURFACE +? +1 +tmpl4_8 +UFLX +? +AVE +surface +0 +? +0 +? +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +4.0 +0 +0 +0 +? +? +? +270 +AVE_VFLX_ON_SURFACE +? +1 +tmpl4_8 +VFLX +? +AVE +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 +? +? +? +51 +ICEC_ON_SURFACE +? +1 +tmpl4_0 +ICEC +? +? +surface +0 +? +0 +? +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +3.0 +0 +0 +0 +? +? +? +266 +AVE_ALBDO_ON_SURFACE +? +1 +tmpl4_8 +ALBDO +? +AVE +surface +0 +? +0 +? +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +4.0 +0 +0 +0 +? +? +? +54 +PRES_ON_TROPOPAUSE +? +1 +tmpl4_0 +PRES +? +? +tropopause +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 +? +? +? +55 +TMP_ON_TROPOPAUSE +? +1 +tmpl4_0 +TMP +? +? +tropopause +0 +? +0 +? +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +3.0 +0 +0 +0 +? +? +? +56 +UGRD_ON_TROPOPAUSE +? +1 +tmpl4_0 +UGRD +? +? +tropopause +0 +? +0 +? +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +4.0 +0 +0 +0 +? +? +? +57 +VGRD_ON_TROPOPAUSE +? +1 +tmpl4_0 +VGRD +? +? +tropopause +0 +? +0 +? +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +4.0 +0 +0 +0 +? +? +? +58 +VWSH_ON_TROPOPAUSE +? +1 +tmpl4_0 +VWSH +NCEP +? +tropopause +0 +? +0 +? +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +3.0 +0 +0 +0 +? +? +? +59 +TMP_ON_SPEC_ALT_ABOVE_MEAN_SEA_LVL +? +1 +tmpl4_0 +TMP +? +? +spec_alt_above_mean_sea_lvl +0 +? +8 +305. 457. 610. 914. 1829. 2743. 3658. 4572. +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +3.0 +0 +0 +0 +? +? +? +60 +UGRD_ON_SPEC_ALT_ABOVE_MEAN_SEA_LVL +? +1 +tmpl4_0 +UGRD +? +? +spec_alt_above_mean_sea_lvl +0 +? +8 +305. 457. 610. 914. 1829. 2743. 3658. 4572. +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +4.0 +0 +0 +0 +? +? +? +61 +VGRD_ON_SPEC_ALT_ABOVE_MEAN_SEA_LVL +? +1 +tmpl4_0 +VGRD +? +? +spec_alt_above_mean_sea_lvl +0 +? +8 +305. 457. 610. 914. 1829. 2743. 3658. 4572. +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +4.0 +0 +0 +0 +? +? +? +586 +TMP_ON_SPEC_HGT_LVL_ABOVE_GRND_FDHGT +? +1 +tmpl4_0 +TMP +? +? +spec_hgt_lvl_above_grnd +0 +? +2 +80. 100. +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +3.0 +0 +0 +0 +? +? +? +576 +UGRD_ON_SPEC_HGT_LVL_ABOVE_GRND_FDHGT +? +1 +tmpl4_0 +UGRD +? +? +spec_hgt_lvl_above_grnd +0 +? +6 +20. 30. 40. 50. 80. 100. +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +4.0 +0 +0 +0 +? +? +? +577 +VGRD_ON_SPEC_HGT_LVL_ABOVE_GRND_FDHGT +? +1 +tmpl4_0 +VGRD +? +? +spec_hgt_lvl_above_grnd +0 +? +6 +20. 30. 40. 50. 80. 100. +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +4.0 +0 +0 +0 +? +? +? +579 +PRES_ON_SPEC_HGT_LVL_ABOVE_GRND_FDHGT +? +1 +tmpl4_0 +PRES +? +? +spec_hgt_lvl_above_grnd +0 +? +1 +80. +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +6.0 +0 +0 +0 +? +? +? +578 +SPFH_ON_SPEC_HGT_LVL_ABOVE_GRND_FDHGT +? +1 +tmpl4_0 +SPFH +? +? +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 +? +? +? +62 +HGT_ON_0C_ISOTHERM +? +1 +tmpl4_0 +HGT +? +? +0C_isotherm +0 +? +0 +? +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +6.0 +0 +0 +0 +? +? +? +63 +RH_ON_0C_ISOTHERM +? +1 +tmpl4_0 +RH +? +? +0C_isotherm +0 +? +0 +? +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +2.0 +0 +0 +0 +? +? +? +165 +HGT_ON_HGHST_TROP_FRZ_LVL +? +1 +tmpl4_0 +HGT +? +? +hghst_trop_frz_lvl +0 +? +0 +? +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +6.0 +0 +0 +0 +? +? +? +350 +RH_ON_HGHST_TROP_FRZ_LVL +? +1 +tmpl4_0 +RH +? +? +hghst_trop_frz_lvl +0 +? +0 +? +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +2.0 +0 +0 +0 +? +? +? +68 +TMP_ON_SPEC_PRES_ABOVE_GRND +? +1 +tmpl4_0 +TMP +? +? +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 +3.0 +0 +0 +0 +? +? +? +70 +DPT_ON_SPEC_PRES_ABOVE_GRND +? +1 +tmpl4_0 +DPT +? +? +spec_pres_above_grnd +0 +? +1 +3000. +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 +? +? +? +71 +SPFH_ON_SPEC_PRES_ABOVE_GRND +? +1 +tmpl4_0 +SPFH +? +? +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 +5.0 +0 +0 +0 +? +? +? +72 +RH_ON_SPEC_PRES_ABOVE_GRND +? +1 +tmpl4_0 +RH +? +? +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 +2.0 +0 +0 +0 +? +? +? +89 +PWAT_ON_SPEC_PRES_ABOVE_GRND +? +1 +tmpl4_0 +PWAT +? +? +spec_pres_above_grnd +0 +? +1 +3000. +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 +? +? +? +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 +? +? +? +66 +RH_ON_SIGMA_LVL_0.33-1.0 +? +1 +tmpl4_0 +RH +? +? +sigma_lvl +1 +2 +1 +33. +sigma_lvl +1 +2 +1 +100. +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +2.0 +0 +0 +0 +? +? +? +318 +RH_ON_SIGMA_LVL_0.44-1.0 +? +1 +tmpl4_0 +RH +? +? +sigma_lvl +1 +2 +1 +44. +sigma_lvl +1 +2 +1 +100. +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +2.0 +0 +0 +0 +? +? +? +319 +RH_ON_SIGMA_LVL_0.72-0.94 +? +1 +tmpl4_0 +RH +? +? +sigma_lvl +1 +2 +1 +72. +sigma_lvl +1 +2 +1 +94. +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +2.0 +0 +0 +0 +? +? +? +320 +RH_ON_SIGMA_LVL_0.44-0.72 +? +1 +tmpl4_0 +RH +? +? +sigma_lvl +1 +2 +1 +44. +sigma_lvl +1 +2 +1 +72. +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +2.0 +0 +0 +0 +? +? +? +321 +TMP_ON_SIGMA_LVL_0.9950 +? +1 +tmpl4_0 +TMP +? +? +sigma_lvl +1 +4 +1 +9950. +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +4.0 +0 +0 +0 +? +? +? +322 +POT_ON_SIGMA_LVL_0.9950 +? +1 +tmpl4_0 +POT +? +? +sigma_lvl +1 +4 +1 +9950. +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +4.0 +0 +0 +0 +? +? +? +323 +RH_ON_SIGMA_LVL_0.9950 +? +1 +tmpl4_0 +RH +? +? +sigma_lvl +1 +4 +1 +9950. +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +3.0 +0 +0 +0 +? +? +? +324 +UGRD_ON_SIGMA_LVL_0.9950 +? +1 +tmpl4_0 +UGRD +? +? +sigma_lvl +1 +4 +1 +9950. +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +4.0 +0 +0 +0 +? +? +? +325 +VGRD_ON_SIGMA_LVL_0.9950 +? +1 +tmpl4_0 +VGRD +? +? +sigma_lvl +1 +4 +1 +9950. +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +4.0 +0 +0 +0 +? +? +? +326 +VVEL_ON_SIGMA_LVL_0.9950 +? +1 +tmpl4_0 +VVEL +? +? +sigma_lvl +1 +4 +1 +9950. +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +5.0 +0 +0 +0 +? +? +? +173 +PRES_ON_MAX_WIND +? +1 +tmpl4_0 +PRES +? +? +max_wind +0 +? +0 +? +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +6.0 +0 +0 +0 +? +? +? +174 +HGT_ON_MAX_WIND +? +1 +tmpl4_0 +HGT +? +? +max_wind +0 +? +0 +? +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +6.0 +0 +0 +0 +? +? +? +175 +UGRD_ON_MAX_WIND +? +1 +tmpl4_0 +UGRD +? +? +max_wind +0 +? +0 +? +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +4.0 +0 +0 +0 +? +? +? +176 +VGRD_ON_MAX_WIND +? +1 +tmpl4_0 +VGRD +? +? +max_wind +0 +? +0 +? +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +4.0 +0 +0 +0 +? +? +? +314 +TMP_ON_MAX_WIND +? +1 +tmpl4_0 +TMP +? +? +max_wind +0 +? +0 +? +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +3.0 +0 +0 +0 +? +? +? +221 +HPBL_ON_SURFACE +? +1 +tmpl4_0 +HPBL +NCEP +? +surface +0 +? +0 +? +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +6.0 +0 +0 +0 +? +? +? +188 +PRES_ON_CONVECTIVE_CLOUD_BOT_LVL +? +1 +tmpl4_0 +PRES +? +? +convective_cloud_bot_lvl +0 +? +0 +? +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +6.0 +0 +0 +0 +? +? +? +189 +PRES_ON_CONVECTIVE_CLOUD_TOP_LVL +? +1 +tmpl4_0 +PRES +? +? +convective_cloud_top_lvl +0 +? +0 +? +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +6.0 +0 +0 +0 +? +? +? +303 +AVE_PRES_ON_LOW_CLOUD_BOT_LVL +? +1 +tmpl4_8 +PRES +? +AVE +low_cloud_bot_lvl +0 +? +0 +? +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +6.0 +0 +0 +0 +? +? +? +306 +AVE_PRES_ON_MID_CLOUD_BOT_LVL +? +1 +tmpl4_8 +PRES +? +AVE +mid_cloud_bot_lvl +0 +? +0 +? +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +6.0 +0 +0 +0 +? +? +? +309 +AVE_PRES_ON_HIGH_CLOUD_BOT_LVL +? +1 +tmpl4_8 +PRES +? +AVE +high_cloud_bot_lvl +0 +? +0 +? +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +6.0 +0 +0 +0 +? +? +? +304 +AVE_PRES_ON_LOW_CLOUD_TOP_LVL +? +1 +tmpl4_8 +PRES +? +AVE +low_cloud_top_lvl +0 +? +0 +? +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +6.0 +0 +0 +0 +? +? +? +307 +AVE_PRES_ON_MID_CLOUD_TOP_LVL +? +1 +tmpl4_8 +PRES +? +AVE +mid_cloud_top_lvl +0 +? +0 +? +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +6.0 +0 +0 +0 +? +? +? +310 +AVE_PRES_ON_HIGH_CLOUD_TOP_LVL +? +1 +tmpl4_8 +PRES +? +AVE +high_cloud_top_lvl +0 +? +0 +? +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +6.0 +0 +0 +0 +? +? +? +305 +AVE_TMP_ON_LOW_CLOUD_TOP_LVL +? +1 +tmpl4_8 +TMP +? +AVE +low_cloud_top_lvl +0 +? +0 +? +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +3.0 +0 +0 +0 +? +? +? +308 +AVE_TMP_ON_MID_CLOUD_TOP_LVL +? +1 +tmpl4_8 +TMP +? +AVE +mid_cloud_top_lvl +0 +? +0 +? +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +3.0 +0 +0 +0 +? +? +? +311 +AVE_TMP_ON_HIGH_CLOUD_TOP_LVL +? +1 +tmpl4_8 +TMP +? +AVE +high_cloud_top_lvl +0 +? +0 +? +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +3.0 +0 +0 +0 +? +? +? +570 +GFS_TCDC_ON_CONVECTIVE_CLOUD_LYR +? +1 +tmpl4_0 +TCDC +? +? +convective_cloud_lyr +0 +? +0 +? +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +2.0 +0 +0 +0 +? +? +? +575 +CWAT_ON_ENTIRE_ATMOS_SINGLE_LYR +? +1 +tmpl4_0 +CWAT +? +? +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 +? +? +? +312 +RH_ON_ENTIRE_ATMOS_SINGLE_LYR +? +1 +tmpl4_0 +RH +? +? +entire_atmos_single_lyr +0 +? +0 +? +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +2.0 +0 +0 +0 +? +? +? +299 +TOZNE_ON_ENTIRE_ATMOS_SINGLE_LYR +? +1 +tmpl4_0 +TOZNE +? +? +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 +? +? +? +245 +GUST_ON_SURFACE +? +1 +tmpl4_0 +GUST +? +? +surface +0 +? +0 +? +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +3.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 +? +? +? +331 +TCDC_ON_ISOBARIC_SFC +? +1 +tmpl4_0 +TCDC +? +? +isobaric_sfc +0 +? +39 +5000. 7000. 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 +? +? +? +332 +UGRD_ON_ISENTROPIC_LVL +? +1 +tmpl4_0 +UGRD +? +? +isentropic_lvl +0 +? +1 +320. +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +4.0 +0 +0 +0 +? +? +? +333 +VGRD_ON_ISENTROPIC_LVL +? +1 +tmpl4_0 +VGRD +? +? +isentropic_lvl +0 +? +1 +320. +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +4.0 +0 +0 +0 +? +? +? +334 +TMP_ON_ISENTROPIC_LVL +? +1 +tmpl4_0 +TMP +? +? +isentropic_lvl +0 +? +1 +320. +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +3.0 +0 +0 +0 +? +? +? +335 +PVORT_ON_ISENTROPIC_LVL +? +1 +tmpl4_0 +PVORT +? +? +isentropic_lvl +0 +? +1 +320. +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +4.0 +0 +0 +0 +? +? +? +353 +MNTSF_ON_ISENTROPIC_LVL +? +1 +tmpl4_0 +MNTSF +? +? +isentropic_lvl +0 +? +1 +320. +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +4.0 +0 +0 +0 +? +? +? +336 +UGRD_ON_POT_VORT_SFC +? +1 +tmpl4_0 +UGRD +? +? +pot_vort_sfc +8 +9 9 9 9 9 9 9 9 +8 +500. -500. 1000. -1000. 1500. -1500. 2000. -2000. +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +4.0 +0 +0 +0 +? +? +? +337 +VGRD_ON_POT_VORT_SFC +? +1 +tmpl4_0 +VGRD +? +? +pot_vort_sfc +8 +9 9 9 9 9 9 9 9 +8 +500. -500. 1000. -1000. 1500. -1500. 2000. -2000. +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +4.0 +0 +0 +0 +? +? +? +338 +TMP_ON_POT_VORT_SFC +? +1 +tmpl4_0 +TMP +? +? +pot_vort_sfc +8 +9 9 9 9 9 9 9 9 +8 +500. -500. 1000. -1000. 1500. -1500. 2000. -2000. +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +4.0 +0 +0 +0 +? +? +? +339 +HGT_ON_POT_VORT_SFC +? +1 +tmpl4_0 +HGT +? +? +pot_vort_sfc +8 +9 9 9 9 9 9 9 9 +8 +500. -500. 1000. -1000. 1500. -1500. 2000. -2000. +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +6.0 +0 +0 +0 +? +? +? +340 +PRES_ON_POT_VORT_SFC +? +1 +tmpl4_0 +PRES +? +? +pot_vort_sfc +8 +9 9 9 9 9 9 9 9 +8 +500. -500. 1000. -1000. 1500. -1500. 2000. -2000. +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +6.0 +0 +0 +0 +? +? +? +341 +VWSH_ON_POT_VORT_SFC +? +1 +tmpl4_0 +VWSH +NCEP +? +pot_vort_sfc +8 +9 9 9 9 9 9 9 9 +8 +500. -500. 1000. -1000. 1500. -1500. 2000. -2000. +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +3.0 +0 +0 +0 +? +? +? +342 +AVE_TCDC_ON_BOUND_LYR_CLOUD_LYR +? +1 +tmpl4_8 +TCDC +? +AVE +bound_lyr_cloud_lyr +0 +? +0 +? +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +3.0 +0 +0 +0 +? +? +? +313 +AVE_CWORK_ON_ENTIRE_ATMOS_SINGLE_LYR +? +1 +tmpl4_8 +CWORK +NCEP +AVE +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 +? +? +? +315 +AVE_U-GWD_ON_SURFACE +? +1 +tmpl4_8 +U-GWD +NCEP +AVE +surface +0 +? +0 +? +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +5.0 +0 +0 +0 +? +? +? +316 +AVE_V-GWD_ON_SURFACE +? +1 +tmpl4_8 +V-GWD +NCEP +AVE +surface +0 +? +0 +? +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +5.0 +0 +0 +0 +? +? +? +343 +ACM_WATR_ON_SURFACE +? +1 +tmpl4_8 +WATR +? +ACM +surface +0 +? +0 +? +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +6.0 +0 +0 +0 +? +? +? +345 +MAX_TMAX_ON_SPEC_HGT_LVL_ABOVE_GRND_2m +? +1 +tmpl4_8 +TMAX +? +MAX +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 +? +? +? +346 +MIN_TMIN_ON_SPEC_HGT_LVL_ABOVE_GRND_2m +? +1 +tmpl4_8 +TMIN +? +MIN +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 +? +? +? +398 +ICAHT_ON_MAX_WIND +? +1 +tmpl4_0 +ICAHT +? +? +max_wind +0 +? +0 +? +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +6.0 +0 +0 +0 +? +? +? +399 +ICAHT_ON_TROPOPAUSE +? +1 +tmpl4_0 +ICAHT +? +? +tropopause +0 +? +0 +? +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +6.0 +0 +0 +0 +? +? +? +396 +SUNSD_ON_SURFACE +? +1 +tmpl4_0 +SUNSD +NCEP +? +surface +0 +? +0 +? +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +5.0 +0 +0 +0 +? +? +? +389 +UGRD_ON_PLANETARY_BOUND_LYR +? +1 +tmpl4_0 +UGRD +? +? +planetary_bound_lyr +0 +? +0 +? +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +3.0 +0 +0 +0 +? +? +? +390 +VGRD_ON_PLANETARY_BOUND_LYR +? +1 +tmpl4_0 +VGRD +? +? +planetary_bound_lyr +0 +? +0 +? +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +3.0 +0 +0 +0 +? +? +? +454 +VRATE_ON_PLANETARY_BOUND_LYR +Ventilation Rate on planetary boundary layer +1 +tmpl4_0 +VRATE +NCEP +? +planetary_bound_lyr +0 +? +0 +? +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +3.0 +0 +0 +0 +? +? +? +455 +HINDEX_ON_SURFACE +Haines Index on surface +1 +tmpl4_0 +HINDEX +? +? +surface +0 +? +0 +? +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +1.0 +0 +0 +0 +? +? +? +172 +CPOFP_ON_SURFACE +? +1 +tmpl4_0 +CPOFP +? +? +surface +0 +? +0 +? +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +4.0 +0 +0 +0 +? +? +? +808 +APTMP_ON_SPEC_HGT_LVL_ABOVE_GRND_2m +? +1 +tmpl4_0 +APTMP +? +? +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 +? +? +? +167 +INST_PRATE_ON_SURFACE +? +1 +tmpl4_0 +PRATE +? +? +surface +0 +? +0 +? +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +3.0 +0 +0 +0 +? +? +? +249 +CPRAT_ON_SURFACE +? +1 +tmpl4_0 +CPRAT +? +? +surface +0 +? +0 +? +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +4.0 +0 +0 +0 +? +? +? +182 +SNMR_ON_HYBRID_LVL +? +1 +tmpl4_0 +SNMR +? +? +hybrid_lvl +0 +? +1 +1. +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +3.0 +0 +0 +0 +? +? +? +181 +RWMR_ON_HYBRID_LVL +? +1 +tmpl4_0 +RWMR +? +? +hybrid_lvl +0 +? +1 +1. +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +3.0 +0 +0 +0 +? +? +? +124 +CLWMR_ON_HYBRID_LVL +? +1 +tmpl4_0 +CLWMR +? +? +hybrid_lvl +0 +? +1 +1. +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +3.0 +0 +0 +0 +? +? +? +125 +ICMR_ON_HYBRID_LVL +? +1 +tmpl4_0 +ICMR +? +? +hybrid_lvl +0 +? +1 +1. +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +3.0 +0 +0 +0 +? +? +? +415 +GRLE_ON_HYBRID_LVL +Graupel mixing ration on hybrid level +1 +tmpl4_0 +GRLE +? +? +hybrid_lvl +0 +? +1 +1. +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +3.0 +0 +0 +0 +? +? +? +GFSFLX +0 +ncep_nco +v2003 +local_tab_yes1 +fcst +oper +fcst +fcst +hour +nws_ncep +gfs_avn +complex_packing_spatial_diff +2nd_ord_sptdiff +fltng_pnt +lossless +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 +? +? +? +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 +? +? +? +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 +? +? +? +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 +? +? +? +118 +CNWAT_ON_SURFACE +? +1 +tmpl4_0 +CNWAT +NCEP +? +surface +0 +? +0 +? +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +1.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 +3.0 +0 +0 +0 +? +? +? +517 +AVE_PEVPR_ON_SURFACE +? +1 +tmpl4_8 +PEVPR +NCEP +AVE +surface +0 +? +0 +? +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +6.0 +0 +0 +0 +? +? +? +242 +PEVPR_ON_SURFACE +? +1 +tmpl4_0 +PEVPR +NCEP +? +surface +0 +? +0 +? +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +6.0 +0 +0 +0 +? +? +? +349 +ICETK_ON_SURFACE +? +1 +tmpl4_0 +ICETK +? +? +surface +0 +? +0 +? +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +3.0 +0 +0 +0 +? +? +? +224 +SNOD_ON_SURFACE +? +1 +tmpl4_0 +SNOD +? +? +surface +0 +? +0 +? +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +3.0 +0 +0 +0 +? +? +yes +236 +WILT_ON_SURFACE +? +1 +tmpl4_0 +WILT +NCEP +? +surface +0 +? +0 +? +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +4.0 +0 +0 +0 +? +? +yes +397 +FLDCP_ON_SURFACE +? +1 +tmpl4_0 +FLDCP +NCEP +? +surface +0 +? +0 +? +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +4.0 +0 +0 +0 +? +? +yes +572 +GFS_LFTX_ON_SURFACE +? +1 +tmpl4_0 +LFTX +NCEP +? +surface +0 +? +0 +? +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +3.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 +? +? +? +271 +AVE_PRATE_ON_SURFACE +? +1 +tmpl4_8 +PRATE +? +AVE +surface +0 +? +0 +? +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +4.0 +0 +0 +0 +? +? +? +272 +AVE_CPRAT_ON_SURFACE +? +1 +tmpl4_8 +CPRAT +NCEP +AVE +surface +0 +? +0 +? +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +4.0 +0 +0 +0 +? +? +? +300 +AVE_TCDC_ON_LOW_CLOUD_LYR +? +1 +tmpl4_8 +TCDC +? +AVE +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 +? +? +? +301 +AVE_TCDC_ON_MID_CLOUD_LYR +? +1 +tmpl4_8 +TCDC +? +AVE +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 +? +? +? +302 +AVE_TCDC_ON_HIGH_CLOUD_LYR +? +1 +tmpl4_8 +TCDC +? +AVE +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 +? +? +? +144 +AVE_TCDC_ON_ENTIRE_ATMOS +? +1 +tmpl4_8 +TCDC +? +AVE +entire_atmos +0 +? +0 +? +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +3.0 +0 +0 +0 +? +? +? +126 +AVE_DSWRF_ON_SURFACE +? +1 +tmpl4_8 +DSWRF +NCEP +AVE +surface +0 +? +0 +? +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +3.0 +0 +0 +0 +? +? +? +156 +INST_DSWRF_ON_SURFACE +? +1 +tmpl4_0 +DSWRF +NCEP +? +surface +0 +? +0 +? +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +3.0 +0 +0 +0 +? +? +? +388 +AVE_DSWRF_ON_TOP_OF_ATMOS +? +1 +tmpl4_8 +DSWRF +NCEP +AVE +top_of_atmos +0 +? +0 +? +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +3.0 +0 +0 +0 +? +? +? +297 +AVE_CDUVB_ON_SURFACE +? +1 +tmpl4_8 +CDUVB +NCEP +AVE +surface +0 +? +0 +? +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +3.0 +0 +0 +0 +? +? +? +298 +AVE_DUVB_ON_SURFACE +? +1 +tmpl4_8 +DUVB +NCEP +AVE +surface +0 +? +0 +? +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +3.0 +0 +0 +0 +? +? +? +127 +AVE_DLWRF_ON_SURFACE +? +1 +tmpl4_8 +DLWRF +NCEP +AVE +surface +0 +? +0 +? +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +3.0 +0 +0 +0 +? +? +? +157 +INST_DLWRF_ON_SURFACE +? +1 +tmpl4_0 +DLWRF +NCEP +? +surface +0 +? +0 +? +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +3.0 +0 +0 +0 +? +? +? +128 +AVE_USWRF_ON_SURFACE +? +1 +tmpl4_8 +USWRF +NCEP +AVE +surface +0 +? +0 +? +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +3.0 +0 +0 +0 +? +? +? +141 +INST_USWRF_ON_SURFACE +? +1 +tmpl4_0 +USWRF +NCEP +? +surface +0 +? +0 +? +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +3.0 +0 +0 +0 +? +? +? +129 +AVE_ULWRF_ON_SURFACE +? +1 +tmpl4_8 +ULWRF +NCEP +AVE +surface +0 +? +0 +? +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +3.0 +0 +0 +0 +? +? +? +142 +INST_ULWRF_ON_SURFACE +? +1 +tmpl4_0 +ULWRF +NCEP +? +surface +0 +? +0 +? +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +3.0 +0 +0 +0 +? +? +? +130 +AVE_USWRF_ON_TOP_OF_ATMOS +? +1 +tmpl4_8 +USWRF +NCEP +AVE +top_of_atmos +0 +? +0 +? +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +3.0 +0 +0 +0 +? +? +? +131 +AVE_ULWRF_ON_TOP_OF_ATMOS +? +1 +tmpl4_8 +ULWRF +NCEP +AVE +top_of_atmos +0 +? +0 +? +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +3.0 +0 +0 +0 +? +? +? +401 +AVE_VBDSF_ON_SURFACE +averaged surface visible beam downward solar flux +1 +tmpl4_8 +VBDSF +NCEP +AVE +surface +0 +? +0 +? +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +3.0 +0 +0 +0 +? +? +? +402 +AVE_VDDSF_ON_SURFACE +averaged surface visible diffuse downward solar flux +1 +tmpl4_8 +VDDSF +NCEP +AVE +surface +0 +? +0 +? +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +3.0 +0 +0 +0 +? +? +? +403 +AVE_NBDSF_ON_SURFACE +averaged surface near IR beam downward solar flux +1 +tmpl4_8 +NBDSF +NCEP +AVE +surface +0 +? +0 +? +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +3.0 +0 +0 +0 +? +? +? +404 +AVE_NDDSF_ON_SURFACE +averaged surface near IR beam downward solar flux +1 +tmpl4_8 +NDDSF +NCEP +AVE +surface +0 +? +0 +? +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +3.0 +0 +0 +0 +? +? +? +385 +AVE_CSULF_ON_TOP_OF_ATMOS +? +1 +tmpl4_8 +CSULF +NCEP +AVE +top_of_atmos +0 +? +0 +? +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +3.0 +0 +0 +0 +? +? +? +387 +AVE_CSUSF_ON_TOP_OF_ATMOS +? +1 +tmpl4_8 +CSUSF +NCEP +AVE +top_of_atmos +0 +? +0 +? +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +3.0 +0 +0 +0 +? +? +? +382 +AVE_CSDLF_ON_SURFACE +? +1 +tmpl4_8 +CSDLF +NCEP +AVE +surface +0 +? +0 +? +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +3.0 +0 +0 +0 +? +? +? +386 +AVE_CSUSF_ON_SURFACE +? +1 +tmpl4_8 +CSUSF +NCEP +AVE +surface +0 +? +0 +? +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +3.0 +0 +0 +0 +? +? +? +383 +AVE_CSDSF_ON_SURFACE +? +1 +tmpl4_8 +CSDSF +NCEP +AVE +surface +0 +? +0 +? +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +3.0 +0 +0 +0 +? +? +? +384 +AVE_CSULF_ON_SURFACE +? +1 +tmpl4_8 +CSULF +NCEP +AVE +surface +0 +? +0 +? +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +3.0 +0 +0 +0 +? +? +? +44 +SFCR_ON_SURFACE +? +1 +tmpl4_0 +SFCR +? +? +surface +0 +? +0 +? +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +4.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 +? +? +? +218 +VGTYP_ON_SURFACE +? +1 +tmpl4_0 +VGTYP +NCEP +? +surface +0 +? +0 +? +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +3.0 +0 +0 +0 +? +? +? +219 +SOTYP_ON_SURFACE +? +1 +tmpl4_0 +SOTYP +? +? +surface +0 +? +0 +? +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +3.0 +0 +0 +0 +? +? +? +223 +SLTYP_ON_SURFACE +? +1 +tmpl4_0 +SLTYP +NCEP +? +surface +0 +? +0 +? +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +3.0 +0 +0 +0 +? +? +? +45 +FRICV_ON_SURFACE +? +1 +tmpl4_0 +FRICV +NCEP +? +surface +0 +? +0 +? +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +4.0 +0 +0 +0 +? +? +? +169 +SFEXC_ON_SURFACE +? +1 +tmpl4_0 +SFEXC +NCEP +? +surface +0 +? +0 +? +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +4.0 +0 +0 +0 +? +? +? +512 +ACOND_ON_SURFACE +? +1 +tmpl4_0 +ACOND +NCEP +? +surface +0 +? +0 +? +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +4.0 +0 +0 +0 +? +? +? +43 +AVE_SHTFL_ON_SURFACE +? +1 +tmpl4_8 +SHTFL +? +AVE +surface +0 +? +0 +? +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +4.0 +0 +0 +0 +? +? +? +154 +INST_SHTFL_ON_SURFACE +? +1 +tmpl4_0 +SHTFL +? +? +surface +0 +? +0 +? +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +4.0 +0 +0 +0 +? +? +? +135 +AVE_GFLUX_ON_SURFACE +? +1 +tmpl4_8 +GFLUX +NCEP +AVE +surface +0 +? +0 +? +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +4.0 +0 +0 +0 +? +? +? +152 +INST_GFLUX_ON_SURFACE +? +1 +tmpl4_0 +GFLUX +NCEP +? +surface +0 +? +0 +? +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +4.0 +0 +0 +0 +? +? +? +122 +ACM_SSRUN_ON_SURFACE +? +1 +tmpl4_8 +SSRUN +NCEP +ACM +surface +0 +? +0 +? +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +4.0 +0 +0 +0 +? +? +? +42 +AVE_LHTFL_ON_SURFACE +? +1 +tmpl4_8 +LHTFL +? +AVE +surface +0 +? +0 +? +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +4.0 +0 +0 +0 +? +? +? +155 +INST_LHTFL_ON_SURFACE +? +1 +tmpl4_0 +LHTFL +? +? +surface +0 +? +0 +? +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +4.0 +0 +0 +0 +? +? +? +269 +AVE_UFLX_ON_SURFACE +? +1 +tmpl4_8 +UFLX +? +AVE +surface +0 +? +0 +? +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +4.0 +0 +0 +0 +? +? +? +270 +AVE_VFLX_ON_SURFACE +? +1 +tmpl4_8 +VFLX +? +AVE +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 +? +? +? +51 +ICEC_ON_SURFACE +? +1 +tmpl4_0 +ICEC +? +? +surface +0 +? +0 +? +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +3.0 +0 +0 +0 +? +? +? +266 +AVE_ALBDO_ON_SURFACE +? +1 +tmpl4_8 +ALBDO +? +AVE +surface +0 +? +0 +? +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +4.0 +0 +0 +0 +? +? +? +221 +HPBL_ON_SURFACE +? +1 +tmpl4_0 +HPBL +NCEP +? +surface +0 +? +0 +? +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +6.0 +0 +0 +0 +? +? +? +188 +PRES_ON_CONVECTIVE_CLOUD_BOT_LVL +? +1 +tmpl4_0 +PRES +? +? +convective_cloud_bot_lvl +0 +? +0 +? +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +6.0 +0 +0 +0 +? +? +? +189 +PRES_ON_CONVECTIVE_CLOUD_TOP_LVL +? +1 +tmpl4_0 +PRES +? +? +convective_cloud_top_lvl +0 +? +0 +? +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +6.0 +0 +0 +0 +? +? +? +303 +AVE_PRES_ON_LOW_CLOUD_BOT_LVL +? +1 +tmpl4_8 +PRES +? +AVE +low_cloud_bot_lvl +0 +? +0 +? +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +6.0 +0 +0 +0 +? +? +? +306 +AVE_PRES_ON_MID_CLOUD_BOT_LVL +? +1 +tmpl4_8 +PRES +? +AVE +mid_cloud_bot_lvl +0 +? +0 +? +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +6.0 +0 +0 +0 +? +? +? +309 +AVE_PRES_ON_HIGH_CLOUD_BOT_LVL +? +1 +tmpl4_8 +PRES +? +AVE +high_cloud_bot_lvl +0 +? +0 +? +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +6.0 +0 +0 +0 +? +? +? +304 +AVE_PRES_ON_LOW_CLOUD_TOP_LVL +? +1 +tmpl4_8 +PRES +? +AVE +low_cloud_top_lvl +0 +? +0 +? +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +6.0 +0 +0 +0 +? +? +? +307 +AVE_PRES_ON_MID_CLOUD_TOP_LVL +? +1 +tmpl4_8 +PRES +? +AVE +mid_cloud_top_lvl +0 +? +0 +? +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +6.0 +0 +0 +0 +? +? +? +310 +AVE_PRES_ON_HIGH_CLOUD_TOP_LVL +? +1 +tmpl4_8 +PRES +? +AVE +high_cloud_top_lvl +0 +? +0 +? +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +6.0 +0 +0 +0 +? +? +? +305 +AVE_TMP_ON_LOW_CLOUD_TOP_LVL +? +1 +tmpl4_8 +TMP +? +AVE +low_cloud_top_lvl +0 +? +0 +? +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +3.0 +0 +0 +0 +? +? +? +308 +AVE_TMP_ON_MID_CLOUD_TOP_LVL +? +1 +tmpl4_8 +TMP +? +AVE +mid_cloud_top_lvl +0 +? +0 +? +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +3.0 +0 +0 +0 +? +? +? +311 +AVE_TMP_ON_HIGH_CLOUD_TOP_LVL +? +1 +tmpl4_8 +TMP +? +AVE +high_cloud_top_lvl +0 +? +0 +? +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +3.0 +0 +0 +0 +? +? +? +570 +GFS_TCDC_ON_CONVECTIVE_CLOUD_LYR +? +1 +tmpl4_0 +TCDC +? +? +convective_cloud_lyr +0 +? +0 +? +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +2.0 +0 +0 +0 +? +? +? +342 +AVE_TCDC_ON_BOUND_LYR_CLOUD_LYR +? +1 +tmpl4_8 +TCDC +? +AVE +bound_lyr_cloud_lyr +0 +? +0 +? +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +3.0 +0 +0 +0 +? +? +? +313 +AVE_CWORK_ON_ENTIRE_ATMOS_SINGLE_LYR +? +1 +tmpl4_8 +CWORK +NCEP +AVE +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 +? +? +? +315 +AVE_U-GWD_ON_SURFACE +? +1 +tmpl4_8 +U-GWD +NCEP +AVE +surface +0 +? +0 +? +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +5.0 +0 +0 +0 +? +? +? +316 +AVE_V-GWD_ON_SURFACE +? +1 +tmpl4_8 +V-GWD +NCEP +AVE +surface +0 +? +0 +? +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +5.0 +0 +0 +0 +? +? +? +343 +ACM_WATR_ON_SURFACE +? +1 +tmpl4_8 +WATR +? +ACM +surface +0 +? +0 +? +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +6.0 +0 +0 +0 +? +? +? +345 +MAX_TMAX_ON_SPEC_HGT_LVL_ABOVE_GRND_2m +? +1 +tmpl4_8 +TMAX +? +MAX +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 +? +? +? +346 +MIN_TMIN_ON_SPEC_HGT_LVL_ABOVE_GRND_2m +? +1 +tmpl4_8 +TMIN +? +MIN +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 +? +? +? +510 +MAX_QMAX_ON_SPEC_HGT_LVL_ABOVE_GRND_2m +? +1 +tmpl4_8 +QMAX +NCEP +MAX +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 +? +? +? +511 +MIN_QMIN_ON_SPEC_HGT_LVL_ABOVE_GRND_2m +? +1 +tmpl4_8 +QMIN +NCEP +MIN +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 +? +? +? +396 +SUNSD_ON_SURFACE +? +1 +tmpl4_0 +SUNSD +NCEP +? +surface +0 +? +0 +? +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +5.0 +0 +0 +0 +? +? +? +172 +CPOFP_ON_SURFACE +? +1 +tmpl4_0 +CPOFP +? +? +surface +0 +? +0 +? +? +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 +? +1 +1. +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +4.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 +? +? +? +7 +UGRD_ON_HYBRID_LVL +? +1 +tmpl4_0 +UGRD +? +? +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 +? +? +? +8 +VGRD_ON_HYBRID_LVL +? +1 +tmpl4_0 +VGRD +? +? +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 +? +? +? +77 +HGT_ON_HYBRID_LVL +? +1 +tmpl4_0 +HGT +? +? +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 +? +? +? +514 +AVE_EVBS_ON_SURFACE +? +1 +tmpl4_8 +EVBS +NCEP +AVE +surface +0 +? +0 +? +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +3.0 +0 +0 +0 +? +? +? +513 +AVE_EVCW_ON_SURFACE +? +1 +tmpl4_8 +EVCW +NCEP +AVE +surface +0 +? +0 +? +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +3.0 +0 +0 +0 +? +? +? +515 +AVE_TRANS_ON_SURFACE +? +1 +tmpl4_8 +TRANS +NCEP +AVE +surface +0 +? +0 +? +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +3.0 +0 +0 +0 +? +? +? +516 +AVE_SBSNO_ON_SURFACE +? +1 +tmpl4_8 +SBSNO +NCEP +AVE +surface +0 +? +0 +? +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +3.0 +0 +0 +0 +? +? +? +500 +AVE_SNOWC_ON_SURFACE +? +1 +tmpl4_8 +SNOWC +? +AVE +surface +0 +? +0 +? +? +0 +? +0 +? +? +? +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 +4.0 +0 +0 +0 +? +? +? +136 +AVE_SNOHF_ON_SURFACE +? +1 +tmpl4_8 +SNOHF +? +AVE +surface +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/scripts/exgdas_nceppost.sh.ecf b/scripts/exgdas_nceppost.sh.ecf index fa8aa7181..d3e0b5964 100755 --- a/scripts/exgdas_nceppost.sh.ecf +++ b/scripts/exgdas_nceppost.sh.ecf @@ -28,6 +28,7 @@ export POSTGPSH=${POSTGPSH:-$USHgfs/gfs_nceppost.sh} export GFSDOWNSH=${GFSDOWNSH:-$USHgfs/fv3gfs_downstream_nems.sh} export GFSDWNSH=${GFSDWNSH:-$USHgfs/fv3gfs_dwn_nems.sh} export TRIMRH=${TRIMRH:-$USHgfs/trim_rh.sh} +export INLINE_POST=${INLINE_POST:-".false."} ############################################################ # Define Variables: @@ -43,10 +44,15 @@ export JO=${LATB:-721} # specify default model output format: 3 for sigio and 4 # for nemsio export OUTTYP=${OUTTYP:-4} +export OUTPUT_FILE=${OUTPUT_FILE:-"nemsio"} export TCYC=${TCYC:-".t${cyc}z."} export PREFIX=${PREFIX:-${RUN}${TCYC}} if [ $OUTTYP -eq 4 ] ; then - export SUFFIX=".nemsio" + if [ $OUTPUT_FILE = "netcdf" ]; then + export SUFFIX=".nc" + else + export SUFFIX=".nemsio" + fi else export SUFFIX= fi @@ -275,11 +281,23 @@ do export PGIOUT=pgifile export PGBOUT2=pgbfile.grib2 export PGIOUT2=pgifile.grib2.idx - export FILTER=1 + export FILTER=0 + export fhr3=$fhr + if [ $GRIBVERSION = 'grib2' ] + then + MASTERFHR=${PREFIX}master.grb2f${fhr} + MASTERFHRIDX=${PREFIX}master.grb2if${fhr} + fi - $POSTGPSH + + if [ $INLINE_POST = ".false." ]; then + $POSTGPSH + else + cp $COMOUT/${MASTERFHR} $PGBOUT + fi export err=$?; err_chk + if test $GRIBVERSION = 'grib2' then mv $PGBOUT $PGBOUT2 @@ -305,18 +323,13 @@ do fi # echo "$PDY$cyc$fhr" > $COMOUT/${RUN}.t${cyc}z.${RUN_FLAG}control - - export fhr3=$fhr - if [ $GRIBVERSION = 'grib2' ] - then - MASTERFHR=${PREFIX}master.grb2f${fhr} - MASTERFHRIDX=${PREFIX}master.grb2if${fhr} - fi if test $SENDCOM = 'YES' then if [ $GRIBVERSION = 'grib2' ] ; then - cp $PGBOUT2 $COMOUT/${MASTERFHR} + if [ $INLINE_POST = ".false." ]; then + cp $PGBOUT2 $COMOUT/${MASTERFHR} + fi $GRB2INDEX $PGBOUT2 $COMOUT/${MASTERFHRIDX} fi @@ -336,12 +349,16 @@ do fi export PGBOUT=fluxfile export FILTER=0 - $POSTGPSH - export err=$? - err_chk - mv fluxfile $COMOUT/${PREFIX}sfluxgrbf${fhr}.grib2 - $WGRIB2 -s $COMOUT/${PREFIX}sfluxgrbf${fhr}.grib2 > $COMOUT/${PREFIX}sfluxgrbf${fhr}.grib2.idx + FLUXFL=${PREFIX}sfluxgrbf${fhr}.grib2 + FLUXFLIDX=${PREFIX}sfluxgrbf${fhr}.grib2.idx + + if [ $INLINE_POST = ".false." ]; then + $POSTGPSH + export err=$?; err_chk + mv fluxfile $COMOUT/${FLUXFL} fi + $WGRIB2 -s $COMOUT/${FLUXFL} > $COMOUT/${FLUXFLIDX} + fi if test "$SENDDBN" = 'YES' -a \( "$RUN" = 'gdas' \) -a `expr $fhr % 3` -eq 0 then diff --git a/scripts/exgfs_nceppost.sh.ecf b/scripts/exgfs_nceppost.sh.ecf index 274efbe11..909302405 100755 --- a/scripts/exgfs_nceppost.sh.ecf +++ b/scripts/exgfs_nceppost.sh.ecf @@ -38,6 +38,7 @@ export POSTGPSH=${POSTGPSH:-$USHgfs/gfs_nceppost.sh} export GFSDOWNSH=${GFSDOWNSH:-$USHgfs/fv3gfs_downstream_nems.sh} export GFSDWNSH=${GFSDWNSH:-$USHgfs/fv3gfs_dwn_nems.sh} export TRIMRH=${TRIMRH:-$USHgfs/trim_rh.sh} +export INLINE_POST=${INLINE_POST:-".false."} ############################################################ # Define Variables: @@ -55,9 +56,14 @@ export GOESF=${GOESF:-"YES"} export GTGF=${GTGF:-"YES"} export PGBF=${PGBF:-"YES"} export TCYC=${TCYC:-".t${cyc}z."} +export OUTPUT_FILE=${OUTPUT_FILE:-"nemsio"} export PREFIX=${PREFIX:-${RUN}${TCYC}} if [ $OUTTYP -eq 4 ] ; then - export SUFFIX=".nemsio" + if [ $OUTPUT_FILE = "netcdf" ]; then + export SUFFIX=".nc" + else + export SUFFIX=".nemsio" + fi else export SUFFIX= fi @@ -287,14 +293,22 @@ do export PGIOUT=pgifile export PGBOUT2=pgbfile.grib2 export PGIOUT2=pgifile.grib2.idx - export FILTER=1 + export FILTER=0 + if [ $GRIBVERSION = 'grib2' ]; then + MASTERFL=${PREFIX}master.grb2f${fhr} + MASTERFLIDX=${PREFIX}master.grb2if${fhr} + fi - $POSTGPSH + if [ $INLINE_POST = ".false." ]; then + $POSTGPSH + else + cp -p $COMOUT/${MASTERFL} $PGBOUT + fi export err=$?; err_chk if test $GRIBVERSION = 'grib2' then - cp $PGBOUT $PGBOUT2 + mv $PGBOUT $PGBOUT2 fi # Process pgb files @@ -306,17 +320,14 @@ do export err=$?; err_chk fi - if [ $GRIBVERSION = 'grib2' ]; then - MASTERFL=${PREFIX}master.grb2f${fhr} - MASTERFLIDX=${PREFIX}master.grb2if${fhr} - fi - if test $SENDCOM = "YES" then # echo "$PDY$cyc$pad$fhr" > $COMOUT/${RUN}.t${cyc}z.master.control if [ $GRIBVERSION = 'grib2' ] ; then - cp $PGBOUT2 $COMOUT/${MASTERFL} - $GRB2INDEX $PGBOUT2 $COMOUT/${MASTERFLIDX} + if [ $INLINE_POST = ".false." ]; then + cp $PGBOUT2 $COMOUT/${MASTERFL} + fi + $GRB2INDEX $PGBOUT2 $COMOUT/${MASTERFLIDX} fi if test "$SENDDBN" = 'YES' @@ -371,19 +382,22 @@ do fi export PGBOUT=fluxfile export FILTER=0 - $POSTGPSH - export err=$?; err_chk FLUXFL=${PREFIX}sfluxgrbf${fhr}.grib2 FLUXFLIDX=${PREFIX}sfluxgrbf${fhr}.grib2.idx - mv fluxfile $COMOUT/${FLUXFL} + + if [ $INLINE_POST = ".false." ]; then + $POSTGPSH + export err=$?; err_chk + mv fluxfile $COMOUT/${FLUXFL} + fi $WGRIB2 -s $COMOUT/${FLUXFL} > $COMOUT/${FLUXFLIDX} + if test "$SENDDBN" = 'YES' then $DBNROOT/bin/dbn_alert MODEL GFS_SGB_GB2 $job $COMOUT/${FLUXFL} $DBNROOT/bin/dbn_alert MODEL GFS_SGB_GB2_WIDX $job $COMOUT/${FLUXFLIDX} fi - fi - + fi # process satellite look alike separately so that master pgb gets out in time # set outtyp to 2 because master post already generates gfs io files @@ -487,7 +501,7 @@ do cp ${SPECIALFL0p25}.f${fhr}.grib2 $COMOUT/${SPECIALFL0p25}.f${fhr}.grib2 if [ $SENDDBN = YES ]; then $DBNROOT/bin/dbn_alert MODEL GFS_GTG_GB2 $job $COMOUT/${SPECIALFL}f$fhr - $DBNROOT/bin/dbn_alert MODEL GFS_GTG_0p25_GB2 $job $COMOUT/${SPECIALFL0p25}.f${fhr}.grib2 + $DBNROOT/bin/dbn_alert MODEL GFS_GTG_0P25_GB2 $job $COMOUT/${SPECIALFL0p25}.f${fhr}.grib2 fi fi else diff --git a/sorc/ncep_post.fd/INITPOST_GFS_NETCDF.f b/sorc/ncep_post.fd/INITPOST_GFS_NETCDF.f new file mode 100644 index 000000000..f1d6add07 --- /dev/null +++ b/sorc/ncep_post.fd/INITPOST_GFS_NETCDF.f @@ -0,0 +1,2691 @@ + SUBROUTINE INITPOST_GFS_NETCDF(ncid3d) + +!$$$ SUBPROGRAM DOCUMENTATION BLOCK +! . . . +! SUBPROGRAM: INITPOST_NETCDF INITIALIZE POST FOR RUN +! PRGRMMR: Hui-Ya Chuang DATE: 2016-03-04 +! +! ABSTRACT: THIS ROUTINE INITIALIZES CONSTANTS AND +! VARIABLES AT THE START OF GFS MODEL OR POST +! PROCESSOR RUN. +! +! REVISION HISTORY +! 2017-08-11 H Chuang start from INITPOST_GFS_NEMS_MPIIO.f +! +! USAGE: CALL INITPOST_NETCDF +! INPUT ARGUMENT LIST: +! NONE +! +! OUTPUT ARGUMENT LIST: +! NONE +! +! OUTPUT FILES: +! NONE +! +! SUBPROGRAMS CALLED: +! UTILITIES: +! NONE +! LIBRARY: +! COMMON - CTLBLK +! LOOKUP +! SOILDEPTH +! +! +! ATTRIBUTES: +! LANGUAGE: FORTRAN +! MACHINE : CRAY C-90 +!$$$ + use netcdf + use vrbls4d, only: dust, SALT, SUSO, SOOT, WASO, PP25, PP10 + use vrbls3d, only: t, q, uh, vh, 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, unknown, vdiffzacce, zgdrag,cnvctummixing, & + vdiffmacce, mgdrag, cnvctvmmixing, ncnvctcfrac, cnvctumflx, cnvctdmflx, & + cnvctzgdrag, sconvmois, cnvctmgdrag, cnvctdetmflx, duwt, duem, dusd, dudp, & + wh, qqg, 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, & + cfrach, cfracl, cfracm, avgcfrach, qshltr, avgcfracl, avgcfracm, cnvcfr, & + islope, cmc, grnflx, vegfrc, acfrcv, ncfrcv, acfrst, ncfrst, ssroff, & + bgroff, rlwin, rlwtoa, cldwork, alwin, alwout, alwtoa, rswin, rswinc, & + rswout, aswin, auvbin, auvbinc, aswout, aswtoa, sfcshx, sfclhx, subshx, & + snopcx, sfcux, sfcvx, sfcuxi, sfcvxi, sfcuvx, gtaux, gtauy, potevp, u10, v10, smstav, & + smstot, ivgtyp, isltyp, sfcevp, sfcexc, acsnow, acsnom, sst, thz0, qz0, & + 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,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 + use physcons_post, only: grav => con_g, fv => con_fvirt, rgas => con_rd, & + eps => con_eps, epsm1 => con_epsm1 + use params_mod, only: erad, dtr, tfrz, h1, d608, rd, p1000, capa,pi + use lookup_mod, only: thl, plq, ptbl, ttbl, rdq, rdth, rdp, rdthe, pl, qs0, sqs, sthe, & + ttblq, rdpq, rdtheq, stheq, the0q, the0 + use ctlblk_mod, only: me, mpi_comm_comp, icnt, idsp, jsta, jend, ihrst, idat, sdat, ifhr, & + ifmin, filename, tprec, tclod, trdlw, trdsw, tsrfc, tmaxmin, td3d, restrt, sdat, & + jend_m, imin, imp_physics, dt, spval, pdtop, pt, qmin, nbin_du, nphs, dtq2, ardlw,& + ardsw, asrfc, avrain, avcnvc, theat, gdsdegr, spl, lsm, alsl, im, jm, im_jm, lm, & + jsta_2l, jend_2u, nsoil, lp1, icu_physics, ivegsrc, novegtype, nbin_ss, nbin_bc, & + nbin_oc, nbin_su, gocart_on, pt_tbl, hyb_sigp, filenameFlux, fileNameAER + use gridspec_mod, only: maptype, gridtype, latstart, latlast, lonstart, lonlast, cenlon, & + dxval, dyval, truelat2, truelat1, psmapf, cenlat,lonstartv, lonlastv, cenlonv, & + latstartv, latlastv, cenlatv,latstart_r,latlast_r,lonstart_r,lonlast_r + use rqstfld_mod, only: igds, avbl, iq, is +!- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + implicit none +! +! type(nemsio_gfile) :: nfile,ffile,rfile + integer,parameter :: nvar2d=48 +! character(nemsio_charkind) :: name2d(nvar2d) + integer :: nvar3d, numDims +! character(nemsio_charkind), allocatable :: name3din(:), name3dout(:) +! character(nemsio_charkind) :: varname,levtype +! +! INCLUDE/SET PARAMETERS. +! + INCLUDE "mpif.h" + +! integer,parameter:: MAXPTS=1000000 ! max im*jm points +! +! real,parameter:: con_g =9.80665e+0! gravity +! real,parameter:: con_rv =4.6150e+2 ! gas constant H2O +! real,parameter:: con_rd =2.8705e+2 ! gas constant air +! real,parameter:: con_fvirt =con_rv/con_rd-1. +! real,parameter:: con_eps =con_rd/con_rv +! real,parameter:: con_epsm1 =con_rd/con_rv-1 +! +! real,external::FPVSNEW +! This version of INITPOST shows how to initialize, open, read from, and +! close a NetCDF dataset. In order to change it to read an internal (binary) +! dataset, do a global replacement of _ncd_ with _int_. + + real, parameter :: gravi = 1.0/grav + character(len=20) :: VarName, VcoordName + integer :: Status, fldsize, fldst, recn, recn_vvel + character startdate*19,SysDepInfo*80,cgar*1 + character startdate2(19)*4 +! +! NOTE: SOME INTEGER VARIABLES ARE READ INTO DUMMY ( A REAL ). THIS IS OK +! AS LONG AS REALS AND INTEGERS ARE THE SAME SIZE. +! +! 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 = .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 + CHARACTER*4 RESTHR + CHARACTER FNAME*255,ENVAR*50 + INTEGER IDATE(8),JDATE(8),JPDS(200),JGDS(200),KPDS(200),KGDS(200) +! LOGICAL*1 LB(IM,JM) +! +! INCLUDE COMMON BLOCKS. +! +! DECLARE VARIABLES. +! +! REAL fhour + integer nfhour ! forecast hour from nems io file + integer fhzero !bucket + real dtp !physics time step + REAL RINC(5) + + REAL DUMMY(IM,JM), DUMMY2(IM,JM), FI(IM,JM,2) +!jw + integer ii,jj,js,je,iyear,imn,iday,itmp,ioutcount,istatus, & + I,J,L,ll,k,kf,irtn,igdout,n,Index,nframe, & + nframed2,iunitd3d,ierr,idum,iret,nrec,idrt + integer ncid3d,ncid2d,varid,nhcas + real TSTART,TLMH,TSPH,ES,FACT,soilayert,soilayerb,zhour,dum, & + tvll,pmll,tv, tx1, tx2 + real, external :: fpvsnew + + character*20,allocatable :: recname(:) + integer, allocatable :: reclev(:), kmsk(:,:) + real, allocatable :: glat1d(:), glon1d(:), qstl(:) + real, allocatable :: wrk1(:,:), wrk2(:,:) + real, allocatable :: p2d(:,:), t2d(:,:), q2d(:,:), & + qs2d(:,:), cw2d(:,:), cfr2d(:,:) + real(kind=4),allocatable :: vcoord4(:,:,:) + real, dimension(lm+1) :: ak5, bk5 + real*8, allocatable :: pm2d(:,:), pi2d(:,:) + real, allocatable :: tmp(:) + real :: buf(im,jsta_2l:jend_2u) + real :: buf3d(im,jsta_2l:jend_2u,lm) + +! real buf(im,jsta_2l:jend_2u),bufsoil(im,nsoil,jsta_2l:jend_2u) & +! ,buf3d(im,jsta_2l:jend_2u,lm),buf3d2(im,lp1,jsta_2l:jend_2u) + + real LAT + integer isa, jsa, latghf, jtem, idvc, idsl, nvcoord, ip1, nn, npass + + integer, parameter :: npass2=5, npass3=30 + real, parameter :: third=1.0/3.0 + INTEGER, DIMENSION(2) :: ij4min, ij4max + REAL :: omgmin, omgmax + real, allocatable :: d2d(:,:), u2d(:,:), v2d(:,:), omga2d(:,:) + REAL, ALLOCATABLE :: ps2d(:,:),psx2d(:,:),psy2d(:,:) + real, allocatable :: div3d(:,:,:) + real(kind=4),allocatable :: vcrd(:,:) + real :: dum_const + +!*********************************************************************** +! START INIT HERE. +! + WRITE(6,*)'INITPOST: ENTER INITPOST_GFS_NETCDF' + WRITE(6,*)'me=',me, & + 'jsta_2l=',jsta_2l,'jend_2u=', & + jend_2u,'im=',im +! + isa = im / 2 + jsa = (jsta+jend) / 2 + +!$omp parallel do private(i,j) + do j = jsta_2l, jend_2u + do i=1,im + buf(i,j) = spval + enddo + enddo + + Status=nf90_get_att(ncid3d,nf90_global,'ak',ak5) + if(Status/=0)then + print*,'ak not found; assigning missing value' + ak5=spval + else + if(me==0)print*,'ak5= ',ak5 + end if + Status=nf90_get_att(ncid3d,nf90_global,'idrt',idrt) + if(Status/=0)then + print*,'idrt not in netcdf file,reading grid' + Status=nf90_get_att(ncid3d,nf90_global,'grid',varcharval) + if(Status/=0)then + print*,'idrt and grid not in netcdf file, set default to latlon' + idrt=0 + MAPTYPE=0 + else + if(trim(varcharval)=='rotated_latlon')then + MAPTYPE=207 + idrt=207 + Status=nf90_get_att(ncid3d,nf90_global,'cen_lon',dum_const) + if(Status/=0)then + print*,'cen_lon not found; assigning missing value' + cenlon=spval + else + if(dum_const<0.)then + cenlon=nint((dum_const+360.)*gdsdegr) + else + cenlon=dum_const*gdsdegr + end if + end if + Status=nf90_get_att(ncid3d,nf90_global,'cen_lat',dum_const) + if(Status/=0)then + print*,'cen_lat not found; assigning missing value' + cenlat=spval + else + cenlat=dum_const*gdsdegr + end if + + Status=nf90_get_att(ncid3d,nf90_global,'lon1',dum_const) + if(Status/=0)then + print*,'lonstart_r not found; assigning missing value' + lonstart_r=spval + else + if(dum_const<0.)then + lonstart_r=nint((dum_const+360.)*gdsdegr) + else + lonstart_r=dum_const*gdsdegr + end if + end if + Status=nf90_get_att(ncid3d,nf90_global,'lat1',dum_const) + if(Status/=0)then + print*,'latstart_r not found; assigning missing value' + latstart_r=spval + else + latstart_r=dum_const*gdsdegr + end if + + Status=nf90_get_att(ncid3d,nf90_global,'lon2',dum_const) + if(Status/=0)then + print*,'lonlast_r not found; assigning missing value' + lonlast_r=spval + else + if(dum_const<0.)then + lonlast_r=nint((dum_const+360.)*gdsdegr) + else + lonlast_r=dum_const*gdsdegr + end if + end if + Status=nf90_get_att(ncid3d,nf90_global,'lat2',dum_const) + if(Status/=0)then + print*,'latlast_r not found; assigning missing value' + latlast_r=spval + else + latlast_r=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,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 if(trim(varcharval)=='gaussian')then + MAPTYPE=4 + idrt=4 + else ! setting default maptype + MAPTYPE=0 + idrt=0 + end if + end if !end reading grid + end if !end reading idrt + if(me==0)print*,'idrt MAPTYPE= ',idrt,MAPTYPE +! STEP 1. READ MODEL OUTPUT FILE +! +! +!*** +! +! LMH and LMV always = LM for sigma-type vert coord + +!$omp parallel do private(i,j) + do j = jsta_2l, jend_2u + do i = 1, im + LMV(i,j) = lm + LMH(i,j) = lm + end do + end do + +! HTM VTM all 1 for sigma-type vert coord + +!$omp parallel do private(i,j,l) + do l = 1, lm + do j = jsta_2l, jend_2u + do i = 1, im + HTM (i,j,l) = 1.0 + VTM (i,j,l) = 1.0 + end do + end do + end do + + Status=nf90_get_att(ncid3d,nf90_global,'nhcas',nhcas) + if(Status/=0)then + print*,'nhcas not in netcdf file, set default to nonhydro' + nhcas=0 + end if + if(me==0)print*,'nhcas= ',nhcas + if (nhcas == 0 ) then !non-hydrostatic case + nrec=15 + allocate (recname(nrec)) + recname=[character(len=20) :: 'ugrd','vgrd','spfh','tmp','o3mr', & + 'presnh','dzdt', 'clwmr','dpres', & + 'delz','icmr','rwmr', & + 'snmr','grle','cld_amt'] + else + nrec=8 + allocate (recname(nrec)) + recname=[character(len=20) :: 'ugrd','vgrd','tmp','spfh','o3mr', & + 'hypres', 'clwmr','dpres'] + endif + +! write(0,*)'nrec=',nrec + !allocate(recname(nrec),reclevtyp(nrec),reclev(nrec)) + allocate(glat1d(jm),glon1d(im)) + allocate(vcoord4(lm+1,3,2)) + +! hardwire idate for now +! idate=(/2017,08,07,00,0,0,0,0/) +! get cycle start time + Status=nf90_inq_varid(ncid3d,'time',varid) + if(Status/=0)then + print*,'time not in netcdf file, stopping' + STOP 1 + else + Status=nf90_get_att(ncid3d,varid,'units',varcharval) + if(Status/=0)then + print*,'time unit not available' + else + print*,'time unit read from netcdf file= ',varcharval +! assume use hours as unit +! idate_loc=index(varcharval,'since')+6 + read(varcharval,101)idate(1),idate(2),idate(3),idate(4),idate(5) + end if +! Status=nf90_inquire_dimension(ncid3d,varid,len=ntimes) +! allocate(fhours(ntimes)) +! status = nf90_inq_varid(ncid3d,varid,fhours) +! Status=nf90_get_var(ncid3d,varid,nfhour,start=(/1/), & +! count=(/1/)) +! if(Status/=0)then +! print*,'forecast hour not in netcdf file, stopping' +! STOP 1 +! end if + end if + 101 format(T13,i4,1x,i2,1x,i2,1x,i2,1x,i2) + print*,'idate= ',idate(1:5) +! get longitude + Status=nf90_inq_varid(ncid3d,'grid_xt',varid) + Status=nf90_inquire_variable(ncid3d,varid,ndims = numDims) + if(debugprint)print*,'number of dim for gdlon ',numDims + if(numDims==1)then + Status=nf90_get_var(ncid3d,varid,glon1d) + do j=jsta,jend + do i=1,im + gdlon(i,j) = real(glon1d(i),kind=4) + end do + end do + lonstart = nint(glon1d(1)*gdsdegr) + lonlast = nint(glon1d(im)*gdsdegr) + else if(numDims==2)then + Status=nf90_get_var(ncid3d,varid,dummy) + if(maxval(abs(dummy))<2.0*pi)convert_rad_to_deg=.true. + if(convert_rad_to_deg)then + do j=jsta,jend + do i=1,im + gdlon(i,j) = real(dummy(i,j),kind=4)*180./pi + end do + end do + else + do j=jsta,jend + do i=1,im + gdlon(i,j) = real(dummy(i,j),kind=4) + end do + end do + end if + if(convert_rad_to_deg)then + lonstart = nint(dummy(1,1)*gdsdegr)*180./pi + lonlast = nint(dummy(im,jm)*gdsdegr)*180./pi + else + 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 + Status=nf90_inq_varid(ncid3d,'grid_yt',varid) + Status=nf90_inquire_variable(ncid3d,varid,ndims = numDims) + if(debugprint)print*,'number of dim for gdlat ',numDims + if(numDims==1)then + Status=nf90_get_var(ncid3d,varid,glat1d) + do j=jsta,jend + do i=1,im + gdlat(i,j) = real(glat1d(j),kind=4) + end do + end do + latstart = nint(glat1d(1)*gdsdegr) + latlast = nint(glat1d(jm)*gdsdegr) + else if(numDims==2)then + Status=nf90_get_var(ncid3d,varid,dummy) + if(maxval(abs(dummy))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/abs(buf3d(i,j,l)) + else + pmid(i,j,l)=spval + end if +! 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 + enddo + call read_netcdf_3d_scatter(me,ncid3d,1,im,jm,jsta,jsta_2l & + ,jend_2u,MPI_COMM_COMP,icnt,idsp,spval,recname(11) & + ,lm,qqi(1,jsta_2l,1)) + call read_netcdf_3d_scatter(me,ncid3d,1,im,jm,jsta,jsta_2l & + ,jend_2u,MPI_COMM_COMP,icnt,idsp,spval,recname(12) & + ,lm,qqr(1,jsta_2l,1)) + call read_netcdf_3d_scatter(me,ncid3d,1,im,jm,jsta,jsta_2l & + ,jend_2u,MPI_COMM_COMP,icnt,idsp,spval,recname(13) & + ,lm,qqs(1,jsta_2l,1)) + call read_netcdf_3d_scatter(me,ncid3d,1,im,jm,jsta,jsta_2l & + ,jend_2u,MPI_COMM_COMP,icnt,idsp,spval,recname(14) & + ,lm,qqg(1,jsta_2l,1)) + call read_netcdf_3d_scatter(me,ncid3d,1,im,jm,jsta,jsta_2l & + ,jend_2u,MPI_COMM_COMP,icnt,idsp,spval,recname(15) & + ,lm,cfr(1,jsta_2l,1)) +! calculate CWM from FV3 output + do l=1,lm + do j=jsta,jend + do i=1,im + cwm(i,j,l)=qqg(i,j,l)+qqs(i,j,l)+qqr(i,j,l)+qqi(i,j,l)+qqw(i,j,l) + enddo + enddo + if(debugprint)print*,'sample l,t,q,u,v,w,pmid= ',isa,jsa,l & + ,t(isa,jsa,l),q(isa,jsa,l),uh(isa,jsa,l),vh(isa,jsa,l) & + ,wh(isa,jsa,l),pmid(isa,jsa,l) + 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 & + ,jend_2u,MPI_COMM_COMP,icnt,idsp,spval,VarName & + ,pint(1,jsta_2l,lp1)) + do j=jsta,jend + do i=1,im +! if(pint(i,j,lp1)>1.0E6 .or. pint(1,jsta_2l,lp1)<50000.) & +! print*,'bad psfc ',i,j,pint(i,j,lp1) + end do + end do + if(debugprint)print*,'sample ',VarName,' =',pint(isa,jsa,lp1) + + pt = ak5(1) + + do j=jsta,jend + do i=1,im + pint(i,j,1)= pt + end do + end do + + 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) + enddo + enddo + if (me == 0) print*,'sample model pint,pmid' ,ii,jj,l & + ,pint(ii,jj,l),pmid(ii,jj,l) + end do + +! do l=lm,1,-1 +! do j=jsta,jend +! do i=1,im +! if(pint(i,j,l+1)/=spval .and. dpres(i,j,l)/=spval)then +! pint(i,j,l)=pint(i,j,l+1)-dpres(i,j,l) +! else +! pint(i,j,l)=spval +! end if +! end do +! end do +! print*,'sample pint= ',isa,jsa,l,pint(isa,jsa,l) +! 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 & + ,zint(1,jsta_2l,lp1)) + if(debugprint)print*,'sample ',VarName,' =',zint(isa,jsa,lp1) + do j=jsta,jend + do i=1,im + if (zint(i,j,lp1) /= spval) then + fis(i,j) = zint(i,j,lp1) * grav + else + fis(i,j) = spval + endif + enddo + enddo + + do l=lm,1,-1 + do j=jsta,jend + do i=1,im + if(zint(i,j,l+1)/=spval .and. buf3d(i,j,l)/=spval)then +!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 + end if + end do + end do + print*,'sample zint= ',isa,jsa,l,zint(isa,jsa,l) + end do + + do l=lp1,1,-1 + do j=jsta,jend + do i=1,im + alpint(i,j,l)=log(pint(i,j,l)) + end do + end do + end do + + do l=lm,1,-1 + do j=jsta,jend + do i=1,im + if(zint(i,j,l+1)/=spval .and. zint(i,j,l)/=spval & + .and. pmid(i,j,l)/=spval)then + zmid(i,j,l)=zint(i,j,l+1)+(zint(i,j,l)-zint(i,j,l+1))* & + (log(pmid(i,j,l))-alpint(i,j,l+1))/ & + (alpint(i,j,l)-alpint(i,j,l+1)) + if(zmid(i,j,l)>1.0E6)print*,'bad Hmid ',i,j,l,zmid(i,j,l) + else + zmid(i,j,l)=spval + endif + end do + end do + end do + + + pt = ak5(1) + +! else +! do l=2,lm +!!$omp parallel do private(i,j) +! do j=jsta,jend +! do i=1,im +! pint(i,j,l) = pint(i,j,l-1) + dpres(i,j,l-1) +! enddo +! enddo +! if (me == 0) print*,'sample pint,pmid' ,ii,jj,l,pint(ii,jj,l),pmid(ii,jj,l) +! end do +! endif +! + + deallocate (vcoord4) +!+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + +! + +! done with 3d file, close it for now + Status=nf90_close(ncid3d) + deallocate(recname) + +! open flux file + Status = nf90_open(trim(fileNameFlux),NF90_NOWRITE, ncid2d) + + if ( Status /= 0 ) then + print*,'error opening ',fileNameFlux, ' Status = ', Status + print*,'skip reading of flux file' + endif + +! IVEGSRC=1 for IGBP, 0 for USGS, 2 for UMD + VarName='IVEGSRC' + Status=nf90_get_att(ncid2d,nf90_global,'IVEGSRC',IVEGSRC) + if (Status /= 0) then + print*,VarName,' not found-Assigned 1 for IGBP as default' + IVEGSRC=1 + end if + if (me == 0) print*,'IVEGSRC= ',IVEGSRC + +! set novegtype based on vegetation classification + if(ivegsrc==2)then + novegtype=13 + else if(ivegsrc==1)then + novegtype=20 + else if(ivegsrc==0)then + novegtype=24 + end if + if (me == 0) print*,'novegtype= ',novegtype + + Status=nf90_get_att(ncid2d,nf90_global,'imp_physics',imp_physics) + if (Status /= 0) then + print*,VarName,' not found-Assigned 11 GFDL as default' + imp_physics=11 + end if + if (me == 0) print*,'MP_PHYSICS= ',imp_physics +! + Status=nf90_get_att(ncid2d,nf90_global,'fhzero',fhzero) + if (Status /= 0) then + print*,VarName,' not found-Assigned 3 hours as default' + fhzero=3 + end if + if (me == 0) print*,'fhzero= ',fhzero +! + Status=nf90_get_att(ncid2d,nf90_global,'dtp',dtp) + if (Status /= 0) then + print*,VarName,' not found-Assigned 90s as default' + dtp=90 + end if + if (me == 0) print*,'dtp= ',dtp +! Initializes constants for Ferrier microphysics + if(imp_physics==5 .or. imp_physics==85 .or. imp_physics==95) then + CALL MICROINIT(imp_physics) + end if + +! Chuang: zhour is when GFS empties bucket last so using this +! to compute buket will result in changing bucket with forecast time. +! set default bucket for now + +! call nemsio_getheadvar(ffile,'zhour',zhour,iret=iret) +! if(iret == 0) then +! tprec = 1.0*ifhr-zhour +! tclod = tprec +! trdlw = tprec +! trdsw = tprec +! tsrfc = tprec +! tmaxmin = tprec +! td3d = tprec +! print*,'tprec from flux file header= ',tprec +! else +! print*,'Error reading accumulation bucket from flux file', & +! 'header - will try to read from env variable FHZER' +! CALL GETENV('FHZER',ENVAR) +! read(ENVAR, '(I2)')idum +! tprec = idum*1.0 +! tclod = tprec +! trdlw = tprec +! trdsw = tprec +! tsrfc = tprec +! tmaxmin = tprec +! td3d = tprec +! print*,'TPREC from FHZER= ',tprec +! end if + + + tprec = float(fhzero) + if(ifhr>240)tprec=12. + tclod = tprec + trdlw = tprec + trdsw = tprec + tsrfc = tprec + tmaxmin = tprec + td3d = tprec + print*,'tprec = ',tprec + + +! start reading 2d netcdf file +! surface pressure +! VarName='pressfc' +! call read_netcdf_2d_scatter(me,ncid2d,1,im,jm,jsta,jsta_2l & +! ,jend_2u,MPI_COMM_COMP,icnt,idsp,spval,VarName & +! ,pint(1,jsta_2l,lp1)) +! if(debugprint)print*,'sample ',VarName,' =',pint(isa,jsa,lp1) +! do l=lm,1,-1 +! do j=jsta,jend +! do i=1,im +! pint(i,j,l)=pint(i,j,l+1)-dpres(i,j,l) +! if(pint(i,j,l)>1.0E6)print*,'bad P ',i,j,l,pint(i,j,l) & +! ,pint(i,j,l+1),dpres(i,j,l) +! end do +! end do +! print*,'sample pint= ',isa,jsa,l,pint(isa,jsa,l) +! end do +! surface height from FV3 already multiplied by G +! VarName='orog' +! call read_netcdf_2d_scatter(me,ncid2d,1,im,jm,jsta,jsta_2l & +! ,jend_2u,MPI_COMM_COMP,icnt,idsp,spval,VarName,fis) +! if(debugprint)print*,'sample ',VarName,' =',fis(isa,jsa) +! do j=jsta,jend +! do i=1,im +! if (fis(i,j) /= spval) then +! zint(i,j,lp1) = fis(i,j) +! fis(i,j) = fis(i,j) * grav +! else +! zint(i,j,lp1) = spval +! fis(i,j) = spval +! endif +! enddo +! enddo + +! do l=lm,1,-1 +! 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) +! if(zint(i,j,l)>1.0E6)print*,'bad H ',i,j,l,zint(i,j,l) +! else +! zint(i,j,l)=spval +! end if +! end do +! end do +! print*,'sample zint= ',isa,jsa,l,zint(isa,jsa,l) +! end do + +! Per communication with Fanglin, P from model in not monotonic +! so compute P using ak and bk for now Sep. 2017 +! do l=lm,1,-1 +!!!$omp parallel do private(i,j) +! do j=jsta,jend +! do i=1,im +! pint(i,j,l) = ak5(lm+2-l) + bk5(lm+2-l)*pint(i,j,lp1) +! pmid(i,j,l) = 0.5*(pint(i,j,l)+pint(i,j,l+1)) ! for now - +! enddo +! enddo +! print*,'sample pint,pmid' & +! ,l,pint(isa,jsa,l),pmid(isa,jsa,l) +! enddo + +! allocate(wrk1(im,jsta:jend),wrk2(im,jsta:jend)) +! do j=jsta,jend +! do i=1,im +! pd(i,j) = spval ! GFS does not output PD +! pint(i,j,1) = PT +! alpint(i,j,lp1) = log(pint(i,j,lp1)) +! wrk1(i,j) = log(PMID(I,J,LM)) +! wrk2(i,j) = T(I,J,LM)*(Q(I,J,LM)*fv+1.0) +! FI(I,J,1) = FIS(I,J) & +! + wrk2(i,j)*rgas*(ALPINT(I,J,Lp1)-wrk1(i,j)) +! ZMID(I,J,LM) = FI(I,J,1) * gravi +! end do +! end do + +! SECOND, INTEGRATE HEIGHT HYDROSTATICLY, GFS integrate height on +! mid-layer + +! DO L=LM,2,-1 ! omit computing model top height +! ll = l - 1 +! do j = jsta, jend +! do i = 1, im +! alpint(i,j,l) = log(pint(i,j,l)) +! tvll = T(I,J,LL)*(Q(I,J,LL)*fv+1.0) +! pmll = log(PMID(I,J,LL)) + +! FI(I,J,2) = FI(I,J,1) + (0.5*rgas)*(wrk2(i,j)+tvll) & +! * (wrk1(i,j)-pmll) +! ZMID(I,J,LL) = FI(I,J,2) * gravi +! +! FACT = (ALPINT(I,J,L)-wrk1(i,j)) / (pmll-wrk1(i,j)) +! ZINT(I,J,L) = ZMID(I,J,L) +(ZMID(I,J,LL)-ZMID(I,J,L))*FACT +! FI(I,J,1) = FI(I,J,2) +! wrk1(i,J) = pmll +! wrk2(i,j) = tvll +! ENDDO +! ENDDO + +! print*,'L ZINT= ',l,zint(isa,jsa,l),ZMID(isa,jsa,l) +! ,'alpint=',ALPINT(ii,jj,l),'pmid=',LOG(PMID(Ii,Jj,L)), & +! 'pmid(l-1)=',LOG(PMID(Ii,Jj,L-1)),'zmd=',ZMID(Ii,Jj,L), & +! 'zmid(l-1)=',ZMID(Ii,Jj,L-1) +! ENDDO +! deallocate(wrk1,wrk2) + +! do l=lp1,2,-1 +! do j=jsta,jend +! do i=1,im +! alpint(i,j,l)=log(pint(i,j,l)) +! end do +! end do +! end do + +! do l=lm,2,-1 +! do j=jsta,jend +! do i=1,im +! zmid(i,j,l)=zint(i,j,l+1)+(zint(i,j,l)-zint(i,j,l+1))* & +! (log(pmid(i,j,l))-alpint(i,j,l+1))/ & +! (alpint(i,j,l)-alpint(i,j,l+1)) +! if(zmid(i,j,l)>1.0E6)print*,'bad Hmid ',i,j,l,zmid(i,j,l) +! end do +! end do +! end do + +! 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 & +! ,lm,REF_10CM(1,jsta_2l,1)) +! if(debugprint)print*,'sample ',VarName,'isa,jsa,l =' & +! ,REF_10CM(isa,jsa,l),isa,jsa,l +! enddo +!Set REF_10CM as missning since gfs doesn't ouput it + do l=1,lm + do j=jsta,jend + do i=1,im + REF_10CM(i,j,l)=spval + enddo + enddo + enddo + + VarName='land' + call read_netcdf_2d_scatter(me,ncid2d,1,im,jm,jsta,jsta_2l & + ,jend_2u,MPI_COMM_COMP,icnt,idsp,spval,VarName,sm) + if(debugprint)print*,'sample ',VarName,' =',sm(im/2,(jsta+jend)/2) + +!$omp parallel do private(i,j) + do j=jsta,jend + do i=1,im + if (sm(i,j) /= spval) sm(i,j) = 1.0 - sm(i,j) + enddo + enddo + +! sea ice mask + + VarName = 'icec' + call read_netcdf_2d_scatter(me,ncid2d,1,im,jm,jsta,jsta_2l & + ,jend_2u,MPI_COMM_COMP,icnt,idsp,spval,VarName,sice) + if(debugprint)print*,'sample ',VarName,' = ',sice(isa,jsa) + +! where(sice /=spval .and. sice >=1.0)sm=0.0 !sea ice has sea +! mask=0 +! GFS flux files have land points with non-zero sea ice, per Iredell, +! these +! points have sea ice changed to zero, i.e., trust land mask more than +! sea ice +! where(sm/=spval .and. sm==0.0)sice=0.0 !specify sea ice=0 at land + +!$omp parallel do private(i,j) + do j=jsta,jend + do i=1,im + if (sm(i,j) /= spval .and. sm(i,j) == 0.0) sice(i,j) = 0.0 + enddo + enddo + + +! PBL height using nemsio + VarName = 'hpbl' + call read_netcdf_2d_scatter(me,ncid2d,1,im,jm,jsta,jsta_2l & + ,jend_2u,MPI_COMM_COMP,icnt,idsp,spval,VarName,pblh) + if(debugprint)print*,'sample ',VarName,' = ',pblh(isa,jsa) + +! frictional velocity using nemsio + VarName='fricv' + call read_netcdf_2d_scatter(me,ncid2d,1,im,jm,jsta,jsta_2l & + ,jend_2u,MPI_COMM_COMP,icnt,idsp,spval,VarName,ustar) +! if(debugprint)print*,'sample ',VarName,' = ',ustar(isa,jsa) + +! roughness length using getgb + VarName='sfcr' + call read_netcdf_2d_scatter(me,ncid2d,1,im,jm,jsta,jsta_2l & + ,jend_2u,MPI_COMM_COMP,icnt,idsp,spval,VarName,z0) +! if(debugprint)print*,'sample ',VarName,' = ',z0(isa,jsa) + +! sfc exchange coeff + VarName='sfexc' + call read_netcdf_2d_scatter(me,ncid2d,1,im,jm,jsta,jsta_2l & + ,jend_2u,MPI_COMM_COMP,icnt,idsp,spval,VarName,SFCEXC) + +! aerodynamic conductance + VarName='acond' + call read_netcdf_2d_scatter(me,ncid2d,1,im,jm,jsta,jsta_2l & + ,jend_2u,MPI_COMM_COMP,icnt,idsp,spval,VarName,acond) + if(debugprint)print*,'sample ',VarName,' = ',acond(isa,jsa) +! mid day avg albedo + VarName='albdo_ave' + call read_netcdf_2d_scatter(me,ncid2d,1,im,jm,jsta,jsta_2l & + ,jend_2u,MPI_COMM_COMP,icnt,idsp,spval,VarName,avgalbedo) + if(debugprint)print*,'sample ',VarName,' = ',avgalbedo(isa,jsa) + do j=jsta,jend + do i=1,im + if (avgalbedo(i,j) /= spval) avgalbedo(i,j) = avgalbedo(i,j) * 0.01 + enddo + enddo + +! surface potential T using getgb + VarName='tmpsfc' + call read_netcdf_2d_scatter(me,ncid2d,1,im,jm,jsta,jsta_2l & + ,jend_2u,MPI_COMM_COMP,icnt,idsp,spval,VarName,ths) + +! where(ths/=spval)ths=ths*(p1000/pint(:,:,lp1))**CAPA ! convert to THS + +!$omp parallel do private(i,j) + do j=jsta,jend + do i=1,im + if (ths(i,j) /= spval) then +! write(0,*)' i=',i,' j=',j,' ths=',ths(i,j),' pint=',pint(i,j,lp1) + ths(i,j) = ths(i,j) * (p1000/pint(i,j,lp1))**capa + endif + 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) + + +! GFS does not have time step and physics time step, make up ones since they +! are not really used anyway +! NPHS=1. +! DT=90. +! DTQ2 = DT * NPHS !MEB need to get physics DT + DTQ2 = DTP !MEB need to get physics DT + NPHS=1 + DT = DTQ2/NPHS !MEB need to get DT + TSPH = 3600./DT + +! convective precip in m per physics time step using getgb +! read 3 hour bucket + VarName='cpratb_ave' + call read_netcdf_2d_scatter(me,ncid2d,1,im,jm,jsta,jsta_2l & + ,jend_2u,MPI_COMM_COMP,icnt,idsp,spval,VarName,avgcprate) +! where(avgcprate /= spval)avgcprate=avgcprate*dtq2/1000. ! convert to m +!$omp parallel do private(i,j) + do j=jsta,jend + do i=1,im + if (avgcprate(i,j) /= spval) avgcprate(i,j) = avgcprate(i,j) * (dtq2*0.001) + enddo + enddo +! if(debugprint)print*,'sample ',VarName,' = ',avgcprate(isa,jsa) + +! print*,'maxval CPRATE: ', maxval(CPRATE) + +! read continuous bucket + VarName='cprat_ave' + call read_netcdf_2d_scatter(me,ncid2d,1,im,jm,jsta,jsta_2l & + ,jend_2u,MPI_COMM_COMP,icnt,idsp,spval,VarName,avgcprate_cont) +!$omp parallel do private(i,j) + do j=jsta,jend + do i=1,im + if (avgcprate_cont(i,j) /= spval) avgcprate_cont(i,j) = & + avgcprate_cont(i,j) * (dtq2*0.001) + enddo + enddo +! if(debugprint)print*,'sample ',VarName,' = ',avgcprate_cont(isa,jsa) + +! print*,'maxval CPRATE: ', maxval(CPRATE) + +! precip rate in m per physics time step using getgb + VarName='prateb_ave' + call read_netcdf_2d_scatter(me,ncid2d,1,im,jm,jsta,jsta_2l & + ,jend_2u,MPI_COMM_COMP,icnt,idsp,spval,VarName,avgprec) +!$omp parallel do private(i,j) + do j=jsta,jend + do i=1,im + if(avgprec(i,j) /= spval)avgprec(i,j)=avgprec(i,j)*(dtq2*0.001) + enddo + enddo + + if(debugprint)print*,'sample ',VarName,' = ',avgprec(isa,jsa) + +! prec = avgprec !set avg cprate to inst one to derive other fields + + VarName='prate_ave' + call read_netcdf_2d_scatter(me,ncid2d,1,im,jm,jsta,jsta_2l & + ,jend_2u,MPI_COMM_COMP,icnt,idsp,spval,VarName,avgprec_cont) +! where(avgprec /= spval)avgprec=avgprec*dtq2/1000. ! convert to m +!$omp parallel do private(i,j) + do j=jsta,jend + do i=1,im + if (avgprec_cont(i,j) /=spval)avgprec_cont(i,j)=avgprec_cont(i,j) & + * (dtq2*0.001) + enddo + enddo + + if(debugprint)print*,'sample ',VarName,' = ',avgprec_cont(isa,jsa) +! precip rate in m per physics time step + VarName='tprcp' + call read_netcdf_2d_scatter(me,ncid2d,1,im,jm,jsta,jsta_2l & + ,jend_2u,MPI_COMM_COMP,icnt,idsp,spval,VarName,prec) +!$omp parallel do private(i,j) + do j=jsta,jend + do i=1,im + if (prec(i,j) /= spval) prec(i,j)=prec(i,j)* (dtq2*0.001) & + * 1000. / dtp + enddo + enddo + +! convective precip rate in m per physics time step + VarName='cnvprcp' + call read_netcdf_2d_scatter(me,ncid2d,1,im,jm,jsta,jsta_2l & + ,jend_2u,MPI_COMM_COMP,icnt,idsp,spval,VarName,cprate) +!$omp parallel do private(i,j) + do j=jsta,jend + do i=1,im + 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) + +! 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 + VarName='snowc_ave' + call read_netcdf_2d_scatter(me,ncid2d,1,im,jm,jsta,jsta_2l & + ,jend_2u,MPI_COMM_COMP,icnt,idsp,spval,VarName,snoavg) +! 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 + +! snow depth in mm using nemsio + VarName='snod' + call read_netcdf_2d_scatter(me,ncid2d,1,im,jm,jsta,jsta_2l & + ,jend_2u,MPI_COMM_COMP,icnt,idsp,spval,VarName,si) +!$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 + TH10(i,j) = SPVAL ! GFS does not have 10 m theta + TH10(i,j) = SPVAL ! GFS does not have 10 m theta + Q10(i,j) = SPVAL ! GFS does not have 10 m humidity + ALBASE(i,j) = SPVAL ! GFS does not have snow free albedo + enddo + 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 & + ,jend_2u,MPI_COMM_COMP,icnt,idsp,spval,VarName,tshltr) + if(debugprint)print*,'sample ',VarName,' = ',tshltr(isa,jsa) + +! GFS does not have 2m pres, estimate it, also convert t to theta + Do j=jsta,jend + Do i=1,im + PSHLTR(I,J)=pint(I,J,lm+1)*EXP(-0.068283/tshltr(i,j)) + tshltr(i,j)= tshltr(i,j)*(p1000/PSHLTR(I,J))**CAPA ! convert to theta +! if (j == jm/2 .and. mod(i,50) == 0) +! + print*,'sample 2m T and P after scatter= ' +! + ,i,j,tshltr(i,j),pshltr(i,j) + end do + end do + +! 2m specific humidity using nemsio + VarName='spfh2m' + call read_netcdf_2d_scatter(me,ncid2d,1,im,jm,jsta,jsta_2l & + ,jend_2u,MPI_COMM_COMP,icnt,idsp,spval,VarName,qshltr) + if(debugprint)print*,'sample ',VarName,' = ',qshltr(isa,jsa) + +! mid day avg albedo in fraction using nemsio +! VarName='albdosfc' +! call read_netcdf_2d_scatter(me,ncid2d,1,im,jm,jsta,jsta_2l & +! ,jend_2u,MPI_COMM_COMP,icnt,idsp,spval,VarName,avgalbedo) +!! where(avgalbedo /= spval)avgalbedo=avgalbedo/100. ! convert to fraction +!!$omp parallel do private(i,j) +! do j=jsta,jend +! do i=1,im +! if (avgalbedo(i,j) /= spval) avgalbedo(i,j) = avgalbedo(i,j) * 0.01 +! enddo +! enddo +! if(debugprint)print*,'sample ',VarName,' = ',avgalbedo(isa,jsa) + +! time averaged column cloud fractionusing nemsio + VarName='tcdc_aveclm' + call read_netcdf_2d_scatter(me,ncid2d,1,im,jm,jsta,jsta_2l & + ,jend_2u,MPI_COMM_COMP,icnt,idsp,spval,VarName,avgtcdc) +! where(avgtcdc /= spval)avgtcdc=avgtcdc/100. ! convert to fraction +!$omp parallel do private(i,j) + do j=jsta,jend + do i=1,im + if (avgtcdc(i,j) /= spval) avgtcdc(i,j) = avgtcdc(i,j) * 0.01 + enddo + enddo + if(debugprint)print*,'sample ',VarName,' = ',avgtcdc(isa,jsa) + +! GFS probably does not use zenith angle +!$omp parallel do private(i,j) + do j=jsta_2l,jend_2u + do i=1,im + Czen(i,j) = spval + CZMEAN(i,j) = SPVAL + enddo + enddo + +! maximum snow albedo in fraction using nemsio + VarName='snoalb' + call read_netcdf_2d_scatter(me,ncid2d,1,im,jm,jsta,jsta_2l & + ,jend_2u,MPI_COMM_COMP,icnt,idsp,spval,VarName,mxsnal) +! where(mxsnal /= spval)mxsnal=mxsnal/100. ! convert to fraction +!$omp parallel do private(i,j) + do j=jsta,jend + do i=1,im + if (mxsnal(i,j) /= spval) mxsnal(i,j) = mxsnal(i,j) * 0.01 + enddo + enddo +! if(debugprint)print*,'sample ',VarName,' = ',mxsnal(isa,jsa) + +! GFS probably does not use sigt4, set it to sig*t^4 +!$omp parallel do private(i,j,tlmh) + Do j=jsta,jend + Do i=1,im + TLMH = T(I,J,LM) * T(I,J,LM) + Sigt4(i,j) = 5.67E-8 * TLMH * TLMH + End do + End do + +! TG is not used, skip it for now + +! GFS does not have inst cloud fraction for high, middle, and low cloud +!$omp parallel do private(i,j) + do j=jsta_2l,jend_2u + do i=1,im + cfrach(i,j) = spval + cfracl(i,j) = spval + cfracm(i,j) = spval + enddo + enddo + +! ave high cloud fraction using nemsio + VarName='tcdc_avehcl' + call read_netcdf_2d_scatter(me,ncid2d,1,im,jm,jsta,jsta_2l & + ,jend_2u,MPI_COMM_COMP,icnt,idsp,spval,VarName,avgcfrach) +! where(avgcfrach /= spval)avgcfrach=avgcfrach/100. ! convert to fraction +!$omp parallel do private(i,j) + do j=jsta,jend + do i=1,im + if (avgcfrach(i,j) /= spval) avgcfrach(i,j) = avgcfrach(i,j) * 0.01 + enddo + enddo + if(debugprint)print*,'sample ',VarName,' = ',avgcfrach(isa,jsa) + +! ave low cloud fraction using nemsio + VarName='tcdc_avelcl' + call read_netcdf_2d_scatter(me,ncid2d,1,im,jm,jsta,jsta_2l & + ,jend_2u,MPI_COMM_COMP,icnt,idsp,spval,VarName,avgcfracl) +! where(avgcfracl /= spval)avgcfracl=avgcfracl/100. ! convert to fraction +!$omp parallel do private(i,j) + do j=jsta,jend + do i=1,im + if (avgcfracl(i,j) /= spval) avgcfracl(i,j) = avgcfracl(i,j) * 0.01 + enddo + enddo + if(debugprint)print*,'sample ',VarName,' = ',avgcfracl(isa,jsa) + +! ave middle cloud fraction using nemsio + VarName='tcdc_avemcl' + call read_netcdf_2d_scatter(me,ncid2d,1,im,jm,jsta,jsta_2l & + ,jend_2u,MPI_COMM_COMP,icnt,idsp,spval,VarName,avgcfracm) +! where(avgcfracm /= spval)avgcfracm=avgcfracm/100. ! convert to fraction +!$omp parallel do private(i,j) + do j=jsta,jend + do i=1,im + if (avgcfracm(i,j) /= spval) avgcfracm(i,j) = avgcfracm(i,j) * 0.01 + enddo + enddo + if(debugprint)print*,'sample ',VarName,' = ',avgcfracm(isa,jsa) + +! inst convective cloud fraction using nemsio + VarName='tcdccnvcl' + call read_netcdf_2d_scatter(me,ncid2d,1,im,jm,jsta,jsta_2l & + ,jend_2u,MPI_COMM_COMP,icnt,idsp,spval,VarName,cnvcfr) +! where(cnvcfr /= spval)cnvcfr=cnvcfr/100. ! convert to fraction +!$omp parallel do private(i,j) + do j=jsta,jend + do i=1,im + if (cnvcfr(i,j) /= spval) cnvcfr (i,j)= cnvcfr(i,j) * 0.01 + enddo + enddo +! if(debugprint)print*,'sample ',VarName,' = ',cnvcfr(isa,jsa) + +! slope type using nemsio + VarName='sltyp' + call read_netcdf_2d_scatter(me,ncid2d,1,im,jm,jsta,jsta_2l & + ,jend_2u,MPI_COMM_COMP,icnt,idsp,spval,VarName,buf) +!$omp parallel do private(i,j) + do j = jsta_2l, jend_2u + do i=1,im + if (buf(i,j) < spval) then + islope(i,j) = nint(buf(i,j)) + else + islope(i,j) = 0 + endif + enddo + enddo +! if(debugprint)print*,'sample ',VarName,' = ',islope(isa,jsa) + +! plant canopy sfc wtr in m + VarName='cnwat' + call read_netcdf_2d_scatter(me,ncid2d,1,im,jm,jsta,jsta_2l & + ,jend_2u,MPI_COMM_COMP,icnt,idsp,spval,VarName,cmc) +!$omp parallel do private(i,j) + 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) + +!$omp parallel do private(i,j) + do j=jsta_2l,jend_2u + do i=1,im + grnflx(i,j) = spval ! GFS does not have inst ground heat flux + enddo + enddo + +! frozen precip fraction using nemsio + VarName='cpofp' + call read_netcdf_2d_scatter(me,ncid2d,1,im,jm,jsta,jsta_2l & + ,jend_2u,MPI_COMM_COMP,icnt,idsp,spval,VarName,sr) + +! vegetation fraction in fraction. using nemsio + VarName='veg' + call read_netcdf_2d_scatter(me,ncid2d,1,im,jm,jsta,jsta_2l & + ,jend_2u,MPI_COMM_COMP,icnt,idsp,spval,VarName,vegfrc) +!$omp parallel do private(i,j) + do j=jsta,jend + do i=1,im + if (vegfrc(i,j) /= spval) then + vegfrc(i,j) = vegfrc(i,j) * 0.01 + else + vegfrc(i,j) = 0.0 + 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 + + SLDPTH(1) = 0.10 + SLDPTH(2) = 0.3 + SLDPTH(3) = 0.6 + SLDPTH(4) = 1.0 + +! liquid volumetric soil mpisture in fraction using nemsio + 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='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='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='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) + do j=jsta,jend + do i=1,im + acfrcv(i,j) = spval ! GFS does not output time averaged convective and strat cloud fraction, set acfrcv to spval, ncfrcv to 1 + ncfrcv(i,j) = 1.0 + acfrst(i,j) = spval ! GFS does not output time averaged cloud fraction, set acfrst to spval, ncfrst to 1 + ncfrst(i,j) = 1.0 + bgroff(i,j) = spval ! GFS does not have UNDERGROUND RUNOFF + rlwtoa(i,j) = spval ! GFS does not have inst model top outgoing longwave + enddo + enddo +! trdlw(i,j) = 6.0 + ardlw = 1.0 ! GFS incoming sfc longwave has been averaged over 6 hr bucket, set ARDLW to 1 + +! time averaged incoming sfc longwave + VarName='dlwrf_ave' + call read_netcdf_2d_scatter(me,ncid2d,1,im,jm,jsta,jsta_2l & + ,jend_2u,MPI_COMM_COMP,icnt,idsp,spval,VarName,alwin) + +! inst incoming sfc longwave + VarName='dlwrf' + call read_netcdf_2d_scatter(me,ncid2d,1,im,jm,jsta,jsta_2l & + ,jend_2u,MPI_COMM_COMP,icnt,idsp,spval,VarName,rlwin) + +! time averaged outgoing sfc longwave + VarName='ulwrf_ave' + call read_netcdf_2d_scatter(me,ncid2d,1,im,jm,jsta,jsta_2l & + ,jend_2u,MPI_COMM_COMP,icnt,idsp,spval,VarName,alwout) +! inst outgoing sfc longwave + VarName='ulwrf' + call read_netcdf_2d_scatter(me,ncid2d,1,im,jm,jsta,jsta_2l & + ,jend_2u,MPI_COMM_COMP,icnt,idsp,spval,VarName,radot) + +! where(alwout /= spval) alwout=-alwout ! CLDRAD puts a minus sign before gribbing +!$omp parallel do private(i,j) + do j=jsta,jend + do i=1,im + if (alwout(i,j) /= spval) alwout(i,j) = -alwout(i,j) + enddo + enddo +! if(debugprint)print*,'sample l',VarName,' = ',1,alwout(isa,jsa) + +! time averaged outgoing model top longwave using gfsio + VarName='ulwrf_avetoa' + call read_netcdf_2d_scatter(me,ncid2d,1,im,jm,jsta,jsta_2l & + ,jend_2u,MPI_COMM_COMP,icnt,idsp,spval,VarName,alwtoa) +! if(debugprint)print*,'sample l',VarName,' = ',1,alwtoa(isa,jsa) + +! GFS incoming sfc longwave has been averaged, set ARDLW to 1 + ardsw=1.0 +! trdsw=6.0 + +! time averaged incoming sfc shortwave + VarName='dswrf_ave' + call read_netcdf_2d_scatter(me,ncid2d,1,im,jm,jsta,jsta_2l & + ,jend_2u,MPI_COMM_COMP,icnt,idsp,spval,VarName,aswin) +! if(debugprint)print*,'sample l',VarName,' = ',1,aswin(isa,jsa) + +! inst incoming sfc shortwave + VarName='dswrf' + call read_netcdf_2d_scatter(me,ncid2d,1,im,jm,jsta,jsta_2l & + ,jend_2u,MPI_COMM_COMP,icnt,idsp,spval,VarName,rswin) + +! inst incoming clear sky sfc shortwave + VarName='csdlf' + call read_netcdf_2d_scatter(me,ncid2d,1,im,jm,jsta,jsta_2l & + ,jend_2u,MPI_COMM_COMP,icnt,idsp,spval,VarName,rswinc) + +! time averaged incoming sfc uv-b using getgb + VarName='duvb_ave' + call read_netcdf_2d_scatter(me,ncid2d,1,im,jm,jsta,jsta_2l & + ,jend_2u,MPI_COMM_COMP,icnt,idsp,spval,VarName,auvbin) +! if(debugprint)print*,'sample l',VarName,' = ',1,auvbin(isa,jsa) + +! time averaged incoming sfc clear sky uv-b using getgb + VarName='cduvb_ave' + call read_netcdf_2d_scatter(me,ncid2d,1,im,jm,jsta,jsta_2l & + ,jend_2u,MPI_COMM_COMP,icnt,idsp,spval,VarName,auvbinc) +! if(debugprint)print*,'sample l',VarName,' = ',1,auvbinc(isa,jsa) + +! time averaged outgoing sfc shortwave using gfsio + VarName='uswrf_ave' + call read_netcdf_2d_scatter(me,ncid2d,1,im,jm,jsta,jsta_2l & + ,jend_2u,MPI_COMM_COMP,icnt,idsp,spval,VarName,aswout) +! where(aswout /= spval) aswout=-aswout ! CLDRAD puts a minus sign before gribbing +!$omp parallel do private(i,j) + do j=jsta,jend + do i=1,im + if (aswout(i,j) /= spval) aswout(i,j) = -aswout(i,j) + enddo + enddo +! if(debugprint)print*,'sample l',VarName,' = ',1,aswout(isa,jsa) + +! inst outgoing sfc shortwave using gfsio + VarName='uswrf' + call read_netcdf_2d_scatter(me,ncid2d,1,im,jm,jsta,jsta_2l & + ,jend_2u,MPI_COMM_COMP,icnt,idsp,spval,VarName,rswout) + +! time averaged model top incoming shortwave + VarName='dswrf_avetoa' + call read_netcdf_2d_scatter(me,ncid2d,1,im,jm,jsta,jsta_2l & + ,jend_2u,MPI_COMM_COMP,icnt,idsp,spval,VarName,aswintoa) +! if(debugprint)print*,'sample l',VarName,' = ',1,aswintoa(isa,jsa) + +! time averaged model top outgoing shortwave + VarName='uswrf_avetoa' + call read_netcdf_2d_scatter(me,ncid2d,1,im,jm,jsta,jsta_2l & + ,jend_2u,MPI_COMM_COMP,icnt,idsp,spval,VarName,aswtoa) +! if(debugprint)print*,'sample l',VarName,' = ',1,aswtoa(isa,jsa) + +! time averaged surface sensible heat flux, multiplied by -1 because wrf model flux +! has reversed sign convention using gfsio + VarName='shtfl_ave' + call read_netcdf_2d_scatter(me,ncid2d,1,im,jm,jsta,jsta_2l & + ,jend_2u,MPI_COMM_COMP,icnt,idsp,spval,VarName,sfcshx) +! where (sfcshx /= spval)sfcshx=-sfcshx +!$omp parallel do private(i,j) + do j=jsta,jend + do i=1,im + if (sfcshx(i,j) /= spval) sfcshx(i,j) = -sfcshx(i,j) + enddo + enddo +! if(debugprint)print*,'sample l',VarName,' = ',1,sfcshx(isa,jsa) + +! inst surface sensible heat flux + VarName='shtfl' + call read_netcdf_2d_scatter(me,ncid2d,1,im,jm,jsta,jsta_2l & + ,jend_2u,MPI_COMM_COMP,icnt,idsp,spval,VarName,twbs) +!$omp parallel do private(i,j) + do j=jsta,jend + do i=1,im + if (twbs(i,j) /= spval) twbs(i,j) = -twbs(i,j) + enddo + enddo + +! GFS surface flux has been averaged, set ASRFC to 1 + asrfc=1.0 +! tsrfc=6.0 + +! time averaged surface latent heat flux, multiplied by -1 because wrf model flux +! has reversed sign vonvention using gfsio + VarName='lhtfl_ave' + call read_netcdf_2d_scatter(me,ncid2d,1,im,jm,jsta,jsta_2l & + ,jend_2u,MPI_COMM_COMP,icnt,idsp,spval,VarName,sfclhx) +! where (sfclhx /= spval)sfclhx=-sfclhx +!$omp parallel do private(i,j) + do j=jsta,jend + do i=1,im + if (sfclhx(i,j) /= spval) sfclhx(i,j) = -sfclhx(i,j) + enddo + enddo +! if(debugprint)print*,'sample l',VarName,' = ',1,sfclhx(isa,jsa) + +! inst surface latent heat flux + VarName='lhtfl' + call read_netcdf_2d_scatter(me,ncid2d,1,im,jm,jsta,jsta_2l & + ,jend_2u,MPI_COMM_COMP,icnt,idsp,spval,VarName,qwbs) +!$omp parallel do private(i,j) + do j=jsta,jend + do i=1,im + if (qwbs(i,j) /= spval) qwbs(i,j) = -qwbs(i,j) + enddo + enddo + +! time averaged ground heat flux using nemsio + 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' + call read_netcdf_2d_scatter(me,ncid2d,1,im,jm,jsta,jsta_2l & + ,jend_2u,MPI_COMM_COMP,icnt,idsp,spval,VarName,sfcux) +! if(debugprint)print*,'sample l',VarName,' = ',1,sfcux(isa,jsa) + +! time averaged meridional momentum flux using nemsio + VarName='vflx_ave' + call read_netcdf_2d_scatter(me,ncid2d,1,im,jm,jsta,jsta_2l & + ,jend_2u,MPI_COMM_COMP,icnt,idsp,spval,VarName,sfcvx) +! if(debugprint)print*,'sample l',VarName,' = ',1,sfcvx(isa,jsa) + +! dong read in inst surface flux +! inst zonal momentum flux using gfsio +! VarName='uflx' +! call read_netcdf_2d_scatter(me,ncid2d,1,im,jm,jsta,jsta_2l & +! ,jend_2u,MPI_COMM_COMP,icnt,idsp,spval,VarName,sfcuxi) +! if(debugprint)print*,'sample l',VarName,' = ',1,sfcuxi(isa,jsa) + +! inst meridional momentum flux using nemsio +! VarName='vflx' +! call read_netcdf_2d_scatter(me,ncid2d,1,im,jm,jsta,jsta_2l & +! ,jend_2u,MPI_COMM_COMP,icnt,idsp,spval,VarName,sfcvxi) +! if(debugprint)print*,'sample l',VarName,' = ',1,sfcvxi(isa,jsa) + + +!$omp parallel do private(i,j) + do j=jsta_2l,jend_2u + do i=1,im + sfcuvx(i,j) = spval ! GFS does not use total momentum flux + enddo + enddo + +! time averaged zonal gravity wave stress using nemsio + VarName='u-gwd_ave' + call read_netcdf_2d_scatter(me,ncid2d,1,im,jm,jsta,jsta_2l & + ,jend_2u,MPI_COMM_COMP,icnt,idsp,spval,VarName,gtaux) +! if(debugprint)print*,'sample l',VarName,' = ',1,gtaux(isa,jsa) + +! time averaged meridional gravity wave stress using getgb + VarName='v-gwd_ave' + call read_netcdf_2d_scatter(me,ncid2d,1,im,jm,jsta,jsta_2l & + ,jend_2u,MPI_COMM_COMP,icnt,idsp,spval,VarName,gtauy) +! if(debugprint)print*,'sample l',VarName,' = ',1,gtauy(isa,jsa) + +! time averaged accumulated potential evaporation + 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) + do j=jsta_2l,jend_2u + do i=1,im +! GFS does not have temperature tendency due to long wave radiation + rlwtt(i,j,l) = spval +! GFS does not have temperature tendency due to short wave radiation + rswtt(i,j,l) = spval +! GFS does not have temperature tendency due to latent heating from convection + tcucn(i,j,l) = spval + tcucns(i,j,l) = spval +! GFS does not have temperature tendency due to latent heating from grid scale + train(i,j,l) = spval + enddo + enddo + enddo + +! set avrain to 1 + avrain=1.0 + avcnvc=1.0 + theat=6.0 ! just in case GFS decides to output T tendency + +! 10 m u using nemsio + VarName='ugrd10m' + call read_netcdf_2d_scatter(me,ncid2d,1,im,jm,jsta,jsta_2l & + ,jend_2u,MPI_COMM_COMP,icnt,idsp,spval,VarName,u10) + + do j=jsta,jend + do i=1,im + u10h(i,j)=u10(i,j) + end do + end do +! if(debugprint)print*,'sample l',VarName,' = ',1,u10(isa,jsa) + +! 10 m v using gfsio + VarName='vgrd10m' + call read_netcdf_2d_scatter(me,ncid2d,1,im,jm,jsta,jsta_2l & + ,jend_2u,MPI_COMM_COMP,icnt,idsp,spval,VarName,v10) + + do j=jsta,jend + do i=1,im + v10h(i,j)=v10(i,j) + end do + end do +! if(debugprint)print*,'sample l',VarName,' = ',1,v10(isa,jsa) + +! vegetation type, it's in GFS surface file, hopefully will merge into gfsio soon + VarName='vtype' + call read_netcdf_2d_scatter(me,ncid2d,1,im,jm,jsta,jsta_2l & + ,jend_2u,MPI_COMM_COMP,icnt,idsp,spval,VarName,buf) +! where (buf /= spval) +! ivgtyp=nint(buf) +! elsewhere +! ivgtyp=0 !need to feed reasonable value to crtm +! end where +!$omp parallel do private(i,j) + do j = jsta_2l, jend_2u + do i=1,im + if (buf(i,j) < spval) then + ivgtyp(i,j) = nint(buf(i,j)) + else + ivgtyp(i,j) = 0 + endif + enddo + enddo +! if(debugprint)print*,'sample l',VarName,' = ',1,ivgtyp(isa,jsa) + +! soil type, it's in GFS surface file, hopefully will merge into gfsio soon + VarName='sotyp' + call read_netcdf_2d_scatter(me,ncid2d,1,im,jm,jsta,jsta_2l & + ,jend_2u,MPI_COMM_COMP,icnt,idsp,spval,VarName,buf) + VcoordName='sfc' + l=1 +!$omp parallel do private(i,j) + do j = jsta_2l, jend_2u + do i=1,im + if (buf(i,j) < spval) then + isltyp(i,j) = nint(buf(i,j)) + else + isltyp(i,j) = 0 !need to feed reasonable value to crtm + endif + enddo + enddo +! if(debugprint)print*,'sample l',VarName,' = ',1,isltyp(isa,jsa) + +!$omp parallel do private(i,j) + do j=jsta_2l,jend_2u + do i=1,im + smstav(i,j) = spval ! GFS does not have soil moisture availability +! smstot(i,j) = spval ! GFS does not have total soil moisture + 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???? + 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 + vz0(i,j) = spval ! GFS does not output humidity at roughness length + enddo + enddo + do l=1,lm +!$omp parallel do private(i,j) + do j=jsta_2l,jend_2u + do i=1,im + EL_PBL(i,j,l) = spval ! GFS does not have mixing length + exch_h(i,j,l) = spval ! GFS does not output exchange coefficient + enddo + enddo + enddo +! if(debugprint)print*,'sample l',VarName,' = ',1,thz0(isa,jsa) + +! retrieve inst convective cloud top, GFS has cloud top pressure instead of index, +! will need to modify CLDRAD.f to use pressure directly instead of index +! VarName='pres' +! VcoordName='convect-cld top' +! l=1 +! if(debugprint)print*,'sample l',VarName,' = ',1,ptop(isa,jsa) + VarName='prescnvclt' + call read_netcdf_2d_scatter(me,ncid2d,1,im,jm,jsta,jsta_2l & + ,jend_2u,MPI_COMM_COMP,icnt,idsp,spval,VarName,ptop) + + +!$omp parallel do private(i,j) + do j=jsta,jend + do i=1,im + htop(i,j) = spval + if(ptop(i,j) <= 0.0) ptop(i,j) = spval + enddo + enddo + do j=jsta,jend + do i=1,im + if(ptop(i,j) < spval)then + do l=1,lm + if(ptop(i,j) <= pmid(i,j,l))then + htop(i,j) = l +! if(i==ii .and. j==jj)print*,'sample ptop,pmid pmid-1,pint= ', & +! ptop(i,j),pmid(i,j,l),pmid(i,j,l-1),pint(i,j,l),htop(i,j) + exit + end if + end do + end if + end do + end do + +! retrieve inst convective cloud bottom, GFS has cloud top pressure instead of index, +! will need to modify CLDRAD.f to use pressure directly instead of index + VarName='prescnvclb' + call read_netcdf_2d_scatter(me,ncid2d,1,im,jm,jsta,jsta_2l & + ,jend_2u,MPI_COMM_COMP,icnt,idsp,spval,VarName,pbot) +! if(debugprint)print*,'sample l',VarName,VcoordName,' = ',1,pbot(isa,jsa) +!$omp parallel do private(i,j) + do j=jsta,jend + do i=1,im + hbot(i,j) = spval + if(pbot(i,j) <= 0.0) pbot(i,j) = spval + enddo + enddo + do j=jsta,jend + do i=1,im +! if(.not.lb(i,j))print*,'false bitmask for pbot at ' +! + ,i,j,pbot(i,j) + if(pbot(i,j) < spval)then + do l=lm,1,-1 + if(pbot(i,j) >= pmid(i,j,l)) then + hbot(i,j) = l +! if(i==ii .and. j==jj)print*,'sample pbot,pmid= ', & +! pbot(i,j),pmid(i,j,l),hbot(i,j) + exit + end if + end do + end if + end do + end do + if(debugprint)print*,'sample hbot = ',hbot(isa,jsa) +! retrieve time averaged low cloud top pressure using nemsio + VarName='pres_avelct' + call read_netcdf_2d_scatter(me,ncid2d,1,im,jm,jsta,jsta_2l & + ,jend_2u,MPI_COMM_COMP,icnt,idsp,spval,VarName,ptopl) +! if(debugprint)print*,'sample l',VarName,' = ',1,ptopl(isa,jsa) + +! retrieve time averaged low cloud bottom pressure using nemsio + VarName='pres_avelcb' + call read_netcdf_2d_scatter(me,ncid2d,1,im,jm,jsta,jsta_2l & + ,jend_2u,MPI_COMM_COMP,icnt,idsp,spval,VarName,pbotl) +! if(debugprint)print*,'sample l',VarName,' = ',1,pbotl(isa,jsa) + +! retrieve time averaged low cloud top temperature using nemsio + VarName='tmp_avelct' + call read_netcdf_2d_scatter(me,ncid2d,1,im,jm,jsta,jsta_2l & + ,jend_2u,MPI_COMM_COMP,icnt,idsp,spval,VarName,Ttopl) +! if(debugprint)print*,'sample l',VcoordName,VarName,' = ',1,Ttopl(isa,jsa) + +! retrieve time averaged middle cloud top pressure using nemsio + VarName='pres_avemct' + call read_netcdf_2d_scatter(me,ncid2d,1,im,jm,jsta,jsta_2l & + ,jend_2u,MPI_COMM_COMP,icnt,idsp,spval,VarName,ptopm) +! if(debugprint)print*,'sample l',VcoordName,VarName,' = ',1,ptopm(isa,jsa) + +! retrieve time averaged middle cloud bottom pressure using nemsio + VarName='pres_avemcb' + call read_netcdf_2d_scatter(me,ncid2d,1,im,jm,jsta,jsta_2l & + ,jend_2u,MPI_COMM_COMP,icnt,idsp,spval,VarName,pbotm) +! if(debugprint)print*,'sample l',VcoordName,VarName,' = ',1,pbotm(isa,jsa) + +! retrieve time averaged middle cloud top temperature using nemsio + VarName='tmp_avemct' + call read_netcdf_2d_scatter(me,ncid2d,1,im,jm,jsta,jsta_2l & + ,jend_2u,MPI_COMM_COMP,icnt,idsp,spval,VarName,Ttopm) +! if(debugprint)print*,'sample l',VcoordName,VarName,' = ',1,Ttopm(isa,jsa) + +! retrieve time averaged high cloud top pressure using nemsio ********* + VarName='pres_avehct' + call read_netcdf_2d_scatter(me,ncid2d,1,im,jm,jsta,jsta_2l & + ,jend_2u,MPI_COMM_COMP,icnt,idsp,spval,VarName,ptoph) +! if(debugprint)print*,'sample l',VcoordName,VarName,' = ',1,ptoph(isa,jsa) + +! retrieve time averaged high cloud bottom pressure using nemsio + VarName='pres_avehcb' + call read_netcdf_2d_scatter(me,ncid2d,1,im,jm,jsta,jsta_2l & + ,jend_2u,MPI_COMM_COMP,icnt,idsp,spval,VarName,pboth) +! if(debugprint)print*,'sample l',VcoordName,VarName,' = ',1,pboth(isa,jsa) + +! retrieve time averaged high cloud top temperature using nemsio + VarName='tmp_avehct' + call read_netcdf_2d_scatter(me,ncid2d,1,im,jm,jsta,jsta_2l & + ,jend_2u,MPI_COMM_COMP,icnt,idsp,spval,VarName,Ttoph) +! if(debugprint)print*,'sample l',VcoordName,VarName,' = ',1,Ttoph(isa,jsa) + +! retrieve boundary layer cloud cover using nemsio + VarName='tcdc_avebndcl' + call read_netcdf_2d_scatter(me,ncid2d,1,im,jm,jsta,jsta_2l & + ,jend_2u,MPI_COMM_COMP,icnt,idsp,spval,VarName,pblcfr) +! if(debugprint)print*,'sample l',VcoordName,VarName,' = ', 1,pblcfr(isa,jsa) +! where (pblcfr /= spval)pblcfr=pblcfr/100. ! convert to fraction +!$omp parallel do private(i,j) + do j = jsta_2l, jend_2u + do i=1,im + if (pblcfr(i,j) < spval) pblcfr(i,j) = pblcfr(i,j) * 0.01 + enddo + enddo + +! retrieve cloud work function + VarName='cwork_aveclm' + call read_netcdf_2d_scatter(me,ncid2d,1,im,jm,jsta,jsta_2l & + ,jend_2u,MPI_COMM_COMP,icnt,idsp,spval,VarName,cldwork) +! if(debugprint)print*,'sample l',VcoordName,VarName,' = ', 1,cldwork(isa,jsa) + +! accumulated total (base+surface) runoff + 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='tmax_max2m' + 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='tmin_min2m' + 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 + +! retrieve ice thickness using nemsio + VarName='icetk' + call read_netcdf_2d_scatter(me,ncid2d,1,im,jm,jsta,jsta_2l & + ,jend_2u,MPI_COMM_COMP,icnt,idsp,spval,VarName,dzice) +! if(debugprint)print*,'sample l',VcoordName,VarName,' = ', 1,dzice(isa,jsa) + +! retrieve wilting point using nemsio + 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 + VarName='sunsd_acc' + call read_netcdf_2d_scatter(me,ncid2d,1,im,jm,jsta,jsta_2l & + ,jend_2u,MPI_COMM_COMP,icnt,idsp,spval,VarName,suntime) + +! retrieve field capacity using nemsio + 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 + VarName='vbdsf_ave' + call read_netcdf_2d_scatter(me,ncid2d,1,im,jm,jsta,jsta_2l & + ,jend_2u,MPI_COMM_COMP,icnt,idsp,spval,VarName,avisbeamswin) + VcoordName='sfc' + l=1 + +! retrieve time averaged surface visible diffuse downward solar flux + VarName='vddsf_ave' + call read_netcdf_2d_scatter(me,ncid2d,1,im,jm,jsta,jsta_2l & + ,jend_2u,MPI_COMM_COMP,icnt,idsp,spval,VarName,avisdiffswin) + +! retrieve time averaged surface near IR beam downward solar flux + VarName='nbdsf_ave' + call read_netcdf_2d_scatter(me,ncid2d,1,im,jm,jsta,jsta_2l & + ,jend_2u,MPI_COMM_COMP,icnt,idsp,spval,VarName,airbeamswin) + +! retrieve time averaged surface near IR diffuse downward solar flux + VarName='nddsf_ave' + call read_netcdf_2d_scatter(me,ncid2d,1,im,jm,jsta,jsta_2l & + ,jend_2u,MPI_COMM_COMP,icnt,idsp,spval,VarName,airdiffswin) + +! retrieve time averaged surface clear sky outgoing LW + VarName='csulf' + call read_netcdf_2d_scatter(me,ncid2d,1,im,jm,jsta,jsta_2l & + ,jend_2u,MPI_COMM_COMP,icnt,idsp,spval,VarName,alwoutc) + +! retrieve time averaged TOA clear sky outgoing LW + VarName='csulftoa' + call read_netcdf_2d_scatter(me,ncid2d,1,im,jm,jsta,jsta_2l & + ,jend_2u,MPI_COMM_COMP,icnt,idsp,spval,VarName,alwtoac) + +! retrieve time averaged surface clear sky outgoing SW + VarName='csusf' + call read_netcdf_2d_scatter(me,ncid2d,1,im,jm,jsta,jsta_2l & + ,jend_2u,MPI_COMM_COMP,icnt,idsp,spval,VarName,aswoutc) + +! retrieve time averaged TOA clear sky outgoing LW + VarName='csusftoa' + call read_netcdf_2d_scatter(me,ncid2d,1,im,jm,jsta,jsta_2l & + ,jend_2u,MPI_COMM_COMP,icnt,idsp,spval,VarName,aswtoac) + +! retrieve time averaged surface clear sky incoming LW + VarName='csdlf' + call read_netcdf_2d_scatter(me,ncid2d,1,im,jm,jsta,jsta_2l & + ,jend_2u,MPI_COMM_COMP,icnt,idsp,spval,VarName,alwinc) + +! retrieve time averaged surface clear sky incoming SW + VarName='csdsf' + call read_netcdf_2d_scatter(me,ncid2d,1,im,jm,jsta,jsta_2l & + ,jend_2u,MPI_COMM_COMP,icnt,idsp,spval,VarName,aswinc) + +! 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,maxqshltr) +! if(debugprint)print*,'sample l',VcoordName,VarName,' = ', +! 1,maxqshltr(isa,jsa) + +! retrieve shelter min temperature using nemsio + VarName='spfhmin_min2m' + call read_netcdf_2d_scatter(me,ncid2d,1,im,jm,jsta,jsta_2l & + ,jend_2u,MPI_COMM_COMP,icnt,idsp,spval,VarName,minqshltr) + +! retrieve storm runoff using nemsio + 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 + +!$omp parallel do private(i,j) + do j=jsta,jend + do i=1,im + HTOPD(i,j) = SPVAL + HBOTD(i,j) = SPVAL + HTOPS(i,j) = SPVAL + HBOTS(i,j) = SPVAL + CUPPT(i,j) = SPVAL + enddo + enddo + +! done with flux file, close it for now + Status=nf90_close(ncid2d) +! deallocate(tmp,recname,reclevtyp,reclev) + +! pos east +! call collect_loc(gdlat,dummy) +! if(me == 0)then +! latstart = nint(dummy(1,1)*gdsdegr) +! latlast = nint(dummy(im,jm)*gdsdegr) +! print*,'laststart,latlast B bcast= ',latstart,latlast,'gdsdegr=',gdsdegr,& +! 'dummy(1,1)=',dummy(1,1),dummy(im,jm),'gdlat=',gdlat(1,1) +! end if +! call mpi_bcast(latstart,1,MPI_INTEGER,0,mpi_comm_comp,irtn) +! call mpi_bcast(latlast,1,MPI_INTEGER,0,mpi_comm_comp,irtn) +! write(6,*) 'laststart,latlast,me A calling bcast=',latstart,latlast,me +! call collect_loc(gdlon,dummy) +! if(me == 0)then +! lonstart = nint(dummy(1,1)*gdsdegr) +! lonlast = nint(dummy(im,jm)*gdsdegr) +! end if +! call mpi_bcast(lonstart,1,MPI_INTEGER,0,mpi_comm_comp,irtn) +! call mpi_bcast(lonlast, 1,MPI_INTEGER,0,mpi_comm_comp,irtn) + +! write(6,*)'lonstart,lonlast A calling bcast=',lonstart,lonlast +! + +! generate look up table for lifted parcel calculations + + THL = 210. + PLQ = 70000. + pt_TBL = 10000. ! this is for 100 hPa added by Moorthi + + CALL TABLE(PTBL,TTBL,PT_TBL, & + RDQ,RDTH,RDP,RDTHE,PL,THL,QS0,SQS,STHE,THE0) + + CALL TABLEQ(TTBLQ,RDPQ,RDTHEQ,PLQ,THL,STHEQ,THE0Q) + +! +! + IF(ME == 0)THEN + WRITE(6,*)' SPL (POSTED PRESSURE LEVELS) BELOW: ' + WRITE(6,51) (SPL(L),L=1,LSM) + 50 FORMAT(14(F4.1,1X)) + 51 FORMAT(8(F8.1,1X)) + ENDIF +! +!$omp parallel do private(l) + DO L = 1,LSM + ALSL(L) = LOG(SPL(L)) + END DO +! +!HC WRITE IGDS OUT FOR WEIGHTMAKER TO READ IN AS KGDSIN + if(me == 0)then + print*,'writing out igds' + igdout = 110 +! open(igdout,file='griddef.out',form='unformatted' +! + ,status='unknown') + if(maptype == 1)THEN ! Lambert conformal + WRITE(igdout)3 + WRITE(6,*)'igd(1)=',3 + WRITE(igdout)im + WRITE(igdout)jm + WRITE(igdout)LATSTART + WRITE(igdout)LONSTART + WRITE(igdout)8 + WRITE(igdout)CENLON + WRITE(igdout)DXVAL + WRITE(igdout)DYVAL + WRITE(igdout)0 + WRITE(igdout)64 + WRITE(igdout)TRUELAT2 + WRITE(igdout)TRUELAT1 + WRITE(igdout)255 + ELSE IF(MAPTYPE == 2)THEN !Polar stereographic + WRITE(igdout)5 + WRITE(igdout)im + WRITE(igdout)jm + WRITE(igdout)LATSTART + WRITE(igdout)LONSTART + WRITE(igdout)8 + WRITE(igdout)CENLON + WRITE(igdout)DXVAL + WRITE(igdout)DYVAL + WRITE(igdout)0 + WRITE(igdout)64 + WRITE(igdout)TRUELAT2 !Assume projection at +-90 + WRITE(igdout)TRUELAT1 + WRITE(igdout)255 + ! Note: The calculation of the map scale factor at the standard + ! lat/lon and the PSMAPF + ! Get map factor at 60 degrees (N or S) for PS projection, which will + ! be needed to correctly define the DX and DY values in the GRIB GDS + if (TRUELAT1 < 0.) THEN + LAT = -60. + else + LAT = 60. + end if + + CALL MSFPS (LAT,TRUELAT1*0.001,PSMAPF) + + ELSE IF(MAPTYPE == 3) THEN !Mercator + WRITE(igdout)1 + WRITE(igdout)im + WRITE(igdout)jm + WRITE(igdout)LATSTART + WRITE(igdout)LONSTART + WRITE(igdout)8 + WRITE(igdout)latlast + WRITE(igdout)lonlast + WRITE(igdout)TRUELAT1 + WRITE(igdout)0 + WRITE(igdout)64 + WRITE(igdout)DXVAL + WRITE(igdout)DYVAL + WRITE(igdout)255 + ELSE IF(MAPTYPE == 0 .OR. MAPTYPE == 203)THEN !A STAGGERED E-GRID + WRITE(igdout)203 + WRITE(igdout)im + WRITE(igdout)jm + WRITE(igdout)LATSTART + WRITE(igdout)LONSTART + WRITE(igdout)136 + WRITE(igdout)CENLAT + WRITE(igdout)CENLON + WRITE(igdout)DXVAL + WRITE(igdout)DYVAL + WRITE(igdout)64 + WRITE(igdout)0 + WRITE(igdout)0 + WRITE(igdout)0 + END IF + end if +! +! + + RETURN + END + diff --git a/sorc/ncep_post.fd/INITPOST_NETCDF.f b/sorc/ncep_post.fd/INITPOST_NETCDF.f index caddbdb4a..19fa7b419 100644 --- a/sorc/ncep_post.fd/INITPOST_NETCDF.f +++ b/sorc/ncep_post.fd/INITPOST_NETCDF.f @@ -745,34 +745,35 @@ SUBROUTINE INITPOST_NETCDF(ncid3d) HBM2 = 1.0 ! start reading 3d netcdf output - do l=1,lm +! do l=1,lm call read_netcdf_3d_scatter(me,ncid3d,1,im,jm,jsta,jsta_2l & ,jend_2u,MPI_COMM_COMP,icnt,idsp,spval,recname(1) & - ,l,uh(1,jsta_2l,l)) + ,lm,uh(1,jsta_2l,1)) call read_netcdf_3d_scatter(me,ncid3d,1,im,jm,jsta,jsta_2l & ,jend_2u,MPI_COMM_COMP,icnt,idsp,spval,recname(2) & - ,l,vh(1,jsta_2l,l)) + ,lm,vh(1,jsta_2l,1)) call read_netcdf_3d_scatter(me,ncid3d,1,im,jm,jsta,jsta_2l & ,jend_2u,MPI_COMM_COMP,icnt,idsp,spval,recname(3) & - ,l,q(1,jsta_2l,l)) + ,lm,q(1,jsta_2l,1)) call read_netcdf_3d_scatter(me,ncid3d,1,im,jm,jsta,jsta_2l & ,jend_2u,MPI_COMM_COMP,icnt,idsp,spval,recname(4) & - ,l,t(1,jsta_2l,l)) + ,lm,t(1,jsta_2l,1)) call read_netcdf_3d_scatter(me,ncid3d,1,im,jm,jsta,jsta_2l & ,jend_2u,MPI_COMM_COMP,icnt,idsp,spval,recname(5) & - ,l,o3(1,jsta_2l,l)) + ,lm,o3(1,jsta_2l,1)) call read_netcdf_3d_scatter(me,ncid3d,1,im,jm,jsta,jsta_2l & ,jend_2u,MPI_COMM_COMP,icnt,idsp,spval,recname(7) & - ,l,wh(1,jsta_2l,l)) + ,lm,wh(1,jsta_2l,1)) call read_netcdf_3d_scatter(me,ncid3d,1,im,jm,jsta,jsta_2l & ,jend_2u,MPI_COMM_COMP,icnt,idsp,spval,recname(8) & - ,l,qqw(1,jsta_2l,l)) + ,lm,qqw(1,jsta_2l,1)) call read_netcdf_3d_scatter(me,ncid3d,1,im,jm,jsta,jsta_2l & ,jend_2u,MPI_COMM_COMP,icnt,idsp,spval,recname(9) & - ,l,dpres(1,jsta_2l,l)) + ,lm,dpres(1,jsta_2l,1)) call read_netcdf_3d_scatter(me,ncid3d,1,im,jm,jsta,jsta_2l & ,jend_2u,MPI_COMM_COMP,icnt,idsp,spval,recname(10) & - ,l,buf3d(1,jsta_2l,l)) + ,lm,buf3d(1,jsta_2l,1)) + do l=1,lm do j=jsta,jend do i=1,im cwm(i,j,l)=spval @@ -795,22 +796,24 @@ SUBROUTINE INITPOST_NETCDF(ncid3d) ! if(t(i,j,l)>1000.)print*,'bad T ',t(i,j,l) enddo enddo + enddo call read_netcdf_3d_scatter(me,ncid3d,1,im,jm,jsta,jsta_2l & ,jend_2u,MPI_COMM_COMP,icnt,idsp,spval,recname(11) & - ,l,qqi(1,jsta_2l,l)) + ,lm,qqi(1,jsta_2l,1)) call read_netcdf_3d_scatter(me,ncid3d,1,im,jm,jsta,jsta_2l & ,jend_2u,MPI_COMM_COMP,icnt,idsp,spval,recname(12) & - ,l,qqr(1,jsta_2l,l)) + ,lm,qqr(1,jsta_2l,1)) call read_netcdf_3d_scatter(me,ncid3d,1,im,jm,jsta,jsta_2l & ,jend_2u,MPI_COMM_COMP,icnt,idsp,spval,recname(13) & - ,l,qqs(1,jsta_2l,l)) + ,lm,qqs(1,jsta_2l,1)) call read_netcdf_3d_scatter(me,ncid3d,1,im,jm,jsta,jsta_2l & ,jend_2u,MPI_COMM_COMP,icnt,idsp,spval,recname(14) & - ,l,qqg(1,jsta_2l,l)) + ,lm,qqg(1,jsta_2l,1)) call read_netcdf_3d_scatter(me,ncid3d,1,im,jm,jsta,jsta_2l & ,jend_2u,MPI_COMM_COMP,icnt,idsp,spval,recname(15) & - ,l,cfr(1,jsta_2l,l)) + ,lm,cfr(1,jsta_2l,1)) ! calculate CWM from FV3 output + do l=1,lm do j=jsta,jend do i=1,im cwm(i,j,l)=qqg(i,j,l)+qqs(i,j,l)+qqr(i,j,l)+qqi(i,j,l)+qqw(i,j,l) @@ -1214,13 +1217,13 @@ SUBROUTINE INITPOST_NETCDF(ncid3d) ! end do VarName='refl_10cm' - do l=1,lm +! 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 & - ,l,REF_10CM(1,jsta_2l,l)) - if(debugprint)print*,'sample ',VarName,'isa,jsa,l =' & - ,REF_10CM(isa,jsa,l),isa,jsa,l - enddo + ,lm,REF_10CM(1,jsta_2l,1)) +! if(debugprint)print*,'sample ',VarName,'isa,jsa,l =' & +! ,REF_10CM(isa,jsa,l),isa,jsa,l +! enddo VarName='land' call read_netcdf_2d_scatter(me,ncid2d,1,im,jm,jsta,jsta_2l & @@ -2745,7 +2748,7 @@ SUBROUTINE INITPOST_NETCDF(ncid3d) subroutine read_netcdf_3d_scatter(me,ncid,ifhr,im,jm,jsta,jsta_2l & ,jend_2u,MPI_COMM_COMP,icnt,idsp,spval,VarName & - ,l,buf) + ,lm,buf) use netcdf implicit none @@ -2753,39 +2756,46 @@ subroutine read_netcdf_3d_scatter(me,ncid,ifhr,im,jm,jsta,jsta_2l & character(len=20),intent(in) :: VarName real,intent(in) :: spval integer,intent(in) :: me,ncid,ifhr,im,jm,jsta_2l,jend_2u,jsta, & - MPI_COMM_COMP,l + MPI_COMM_COMP,lm integer,intent(in) :: ICNT(0:1023), IDSP(0:1023) - real,intent(out) :: buf(im,jsta_2l:jend_2u) - integer :: iret,i,j,jj,varid - real dummy(im,jm),dummy2(im,jm) + real,intent(out) :: buf(im,jsta_2l:jend_2u,lm) + integer :: iret,i,j,jj,varid,l + real dummy(im,jm,lm),dummy2(im,jm,lm) real,parameter :: spval_netcdf=-1.e+10 if(me == 0) then iret = nf90_inq_varid(ncid,trim(varname),varid) !print*,stat,varname,varid - iret = nf90_get_var(ncid,varid,dummy2,start=(/1,1,l,ifhr/), & - count=(/im,jm,1,1/)) + iret = nf90_get_var(ncid,varid,dummy2) +! iret = nf90_get_var(ncid,varid,dummy2,start=(/1,1,l,ifhr/), & +! count=(/im,jm,1,1/)) if (iret /= 0) then print*,VarName,l," not found -Assigned missing values" + do l=1,lm do j=1,jm do i=1,im - dummy(i,j) = spval + dummy(i,j,l) = spval end do end do + end do else + do l=1,lm do j=1,jm ! jj=jm-j+1 jj=j do i=1,im - dummy(i,j)=dummy2(i,jj) - if(dummy(i,j)==spval_netcdf)dummy(i,j)=spval + dummy(i,j,l)=dummy2(i,jj,l) + if(dummy(i,j,l)==spval_netcdf)dummy(i,j,l)=spval end do end do + end do end if end if - call mpi_scatterv(dummy(1,1),icnt,idsp,mpi_real & - ,buf(1,jsta),icnt(me),mpi_real,0,MPI_COMM_COMP,iret) + do l=1,lm + call mpi_scatterv(dummy(1,1,l),icnt,idsp,mpi_real & + ,buf(1,jsta,l),icnt(me),mpi_real,0,MPI_COMM_COMP,iret) + end do end subroutine read_netcdf_3d_scatter @@ -2810,8 +2820,9 @@ subroutine read_netcdf_2d_scatter(me,ncid,ifhr,im,jm,jsta,jsta_2l & if(me == 0) then iret = nf90_inq_varid(ncid,trim(varname),varid) !print*,stat,varname,varid - iret = nf90_get_var(ncid,varid,dummy2,start=(/1,1,ifhr/), & - count=(/im,jm,1/)) + iret = nf90_get_var(ncid,varid,dummy2) + !iret = nf90_get_var(ncid,varid,dummy2,start=(/1,1,ifhr/), & + ! count=(/im,jm,1/)) if (iret /= 0) then print*,VarName, " not found -Assigned missing values" do j=1,jm diff --git a/sorc/ncep_post.fd/WRFPOST.f b/sorc/ncep_post.fd/WRFPOST.f index 1ebc24fe2..3766c7f8e 100644 --- a/sorc/ncep_post.fd/WRFPOST.f +++ b/sorc/ncep_post.fd/WRFPOST.f @@ -711,6 +711,9 @@ PROGRAM WRFPOST ! use netcdf library to read output directly print*,'CALLING INITPOST_NETCDF' CALL INITPOST_NETCDF(ncid3d) + ELSE IF (MODELNAME == 'GFS') THEN + print*,'CALLING INITPOST_GFS_NETCDF' + CALL INITPOST_GFS_NETCDF(ncid3d) ELSE PRINT*,'POST does not have netcdf option for model,',MODELNAME,' STOPPING,' STOP 9998 diff --git a/sorc/ncep_post.fd/makefile_module b/sorc/ncep_post.fd/makefile_module index 0481aec92..2687ab51d 100755 --- a/sorc/ncep_post.fd/makefile_module +++ b/sorc/ncep_post.fd/makefile_module @@ -93,7 +93,7 @@ OBJS = wrf_io_flags.o getVariable.o getIVariableN.o \ INITPOST_NEMS.o GETNEMSNDSCATTER.o ICAOHEIGHT.o INITPOST_GFS_NEMS.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 \ + INITPOST_GFS_NEMS_MPIIO.o INITPOST_NETCDF.o INITPOST_GFS_NETCDF.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 CALVESSEL.o \ CALHEL2.o CALCAPE2.o diff --git a/ush/gfs_nceppost.sh b/ush/gfs_nceppost.sh index 24c8702a5..7b5ba2836 100755 --- a/ush/gfs_nceppost.sh +++ b/ush/gfs_nceppost.sh @@ -221,6 +221,7 @@ export ENDSCRIPT=${ENDSCRIPT} export GFSOUT=${GFSOUT:-gfsout} export CTLFILE=${CTLFILE:-$NWPROD/parm/gfs_cntrl.parm} export MODEL_OUT_FORM=${MODEL_OUT_FORM:-binarynemsiompiio} +export OUTPUT_FILE=${OUTPUT_FILE:-"nemsio"} export GRIBVERSION=${GRIBVERSION:-'grib1'} # Other variables. export POSTGPVARS=${POSTGPVARS} @@ -229,7 +230,7 @@ export NTHSTACK=${NTHSTACK:-64000000} export PGMOUT=${PGMOUT:-${pgmout:-'&1'}} export PGMERR=${PGMERR:-${pgmerr:-'&2'}} export CHGRESTHREAD=${CHGRESTHREAD:-1} -export FILTER=${FILTER:-1} +export FILTER=${FILTER:-0} export GENPSICHI=${GENPSICHI:-NO} export GENPSICHIEXE=${GENPSICHIEXE:-${EXECgfs}/genpsiandchi} export ens=${ens:-NO} @@ -251,7 +252,7 @@ export APRUN=${APRUNP:-${APRUN:-""}} # exit if NEMSINP does not exist if [ ${OUTTYP} -eq 4 ] ; then if [ ! -s $NEMSINP -o ! -s $FLXINP ] ; then - echo "nemsio files not found, exitting" + echo "model files not found, exitting" exit 111 fi fi @@ -261,16 +262,11 @@ export IDRT=${IDRT:-4} # run post to read nemsio file if OUTTYP=4 if [ ${OUTTYP} -eq 4 ] ; then -# export nemsioget=${nemsioget:-$EXECgfs/nemsio_get} -# export LONB=${LONB:-$($nemsioget $NEMSINP dimx | awk '{print $2}')} -# export LATB=${LATB:-$($nemsioget $NEMSINP dimy | awk '{print $2}')} -# export JCAP=${JCAP:-`expr $LATB - 2`} -# export LEVS=${LEVS:-$($nemsioget $NEMSINP dimz | awk '{print $2}')} - - export MODEL_OUT_FORM=${MODEL_OUT_FORM:-binarynemsiompiio} +# export MODEL_OUT_FORM=${MODEL_OUT_FORM:-binarynemsiompiio} + if [ $OUTPUT_FILE = "netcdf" ]; then + MODEL_OUT_FORM=netcdf + fi export GFSOUT=${NEMSINP} -# ln -sf $FIXgfs/fix_am/global_lonsperlat.t${JCAP}.${LONB}.${LATB}.txt ./lonsperlat.dat -# ln -sf $FIXgfs/fix_am/global_hyblev.l${LEVS}.txt ./global_hyblev.txt fi # allow threads to use threading in Jim's sp lib @@ -377,7 +373,8 @@ if [ $GRIBVERSION = grib2 ]; then export err=$?; err_chk #cat $PGBOUT prmsl h5wav >> $PGBOUT - cat prmsl h5wav >> $PGBOUT +#wm +# cat prmsl h5wav >> $PGBOUT fi diff --git a/ush/global_nceppost.sh b/ush/global_nceppost.sh index 3accbdfa4..65fde56cf 100755 --- a/ush/global_nceppost.sh +++ b/ush/global_nceppost.sh @@ -436,6 +436,7 @@ elif [ $GRIBVERSION = grib2 ]; then $WGRIB2 tfile -set_byte 4 11 193 -grib h5wav #cat $PGBOUT prmsl h5wav >> $PGBOUT + cat prmsl h5wav >> $PGBOUT fi From 3b42c2a4999283bce18f7a45bccf4610703ad556 Mon Sep 17 00:00:00 2001 From: WenMeng-NOAA <48260754+WenMeng-NOAA@users.noreply.github.com> Date: Mon, 18 Nov 2019 13:06:12 -0500 Subject: [PATCH 11/21] Post abi nadir (#24) * added ABI simulated Brightness Temperatures for whole horizontal grid assuming nadir geometry * switched RQSTFLDS slots for ABI simulated BT * Add WMO_Sensor_Id and WMO_Satellite_Id for abi. * 1)Add abi nadir BT in gfs v16 simulated satellite product. 2)Label abi nadir BT as grib2 NCEP local table. --- parm/params_grib2_tbl_new | 18 +++ parm/post_avblflds.xml | 91 +++++++++++++ parm/postcntrl_gfs_goes.xml | 20 +++ parm/postxconfig-NT-GFS-GOES.txt | 150 +++++++++++++++++++++- sorc/ncep_post.fd/CALRAD_WCLOUD_newcrtm.f | 58 ++++++++- sorc/ncep_post.fd/RQSTFLD.F | 42 +++++- 6 files changed, 373 insertions(+), 6 deletions(-) diff --git a/parm/params_grib2_tbl_new b/parm/params_grib2_tbl_new index b9ab462a7..2e13cbddd 100755 --- a/parm/params_grib2_tbl_new +++ b/parm/params_grib2_tbl_new @@ -1156,6 +1156,24 @@ 3 192 43 0 SBTA1714 3 192 44 0 SBTA1715 3 192 45 0 SBTA1716 +! NCEP Local use + 3 192 46 1 SFRAGR1 + 3 192 47 1 SFRAGR2 + 3 192 48 1 SFRAGR3 + 3 192 49 1 SFRAGR4 + 3 192 50 1 SFRAGR5 + 3 192 51 1 SFRAGR6 + 3 192 52 1 SBTAGR7 + 3 192 53 1 SBTAGR8 + 3 192 54 1 SBTAGR9 + 3 192 55 1 SBTAGR10 + 3 192 56 1 SBTAGR11 + 3 192 57 1 SBTAGR12 + 3 192 58 1 SBTAGR13 + 3 192 59 1 SBTAGR14 + 3 192 60 1 SBTAGR15 + 3 192 61 1 SBTAGR16 + ! ! GRIB2 - TABLE 4.2-4-0 PARAMETERS FOR DISCIPLINE 4 CATEGORY 0 ! diff --git a/parm/post_avblflds.xml b/parm/post_avblflds.xml index f5d07caaa..f2358d259 100755 --- a/parm/post_avblflds.xml +++ b/parm/post_avblflds.xml @@ -6712,5 +6712,96 @@ 4.0 + + + 958 + SBTAGR7_ON_TOP_OF_ATMOS + SBTAGR7 + NCEP + top_of_atmos + 4.0 + + + + 959 + SBTAGR8_ON_TOP_OF_ATMOS + SBTAGR8 + NCEP + top_of_atmos + 4.0 + + + + 960 + SBTAGR9_ON_TOP_OF_ATMOS + SBTAGR9 + NCEP + top_of_atmos + 4.0 + + + + 961 + SBTAGR10_ON_TOP_OF_ATMOS + SBTAGR10 + NCEP + top_of_atmos + 4.0 + + + + 962 + SBTAGR11_ON_TOP_OF_ATMOS + SBTAGR11 + NCEP + top_of_atmos + 4.0 + + + + 963 + SBTAGR12_ON_TOP_OF_ATMOS + SBTAGR12 + NCEP + top_of_atmos + 4.0 + + + + 964 + SBTAGR13_ON_TOP_OF_ATMOS + SBTAGR13 + NCEP + top_of_atmos + 4.0 + + + + 965 + SBTAGR14_ON_TOP_OF_ATMOS + SBTAGR14 + NCEP + top_of_atmos + 4.0 + + + + 966 + SBTAGR15_ON_TOP_OF_ATMOS + SBTAGR15 + NCEP + top_of_atmos + 4.0 + + + + 967 + SBTAGR16_ON_TOP_OF_ATMOS + SBTAGR16 + NCEP + top_of_atmos + 4.0 + + diff --git a/parm/postcntrl_gfs_goes.xml b/parm/postcntrl_gfs_goes.xml index 105c3a8df..512a1e751 100755 --- a/parm/postcntrl_gfs_goes.xml +++ b/parm/postcntrl_gfs_goes.xml @@ -39,6 +39,26 @@ 4.0 + + SBTAGR8_ON_TOP_OF_ATMOS + 4.0 + + + + SBTAGR9_ON_TOP_OF_ATMOS + 4.0 + + + + SBTAGR10_ON_TOP_OF_ATMOS + 4.0 + + + + SBTAGR13_ON_TOP_OF_ATMOS + 4.0 + + diff --git a/parm/postxconfig-NT-GFS-GOES.txt b/parm/postxconfig-NT-GFS-GOES.txt index 00c31d1af..9e37655af 100644 --- a/parm/postxconfig-NT-GFS-GOES.txt +++ b/parm/postxconfig-NT-GFS-GOES.txt @@ -1,5 +1,5 @@ 1 -4 +8 GFSPRS 0 ncep_nco @@ -164,3 +164,151 @@ top_of_atmos ? ? ? +959 +SBTAGR8_ON_TOP_OF_ATMOS +? +1 +tmpl4_0 +SBTAGR8 +NCEP +? +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 +? +? +? +960 +SBTAGR9_ON_TOP_OF_ATMOS +? +1 +tmpl4_0 +SBTAGR9 +NCEP +? +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 +? +? +? +961 +SBTAGR10_ON_TOP_OF_ATMOS +? +1 +tmpl4_0 +SBTAGR10 +NCEP +? +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 +? +? +? +964 +SBTAGR13_ON_TOP_OF_ATMOS +? +1 +tmpl4_0 +SBTAGR13 +NCEP +? +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/sorc/ncep_post.fd/CALRAD_WCLOUD_newcrtm.f b/sorc/ncep_post.fd/CALRAD_WCLOUD_newcrtm.f index 8c09ea3d4..8623d144b 100644 --- a/sorc/ncep_post.fd/CALRAD_WCLOUD_newcrtm.f +++ b/sorc/ncep_post.fd/CALRAD_WCLOUD_newcrtm.f @@ -121,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=20 + integer(i_kind),parameter:: n_sensors=21 character(len=20),parameter,dimension(1:n_sensors):: sensorlist= & (/'imgr_g15 ', & 'imgr_g13 ', & @@ -141,6 +141,7 @@ SUBROUTINE CALRAD_WCLOUD 'imgr_mt2 ', & 'imgr_mt1r ', & 'imgr_insat3d ', & + 'abi_gr ', & 'abi_g16 ', & 'abi_g17 '/) character(len=12),parameter,dimension(1:n_sensors):: obslist= & @@ -163,6 +164,7 @@ SUBROUTINE CALRAD_WCLOUD 'imgr_mt1r ', & 'imgr_insat3d', & 'abi ', & + 'abi ', & 'abi '/) character(len=20),dimension(1:n_sensors):: sensorlist_local ! @@ -205,7 +207,7 @@ SUBROUTINE CALRAD_WCLOUD 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 post_abig16, post_abig17, post_abigr ! 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. @@ -280,6 +282,11 @@ SUBROUTINE CALRAD_WCLOUD do n = 937, 937+9 ! 937 set in RQSTFLD.f if (iget(n) > 0) post_abig17=.true. enddo + post_abigr=.false. + do n = 958, 958+9 ! 958 set in RQSTFLD.f + if (iget(n) > 0) post_abigr=.true. + enddo + ! DO NOT FORGET TO ADD YOUR NEW IGET HERE (IF YOU'VE ADDED ONE) ! START SUBROUTINE CALRAD. @@ -320,7 +327,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 ) then + .or. post_abig16 .or. post_abig17 .or. post_abigr ) then ! specify numbers of cloud species ! Thompson==8, Ferrier==5,95, WSM6==6, Lin==2 @@ -408,6 +415,21 @@ SUBROUTINE CALRAD_WCLOUD enddo endif endif + ! GOES-R for NADIR output + if(post_abigr)then + nchanl=0 + do n = 958, 958+9 ! 958 set in RQSTFLD.f + if (iget(n) > 0) then + nchanl = nchanl+1 + endif + enddo + if (nchanl > 0 .and. nchanl <10) then + do n = 958, 958+9 ! 958 set in RQSTFLD.f + if (iget(n) == 0) channelinfo(20)%Process_Channel(n-958+1)=.False. ! turn off channel processing + enddo + endif + endif + ! SSMI, F13-F15 (19H,19V,??H,37H,37V,85H,85V) if(iget(800)>0)then @@ -486,6 +508,7 @@ SUBROUTINE CALRAD_WCLOUD (isis=='imgr_g15' .and. iget(872)>0) .OR. & (isis=='abi_g16' .and. post_abig16) .OR. & (isis=='abi_g17' .and. post_abig17) .OR. & + (isis=='abi_gr' .and. post_abigr) .OR. & (isis=='seviri_m10' .and. iget(876)>0) )then print*,'obstype, isis= ',obstype,isis ! isis='amsua_n15' @@ -558,6 +581,8 @@ SUBROUTINE CALRAD_WCLOUD 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 + if(isis=='abi_gr')channelinfo(sensorindex)%WMO_Satellite_Id=270 + if(isis=='abi_gr')channelinfo(sensorindex)%WMO_Sensor_Id=617 allocate(rtsolution (channelinfo(sensorindex)%n_channels,1)) allocate(tb(im,jsta:jend,channelinfo(sensorindex)%n_channels)) @@ -639,7 +664,8 @@ SUBROUTINE CALRAD_WCLOUD (isis=='amsre_aqua' .and. (iget(483) > 0 .or. iget(484) > 0 & .or. iget(485) > 0 .or. iget(486) > 0)) .OR. & (isis=='tmi_trmm' .and. (iget(488) > 0 .or. iget(489) > 0 & - .or. iget(490) > 0 .or. iget(491) > 0)) )then + .or. iget(490) > 0 .or. iget(491) > 0)) .OR. & + (isis=='abi_gr' .and. post_abigr) )then do j=jsta,jend do i=1,im @@ -1157,6 +1183,30 @@ SUBROUTINE CALRAD_WCLOUD endif enddo endif ! end of outputting goes 12 + if (isis=='abi_gr')then ! writing goes-r nadir to grib2 + nc=0 + do ixchan=1,10 + igot=iget(957+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-r nadir + end if nadir ! end if for computing nadir simulated radiance diff --git a/sorc/ncep_post.fd/RQSTFLD.F b/sorc/ncep_post.fd/RQSTFLD.F index cf5718c0c..6dda3af35 100644 --- a/sorc/ncep_post.fd/RQSTFLD.F +++ b/sorc/ncep_post.fd/RQSTFLD.F @@ -25,7 +25,7 @@ module RQSTFLD_mod implicit none ! ! increase MXFLD each time you add a new field - INTEGER, PARAMETER :: MXFLD=957 + INTEGER, PARAMETER :: MXFLD=975 #ifdef COMMCODE INTEGER, PARAMETER :: MXLVL=70 #else @@ -2573,6 +2573,46 @@ module RQSTFLD_mod DATA IFILV(957),AVBL(957),IQ(957),IS(957),AVBLGRB2(957) & & /1,'CRITICAL ANGLE ',157,116, & & 'CRITICAL ANGLE ON spec_pres_above_grnd'/ + DATA IFILV(958),AVBL(958),IQ(958),IS(958),AVBLGRB2(958) & + & /1,'GR CH7 NADIR ',118,109, & + & 'GR CH7 ABI TB TOA '/ !Table 130 + + DATA IFILV(959),AVBL(959),IQ(959),IS(959),AVBLGRB2(959) & + & /1,'GR CH8 NADIR ',118,109, & + & 'GR CH8 ABI TB TOA '/ !Table 130 + + DATA IFILV(960),AVBL(960),IQ(960),IS(960),AVBLGRB2(960) & + & /1,'GR CH9 NADIR ',118,109, & + & 'GR CH9 ABI TB TOA '/ !Table 130 + + DATA IFILV(961),AVBL(961),IQ(961),IS(961),AVBLGRB2(961) & + & /1,'GR CH10 NADIR ',118,109, & + & 'GR CH10 ABI TB TOA '/ !Table 130 + + DATA IFILV(962),AVBL(962),IQ(962),IS(962),AVBLGRB2(962) & + & /1,'GR CH11 NADIR ',118,109, & + & 'GR CH11 ABI TB TOA '/ !Table 130 + + DATA IFILV(963),AVBL(963),IQ(963),IS(963),AVBLGRB2(963) & + & /1,'GR CH12 NADIR ',118,109, & + & 'GR CH12 ABI TB TOA '/ !Table 130 + + DATA IFILV(964),AVBL(964),IQ(964),IS(964),AVBLGRB2(964) & + & /1,'GR CH13 NADIR ',118,109, & + & 'GR CH13 ABI TB TOA '/ !Table 130 + + DATA IFILV(965),AVBL(965),IQ(965),IS(965),AVBLGRB2(965) & + & /1,'GR CH14 NADIR ',118,109, & + & 'GR CH14 ABI TB TOA '/ !Table 130 + + DATA IFILV(966),AVBL(966),IQ(966),IS(966),AVBLGRB2(966) & + & /1,'GR CH15 NADIR ',118,109, & + & 'GR CH15 ABI TB TOA '/ !Table 130 + + DATA IFILV(967),AVBL(967),IQ(967),IS(967),AVBLGRB2(967) & + & /1,'GR CH16 NADIR ',118,109, & + & 'GR CH16 ABI TB TOA '/ !Table 130 + !end initialization ! From 4b2a3c01ff6a760546d702070b712f2f0ef60e19 Mon Sep 17 00:00:00 2001 From: YaliMao-NOAA <53870326+YaliMao-NOAA@users.noreply.github.com> Date: Thu, 21 Nov 2019 13:38:05 -0500 Subject: [PATCH 12/21] Output 3D WAFS products to standard atmospheric pressuer levels, not on (#18) * Output 3D WAFS products to standard atmospheric pressuer levels, not on model pressure levels. 1. 3D WAFS products include U/V/T/RH/VVEL/ABSV, icing and GTG. 2. GTG processing becomes part of WAFS product processing. 3. New code sorc/ncep_post.fd/MDL2STD_P.f is in charge of this. 4. sorc/ncep_post.fd/FDLVL.f is modified to process multiple 3D fields on the same vertical levels. 5. Modified for control file in sorc/ncep_post.fd/SET_LVLSXML.f 6. New control files for WAFS analysis, FF 03-36 and FF >=42 7. Icing and GTG is moved from MDL2P to MDL2STD_P. 8. sorc/ncep_post.fd/CALVOR.f is modified to take of SPVAL input values. 9. parm/post_avblflds.xml moves icing and GTG from ISOBARIC_SFC to STD_ISOBARIC_SFC, add U/V/T/RH/VVEL/ABSV on STD_ISOBARIC_SFC 10. scripts/exgfs_nceppost.sh.ecf removed GTG and added WAFS 11. Added sorc/ncep_post_gtg.fd and modified sorc/build_ncep_post.sh to keep GTG code private * Make a clean copy of UPP WAFS branch for general UPP --- parm/post_avblflds.xml | 126 +++- parm/postcntrl_gfs.xml | 14 - parm/postcntrl_gfs_two.xml | 14 - parm/postcntrl_gfs_wafs.xml | 150 ++++ ...gfs_gtg.xml => postcntrl_gfs_wafs_anl.xml} | 19 +- parm/postcntrl_gfs_wafs_ff.xml | 73 ++ parm/postxconfig-NT-GEFS-F00.txt | 76 +- parm/postxconfig-NT-GEFS.txt | 76 +- parm/postxconfig-NT-GFS-GTG.txt | 129 ---- parm/postxconfig-NT-GFS-TWO.txt | 76 +- parm/postxconfig-NT-GFS-WAFS-ANL.txt | 129 ++++ parm/postxconfig-NT-GFS-WAFS-FF.txt | 277 +++++++ parm/postxconfig-NT-GFS-WAFS.txt | 684 ++++++++++++++++++ parm/postxconfig-NT-GFS.txt | 76 +- scripts/exgfs_nceppost.sh.ecf | 125 ++-- sorc/ncep_post.fd/CALVOR.f | 23 + sorc/ncep_post.fd/FDLVL.f | 485 +++++++++++-- sorc/ncep_post.fd/MDL2P.f | 210 +----- sorc/ncep_post.fd/MDL2STD_P.f | 562 ++++++++++++++ sorc/ncep_post.fd/MISCLN.f | 162 ++--- sorc/ncep_post.fd/PROCESS.f | 6 + sorc/ncep_post.fd/SET_LVLSXML.f | 11 +- sorc/ncep_post.fd/makefile_module | 2 +- 23 files changed, 2585 insertions(+), 920 deletions(-) create mode 100755 parm/postcntrl_gfs_wafs.xml rename parm/{postcntrl_gfs_gtg.xml => postcntrl_gfs_wafs_anl.xml} (51%) create mode 100755 parm/postcntrl_gfs_wafs_ff.xml delete mode 100644 parm/postxconfig-NT-GFS-GTG.txt create mode 100644 parm/postxconfig-NT-GFS-WAFS-ANL.txt create mode 100644 parm/postxconfig-NT-GFS-WAFS-FF.txt create mode 100644 parm/postxconfig-NT-GFS-WAFS.txt create mode 100644 sorc/ncep_post.fd/MDL2STD_P.f diff --git a/parm/post_avblflds.xml b/parm/post_avblflds.xml index f2358d259..c32b5ccc9 100755 --- a/parm/post_avblflds.xml +++ b/parm/post_avblflds.xml @@ -4018,8 +4018,8 @@ 450 - ICIP_ON_ISOBARIC_SFC - Total Icing Potential Diagnostic on isobaric sfc + ICIP_ON_STD_ISOBARIC_SFC + Total Icing Potential Diagnostic on standard atmospheric isobaric sfc ICIP isobaric_sfc 3.0 @@ -4143,10 +4143,10 @@ 4.0 - + 464 - EDPARM_GTG_ON_ISOBARIC_SFC + EDPARM_GTG_ON_STD_ISOBARIC_SFC EDPARM isobaric_sfc 3.0 @@ -4154,7 +4154,7 @@ 465 - CAT_GTG_ON_ISOBARIC_SFC + CAT_GTG_ON_STD_ISOBARIC_SFC CATEDR isobaric_sfc 3.0 @@ -4162,7 +4162,7 @@ 466 - MWTURB_GTG_ON_ISOBARIC_SFC + MWTURB_GTG_ON_STD_ISOBARIC_SFC MWTURB isobaric_sfc 3.0 @@ -4195,12 +4195,11 @@ 480 - ICSEV_ON_ISOBARIC_SFC - Icing severity on isobaric levels - ICSEV - NCEP + ICESEV_ON_STD_ISOBARIC_SFC + Icing severity on standard atmospheric isobaric levels + ICESEV isobaric_sfc - 3.0 + 1.0 @@ -4500,6 +4499,111 @@ 6.0 + + + 518 + HGT_ON_STD_ISOBARIC_SFC + HGT + isobaric_sfc + 6.0 + + + + 519 + TMP_ON_STD_ISOBARIC_SFC + TMP + isobaric_sfc + 3.0 + + + + 520 + UGRD_ON_STD_ISOBARIC_SFC + UGRD + isobaric_sfc + 4.0 + + + + 521 + VGRD_ON_STD_ISOBARIC_SFC + VGRD + isobaric_sfc + 4.0 + + + + 522 + SPFH_ON_STD_ISOBARIC_SFC + SPFH + isobaric_sfc + 2.0 + + + + 523 + RH_ON_STD_ISOBARIC_SFC + RH + isobaric_sfc + 2.0 + + + + 524 + VVEL_ON_STD_ISOBARIC_SFC + VVEL + isobaric_sfc + 5.0 + + + + 525 + ABSV_ON_STD_ISOBARIC_SFC + ABSV + isobaric_sfc + 4.0 + + + + 526 + CLWMR_ON_STD_ISOBARIC_SFC + CLWMR + isobaric_sfc + 3.0 + + + + 527 + ICMR_ON_STD_ISOBARIC_SFC + ICMR + isobaric_sfc + 3.0 + + + + 528 + RWMR_ON_STD_ISOBARIC_SFC + RWMR + isobaric_sfc + 3.0 + + + + 529 + SNMR_ON_STD_ISOBARIC_SFC + SNMR + isobaric_sfc + 3.0 + + + + 530 + GRLE_ON_STD_ISOBARIC_SFC + GRLE + isobaric_sfc + 3.0 + + 551 CSNOW_ON_SURFACE diff --git a/parm/postcntrl_gfs.xml b/parm/postcntrl_gfs.xml index e3e008044..0426cdd20 100755 --- a/parm/postcntrl_gfs.xml +++ b/parm/postcntrl_gfs.xml @@ -124,20 +124,6 @@ 3.0 - - ICIP_ON_ISOBARIC_SFC - 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 - - - - ICSEV_ON_ISOBARIC_SFC - 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 - - REFC_ON_ENTIRE_ATMOS NCEP diff --git a/parm/postcntrl_gfs_two.xml b/parm/postcntrl_gfs_two.xml index ea10cf1e3..e6d26efcd 100755 --- a/parm/postcntrl_gfs_two.xml +++ b/parm/postcntrl_gfs_two.xml @@ -124,20 +124,6 @@ 3.0 - - ICIP_ON_ISOBARIC_SFC - 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 - - - - ICSEV_ON_ISOBARIC_SFC - 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 - - REFC_ON_ENTIRE_ATMOS NCEP diff --git a/parm/postcntrl_gfs_wafs.xml b/parm/postcntrl_gfs_wafs.xml new file mode 100755 index 000000000..b7ce99ed6 --- /dev/null +++ b/parm/postcntrl_gfs_wafs.xml @@ -0,0 +1,150 @@ + + + + + GFSPRS + 0 + ncep_nco + v2003 + local_tab_yes1 + fcst + oper + fcst + fcst + hour + nws_ncep + gfs_avn + complex_packing_spatial_diff + 2nd_ord_sptdiff + fltng_pnt + lossless + + + EDPARM_GTG_ON_STD_ISOBARIC_SFC + 7000. 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 + + + + CAT_GTG_ON_STD_ISOBARIC_SFC + 7000. 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 + + + + MWTURB_GTG_ON_STD_ISOBARIC_SFC + 7000. 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 + + + + ICIP_ON_STD_ISOBARIC_SFC + 7000. 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 + + + + ICESEV_ON_STD_ISOBARIC_SFC + 7000. 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. + 1.0 + + + + HGT_ON_STD_ISOBARIC_SFC + 7000. 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 + + + + TMP_ON_STD_ISOBARIC_SFC + 7000. 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 + + + + UGRD_ON_STD_ISOBARIC_SFC + 7000. 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 + + + + VGRD_ON_STD_ISOBARIC_SFC + 7000. 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 + + + + SPFH_ON_STD_ISOBARIC_SFC + 7000. 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 + + + + RH_ON_STD_ISOBARIC_SFC + 7000. 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 + + + + VVEL_ON_STD_ISOBARIC_SFC + 7000. 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 + + + + ABSV_ON_STD_ISOBARIC_SFC + 7000. 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 + + + + CLWMR_ON_STD_ISOBARIC_SFC + 7000. 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 + + + + ICMR_ON_STD_ISOBARIC_SFC + 7000. 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 + + + + RWMR_ON_STD_ISOBARIC_SFC + 7000. 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 + + + + SNMR_ON_STD_ISOBARIC_SFC + 7000. 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 + + + + GRLE_ON_STD_ISOBARIC_SFC + 7000. 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 + + + + + diff --git a/parm/postcntrl_gfs_gtg.xml b/parm/postcntrl_gfs_wafs_anl.xml similarity index 51% rename from parm/postcntrl_gfs_gtg.xml rename to parm/postcntrl_gfs_wafs_anl.xml index 7ea93f985..75f789575 100755 --- a/parm/postcntrl_gfs_gtg.xml +++ b/parm/postcntrl_gfs_wafs_anl.xml @@ -20,25 +20,26 @@ lossless - EDPARM_GTG_ON_ISOBARIC_SFC - 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. + TMP_ON_STD_ISOBARIC_SFC + 10000. 15000. 20000. 25000. 30000. 35000. 40000. 45000. 50000. 55000. 60000. + 65000. 70000. 75000. 80000. 85000. 90000. 95000. 100000. 3.0 - CAT_GTG_ON_ISOBARIC_SFC - 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. + UGRD_ON_STD_ISOBARIC_SFC + 10000. 15000. 20000. 25000. 30000. 35000. 40000. 45000. 50000. 55000. 60000. + 65000. 70000. 75000. 80000. 85000. 90000. 95000. 100000. 3.0 - MWTURB_GTG_ON_ISOBARIC_SFC - 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. + VGRD_ON_STD_ISOBARIC_SFC + 10000. 15000. 20000. 25000. 30000. 35000. 40000. 45000. 50000. 55000. 60000. + 65000. 70000. 75000. 80000. 85000. 90000. 95000. 100000. 3.0 + diff --git a/parm/postcntrl_gfs_wafs_ff.xml b/parm/postcntrl_gfs_wafs_ff.xml new file mode 100755 index 000000000..9cbb8faff --- /dev/null +++ b/parm/postcntrl_gfs_wafs_ff.xml @@ -0,0 +1,73 @@ + + + + + GFSPRS + 0 + ncep_nco + v2003 + local_tab_yes1 + fcst + oper + fcst + fcst + hour + nws_ncep + gfs_avn + complex_packing_spatial_diff + 2nd_ord_sptdiff + fltng_pnt + lossless + + + HGT_ON_STD_ISOBARIC_SFC + 7000. 10000. 15000. 20000. 25000. 30000. 35000. 40000. 45000. 50000. 55000. 60000. + 65000. 70000. 75000. 80000. 85000. 90000. 95000. 100000. + 3.0 + + + + TMP_ON_STD_ISOBARIC_SFC + 7000. 10000. 15000. 20000. 25000. 30000. 35000. 40000. 45000. 50000. 55000. 60000. + 65000. 70000. 75000. 80000. 85000. 90000. 95000. 100000. + 3.0 + + + + RH_ON_STD_ISOBARIC_SFC + 7000. 10000. 15000. 20000. 25000. 30000. 35000. 40000. 45000. 50000. 55000. 60000. + 65000. 70000. 75000. 80000. 85000. 90000. 95000. 100000. + 3.0 + + + + VVEL_ON_STD_ISOBARIC_SFC + 7000. 10000. 15000. 20000. 25000. 30000. 35000. 40000. 45000. 50000. 55000. 60000. + 65000. 70000. 75000. 80000. 85000. 90000. 95000. 100000. + 3.0 + + + + UGRD_ON_STD_ISOBARIC_SFC + 7000. 10000. 15000. 20000. 25000. 30000. 35000. 40000. 45000. 50000. 55000. 60000. + 65000. 70000. 75000. 80000. 85000. 90000. 95000. 100000. + 3.0 + + + + VGRD_ON_STD_ISOBARIC_SFC + 7000. 10000. 15000. 20000. 25000. 30000. 35000. 40000. 45000. 50000. 55000. 60000. + 65000. 70000. 75000. 80000. 85000. 90000. 95000. 100000. + 3.0 + + + + ABSV_ON_STD_ISOBARIC_SFC + 7000. 10000. 15000. 20000. 25000. 30000. 35000. 40000. 45000. 50000. 55000. 60000. + 65000. 70000. 75000. 80000. 85000. 90000. 95000. 100000. + 3.0 + + + + + diff --git a/parm/postxconfig-NT-GEFS-F00.txt b/parm/postxconfig-NT-GEFS-F00.txt index f2dc25ad1..d0ecadab1 100644 --- a/parm/postxconfig-NT-GEFS-F00.txt +++ b/parm/postxconfig-NT-GEFS-F00.txt @@ -1,5 +1,5 @@ 1 -130 +128 GFSPRS 0 ncep_nco @@ -387,80 +387,6 @@ isobaric_sfc ? ? ? -450 -ICIP_ON_ISOBARIC_SFC -Total Icing Potential Diagnostic on isobaric sfc -1 -tmpl4_0 -ICIP -? -? -isobaric_sfc -0 -? -6 -30000. 40000. 50000. 60000. 70000. 80000. -? -0 -? -0 -? -? -? -0 -0.0 -0 -0.0 -? -0 -0.0 -0 -0.0 -1 -3.0 -0 -0 -0 -? -? -? -480 -ICSEV_ON_ISOBARIC_SFC -Icing severity on isobaric levels -1 -tmpl4_0 -ICSEV -NCEP -? -isobaric_sfc -0 -? -6 -30000. 40000. 50000. 60000. 70000. 80000. -? -0 -? -0 -? -? -? -0 -0.0 -0 -0.0 -? -0 -0.0 -0 -0.0 -1 -3.0 -0 -0 -0 -? -? -? 23 MSLET_ON_MEAN_SEA_LVL ? diff --git a/parm/postxconfig-NT-GEFS.txt b/parm/postxconfig-NT-GEFS.txt index 8de79446f..f99cb3c10 100644 --- a/parm/postxconfig-NT-GEFS.txt +++ b/parm/postxconfig-NT-GEFS.txt @@ -1,5 +1,5 @@ 1 -174 +172 GFSPRS 0 ncep_nco @@ -387,80 +387,6 @@ isobaric_sfc ? ? ? -450 -ICIP_ON_ISOBARIC_SFC -Total Icing Potential Diagnostic on isobaric sfc -1 -tmpl4_0 -ICIP -? -? -isobaric_sfc -0 -? -6 -30000. 40000. 50000. 60000. 70000. 80000. -? -0 -? -0 -? -? -? -0 -0.0 -0 -0.0 -? -0 -0.0 -0 -0.0 -1 -3.0 -0 -0 -0 -? -? -? -480 -ICSEV_ON_ISOBARIC_SFC -Icing severity on isobaric levels -1 -tmpl4_0 -ICSEV -NCEP -? -isobaric_sfc -0 -? -6 -30000. 40000. 50000. 60000. 70000. 80000. -? -0 -? -0 -? -? -? -0 -0.0 -0 -0.0 -? -0 -0.0 -0 -0.0 -1 -3.0 -0 -0 -0 -? -? -? 23 MSLET_ON_MEAN_SEA_LVL ? diff --git a/parm/postxconfig-NT-GFS-GTG.txt b/parm/postxconfig-NT-GFS-GTG.txt deleted file mode 100644 index da10e65dd..000000000 --- a/parm/postxconfig-NT-GFS-GTG.txt +++ /dev/null @@ -1,129 +0,0 @@ -1 -3 -GFSPRS -0 -ncep_nco -v2003 -local_tab_yes1 -fcst -oper -fcst -fcst -hour -nws_ncep -gfs_avn -complex_packing_spatial_diff -2nd_ord_sptdiff -fltng_pnt -lossless -464 -EDPARM_GTG_ON_ISOBARIC_SFC -? -1 -tmpl4_0 -EDPARM -? -? -isobaric_sfc -0 -? -37 -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 -? -? -? -465 -CAT_GTG_ON_ISOBARIC_SFC -? -1 -tmpl4_0 -CATEDR -? -? -isobaric_sfc -0 -? -37 -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 -? -? -? -466 -MWTURB_GTG_ON_ISOBARIC_SFC -? -1 -tmpl4_0 -MWTURB -? -? -isobaric_sfc -0 -? -37 -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 -? -? -? diff --git a/parm/postxconfig-NT-GFS-TWO.txt b/parm/postxconfig-NT-GFS-TWO.txt index 057d46f06..8cb063747 100644 --- a/parm/postxconfig-NT-GFS-TWO.txt +++ b/parm/postxconfig-NT-GFS-TWO.txt @@ -1,6 +1,6 @@ 2 105 -185 +183 GFSPRS 0 ncep_nco @@ -572,80 +572,6 @@ isobaric_sfc ? ? ? -450 -ICIP_ON_ISOBARIC_SFC -Total Icing Potential Diagnostic on isobaric sfc -1 -tmpl4_0 -ICIP -? -? -isobaric_sfc -0 -? -37 -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 -? -? -? -480 -ICSEV_ON_ISOBARIC_SFC -Icing severity on isobaric levels -1 -tmpl4_0 -ICSEV -NCEP -? -isobaric_sfc -0 -? -37 -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 -? -? -? 252 REFC_ON_ENTIRE_ATMOS ? diff --git a/parm/postxconfig-NT-GFS-WAFS-ANL.txt b/parm/postxconfig-NT-GFS-WAFS-ANL.txt new file mode 100644 index 000000000..55875c4f0 --- /dev/null +++ b/parm/postxconfig-NT-GFS-WAFS-ANL.txt @@ -0,0 +1,129 @@ +1 +3 +GFSPRS +0 +ncep_nco +v2003 +local_tab_yes1 +fcst +oper +fcst +fcst +hour +nws_ncep +gfs_avn +complex_packing_spatial_diff +2nd_ord_sptdiff +fltng_pnt +lossless +519 +TMP_ON_STD_ISOBARIC_SFC +? +1 +tmpl4_0 +TMP +? +? +isobaric_sfc +0 +? +19 +10000. 15000. 20000. 25000. 30000. 35000. 40000. 45000. 50000. 55000. 60000. 65000. 70000. 75000. 80000. 85000. 90000. 95000. 100000. +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +3.0 +0 +0 +0 +? +? +? +520 +UGRD_ON_STD_ISOBARIC_SFC +? +1 +tmpl4_0 +UGRD +? +? +isobaric_sfc +0 +? +19 +10000. 15000. 20000. 25000. 30000. 35000. 40000. 45000. 50000. 55000. 60000. 65000. 70000. 75000. 80000. 85000. 90000. 95000. 100000. +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +3.0 +0 +0 +0 +? +? +? +521 +VGRD_ON_STD_ISOBARIC_SFC +? +1 +tmpl4_0 +VGRD +? +? +isobaric_sfc +0 +? +19 +10000. 15000. 20000. 25000. 30000. 35000. 40000. 45000. 50000. 55000. 60000. 65000. 70000. 75000. 80000. 85000. 90000. 95000. 100000. +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +3.0 +0 +0 +0 +? +? +? diff --git a/parm/postxconfig-NT-GFS-WAFS-FF.txt b/parm/postxconfig-NT-GFS-WAFS-FF.txt new file mode 100644 index 000000000..869f46b4c --- /dev/null +++ b/parm/postxconfig-NT-GFS-WAFS-FF.txt @@ -0,0 +1,277 @@ +1 +7 +GFSPRS +0 +ncep_nco +v2003 +local_tab_yes1 +fcst +oper +fcst +fcst +hour +nws_ncep +gfs_avn +complex_packing_spatial_diff +2nd_ord_sptdiff +fltng_pnt +lossless +518 +HGT_ON_STD_ISOBARIC_SFC +? +1 +tmpl4_0 +HGT +? +? +isobaric_sfc +0 +? +20 +7000. 10000. 15000. 20000. 25000. 30000. 35000. 40000. 45000. 50000. 55000. 60000. 65000. 70000. 75000. 80000. 85000. 90000. 95000. 100000. +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +3.0 +0 +0 +0 +? +? +? +519 +TMP_ON_STD_ISOBARIC_SFC +? +1 +tmpl4_0 +TMP +? +? +isobaric_sfc +0 +? +20 +7000. 10000. 15000. 20000. 25000. 30000. 35000. 40000. 45000. 50000. 55000. 60000. 65000. 70000. 75000. 80000. 85000. 90000. 95000. 100000. +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +3.0 +0 +0 +0 +? +? +? +523 +RH_ON_STD_ISOBARIC_SFC +? +1 +tmpl4_0 +RH +? +? +isobaric_sfc +0 +? +20 +7000. 10000. 15000. 20000. 25000. 30000. 35000. 40000. 45000. 50000. 55000. 60000. 65000. 70000. 75000. 80000. 85000. 90000. 95000. 100000. +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +3.0 +0 +0 +0 +? +? +? +524 +VVEL_ON_STD_ISOBARIC_SFC +? +1 +tmpl4_0 +VVEL +? +? +isobaric_sfc +0 +? +20 +7000. 10000. 15000. 20000. 25000. 30000. 35000. 40000. 45000. 50000. 55000. 60000. 65000. 70000. 75000. 80000. 85000. 90000. 95000. 100000. +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +3.0 +0 +0 +0 +? +? +? +520 +UGRD_ON_STD_ISOBARIC_SFC +? +1 +tmpl4_0 +UGRD +? +? +isobaric_sfc +0 +? +20 +7000. 10000. 15000. 20000. 25000. 30000. 35000. 40000. 45000. 50000. 55000. 60000. 65000. 70000. 75000. 80000. 85000. 90000. 95000. 100000. +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +3.0 +0 +0 +0 +? +? +? +521 +VGRD_ON_STD_ISOBARIC_SFC +? +1 +tmpl4_0 +VGRD +? +? +isobaric_sfc +0 +? +20 +7000. 10000. 15000. 20000. 25000. 30000. 35000. 40000. 45000. 50000. 55000. 60000. 65000. 70000. 75000. 80000. 85000. 90000. 95000. 100000. +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +3.0 +0 +0 +0 +? +? +? +525 +ABSV_ON_STD_ISOBARIC_SFC +? +1 +tmpl4_0 +ABSV +? +? +isobaric_sfc +0 +? +20 +7000. 10000. 15000. 20000. 25000. 30000. 35000. 40000. 45000. 50000. 55000. 60000. 65000. 70000. 75000. 80000. 85000. 90000. 95000. 100000. +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +3.0 +0 +0 +0 +? +? +? diff --git a/parm/postxconfig-NT-GFS-WAFS.txt b/parm/postxconfig-NT-GFS-WAFS.txt new file mode 100644 index 000000000..f30b9b89f --- /dev/null +++ b/parm/postxconfig-NT-GFS-WAFS.txt @@ -0,0 +1,684 @@ +1 +18 +GFSPRS +0 +ncep_nco +v2003 +local_tab_yes1 +fcst +oper +fcst +fcst +hour +nws_ncep +gfs_avn +complex_packing_spatial_diff +2nd_ord_sptdiff +fltng_pnt +lossless +464 +EDPARM_GTG_ON_STD_ISOBARIC_SFC +? +1 +tmpl4_0 +EDPARM +? +? +isobaric_sfc +0 +? +38 +7000. 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 +? +? +? +465 +CAT_GTG_ON_STD_ISOBARIC_SFC +? +1 +tmpl4_0 +CATEDR +? +? +isobaric_sfc +0 +? +38 +7000. 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 +? +? +? +466 +MWTURB_GTG_ON_STD_ISOBARIC_SFC +? +1 +tmpl4_0 +MWTURB +? +? +isobaric_sfc +0 +? +38 +7000. 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 +? +? +? +450 +ICIP_ON_STD_ISOBARIC_SFC +Total Icing Potential Diagnostic on standard atmospheric isobaric sfc +1 +tmpl4_0 +ICIP +? +? +isobaric_sfc +0 +? +38 +7000. 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 +? +? +? +480 +ICESEV_ON_STD_ISOBARIC_SFC +Icing severity on standard atmospheric isobaric levels +1 +tmpl4_0 +ICESEV +? +? +isobaric_sfc +0 +? +38 +7000. 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 +1.0 +0 +0 +0 +? +? +? +518 +HGT_ON_STD_ISOBARIC_SFC +? +1 +tmpl4_0 +HGT +? +? +isobaric_sfc +0 +? +38 +7000. 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 +? +? +? +519 +TMP_ON_STD_ISOBARIC_SFC +? +1 +tmpl4_0 +TMP +? +? +isobaric_sfc +0 +? +38 +7000. 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 +? +? +? +520 +UGRD_ON_STD_ISOBARIC_SFC +? +1 +tmpl4_0 +UGRD +? +? +isobaric_sfc +0 +? +38 +7000. 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 +? +? +? +521 +VGRD_ON_STD_ISOBARIC_SFC +? +1 +tmpl4_0 +VGRD +? +? +isobaric_sfc +0 +? +38 +7000. 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 +? +? +? +522 +SPFH_ON_STD_ISOBARIC_SFC +? +1 +tmpl4_0 +SPFH +? +? +isobaric_sfc +0 +? +38 +7000. 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 +? +? +? +523 +RH_ON_STD_ISOBARIC_SFC +? +1 +tmpl4_0 +RH +? +? +isobaric_sfc +0 +? +38 +7000. 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 +? +? +? +524 +VVEL_ON_STD_ISOBARIC_SFC +? +1 +tmpl4_0 +VVEL +? +? +isobaric_sfc +0 +? +38 +7000. 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 +? +? +? +525 +ABSV_ON_STD_ISOBARIC_SFC +? +1 +tmpl4_0 +ABSV +? +? +isobaric_sfc +0 +? +38 +7000. 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 +? +? +? +526 +CLWMR_ON_STD_ISOBARIC_SFC +? +1 +tmpl4_0 +CLWMR +? +? +isobaric_sfc +0 +? +38 +7000. 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 +? +? +? +527 +ICMR_ON_STD_ISOBARIC_SFC +? +1 +tmpl4_0 +ICMR +? +? +isobaric_sfc +0 +? +38 +7000. 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 +? +? +? +528 +RWMR_ON_STD_ISOBARIC_SFC +? +1 +tmpl4_0 +RWMR +? +? +isobaric_sfc +0 +? +38 +7000. 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 +? +? +? +529 +SNMR_ON_STD_ISOBARIC_SFC +? +1 +tmpl4_0 +SNMR +? +? +isobaric_sfc +0 +? +38 +7000. 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 +? +? +? +530 +GRLE_ON_STD_ISOBARIC_SFC +? +1 +tmpl4_0 +GRLE +? +? +isobaric_sfc +0 +? +38 +7000. 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 +? +? +? diff --git a/parm/postxconfig-NT-GFS.txt b/parm/postxconfig-NT-GFS.txt index 3acde431d..f6da0dff0 100644 --- a/parm/postxconfig-NT-GFS.txt +++ b/parm/postxconfig-NT-GFS.txt @@ -1,5 +1,5 @@ 1 -186 +184 GFSPRS 0 ncep_nco @@ -571,80 +571,6 @@ isobaric_sfc ? ? ? -450 -ICIP_ON_ISOBARIC_SFC -Total Icing Potential Diagnostic on isobaric sfc -1 -tmpl4_0 -ICIP -? -? -isobaric_sfc -0 -? -37 -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 -? -? -? -480 -ICSEV_ON_ISOBARIC_SFC -Icing severity on isobaric levels -1 -tmpl4_0 -ICSEV -NCEP -? -isobaric_sfc -0 -? -37 -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 -? -? -? 252 REFC_ON_ENTIRE_ATMOS ? diff --git a/scripts/exgfs_nceppost.sh.ecf b/scripts/exgfs_nceppost.sh.ecf index 909302405..eeb14aa81 100755 --- a/scripts/exgfs_nceppost.sh.ecf +++ b/scripts/exgfs_nceppost.sh.ecf @@ -53,7 +53,7 @@ export JO=${LATB:-721} export OUTTYP=${OUTTYP:-4} export FLXF=${FLXF:-"YES"} export GOESF=${GOESF:-"YES"} -export GTGF=${GTGF:-"YES"} +export WAFSF=${WAFSF:-"NO"} export PGBF=${PGBF:-"YES"} export TCYC=${TCYC:-".t${cyc}z."} export OUTPUT_FILE=${OUTPUT_FILE:-"nemsio"} @@ -185,6 +185,45 @@ then fi rm pgbfile pgifile pgbfile.grib2 tfile prmsl h5wav # ecflow_client --event release_pgrb2_anl + +########################## WAFS U/V/T analysis start ########################## +# U/V/T on ICAO standard atmospheric pressure levels for WAFS verification + if [ $WAFSF = "YES" ] ; then + if [[ $RUN = gfs && $GRIBVERSION = 'grib2' ]] ; then + export OUTTYP=${OUTTYP:-4} + + export PostFlatFile=$PARMpost/postxconfig-NT-GFS-WAFS-ANL.txt + export CTLFILE=$PARMpost/postcntrl_gfs_wafs_anl.xml + + export PGBOUT=wafsfile + export PGIOUT=wafsifile + + $POSTGPSH + export err=$?; err_chk + + # WAFS package doesn't process this part. + # Need to be saved for WAFS U/V/T verification, + # resolution higher than WAFS 1.25 deg for future compatibility + wafsgrid="latlon 0:1440:0.25 90:721:-0.25" + $WGRIB2 $PGBOUT -set_grib_type same -new_grid_winds earth \ + -new_grid_interpolation bilinear -set_bitmap 1 \ + -new_grid $wafsgrid ${PGBOUT}.tmp + + if test $SENDCOM = "YES" + then + cp ${PGBOUT}.tmp $COMOUT/${PREFIX}wafs.0p25.anl + $WGRIB2 -s ${PGBOUT}.tmp > $COMOUT/${PREFIX}wafs.0p25.anl.idx + + if [ $SENDDBN = YES ]; then + $DBNROOT/bin/dbn_alert MODEL GFS_WAFS_GB2 $job $COMOUT/${PREFIX}wafs.0p25.anl + $DBNROOT/bin/dbn_alert MODEL GFS_WAFS_GB2 $job $COMOUT/${PREFIX}wafs.0p25.anl.idx + fi + fi + rm $PGBOUT ${PGBOUT}.tmp + fi + fi +########################## WAFS U/V/T analysis end ########################## + fi #---------------------------------- @@ -454,67 +493,49 @@ do fi # end of satellite processing -########################## GTG start ########################## -# process gtg turbulence separately so that master pgb and -# satellite look alike gets out in time. - -# process gtg turbulence only when fhr is every 3 hour between [3, 36] - if [[ $fhr -ge 3 && $fhr -le 36 && $((fhr%3)) -eq 0 && $GTGF = "YES" ]] ; then - export OUTTYP=${OUTTYP:-4} - -# specify output file name from chgres which is input file name to nceppost -# if model already runs gfs io, make sure GFSOUT is linked to the gfsio file -# new imported variable for global_nceppost.sh - export GFSOUT=${PREFIX}gfsio${fhr} - - # gtg has its own configurations - cp $PARMpost/gtg.config.gfs gtg.config - cp $PARMpost/gtg_imprintings.txt imprintings.txt - - if [[ $RUN = gfs && $GRIBVERSION = 'grib2' ]] ; then - export PostFlatFile=$PARMpost/postxconfig-NT-GFS-GTG.txt - export CTLFILE=${CTLFILEGTG:-$PARMpost/postcntrl_gfs_gtg.xml} +########################## WAFS start ########################## +# Generate WAFS products on ICAO standard atmospheric pressure level. +# Do not need to be sent out to public, WAFS package will process the data. + # WAFS data is processed every 3 forecast hour + if [[ $WAFSF = "YES" && $((fhr%3)) -eq 0 && $fhr -le 120 ]] ; then + if [[ $RUN = gfs && $GRIBVERSION = 'grib2' ]] ; then + export OUTTYP=${OUTTYP:-4} + + # Control file of forecast hours 3-36 is superset of other forecast hours + # and has more levels + # process icing and gtg turbulence only when fhr is between [3, 36] + if [[ $fhr -ge 3 && $fhr -le 36 ]] ; then + export PostFlatFile=$PARMpost/postxconfig-NT-GFS-WAFS.txt + export CTLFILE=$PARMpost/postcntrl_gfs_wafs.xml + + # gtg has its own configurations + cp $PARMpost/gtg.config.gfs gtg.config + cp $PARMpost/gtg_imprintings.txt imprintings.txt + else + export PostFlatFile=$PARMpost/postxconfig-NT-GFS-WAFS-FF.txt + export CTLFILE=$PARMpost/postcntrl_gfs_wafs_ff.xml + fi - export FLXIOUT=flxifile - export PGBOUT=gtgfile - export PGIOUT=gtgifile - export FILTER=0 - export IGEN=$IGEN_GFS + export PGBOUT=wafsfile + export PGIOUT=wafsifile $POSTGPSH export err=$?; err_chk - SPECIALFL=${PREFIX}gtg.grb2 - SPECIALFLIDX=${PREFIX}gtg.grb2i - SPECIALFL0p25=${PREFIX}gtg.0p25 - -#Generate 0.25 deg. - $WGRIB2 $PGBOUT -set_grib_type same -new_grid_winds earth \ - -new_grid_interpolation bilinear \ - -set_bitmap 1 \ - -new_grid latlon 0:1440:0.25 90:721:-0.25 ${SPECIALFL0p25}.f${fhr}.grib2 - if test $SENDCOM = "YES" then - cp $PGBOUT $COMOUT/${SPECIALFL}f$fhr - cp $PGIOUT $COMOUT/${SPECIALFLIDX}f$fhr - cp ${SPECIALFL0p25}.f${fhr}.grib2 $COMOUT/${SPECIALFL0p25}.f${fhr}.grib2 - if [ $SENDDBN = YES ]; then - $DBNROOT/bin/dbn_alert MODEL GFS_GTG_GB2 $job $COMOUT/${SPECIALFL}f$fhr - $DBNROOT/bin/dbn_alert MODEL GFS_GTG_0P25_GB2 $job $COMOUT/${SPECIALFL0p25}.f${fhr}.grib2 - fi + cp $PGBOUT $COMOUT/${PREFIX}wafs.grb2f$fhr + cp $PGIOUT $COMOUT/${PREFIX}wafs.grb2if$fhr +! if [ $SENDDBN = YES ]; then +! $DBNROOT/bin/dbn_alert MODEL GFS_GTG_GB2 $job $COMOUT/${SPECIALFL}f$fhr +! $DBNROOT/bin/dbn_alert MODEL GFS_GTG_0P25_GB2 $job $COMOUT/${SPECIALFL0p25}.f${fhr}.grib2 +! fi fi - else - echo 'Warning!!!! GTG is NOT generated!!! Currently GTG only supports GFS and grib2.' fi - else - echo 'Warning!!!! GTG is NOT generated!!! Currently GTG forecast hour is every 3 hour between [3, 36].' - fi # $fhr [3, 36] -########################### GTG end ########################### - + fi +########################### WAFS end ########################### - rm flxfile flxifile gtgfile gtgifile -# end of gtg turbulence processing + rm flxfile flxifile wafsfile wafsifile done diff --git a/sorc/ncep_post.fd/CALVOR.f b/sorc/ncep_post.fd/CALVOR.f index 6a80bca05..096455454 100644 --- a/sorc/ncep_post.fd/CALVOR.f +++ b/sorc/ncep_post.fd/CALVOR.f @@ -18,6 +18,7 @@ SUBROUTINE CALVOR(UWND,VWND,ABSV) ! 05-07-07 B ZHOU - ADD RSM IN COMPUTING DVDX, DUDY AND UAVG ! 13-08-09 S MOORTHI - Optimize the vorticity loop including threading ! 16-08-05 S Moorthi - add zonal filetering +! 2019-10-17 Y Mao - Skip calculation when U/V is SPVAL ! @@ -185,6 +186,8 @@ SUBROUTINE CALVOR(UWND,VWND,ABSV) im1 = iw(i) ii = i + imb2 if (ii > im) ii = ii - im + if(VWND(ip1,J)==SPVAL .or. VWND(im1,J)==SPVAL .or. & + UWND(II,J)==SPVAL .or. UWND(I,J+1)==SPVAL) cycle ABSV(I,J) = ((VWND(ip1,J)-VWND(im1,J))*wrk2(i,j) & & + (UWND(II,J)*COSL(II,J) & & + UWND(I,J+1)*COSL(I,J+1))*wrk3(i,j)) * wrk1(i,j) & @@ -195,6 +198,8 @@ SUBROUTINE CALVOR(UWND,VWND,ABSV) DO I=1,IM ip1 = ie(i) im1 = iw(i) + if(VWND(ip1,JJ)==SPVAL .or. VWND(im1,JJ)==SPVAL .or. & + UWND(I,J)==SPVAL .or. UWND(I,jj+1)==SPVAL) cycle ABSV(I,J) = ((VWND(ip1,JJ)-VWND(im1,JJ))*wrk2(i,jj) & & - (UWND(I,J)*COSL(I,J) & - UWND(I,jj+1)*COSL(I,Jj+1))*wrk3(i,jj)) * wrk1(i,jj) & @@ -208,6 +213,8 @@ SUBROUTINE CALVOR(UWND,VWND,ABSV) im1 = iw(i) ii = i + imb2 if (ii > im) ii = ii - im + if(VWND(ip1,J)==SPVAL .or. VWND(im1,J)==SPVAL .or. & + UWND(II,J)==SPVAL .or. UWND(I,J+1)==SPVAL) cycle ABSV(I,J) = ((VWND(ip1,J)-VWND(im1,J))*wrk2(i,j) & & - (UWND(II,J)*COSL(II,J) & & + UWND(I,J+1)*COSL(I,J+1))*wrk3(i,j)) * wrk1(i,j) & @@ -218,6 +225,8 @@ SUBROUTINE CALVOR(UWND,VWND,ABSV) DO I=1,IM ip1 = ie(i) im1 = iw(i) + if(VWND(ip1,JJ)==SPVAL .or. VWND(im1,JJ)==SPVAL .or. & + UWND(I,J)==SPVAL .or. UWND(I,jj+1)==SPVAL) cycle ABSV(I,J) = ((VWND(ip1,JJ)-VWND(im1,JJ))*wrk2(i,jj) & & + (UWND(I,J)*COSL(I,J) & - UWND(I,jj+1)*COSL(I,Jj+1))*wrk3(i,jj)) * wrk1(i,jj) & @@ -233,6 +242,8 @@ SUBROUTINE CALVOR(UWND,VWND,ABSV) im1 = iw(i) ii = i + imb2 if (ii > im) ii = ii - im + if(VWND(ip1,J)==SPVAL .or. VWND(im1,J)==SPVAL .or. & + UWND(I,J-1)==SPVAL .or. UWND(II,J)==SPVAL) cycle ABSV(I,J) = ((VWND(ip1,J)-VWND(im1,J))*wrk2(i,j) & & - (UWND(I,J-1)*COSL(I,J-1) & & + UWND(II,J)*COSL(II,J))*wrk3(i,j)) * wrk1(i,j) & @@ -243,6 +254,8 @@ SUBROUTINE CALVOR(UWND,VWND,ABSV) DO I=1,IM ip1 = ie(i) im1 = iw(i) + if(VWND(ip1,JJ)==SPVAL .or. VWND(im1,JJ)==SPVAL .or. & + UWND(I,jj-1)==SPVAL .or. UWND(I,J)==SPVAL) cycle ABSV(I,J) = ((VWND(ip1,JJ)-VWND(im1,JJ))*wrk2(i,jj) & & - (UWND(I,jj-1)*COSL(I,Jj-1) & & - UWND(I,J)*COSL(I,J))*wrk3(i,jj)) * wrk1(i,jj) & @@ -256,6 +269,8 @@ SUBROUTINE CALVOR(UWND,VWND,ABSV) im1 = iw(i) ii = i + imb2 if (ii > im) ii = ii - im + if(VWND(ip1,J)==SPVAL .or. VWND(im1,J)==SPVAL .or. & + UWND(I,J-1)==SPVAL .or. UWND(II,J)==SPVAL) cycle ABSV(I,J) = ((VWND(ip1,J)-VWND(im1,J))*wrk2(i,j) & & + (UWND(I,J-1)*COSL(I,J-1) & & + UWND(II,J)*COSL(II,J))*wrk3(i,j)) * wrk1(i,j) & @@ -266,6 +281,8 @@ SUBROUTINE CALVOR(UWND,VWND,ABSV) DO I=1,IM ip1 = ie(i) im1 = iw(i) + if(VWND(ip1,JJ)==SPVAL .or. VWND(im1,JJ)==SPVAL .or. & + UWND(I,jj-1)==SPVAL .or. UWND(I,J)==SPVAL) cycle ABSV(I,J) = ((VWND(ip1,JJ)-VWND(im1,JJ))*wrk2(i,jj) & & + (UWND(I,jj-1)*COSL(I,Jj-1) & & - UWND(I,J)*COSL(I,J))*wrk3(i,jj)) * wrk1(i,jj) & @@ -277,6 +294,8 @@ SUBROUTINE CALVOR(UWND,VWND,ABSV) DO I=1,IM ip1 = ie(i) im1 = iw(i) + if(VWND(ip1,J)==SPVAL .or. VWND(im1,J)==SPVAL .or. & + UWND(I,J-1)==SPVAL .or. UWND(I,J+1)==SPVAL) cycle ABSV(I,J) = ((VWND(ip1,J)-VWND(im1,J))*wrk2(i,j) & & - (UWND(I,J-1)*COSL(I,J-1) & - UWND(I,J+1)*COSL(I,J+1))*wrk3(i,j)) * wrk1(i,j) & @@ -369,6 +388,10 @@ SUBROUTINE CALVOR(UWND,VWND,ABSV) DO I=2,IM-1 R2DX = 1./DX(I,J) R2DY = 1./DY(I,J) + if(VWND(I, J)==SPVAL .or. VWND(I, J-1)==SPVAL .or. & + VWND(I-1,J)==SPVAL .or. VWND(I-1,J-1)==SPVAL .or. & + UWND(I, J)==SPVAL .or. UWND(I-1,J)==SPVAL .or. & + UWND(I,J-1)==SPVAL .or. UWND(I-1,J-1)==SPVAL) cycle DVDX = (0.5*(VWND(I,J)+VWND(I,J-1))-0.5*(VWND(I-1,J) & & + VWND(I-1,J-1)))*R2DX DUDY = (0.5*(UWND(I,J)+UWND(I-1,J))-0.5*(UWND(I,J-1) & diff --git a/sorc/ncep_post.fd/FDLVL.f b/sorc/ncep_post.fd/FDLVL.f index 1abb48e30..944dfd1ef 100644 --- a/sorc/ncep_post.fd/FDLVL.f +++ b/sorc/ncep_post.fd/FDLVL.f @@ -453,7 +453,7 @@ SUBROUTINE FDLVL(ITYPE,TFD,QFD,UFD,VFD,PFD,ICINGFD,AERFD) ! safety check to avoid tiny QFD values !KRF: Need NCAR and NMM WRF cores in this check as well? - IF(MODELNAME == 'RAPR' .OR. MODELNAME == 'NCAR' .OR. MODELNAME == 'NMM') THEN ! + IF(MODELNAME=='RAPR' .OR. MODELNAME=='NCAR' .OR. MODELNAME=='NMM') THEN ! DO 420 IFD = 1,NFD DO J=JSTA,JEND DO I=1,IM @@ -468,17 +468,16 @@ SUBROUTINE FDLVL(ITYPE,TFD,QFD,UFD,VFD,PFD,ICINGFD,AERFD) RETURN END - SUBROUTINE FDLVL_MASS(ITYPE,NFD,HTFD,QIN,QFD) + SUBROUTINE FDLVL_UV(ITYPE,NFD,HTFD,UFD,VFD) !$$$ SUBPROGRAM DOCUMENTATION BLOCK ! . . . -! SUBPROGRAM: FDLVL_MASS COMPUTES FD LEVEL FOR MASS-RELATED VARIABLE +! SUBPROGRAM: FDLVL_UV COMPUTES FD LEVEL U, V ! PRGRMMR: TREADON ORG: W/NP2 DATE: 92-12-22 ! ! ABSTRACT: -! THIS ROUTINE COMPUTES MASS-RELATED VARIABLE (TEMPERATURE, SPEC. HUM...) -! ON THE NFD(=6 by default) FD LEVELS. THE -! HEIGHT OF THESE LEVELS (IN METERS) IS GIVEN IN THE -! DATA STATEMENT BELOW. THE ALGORITHM PROCEEDS AS +! THIS ROUTINE COMPUTES U/V WIND COMPONENT ON NFD FD LEVELS. +! THE HEIGHT OF THESE LEVELS (IN METERS) IS PASSED AS AN +! INPUT PARAMETER. THE ALGORITHM PROCEEDS AS ! FOLLOWS. (AGL IN PARENTHESES) ! ! AT EACH MASS POINT MOVE UP VERTICALLY FROM THE LM-TH (LOWEST @@ -488,7 +487,331 @@ SUBROUTINE FDLVL_MASS(ITYPE,NFD,HTFD,QIN,QFD) ! LEVEL. AVERAGE THE FOUR SURROUNDING WINDS ! TO GET A MASS POINT WIND. VERTICALLY INTERPOLATE THESE ! MASS POINT WINDS TO THE TARGET FD LEVEL. CONTINUE THIS -! PROCESS UNTIL ALL NFD=6 FD LEVELS HAVE BEEN PROCESSED. +! PROCESS UNTIL ALL NFD FD LEVELS HAVE BEEN PROCESSED. +! MOVE ON TO THE NEXT MASS POINT. +! +! AVERAGING THE FOUR ABOVE GROUND WINDS TO THE MASS POINT +! WAS FOUND TO SMOOTH THE FIELD AND REDUCE THE OCCURRENCE +! OF POINT PEAK WINDS FAR IN EXCESS OF THE WINDS AT +! ADJACENT POINTS. MASS POINT VALUES ARE RETURNED. +! . +! +! PROGRAM HISTORY LOG: +! 92-12-22 RUSS TREADON +! 93-11-23 RUSS TREADON - CORRECTED ROUTINE TO COMPUTE +! FD LEVELS WITH REPECT TO MEAN SEA LEVEL. +! 94-01-04 MICHAEL BALDWIN - INCLUDE OPTIONS FOR COMPUTING +! EITHER AGL OR MSL +! 98-06-15 T BLACK - CONVERSION FROM 1-D TO 2-D +! 00-01-04 JIM TUCCILLO - MPI VERSION +! 02-01-15 MIKE BALDWIN - WRF VERSION +! 11-12-14 SARAH LU - ADD GOCART AEROSOL AERFD +! 19-25-09 Y Mao - Seperate U/V from mass +! +! USAGE: CALL FDLVL_UV(ITYPE,NFD,HTFD,UFD,VFD) +! INPUT ARGUMENT LIST: +! ITYPE - FLAG THAT DETERMINES WHETHER MSL (1) OR AGL (2) +! LEVELS ARE USED. +! NFD - NUMBER OF FD LEVELS +! HTFD - FD LEVELS +! +! OUTPUT ARGUMENT LIST: +! UFD - U WIND (M/S) ON FD LEVELS. +! VFD - V WIND (M/S) ON FD LEVELS. +! +! OUTPUT FILES: +! NONE +! +! SUBPROGRAMS CALLED: +! UTILITIES: +! +! LIBRARY: +! COMMON - +! LOOPS +! MASKS +! OPTIONS +! INDX +! +! ATTRIBUTES: +! LANGUAGE: FORTRAN +! MACHINE : CRAY C-90 +!$$$ +! +! + use vrbls3d, only: ZMID, PMID, UH, VH + use vrbls2d, only: FIS + use masks, only: LMH + use params_mod, only: GI, G + use ctlblk_mod, only: JSTA, JEND, SPVAL, JSTA_2L, JEND_2U, LM, JSTA_M, & + JEND_M, IM, JM, MODELNAME + use gridspec_mod, only: GRIDTYPE +!- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + implicit none +! +! DECLARE VARIABLES +! + integer,intent(in) :: ITYPE(NFD) + integer,intent(in) :: NFD ! coming from calling subroutine + real,intent(in) :: HTFD(NFD) + real,dimension(IM,JSTA_2L:JEND_2U,NFD),intent(out) :: UFD,VFD +! + INTEGER LVL(NFD) + INTEGER IVE(JM),IVW(JM) + REAL DZABV(NFD) +!jw + integer I,J,JVS,JVN,IE,IW,JN,JS,L,LLMH,IFD,N + integer ISTART,ISTOP,JSTART,JSTOP + real htt,htsfc,httuv,dz,rdz,delu,delv,z1,z2,htabv,htabh,htsfcv +! +!**************************************************************** +! START FDLVL_UV HERE +! +! INITIALIZE ARRAYS. +! +!$omp parallel do + DO IFD = 1,NFD + DO J=JSTA,JEND + DO I=1,IM + UFD(I,J,IFD) = SPVAL + VFD(I,J,IFD) = SPVAL + ENDDO + ENDDO + ENDDO + + IF(gridtype == 'E') THEN + JVN = 1 + JVS = -1 + do J=JSTA,JEND + IVE(J) = MOD(J,2) + IVW(J) = IVE(J)-1 + enddo + END IF + + IF(gridtype /= 'A')THEN + CALL EXCH(FIS(1:IM,JSTA_2L:JEND_2U)) + DO L=1,LM + CALL EXCH(ZMID(1:IM,JSTA_2L:JEND_2U,L)) + END DO + ISTART = 2 + ISTOP = IM-1 + JSTART = JSTA_M + JSTOP = JEND_M + ELSE + ISTART = 1 + ISTOP = IM + JSTART = JSTA + JSTOP = JEND + END IF + DO IFD = 1, NFD +! +! MSL FD LEVELS +! + IF (ITYPE(IFD) == 1) THEN +! write(6,*) 'computing above MSL' +! +! LOOP OVER HORIZONTAL GRID. +! + DO J=JSTART,JSTOP + DO I=ISTART,ISTOP + HTSFC = FIS(I,J)*GI + LLMH = NINT(LMH(I,J)) +! +! LOCATE VERTICAL INDICES OF U,V, LEVEL JUST +! ABOVE EACH FD LEVEL. +! + DO L = LM,1,-1 + HTT = ZMID(I,J,L) + IF(gridtype == 'E') THEN + IE = I+IVE(J) + IW = I+IVW(J) + JN = J+JVN + JS = J+JVS + HTTUV = 0.25*(ZMID(IW,J,L) & + + ZMID(IE,J,L)+ZMID(I,JN,L)+ZMID(I,JS,L)) + ELSE IF(gridtype=='B')THEN + IE = I+1 + IW = I + JN = J+1 + JS = J + HTTUV = 0.25*(ZMID(IW,J,L) & + + ZMID(IE,J,L)+ZMID(I,JN,L)+ZMID(IE,JN,L)) + ELSE + HTTUV = HTT + END IF + + IF (HTTUV > HTFD(IFD)) THEN + LVL(IFD) = L + DZABV(IFD) = HTTUV-HTFD(IFD) +! THIS SHOULD SET BELOW GROUND VALUES TO SPVAL + IF(HTSFC > HTFD(IFD)) THEN +!mp + LVL(IFD)=LM+1 ! CHUANG: changed to lm+1 +!mp + ENDIF +! THIS SHOULD SET BELOW GROUND VALUES TO SPVAL + + exit + ENDIF + enddo ! end of l loop +! +! COMPUTE U V AT FD LEVELS. +! + L = LVL(IFD) + IF (L < LM) THEN + IF(gridtype == 'E')THEN + IE = I+IVE(J) + IW = I+IVW(J) + JN = J+JVN + JS = J+JVS + Z1 = 0.25*(ZMID(IW,J,L) & + + ZMID(IE,J,L)+ZMID(I,JN,L)+ZMID(I,JS,L)) + Z2 = 0.25*(ZMID(IW,J,L+1) & + + ZMID(IE,J,L+1)+ZMID(I,JN,L+1)+ZMID(I,JS,L+1)) + DZ = Z1-Z2 + + ELSE IF(gridtype=='B')THEN + IE =I+1 + IW = I + JN = J+1 + JS = J + Z1 = 0.25*(ZMID(IW,J,L) & + + ZMID(IE,J,L)+ZMID(I,JN,L)+ZMID(IE,JN,L)) + Z2 = 0.25*(ZMID(IW,J,L+1) & + + ZMID(IE,J,L+1)+ZMID(I,JN,L+1)+ZMID(IE,JN,L+1)) + DZ = Z1-Z2 + ELSE + DZ = ZMID(I,J,L)-ZMID(I,J,L+1) + END IF + RDZ = 1./DZ + DELU = UH(I,J,L) - UH(I,J,L+1) + DELV = VH(I,J,L) - VH(I,J,L+1) + UFD(I,J,IFD) = UH(I,J,L) - DELU*RDZ*DZABV(IFD) + VFD(I,J,IFD) = VH(I,J,L) - DELV*RDZ*DZABV(IFD) + ELSEIF (L == LM) THEN + UFD(I,J,IFD)=UH(I,J,L) + VFD(I,J,IFD)=VH(I,J,L) + ENDIF +! + enddo ! end of i loop + enddo ! end of j loop +! END OF MSL FD LEVELS + ELSE +! write(6,*) 'computing above AGL' +! +! AGL FD LEVELS +! +! +! LOOP OVER HORIZONTAL GRID. +! + DO J=JSTART,JSTOP + DO I=ISTART,ISTOP + HTSFC = FIS(I,J)*GI + IF(gridtype == 'E') THEN + IE = I+IVE(J) + IW = I+IVW(J) + JN = J+JVN + JS = J+JVS + HTSFCV = (FIS(IW,J)+FIS(IE,J)+FIS(I,JN)+FIS(I,JS))*(0.25/G) + ELSE IF(gridtype == 'B')THEN + IE = I+1 + IW = I + JN = J+1 + JS = J + HTSFCV = (FIS(IW,J)+FIS(IE,J)+FIS(I,JN)+FIS(IE,JN))*(0.25/G) + END IF + LLMH = NINT(LMH(I,J)) +! +! LOCATE VERTICAL INDICES OF U,V, LEVEL JUST +! ABOVE EACH FD LEVEL. +! + DO L = LLMH,1,-1 + HTABH = ZMID(I,J,L)-HTSFC + IF(gridtype=='E')THEN + HTABV = 0.25*(ZMID(IW,J,L) & + + ZMID(IE,J,L)+ZMID(I,JN,L)+ZMID(I,JS,L))-HTSFCV + ELSE IF(gridtype=='B')THEN + HTABV = 0.25*(ZMID(IW,J,L) & + + ZMID(IE,J,L)+ZMID(I,JN,L)+ZMID(IE,JN,L))-HTSFCV + ELSE + HTABV = HTABH + END IF + + IF (HTABV > HTFD(IFD)) THEN + LVL(IFD) = L + DZABV(IFD) = HTABV-HTFD(IFD) +! IFD = IFD + 1 + exit + ENDIF + enddo ! end of l loop +! +! COMPUTE U V AT FD LEVELS. +! + L = LVL(IFD) + IF (L < LM) THEN + IF(gridtype == 'E')THEN + IE = I+IVE(J) + IW = I+IVW(J) + JN = J+JVN + JS = J+JVS + Z1 = 0.25*(ZMID(IW,J,L) & + + ZMID(IE,J,L)+ZMID(I,JN,L)+ZMID(I,JS,L)) + Z2 = 0.25*(ZMID(IW,J,L+1) & + + ZMID(IE,J,L+1)+ZMID(I,JN,L+1)+ZMID(I,JS,L+1)) + DZ = Z1-Z2 + ELSE IF(gridtype=='B')THEN + IE = I+1 + IW = I + JN = J+1 + JS = J + Z1 = 0.25*(ZMID(IW,J,L) & + + ZMID(IE,J,L)+ZMID(I,JN,L)+ZMID(IE,JN,L)) + Z2 = 0.25*(ZMID(IW,J,L+1) & + + ZMID(IE,J,L+1)+ZMID(I,JN,L+1)+ZMID(IE,JN,L+1)) + DZ = Z1-Z2 + ELSE + DZ = ZMID(I,J,L)-ZMID(I,J,L+1) + END IF + RDZ = 1./DZ + DELU = UH(I,J,L)-UH(I,J,L+1) + DELV = VH(I,J,L)-VH(I,J,L+1) + UFD(I,J,IFD) = UH(I,J,L) - DELU*RDZ*DZABV(IFD) + VFD(I,J,IFD) = VH(I,J,L) - DELV*RDZ*DZABV(IFD) + ELSE + UFD(I,J,IFD) = UH(I,J,L) + VFD(I,J,IFD) = VH(I,J,L) + ENDIF +! +! COMPUTE FD LEVEL T, U, AND V AT NEXT K. +! + enddo ! end of i loop + enddo ! end of j loop +! END OF AGL FD LEVELS + ENDIF + enddo ! end of IFD loop + + RETURN + END + + SUBROUTINE FDLVL_MASS(ITYPE,NFD,HTFD,NIN,QIN,QFD) +!$$$ SUBPROGRAM DOCUMENTATION BLOCK +! . . . +! SUBPROGRAM: FDLVL_MASS COMPUTES FD LEVEL FOR MASS VARIABLES +! PRGRMMR: TREADON ORG: W/NP2 DATE: 92-12-22 +! +! ABSTRACT: +! THIS ROUTINE COMPUTES MASS VARIABLES (TEMPERATURE, SPEC. HUM...) +! ON NFD FD LEVELS. THE HEIGHT OF THESE LEVELS (IN METERS) IS +! PASSED AS AN INPUT PARAMETER. THE ALGORITHM PROCEEDS AS +! FOLLOWS. (AGL IN PARENTHESES) +! +! AT EACH MASS POINT MOVE UP VERTICALLY FROM THE LM-TH (LOWEST +! ATMOSPHERIC) ETA LAYER. FIND THE ETA LAYERS WHOSE +! HEIGHT (ABOVE GROUND) BOUNDS THE TARGET FD LEVEL HEIGHT. +! VERTICALLY INTERPOLATE TO GET TEMPERATURE AT THIS FD +! LEVEL. AVERAGE THE FOUR SURROUNDING WINDS +! TO GET A MASS POINT WIND. VERTICALLY INTERPOLATE THESE +! MASS POINT WINDS TO THE TARGET FD LEVEL. CONTINUE THIS +! PROCESS UNTIL ALL NFD FD LEVELS HAVE BEEN PROCESSED. ! MOVE ON TO THE NEXT MASS POINT. ! ! AVERAGING THE FOUR ABOVE GROUND WINDS TO THE MASS POINT @@ -509,17 +832,22 @@ SUBROUTINE FDLVL_MASS(ITYPE,NFD,HTFD,QIN,QFD) ! 11-12-14 SARAH LU - ADD GOCART AEROSOL AERFD ! 17-06-01 Y Mao - ADD FD levels for GTG(EDPARM CATEDR MWTURB) and allow ! levels input from control file +! 19-09-25 Y MAO - SEPERATE MASS FROM UV +! ALLOW ARRAY OF MASS INPUT TO INTERPOLATE MULTIPLE FIELDS +! WITH THE SAME LEVELS AT ONE TIME +! DUST=>AERFD CAN BE PROCESSED WHEN NIN=NBIN_DU ! -! USAGE: CALL FDLVL_MASS(ITYPE,NFD,HTFD,QIN,QFD) +! USAGE: CALL FDLVL_MASS(ITYPE,NFD,HTFD,NIN,QIN,QFD) ! INPUT ARGUMENT LIST: ! ITYPE - FLAG THAT DETERMINES WHETHER MSL (1) OR AGL (2) ! LEVELS ARE USED. ! NFD - NUMBER OF FD LEVELS ! HTFD - FD LEVELS -! QIN - MASS POINT VALUE ON MODEL LEVELS +! NIN - NUMBER OF INPUT FIELDS +! QIN - ARRAY OF MASS POINT VALUE ON MODEL LEVELS ! ! OUTPUT ARGUMENT LIST: -! QFD - MASS POINT VALUE ON FD LEVELS. +! QFD - ARRAY OF MASS POINT VALUE ON FD LEVELS. ! ! OUTPUT FILES: ! NONE @@ -539,6 +867,21 @@ SUBROUTINE FDLVL_MASS(ITYPE,NFD,HTFD,QIN,QFD) ! MACHINE : CRAY C-90 !$$$ ! +! + +! NOTES for Q fields by Y Mao: +! The following safety check should be executed by the caller of FDLVL subroutines. +! safety check to avoid tiny QFD values +! !KRF: Need NCAR and NMM WRF cores in this check as well? +! IF(MODELNAME=='RAPR' .OR. MODELNAME=='NCAR' .OR. MODELNAME=='NMM') THEN ! +! DO IFD = 1,NFD +! DO J=JSTA,JEND +! DO I=1,IM +! if(QFD(I,J,IFD) < 1.0e-8) QFD(I,J,IFD)=0.0 +! ENDDO +! ENDDO +! ENDDO +! endif ! use vrbls3d, only: ZMID @@ -558,34 +901,45 @@ SUBROUTINE FDLVL_MASS(ITYPE,NFD,HTFD,QIN,QFD) integer,intent(in) :: ITYPE(NFD) integer,intent(in) :: NFD ! coming from calling subroutine real,intent(in) :: HTFD(NFD) - real,intent(in) :: QIN(IM,JSTA_2L:JEND_2U,LM) - real,dimension(IM,JSTA:JEND,NFD),intent(out) :: QFD + integer,intent(in) :: NIN + real,intent(in) :: QIN(IM,JSTA:JEND,LM,NIN) + real,intent(out) :: QFD(IM,JSTA:JEND,NFD,NIN) ! INTEGER LHL(NFD) REAL DZABH(NFD) - LOGICAL DONEH !jw - integer I,J,L,LLMH,IFD + integer I,J,L,LLMH,IFD,N + integer ISTART,ISTOP,JSTART,JSTOP real htt,htsfc,dz,rdz,delq,htabh ! -! Default FD LEVEL HEIGHTS IN METERS. -! DATA HTFD / 30.E0,50.E0,80.E0,100.E0,305.E0,457.E0,610.E0,914.E0,1524.E0, & -! 1829.E0,2134.E0,2743.E0,3658.E0,4572.E0,6000.E0/ -! !**************************************************************** ! START FDLVL_MASS HERE ! ! INITIALIZE ARRAYS. ! !$omp parallel do + DO N=1,NIN DO IFD = 1,NFD DO J=JSTA,JEND DO I=1,IM - QFD(I,J,IFD) = SPVAL + QFD(I,J,IFD,N) = SPVAL ENDDO ENDDO ENDDO + ENDDO + + IF(gridtype /= 'A')THEN + ISTART = 2 + ISTOP = IM-1 + JSTART = JSTA_M + JSTOP = JEND_M + ELSE + ISTART = 1 + ISTOP = IM + JSTART = JSTA + JSTOP = JEND + END IF DO IFD = 1, NFD ! @@ -596,24 +950,20 @@ SUBROUTINE FDLVL_MASS(ITYPE,NFD,HTFD,QIN,QFD) ! ! LOOP OVER HORIZONTAL GRID. ! - DO J=JSTA,JEND - DO I=1,IM + DO J=JSTART,JSTOP + DO I=ISTART,ISTOP HTSFC = FIS(I,J)*GI - LLMH = LM -! IFD = 1 + LLMH = NINT(LMH(I,J)) ! ! LOCATE VERTICAL INDICES OF Q, LEVEL JUST ! ABOVE EACH FD LEVEL. ! -! DO 22 IFD = 1, NFD - DONEH=.FALSE. - DO L = LLMH,1,-1 + DO L = LM,1,-1 HTT = ZMID(I,J,L) - IF (.NOT. DONEH .AND. HTT > HTFD(IFD)) THEN + IF (HTT > HTFD(IFD)) THEN LHL(IFD) = L DZABH(IFD) = HTT-HTFD(IFD) - DONEH = .TRUE. ! THIS SHOULD SET BELOW GROUND VALUES TO SPVAL IF(HTSFC > HTFD(IFD)) THEN !mp @@ -621,35 +971,34 @@ SUBROUTINE FDLVL_MASS(ITYPE,NFD,HTFD,QIN,QFD) !mp ENDIF ! THIS SHOULD SET BELOW GROUND VALUES TO SPVAL -! IFD = IFD + 1 -! IF (IFD.GT.NFD) GOTO 30 + + exit END IF - IF(DONEH) exit enddo ! end of l loop -! 22 CONTINUE ! ! COMPUTE Q AT FD LEVELS. ! -! DO 40 IFD = 1,NFD - L = LHL(IFD) IF (L < LM) THEN DZ = ZMID(I,J,L)-ZMID(I,J,L+1) RDZ = 1./DZ - DELQ = QIN(I,J,L)-QIN(I,J,L+1) - if(QIN(I,J,L) 0) .OR. (MODELNAME == 'RAPR') .OR.& -! NCAR GTG turbulence - (IGET(464) > 0) .OR. (IGET(465) > 0) .OR. & - (IGET(466) > 0) .OR. & + (IGET(738) > 0) .OR. (MODELNAME == 'RAPR') .OR.& ! LIFTED INDEX needs 500 mb T (IGET(030)>0) .OR. (IGET(031)>0) .OR. (IGET(075)>0)) THEN ! @@ -272,11 +264,6 @@ SUBROUTINE MDL2P(iostatusD3D) RAD(I,J) = SPVAL O3SL(I,J) = SPVAL CFRSL(I,J) = SPVAL - ICINGFSL(I,J) = SPVAL - ICINGVSL(I,J) = SPVAL - GTGSL(I,J) = SPVAL - CATSL(I,J) = SPVAL - MWTSL(I,J) = SPVAL ! !*** LOCATE VERTICAL INDEX OF MODEL MIDLAYER JUST BELOW !*** THE PRESSURE LEVEL TO WHICH WE ARE INTERPOLATING. @@ -367,13 +354,6 @@ SUBROUTINE MDL2P(iostatusD3D) IF(TTND(I,J,1) < SPVAL) RAD(I,J) = TTND(I,J,1) IF(O3(I,J,1) < SPVAL) O3SL(I,J) = O3(I,J,1) IF(CFR(I,J,1) < SPVAL) CFRSL(I,J) = CFR(I,J,1) -!GFIP - IF(ICING_GFIP(I,J,1) < SPVAL) ICINGFSL(I,J) = ICING_GFIP(I,J,1) - IF(ICING_GFIS(I,J,1) < SPVAL) ICINGVSL(I,J) = ICING_GFIS(I,J,1) -!GTG - IF(GTG(I,J,1) < SPVAL) GTGSL(I,J) = GTG(I,J,1) - IF(CAT(I,J,1) < SPVAL) CATSL(I,J) = CAT(I,J,1) - IF(MWT(I,J,1) < SPVAL) MWTSL(I,J) = MWT(I,J,1) ! DUST if (gocart_on) then DO K = 1, NBIN_DU @@ -536,51 +516,6 @@ SUBROUTINE MDL2P(iostatusD3D) IF(CFR(I,J,LL) < SPVAL .AND. CFR(I,J,LL-1) < SPVAL) & CFRSL(I,J) = CFR(I,J,LL) + (CFR(I,J,LL)-CFR(I,J,LL-1))*FACT -!GFIP - IF(ICING_GFIP(I,J,LL) < SPVAL .AND. ICING_GFIP(I,J,LL-1) < SPVAL) & - ICINGFSL(I,J) = ICING_GFIP(I,J,LL) + (ICING_GFIP(I,J,LL)-ICING_GFIP(I,J,LL-1))*FACT - ICINGFSL(I,J) = max(0.0, ICINGFSL(I,J)) - ICINGFSL(I,J) = min(1.0, ICINGFSL(I,J)) - IF(ICING_GFIS(I,J,LL) < SPVAL .AND. ICING_GFIS(I,J,LL-1) < SPVAL) & - ICINGVSL(I,J) = ICING_GFIS(I,J,LL) + (ICING_GFIS(I,J,LL)-ICING_GFIS(I,J,LL-1))*FACT -! Icing severity categories -! 0 = none (0, 0.08) -! 4 = trace [0.08, 0.21] -! 1 = light (0.21, 0.37] -! 2 = moderate (0.37, 0.67] -! 3 (no value yet, July 2015) -! 5 = heavy (0.67, 1] -! http://www.nco.ncep.noaa.gov/pmb/docs/grib2/grib2_table4-207.shtml - - if (ICINGVSL(I,J) < 0.08) then - ICINGVSL(I,J) = 0.0 - elseif (ICINGVSL(I,J) <= 0.21) then - ICINGVSL(I,J) = 4. - else if(ICINGVSL(I,J) <= 0.37) then - ICINGVSL(I,J) = 1.0 - else if(ICINGVSL(I,J) <= 0.67) then - ICINGVSL(I,J) = 2.0 - else - ICINGVSL(I,J) = 5.0 - endif - if(ICINGFSL(I,J)< 0.001) ICINGVSL(I,J) = 0. - -! GTG - IF(GTG(I,J,LL) < SPVAL .AND. GTG(I,J,LL-1) < SPVAL) THEN - GTGSL(I,J) = GTG(I,J,LL) + (GTG(I,J,LL)-GTG(I,J,LL-1))*FACT - GTGSL(I,J) = max(0.0, GTGSL(I,J)) - GTGSL(I,J) = min(1.0, GTGSL(I,J)) - ENDIF - IF(CAT(I,J,LL) < SPVAL .AND. CAT(I,J,LL-1) < SPVAL) THEN - CATSL(I,J) = CAT(I,J,LL) + (CAT(I,J,LL)-CAT(I,J,LL-1))*FACT - CATSL(I,J) = max(0.0, CATSL(I,J)) - CATSL(I,J) = min(1.0, CATSL(I,J)) - ENDIF - IF(MWT(I,J,LL) < SPVAL .AND. MWT(I,J,LL-1) < SPVAL) THEN - MWTSL(I,J) = MWT(I,J,LL) + (MWT(I,J,LL)-MWT(I,J,LL-1))*FACT - MWTSL(I,J) = max(0.0, MWTSL(I,J)) - MWTSL(I,J) = min(1.0, MWTSL(I,J)) - ENDIF ! DUST if (gocart_on) then DO K = 1, NBIN_DU @@ -1342,6 +1277,7 @@ SUBROUTINE MDL2P(iostatusD3D) ELSE CALL CALRH(EGRID2(1,jsta),TSL(1,jsta),QSL(1,jsta),EGRID1(1,jsta)) END IF + !$omp parallel do private(i,j) DO J=JSTA,JEND DO I=1,IM @@ -2063,142 +1999,6 @@ SUBROUTINE MDL2P(iostatusD3D) ENDIF ! -!--- GFIP IN-FLIGHT ICING POTENTIAL: ADDED BY H CHUANG - IF(IGET(450) > 0)THEN - IF(LVLS(LP,IGET(450)) > 0)THEN -!$omp parallel do private(i,j) - DO J=JSTA,JEND - DO I=1,IM - GRID1(I,J) = ICINGFSL(I,J) - ENDDO - ENDDO - ID(1:25)=0 - ID(02)=140 ! Parameter Table 140 - if(grib == 'grib1')then - CALL GRIBIT(IGET(450),LP,GRID1,IM,JM) - elseif(grib == 'grib2') then - cfld = cfld + 1 - fld_info(cfld)%ifld=IAVBLFLD(IGET(450)) - fld_info(cfld)%lvl=LVLSXML(LP,IGET(450)) -!$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 - -!--- GFIP IN-FLIGHT ICING SEVERITY: ADDED BY Y MAO - IF(IGET(480) > 0) THEN - IF(LVLS(LP,IGET(480)) > 0) THEN -!$omp parallel do private(i,j) - DO J=JSTA,JEND - DO I=1,IM - GRID1(I,J) = ICINGVSL(I,J) - ENDDO - ENDDO - if(grib == 'grib1')then - ID(1:25)=0 - ID(02)=129 ! Parameter Table 129 - CALL GRIBIT(IGET(480),LP,GRID1,IM,JM) - elseif(grib == 'grib2') then - cfld = cfld+1 - fld_info(cfld)%ifld=IAVBLFLD(IGET(480)) - fld_info(cfld)%lvl=LVLSXML(LP,IGET(480)) -!$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 - -!--- GTG EDR turbulence: ADDED BY Y. MAO - IF(IGET(464) > 0) THEN - IF(LVLS(LP,IGET(464)) > 0) THEN -!$omp parallel do private(i,j) - DO J=JSTA,JEND - DO I=1,IM - GRID1(I,J) = GTGSL(I,J) - ENDDO - ENDDO - if(grib == 'grib1')then - ID(1:25)=0 - CALL GRIBIT(IGET(464),LP,GRID1,IM,JM) - elseif(grib == 'grib2') then - cfld = cfld+1 - fld_info(cfld)%ifld=IAVBLFLD(IGET(464)) - fld_info(cfld)%lvl=LVLSXML(LP,IGET(464)) -!$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 - -!--- GTG CAT turbulence: ADDED BY Y. MAO - IF(IGET(465) > 0) THEN - IF(LVLS(LP,IGET(465)) > 0) THEN -!$omp parallel do private(i,j) - DO J=JSTA,JEND - DO I=1,IM - GRID1(I,J) = CATSL(I,J) - ENDDO - ENDDO - if(grib == 'grib1')then - ID(1:25)=0 - CALL GRIBIT(IGET(465),LP,GRID1,IM,JM) - elseif(grib == 'grib2') then - cfld = cfld+1 - fld_info(cfld)%ifld=IAVBLFLD(IGET(465)) - fld_info(cfld)%lvl=LVLSXML(LP,IGET(465)) -!$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 - -!--- GTG MWT turbulence: ADDED BY Y. MAO - IF(IGET(466) > 0) THEN - IF(LVLS(LP,IGET(466)) > 0) THEN -!$omp parallel do private(i,j) - DO J=JSTA,JEND - DO I=1,IM - GRID1(I,J) = MWTSL(I,J) - ENDDO - ENDDO - if(grib == 'grib1')then - ID(1:25)=0 - CALL GRIBIT(IGET(466),LP,GRID1,IM,JM) - elseif(grib == 'grib2') then - cfld = cfld+1 - fld_info(cfld)%ifld=IAVBLFLD(IGET(466)) - fld_info(cfld)%lvl=LVLSXML(LP,IGET(466)) -!$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 !--- CLEAR AIR TURBULENCE (CAT): ADD BY B. ZHOU IF (LP > 1) THEN diff --git a/sorc/ncep_post.fd/MDL2STD_P.f b/sorc/ncep_post.fd/MDL2STD_P.f new file mode 100644 index 000000000..b572ebbf3 --- /dev/null +++ b/sorc/ncep_post.fd/MDL2STD_P.f @@ -0,0 +1,562 @@ + SUBROUTINE MDL2STD_P() +!$$$ SUBPROGRAM DOCUMENTATION BLOCK +! . . . +! SUBPROGRAM: MDL2STD_P VERT INTRP OF MODEL LVLS TO STANDARD ATMOSPEHRIC PRESSURE +! PRGRMMR: Y Mao ORG: W/NP22 DATE: Sep 2019 +! +! ABSTRACT: +! ORIGINATED FROM MISCLN.f. THIS ROUTINE INTERPOLATE TO STANDARD +! ATMOSPHERIC PRESSURE, INSTEAD OF MODEL PRESSURE +! +! PROGRAM HISTORY LOG: +! 19-09-24 Y Mao - REWRITTEN FROM MISCLN.f +! +! USAGE: CALL MDL2STD_P +! INPUT ARGUMENT LIST: +! +! OUTPUT ARGUMENT LIST: +! NONE +! +! OUTPUT FILES: +! NONE +! +! SUBPROGRAMS CALLED: +! UTILITIES: +! FDLVL_UV - COMPUTE FD LEVEL WIND (AGL OR MSL). +! FDLVL_MASS - COMPUTE FD LEVEL MASS (AGL OR MSL). +! +! LIBRARY: +! COMMON - CTLBLK +! RQSTFLD +! +! ATTRIBUTES: +! LANGUAGE: FORTRAN 90 +! MACHINE : IBM SP +!$$$ +! + use vrbls3d, only: pint, pmid, zmid + use vrbls3d, only: t, q, uh, vh, omga, cwm, qqw, qqi, qqr, qqs, qqg + + use vrbls3d, only: ICING_GFIP, ICING_GFIS, catedr, mwt, gtg + use ctlblk_mod, only: grib, cfld, fld_info, datapd, im, jsta, jend, jm, & + lm, htfd, spval, nfd, me,& + jsta_2l, jend_2u, MODELNAME + use rqstfld_mod, only: iget, lvls, iavblfld, lvlsxml + use grib2_module, only: pset + +!- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +! + implicit none + + real, external :: P2H + + real,dimension(im,jm) :: GRID1 + real,dimension(im,jsta_2l:jend_2u) :: EGRID1,EGRID2,EGRID3,EGRID4 + +! + integer I,J,jj,L,ITYPE,IFD,ITYPEFDLVL(NFD) + +! Variables introduced to allow FD levels from control file - Y Mao + integer :: N,NFDCTL + REAL, allocatable :: HTFDCTL(:) + integer, allocatable :: ITYPEFDLVLCTL(:) + real, allocatable :: QIN(:,:,:,:), QFD(:,:,:,:) + real, allocatable :: VAR3D1(:,:,:), VAR3D2(:,:,:) + + integer, parameter :: NFDMAX=50 ! Max number of fields with the same HTFDCTL + integer :: IDS(NFDMAX) ! All field IDs with the same HTFDCTL + integer :: nFDS ! How many fields with the same HTFDCTL in the control file + integer :: iID ! which field with HTFDCTL + integer :: N1, N2 +! +!****************************************************************************** +! +! START MDL2STD_P. +! + +! --------------WAFS block---------------------- +! 450 ICIP +! 480 ICSEV +! 464 EDPARM +! 465 CAT +! 466 MWTURB +! 518 HGT +! 519 TMP +! 520 UGRD +! 521 VGRD +! 522 SPFH +! 523 RH +! 524 VVEL +! 525 ABSV +! 526 CLWMR +! 527 ICMR +! 528 RWMR +! 529 SNMR +! 530 GRLE + IF(IGET(450)>0 .or. IGET(480)>0 .or. & + IGET(464)>0 .or. IGET(465)>0 .or. IGET(466)>0 .or. & + IGET(518)>0 .or. IGET(519)>0 .or. IGET(520)>0 .or. & + IGET(521)>0 .or. IGET(522)>0 .or. IGET(523)>0 .or. & + IGET(524)>0 .or. IGET(525)>0 .or. IGET(526)>0 .or. & + IGET(527)>0 .or. IGET(528)>0 .or. IGET(529)>0 .or. & + IGET(530)>0) then + +! STEP 1 -- U V (POSSIBLE FOR ABSV) INTERPLOCATION + IF(IGET(520)>0 .or. IGET(521)>0 .or. IGET(525) > 0 ) THEN +! U/V are always paired, use any for HTFDCTL + iID=520 + N = IAVBLFLD(IGET(iID)) + NFDCTL=size(pset%param(N)%level) + if(allocated(ITYPEFDLVLCTL)) deallocate(ITYPEFDLVLCTL) + allocate(ITYPEFDLVLCTL(NFDCTL)) + DO IFD = 1,NFDCTL + ITYPEFDLVLCTL(IFD)=LVLS(IFD,IGET(iID)) + ENDDO + if(allocated(HTFDCTL)) deallocate(HTFDCTL) + allocate(HTFDCTL(NFDCTL)) + HTFDCTL=pset%param(N)%level + DO i = 1, NFDCTL + HTFDCTL(i)=P2H(HTFDCTL(i)/100.) + ENDDO + allocate(VAR3D1(IM,JSTA_2L:JEND_2U,NFDCTL)) + allocate(VAR3D2(IM,JSTA_2L:JEND_2U,NFDCTL)) + VAR3D1=SPVAL + VAR3D2=SPVAL + + call FDLVL_UV(ITYPEFDLVLCTL,NFDCTL,HTFDCTL,VAR3D1,VAR3D2) + + DO IFD = 1,NFDCTL + ! U + IF (LVLS(IFD,IGET(520)) > 0) THEN +!$omp parallel do private(i,j) + DO J=JSTA,JEND + DO I=1,IM + GRID1(I,J)=VAR3D1(I,J,IFD) + ENDDO + ENDDO + if(grib=='grib2') then + cfld=cfld+1 + fld_info(cfld)%ifld=IAVBLFLD(IGET(520)) + fld_info(cfld)%lvl=LVLSXML(IFD,IGET(520)) +!$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 + ! V + IF (LVLS(IFD,IGET(521)) > 0) THEN +!$omp parallel do private(i,j) + DO J=JSTA,JEND + DO I=1,IM + GRID1(I,J)=VAR3D2(I,J,IFD) + ENDDO + ENDDO + if(grib=='grib2') then + cfld=cfld+1 + fld_info(cfld)%ifld=IAVBLFLD(IGET(521)) + fld_info(cfld)%lvl=LVLSXML(IFD,IGET(521)) +!$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 + ! ABSV + IF (LVLS(IFD,IGET(525)) > 0) THEN + EGRID1=VAR3D1(1:IM,JSTA_2L:JEND_2U,IFD) + EGRID2=VAR3D2(1:IM,JSTA_2L:JEND_2U,IFD) + call CALVOR(EGRID1,EGRID2,EGRID3) +!$omp parallel do private(i,j) + DO J=JSTA,JEND + DO I=1,IM + GRID1(I,J)=EGRID3(I,J) + ENDDO + ENDDO + if(grib=='grib2') then + cfld=cfld+1 + fld_info(cfld)%ifld=IAVBLFLD(IGET(525)) + fld_info(cfld)%lvl=LVLSXML(IFD,IGET(525)) +!$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 + ENDDO + + deallocate(VAR3D1) + deallocate(VAR3D2) + + ENDIF + +! STEP 2 -- MASS FIELDS INTERPOLATION EXCEPT: +! HGT(TO BE FIXED VALUES) +! RH ABSV (TO BE CACULATED) + + ALLOCATE(QIN(IM,JSTA:JEND,LM,NFDMAX)) + +! INITIALIZE INPUTS + nFDS = 0 + IF(IGET(450) > 0) THEN + nFDS = nFDS + 1 + IDS(nFDS) = 450 + QIN(1:IM,JSTA:JEND,1:LM,nFDS)=icing_gfip(1:IM,JSTA:JEND,1:LM) + end if + IF(IGET(480) > 0) THEN + nFDS = nFDS + 1 + IDS(nFDS) = 480 + QIN(1:IM,JSTA:JEND,1:LM,nFDS)=icing_gfis(1:IM,JSTA:JEND,1:LM) + end if + IF(IGET(464) > 0) THEN + nFDS = nFDS + 1 + IDS(nFDS) = 464 + QIN(1:IM,JSTA:JEND,1:LM,nFDS)=gtg(1:IM,JSTA:JEND,1:LM) + end if + IF(IGET(465) > 0) THEN + nFDS = nFDS + 1 + IDS(nFDS) = 465 + QIN(1:IM,JSTA:JEND,1:LM,nFDS)=catedr(1:IM,JSTA:JEND,1:LM) + end if + IF(IGET(466) > 0) THEN + nFDS = nFDS + 1 + IDS(nFDS) = 466 + QIN(1:IM,JSTA:JEND,1:LM,nFDS)=mwt(1:IM,JSTA:JEND,1:LM) + end if + IF(IGET(519) > 0) THEN + nFDS = nFDS + 1 + IDS(nFDS) = 519 + QIN(1:IM,JSTA:JEND,1:LM,nFDS)=T(1:IM,JSTA:JEND,1:LM) + end if + IF(IGET(522) > 0) THEN + nFDS = nFDS + 1 + IDS(nFDS) = 522 + QIN(1:IM,JSTA:JEND,1:LM,nFDS)=Q(1:IM,JSTA:JEND,1:LM) + end if + IF(IGET(524) > 0) THEN + nFDS = nFDS + 1 + IDS(nFDS) = 524 + QIN(1:IM,JSTA:JEND,1:LM,nFDS)=OMGA(1:IM,JSTA:JEND,1:LM) + end if + IF(IGET(526) > 0) THEN + nFDS = nFDS + 1 + IDS(nFDS) = 526 + QIN(1:IM,JSTA:JEND,1:LM,nFDS)=QQW(1:IM,JSTA:JEND,1:LM) + end if + IF(IGET(527) > 0) THEN + nFDS = nFDS + 1 + IDS(nFDS) = 527 + QIN(1:IM,JSTA:JEND,1:LM,nFDS)=QQR(1:IM,JSTA:JEND,1:LM) + end if + IF(IGET(528) > 0) THEN + nFDS = nFDS + 1 + IDS(nFDS) = 528 + QIN(1:IM,JSTA:JEND,1:LM,nFDS)=QQS(1:IM,JSTA:JEND,1:LM) + end if + IF(IGET(529) > 0) THEN + nFDS = nFDS + 1 + IDS(nFDS) = 529 + QIN(1:IM,JSTA:JEND,1:LM,nFDS)=QQG(1:IM,JSTA:JEND,1:LM) + end if + IF(IGET(530) > 0) THEN + nFDS = nFDS + 1 + IDS(nFDS) = 530 + QIN(1:IM,JSTA:JEND,1:LM,nFDS)=QQI(1:IM,JSTA:JEND,1:LM) + end if + +! FOR WAFS, ALL LEVLES OF DIFFERENT VARIABLES ARE THE SAME, USE ANY + iID=IDS(1) + N = IAVBLFLD(IGET(iID)) + NFDCTL=size(pset%param(N)%level) + if(allocated(ITYPEFDLVLCTL)) deallocate(ITYPEFDLVLCTL) + allocate(ITYPEFDLVLCTL(NFDCTL)) + DO IFD = 1,NFDCTL + ITYPEFDLVLCTL(IFD)=LVLS(IFD,IGET(iID)) + ENDDO + if(allocated(HTFDCTL)) deallocate(HTFDCTL) + allocate(HTFDCTL(NFDCTL)) + HTFDCTL=pset%param(N)%level + DO i = 1, NFDCTL + HTFDCTL(i)=P2H(HTFDCTL(i)/100.) + ENDDO + + ALLOCATE(QFD(IM,JSTA:JEND,NFDCTL,nFDS)) + QFD=SPVAL + + call FDLVL_MASS(ITYPEFDLVLCTL,NFDCTL,HTFDCTL,nFDS,QIN,QFD) + +! Adjust values before output + N1 = -1 + DO N=1,nFDS + iID=IDS(N) + +! Icing Potential + if(iID==450) then + N1=N + DO IFD = 1,NFDCTL + DO J=JSTA,JEND + DO I=1,IM + if(QFD(I,J,IFD,N) < SPVAL) then + QFD(I,J,IFD,N)=max(0.0,QFD(I,J,IFD,N)) + QFD(I,J,IFD,N)=min(1.0,QFD(I,J,IFD,N)) + endif + ENDDO + ENDDO + ENDDO + endif + +! Icing severity categories +! 0 = none (0, 0.08) +! 1 = trace [0.08, 0.21] +! 2 = light (0.21, 0.37] +! 3 = moderate (0.37, 0.67] +! 4 = severe (0.67, 1] +! http://www.nco.ncep.noaa.gov/pmb/docs/grib2/grib2_table4-207.shtml + if(iID==480) then + DO IFD = 1,NFDCTL + DO J=JSTA,JEND + DO I=1,IM + if(N1 > 0) then + ! Icing severity is 0 when icing potential is too small + if(QFD(I,J,IFD,N1) < 0.001) QFD(I,J,IFD,N)=0. + endif + if(QFD(I,J,IFD,N) == SPVAL) cycle + if (QFD(I,J,IFD,N) < 0.08) then + QFD(I,J,IFD,N) = 0.0 + elseif (QFD(I,J,IFD,N) <= 0.21) then + QFD(I,J,IFD,N) = 1. + else if(QFD(I,J,IFD,N) <= 0.37) then + QFD(I,J,IFD,N) = 2.0 + else if(QFD(I,J,IFD,N) <= 0.67) then + QFD(I,J,IFD,N) = 3.0 + else + QFD(I,J,IFD,N) = 4.0 + endif + ENDDO + ENDDO + ENDDO + endif + +! GTG turbulence: EDRPARM, CAT, MWTURB + if(iID==464 .or. iID==465 .or. iID==466) then + DO IFD = 1,NFDCTL + DO J=JSTA,JEND + DO I=1,IM + if(QFD(I,J,IFD,N) < SPVAL) then + QFD(I,J,IFD,N)=max(0.0,QFD(I,J,IFD,N)) + QFD(I,J,IFD,N)=min(1.0,QFD(I,J,IFD,N)) + endif + ENDDO + ENDDO + ENDDO + endif + +! SPFH + if(iID==522) then + DO IFD = 1,NFDCTL + DO J=JSTA,JEND + DO I=1,IM + if(QFD(I,J,IFD,N) < SPVAL) then + if(QFD(I,J,IFD,N)<1.0e-8) QFD(I,J,IFD,N)=0. + endif + ENDDO + ENDDO + ENDDO + endif + +! CLWMR ICMR RWMR SNMR GRLE + if(iID==526 .or. iID==527 .or. iID==528 .or. & + iID==529 .or. iID==530) then + DO IFD = 1,NFDCTL + DO J=JSTA,JEND + DO I=1,IM + QFD(I,J,IFD,N)=max(0.0,QFD(I,J,IFD,N)) + ENDDO + ENDDO + ENDDO + endif + + ENDDO + +! Output + DO N=1,nFDS + iID=IDS(N) + DO IFD = 1,NFDCTL + IF (LVLS(IFD,IGET(iID)) > 0) THEN +!$omp parallel do private(i,j) + DO J=JSTA,JEND + DO I=1,IM + GRID1(I,J)=QFD(I,J,IFD,N) + ENDDO + ENDDO + if(grib=='grib2') then + cfld=cfld+1 + fld_info(cfld)%ifld=IAVBLFLD(IGET(iID)) + fld_info(cfld)%lvl=LVLSXML(IFD,IGET(iID)) +!$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 + ENDDO + ENDDO + + DEALLOCATE(QIN,QFD) + +! STEP 3 - MASS FIELDS CALCULATION +! HGT(TO BE FIXED VALUES) +! RH ABSV (TO BE CACULATED) + ! HGT + IF(IGET(518) > 0) THEN + iID=518 + N = IAVBLFLD(IGET(iID)) + NFDCTL=size(pset%param(N)%level) + if(allocated(HTFDCTL)) deallocate(HTFDCTL) + allocate(HTFDCTL(NFDCTL)) + HTFDCTL=pset%param(N)%level + DO i = 1, NFDCTL + HTFDCTL(i)=P2H(HTFDCTL(i)/100.) + ENDDO + + DO IFD = 1,NFDCTL + IF (LVLS(IFD,IGET(iID)) > 0) THEN +!$omp parallel do private(i,j) + DO J=JSTA,JEND + DO I=1,IM + GRID1(I,J)=HTFDCTL(IFD) + ENDDO + ENDDO + if(grib=='grib2') then + cfld=cfld+1 + fld_info(cfld)%ifld=IAVBLFLD(IGET(iID)) + fld_info(cfld)%lvl=LVLSXML(IFD,IGET(iID)) +!$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 + ENDDO + ENDIF + + ! RH + IF(IGET(523) > 0) THEN + iID=523 + N = IAVBLFLD(IGET(iID)) + NFDCTL=size(pset%param(N)%level) + if(allocated(ITYPEFDLVLCTL)) deallocate(ITYPEFDLVLCTL) + allocate(ITYPEFDLVLCTL(NFDCTL)) + DO IFD = 1,NFDCTL + ITYPEFDLVLCTL(IFD)=LVLS(IFD,IGET(iID)) + ENDDO + if(allocated(HTFDCTL)) deallocate(HTFDCTL) + allocate(HTFDCTL(NFDCTL)) + HTFDCTL=pset%param(N)%level + DO i = 1, NFDCTL + HTFDCTL(i)=P2H(HTFDCTL(i)/100.) + ENDDO + + ALLOCATE(QIN(IM,JSTA:JEND,LM,2)) + QIN(1:IM,JSTA:JEND,1:LM,1)=T(1:IM,JSTA:JEND,1:LM) + QIN(1:IM,JSTA:JEND,1:LM,2)=Q(1:IM,JSTA:JEND,1:LM) + + ALLOCATE(QFD(IM,JSTA:JEND,NFDCTL,2)) + QFD=SPVAL + + call FDLVL_MASS(ITYPEFDLVLCTL,NFDCTL,HTFDCTL,2,QIN,QFD) + HTFDCTL=pset%param(N)%level ! Save back to pressure + + + DO IFD = 1,NFDCTL + IF (LVLS(IFD,IGET(iID)) > 0) THEN +!$omp parallel do private(i,j) + DO J=JSTA,JEND + DO I=1,IM + EGRID2(I,J) = HTFDCTL(IFD) ! P + ENDDO + ENDDO + + EGRID3(1:IM,JSTA:JEND)=QFD(1:IM,JSTA:JEND,IFD,1) ! T + EGRID4(1:IM,JSTA:JEND)=QFD(1:IM,JSTA:JEND,IFD,2) ! Q + EGRID1 = SPVAL + + IF(MODELNAME == 'GFS' .or. MODELNAME == 'FV3R')THEN + CALL CALRH_GFS(EGRID2(1,jsta),EGRID3(1,jsta),& + EGRID4(1,jsta), EGRID1(1,jsta)) + ELSEIF (MODELNAME == 'RAPR')THEN + CALL CALRH_GSD(EGRID2(1,jsta),EGRID3(1,jsta),& + EGRID4(1,jsta), EGRID1(1,jsta)) + ELSE + CALL CALRH(EGRID2(1,jsta),EGRID3(1,jsta),& + EGRID4(1,jsta), EGRID1(1,jsta)) + END IF + +!$omp parallel do private(i,j) + DO J=JSTA,JEND + DO I=1,IM + IF(EGRID1(I,J) < SPVAL) THEN + GRID1(I,J) = EGRID1(I,J)*100. + ELSE + GRID1(I,J) = EGRID1(I,J) + ENDIF + ENDDO + ENDDO + + if(grib=='grib2') then + cfld=cfld+1 + fld_info(cfld)%ifld=IAVBLFLD(IGET(iID)) + fld_info(cfld)%lvl=LVLSXML(IFD,IGET(iID)) +!$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 + ENDDO + deallocate(QIN,QFD) + + ENDIF + + ENDIF +! +! END OF ROUTINE. +! + RETURN + END + + FUNCTION P2H(p) + implicit none + real, intent(in) :: p + real :: P2H +! To convert pressure levels (hPa) to geopotantial heights +! Uses ICAO standard atmosphere parameters as defined here: +! https://www.nen.nl/pdfpreview/preview_29424.pdf + real, parameter :: lapse = 0.0065 + real, parameter :: surf_temp = 288.15 + real, parameter :: gravity = 9.80665 + real, parameter :: moles_dry_air = 0.02896442 + real, parameter :: gas_const = 8.31432 + real, parameter :: surf_pres = 1013.25 + real, parameter :: power_const = (gravity * moles_dry_air) & + / (gas_const * lapse) + P2H = (surf_temp/lapse)*(1-(p/surf_pres)**(1/power_const)) + END diff --git a/sorc/ncep_post.fd/MISCLN.f b/sorc/ncep_post.fd/MISCLN.f index 1ce4d85e8..9c8e114c5 100644 --- a/sorc/ncep_post.fd/MISCLN.f +++ b/sorc/ncep_post.fd/MISCLN.f @@ -148,6 +148,13 @@ SUBROUTINE MISCLN REAL, allocatable :: HTFDCTL(:) integer, allocatable :: ITYPEFDLVLCTL(:) + real, allocatable :: QIN(:,:,:,:), QFD(:,:,:,:) + + integer, parameter :: NFDMAX=50 ! Max number of fields with the same HTFDCTL + integer :: IDS(NFDMAX) ! All field IDs with the same HTFDCTL + integer :: nFDS ! How many fields with the same HTFDCTL in the control file + integer :: iID ! which field with HTFDCTL + real,external :: fpvsnew ! !**************************************************************************** @@ -1341,124 +1348,59 @@ SUBROUTINE MISCLN ! ***BLOCK 3-2: FD LEVEL (from control file) GTG ! IF(IGET(467).GT.0.or.IGET(468)>0.or.IGET(469).GT.0) THEN + ALLOCATE(QIN(IM,JSTA:JEND,LM,3)) + nFDS = 0 if(IGET(467)>0) THEN ! GTG - N=IAVBLFLD(IGET(467)) - NFDCTL=size(pset%param(N)%level) - if(allocated(ITYPEFDLVLCTL)) deallocate(ITYPEFDLVLCTL) - allocate(ITYPEFDLVLCTL(NFDCTL)) - DO IFD = 1,NFDCTL - ITYPEFDLVLCTL(IFD)=LVLS(IFD,IGET(467)) - enddo - if(allocated(HTFDCTL)) deallocate(HTFDCTL) - allocate(HTFDCTL(NFDCTL)) - HTFDCTL=pset%param(N)%level -! print *, "GTG 467 levels=",pset%param(N)%level - allocate(GTGFD(IM,JSTA:JEND,NFDCTL)) - call FDLVL_MASS(ITYPEFDLVLCTL,NFDCTL,HTFDCTL,GTG,GTGFD) -! print *, "GTG 467 Done GTGFD=",me,GTGFD(IM/2,jend,1:NFDCTL) - DO IFD = 1,NFDCTL - ID(1:25) = 0 - ISVALUE = NINT(HTFDCTL(IFD)) - ID(11) = ISVALUE - if(ITYPEFDLVLCTL(IFD)==2)ID(9)=105 - IF (LVLS(IFD,IGET(467)).GT.0) THEN -!$omp parallel do private(i,j) - DO J=JSTA,JEND - DO I=1,IM - GRID1(I,J)=GTGFD(I,J,IFD) - ENDDO - ENDDO - if(grib=='grib1') then - CALL GRIBIT(IGET(467),LVLS(IFD,IGET(467)),GRID1,IM,JM) - elseif(grib=='grib2') then - cfld=cfld+1 - fld_info(cfld)%ifld=IAVBLFLD(IGET(467)) - fld_info(cfld)%lvl=LVLSXML(IFD,IGET(467)) -!$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 - ENDDO + nFDS = nFDS + 1 + IDS(nFDS) = 467 + QIN(1:IM,JSTA:JEND,1:LM,nFDS)=GTG(1:IM,JSTA:JEND,1:LM) endif - if(IGET(468)>0) THEN ! CAT - N=IAVBLFLD(IGET(468)) - NFDCTL=size(pset%param(N)%level) - if(allocated(ITYPEFDLVLCTL)) deallocate(ITYPEFDLVLCTL) - allocate(ITYPEFDLVLCTL(NFDCTL)) - DO IFD = 1,NFDCTL - ITYPEFDLVLCTL(IFD)=LVLS(IFD,IGET(468)) - enddo - if(allocated(HTFDCTL)) deallocate(HTFDCTL) - allocate(HTFDCTL(NFDCTL)) - HTFDCTL=pset%param(N)%level - allocate(CATFD(IM,JSTA:JEND,NFDCTL)) - call FDLVL_MASS(ITYPEFDLVLCTL,NFDCTL,HTFDCTL,catedr,CATFD) - DO IFD = 1,NFDCTL - ID(1:25) = 0 - ISVALUE = NINT(HTFDCTL(IFD)) - ID(11) = ISVALUE - if(ITYPEFDLVLCTL(IFD)==2)ID(9)=105 - IF (LVLS(IFD,IGET(468)).GT.0) THEN -!$omp parallel do private(i,j) - DO J=JSTA,JEND - DO I=1,IM - GRID1(I,J)=CATFD(I,J,IFD) - ENDDO - ENDDO - if(grib=='grib1') then - CALL GRIBIT(IGET(468),LVLS(IFD,IGET(468)),GRID1,IM,JM) - elseif(grib=='grib2') then - cfld=cfld+1 - fld_info(cfld)%ifld=IAVBLFLD(IGET(468)) - fld_info(cfld)%lvl=LVLSXML(IFD,IGET(468)) -!$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 - ENDDO + nFDS = nFDS + 1 + IDS(nFDS) = 468 + QIN(1:IM,JSTA:JEND,1:LM,nFDS)=catedr(1:IM,JSTA:JEND,1:LM) endif if(IGET(469)>0) THEN ! MWT - N=IAVBLFLD(IGET(469)) - NFDCTL=size(pset%param(N)%level) - if(allocated(ITYPEFDLVLCTL)) deallocate(ITYPEFDLVLCTL) - allocate(ITYPEFDLVLCTL(NFDCTL)) - DO IFD = 1,NFDCTL - ITYPEFDLVLCTL(IFD)=LVLS(IFD,IGET(469)) - enddo - if(allocated(HTFDCTL)) deallocate(HTFDCTL) - allocate(HTFDCTL(NFDCTL)) - HTFDCTL=pset%param(N)%level - allocate(MWTFD(IM,JSTA:JEND,NFDCTL)) - call FDLVL_MASS(ITYPEFDLVLCTL,NFDCTL,HTFDCTL,MWT,MWTFD) + nFDS = nFDS + 1 + IDS(nFDS) = 469 + QIN(1:IM,JSTA:JEND,1:LM,nFDS)=MWT(1:IM,JSTA:JEND,1:LM) + endif + +! FOR TURBULENCE, ALL LEVLES OF DIFFERENT VARIABLES ARE THE SAME, USE ANY + iID=IDS(1) + N=IAVBLFLD(IGET(iID)) + NFDCTL=size(pset%param(N)%level) + if(allocated(ITYPEFDLVLCTL)) deallocate(ITYPEFDLVLCTL) + allocate(ITYPEFDLVLCTL(NFDCTL)) + DO IFD = 1,NFDCTL + ITYPEFDLVLCTL(IFD)=LVLS(IFD,IGET(iID)) + enddo + if(allocated(HTFDCTL)) deallocate(HTFDCTL) + allocate(HTFDCTL(NFDCTL)) + HTFDCTL=pset%param(N)%level +! print *, "GTG 467 levels=",pset%param(N)%level + + ALLOCATE(QFD(IM,JSTA:JEND,NFDCTL,nFDS)) + QFD=SPVAL + + call FDLVL_MASS(ITYPEFDLVLCTL,NFDCTL,HTFDCTL,nFDS,QIN,QFD) + print *, "Calling FDLVL_MASSES" + DO N=1,nFDS + iID=IDS(N) DO IFD = 1,NFDCTL - ID(1:25) = 0 - ISVALUE = NINT(HTFDCTL(IFD)) - ID(11) = ISVALUE - if(ITYPEFDLVLCTL(IFD)==2)ID(9)=105 - IF (LVLS(IFD,IGET(469)).GT.0) THEN + IF (LVLS(IFD,IGET(iID))>0) THEN !$omp parallel do private(i,j) DO J=JSTA,JEND DO I=1,IM - GRID1(I,J)=MWTFD(I,J,IFD) + GRID1(I,J)=QFD(I,J,IFD,N) + GRID1(I,J)=max(0.0,GRID1(I,J)) + GRID1(I,J)=min(1.0,GRID1(I,J)) ENDDO ENDDO - if(grib=='grib1') then - CALL GRIBIT(IGET(469),LVLS(IFD,IGET(469)),GRID1,IM,JM) - elseif(grib=='grib2') then + if(grib=='grib2') then cfld=cfld+1 - fld_info(cfld)%ifld=IAVBLFLD(IGET(469)) - fld_info(cfld)%lvl=LVLSXML(IFD,IGET(469)) + fld_info(cfld)%ifld=IAVBLFLD(IGET(iID)) + fld_info(cfld)%lvl=LVLSXML(IFD,IGET(iID)) !$omp parallel do private(i,j,jj) do j=1,jend-jsta+1 jj = jsta+j-1 @@ -1469,12 +1411,8 @@ SUBROUTINE MISCLN endif ENDIF ENDDO - endif - - if(allocated(GTGFD)) deallocate(GTGFD) - if(allocated(CATFD)) deallocate(CATFD) - if(allocated(MWTFD)) deallocate(MWTFD) - + ENDDO + DEALLOCATE(QIN,QFD) if(allocated(ITYPEFDLVLCTL)) deallocate(ITYPEFDLVLCTL) if(allocated(HTFDCTL)) deallocate(HTFDCTL) diff --git a/sorc/ncep_post.fd/PROCESS.f b/sorc/ncep_post.fd/PROCESS.f index 21cf694fe..7d18a3eae 100644 --- a/sorc/ncep_post.fd/PROCESS.f +++ b/sorc/ncep_post.fd/PROCESS.f @@ -110,6 +110,12 @@ SUBROUTINE PROCESS(kth,kpv,th,pv,iostatusD3D) btim = timef() CALL MISCLN MISCLN_tim = MISCLN_tim +(timef() - btim) + +! COMPUTE/POST TROPOPAUSE DATA, FD LEVEL FIELDS, +! FREEZING LEVEL HEIGHT AND RH, BOUNDARY LAYER FIELDS, +! AND LFM-NGM LOOK-ALIKE FIELDS. + btim = timef() + CALL MDL2STD_P ! ! POST FIXED FIELDS. btim = timef() diff --git a/sorc/ncep_post.fd/SET_LVLSXML.f b/sorc/ncep_post.fd/SET_LVLSXML.f index 66721f71d..7cfd13098 100644 --- a/sorc/ncep_post.fd/SET_LVLSXML.f +++ b/sorc/ncep_post.fd/SET_LVLSXML.f @@ -82,6 +82,7 @@ subroutine SET_LVLSXML(param,ifld,irec,kpv,pv,kth,th) endif if(trim(param%fixed_sfc1_type)=='isobaric_sfc') then + if(index(param%shortname,"ON_STD_ISOBARIC_SFC")<=0) then do j=1, nlevel iloop: do i=1, lsm @@ -94,6 +95,14 @@ subroutine SET_LVLSXML(param,ifld,irec,kpv,pv,kth,th) enddo iloop enddo return + endif +! For standard atmospheric pressures, use levels from control file directly + do j=1, nlevel + LVLS(j,ifld)=1 + LVLSXML(j,ifld)=j + irec=irec+1 + enddo + return endif ! if(trim(param%fixed_sfc1_type)=='hybrid_lvl') then @@ -202,7 +211,7 @@ subroutine SET_LVLSXML(param,ifld,irec,kpv,pv,kth,th) LVLSXML(j,ifld)=j irec=irec+1 enddo - print *, "GTG levels, n=",nlevel, "irec=",irec +! print *, "GTG levels, n=",nlevel, "irec=",irec return endif ! diff --git a/sorc/ncep_post.fd/makefile_module b/sorc/ncep_post.fd/makefile_module index 2687ab51d..f9aa504ec 100755 --- a/sorc/ncep_post.fd/makefile_module +++ b/sorc/ncep_post.fd/makefile_module @@ -79,7 +79,7 @@ OBJS = wrf_io_flags.o getVariable.o getIVariableN.o \ CLDRAD.o CLMAX.o COLLECT.o COLLECT_LOC.o DEWPOINT.o \ FDLVL.o FGAMMA.o FIXED.o FRZLVL.o FRZLVL2.o \ GET_BITS.o GRIBIT.o INITPOST.o LFMFLD.o \ - MAPSSLP.o MISCLN.o MIXLEN.o MDL2P.o MDLFLD.o MPI_FIRST.o MPI_LAST.o \ + MAPSSLP.o MISCLN.o MDL2STD_P.o MIXLEN.o MDL2P.o MDLFLD.o MPI_FIRST.o MPI_LAST.o \ NGMFLD.o NGMSLP.o OTLFT.o OTLIFT.o SLP_new.o SLP_NMM.o EXCH.o \ PARA_RANGE.o PROCESS.o INITPOST_NMM.o EXCH2.o \ READCNTRL.o READ_xml.o SET_OUTFLDS.o SCLFLD.o SERVER.o SETUP_SERVERS.o \ From dc48bdb4c5af2819c16141d72908de5b1b3f6596 Mon Sep 17 00:00:00 2001 From: WenMeng-NOAA <48260754+WenMeng-NOAA@users.noreply.github.com> Date: Tue, 3 Dec 2019 15:06:06 -0500 Subject: [PATCH 13/21] Post ic (#26) * 1) Add extra fields in pgrb2 data set for chgres genrating ICs and boundary condictions for the public release; 2) Remove hard-code user defined control file name. * Commit missed files. * 1)Correctly cap percent frozen rain to (0,1); 2)Set default UPP control file name as postxconfig-NT.txt. * Bug fix for ID 968. --- modulefiles/post/v8.0.0-wcoss_dell_p3 | 3 + parm/global_1x1_paramlist_g2 | 11 ++ parm/global_1x1_paramlist_g2.anl | 11 ++ parm/global_1x1_paramlist_g2.f000 | 11 ++ parm/post_avblflds.xml | 8 ++ parm/postcntrl_gfs.xml | 17 ++- parm/postcntrl_gfs_anl.xml | 15 ++ parm/postcntrl_gfs_f00.xml | 15 ++ parm/postcntrl_gfs_f00_two.xml | 21 +++ parm/postcntrl_gfs_two.xml | 21 +++ parm/postxconfig-NT-GFS-ANL.txt | 113 ++++++++++++++- parm/postxconfig-NT-GFS-F00-TWO.txt | 150 +++++++++++++++++++- parm/postxconfig-NT-GFS-F00.txt | 113 ++++++++++++++- parm/postxconfig-NT-GFS-TWO.txt | 150 +++++++++++++++++++- parm/postxconfig-NT-GFS.txt | 113 ++++++++++++++- scripts/exgdas_nceppost.sh.ecf | 5 +- scripts/exgfs_nceppost.sh.ecf | 5 +- sorc/ncep_post.fd/ALLOCATE_ALL.f | 2 + sorc/ncep_post.fd/CTLBLK.f | 3 +- sorc/ncep_post.fd/DEALLOCATE.f | 1 + sorc/ncep_post.fd/FIXED.f | 19 ++- sorc/ncep_post.fd/INITPOST_GFS_NEMS_MPIIO.f | 46 ++++-- sorc/ncep_post.fd/INITPOST_GFS_NETCDF.f | 43 ++++-- sorc/ncep_post.fd/INITPOST_NETCDF.f | 43 ++++-- sorc/ncep_post.fd/MPI_FIRST.f | 2 +- sorc/ncep_post.fd/RQSTFLD.F | 3 + sorc/ncep_post.fd/VRBLS2D_mod.f | 3 +- sorc/ncep_post.fd/WRFPOST.f | 13 +- sorc/ncep_post.fd/xml_perl_data.f | 5 +- ush/fv3gfs_downstream_nems.sh | 17 ++- ush/fv3gfs_dwn_nems.sh | 14 ++ ush/gfs_nceppost.sh | 3 +- ush/mod_icec.sh | 23 +++ 33 files changed, 975 insertions(+), 47 deletions(-) create mode 100755 ush/mod_icec.sh diff --git a/modulefiles/post/v8.0.0-wcoss_dell_p3 b/modulefiles/post/v8.0.0-wcoss_dell_p3 index 873c51d3e..d84ede9ed 100644 --- a/modulefiles/post/v8.0.0-wcoss_dell_p3 +++ b/modulefiles/post/v8.0.0-wcoss_dell_p3 @@ -41,6 +41,9 @@ setenv OPENMP "-qopenmp" setenv myFCFLAGS "-O3 -convert big_endian -traceback -g -fp-model source -qopenmp -fpp" setenv myCPP /lib/cpp setenv myCPPFLAGS "-P" +#setenv myFCFLAGS "-g -O0 -check -check noarg_temp_created -check nopointer -fp-stack-check -fstack-protector-all -fpe0 -debug -traceback -ftrapuv" +##setenv myCPPFLAGS "-O0 -g -ftrapuv -traceback" + setenv mySFC ifort diff --git a/parm/global_1x1_paramlist_g2 b/parm/global_1x1_paramlist_g2 index 08afa98cb..cd0c7e760 100644 --- a/parm/global_1x1_paramlist_g2 +++ b/parm/global_1x1_paramlist_g2 @@ -65,6 +65,7 @@ CLWMR:925 mb CLWMR:950 mb CLWMR:975 mb CLWMR:1 hybrid level +CNWAT:surface CPOFP:surface CPRAT:surface CRAIN:surface @@ -75,6 +76,7 @@ DLWRF:surface DPT:2 m above ground DSWRF:surface FLDCP:surface +FRICV:surface GFLUX:surface GRLE:50 mb GRLE:1000 mb @@ -154,6 +156,8 @@ HPBL:surface ICAHT:max wind ICAHT:tropopause ICEC:surface +ICETK:surface +ICETMP:surface ICSEV:100 mb ICSEV:150 mb ICSEV:200 mb @@ -327,10 +331,12 @@ RWMR:950 mb RWMR:975 mb RWMR:1 hybrid level SHTFL:surface +SFCR:surface SOILW:0-0.1 m below ground SOILW:0.1-0.4 m below ground SOILW:0.4-1 m below ground SOILW:1-2 m below ground +SOTYP:surface SPFH:2 m above ground SPFH:30-0 mb above ground SPFH:80 m above ground @@ -357,6 +363,10 @@ SNMR:925 mb SNMR:950 mb SNMR:975 mb SNMR:1 hybrid level +SOILL:0-0.1 m below ground +SOILL:0.1-0.4 m below ground +SOILL:0.4-1 m below ground +SOILL:1-2 m below ground SUNSD:surface TCDC:50 mb TCDC:1000 mb @@ -515,6 +525,7 @@ ULWRF:top of atmosphere USTM:6000-0 m above ground USWRF:surface USWRF:top of atmosphere +VEG:surface VFLX:surface VGRD:0.995 sigma level VGRD:1000 mb diff --git a/parm/global_1x1_paramlist_g2.anl b/parm/global_1x1_paramlist_g2.anl index 9cbabf298..0eef8e032 100644 --- a/parm/global_1x1_paramlist_g2.anl +++ b/parm/global_1x1_paramlist_g2.anl @@ -58,6 +58,7 @@ CLWMR:925 mb CLWMR:950 mb CLWMR:975 mb CLWMR:1 hybrid level +CNWAT:surface CPOFP:surface CRAIN:surface CSNOW:surface @@ -86,6 +87,7 @@ GRLE:925 mb GRLE:950 mb GRLE:975 mb GRLE:1 hybrid level +FRICV:surface HGT:0C isotherm HGT:1000 mb HGT:100 mb @@ -137,6 +139,8 @@ HGT:tropopause HLCY:3000-0 m above ground ICAHT:max wind ICAHT:tropopause +ICETK:surface +ICETMP:surface ICMR:50 mb ICMR:1000 mb ICMR:100 mb @@ -252,6 +256,7 @@ RH:0.04 mb RH:0.07 mb RH:entire atmosphere (considered as a single layer) RH:highest tropospheric freezing level +SFCR:surface SPFH:30-0 mb above ground RWMR:50 mb RWMR:1000 mb @@ -299,6 +304,11 @@ SNMR:925 mb SNMR:950 mb SNMR:975 mb SNMR:1 hybrid level +SOILL:0-0.1 m below ground +SOILL:0.1-0.4 m below ground +SOILL:0.4-1 m below ground +SOILL:1-2 m below ground +SOTYP:surface TMP:0.995 sigma level TMP:1000 mb TMP:100 m above ground @@ -409,6 +419,7 @@ UGRD:PV=-2e-06 (Km^2/kg/s) surface UGRD:PV=2e-06 (Km^2/kg/s) surface UGRD:tropopause USTM:6000-0 m above ground +VEG:surface VGRD:0.995 sigma level VGRD:1000 mb VGRD:100 m above ground diff --git a/parm/global_1x1_paramlist_g2.f000 b/parm/global_1x1_paramlist_g2.f000 index e36532974..3296afd88 100644 --- a/parm/global_1x1_paramlist_g2.f000 +++ b/parm/global_1x1_paramlist_g2.f000 @@ -62,12 +62,14 @@ CLWMR:925 mb CLWMR:950 mb CLWMR:975 mb CLWMR:1 hybrid level +CNWAT:surface CPOFP:surface CRAIN:surface CSNOW:surface CWAT:entire atmosphere (considered as a single layer) DPT:2 m above ground FLDCP:surface +FRICV:surface GRLE:50 mb GRLE:1000 mb GRLE:100 mb @@ -147,6 +149,8 @@ HPBL:surface ICAHT:max wind ICAHT:tropopause ICEC:surface +ICETK:surface +ICETMP:surface ICMR:50 mb ICMR:1000 mb ICMR:100 mb @@ -290,6 +294,7 @@ RWMR:925 mb RWMR:950 mb RWMR:975 mb RWMR:1 hybrid level +SFCR:surface SNMR:50 mb SNMR:1000 mb SNMR:100 mb @@ -313,10 +318,15 @@ SNMR:925 mb SNMR:950 mb SNMR:975 mb SNMR:1 hybrid level +SOILL:0-0.1 m below ground +SOILL:0.1-0.4 m below ground +SOILL:0.4-1 m below ground +SOILL:1-2 m below ground SOILW:0-0.1 m below ground SOILW:0.1-0.4 m below ground SOILW:0.4-1 m below ground SOILW:1-2 m below ground +SOTYP:surface SPFH:2 m above ground SPFH:30-0 mb above ground SPFH:80 m above ground @@ -463,6 +473,7 @@ UGRD:PV=-2e-06 (Km^2/kg/s) surface UGRD:PV=2e-06 (Km^2/kg/s) surface UGRD:tropopause USTM:6000-0 m above ground +VEG:surface VGRD:0.995 sigma level VGRD:1000 mb VGRD:100 m above ground diff --git a/parm/post_avblflds.xml b/parm/post_avblflds.xml index c32b5ccc9..1f253bf4e 100755 --- a/parm/post_avblflds.xml +++ b/parm/post_avblflds.xml @@ -6907,5 +6907,13 @@ 4.0 + + 968 + ICETMP_ON_SURFACE + ICETMP + surface + 5.0 + + diff --git a/parm/postcntrl_gfs.xml b/parm/postcntrl_gfs.xml index 0426cdd20..c60a4d8c5 100755 --- a/parm/postcntrl_gfs.xml +++ b/parm/postcntrl_gfs.xml @@ -1069,11 +1069,26 @@ - ICEG_ON_SPEC_ALT_ABOVE_MEAN_SEA_LVL + ICEG_ON_SPEC_ALT_ABOVE_MEAN_SEA_LVL 10. 4.0 + + SOTYP_ON_SURFACE + 4.0 + + + + VEG_ON_SURFACE + 3.0 + + + + ICETMP_ON_SURFACE + 5.0 + + diff --git a/parm/postcntrl_gfs_anl.xml b/parm/postcntrl_gfs_anl.xml index f803ee6ae..a86a96725 100755 --- a/parm/postcntrl_gfs_anl.xml +++ b/parm/postcntrl_gfs_anl.xml @@ -537,6 +537,21 @@ 3.0 + + SOTYP_ON_SURFACE + 4.0 + + + + VEG_ON_SURFACE + 3.0 + + + + ICETMP_ON_SURFACE + 5.0 + + diff --git a/parm/postcntrl_gfs_f00.xml b/parm/postcntrl_gfs_f00.xml index 8f2bc141c..873270888 100755 --- a/parm/postcntrl_gfs_f00.xml +++ b/parm/postcntrl_gfs_f00.xml @@ -822,6 +822,21 @@ 4.0 + + SOTYP_ON_SURFACE + 4.0 + + + + VEG_ON_SURFACE + 3.0 + + + + ICETMP_ON_SURFACE + 5.0 + + diff --git a/parm/postcntrl_gfs_f00_two.xml b/parm/postcntrl_gfs_f00_two.xml index 9a6767699..8ba43b816 100755 --- a/parm/postcntrl_gfs_f00_two.xml +++ b/parm/postcntrl_gfs_f00_two.xml @@ -816,6 +816,27 @@ 3.0 + + ICEG_ON_SPEC_ALT_ABOVE_MEAN_SEA_LVL + 10. + 4.0 + + + + SOTYP_ON_SURFACE + 4.0 + + + + VEG_ON_SURFACE + 3.0 + + + + ICETMP_ON_SURFACE + 5.0 + + diff --git a/parm/postcntrl_gfs_two.xml b/parm/postcntrl_gfs_two.xml index e6d26efcd..2551bb1bb 100755 --- a/parm/postcntrl_gfs_two.xml +++ b/parm/postcntrl_gfs_two.xml @@ -1068,6 +1068,27 @@ 3.0 + + ICEG_ON_SPEC_ALT_ABOVE_MEAN_SEA_LVL + 10. + 4.0 + + + + SOTYP_ON_SURFACE + 4.0 + + + + VEG_ON_SURFACE + 3.0 + + + + ICETMP_ON_SURFACE + 5.0 + + diff --git a/parm/postxconfig-NT-GFS-ANL.txt b/parm/postxconfig-NT-GFS-ANL.txt index c61dd3129..061fab9e6 100644 --- a/parm/postxconfig-NT-GFS-ANL.txt +++ b/parm/postxconfig-NT-GFS-ANL.txt @@ -1,5 +1,5 @@ 1 -89 +92 GFSPRS 0 ncep_nco @@ -3309,3 +3309,114 @@ hybrid_lvl ? ? ? +219 +SOTYP_ON_SURFACE +? +1 +tmpl4_0 +SOTYP +? +? +surface +0 +? +0 +? +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +4.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 +? +? +? +968 +ICETMP_ON_SURFACE +? +1 +tmpl4_0 +ICETMP +? +? +surface +0 +? +0 +? +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +5.0 +0 +0 +0 +? +? +? diff --git a/parm/postxconfig-NT-GFS-F00-TWO.txt b/parm/postxconfig-NT-GFS-F00-TWO.txt index 8f1738e01..48e076c29 100644 --- a/parm/postxconfig-NT-GFS-F00-TWO.txt +++ b/parm/postxconfig-NT-GFS-F00-TWO.txt @@ -1,6 +1,6 @@ 2 46 -136 +140 GFSPRS 0 ncep_nco @@ -5049,6 +5049,154 @@ hybrid_lvl ? ? ? +588 +ICEG_ON_SPEC_ALT_ABOVE_MEAN_SEA_LVL +? +1 +tmpl4_0 +ICEG +? +? +spec_alt_above_mean_sea_lvl +0 +? +1 +10. +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +4.0 +0 +0 +0 +? +? +? +219 +SOTYP_ON_SURFACE +? +1 +tmpl4_0 +SOTYP +? +? +surface +0 +? +0 +? +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +4.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 +? +? +? +968 +ICETMP_ON_SURFACE +? +1 +tmpl4_0 +ICETMP +? +? +surface +0 +? +0 +? +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +5.0 +0 +0 +0 +? +? +? GFSFLX 0 ncep_nco diff --git a/parm/postxconfig-NT-GFS-F00.txt b/parm/postxconfig-NT-GFS-F00.txt index 129d2fc7e..4a1e2dba8 100644 --- a/parm/postxconfig-NT-GFS-F00.txt +++ b/parm/postxconfig-NT-GFS-F00.txt @@ -1,5 +1,5 @@ 1 -137 +140 GFSPRS 0 ncep_nco @@ -5085,3 +5085,114 @@ spec_alt_above_mean_sea_lvl ? ? ? +219 +SOTYP_ON_SURFACE +? +1 +tmpl4_0 +SOTYP +? +? +surface +0 +? +0 +? +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +4.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 +? +? +? +968 +ICETMP_ON_SURFACE +? +1 +tmpl4_0 +ICETMP +? +? +surface +0 +? +0 +? +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +5.0 +0 +0 +0 +? +? +? diff --git a/parm/postxconfig-NT-GFS-TWO.txt b/parm/postxconfig-NT-GFS-TWO.txt index 8cb063747..674289202 100644 --- a/parm/postxconfig-NT-GFS-TWO.txt +++ b/parm/postxconfig-NT-GFS-TWO.txt @@ -1,6 +1,6 @@ 2 105 -183 +187 GFSPRS 0 ncep_nco @@ -6788,6 +6788,154 @@ hybrid_lvl ? ? ? +588 +ICEG_ON_SPEC_ALT_ABOVE_MEAN_SEA_LVL +? +1 +tmpl4_0 +ICEG +? +? +spec_alt_above_mean_sea_lvl +0 +? +1 +10. +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +4.0 +0 +0 +0 +? +? +? +219 +SOTYP_ON_SURFACE +? +1 +tmpl4_0 +SOTYP +? +? +surface +0 +? +0 +? +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +4.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 +? +? +? +968 +ICETMP_ON_SURFACE +? +1 +tmpl4_0 +ICETMP +? +? +surface +0 +? +0 +? +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +5.0 +0 +0 +0 +? +? +? GFSFLX 0 ncep_nco diff --git a/parm/postxconfig-NT-GFS.txt b/parm/postxconfig-NT-GFS.txt index f6da0dff0..270a4533d 100644 --- a/parm/postxconfig-NT-GFS.txt +++ b/parm/postxconfig-NT-GFS.txt @@ -1,5 +1,5 @@ 1 -184 +187 GFSPRS 0 ncep_nco @@ -6824,3 +6824,114 @@ spec_alt_above_mean_sea_lvl ? ? ? +219 +SOTYP_ON_SURFACE +? +1 +tmpl4_0 +SOTYP +? +? +surface +0 +? +0 +? +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +4.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 +? +? +? +968 +ICETMP_ON_SURFACE +? +1 +tmpl4_0 +ICETMP +? +? +surface +0 +? +0 +? +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +5.0 +0 +0 +0 +? +? +? diff --git a/scripts/exgdas_nceppost.sh.ecf b/scripts/exgdas_nceppost.sh.ecf index d3e0b5964..f6a040826 100755 --- a/scripts/exgdas_nceppost.sh.ecf +++ b/scripts/exgdas_nceppost.sh.ecf @@ -28,6 +28,7 @@ export POSTGPSH=${POSTGPSH:-$USHgfs/gfs_nceppost.sh} export GFSDOWNSH=${GFSDOWNSH:-$USHgfs/fv3gfs_downstream_nems.sh} export GFSDWNSH=${GFSDWNSH:-$USHgfs/fv3gfs_dwn_nems.sh} export TRIMRH=${TRIMRH:-$USHgfs/trim_rh.sh} +export MODICEC=${MODICEC:-$USHgfs/mod_icec.sh} export INLINE_POST=${INLINE_POST:-".false."} ############################################################ @@ -62,7 +63,7 @@ export machine=${machine:-WCOSS_C} # Specify Output layers ########################### #export POSTGPVARS="KPO=50,PO=1000.,975.,950.,925.,900.,875.,850.,825.,800.,775.,750.,725.,700.,675.,650.,625.,600.,575.,550.,525.,500.,475.,450.,425.,400.,375.,350.,325.,300.,275.,250.,225.,200.,175.,150.,125.,100.,70.,50.,40.,30.,20.,15.,10.,7.,5.,3.,2.,1.,0.4," -export POSTGPVARS="KPO=57,PO=1000.,975.,950.,925.,900.,875.,850.,825.,800.,775.,750.,725.,700.,675.,650.,625.,600.,575.,550.,525.,500.,475.,450.,425.,400.,375.,350.,325.,300.,275.,250.,225.,200.,175.,150.,125.,100.,70.,50.,40.,30.,20.,15.,10.,7.,5.,3.,2.,1.,0.7,0.4,0.2,0.1,0.07,0.04,0.02,0.01" +export POSTGPVARS="KPO=57,PO=1000.,975.,950.,925.,900.,875.,850.,825.,800.,775.,750.,725.,700.,675.,650.,625.,600.,575.,550.,525.,500.,475.,450.,425.,400.,375.,350.,325.,300.,275.,250.,225.,200.,175.,150.,125.,100.,70.,50.,40.,30.,20.,15.,10.,7.,5.,3.,2.,1.,0.7,0.4,0.2,0.1,0.07,0.04,0.02,0.01," ########################################################## # Specify variable to directly output pgrb2 files for GDAS/GFS @@ -195,7 +196,7 @@ do ic=1 while [ $ic -le $SLEEP_LOOP_MAX ] do - if test -f ${restart_file}${fhr}$SUFFIX + if test -f ${restart_file}${fhr}.txt then break else diff --git a/scripts/exgfs_nceppost.sh.ecf b/scripts/exgfs_nceppost.sh.ecf index eeb14aa81..556f548b0 100755 --- a/scripts/exgfs_nceppost.sh.ecf +++ b/scripts/exgfs_nceppost.sh.ecf @@ -38,6 +38,7 @@ export POSTGPSH=${POSTGPSH:-$USHgfs/gfs_nceppost.sh} export GFSDOWNSH=${GFSDOWNSH:-$USHgfs/fv3gfs_downstream_nems.sh} export GFSDWNSH=${GFSDWNSH:-$USHgfs/fv3gfs_dwn_nems.sh} export TRIMRH=${TRIMRH:-$USHgfs/trim_rh.sh} +export MODICEC=${MODICEC:-$USHgfs/mod_icec.sh} export INLINE_POST=${INLINE_POST:-".false."} ############################################################ @@ -73,7 +74,7 @@ export machine=${machine:-WCOSS_C} # Specify Output layers ########################### #export POSTGPVARS="KPO=50,PO=1000.,975.,950.,925.,900.,875.,850.,825.,800.,775.,750.,725.,700.,675.,650.,625.,600.,575.,550.,525.,500.,475.,450.,425.,400.,375.,350.,325.,300.,275.,250.,225.,200.,175.,150.,125.,100.,70.,50.,40.,30.,20.,15.,10.,7.,5.,3.,2.,1.,0.4," -export POSTGPVARS="KPO=57,PO=1000.,975.,950.,925.,900.,875.,850.,825.,800.,775.,750.,725.,700.,675.,650.,625.,600.,575.,550.,525.,500.,475.,450.,425.,400.,375.,350.,325.,300.,275.,250.,225.,200.,175.,150.,125.,100.,70.,50.,40.,30.,20.,15.,10.,7.,5.,3.,2.,1.,0.7,0.4,0.2,0.1,0.07,0.04,0.02,0.01" +export POSTGPVARS="KPO=57,PO=1000.,975.,950.,925.,900.,875.,850.,825.,800.,775.,750.,725.,700.,675.,650.,625.,600.,575.,550.,525.,500.,475.,450.,425.,400.,375.,350.,325.,300.,275.,250.,225.,200.,175.,150.,125.,100.,70.,50.,40.,30.,20.,15.,10.,7.,5.,3.,2.,1.,0.7,0.4,0.2,0.1,0.07,0.04,0.02,0.01," ########################################################## # Specify variable to directly output pgrb2 files for GDAS/GFS @@ -249,7 +250,7 @@ do ic=1 while [ $ic -le $SLEEP_LOOP_MAX ] do - if test -f $restart_file$fhr$SUFFIX + if test -f $restart_file${fhr}.txt then break else diff --git a/sorc/ncep_post.fd/ALLOCATE_ALL.f b/sorc/ncep_post.fd/ALLOCATE_ALL.f index f99a6de99..de0f38e6a 100644 --- a/sorc/ncep_post.fd/ALLOCATE_ALL.f +++ b/sorc/ncep_post.fd/ALLOCATE_ALL.f @@ -19,6 +19,7 @@ SUBROUTINE ALLOCATE_ALL() ! 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 +! 19-11-23 Wen Meng - Add sea ice skin T ! ! USAGE: CALL MPI_FIRST ! INPUT ARGUMENT LIST: @@ -235,6 +236,7 @@ SUBROUTINE ALLOCATE_ALL() allocate(ths(im,jsta_2l:jend_2u)) allocate(sno(im,jsta_2l:jend_2u)) allocate(snonc(im,jsta_2l:jend_2u)) + allocate(ti(im,jsta_2l:jend_2u)) ! Time-averaged fileds allocate(u10mean(im,jsta_2l:jend_2u)) allocate(v10mean(im,jsta_2l:jend_2u)) diff --git a/sorc/ncep_post.fd/CTLBLK.f b/sorc/ncep_post.fd/CTLBLK.f index 75929ed46..dd96c77ed 100644 --- a/sorc/ncep_post.fd/CTLBLK.f +++ b/sorc/ncep_post.fd/CTLBLK.f @@ -27,7 +27,8 @@ module CTLBLK_mod ! integer :: novegtype ! max number of veg type ! - character(len=256) :: fileName,fileNameFlux,fileNameD3D,fileNameAER + character(len=256) :: fileName,fileNameFlux,fileNameD3D,fileNameAER, & + fileNameFlat character(len=19) :: DateStr character(len=4) :: MODELNAME, SUBMODELNAME character(len=8) :: FULLMODELNAME diff --git a/sorc/ncep_post.fd/DEALLOCATE.f b/sorc/ncep_post.fd/DEALLOCATE.f index 3d1d57a3d..753919d5a 100644 --- a/sorc/ncep_post.fd/DEALLOCATE.f +++ b/sorc/ncep_post.fd/DEALLOCATE.f @@ -356,6 +356,7 @@ SUBROUTINE DE_ALLOCATE deallocate(avgetrans) deallocate(avgesnow) deallocate(avgpotevp) + deallocate(ti) ! GSD deallocate(rainc_bucket) deallocate(rainnc_bucket) diff --git a/sorc/ncep_post.fd/FIXED.f b/sorc/ncep_post.fd/FIXED.f index 8cf507bc0..b61c5d64e 100644 --- a/sorc/ncep_post.fd/FIXED.f +++ b/sorc/ncep_post.fd/FIXED.f @@ -43,7 +43,7 @@ SUBROUTINE FIXED !$$$ ! use vrbls3d, only: pint - use vrbls2d, only: albedo, avgalbedo, albase, mxsnal, sst, ths, epsr + use vrbls2d, only: albedo, avgalbedo, albase, mxsnal, sst, ths, epsr, ti use masks, only: gdlat, gdlon, sm, sice, lmh, lmv use params_mod, only: small, p1000, capa use lookup_mod, only: ITB,JTB,ITBQ,JTBQ @@ -331,6 +331,23 @@ SUBROUTINE FIXED endif ENDIF +! +! SEA ICE SKIN TEMPERAURE. + IF (IGET(968).GT.0) THEN +!$omp parallel do private(i,j) + DO J=JSTA,JEND + DO I=1,IM + GRID1(I,J) = TI(I,J) + ENDDO + ENDDO + ID(1:25) = 0 + if(grib=='grib2') then + cfld=cfld+1 + fld_info(cfld)%ifld=IAVBLFLD(IGET(968)) + datapd(1:im,1:jend-jsta+1,cfld)=GRID1(1:im,jsta:jend) + endif + ENDIF + ! EMISSIVIT. IF (IGET(248).GT.0) THEN !$omp parallel do private(i,j) diff --git a/sorc/ncep_post.fd/INITPOST_GFS_NEMS_MPIIO.f b/sorc/ncep_post.fd/INITPOST_GFS_NEMS_MPIIO.f index d2a29ae81..104eee42b 100644 --- a/sorc/ncep_post.fd/INITPOST_GFS_NEMS_MPIIO.f +++ b/sorc/ncep_post.fd/INITPOST_GFS_NEMS_MPIIO.f @@ -73,7 +73,8 @@ SUBROUTINE INITPOST_GFS_NEMS_MPIIO(iostatusAER) avgedir,avgecan,avgetrans,avgesnow,avgprec_cont,avgcprate_cont, & avisbeamswin,avisdiffswin,airbeamswin,airdiffswin, & alwoutc,alwtoac,aswoutc,aswtoac,alwinc,aswinc,avgpotevp,snoavg, & - dustcb,bccb,occb,sulfcb,sscb,dustallcb,ssallcb,dustpm,sspm,pp25cb,pp10cb + dustcb,bccb,occb,sulfcb,sscb,dustallcb,ssallcb,dustpm,sspm,pp25cb,pp10cb, & + ti 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 @@ -2425,7 +2426,30 @@ SUBROUTINE INITPOST_GFS_NEMS_MPIIO(iostatusAER) ,l,nrec,fldsize,spval,tmp & ,recname,reclevtyp,reclev,VarName,VcoordName & ,sr) +!$omp parallel do private(i,j) + do j=jsta,jend + do i=1,im + if(sr(i,j) /= spval) then +!set range within (0,1) + sr(i,j)=min(1.,max(0.,sr(i,j))) + endif + enddo + enddo +! sea ice skin temperature + VarName='ti' + VcoordName='sfc' + l=1 + call assignnemsiovar(im,jsta,jend,jsta_2l,jend_2u & + ,l,nrec,fldsize,spval,tmp & + ,recname,reclevtyp,reclev,VarName,VcoordName & + ,ti) +!$omp parallel do private(i,j) + do j=jsta,jend + do i=1,im + if (sice(i,j) == spval .or. sice(i,j) == 0.) ti(i,j)=spval + enddo + enddo ! vegetation fraction in fraction. using nemsio VarName='veg' @@ -2600,11 +2624,12 @@ SUBROUTINE INITPOST_GFS_NEMS_MPIIO(iostatusAER) ,l,nrec,fldsize,spval,tmp & ,recname,reclevtyp,reclev,VarName,VcoordName & ,stc(1,jsta_2l,1)) -! mask water areas +! mask open water areas, combine with sea ice tmp !$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 + if (sm(i,j) == 1.0 .and. sice(i,j) ==0.) stc(i,j,1) = spval + !if (sm(i,j) /= 0.0) stc(i,j,1) = spval enddo enddo ! if(debugprint)print*,'sample l','stc',' = ',1,stc(isa,jsa,1) @@ -2616,11 +2641,12 @@ SUBROUTINE INITPOST_GFS_NEMS_MPIIO(iostatusAER) ,l,nrec,fldsize,spval,tmp & ,recname,reclevtyp,reclev,VarName,VcoordName & ,stc(1,jsta_2l,2)) -! mask water areas +! mask open water areas, combine with sea ice tmp !$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 + if (sm(i,j) == 1.0 .and. sice(i,j) ==0.) stc(i,j,2) = spval + !if (sm(i,j) /= 0.0) stc(i,j,2) = spval enddo enddo ! if(debugprint)print*,'sample stc = ',1,stc(isa,jsa,2) @@ -2632,11 +2658,12 @@ SUBROUTINE INITPOST_GFS_NEMS_MPIIO(iostatusAER) ,l,nrec,fldsize,spval,tmp & ,recname,reclevtyp,reclev,VarName,VcoordName & ,stc(1,jsta_2l,3)) -! mask water areas +! mask open water areas, combine with sea ice tmp !$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 + if (sm(i,j) == 1.0 .and. sice(i,j) ==0.) stc(i,j,3) = spval + !if (sm(i,j) /= 0.0) stc(i,j,3) = spval enddo enddo ! if(debugprint)print*,'sample stc = ',1,stc(isa,jsa,3) @@ -2648,11 +2675,12 @@ SUBROUTINE INITPOST_GFS_NEMS_MPIIO(iostatusAER) ,l,nrec,fldsize,spval,tmp & ,recname,reclevtyp,reclev,VarName,VcoordName & ,stc(1,jsta_2l,4)) -! mask water areas +! mask open water areas, combine with sea ice tmp !$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 + if (sm(i,j) == 1.0 .and. sice(i,j) ==0.) stc(i,j,4) = spval + !if (sm(i,j) /= 0.0) stc(i,j,4) = spval enddo enddo ! if(debugprint)print*,'sample stc = ',1,stc(isa,jsa,4) diff --git a/sorc/ncep_post.fd/INITPOST_GFS_NETCDF.f b/sorc/ncep_post.fd/INITPOST_GFS_NETCDF.f index f1d6add07..17dd1651c 100644 --- a/sorc/ncep_post.fd/INITPOST_GFS_NETCDF.f +++ b/sorc/ncep_post.fd/INITPOST_GFS_NETCDF.f @@ -61,7 +61,8 @@ SUBROUTINE INITPOST_GFS_NETCDF(ncid3d) 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 + alwoutc,alwtoac,aswoutc,aswtoac,alwinc,aswinc,avgpotevp,snoavg, & + ti use soil, only: sldpth, sh2o, smc, stc use masks, only: lmv, lmh, htm, vtm, gdlat, gdlon, dx, dy, hbm2, sm, sice use physcons_post, only: grav => con_g, fv => con_fvirt, rgas => con_rd, & @@ -1624,6 +1625,26 @@ SUBROUTINE INITPOST_GFS_NETCDF(ncid3d) VarName='cpofp' call read_netcdf_2d_scatter(me,ncid2d,1,im,jm,jsta,jsta_2l & ,jend_2u,MPI_COMM_COMP,icnt,idsp,spval,VarName,sr) +!$omp parallel do private(i,j) + do j=jsta,jend + do i=1,im + if(sr(i,j) /= spval) then +!set range within (0,1) + sr(i,j)=min(1.,max(0.,sr(i,j))) + endif + enddo + enddo + +! sea ice skin temperature + VarName='tisfc' + call read_netcdf_2d_scatter(me,ncid2d,1,im,jm,jsta,jsta_2l & + ,jend_2u,MPI_COMM_COMP,icnt,idsp,spval,VarName,ti) +!$omp parallel do private(i,j) + do j=jsta,jend + do i=1,im + if (sice(i,j) == spval .or. sice(i,j) == 0.) ti(i,j)=spval + enddo + enddo ! vegetation fraction in fraction. using nemsio VarName='veg' @@ -1757,11 +1778,12 @@ SUBROUTINE INITPOST_GFS_NETCDF(ncid3d) 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 +! mask open water areas, combine with sea ice tmp !$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 + if (sm(i,j) == 1.0 .and. sice(i,j) ==0.) stc(i,j,1) = spval + !if (sm(i,j) /= 0.0) stc(i,j,1) = spval enddo enddo if(debugprint)print*,'sample l','stc',' = ',1,stc(isa,jsa,1) @@ -1769,11 +1791,12 @@ SUBROUTINE INITPOST_GFS_NETCDF(ncid3d) 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 +! mask open water areas, combine with sea ice tmp !$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 + if (sm(i,j) == 1.0 .and. sice(i,j) ==0.) stc(i,j,2) = spval + !if (sm(i,j) /= 0.0) stc(i,j,2) = spval enddo enddo if(debugprint)print*,'sample stc = ',1,stc(isa,jsa,2) @@ -1781,11 +1804,12 @@ SUBROUTINE INITPOST_GFS_NETCDF(ncid3d) 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 +! mask open water areas, combine with sea ice tmp !$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 + if (sm(i,j) == 1.0 .and. sice(i,j) ==0.) stc(i,j,3) = spval + !if (sm(i,j) /= 0.0) stc(i,j,3) = spval enddo enddo if(debugprint)print*,'sample stc = ',1,stc(isa,jsa,3) @@ -1793,11 +1817,12 @@ SUBROUTINE INITPOST_GFS_NETCDF(ncid3d) 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 +! mask open water areas, combine with sea ice tmp !$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 + if (sm(i,j) == 1.0 .and. sice(i,j) ==0.) stc(i,j,4) = spval + !if (sm(i,j) /= 0.0) stc(i,j,4) = spval enddo enddo if(debugprint)print*,'sample stc = ',1,stc(isa,jsa,4) diff --git a/sorc/ncep_post.fd/INITPOST_NETCDF.f b/sorc/ncep_post.fd/INITPOST_NETCDF.f index 19fa7b419..9984b2388 100644 --- a/sorc/ncep_post.fd/INITPOST_NETCDF.f +++ b/sorc/ncep_post.fd/INITPOST_NETCDF.f @@ -61,7 +61,8 @@ SUBROUTINE INITPOST_NETCDF(ncid3d) 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 + alwoutc,alwtoac,aswoutc,aswtoac,alwinc,aswinc,avgpotevp,snoavg, & + ti use soil, only: sldpth, sh2o, smc, stc use masks, only: lmv, lmh, htm, vtm, gdlat, gdlon, dx, dy, hbm2, sm, sice use physcons_post, only: grav => con_g, fv => con_fvirt, rgas => con_rd, & @@ -1681,6 +1682,26 @@ SUBROUTINE INITPOST_NETCDF(ncid3d) VarName='cpofp' call read_netcdf_2d_scatter(me,ncid2d,1,im,jm,jsta,jsta_2l & ,jend_2u,MPI_COMM_COMP,icnt,idsp,spval,VarName,sr) +!$omp parallel do private(i,j) + do j=jsta,jend + do i=1,im + if(sr(i,j) /= spval) then +!set range within (0,1) + sr(i,j)=min(1.,max(0.,sr(i,j))) + endif + enddo + enddo + +! sea ice skin temperature + VarName='tisfc' + call read_netcdf_2d_scatter(me,ncid2d,1,im,jm,jsta,jsta_2l & + ,jend_2u,MPI_COMM_COMP,icnt,idsp,spval,VarName,ti) +!$omp parallel do private(i,j) + do j=jsta,jend + do i=1,im + if (sice(i,j) == spval .or. sice(i,j) == 0.) ti(i,j)=spval + enddo + enddo ! vegetation fraction in fraction. using nemsio VarName='veg' @@ -1814,11 +1835,12 @@ SUBROUTINE INITPOST_NETCDF(ncid3d) 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 +! mask open water areas, combine with sea ice tmp !$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 + if (sm(i,j) == 1.0 .and. sice(i,j) ==0.) stc(i,j,1) = spval + !if (sm(i,j) /= 0.0) stc(i,j,1) = spval enddo enddo if(debugprint)print*,'sample l','stc',' = ',1,stc(isa,jsa,1) @@ -1826,11 +1848,12 @@ SUBROUTINE INITPOST_NETCDF(ncid3d) 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 +! mask open water areas, combine with sea ice tmp !$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 + if (sm(i,j) == 1.0 .and. sice(i,j) ==0.) stc(i,j,2) = spval + !if (sm(i,j) /= 0.0) stc(i,j,2) = spval enddo enddo if(debugprint)print*,'sample stc = ',1,stc(isa,jsa,2) @@ -1838,11 +1861,12 @@ SUBROUTINE INITPOST_NETCDF(ncid3d) 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 +! mask open water areas, combine with sea ice tmp !$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 + if (sm(i,j) == 1.0 .and. sice(i,j) ==0.) stc(i,j,3) = spval + !if (sm(i,j) /= 0.0) stc(i,j,3) = spval enddo enddo if(debugprint)print*,'sample stc = ',1,stc(isa,jsa,3) @@ -1850,11 +1874,12 @@ SUBROUTINE INITPOST_NETCDF(ncid3d) 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 +! mask open water areas, combine with sea ice tmp !$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 + if (sm(i,j) == 1.0 .and. sice(i,j) ==0.) stc(i,j,4) = spval + !if (sm(i,j) /= 0.0) stc(i,j,4) = spval enddo enddo if(debugprint)print*,'sample stc = ',1,stc(isa,jsa,4) diff --git a/sorc/ncep_post.fd/MPI_FIRST.f b/sorc/ncep_post.fd/MPI_FIRST.f index ad5677f75..aa2d9d735 100644 --- a/sorc/ncep_post.fd/MPI_FIRST.f +++ b/sorc/ncep_post.fd/MPI_FIRST.f @@ -79,7 +79,7 @@ SUBROUTINE MPI_FIRST() ocsmass25, occmass25, bcsmass, bccmass, bcsmass25, bccmass25, & sssmass, sscmass, sssmass25, sscmass25, ducmass25, & dustcb, sscb, bccb, occb, sulfcb, dustallcb, ssallcb,dustpm,sspm, pp25cb,& - pp10cb !lzhang + pp10cb, ti 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/sorc/ncep_post.fd/RQSTFLD.F b/sorc/ncep_post.fd/RQSTFLD.F index 6dda3af35..50410d134 100644 --- a/sorc/ncep_post.fd/RQSTFLD.F +++ b/sorc/ncep_post.fd/RQSTFLD.F @@ -2612,6 +2612,9 @@ module RQSTFLD_mod DATA IFILV(967),AVBL(967),IQ(967),IS(967),AVBLGRB2(967) & & /1,'GR CH16 NADIR ',118,109, & & 'GR CH16 ABI TB TOA '/ !Table 130 + DATA IFILV(968),AVBL(968),IQ(968),IS(968),AVBLGRB2(968) & + & /1,'SEA ICE SKI TEMPERATURE ',080,001, & + & 'ICETMP ON surface'/ !end initialization diff --git a/sorc/ncep_post.fd/VRBLS2D_mod.f b/sorc/ncep_post.fd/VRBLS2D_mod.f index 5f4d6ae72..58ab3d8dc 100644 --- a/sorc/ncep_post.fd/VRBLS2D_mod.f +++ b/sorc/ncep_post.fd/VRBLS2D_mod.f @@ -76,7 +76,8 @@ module vrbls2d ,avisbeamswin(:,:),avisdiffswin(:,:),airbeamswin(:,:) & ,airdiffswin(:,:),snowfall(:,:),acond(:,:),edir(:,:),ecan(:,:) & ,etrans(:,:),esnow(:,:),avgedir(:,:),avgecan(:,:),avgetrans(:,:)& - ,avgesnow(:,:),avgpotevp(:,:),avgprec_cont(:,:),avgcprate_cont(:,:) + ,avgesnow(:,:),avgpotevp(:,:),avgprec_cont(:,:),avgcprate_cont(:,:)& + ,ti(:,:) integer, allocatable :: IVGTYP(:,:),ISLTYP(:,:),ISLOPE(:,:) ! Add 2d aerosol diagnosis fields for GOCART (NGAC) real, allocatable :: & diff --git a/sorc/ncep_post.fd/WRFPOST.f b/sorc/ncep_post.fd/WRFPOST.f index 3766c7f8e..ef6620f59 100644 --- a/sorc/ncep_post.fd/WRFPOST.f +++ b/sorc/ncep_post.fd/WRFPOST.f @@ -142,7 +142,7 @@ PROGRAM WRFPOST jsta, jend, jsta_m, jend_m, jsta_2l, jend_2u, novegtype, icount_calmict, npset, datapd,& lsm, fld_info, etafld2_tim, eta2p_tim, mdl2sigma_tim, cldrad_tim, miscln_tim, & fixed_tim, time_output, imin, surfce2_tim, komax, ivegsrc, d3d_on, gocart_on, & - readxml_tim, spval, fullmodelname, submodelname, hyb_sigp + readxml_tim, spval, fullmodelname, submodelname, hyb_sigp, filenameflat use grib2_module, only: gribit2,num_pset,nrecout,first_grbtbl,grib_info_finalize use sigio_module, only: sigio_head use sigio_r_module, only: sigio_rropen, sigio_rrhead @@ -175,7 +175,7 @@ PROGRAM WRFPOST ,hyb_sigp character startdate*19,SysDepInfo*80,IOWRFNAME*3,post_fname*255 - character cgar*1,cdum*4 + character cgar*1,cdum*4,line*10 ! !------------------------------------------------------------------------------ ! START HERE @@ -372,6 +372,15 @@ PROGRAM WRFPOST end if 115 format(f7.1) 116 continue +!set control file name + fileNameFlat='postxconfig-NT.txt' + if(MODELNAME == 'GFS') then +! read(5,*) line + read(5,111,end=125) fileNameFlat + 125 continue +! if(len_trim(fileNameFlat)<5) fileNameFlat = 'postxconfig-NT.txt' + if (me == 0) print*,'Post flat name in GFS= ',trim(fileNameFlat) + endif ! set PTHRESH for different models if(MODELNAME == 'NMM')then PTHRESH = 0.000004 diff --git a/sorc/ncep_post.fd/xml_perl_data.f b/sorc/ncep_post.fd/xml_perl_data.f index 1b5c12101..1e3dd9f94 100644 --- a/sorc/ncep_post.fd/xml_perl_data.f +++ b/sorc/ncep_post.fd/xml_perl_data.f @@ -79,7 +79,7 @@ subroutine read_postxconfig() use rqstfld_mod,only: num_post_afld,MXLVL,lvlsxml use CTLBLK_mod, only:tprec,tclod,trdlw,trdsw,tsrfc & - ,tmaxmin,td3d,me + ,tmaxmin,td3d,me,filenameflat ! Read in the flat file postxconfig-NT.txt ! for current working parameters and param @@ -99,7 +99,8 @@ subroutine read_postxconfig() integer testintname ! open the Post flat file - open(UNIT=22,file="postxconfig-NT.txt", & +! open(UNIT=22,file="postxconfig-NT.txt", & + open(UNIT=22,file=trim(filenameflat), & form="formatted", access="sequential", & status="old", position="rewind") diff --git a/ush/fv3gfs_downstream_nems.sh b/ush/fv3gfs_downstream_nems.sh index d930d0683..c7ec2b01c 100755 --- a/ush/fv3gfs_downstream_nems.sh +++ b/ush/fv3gfs_downstream_nems.sh @@ -25,8 +25,10 @@ set -x #-Wen Meng, January 2018, add flag PGB1F for turning on/ogg grib1 pgb data at 1.00 deg. generation. #-Wen Meng, Feburary 2018 # 1. Add flag PGBS for turning on/off pgb data at 1.0 and 0.5 deg. generation frequency of FHOUT_PGB defined. -#-Wen Meng, October +#-Wen Meng, October 2019 # 1. Use bilinear interpolation for LAND. It can trancate land-sea mask as 1 or 0. +#-Wen Meng, November 2019 +# 1. Modify sea icea cover via land-sea mask. #----------------------------------------------------------------------- @@ -45,6 +47,7 @@ export PREFIX=${PREFIX:-${RUN}${TCYC}} export PGB1F=${PGB1F:-"NO"} export FHOUT_PGB=${FHOUT_PGB:-3} export PGBS=${PGBS:-"NO"} #YES-- generate 1.00 and 0.50 deg pgb data +export MODICEC=${MODICEC:-$USHgfs/mod_icec.sh} #--wgrib2 regrid parameters export option1=' -set_grib_type same -new_grid_winds earth ' @@ -137,6 +140,12 @@ while [ $nset -le $totalset ]; do if [[ $rc -eq 0 ]] ; then export end=`expr ${end} + 1` fi + # if final record is land, add next record icec + $WGRIB2 -d $end $tmpfile |egrep -i "land" + export rc=$? + if [[ $rc -eq 0 ]] ; then + export end=`expr ${end} + 1` + fi if [ $iproc -eq $nproc ]; then export end=$ncount fi @@ -289,6 +298,12 @@ else -new_grid $grid0p5 pgb2file_${fhr3}_0p5 \ -new_grid $grid1p0 pgb2file_${fhr3}_1p0 export err=$?; err_chk + #tweak sea ice cover + count=`$WGRIB2 pgb2file_${fhr3}_${iproc}_0p25 -match "LAND|ICEC" |wc -l` + if [ $count -eq 2 ]; then + $MODICEC pgb2file_${fhr3}_0p25 + $MODICEC pgb2file_${fhr3}_1p0 + fi # convert 1 deg files back to Grib1 for verification if [ "$PGB1F" = 'YES' ]; then diff --git a/ush/fv3gfs_dwn_nems.sh b/ush/fv3gfs_dwn_nems.sh index 133d62d88..030217add 100755 --- a/ush/fv3gfs_dwn_nems.sh +++ b/ush/fv3gfs_dwn_nems.sh @@ -10,6 +10,7 @@ set -x # Wen Meng 01/2018: add flag PGB1F for turning on/off wgrib1 pgb data at 1.00 deg. generation. # Wen Meng 02/2018: add flag PGBS for turning on/off pgb data at 1.0 and 0.5 deg. generation. # Wen Meng 10/2019: Use bilinear interpolation for LAND, It can trancate land-sea mask as 0 or 1. +# Wen Meng 11/2019: Teak sea ice cover via land-sea mask. export tmpfile=$1 export fhr3=$2 @@ -20,6 +21,7 @@ export CNVGRIB=${CNVGRIB:-$${NWPROD:-/nwprod}/util/exec/cnvgrib21} export COPYGB2=${COPYGB2:-$${NWPROD:-/nwprod}/util/exec/copygb2} export WGRIB2=${WGRIB2:-${NWPROD:-/nwprod}/util/exec/wgrib2} export TRIMRH=${TRIMRH:-$USHgfs/trim_rh.sh} +export MODICEC=${MODICEC:-$USHgfs/mod_icec.sh} export opt1=' -set_grib_type same -new_grid_winds earth ' export opt21=' -new_grid_interpolation bilinear -if ' @@ -48,6 +50,13 @@ if [ $nset = 1 ]; then $TRIMRH pgb2file_${fhr3}_${iproc}_0p25 $TRIMRH pgb2file_${fhr3}_${iproc}_0p5 $TRIMRH pgb2file_${fhr3}_${iproc}_1p0 + #tweak sea ice cover + count=`$WGRIB2 pgb2file_${fhr3}_${iproc}_0p25 -match "LAND|ICEC" |wc -l` + if [ $count -eq 2 ]; then + $MODICEC pgb2file_${fhr3}_${iproc}_0p25 + $MODICEC pgb2file_${fhr3}_${iproc}_0p5 + $MODICEC pgb2file_${fhr3}_${iproc}_1p0 + fi #$CNVGRIB -g21 pgb2file_${fhr3}_${iproc}_0p25 pgbfile_${fhr3}_${iproc}_0p25 if [ "$PGB1F" = 'YES' ]; then $CNVGRIB -g21 pgb2file_${fhr3}_${iproc}_1p0 pgbfile_${fhr3}_${iproc}_1p0 @@ -58,6 +67,11 @@ if [ $nset = 1 ]; then -new_grid $grid0p25 pgb2file_${fhr3}_${iproc}_0p25 export err=$?; err_chk $TRIMRH pgb2file_${fhr3}_${iproc}_0p25 + #tweak sea ice cover + count=`$WGRIB2 pgb2file_${fhr3}_${iproc}_0p25 -match "LAND|ICEC" |wc -l` + if [ $count -eq 2 ]; then + $MODICEC pgb2file_${fhr3}_${iproc}_0p25 + fi fi elif [ $nset = 2 ]; then if [ "$PGBS" = "YES" ]; then diff --git a/ush/gfs_nceppost.sh b/ush/gfs_nceppost.sh index 7b5ba2836..157362827 100755 --- a/ush/gfs_nceppost.sh +++ b/ush/gfs_nceppost.sh @@ -293,8 +293,9 @@ cat <postgp.inp.nml$$ EOF cat <>postgp.inp.nml$$ - / +/ EOF + if [[ "$VERBOSE" = "YES" ]] then cat postgp.inp.nml$$ diff --git a/ush/mod_icec.sh b/ush/mod_icec.sh new file mode 100755 index 000000000..9e7722580 --- /dev/null +++ b/ush/mod_icec.sh @@ -0,0 +1,23 @@ +#!/bin/sh +set -x +#This script is used for modifing icee via land-sea mask +#Wen Meng 11/2019: First Version + +f=$1 + +export WGRIB2=${WGRIB2:-${NWPROD:-/nwprod}/util/exec/wgrib2} + +$WGRIB2 $f \ + -if 'LAND' -rpn 'sto_1' -fi \ + -if 'ICEC' -rpn 'rcl_1:0:==:*' -fi \ + -set_grib_type same \ + -set_scaling same same \ + -grib_out $f.new +export err=$?; err_chk +mv $f.new $f + +exit 0 + +#-if 'ICEC' -rpn 'rcl_1:-1:*:1:+:*' -fi \ + + From 3b7f40835845e0204bbeea43b18366cfa5875836 Mon Sep 17 00:00:00 2001 From: YaliMao-NOAA <53870326+YaliMao-NOAA@users.noreply.github.com> Date: Mon, 9 Dec 2019 23:16:34 -0500 Subject: [PATCH 14/21] Post wafs (#28) * Output 3D WAFS products to standard atmospheric pressuer levels, not on model pressure levels. 1. 3D WAFS products include U/V/T/RH/VVEL/ABSV, icing and GTG. 2. GTG processing becomes part of WAFS product processing. 3. New code sorc/ncep_post.fd/MDL2STD_P.f is in charge of this. 4. sorc/ncep_post.fd/FDLVL.f is modified to process multiple 3D fields on the same vertical levels. 5. Modified for control file in sorc/ncep_post.fd/SET_LVLSXML.f 6. New control files for WAFS analysis, FF 03-36 and FF >=42 7. Icing and GTG is moved from MDL2P to MDL2STD_P. 8. sorc/ncep_post.fd/CALVOR.f is modified to take of SPVAL input values. 9. parm/post_avblflds.xml moves icing and GTG from ISOBARIC_SFC to STD_ISOBARIC_SFC, add U/V/T/RH/VVEL/ABSV on STD_ISOBARIC_SFC 10. scripts/exgfs_nceppost.sh.ecf removed GTG and added WAFS 11. Added sorc/ncep_post_gtg.fd and modified sorc/build_ncep_post.sh to keep GTG code private * Make a clean copy of UPP WAFS branch for general UPP * Add underground interpolation to WAFS related fields and FDLVL_MASS subroutine is modified --- sorc/ncep_post.fd/FDLVL.f | 116 +++++++++++++++++++++++++++++++--- sorc/ncep_post.fd/MDL2STD_P.f | 36 +++++++++-- 2 files changed, 138 insertions(+), 14 deletions(-) diff --git a/sorc/ncep_post.fd/FDLVL.f b/sorc/ncep_post.fd/FDLVL.f index 944dfd1ef..817d767f1 100644 --- a/sorc/ncep_post.fd/FDLVL.f +++ b/sorc/ncep_post.fd/FDLVL.f @@ -690,6 +690,9 @@ SUBROUTINE FDLVL_UV(ITYPE,NFD,HTFD,UFD,VFD) ELSEIF (L == LM) THEN UFD(I,J,IFD)=UH(I,J,L) VFD(I,J,IFD)=VH(I,J,L) + ELSE ! Underground + UFD(I,J,IFD)=UH(I,J,LM) + VFD(I,J,IFD)=VH(I,J,LM) ENDIF ! enddo ! end of i loop @@ -792,7 +795,7 @@ SUBROUTINE FDLVL_UV(ITYPE,NFD,HTFD,UFD,VFD) RETURN END - SUBROUTINE FDLVL_MASS(ITYPE,NFD,HTFD,NIN,QIN,QFD) + SUBROUTINE FDLVL_MASS(ITYPE,NFD,PTFD,HTFD,NIN,QIN,QTYPE,QFD) !$$$ SUBPROGRAM DOCUMENTATION BLOCK ! . . . ! SUBPROGRAM: FDLVL_MASS COMPUTES FD LEVEL FOR MASS VARIABLES @@ -837,15 +840,22 @@ SUBROUTINE FDLVL_MASS(ITYPE,NFD,HTFD,NIN,QIN,QFD) ! WITH THE SAME LEVELS AT ONE TIME ! DUST=>AERFD CAN BE PROCESSED WHEN NIN=NBIN_DU ! -! USAGE: CALL FDLVL_MASS(ITYPE,NFD,HTFD,NIN,QIN,QFD) +! USAGE: CALL FDLVL_MASS(ITYPE,NFD,PTFD,HTFD,NIN,QIN,QTYPE,QFD) ! INPUT ARGUMENT LIST: ! ITYPE - FLAG THAT DETERMINES WHETHER MSL (1) OR AGL (2) ! LEVELS ARE USED. ! NFD - NUMBER OF FD LEVELS -! HTFD - FD LEVELS +! PTFD - FD PRESSURE LEVELS +! HTFD - FD HEIGHT LEVELS ! NIN - NUMBER OF INPUT FIELDS -! QIN - ARRAY OF MASS POINT VALUE ON MODEL LEVELS -! +! QIN - ARRAY OF MASS POINT VALUE ON MODEL LEVELS +! QTYPE - CHARACTER ARRAY OF VARIABLE TYPE TO DIFFERENTIATE UNDERGROUND INTERPOLATION +! C-5 Cloud Species +! K-TURBULENT KINETIC ENERGY +! Q-Specific Humidity +! T-Temperature, +! W-Vertical Velocity or Omega +! ! OUTPUT ARGUMENT LIST: ! QFD - ARRAY OF MASS POINT VALUE ON FD LEVELS. ! @@ -884,13 +894,14 @@ SUBROUTINE FDLVL_MASS(ITYPE,NFD,HTFD,NIN,QIN,QFD) ! endif ! - use vrbls3d, only: ZMID + use vrbls3d, only: T,Q,ZMID,PMID,PINT,ZINT use vrbls2d, only: FIS use masks, only: LMH - use params_mod, only: GI, G + use params_mod, only: GI, G, GAMMA,PQ0, A2, A3, A4, RHMIN,RGAMOG use ctlblk_mod, only: JSTA, JEND, SPVAL, JSTA_2L, JEND_2U, LM, JSTA_M, & - JEND_M, IM, JM,global + JEND_M, IM, JM,global,MODELNAME use gridspec_mod, only: GRIDTYPE + use physcons_post,only: CON_FVIRT, CON_ROG, CON_EPS, CON_EPSM1 !- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - implicit none ! @@ -898,11 +909,16 @@ SUBROUTINE FDLVL_MASS(ITYPE,NFD,HTFD,NIN,QIN,QFD) ! ! DECLARE VARIABLES ! + real,parameter:: zshul=75.,tvshul=290.66 + real,external :: fpvsnew + integer,intent(in) :: ITYPE(NFD) integer,intent(in) :: NFD ! coming from calling subroutine + real, intent(in) :: PTFD(NFD) real,intent(in) :: HTFD(NFD) integer,intent(in) :: NIN real,intent(in) :: QIN(IM,JSTA:JEND,LM,NIN) + character, intent(in) :: QTYPE(NIN) real,intent(out) :: QFD(IM,JSTA:JEND,NFD,NIN) ! @@ -912,6 +928,9 @@ SUBROUTINE FDLVL_MASS(ITYPE,NFD,HTFD,NIN,QIN,QFD) integer I,J,L,LLMH,IFD,N integer ISTART,ISTOP,JSTART,JSTOP real htt,htsfc,dz,rdz,delq,htabh + + real :: tvu,tvd,gammas,part,ES,QSAT,RHL,PL,ZL,TL,QL + real :: TVRL,TVRBLO,TBLO,QBLO ! !**************************************************************** ! START FDLVL_MASS HERE @@ -942,6 +961,7 @@ SUBROUTINE FDLVL_MASS(ITYPE,NFD,HTFD,NIN,QIN,QFD) END IF DO IFD = 1, NFD + ! ! MSL FD LEVELS ! @@ -975,7 +995,7 @@ SUBROUTINE FDLVL_MASS(ITYPE,NFD,HTFD,NIN,QIN,QFD) exit END IF - enddo ! end of l loop + ENDDO ! end of L loop ! ! COMPUTE Q AT FD LEVELS. ! @@ -997,7 +1017,83 @@ SUBROUTINE FDLVL_MASS(ITYPE,NFD,HTFD,NIN,QIN,QFD) DO N = 1, NIN QFD(I,J,IFD,N) = QIN(I,J,L,N) ENDDO - ENDIF + ELSE ! Underground + DO N = 1, NIN + ! Deduce T and Q differently by different models + IF(MODELNAME == 'GFS')THEN ! GFS deduce T using Shuell + if(QTYPE(N) == "T" .or. QTYPE(N) == "Q") then + tvu = T(I,J,LM) * (1.+con_fvirt*Q(I,J,LM)) + if(ZMID(I,J,LM) > zshul) then + tvd = tvu + gamma*ZMID(I,J,LM) + if(tvd > tvshul) then + if(tvu > tvshul) then + tvd = tvshul - 5.e-3*(tvu-tvshul)*(tvu-tvshul) + else + tvd = tvshul + endif + endif + gammas = (tvu-tvd)/ZMID(I,J,LM) + else + gammas = 0. + endif + part = con_rog*(LOG(PTFD(IFD))-LOG(PMID(I,J,LM))) + part = ZMID(I,J,LM) - tvu*part/(1.+0.5*gammas*part) + part = T(I,J,LM) - gamma*(part-ZMID(I,J,LM)) + + if(QTYPE(N) == "T") QFD(I,J,IFD,N) = part + + if(QTYPE(N) == "Q") then + +! Compute RH at lowest model layer because Iredell and Chuang decided to compute +! underground GFS Q to maintain RH + ES = min(FPVSNEW(T(I,J,LM)), PMID(I,J,LM)) + QSAT = CON_EPS*ES/(PMID(I,J,LM)+CON_EPSM1*ES) + RHL = Q(I,J,LM)/QSAT +! compute saturation water vapor at isobaric level + ES = min(FPVSNEW(part), PTFD(IFD)) + QSAT = CON_EPS*ES/(PTFD(IFD)+CON_EPSM1*ES) +! Q at isobaric level is computed by maintaining constant RH + QFD(I,J,IFD,N) = RHL*QSAT + endif + endif + + ELSE + if(QTYPE(N) == "T" .or. QTYPE(N) == "Q") then + PL = PINT(I,J,LM-1) + ZL = ZINT(I,J,LM-1) + TL = 0.5*(T(I,J,LM-2)+T(I,J,LM-1)) + QL = 0.5*(Q(I,J,LM-2)+Q(I,J,LM-1)) + + QSAT = PQ0/PL*EXP(A2*(TL-A3)/(TL-A4)) + RHL = QL/QSAT +! + IF(RHL > 1.)THEN + RHL = 1. + QL = RHL*QSAT + ENDIF +! + IF(RHL < RHmin)THEN + RHL = RHmin + QL = RHL*QSAT + ENDIF +! + TVRL = TL*(1.+0.608*QL) + TVRBLO = TVRL*(PTFD(IFD)/PL)**RGAMOG + TBLO = TVRBLO/(1.+0.608*QL) + + QSAT = PQ0/PTFD(IFD)*EXP(A2*(TBLO-A3)/(TBLO-A4)) + if(QTYPE(N) == "T") QFD(I,J,IFD,N) = TBLO + QBLO = RHL*QSAT + if(QTYPE(N) == "Q") QFD(I,J,IFD,N) = MAX(1.E-12,QBLO) + endif + END IF ! endif loop for deducing T and Q differently for GFS + + if(QTYPE(N) == "W") QFD(I,J,IFD,N)=QIN(I,J,LM,N) ! W OMGA + if(QTYPE(N) == "K") QFD(I,J,IFD,N)= max(0.0,0.5*(QIN(I,J,LM,N)+QIN(I,J,LM-1,N))) ! TKE + if(QTYPE(N) == "C") QFD(I,J,IFD,N)=0.0 ! Hydrometeor fields + END DO + + ENDIF ! Underground ! ! COMPUTE FD LEVEL Q AT NEXT K. diff --git a/sorc/ncep_post.fd/MDL2STD_P.f b/sorc/ncep_post.fd/MDL2STD_P.f index b572ebbf3..f24a8cf03 100644 --- a/sorc/ncep_post.fd/MDL2STD_P.f +++ b/sorc/ncep_post.fd/MDL2STD_P.f @@ -61,6 +61,7 @@ SUBROUTINE MDL2STD_P() REAL, allocatable :: HTFDCTL(:) integer, allocatable :: ITYPEFDLVLCTL(:) real, allocatable :: QIN(:,:,:,:), QFD(:,:,:,:) + character, allocatable :: QTYPE(:) real, allocatable :: VAR3D1(:,:,:), VAR3D2(:,:,:) integer, parameter :: NFDMAX=50 ! Max number of fields with the same HTFDCTL @@ -118,6 +119,8 @@ SUBROUTINE MDL2STD_P() DO i = 1, NFDCTL HTFDCTL(i)=P2H(HTFDCTL(i)/100.) ENDDO + if(allocated(VAR3D1)) deallocate(VAR3D1) + if(allocated(VAR3D2)) deallocate(VAR3D2) allocate(VAR3D1(IM,JSTA_2L:JEND_2U,NFDCTL)) allocate(VAR3D2(IM,JSTA_2L:JEND_2U,NFDCTL)) VAR3D1=SPVAL @@ -203,7 +206,10 @@ SUBROUTINE MDL2STD_P() ! HGT(TO BE FIXED VALUES) ! RH ABSV (TO BE CACULATED) + if(allocated(QIN)) deallocate(QIN) + if(allocated(QTYPE)) deallocate(QTYPE) ALLOCATE(QIN(IM,JSTA:JEND,LM,NFDMAX)) + ALLOCATE(QTYPE(NFDMAX)) ! INITIALIZE INPUTS nFDS = 0 @@ -211,66 +217,79 @@ SUBROUTINE MDL2STD_P() nFDS = nFDS + 1 IDS(nFDS) = 450 QIN(1:IM,JSTA:JEND,1:LM,nFDS)=icing_gfip(1:IM,JSTA:JEND,1:LM) + QTYPE(nFDS)="O" end if IF(IGET(480) > 0) THEN nFDS = nFDS + 1 IDS(nFDS) = 480 QIN(1:IM,JSTA:JEND,1:LM,nFDS)=icing_gfis(1:IM,JSTA:JEND,1:LM) + QTYPE(nFDS)="O" end if IF(IGET(464) > 0) THEN nFDS = nFDS + 1 IDS(nFDS) = 464 QIN(1:IM,JSTA:JEND,1:LM,nFDS)=gtg(1:IM,JSTA:JEND,1:LM) + QTYPE(nFDS)="O" end if IF(IGET(465) > 0) THEN nFDS = nFDS + 1 IDS(nFDS) = 465 QIN(1:IM,JSTA:JEND,1:LM,nFDS)=catedr(1:IM,JSTA:JEND,1:LM) + QTYPE(nFDS)="O" end if IF(IGET(466) > 0) THEN nFDS = nFDS + 1 IDS(nFDS) = 466 QIN(1:IM,JSTA:JEND,1:LM,nFDS)=mwt(1:IM,JSTA:JEND,1:LM) + QTYPE(nFDS)="O" end if IF(IGET(519) > 0) THEN nFDS = nFDS + 1 IDS(nFDS) = 519 QIN(1:IM,JSTA:JEND,1:LM,nFDS)=T(1:IM,JSTA:JEND,1:LM) + QTYPE(nFDS)="T" end if IF(IGET(522) > 0) THEN nFDS = nFDS + 1 IDS(nFDS) = 522 QIN(1:IM,JSTA:JEND,1:LM,nFDS)=Q(1:IM,JSTA:JEND,1:LM) + QTYPE(nFDS)="Q" end if IF(IGET(524) > 0) THEN nFDS = nFDS + 1 IDS(nFDS) = 524 QIN(1:IM,JSTA:JEND,1:LM,nFDS)=OMGA(1:IM,JSTA:JEND,1:LM) + QTYPE(nFDS)="W" end if IF(IGET(526) > 0) THEN nFDS = nFDS + 1 IDS(nFDS) = 526 QIN(1:IM,JSTA:JEND,1:LM,nFDS)=QQW(1:IM,JSTA:JEND,1:LM) + QTYPE(nFDS)="C" end if IF(IGET(527) > 0) THEN nFDS = nFDS + 1 IDS(nFDS) = 527 QIN(1:IM,JSTA:JEND,1:LM,nFDS)=QQR(1:IM,JSTA:JEND,1:LM) + QTYPE(nFDS)="C" end if IF(IGET(528) > 0) THEN nFDS = nFDS + 1 IDS(nFDS) = 528 QIN(1:IM,JSTA:JEND,1:LM,nFDS)=QQS(1:IM,JSTA:JEND,1:LM) + QTYPE(nFDS)="C" end if IF(IGET(529) > 0) THEN nFDS = nFDS + 1 IDS(nFDS) = 529 QIN(1:IM,JSTA:JEND,1:LM,nFDS)=QQG(1:IM,JSTA:JEND,1:LM) + QTYPE(nFDS)="C" end if IF(IGET(530) > 0) THEN nFDS = nFDS + 1 IDS(nFDS) = 530 QIN(1:IM,JSTA:JEND,1:LM,nFDS)=QQI(1:IM,JSTA:JEND,1:LM) + QTYPE(nFDS)="C" end if ! FOR WAFS, ALL LEVLES OF DIFFERENT VARIABLES ARE THE SAME, USE ANY @@ -289,10 +308,11 @@ SUBROUTINE MDL2STD_P() HTFDCTL(i)=P2H(HTFDCTL(i)/100.) ENDDO + if(allocated(QFD)) deallocate(QFD) ALLOCATE(QFD(IM,JSTA:JEND,NFDCTL,nFDS)) QFD=SPVAL - call FDLVL_MASS(ITYPEFDLVLCTL,NFDCTL,HTFDCTL,nFDS,QIN,QFD) + call FDLVL_MASS(ITYPEFDLVLCTL,NFDCTL,pset%param(N)%level,HTFDCTL,nFDS,QIN,QTYPE,QFD) ! Adjust values before output N1 = -1 @@ -415,6 +435,7 @@ SUBROUTINE MDL2STD_P() ENDDO DEALLOCATE(QIN,QFD) + DEALLOCATE(QTYPE) ! STEP 3 - MASS FIELDS CALCULATION ! HGT(TO BE FIXED VALUES) @@ -472,16 +493,23 @@ SUBROUTINE MDL2STD_P() HTFDCTL(i)=P2H(HTFDCTL(i)/100.) ENDDO + if(allocated(QIN)) deallocate(QIN) + if(allocated(QTYPE)) deallocate(QTYPE) ALLOCATE(QIN(IM,JSTA:JEND,LM,2)) + ALLOCATE(QTYPE(2)) QIN(1:IM,JSTA:JEND,1:LM,1)=T(1:IM,JSTA:JEND,1:LM) QIN(1:IM,JSTA:JEND,1:LM,2)=Q(1:IM,JSTA:JEND,1:LM) + QTYPE(1)="T" + QTYPE(2)="Q" + if(allocated(QFD)) deallocate(QFD) ALLOCATE(QFD(IM,JSTA:JEND,NFDCTL,2)) QFD=SPVAL - call FDLVL_MASS(ITYPEFDLVLCTL,NFDCTL,HTFDCTL,2,QIN,QFD) - HTFDCTL=pset%param(N)%level ! Save back to pressure + print *, "wafs levels",pset%param(N)%level + call FDLVL_MASS(ITYPEFDLVLCTL,NFDCTL,pset%param(N)%level,HTFDCTL,2,QIN,QTYPE,QFD) + HTFDCTL=pset%param(N)%level ! Save back to pressure DO IFD = 1,NFDCTL IF (LVLS(IFD,IGET(iID)) > 0) THEN @@ -533,7 +561,7 @@ SUBROUTINE MDL2STD_P() ENDIF ENDDO deallocate(QIN,QFD) - + deallocate(QTYPE) ENDIF ENDIF From 2eb40f23fbf1d39ae8e1f9ff6e59e196767d1d5f Mon Sep 17 00:00:00 2001 From: Jili Dong Date: Fri, 13 Dec 2019 14:34:49 -0500 Subject: [PATCH 15/21] Reg latlon update (#29) * update modules for jet * update for regular lat-lon grids to FV3 output change on coordinate --- sorc/ncep_post.fd/INITPOST_NETCDF.f | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/sorc/ncep_post.fd/INITPOST_NETCDF.f b/sorc/ncep_post.fd/INITPOST_NETCDF.f index 9984b2388..1a96c5af1 100644 --- a/sorc/ncep_post.fd/INITPOST_NETCDF.f +++ b/sorc/ncep_post.fd/INITPOST_NETCDF.f @@ -531,6 +531,18 @@ SUBROUTINE INITPOST_NETCDF(ncid3d) end do lonstart = nint(glon1d(1)*gdsdegr) lonlast = nint(glon1d(im)*gdsdegr) + +! 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 + else if(numDims==2)then Status=nf90_get_var(ncid3d,varid,dummy) if(maxval(abs(dummy))<2.0*pi)convert_rad_to_deg=.true. From 9f166ece66b7961083fbfd72594bbc07729e66ba Mon Sep 17 00:00:00 2001 From: WenMeng-NOAA <48260754+WenMeng-NOAA@users.noreply.github.com> Date: Sun, 15 Dec 2019 18:05:22 -0500 Subject: [PATCH 16/21] Post g2tmpl (#32) * 1)Update with g2tmp/1.6.0; 2)Sync new routines into makefile for building post library. * Switch to intel/16.3.210 for Cray. * Upgrade with g2tmpl v1.6.0 on Hera. --- .../post/{lib-v8.0.0-cray-intel => lib-cray-intel} | 7 +++++-- modulefiles/post/{lib-v8.0.0-hera => lib-hera} | 2 +- modulefiles/post/{lib-v8.0.0-wcoss => lib-wcoss} | 0 .../{lib-v8.0.0-wcoss_dell_p3 => lib-wcoss_dell_p3} | 3 ++- modulefiles/post/v8.0.0-cray-intel | 7 +++++-- modulefiles/post/v8.0.0-hera | 8 +++++--- modulefiles/post/v8.0.0-wcoss_dell_p3 | 3 ++- parm/post_avblflds.xml | 10 ---------- parm/postxconfig-NT-GFS-GOES.txt | 8 ++++---- sorc/ncep_post.fd/build_ncepost_lib.sh | 4 ++-- sorc/ncep_post.fd/makefile_lib | 9 +++++---- 11 files changed, 31 insertions(+), 30 deletions(-) rename modulefiles/post/{lib-v8.0.0-cray-intel => lib-cray-intel} (88%) rename modulefiles/post/{lib-v8.0.0-hera => lib-hera} (98%) rename modulefiles/post/{lib-v8.0.0-wcoss => lib-wcoss} (100%) rename modulefiles/post/{lib-v8.0.0-wcoss_dell_p3 => lib-wcoss_dell_p3} (93%) diff --git a/modulefiles/post/lib-v8.0.0-cray-intel b/modulefiles/post/lib-cray-intel similarity index 88% rename from modulefiles/post/lib-v8.0.0-cray-intel rename to modulefiles/post/lib-cray-intel index 3c34033ae..054346457 100755 --- a/modulefiles/post/lib-v8.0.0-cray-intel +++ b/modulefiles/post/lib-cray-intel @@ -33,7 +33,8 @@ module use -a /gpfs/hps/nco/ops/nwprod/lib/modulefiles # Loading Intel Compiler Suite module load PrgEnv-intel module load craype-sandybridge -module switch intel intel/15.0.3.187 +#module switch intel intel/15.0.3.187 +module switch intel intel/16.3.210 module load craype/2.3.0 # Loading nceplibs modules @@ -41,7 +42,9 @@ module load jasper-gnu-sandybridge/1.900.1 module load png-gnu-sandybridge/1.2.49 module load zlib-gnu-sandybridge/1.2.7 module load g2-intel/3.1.0 -module load g2tmpl-intel/1.5.0 +module use -a /usrx/local/nceplibs/NCEPLIBS/modulefiles +module load g2tmpl/1.6.0 +#module load g2tmpl-intel/1.5.0 #module load xmlparse/v2.0.0 module load w3emc-intel/2.2.0 diff --git a/modulefiles/post/lib-v8.0.0-hera b/modulefiles/post/lib-hera similarity index 98% rename from modulefiles/post/lib-v8.0.0-hera rename to modulefiles/post/lib-hera index 715b5c7f9..462f549d0 100755 --- a/modulefiles/post/lib-v8.0.0-hera +++ b/modulefiles/post/lib-hera @@ -39,7 +39,7 @@ module load jasper/1.900.1 module load png/1.2.44 module load z/1.2.11 module load g2/3.1.0 -module load g2tmpl/1.5.0 +module load g2tmpl/1.6.0 #module load xmlparse/v2.0.0 module load w3emc/2.3.1 diff --git a/modulefiles/post/lib-v8.0.0-wcoss b/modulefiles/post/lib-wcoss similarity index 100% rename from modulefiles/post/lib-v8.0.0-wcoss rename to modulefiles/post/lib-wcoss diff --git a/modulefiles/post/lib-v8.0.0-wcoss_dell_p3 b/modulefiles/post/lib-wcoss_dell_p3 similarity index 93% rename from modulefiles/post/lib-v8.0.0-wcoss_dell_p3 rename to modulefiles/post/lib-wcoss_dell_p3 index 97f3506a3..e0e9f12ab 100755 --- a/modulefiles/post/lib-v8.0.0-wcoss_dell_p3 +++ b/modulefiles/post/lib-wcoss_dell_p3 @@ -37,7 +37,8 @@ module load jasper/1.900.1 module load libpng/1.2.59 module load zlib/1.2.11 module load g2/3.1.0 -module load g2tmpl/1.5.0 +module use -a /usrx/local/nceplibs/dev/NCEPLIBS/modulefiles +module load g2tmpl/1.6.0 #module load xmlparse/v2.0.0 module load w3emc/2.3.0 diff --git a/modulefiles/post/v8.0.0-cray-intel b/modulefiles/post/v8.0.0-cray-intel index 88d9c510f..ee663a24f 100644 --- a/modulefiles/post/v8.0.0-cray-intel +++ b/modulefiles/post/v8.0.0-cray-intel @@ -19,7 +19,8 @@ module use -a /usrx/local/prod/modulefiles module use -a /gpfs/hps/nco/ops/nwprod/lib/modulefiles module load PrgEnv-intel module load craype-sandybridge -module switch intel intel/15.0.3.187 +#module switch intel intel/15.0.3.187 +module switch intel intel/16.3.210 module load craype/2.3.0 module load prod_util/1.0.33 module load cray-libsci/13.0.3 @@ -47,7 +48,9 @@ module load cray-netcdf/4.3.2 # module load NetCDF-cray-sandybridge/3.6.3 #### module load cray-netcdf/4.3.2 #module load g2tmpl-intel/1.4.0 -module load g2tmpl-intel/1.5.0 +module use -a /usrx/local/nceplibs/NCEPLIBS/modulefiles +module load g2tmpl/1.6.0 +#module load g2tmpl-intel/1.5.0 module load wrfio-intel/1.1.1 setenv myFC ftn diff --git a/modulefiles/post/v8.0.0-hera b/modulefiles/post/v8.0.0-hera index 3e03cc541..9155735a6 100644 --- a/modulefiles/post/v8.0.0-hera +++ b/modulefiles/post/v8.0.0-hera @@ -15,8 +15,10 @@ module-whatis "post" set ver v8.0.0 # Loading Intel Compiler Suite -module load intel/19.0.4.243 -module load impi/2019.0.4 +#module load intel/19.0.4.243 +#module load impi/2019.0.4 +module load intel/18.0.5.274 +module load impi/2018.0.4 #module use /contrib/modulefiles module use -a /scratch2/NCEPDEV/nwprod/NCEPLIBS/modulefiles @@ -39,7 +41,7 @@ module load w3nco/2.0.7 module load crtm/2.2.5 #module load netcdf/3.6.3 module load netcdf/4.7.0 -module load g2tmpl/1.5.1 +module load g2tmpl/1.6.0 module load wrfio/1.1.1 #setenv WRFPATH /scratch3/NCEPDEV/nwprod/sorc/wrf_shared.v1.1.0 diff --git a/modulefiles/post/v8.0.0-wcoss_dell_p3 b/modulefiles/post/v8.0.0-wcoss_dell_p3 index d84ede9ed..04e1e9c02 100644 --- a/modulefiles/post/v8.0.0-wcoss_dell_p3 +++ b/modulefiles/post/v8.0.0-wcoss_dell_p3 @@ -32,9 +32,10 @@ module load sp/2.0.2 module load w3emc/2.3.0 module load w3nco/2.0.6 module load NetCDF/4.5.0 -module load g2tmpl/1.5.0 module load crtm/2.2.6 module load wrfio/1.1.1 +module use -a /usrx/local/nceplibs/dev/NCEPLIBS/modulefiles +module load g2tmpl/1.6.0 setenv myFC mpiifort setenv OPENMP "-qopenmp" diff --git a/parm/post_avblflds.xml b/parm/post_avblflds.xml index 1f253bf4e..9e4fe8d6f 100755 --- a/parm/post_avblflds.xml +++ b/parm/post_avblflds.xml @@ -6821,7 +6821,6 @@ 958 SBTAGR7_ON_TOP_OF_ATMOS SBTAGR7 - NCEP top_of_atmos 4.0 @@ -6830,7 +6829,6 @@ 959 SBTAGR8_ON_TOP_OF_ATMOS SBTAGR8 - NCEP top_of_atmos 4.0 @@ -6839,7 +6837,6 @@ 960 SBTAGR9_ON_TOP_OF_ATMOS SBTAGR9 - NCEP top_of_atmos 4.0 @@ -6848,7 +6845,6 @@ 961 SBTAGR10_ON_TOP_OF_ATMOS SBTAGR10 - NCEP top_of_atmos 4.0 @@ -6857,7 +6853,6 @@ 962 SBTAGR11_ON_TOP_OF_ATMOS SBTAGR11 - NCEP top_of_atmos 4.0 @@ -6866,7 +6861,6 @@ 963 SBTAGR12_ON_TOP_OF_ATMOS SBTAGR12 - NCEP top_of_atmos 4.0 @@ -6875,7 +6869,6 @@ 964 SBTAGR13_ON_TOP_OF_ATMOS SBTAGR13 - NCEP top_of_atmos 4.0 @@ -6884,7 +6877,6 @@ 965 SBTAGR14_ON_TOP_OF_ATMOS SBTAGR14 - NCEP top_of_atmos 4.0 @@ -6893,7 +6885,6 @@ 966 SBTAGR15_ON_TOP_OF_ATMOS SBTAGR15 - NCEP top_of_atmos 4.0 @@ -6902,7 +6893,6 @@ 967 SBTAGR16_ON_TOP_OF_ATMOS SBTAGR16 - NCEP top_of_atmos 4.0 diff --git a/parm/postxconfig-NT-GFS-GOES.txt b/parm/postxconfig-NT-GFS-GOES.txt index 9e37655af..e23e1f5d9 100644 --- a/parm/postxconfig-NT-GFS-GOES.txt +++ b/parm/postxconfig-NT-GFS-GOES.txt @@ -170,7 +170,7 @@ SBTAGR8_ON_TOP_OF_ATMOS 1 tmpl4_0 SBTAGR8 -NCEP +? ? top_of_atmos 0 @@ -207,7 +207,7 @@ SBTAGR9_ON_TOP_OF_ATMOS 1 tmpl4_0 SBTAGR9 -NCEP +? ? top_of_atmos 0 @@ -244,7 +244,7 @@ SBTAGR10_ON_TOP_OF_ATMOS 1 tmpl4_0 SBTAGR10 -NCEP +? ? top_of_atmos 0 @@ -281,7 +281,7 @@ SBTAGR13_ON_TOP_OF_ATMOS 1 tmpl4_0 SBTAGR13 -NCEP +? ? top_of_atmos 0 diff --git a/sorc/ncep_post.fd/build_ncepost_lib.sh b/sorc/ncep_post.fd/build_ncepost_lib.sh index a5f79f8ae..1364a21c9 100755 --- a/sorc/ncep_post.fd/build_ncepost_lib.sh +++ b/sorc/ncep_post.fd/build_ncepost_lib.sh @@ -22,7 +22,7 @@ export version=${1:-"v8.0.0"} moduledir=`dirname $(readlink -f ../../modulefiles/post)` module use -a ${moduledir} -module load post/lib-${version}-${machine} +module load post/lib-${machine} #module load nceppost_modulefile # @@ -37,7 +37,7 @@ cd ${BASE} rm *.o *.mod incmod #mkdir -m 775 -p $BASE/../../lib/include/ncep_post_${version}_4 make -f makefile_lib clean -mkdir -m 775 -p include/ncep_post_${version}_4 +mkdir -m 775 -p include/ncep_post_4 make -f makefile_lib exit 0 diff --git a/sorc/ncep_post.fd/makefile_lib b/sorc/ncep_post.fd/makefile_lib index 2af4ff0b6..185b53366 100644 --- a/sorc/ncep_post.fd/makefile_lib +++ b/sorc/ncep_post.fd/makefile_lib @@ -44,8 +44,8 @@ #POSTLIBPATH=../.. #TARGET = ${POSTLIBPATH}/lib/libncep_post_${version}_4.a #INCMOD= ${POSTLIBPATH}/lib/include/ncep_post_${version}_4 - TARGET = libncep_post_${version}_4.a - INCMOD = include/ncep_post_${version}_4 + TARGET = libncep_post_4.a + INCMOD = include/ncep_post_4 AR = ar ARFLAGS = -rv @@ -108,7 +108,7 @@ OBJS= VRBLS2D_mod.o VRBLS3D_mod.o VRBLS4D_mod.o MASKS_mod.o PMICRPH.o SOIL_mod.o CLDRAD.o CLMAX.o COLLECT.o COLLECT_LOC.o DEWPOINT.o \ FDLVL.o FGAMMA.o FIXED.o FRZLVL.o FRZLVL2.o \ GET_BITS.o GRIBIT.o LFMFLD.o \ - MAPSSLP.o MISCLN.o MIXLEN.o MDL2P.o MDLFLD.o \ + MAPSSLP.o MISCLN.o MDL2STD_P.o MIXLEN.o MDL2P.o MDLFLD.o \ NGMFLD.o NGMSLP.o OTLFT.o OTLIFT.o SLP_new.o SLP_NMM.o EXCH.o \ PARA_RANGE.o PROCESS.o EXCH2.o \ READCNTRL.o READ_xml.o SET_OUTFLDS.o SCLFLD.o \ @@ -122,7 +122,8 @@ OBJS= VRBLS2D_mod.o VRBLS3D_mod.o VRBLS4D_mod.o MASKS_mod.o PMICRPH.o SOIL_mod.o ICAOHEIGHT.o \ GEO_ZENITH_ANGLE.o GFIP3.o GRIDAVG.o CALUPDHEL.o \ AllGETHERV_GSD.o MSFPS.o SELECT_CHANNELS.o ALLOCATE_ALL.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 CALVESSEL.o \ + CALHEL2.o CALCAPE2.o .SUFFIXES: .F .f .o .f90 .c From 5f081ef85e990c7569d446b37f251d52a4bf3292 Mon Sep 17 00:00:00 2001 From: WenMeng-NOAA <48260754+WenMeng-NOAA@users.noreply.github.com> Date: Thu, 19 Dec 2019 00:44:58 -0500 Subject: [PATCH 17/21] Post print (#37) * Remove unnessrary print outs in UPP code. * Reduce more print outs. --- sorc/ncep_post.fd/CALRAD_WCLOUD_newcrtm.f | 20 +++++++++--------- sorc/ncep_post.fd/CALWXT_BOURG.f | 8 ++++---- sorc/ncep_post.fd/INITPOST_GFS_NETCDF.f | 2 +- sorc/ncep_post.fd/INITPOST_NETCDF.f | 2 +- sorc/ncep_post.fd/MDLFLD.f | 4 ++-- sorc/ncep_post.fd/SURFCE.f | 4 ++-- sorc/ncep_post.fd/grib2_module.f | 25 ++++++++++++++--------- 7 files changed, 35 insertions(+), 30 deletions(-) diff --git a/sorc/ncep_post.fd/CALRAD_WCLOUD_newcrtm.f b/sorc/ncep_post.fd/CALRAD_WCLOUD_newcrtm.f index 8623d144b..0e24cdb05 100644 --- a/sorc/ncep_post.fd/CALRAD_WCLOUD_newcrtm.f +++ b/sorc/ncep_post.fd/CALRAD_WCLOUD_newcrtm.f @@ -358,19 +358,19 @@ SUBROUTINE CALRAD_WCLOUD czen(i,j)=cos(sun_zenith_rad) end do end do - if(jj>=jsta .and. jj<=jend) & + if(jj>=jsta .and. jj<=jend.and.debugprint) & print*,'sample GFS zenith angle=',acos(czen(ii,jj))*rtd ! end if ! Initialize CRTM. Load satellite sensor array. ! The optional arguments Process_ID and Output_Process_ID limit ! generation of runtime informative output to mpi task ! Output_Process_ID (which here is set to be task 0) - print*,'success in CALRAD= ',success + if(me==0)print*,'success in CALRAD= ',success allocate( channelinfo(n_sensors)) error_status = crtm_init(sensorlist_local,channelinfo, & Process_ID=0,Output_Process_ID=0 ) - print*, 'channelinfo after init= ',channelinfo(1)%sensor_id, & + if(me==0)print*, 'channelinfo after init= ',channelinfo(1)%sensor_id, & channelinfo(2)%sensor_id if (error_status /= 0_i_kind) & write(6,*)'ERROR*** crtm_init error_status=',error_status @@ -477,7 +477,7 @@ SUBROUTINE CALRAD_WCLOUD ! Loop over data types to process sensordo: do isat=1,n_sensors - print*,'n_sensor,obstype,isis',isat,obslist(isat),sensorlist(isat) + if(me==0)print*,'n_sensor,obstype,isis',isat,obslist(isat),sensorlist(isat) obstype=obslist(isat) isis=trim(sensorlist(isat)) @@ -510,7 +510,7 @@ SUBROUTINE CALRAD_WCLOUD (isis=='abi_g17' .and. post_abig17) .OR. & (isis=='abi_gr' .and. post_abigr) .OR. & (isis=='seviri_m10' .and. iget(876)>0) )then - print*,'obstype, isis= ',obstype,isis + if(me==0)print*,'obstype, isis= ',obstype,isis ! isis='amsua_n15' ! Initialize logical flags for satellite platform @@ -680,7 +680,7 @@ SUBROUTINE CALRAD_WCLOUD .and. geometryinfo(1)%sensor_zenith_angle >= 0.0_r_kind)THEN geometryinfo(1)%source_zenith_angle = acos(czen(i,j))*rtd ! solar zenith angle geometryinfo(1)%sensor_scan_angle = 0. ! scan angle, assuming nadir - if(i==ii.and.j==jj)print*,'sample geometry ', & + if(i==ii.and.j==jj.and.debugprint)print*,'sample geometry ', & geometryinfo(1)%sensor_zenith_angle & ,geometryinfo(1)%source_zenith_angle & ,czen(i,j)*rtd @@ -705,7 +705,7 @@ SUBROUTINE CALRAD_WCLOUD else snoeqv=0. end if - if(i==ii.and.j==jj)print*,'sno,itype,ivgtyp B cing snfrc = ', & + if(i==ii.and.j==jj.and.debugprint)print*,'sno,itype,ivgtyp B cing snfrc = ', & snoeqv,itype,IVGTYP(I,J) if(sm(i,j) > 0.1)then sfcpct(4)=0. @@ -869,7 +869,7 @@ SUBROUTINE CALRAD_WCLOUD if(surface(1)%snow_depth<0. .or. surface(1)%snow_depth>10000.) & print*,'bad snow_depth' end if - if(i==ii.and.j==jj)print*,'sample surface in CALRAD=', & + if(i==ii.and.j==jj.and.debugprint)print*,'sample surface in CALRAD=', & i,j,surface(1)%wind_speed,surface(1)%water_coverage, & surface(1)%land_coverage,surface(1)%ice_coverage, & surface(1)%snow_coverage,surface(1)%land_temperature, & @@ -882,7 +882,7 @@ SUBROUTINE CALRAD_WCLOUD ! Load atmosphere profiles into RTM model layers ! CRTM counts from top down just as post does - if(i==ii.and.j==jj)print*,'TOA= ',atmosphere(1)%level_pressure(0) + if(i==ii.and.j==jj.and.debugprint)print*,'TOA= ',atmosphere(1)%level_pressure(0) do k = 1,lm atmosphere(1)%level_pressure(k) = pint(i,j,k+1)/r100 atmosphere(1)%pressure(k) = pmid(i,j,k)/r100 @@ -910,7 +910,7 @@ SUBROUTINE CALRAD_WCLOUD ! & atmosphere(1)%absorber(k,1)>1.) & ! & print*,'bad atmosphere o3' end if - if(i==ii.and.j==jj)print*,'sample atmosphere in CALRAD=', & + if(i==ii.and.j==jj.and.debugprint)print*,'sample atmosphere in CALRAD=', & i,j,k,atmosphere(1)%level_pressure(k),atmosphere(1)%pressure(k), & atmosphere(1)%temperature(k),atmosphere(1)%absorber(k,1), & atmosphere(1)%absorber(k,2) diff --git a/sorc/ncep_post.fd/CALWXT_BOURG.f b/sorc/ncep_post.fd/CALWXT_BOURG.f index 8406f3f08..63f97b1b7 100644 --- a/sorc/ncep_post.fd/CALWXT_BOURG.f +++ b/sorc/ncep_post.fd/CALWXT_BOURG.f @@ -88,8 +88,8 @@ subroutine calwxt_bourg_post(im,jm,jsta_2l,jend_2u,jsta,jend,lm,lp1, & ! initialize weather type array to zero (ie, off). ! we do this since we want ptype to represent the ! instantaneous weather type on return. - print *,'in calwxtbg, jsta,jend=',jsta,jend,' im=',im - print *,'in calwxtbg,me=',me,'iseed=',iseed +! print *,'in calwxtbg, jsta,jend=',jsta,jend,' im=',im +! print *,'in calwxtbg,me=',me,'iseed=',iseed ! !$omp parallel do do j=jsta,jend @@ -106,10 +106,10 @@ subroutine calwxt_bourg_post(im,jm,jsta_2l,jend_2u,jsta,jend,lm,lp1, & !!$omp parallel do & ! & private(a,lmhk,tlmhk,iwrml,psfck,lhiwrm,pintk1,pintk2,area1, & ! & areape,dzkl,surfw,r1,r2) - print *,'incalwxtbg, rn',maxval(rn),minval(rn) +! print *,'incalwxtbg, rn',maxval(rn),minval(rn) do j=jsta,jend - if(me==1)print *,'incalwxtbg, j=',j +! if(me==1)print *,'incalwxtbg, j=',j do i=1,im lmhk = min(nint(lmh(i,j)),lm) psfck = pint(i,j,lmhk+1) diff --git a/sorc/ncep_post.fd/INITPOST_GFS_NETCDF.f b/sorc/ncep_post.fd/INITPOST_GFS_NETCDF.f index 17dd1651c..209ad87d5 100644 --- a/sorc/ncep_post.fd/INITPOST_GFS_NETCDF.f +++ b/sorc/ncep_post.fd/INITPOST_GFS_NETCDF.f @@ -121,7 +121,7 @@ SUBROUTINE INITPOST_GFS_NETCDF(ncid3d) ! 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 = .true., zerout = .false. - logical, parameter :: debugprint = .true., zerout = .false. + logical, parameter :: debugprint = .false., zerout = .false. logical :: convert_rad_to_deg=.false. CHARACTER*32 varcharval ! CHARACTER*40 CONTRL,FILALL,FILMST,FILTMP,FILTKE,FILUNV,FILCLD,FILRAD,FILSFC diff --git a/sorc/ncep_post.fd/INITPOST_NETCDF.f b/sorc/ncep_post.fd/INITPOST_NETCDF.f index 1a96c5af1..7564dca82 100644 --- a/sorc/ncep_post.fd/INITPOST_NETCDF.f +++ b/sorc/ncep_post.fd/INITPOST_NETCDF.f @@ -120,7 +120,7 @@ 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 = .true., zerout = .false. + logical, parameter :: debugprint = .false., zerout = .false. ! logical, parameter :: debugprint = .true., zerout = .false. logical :: convert_rad_to_deg=.false. CHARACTER*32 varcharval diff --git a/sorc/ncep_post.fd/MDLFLD.f b/sorc/ncep_post.fd/MDLFLD.f index d730cdd91..fb8ff73b8 100644 --- a/sorc/ncep_post.fd/MDLFLD.f +++ b/sorc/ncep_post.fd/MDLFLD.f @@ -547,7 +547,7 @@ SUBROUTINE MDLFLD ENDDO ENDDO ELSE ! compute radar refl for other than NAM/Ferrier or GFS/Zhao microphysics - print*,'calculating radar ref for non-Ferrier/non-Zhao schemes' + if(me==0)print*,'calculating radar ref for non-Ferrier/non-Zhao schemes' ! Determine IICE FLAG IF(IMP_PHYSICS == 1 .OR. IMP_PHYSICS == 3)THEN IICE = 0 @@ -3854,7 +3854,7 @@ SUBROUTINE MDLFLD if(grib == 'grib2')then dxm=dxm/1000.0 endif - print *,'dxm=',dxm + if(me==0)print *,'dxm=',dxm NSMOOTH = nint(5.*(13500./dxm)) do j = jsta_2l, jend_2u do i = 1, im diff --git a/sorc/ncep_post.fd/SURFCE.f b/sorc/ncep_post.fd/SURFCE.f index d37fe024d..e8bd2a49f 100644 --- a/sorc/ncep_post.fd/SURFCE.f +++ b/sorc/ncep_post.fd/SURFCE.f @@ -3164,7 +3164,7 @@ SUBROUTINE SURFCE fld_info(cfld)%ifld=IAVBLFLD(IGET(087)) fld_info(cfld)%ntrange=1 fld_info(cfld)%tinvstat=IFHR-ID(18) - print*,'id(18),tinvstat in apcp= ',ID(18),fld_info(cfld)%tinvstat +! print*,'id(18),tinvstat in apcp= ',ID(18),fld_info(cfld)%tinvstat !$omp parallel do private(i,j,jj) do j=1,jend-jsta+1 jj = jsta+j-1 @@ -3235,7 +3235,7 @@ SUBROUTINE SURFCE 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 +! 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 diff --git a/sorc/ncep_post.fd/grib2_module.f b/sorc/ncep_post.fd/grib2_module.f index 7d858ea13..134058ab0 100644 --- a/sorc/ncep_post.fd/grib2_module.f +++ b/sorc/ncep_post.fd/grib2_module.f @@ -220,6 +220,7 @@ subroutine gribit2(post_fname) integer,allocatable :: grbmsglen(:) real,allocatable :: datafld(:,:) real,allocatable :: datafldtmp(:) + logical, parameter :: debugprint = .false. ! character(1) cgrib(max_bytes) ! @@ -398,10 +399,12 @@ subroutine gribit2(post_fname) itblinfo, & idisc, icatg, iparm, ierr) if(ierr==0) then - write(6,'(3(A,I4),A,A)') ' discipline ',idisc, & - ' category ',icatg, & - ' parameter ',iparm, & - ' for var ',trim(pset%param(nprm)%pname) + if(debugprint) then + write(6,'(3(A,I4),A,A)') ' discipline ',idisc, & + ' category ',icatg, & + ' parameter ',iparm, & + ' for var ',trim(pset%param(nprm)%pname) + endif ! !--- generate grib2 message --- ! @@ -410,8 +413,10 @@ subroutine gribit2(post_fname) cstart=cstart+clength ! else - print *,'WRONG, could not find ',trim(pset%param(nprm)%pname), & - " in WMO and NCEP table!" + if(debugprint) then + print *,'WRONG, could not find ',trim(pset%param(nprm)%pname), & + " in WMO and NCEP table!" + endif !!! call mpi_abort() endif ! @@ -900,12 +905,12 @@ 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' +! 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' +! 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.& @@ -916,7 +921,7 @@ subroutine gengrb2msg(idisc,icatg, iparm,nprm,nlvl,fldlvl1,fldlvl2,ntrange,tinvs 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) +! print*,' changing to simple packing for field: ',trim(pset%param(nprm)%shortname) endif endif @@ -1220,7 +1225,7 @@ subroutine getgds(ldfgrd,len3,ifield3len,igds,ifield3) integer(4),intent(out) :: ifield3len integer(4),intent(inout) :: ifield3(len3),igds(5) - print *,'in getgds, im=',im,'jm=',jm,'latstart=',latstart,'lonsstart=',lonstart,'maptyp=',maptype +! print *,'in getgds, im=',im,'jm=',jm,'latstart=',latstart,'lonsstart=',lonstart,'maptyp=',maptype ! !** set up igds igds(1) = 0 !Source of grid definition (see Code Table 3.0) From f6a8bed886fdbd3958eda03a947dba01699ade35 Mon Sep 17 00:00:00 2001 From: Tracy Date: Tue, 14 Jan 2020 11:36:43 -0700 Subject: [PATCH 18/21] Add mods from develop --- sorc/ncep_post.fd/CALRAD_WCLOUD_newcrtm.f | 27 +++++-------- sorc/ncep_post.fd/CLDRAD.f | 49 ----------------------- sorc/ncep_post.fd/RQSTFLD.F | 49 +---------------------- 3 files changed, 11 insertions(+), 114 deletions(-) diff --git a/sorc/ncep_post.fd/CALRAD_WCLOUD_newcrtm.f b/sorc/ncep_post.fd/CALRAD_WCLOUD_newcrtm.f index 3f69a6ce5..8623d144b 100644 --- a/sorc/ncep_post.fd/CALRAD_WCLOUD_newcrtm.f +++ b/sorc/ncep_post.fd/CALRAD_WCLOUD_newcrtm.f @@ -327,11 +327,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 & -<<<<<<< HEAD - .or. post_abig16 .or. post_abig17 ) then -======= .or. post_abig16 .or. post_abig17 .or. post_abigr ) then ->>>>>>> upstream/develop ! specify numbers of cloud species ! Thompson==8, Ferrier==5,95, WSM6==6, Lin==2 @@ -362,19 +358,19 @@ SUBROUTINE CALRAD_WCLOUD czen(i,j)=cos(sun_zenith_rad) end do end do - if(jj>=jsta .and. jj<=jend.and.debugprint) & + if(jj>=jsta .and. jj<=jend) & print*,'sample GFS zenith angle=',acos(czen(ii,jj))*rtd ! end if ! Initialize CRTM. Load satellite sensor array. ! The optional arguments Process_ID and Output_Process_ID limit ! generation of runtime informative output to mpi task ! Output_Process_ID (which here is set to be task 0) - if(me==0)print*,'success in CALRAD= ',success + print*,'success in CALRAD= ',success allocate( channelinfo(n_sensors)) error_status = crtm_init(sensorlist_local,channelinfo, & Process_ID=0,Output_Process_ID=0 ) - if(me==0)print*, 'channelinfo after init= ',channelinfo(1)%sensor_id, & + print*, 'channelinfo after init= ',channelinfo(1)%sensor_id, & channelinfo(2)%sensor_id if (error_status /= 0_i_kind) & write(6,*)'ERROR*** crtm_init error_status=',error_status @@ -434,10 +430,7 @@ SUBROUTINE CALRAD_WCLOUD endif endif -<<<<<<< HEAD -======= ->>>>>>> upstream/develop ! 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)) @@ -484,7 +477,7 @@ SUBROUTINE CALRAD_WCLOUD ! Loop over data types to process sensordo: do isat=1,n_sensors - if(me==0)print*,'n_sensor,obstype,isis',isat,obslist(isat),sensorlist(isat) + print*,'n_sensor,obstype,isis',isat,obslist(isat),sensorlist(isat) obstype=obslist(isat) isis=trim(sensorlist(isat)) @@ -517,7 +510,7 @@ SUBROUTINE CALRAD_WCLOUD (isis=='abi_g17' .and. post_abig17) .OR. & (isis=='abi_gr' .and. post_abigr) .OR. & (isis=='seviri_m10' .and. iget(876)>0) )then - if(me==0)print*,'obstype, isis= ',obstype,isis + print*,'obstype, isis= ',obstype,isis ! isis='amsua_n15' ! Initialize logical flags for satellite platform @@ -687,7 +680,7 @@ SUBROUTINE CALRAD_WCLOUD .and. geometryinfo(1)%sensor_zenith_angle >= 0.0_r_kind)THEN geometryinfo(1)%source_zenith_angle = acos(czen(i,j))*rtd ! solar zenith angle geometryinfo(1)%sensor_scan_angle = 0. ! scan angle, assuming nadir - if(i==ii.and.j==jj.and.debugprint)print*,'sample geometry ', & + if(i==ii.and.j==jj)print*,'sample geometry ', & geometryinfo(1)%sensor_zenith_angle & ,geometryinfo(1)%source_zenith_angle & ,czen(i,j)*rtd @@ -712,7 +705,7 @@ SUBROUTINE CALRAD_WCLOUD else snoeqv=0. end if - if(i==ii.and.j==jj.and.debugprint)print*,'sno,itype,ivgtyp B cing snfrc = ', & + if(i==ii.and.j==jj)print*,'sno,itype,ivgtyp B cing snfrc = ', & snoeqv,itype,IVGTYP(I,J) if(sm(i,j) > 0.1)then sfcpct(4)=0. @@ -876,7 +869,7 @@ SUBROUTINE CALRAD_WCLOUD if(surface(1)%snow_depth<0. .or. surface(1)%snow_depth>10000.) & print*,'bad snow_depth' end if - if(i==ii.and.j==jj.and.debugprint)print*,'sample surface in CALRAD=', & + if(i==ii.and.j==jj)print*,'sample surface in CALRAD=', & i,j,surface(1)%wind_speed,surface(1)%water_coverage, & surface(1)%land_coverage,surface(1)%ice_coverage, & surface(1)%snow_coverage,surface(1)%land_temperature, & @@ -889,7 +882,7 @@ SUBROUTINE CALRAD_WCLOUD ! Load atmosphere profiles into RTM model layers ! CRTM counts from top down just as post does - if(i==ii.and.j==jj.and.debugprint)print*,'TOA= ',atmosphere(1)%level_pressure(0) + if(i==ii.and.j==jj)print*,'TOA= ',atmosphere(1)%level_pressure(0) do k = 1,lm atmosphere(1)%level_pressure(k) = pint(i,j,k+1)/r100 atmosphere(1)%pressure(k) = pmid(i,j,k)/r100 @@ -917,7 +910,7 @@ SUBROUTINE CALRAD_WCLOUD ! & atmosphere(1)%absorber(k,1)>1.) & ! & print*,'bad atmosphere o3' end if - if(i==ii.and.j==jj.and.debugprint)print*,'sample atmosphere in CALRAD=', & + if(i==ii.and.j==jj)print*,'sample atmosphere in CALRAD=', & i,j,k,atmosphere(1)%level_pressure(k),atmosphere(1)%pressure(k), & atmosphere(1)%temperature(k),atmosphere(1)%absorber(k,1), & atmosphere(1)%absorber(k,2) diff --git a/sorc/ncep_post.fd/CLDRAD.f b/sorc/ncep_post.fd/CLDRAD.f index d406c78c4..51ab9f111 100644 --- a/sorc/ncep_post.fd/CLDRAD.f +++ b/sorc/ncep_post.fd/CLDRAD.f @@ -5137,54 +5137,6 @@ SUBROUTINE CLDRAD ENDIF ! END OF LAEROPT IF-BLOCK -<<<<<<< HEAD -!#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 -======= !! Multiply by 1.E-6 to revert these fields back IF (IGET(659).GT.0) THEN GRID1=SPVAL @@ -5229,7 +5181,6 @@ SUBROUTINE CLDRAD datapd(1:im,1:jend-jsta+1,cfld)=GRID1(1:im,jsta:jend) endif ENDIF ->>>>>>> upstream/develop !! ADD DUST DRY DEPOSITION FLUXES (kg/m2/sec) ! ! IF (IGET(661).GT.0) THEN diff --git a/sorc/ncep_post.fd/RQSTFLD.F b/sorc/ncep_post.fd/RQSTFLD.F index a2c0751a5..544bbfbfb 100644 --- a/sorc/ncep_post.fd/RQSTFLD.F +++ b/sorc/ncep_post.fd/RQSTFLD.F @@ -25,16 +25,12 @@ module RQSTFLD_mod implicit none ! ! increase MXFLD each time you add a new field -<<<<<<< HEAD:sorc/ncep_post.fd/RQSTFLD.f - INTEGER, PARAMETER :: MXFLD=950,MXLVL=70 -======= INTEGER, PARAMETER :: MXFLD=975 #ifdef COMMCODE - INTEGER, PARAMETER :: MXLVL=70 + INTEGER, PARAMETER :: MXLVL=500 #else INTEGER, PARAMETER :: MXLVL=500 #endif ->>>>>>> upstream/develop:sorc/ncep_post.fd/RQSTFLD.F CHARACTER*20 AVBL(MXFLD),FIELD(MXFLD) CHARACTER*50 AVBLGRB2(MXFLD) CHARACTER*6 DATSET @@ -2095,48 +2091,6 @@ 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 '/ -<<<<<<< HEAD:sorc/ncep_post.fd/RQSTFLD.f -!#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 - - -======= DATA IFILV(687),AVBL(687),IQ(687),IS(687),AVBLGRB2(687) & & /1,'BC SFC MASS CON ',162,001, & 'black carbon sfc mass con '/ @@ -2173,7 +2127,6 @@ module RQSTFLD_mod 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 '/ ->>>>>>> upstream/develop:sorc/ncep_post.fd/RQSTFLD.F ! Reserving Index 601-700 for GOCART ! From 1064c8568e1f32c5da7e6a9278c33c4d8f4f34e8 Mon Sep 17 00:00:00 2001 From: Tracy Date: Fri, 24 Jan 2020 13:49:14 -0700 Subject: [PATCH 19/21] fix for filling a handful of 2d variables currently causing a divide-by-zero error when run in debug mode. Currently filled with 'k' which fills with zeros Needs to fill with 'll' which is what's being filled within the larger loop and different index value than 'k' --- sorc/ncep_post.fd/INITPOST_GFS_NEMS_MPIIO.f | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/sorc/ncep_post.fd/INITPOST_GFS_NEMS_MPIIO.f b/sorc/ncep_post.fd/INITPOST_GFS_NEMS_MPIIO.f index 104eee42b..7f7153cca 100644 --- a/sorc/ncep_post.fd/INITPOST_GFS_NEMS_MPIIO.f +++ b/sorc/ncep_post.fd/INITPOST_GFS_NEMS_MPIIO.f @@ -987,12 +987,12 @@ SUBROUTINE INITPOST_GFS_NEMS_MPIIO(iostatusAER) do j=jsta,jend do k=1,lm do i=1,im - p2d(i,k) = pmid(i,j,k)*0.01 - t2d(i,k) = t(i,j,k) - q2d(i,k) = q(i,j,k) - cw2d(i,k) = cwm(i,j,k) - es = min(fpvsnew(t(i,j,k)),pmid(i,j,k)) - qs2d(i,k) = eps*es/(pmid(i,j,k)+epsm1*es)!saturation q for GFS + p2d(i,k) = pmid(i,j,ll)*0.01 + t2d(i,k) = t(i,j,ll) + q2d(i,k) = q(i,j,ll) + cw2d(i,k) = cwm(i,j,ll) + es = min(fpvsnew(t(i,j,ll)),pmid(i,j,ll)) + qs2d(i,k) = eps*es/(pmid(i,j,ll)+epsm1*es)!saturation q for GFS enddo enddo call progcld1 & From 912393b16451c521977cecf646fcbd87abbf5783 Mon Sep 17 00:00:00 2001 From: Tracy Date: Fri, 24 Jan 2020 13:53:57 -0700 Subject: [PATCH 20/21] Fix ID index in WRF-CHEM SMOKE block, which currently causes failed build in debug mode --- sorc/ncep_post.fd/MDL2P.f | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/sorc/ncep_post.fd/MDL2P.f b/sorc/ncep_post.fd/MDL2P.f index bd948b895..d2f5c13c1 100644 --- a/sorc/ncep_post.fd/MDL2P.f +++ b/sorc/ncep_post.fd/MDL2P.f @@ -2090,9 +2090,9 @@ SUBROUTINE MDL2P(iostatusD3D) ENDDO ENDDO if(grib == 'grib1')then - ID(1:46)=0 + ID(1:25)=0 ID(02)=141 ! Parameter Table 141 - ID(36)=2 +! ID(36)=2 CALL GRIBIT(IGET(738),LP,GRID1,IM,JM) elseif(grib == 'grib2') then cfld = cfld + 1 From b43a4d24d5c42f084d65c031d0cf94b8c2ffbbcd Mon Sep 17 00:00:00 2001 From: Tracy Date: Fri, 24 Jan 2020 13:54:27 -0700 Subject: [PATCH 21/21] Modification to makefile for compiling new routines added from develop --- sorc/ncep_post.fd/makefile_dtc | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/sorc/ncep_post.fd/makefile_dtc b/sorc/ncep_post.fd/makefile_dtc index d1a6806ed..92bcd08cd 100644 --- a/sorc/ncep_post.fd/makefile_dtc +++ b/sorc/ncep_post.fd/makefile_dtc @@ -66,7 +66,7 @@ OBJS_F = VRBLS2D_mod.o VRBLS3D_mod.o VRBLS4D_mod.o MASKS_mod.o PMICRPH.o SOIL_m CALWXT_RAMER.o CALWXT_BOURG.o CALWXT_REVISED.o CALRH_PW.o CALWXT_EXPLICIT.o \ CALWXT_DOMINANT.o CLDRAD.o \ CLMAX.o COLLECT.o COLLECT_LOC.o DEWPOINT.o FDLVL.o FGAMMA.o FIXED.o FRZLVL.o FRZLVL2.o \ - GET_BITS.o GRIBIT.o INITPOST.o LFMFLD.o MAPSSLP.o MISCLN.o MIXLEN.o MDL2P.o \ + GET_BITS.o GRIBIT.o INITPOST.o LFMFLD.o MAPSSLP.o MISCLN.o MDL2STD_P.o MIXLEN.o MDL2P.o \ MDLFLD.o MPI_FIRST.o MPI_LAST.o NGMFLD.o NGMSLP.o OTLFT.o OTLIFT.o SLP_new.o SLP_NMM.o \ EXCH.o PARA_RANGE.o PROCESS.o INITPOST_NMM.o EXCH2.o READCNTRL.o READ_xml.o \ SET_OUTFLDS.o SCLFLD.o SERVER.o \ @@ -78,8 +78,9 @@ OBJS_F = VRBLS2D_mod.o VRBLS3D_mod.o VRBLS4D_mod.o MASKS_mod.o PMICRPH.o SOIL_m GETNEMSNDSCATTER.o ICAOHEIGHT.o INITPOST_GFS_NEMS.o \ 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 + INITPOST_NETCDF.o INITPOST_GFS_NETCDF.o \ + gtg_ctlblk.o gtg_indices.o gtg_filter.o gtg_compute.o gtg_config.o map_routines.o gtg_algo.o CALVESSEL.o \ + CALHEL2.o CALCAPE2.o OBJS = $(OBJS_F) $(OBJXML) $(OBJS_FT)