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) .OR. (IGET(134)>0) ) THEN
! dong add missing value
GRID1 = spval
+ IF(MODELNAME /= 'FV3R') &
CALL CALTAU(EGRID1(1,jsta),EGRID2(1,jsta))
!
! SURFACE U COMPONENT WIND STRESS.
@@ -5202,10 +5222,11 @@ SUBROUTINE SURFCE
IF (IGET(133)>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