Skip to content

Commit

Permalink
MPAS applications: fixes for absolute vorticity and surface latent-he…
Browse files Browse the repository at this point in the history
…at flux (#1069)

* Check for SPVAL before interpolating wind onto mass points

* Initialize absolute vorticity as SPVAL, regardless of modelname

* Updated netCDF array name for surface latent-heat flux

* Initialize ABSV as zero for RAP/HRRR only

* Use the "submodelname" variable in the CALVOR subroutine

* add orion rt log

* add hercules rt log

* add hera RT log

---------

Co-authored-by: WenMeng-NOAA <[email protected]>
Co-authored-by: gspetro-NOAA <[email protected]>
  • Loading branch information
3 people authored Oct 22, 2024
1 parent 4e41404 commit 30d4079
Show file tree
Hide file tree
Showing 5 changed files with 181 additions and 183 deletions.
23 changes: 10 additions & 13 deletions sorc/ncep_post.fd/INITPOST_MPAS.F
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@
!> 2024-08-30 | Jaymes Kenyon| Add processing for lat-lon projection
!> 2024-08-30 | Jaymes Kenyon| Add temporary hard coding of SLLEVEL (for RUC LSM) and PREC_ACC_DT
!> 2024-09-09 | Eric James | Add checks for missing values before entering some computations
!> 2024-10-16 | Jaymes Kenyon| Missing-value checks for wind interp, fix to LH flux
!>
!> @author Jaymes Kenyon (GSL) @date 2024-08-14

Expand Down Expand Up @@ -287,7 +288,11 @@ SUBROUTINE INITPOST_MPAS
! fill up UH which is U at P-points including 2 row halo
do j = jsta_2l, jend_2u
do i = 1, im
UH (I,J,L) = (dum3d(I,J,L)+dum3d(I+1,J,L))*0.5
if (dum3d(I,J,L) < SPVAL .AND. dum3d(I+1,J,L) < SPVAL) then
UH (I,J,L) = (dum3d(I,J,L)+dum3d(I+1,J,L))*0.5
else
UH (I,J,L) = SPVAL
endif
end do
end do
end do
Expand All @@ -304,7 +309,11 @@ SUBROUTINE INITPOST_MPAS
! fill up VH which is V at P-points including 2 row halo
do j = jsta_2l, jend_2u
do i = 1, im
if (dum3d(I,J,L) < SPVAL .AND. dum3d(I,J+1,L) < SPVAL) then
VH(I,J,L) = (dum3d(I,J,L)+dum3d(I,J+1,L))*0.5
else
VH(I,J,L) = SPVAL
endif
end do
end do
end do
Expand Down Expand Up @@ -2624,26 +2633,14 @@ SUBROUTINE INITPOST_MPAS
end do

! latent heat flux
IF(iSF_SURFACE_PHYSICS/=3) then
VarName='LH'
call getVariable(fileName,DateStr,DataHandle,VarName,DUMMY, &
IM,1,JM,1,IM,JS,JE,1)
do j = jsta_2l, jend_2u
do i = 1, im
QWBS(I,J) = dummy ( i, j )
! SFCLHX ( i, j ) = dummy ( i, j )
end do
end do
else
VarName='QFX'
call getVariable(fileName,DateStr,DataHandle,VarName,DUMMY, &
IM,1,JM,1,IM,JS,JE,1)
do j = jsta_2l, jend_2u
do i = 1, im
QWBS(I,J) = dummy ( i, j ) * LHEAT
end do
end do
ENDIF

! ground heat fluxes
VarName='GRDFLX'
Expand Down
5 changes: 3 additions & 2 deletions sorc/ncep_post.fd/UPP_PHYSICS.f
Original file line number Diff line number Diff line change
Expand Up @@ -1737,6 +1737,7 @@ end function TVIRTUAL
!> 2019-10-17 | Y Mao | Skip calculation when U/V is SPVAL
!> 2020-11-06 | J Meng | Use UPP_MATH Module
!> 2022-05-26 | H Chuang | Use GSL approach for FV3R
!> 2024-10-16 | J Kenyon | Initialize ABSV as SPVAL for MPAS applications
!>
!> @author Russ Treadon W/NP2 @date 1992-12-22

Expand All @@ -1746,7 +1747,7 @@ SUBROUTINE CALVOR(UWND,VWND,ABSV)
use vrbls2d, only: f
use masks, only: gdlat, gdlon, dx, dy
use params_mod, only: d00, dtr, small, erad
use ctlblk_mod, only: jsta_2l, jend_2u, spval, modelname, global, &
use ctlblk_mod, only: jsta_2l, jend_2u, spval, modelname, submodelname, global, &
jsta, jend, im, jm, jsta_m, jend_m, gdsdegr,&
ista, iend, ista_m, iend_m, ista_2l, iend_2u, me, num_procs
use gridspec_mod, only: gridtype, dyval
Expand All @@ -1773,7 +1774,7 @@ SUBROUTINE CALVOR(UWND,VWND,ABSV)
!
! LOOP TO COMPUTE ABSOLUTE VORTICITY FROM WINDS.
!
IF(MODELNAME == 'RAPR') then
IF(MODELNAME == 'RAPR' .AND. SUBMODELNAME /= 'MPAS') then ! for RAP / HRRR only
!$omp parallel do private(i,j)
DO J=JSTA_2L,JEND_2U
DO I=ISTA_2L,IEND_2U
Expand Down
112 changes: 56 additions & 56 deletions tests/logs/rt.log.HERA
Original file line number Diff line number Diff line change
@@ -1,69 +1,69 @@
===== Start of UPP Regression Testing Log =====
UPP Hash Tested:
5f50ba05502fa9e0ff28d76d61ee03396f794cb6
e0e6e6025ea3e2ed2ee79ac69d4923501f1254cc

Submodule hashes:
-179cae1dd84401cf25d250bd9102e66560a9d328 sorc/libIFI.fd
-529f870d33b65c3b6c1aa3c3236b94efc3bd336d sorc/ncep_post.fd/post_gtg.fd

Run directory: /scratch2/NAGAPE/epic/Gillian.Petro/RTs/upp-rts/1066/ci/rundir/upp-HERA
Run directory: /scratch2/NAGAPE/epic/Gillian.Petro/RTs/upp-rts/1069/ci/rundir/upp-HERA
Baseline directory: /scratch2/NAGAPE/epic/UPP/test_suite

Total runtime: 00h:12m:34s
Test Date: 20241018 14:17:47
Total runtime: 00h:10m:39s
Test Date: 20241022 14:08:04
Summary Results:

10/18 14:09:39Z -rtma pe test: your new post executable generates bit-identical NATLEV00.tm00 as the trunk
10/18 14:09:42Z -rtma pe test: your new post executable generates bit-identical PRSLEV00.tm00 as the trunk
10/18 14:09:42Z -rtma pe test: your new post executable generates bit-identical IFIFIP00.tm00 as the trunk
10/18 14:09:54Z -fv3gefs pe test: your new post executable generates bit-identical geaer.t00z.master.grb2f060 as the trunk
10/18 14:10:02Z -fv3hafs test: your new post executable generates bit-identical HURPRS09.tm00 as the trunk
10/18 14:10:11Z -fv3gefs test: your new post executable generates bit-identical geaer.t00z.master.grb2f060 as the trunk
10/18 14:10:20Z -fv3hafs pe test: your new post executable generates bit-identical HURPRS09.tm00 as the trunk
10/18 14:10:34Z -hrrr pe test: your new post executable generates bit-identical WRFTWO.GrbF04 as the trunk
10/18 14:10:36Z -hrrr pe test: your new post executable generates bit-identical WRFPRS.GrbF04 as the trunk
10/18 14:10:38Z -hrrr pe test: your new post executable generates bit-identical WRFNAT.GrbF04 as the trunk
10/18 14:10:42Z -rap test: your new post executable generates bit-identical WRFPRS.GrbF16 as the trunk
10/18 14:10:44Z -rap test: your new post executable generates bit-identical WRFNAT.GrbF16 as the trunk
10/18 14:10:57Z -hrrr test: your new post executable generates bit-identical WRFTWO.GrbF04 as the trunk
10/18 14:10:58Z -hrrr test: your new post executable generates bit-identical WRFPRS.GrbF04 as the trunk
10/18 14:10:59Z -hrrr test: your new post executable generates bit-identical WRFNAT.GrbF04 as the trunk
10/18 14:11:13Z -rap pe test: your new post executable did generate changed results in WRFPRS.GrbF16
10/18 14:11:14Z -rap pe test: your new post executable generates bit-identical WRFNAT.GrbF16 as the trunk
10/18 14:11:22Z -nmmb pe test: your new post executable generates bit-identical BGDAWP03.tm00.Grib2 as the trunk
10/18 14:11:24Z -nmmb pe test: your new post executable generates bit-identical BGRD3D03.tm00.Grib2 as the trunk
10/18 14:11:24Z -nmmb pe test: your new post executable generates bit-identical BGRDSF03.tm00.Grib2 as the trunk
10/18 14:11:25Z -fv3r test: your new post executable generates bit-identical PRSLEV10.tm00 as the trunk
10/18 14:11:26Z -nmmb test: your new post executable generates bit-identical BGDAWP03.tm00.Grib2 as the trunk
10/18 14:11:28Z -nmmb test: your new post executable generates bit-identical BGRD3D03.tm00.Grib2 as the trunk
10/18 14:11:28Z -nmmb test: your new post executable generates bit-identical BGRDSF03.tm00.Grib2 as the trunk
10/18 14:11:28Z -rtma test: your new post executable generates bit-identical NATLEV00.tm00 as the trunk
10/18 14:11:30Z -fv3r test: your new post executable generates bit-identical NATLEV10.tm00 as the trunk
10/18 14:11:30Z -fv3r pe test: your new post executable generates bit-identical PRSLEV10.tm00 as the trunk
10/18 14:11:32Z -rtma test: your new post executable generates bit-identical PRSLEV00.tm00 as the trunk
10/18 14:11:32Z -rtma test: your new post executable generates bit-identical IFIFIP00.tm00 as the trunk
10/18 14:11:35Z -fv3r pe test: your new post executable generates bit-identical NATLEV10.tm00 as the trunk
10/18 14:15:38Z -fv3gfs test: your new post executable generates bit-identical gfs.t00z.master.grb2f006 as the trunk
10/18 14:15:42Z -fv3gfs test: your new post executable generates bit-identical gfs.t00z.sfluxgrbf006.grib2 as the trunk
10/18 14:15:42Z -fv3gfs test: your new post executable generates bit-identical gfs.t00z.special.grb2f006 as the trunk
10/18 14:17:34Z -fv3gfs pe test: your new post executable generates bit-identical gfs.t00z.master.grb2f006 as the trunk
10/18 14:17:38Z -fv3gfs pe test: your new post executable generates bit-identical gfs.t00z.sfluxgrbf006.grib2 as the trunk
10/18 14:17:38Z -fv3gfs pe test: your new post executable generates bit-identical gfs.t00z.special.grb2f006 as the trunk
10/18 14:11:40Z -Runtime: nmmb_test 00:01:21 -- baseline 00:01:00
10/18 14:11:40Z -Runtime: nmmb_pe_test 00:01:21 -- baseline 00:01:00
10/18 14:11:41Z -Runtime: fv3gefs_test 00:00:15 -- baseline 00:40:00
10/18 14:11:41Z -Runtime: fv3gefs_pe_test 00:00:19 -- baseline 00:40:00
10/18 14:11:41Z -Runtime: rap_test 00:01:00 -- baseline 00:02:00
10/18 14:11:42Z -Runtime: rap_pe_test 00:01:11 -- baseline 00:02:00
10/18 14:11:42Z -Runtime: hrrr_test 00:02:17 -- baseline 00:02:00
10/18 14:11:42Z -Runtime: hrrr_pe_test 00:01:52 -- baseline 00:02:00
10/18 14:15:44Z -Runtime: fv3gfs_test 00:07:22 -- baseline 00:15:00
10/18 14:17:45Z -Runtime: fv3gfs_pe_test 00:07:35 -- baseline 00:15:00
10/18 14:17:46Z -Runtime: fv3r_test 00:01:34 -- baseline 00:03:00
10/18 14:17:46Z -Runtime: fv3r_pe_test 00:01:32 -- baseline 00:03:00
10/18 14:17:46Z -Runtime: fv3hafs_test 00:00:34 -- baseline 00:03:00
10/18 14:17:47Z -Runtime: fv3hafs_pe_test 00:00:32 -- baseline 00:03:00
10/18 14:17:47Z -Runtime: rtma_test 00:01:36 -- baseline 00:03:00
10/18 14:17:47Z -Runtime: rtma_test_pe_test 00:01:40 -- baseline
10/22 14:00:21Z -fv3gefs pe test: your new post executable generates bit-identical geaer.t00z.master.grb2f060 as the trunk
10/22 14:00:31Z -fv3hafs test: your new post executable generates bit-identical HURPRS09.tm00 as the trunk
10/22 14:00:31Z -fv3hafs pe test: your new post executable generates bit-identical HURPRS09.tm00 as the trunk
10/22 14:00:58Z -rap test: your new post executable generates bit-identical WRFPRS.GrbF16 as the trunk
10/22 14:00:59Z -rap test: your new post executable generates bit-identical WRFNAT.GrbF16 as the trunk
10/22 14:01:14Z -rap pe test: your new post executable did generate changed results in WRFPRS.GrbF16
10/22 14:01:15Z -rap pe test: your new post executable generates bit-identical WRFNAT.GrbF16 as the trunk
10/22 14:01:16Z -nmmb pe test: your new post executable generates bit-identical BGDAWP03.tm00.Grib2 as the trunk
10/22 14:01:18Z -nmmb pe test: your new post executable generates bit-identical BGRD3D03.tm00.Grib2 as the trunk
10/22 14:01:18Z -nmmb pe test: your new post executable generates bit-identical BGRDSF03.tm00.Grib2 as the trunk
10/22 14:01:21Z -nmmb test: your new post executable generates bit-identical BGDAWP03.tm00.Grib2 as the trunk
10/22 14:01:22Z -fv3r test: your new post executable generates bit-identical PRSLEV10.tm00 as the trunk
10/22 14:01:24Z -nmmb test: your new post executable generates bit-identical BGRD3D03.tm00.Grib2 as the trunk
10/22 14:01:24Z -nmmb test: your new post executable generates bit-identical BGRDSF03.tm00.Grib2 as the trunk
10/22 14:01:27Z -fv3r pe test: your new post executable generates bit-identical PRSLEV10.tm00 as the trunk
10/22 14:01:28Z -fv3r test: your new post executable generates bit-identical NATLEV10.tm00 as the trunk
10/22 14:01:32Z -fv3gefs test: your new post executable generates bit-identical geaer.t00z.master.grb2f060 as the trunk
10/22 14:01:33Z -fv3r pe test: your new post executable generates bit-identical NATLEV10.tm00 as the trunk
10/22 14:01:36Z -rtma pe test: your new post executable generates bit-identical NATLEV00.tm00 as the trunk
10/22 14:01:40Z -rtma pe test: your new post executable generates bit-identical PRSLEV00.tm00 as the trunk
10/22 14:01:40Z -rtma pe test: your new post executable generates bit-identical IFIFIP00.tm00 as the trunk
10/22 14:01:44Z -rtma test: your new post executable generates bit-identical NATLEV00.tm00 as the trunk
10/22 14:01:47Z -rtma test: your new post executable generates bit-identical PRSLEV00.tm00 as the trunk
10/22 14:01:47Z -rtma test: your new post executable generates bit-identical IFIFIP00.tm00 as the trunk
10/22 14:01:53Z -hrrr pe test: your new post executable generates bit-identical WRFTWO.GrbF04 as the trunk
10/22 14:01:55Z -hrrr pe test: your new post executable generates bit-identical WRFPRS.GrbF04 as the trunk
10/22 14:01:59Z -hrrr pe test: your new post executable generates bit-identical WRFNAT.GrbF04 as the trunk
10/22 14:02:16Z -hrrr test: your new post executable generates bit-identical WRFTWO.GrbF04 as the trunk
10/22 14:02:17Z -hrrr test: your new post executable generates bit-identical WRFPRS.GrbF04 as the trunk
10/22 14:02:19Z -hrrr test: your new post executable generates bit-identical WRFNAT.GrbF04 as the trunk
10/22 14:07:14Z -fv3gfs test: your new post executable generates bit-identical gfs.t00z.master.grb2f006 as the trunk
10/22 14:07:18Z -fv3gfs test: your new post executable generates bit-identical gfs.t00z.sfluxgrbf006.grib2 as the trunk
10/22 14:07:19Z -fv3gfs test: your new post executable generates bit-identical gfs.t00z.special.grb2f006 as the trunk
10/22 14:07:54Z -fv3gfs pe test: your new post executable generates bit-identical gfs.t00z.master.grb2f006 as the trunk
10/22 14:07:58Z -fv3gfs pe test: your new post executable generates bit-identical gfs.t00z.sfluxgrbf006.grib2 as the trunk
10/22 14:07:58Z -fv3gfs pe test: your new post executable generates bit-identical gfs.t00z.special.grb2f006 as the trunk
10/22 14:01:38Z -Runtime: nmmb_test 00:01:31 -- baseline 00:01:00
10/22 14:01:39Z -Runtime: nmmb_pe_test 00:01:25 -- baseline 00:01:00
10/22 14:01:39Z -Runtime: fv3gefs_test 00:01:39 -- baseline 00:40:00
10/22 14:01:39Z -Runtime: fv3gefs_pe_test 00:00:28 -- baseline 00:40:00
10/22 14:01:40Z -Runtime: rap_test 00:01:06 -- baseline 00:02:00
10/22 14:01:40Z -Runtime: rap_pe_test 00:01:22 -- baseline 00:02:00
10/22 14:02:26Z -Runtime: hrrr_test 00:02:26 -- baseline 00:02:00
10/22 14:02:26Z -Runtime: hrrr_pe_test 00:02:06 -- baseline 00:02:00
10/22 14:07:32Z -Runtime: fv3gfs_test 00:07:26 -- baseline 00:15:00
10/22 14:08:02Z -Runtime: fv3gfs_pe_test 00:08:05 -- baseline 00:15:00
10/22 14:08:02Z -Runtime: fv3r_test 00:01:35 -- baseline 00:03:00
10/22 14:08:03Z -Runtime: fv3r_pe_test 00:01:40 -- baseline 00:03:00
10/22 14:08:03Z -Runtime: fv3hafs_test 00:00:34 -- baseline 00:03:00
10/22 14:08:03Z -Runtime: fv3hafs_pe_test 00:00:34 -- baseline 00:03:00
10/22 14:08:04Z -Runtime: rtma_test 00:01:50 -- baseline 00:03:00
10/22 14:08:04Z -Runtime: rtma_test_pe_test 00:01:43 -- baseline
No changes in test results detected.
===== End of UPP Regression Testing Log =====
Loading

0 comments on commit 30d4079

Please sign in to comment.