diff --git a/VERSION b/VERSION index 5219a0df7..82f3d338c 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -10.0.8 +10.0.9 diff --git a/parm/fv3lam.xml b/parm/fv3lam.xml index 4537c8fb2..2e78a58a5 100755 --- a/parm/fv3lam.xml +++ b/parm/fv3lam.xml @@ -1598,14 +1598,6 @@ 5.0 - - TMP_ON_SIGMA_LVL_HPC - TMP - 4 - 9000. 8500. 8000. 7500. 7000. - -4.0 - - PBLREG_ON_SURFACE PBLREG diff --git a/parm/postxconfig-NT-fv3lam.txt b/parm/postxconfig-NT-fv3lam.txt index dc4a08b94..0e0401d86 100644 --- a/parm/postxconfig-NT-fv3lam.txt +++ b/parm/postxconfig-NT-fv3lam.txt @@ -1,6 +1,6 @@ 2 219 -259 +258 PRSLEV 32769 ncep_nco @@ -8416,43 +8416,6 @@ entire_atmos_single_lyr ? ? ? -296 -TMP_ON_SIGMA_LVL_HPC -? -1 -tmpl4_0 -TMP -? -? -sigma_lvl -1 -4 -5 -9000. 8500. 8000. 7500. 7000. -? -0 -? -0 -? -? -? -0 -0.0 -0 -0.0 -? -0 -0.0 -0 -0.0 -1 --4.0 -0 -0 -0 -? -? -? 344 PBLREG_ON_SURFACE ? diff --git a/sorc/ncep_post.fd/ALLOCATE_ALL.f b/sorc/ncep_post.fd/ALLOCATE_ALL.f index f615db747..593851af4 100644 --- a/sorc/ncep_post.fd/ALLOCATE_ALL.f +++ b/sorc/ncep_post.fd/ALLOCATE_ALL.f @@ -46,7 +46,7 @@ SUBROUTINE ALLOCATE_ALL() integer ierr,jsx,jex integer i,j,l,k ! Allocate arrays - allocate(u(im,jsta_2l:jend_2u,lm)) + allocate(u(im+1,jsta_2l:jend_2u,lm)) allocate(v(im,jsta_2l:jvend_2u,lm)) allocate(t(im,jsta_2l:jend_2u,lm)) ! CHUANG ADD POTENTIAL TEMP BECAUSE WRF OUTPUT THETA @@ -79,9 +79,23 @@ SUBROUTINE ALLOCATE_ALL() !$omp parallel do private(i,j,l) do l=1,lm do j=jsta_2l,jend_2u - do i=1,im + do i=1,im+1 u(i,j,l)=0. + enddo + enddo + enddo +!$omp parallel do private(i,j,l) + do l=1,lm + do j=jsta_2l,jvend_2u + do i=1,im v(i,j,l)=0. + enddo + enddo + enddo +!$omp parallel do private(i,j,l) + do l=1,lm + do j=jsta_2l,jend_2u + do i=1,im t(i,j,l)=spval q(i,j,l)=spval uh(i,j,l)=spval @@ -810,14 +824,14 @@ SUBROUTINE ALLOCATE_ALL() cldfra(i,j)=spval cprate(i,j)=spval cnvcfr(i,j)=spval - ivgtyp(i,j)=spval - isltyp(i,j)=spval + ivgtyp(i,j)=0 + isltyp(i,j)=0 hbotd(i,j)=spval htopd(i,j)=spval hbots(i,j)=spval htops(i,j)=spval cldefi(i,j)=spval - islope(i,j)=spval + islope(i,j)=0 si(i,j)=spval lspa(i,j)=spval rswinc(i,j)=spval diff --git a/sorc/ncep_post.fd/BNDLYR.f b/sorc/ncep_post.fd/BNDLYR.f index f78c2f08b..0ec21e25d 100644 --- a/sorc/ncep_post.fd/BNDLYR.f +++ b/sorc/ncep_post.fd/BNDLYR.f @@ -31,7 +31,7 @@ !! 00-01-04 JIM TUCCILLO - MPI VERSION !! 02-01-15 MIKE BALDWIN - WRF VERSION !! 20-11-10 JESSE MENG - USE UPP_PHYSICS MODULE -!! 21-04-01 JESSE MENG - COMPUTATION ON DEFINED POINTS ONLY +!! 21-08-20 Wen Meng - Retrict computation fro undefined points. !! !! USAGE: CALL BNDLYR(PBND,TBND,QBND,RHBND,UBND,VBND, !! WBND,OMGBND,PWTBND,QCNVBND) @@ -208,6 +208,18 @@ SUBROUTINE BNDLYR(PBND,TBND,QBND,RHBND,UBND,VBND, & END IF QSBND(I,J,LBND) = QSBND(I,J,LBND) + QSAT*DP ENDIF + ELSE !undeined grids + PBND(I,J,LBND)=SPVAL + TBND(I,J,LBND)=SPVAL + UBND(I,J,LBND)=SPVAL + VBND(I,J,LBND)=SPVAL + WBND(I,J,LBND)=SPVAL + OMGBND(I,J,LBND)=SPVAL + QCNVBND(I,J,LBND)=SPVAL + PWTBND(I,J,LBND)=SPVAL + QBND(I,J,LBND)=SPVAL + QSBND(I,J,LBND)=SPVAL + RHBND(I,J,LBND)=SPVAL ENDIF ENDDO ENDDO @@ -273,9 +285,7 @@ SUBROUTINE BNDLYR(PBND,TBND,QBND,RHBND,UBND,VBND, & DO LBND=1,NBND DO J=JSTA,JEND DO I=1,IM - IF(PSUM(I,J,LBND)/=0.)THEN - IF(T(I,J,LBND)1.0) THEN RHBND(I,J,LBND) = 1.0 @@ -387,10 +375,7 @@ SUBROUTINE BNDLYR(PBND,TBND,QBND,RHBND,UBND,VBND, & RHBND(I,J,LBND) = 0.01 QBND(I,J,LBND) = RHBND(I,J,LBND)*QSBND(I,J,LBND) ENDIF - ELSE - RHBND(I,J,LBND) = spval - QBND(I,J,LBND) = spval - ENDIF + ENDIF ENDDO ENDDO ! diff --git a/sorc/ncep_post.fd/CALDWP.f b/sorc/ncep_post.fd/CALDWP.f index 9d7d62068..aa2405e05 100644 --- a/sorc/ncep_post.fd/CALDWP.f +++ b/sorc/ncep_post.fd/CALDWP.f @@ -12,6 +12,7 @@ !! AMBIENT TEMPERATURE. !! 98-06-08 T BLACK - CONVERSION FROM 1-D TO 2-D !! 00-01-04 JIM TUCCILLO - MPI VERSION +!! 21-07-23 Wen Meng - Retrict computation from undefined points !! !! USAGE: CALL CALDWP(P1D,Q1D,TDWP,T1D) !! INPUT ARGUMENT LIST: @@ -42,7 +43,7 @@ SUBROUTINE CALDWP(P1D,Q1D,TDWP,T1D) ! ! SET PARAMETERS. use params_mod, only: eps, oneps, d001, h1m12 - use ctlblk_mod, only: jsta, jend, im + use ctlblk_mod, only: jsta, jend, im, spval !- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - implicit none ! @@ -62,8 +63,12 @@ SUBROUTINE CALDWP(P1D,Q1D,TDWP,T1D) !$omp parallel do private(i,j) DO J=JSTA,JEND DO I=1,IM + IF(P1D(I,j) 0.) THEN esx = 6.1078/POL**8 ES = esx E = PMID(I,J,LL)/100.*Q(I,J,LL)/(0.62197+Q(I,J,LL)*0.37803) RHB(I,J,LL) = 100.*AMIN1(1.,E/ES) + ENDIF enddo diff --git a/sorc/ncep_post.fd/CALWXT.f b/sorc/ncep_post.fd/CALWXT.f index 2afc51bca..a50a6065c 100644 --- a/sorc/ncep_post.fd/CALWXT.f +++ b/sorc/ncep_post.fd/CALWXT.f @@ -9,6 +9,7 @@ SUBROUTINE CALWXT_POST(T,Q,PMID,PINT,HTM,LMH,PREC,ZINT,IWX,ZWET) ! 02-01-15 MIKE BALDWIN - WRF VERSION ! 05-07-07 BINBIN ZHOU - ADD PREC FOR RSM ! 19-10-30 Bo CUI - REMOVE "GOTO" STATEMENT +! 21-07-26 Wen Meng - Restrict computation from undefined grids ! ! ! ROUTINE TO COMPUTE PRECIPITATION TYPE USING A DECISION TREE @@ -130,12 +131,14 @@ SUBROUTINE CALWXT_POST(T,Q,PMID,PINT,HTM,LMH,PREC,ZINT,IWX,ZWET) ! AND 500 MB ! IF (PKL<50000.0.OR.PKL>PSFCK-7000.0) CYCLE + IF(QKLTWARM(I,J)) TWARM(I,J)=TKL IF (TDPREPSFCK-7000.0) cycle + IF(QKLTWARM(I,J)) TWARM(I,J)=TKL IF (TDPRE 1.) exit enddo if (opdepth > 1.) num_thick=num_thick+1 ! for debug diff --git a/sorc/ncep_post.fd/CLMAX.f b/sorc/ncep_post.fd/CLMAX.f index 1a87ba4b2..dcc72512b 100644 --- a/sorc/ncep_post.fd/CLMAX.f +++ b/sorc/ncep_post.fd/CLMAX.f @@ -7,6 +7,7 @@ SUBROUTINE CLMAX(EL0,SQZ,SQ,RQ2L,RQ2H) ! EXTRACTED FROM EXISTING CODE BY L. LOBOCKI, JULY 28, 1992 ! 01-10-22 H CHUANG - MODIFIED TO PROCESS HYBRID MODEL OUTPUT ! 02-06-19 MIKE BALDWIN - WRF VERSION +! 21-07-26 W Meng - Restrict computation from undefined grids ! ! INPUT: ! ------ @@ -41,7 +42,7 @@ SUBROUTINE CLMAX(EL0,SQZ,SQ,RQ2L,RQ2H) ! use vrbls2d, only: use masks, only: lmh, sm use params_mod, only: EPSQ2 - use ctlblk_mod, only: jsta, jend, lm, im + use ctlblk_mod, only: jsta, jend, lm, im, spval !- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - implicit none ! @@ -121,9 +122,13 @@ SUBROUTINE CLMAX(EL0,SQZ,SQ,RQ2L,RQ2H) !$omp parallel do DO J=JSTA,JEND DO I=1,IM + IF(HGT(I,J)24135.1)print*,'bad visbility' & + IF(vis(i,j)/=spval.and.abs(vis(i,j))>24135.1)print*,'bad visbility' & , i,j,Q1D(i,j),QW1(i,j),QR1(i,j),QI1(i,j) & , QS1(i,j),T1D(i,j),P1D(i,j),vis(i,j) @@ -3706,10 +3706,10 @@ SUBROUTINE MDLFLD ! EGRID1 is transport wind speed ! prevent floating overflow if either component is undefined - IF (EGRID1(I,J)==SPVAL .or. EGRID2(I,J)==SPVAL) THEN - EGRID3(I,J) = SPVAL - ELSe + IF (EGRID1(I,J)0.5.AND. !HC 1 HTM2D(I+IHW(J),J-1,L)*HTM2D(I+IHE(J),J-1,L) @@ -272,6 +278,8 @@ SUBROUTINE MEMSLP(TPRES,QPRES,FIPRES) IF(HTM2D(I,J) > 0.5 .AND. tem < 0.5) then TTV(I,J) = TPRES(I,J,L)*(1.+0.608*QPRES(I,J,L)) ENDIF + else + TTV(I,J) = spval ! if(i==ii.and.j==jj)print*,'Debug:L,TTV B SMOO= ',l,TTV(I,J) end if ! spval ENDDO diff --git a/sorc/ncep_post.fd/SURFCE.f b/sorc/ncep_post.fd/SURFCE.f index 3af081583..749e5cdd0 100644 --- a/sorc/ncep_post.fd/SURFCE.f +++ b/sorc/ncep_post.fd/SURFCE.f @@ -38,6 +38,7 @@ !! - 20-11-10 J MENG - USE UPP_PHYSICS MODULE !! - 21-03-11 B Cui - change local arrays to dimension (im,jsta:jend) !! - 21-04-01 J MENG - COMPUTATION ON DEFINED POINTS ONLY +!! - 21-07-26 W Meng - Restrict computation from undefined grids !! !! USAGE: CALL SURFCE !! INPUT ARGUMENT LIST: @@ -188,7 +189,7 @@ SUBROUTINE SURFCE ! SURFACE (SKIN) POTENTIAL TEMPERATURE AND TEMPERATURE. THSFC(I,J) = THS(I,J) TSFC(I,J) = spval - IF(THSFC(i,j) /= spval) & + IF(THSFC(i,j) /= spval .and. PSFC(I,J) /= spval) & TSFC(I,J) = THSFC(I,J)*(PSFC(I,J)/P1000)**CAPA ! ! SURFACE SPECIFIC HUMIDITY, RELATIVE HUMIDITY, AND DEWPOINT. @@ -198,8 +199,8 @@ SUBROUTINE SURFCE QSFC(I,J) = spval RHSFC(I,J) = spval EVP(I,J) = spval - IF(TSFC(I,J) /= spval) then - QSFC(I,J) = MAX(H1M12,QS(I,J)) + IF(TSFC(I,J) < spval) then + IF(QS(I,J)0)THEN @@ -302,7 +303,7 @@ SUBROUTINE SURFCE ! ! SURFACE SPECIFIC HUMIDITY. IF (IGET(028)>0) THEN - CALL BOUND(GRID1,H1M12,H99999) + !CALL BOUND(GRID1,H1M12,H99999) if(grib=='grib2') then cfld=cfld+1 fld_info(cfld)%ifld=IAVBLFLD(IGET(028)) @@ -1302,7 +1303,7 @@ SUBROUTINE SURFCE datapd(1:im,1:jend-jsta+1,cfld) = GRID1(1:im,jsta:jend) endif ENDIF -! +! GRID1 ! SHELTER MIXING RATIO. IF (IGET(414)>0) THEN DO J=JSTA,JEND @@ -1336,8 +1337,12 @@ SUBROUTINE SURFCE ! EGRID1(I,J) = DWPT + IF(QSHLTR(I,J)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 + IF(MODELNAME == 'FV3R') THEN + GRID1(I,J)=SFCUXI(I,J) + ELSE + GRID1(I,J)=EGRID1(I,J) + ENDIF ENDDO ENDDO ! @@ -5220,10 +5241,11 @@ SUBROUTINE SURFCE IF (IGET(134)>0) THEN 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 + IF(MODELNAME == 'FV3R') THEN + GRID1(I,J)=SFCVXI(I,J) + ELSE + GRID1(I,J)=EGRID2(I,J) + END IF ENDDO ENDDO if(grib=='grib2') then diff --git a/sorc/ncep_post.fd/UPP_PHYSICS.f b/sorc/ncep_post.fd/UPP_PHYSICS.f index b9ca9995d..3f44dd0c0 100644 --- a/sorc/ncep_post.fd/UPP_PHYSICS.f +++ b/sorc/ncep_post.fd/UPP_PHYSICS.f @@ -574,6 +574,7 @@ SUBROUTINE CALCAPE(ITYPE,DPBND,P1D,T1D,Q1D,L1D,CAPE, & ! 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 +! 21-07-28 W Meng - Restrict computation from undefined grids. ! ! USAGE: CALL CALCAPE(ITYPE,DPBND,P1D,T1D,Q1D,L1D,CAPE, ! CINS,PPARC) @@ -616,7 +617,7 @@ SUBROUTINE CALCAPE(ITYPE,DPBND,P1D,T1D,Q1D,L1D,CAPE, & 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, me + use ctlblk_mod, only: jsta_2l, jend_2u, lm, jsta, jend, im, me, spval ! !- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - implicit none @@ -723,6 +724,7 @@ SUBROUTINE CALCAPE(ITYPE,DPBND,P1D,T1D,Q1D,L1D,CAPE, & DO I=1,IM PSFCK = PMID(I,J,NINT(LMH(I,J))) PKL = PMID(I,J,KB) + IF(PSFCKPSFCK)) cycle IF (ITYPE ==2 .OR. & @@ -802,6 +804,7 @@ SUBROUTINE CALCAPE(ITYPE,DPBND,P1D,T1D,Q1D,L1D,CAPE, & PARCEL(I,J) = KB ENDIF END IF + ENDIF !end PSFCK0)THEN + IF(PMID(I,J,L)==spval)CYCLE PRESK=PMID(I,J,L) ! IF(PRESK