Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
211 changes: 168 additions & 43 deletions sorc/ncep_post.fd/SURFCE.f
Original file line number Diff line number Diff line change
Expand Up @@ -1224,7 +1224,7 @@ SUBROUTINE SURFCE
IF ( IGET(996)>0 )THEN
if(grib=='grib2') then
cfld=cfld+1
fld_info(cfld)%ifld=IAVBLFLD(IGET(994))
fld_info(cfld)%ifld=IAVBLFLD(IGET(996))
!$omp parallel do private(i,j,jj)
do j=1,jend-jsta+1
jj = jsta+j-1
Expand All @@ -1238,7 +1238,7 @@ SUBROUTINE SURFCE
IF ( IGET(997)>0 )THEN
if(grib=='grib2') then
cfld=cfld+1
fld_info(cfld)%ifld=IAVBLFLD(IGET(995))
fld_info(cfld)%ifld=IAVBLFLD(IGET(997))
!$omp parallel do private(i,j,jj)
do j=1,jend-jsta+1
jj = jsta+j-1
Expand All @@ -1252,7 +1252,7 @@ SUBROUTINE SURFCE
IF ( IGET(998)>0 )THEN
if(grib=='grib2') then
cfld=cfld+1
fld_info(cfld)%ifld=IAVBLFLD(IGET(996))
fld_info(cfld)%ifld=IAVBLFLD(IGET(998))
!$omp parallel do private(i,j,jj)
do j=1,jend-jsta+1
jj = jsta+j-1
Expand All @@ -1264,61 +1264,186 @@ SUBROUTINE SURFCE
ENDIF

IF ( IGET(999)>0 )THEN
if(grib=='grib2') then
cfld=cfld+1
fld_info(cfld)%ifld=IAVBLFLD(IGET(997))
!$omp parallel do private(i,j)
DO J=JSTA,JEND
DO I=1,IM
GRID1(I,J) = TECAN(I,J)
ENDDO
ENDDO
ID(1:25) = 0
ITPREC = NINT(TPREC)
!mp
if (ITPREC /= 0) then
IFINCR = MOD(IFHR,ITPREC)
IF(IFMIN >= 1)IFINCR= MOD(IFHR*60+IFMIN,ITPREC*60)
else
IFINCR = 0
endif
!mp
ID(18) = 0
ID(19) = IFHR
IF(IFMIN >= 1)ID(19)=IFHR*60+IFMIN
ID(20) = 4
IF (IFINCR==0) THEN
ID(18) = IFHR-ITPREC
ELSE
ID(18) = IFHR-IFINCR
IF(IFMIN >= 1)ID(18)=IFHR*60+IFMIN-IFINCR
ENDIF
IF (ID(18)<0) ID(18) = 0
if(grib=='grib2') then
cfld=cfld+1
fld_info(cfld)%ifld=IAVBLFLD(IGET(999))
fld_info(cfld)%ntrange=1
fld_info(cfld)%tinvstat=IFHR-ID(18)
!$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) = TECAN(i,jj)
datapd(i,j,cfld) = GRID1(i,jj)
enddo
enddo
endif
ENDIF

IF ( IGET(1000)>0 )THEN
if(grib=='grib2') then
cfld=cfld+1
fld_info(cfld)%ifld=IAVBLFLD(IGET(998))
!$omp parallel do private(i,j)
DO J=JSTA,JEND
DO I=1,IM
GRID1(I,J) = TETRAN(I,J)
ENDDO
ENDDO
ID(1:25) = 0
ITPREC = NINT(TPREC)
!mp
if (ITPREC /= 0) then
IFINCR = MOD(IFHR,ITPREC)
IF(IFMIN >= 1)IFINCR= MOD(IFHR*60+IFMIN,ITPREC*60)
else
IFINCR = 0
endif
!mp
ID(18) = 0
ID(19) = IFHR
IF(IFMIN >= 1)ID(19)=IFHR*60+IFMIN
ID(20) = 4
IF (IFINCR==0) THEN
ID(18) = IFHR-ITPREC
ELSE
ID(18) = IFHR-IFINCR
IF(IFMIN >= 1)ID(18)=IFHR*60+IFMIN-IFINCR
ENDIF
IF (ID(18)<0) ID(18) = 0
if(grib=='grib2') then
cfld=cfld+1
fld_info(cfld)%ifld=IAVBLFLD(IGET(1000))
fld_info(cfld)%ntrange=1
fld_info(cfld)%tinvstat=IFHR-ID(18)
!$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) = TETRAN(i,jj)
enddo
enddo
endif
ENDIF

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
!
IF ( IGET(1001)>0 )THEN
if(grib=='grib2') then
cfld=cfld+1
fld_info(cfld)%ifld=IAVBLFLD(IGET(999))
!$omp parallel do private(i,j)
DO J=JSTA,JEND
DO I=1,IM
GRID1(I,J) = TEDIR(I,J)
ENDDO
ENDDO
ID(1:25) = 0
ITPREC = NINT(TPREC)
!mp
if (ITPREC /= 0) then
IFINCR = MOD(IFHR,ITPREC)
IF(IFMIN >= 1)IFINCR= MOD(IFHR*60+IFMIN,ITPREC*60)
else
IFINCR = 0
endif
!mp
ID(18) = 0
ID(19) = IFHR
IF(IFMIN >= 1)ID(19)=IFHR*60+IFMIN
ID(20) = 4
IF (IFINCR==0) THEN
ID(18) = IFHR-ITPREC
ELSE
ID(18) = IFHR-IFINCR
IF(IFMIN >= 1)ID(18)=IFHR*60+IFMIN-IFINCR
ENDIF
IF (ID(18)<0) ID(18) = 0
if(grib=='grib2') then
cfld=cfld+1
fld_info(cfld)%ifld=IAVBLFLD(IGET(1001))
fld_info(cfld)%ntrange=1
fld_info(cfld)%tinvstat=IFHR-ID(18)
!$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) = TEDIR(i,jj)
enddo
enddo
endif
ENDIF
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
!

IF ( IGET(1002)>0 )THEN
if(grib=='grib2') then
cfld=cfld+1
fld_info(cfld)%ifld=IAVBLFLD(IGET(1000))
!$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) = PAHA(i,jj)
enddo
enddo
IF (IGET(1002)>0) THEN
IF(MODELNAME == 'NCAR'.OR.MODELNAME=='RSM' .OR. &
MODELNAME=='RAPR')THEN
GRID1=SPVAL
ID(1:25)=0
ELSE
IF(ASRFC>0.)THEN
RRNUM=1./ASRFC
ELSE
RRNUM=0.
ENDIF
DO J=JSTA,JEND
DO I=1,IM
IF(PAHA(I,J)/=SPVAL)THEN
GRID1(I,J)=-1.*PAHA(I,J)*RRNUM !change the sign to conform with Grib
ELSE
GRID1(I,J)=PAHA(I,J)
END IF
ENDDO
ENDDO
ID(1:25) = 0
ITSRFC = NINT(TSRFC)
IF(ITSRFC /= 0) then
IFINCR = MOD(IFHR,ITSRFC)
IF(IFMIN >= 1)IFINCR= MOD(IFHR*60+IFMIN,ITSRFC*60)
ELSE
IFINCR = 0
endif
ENDIF

ID(19) = IFHR
IF(IFMIN >= 1)ID(19)=IFHR*60+IFMIN
ID(20) = 3
IF (IFINCR==0) THEN
ID(18) = IFHR-ITSRFC
ELSE
ID(18) = IFHR-IFINCR
IF(IFMIN >= 1)ID(18)=IFHR*60+IFMIN-IFINCR
ENDIF
IF (ID(18)<0) ID(18) = 0
if(grib=='grib2') then
cfld=cfld+1
fld_info(cfld)%ifld=IAVBLFLD(IGET(1002))
if(ITSRFC>0) then
fld_info(cfld)%ntrange=1
else
fld_info(cfld)%ntrange=0
endif
fld_info(cfld)%tinvstat=IFHR-ID(18)
datapd(1:im,1:jend-jsta+1,cfld)=GRID1(1:im,jsta:jend)
endif
END IF
ENDIF
!
!
!
Expand Down