diff --git a/parm/post_avblflds.xml b/parm/post_avblflds.xml
index ac518b3aa..d53017a81 100755
--- a/parm/post_avblflds.xml
+++ b/parm/post_avblflds.xml
@@ -8479,5 +8479,21 @@
3.0
+
+ 1021
+ VPOT_ON_ISOBARIC_SFC
+ VPOT
+ isobaric_sfc
+ 3.0
+
+
+
+ 1022
+ STRM_ON_ISOBARIC_SFC
+ STRM
+ isobaric_sfc
+ 3.0
+
+
diff --git a/parm/sfs/postcntrl_sfs.xml b/parm/sfs/postcntrl_sfs.xml
index 00dd6acb8..60b6afaaf 100644
--- a/parm/sfs/postcntrl_sfs.xml
+++ b/parm/sfs/postcntrl_sfs.xml
@@ -68,6 +68,18 @@
5.0
+
+ VPOT_ON_ISOBARIC_SFC
+ 20000.
+ 3.0
+
+
+
+ STRM_ON_ISOBARIC_SFC
+ 20000.
+ 3.0
+
+
MSLET_ON_MEAN_SEA_LVL
6.0
diff --git a/parm/sfs/postxconfig-NT-sfs.txt b/parm/sfs/postxconfig-NT-sfs.txt
index 9dd920d84..938f838e3 100644
--- a/parm/sfs/postxconfig-NT-sfs.txt
+++ b/parm/sfs/postxconfig-NT-sfs.txt
@@ -1,5 +1,5 @@
1
-114
+117
GFSPRS
0
ncep_nco
@@ -352,6 +352,132 @@ isobaric_sfc
?
?
?
+1021
+VPOT_ON_ISOBARIC_SFC
+?
+1
+tmpl4_0
+VPOT
+?
+?
+isobaric_sfc
+0
+?
+1
+20000.
+?
+0
+?
+0
+?
+?
+?
+?
+0
+0.0
+0
+0.0
+?
+0
+0.0
+0
+0.0
+0
+0.0
+0
+0.0
+1
+3.0
+0
+0
+0
+?
+?
+?
+1022
+STRM_ON_ISOBARIC_SFC
+?
+1
+tmpl4_0
+STRM
+?
+?
+isobaric_sfc
+0
+?
+1
+20000.
+?
+0
+?
+0
+?
+?
+?
+?
+0
+0.0
+0
+0.0
+?
+0
+0.0
+0
+0.0
+0
+0.0
+0
+0.0
+1
+3.0
+0
+0
+0
+?
+?
+?
+1022
+STRM_ON_ISOBARIC_SFC
+?
+1
+tmpl4_0
+STRM
+?
+?
+isobaric_sfc
+0
+?
+1
+20000.
+?
+0
+?
+0
+?
+?
+?
+?
+0
+0.0
+0
+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/sorc/ncep_post.fd/MDL2P.f b/sorc/ncep_post.fd/MDL2P.f
index ef228bf79..a4a850be3 100644
--- a/sorc/ncep_post.fd/MDL2P.f
+++ b/sorc/ncep_post.fd/MDL2P.f
@@ -39,6 +39,7 @@
!> 2023-08-24 | Y Mao | Add gtg_on option for GTG interpolation
!> 2023-09-12 | J Kenyon | Prevent spurious supercooled rain and cloud water
!> 2024-04-23 | E James | Adding smoke emissions (ebb) from RRFS
+!> 2024-09-23 | K Asmar | Add velocity potential and streamfunction from wind vectors
!> 2024-12-12 | J Meng | Adding UUtah 2024 SLR algorithm
!>
!> @author T Black W/NP2 @date 1999-09-23
@@ -77,7 +78,7 @@ SUBROUTINE MDL2P(iostatusD3D)
use rqstfld_mod, only: IGET, LVLS, ID, IAVBLFLD, LVLSXML
use gridspec_mod, only: GRIDTYPE, MAPTYPE, DXVAL
use upp_physics, only: FPVSNEW, CALRH, CALVOR, CALSLR_ROEBBER, CALSLR_UUTAH, &
- CALSLR_UUTAH2
+ CALSLR_UUTAH2, CALCHIPSI
!- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
!
@@ -109,6 +110,7 @@ SUBROUTINE MDL2P(iostatusD3D)
INTEGER, dimension(ista_2l:iend_2u,jsta_2l:jend_2u) :: NL1X, NL1XF
real, dimension(ISTA_2L:IEND_2U,JSTA_2L:JEND_2U,LSM) :: TPRS, QPRS, FPRS
real, dimension(ISTA_2L:IEND_2U,JSTA_2L:JEND_2U,LSM) :: RHPRS
+ real, dimension(ista_2l:iend_2u,jsta_2l:jend_2u) :: CHI, PSI
!
INTEGER K, NSMOOTH
!
@@ -230,6 +232,7 @@ SUBROUTINE MDL2P(iostatusD3D)
(IGET(257) > 0) .OR. (IGET(258) > 0) .OR. &
(IGET(294) > 0) .OR. (IGET(268) > 0) .OR. &
(IGET(331) > 0) .OR. (IGET(326) > 0) .OR. &
+ (IGET(1021) > 0) .OR. (IGET(1022) > 0) .OR. &
! add D3D fields
(IGET(354) > 0) .OR. (IGET(355) > 0) .OR. &
(IGET(356) > 0) .OR. (IGET(357) > 0) .OR. &
@@ -1818,6 +1821,64 @@ SUBROUTINE MDL2P(iostatusD3D)
ENDIF
ENDIF
!
+!*** STREAMFUNCTION (PSI) AND VELOCITY POTENTIAL (CHI)
+!
+ IF ( (IGET(1021) > 0 .or. IGET(1022) > 0) .and. MODELNAME == 'GFS' ) THEN
+ IF (LVLS(LP,IGET(1021)) > 0 .or. LVLS(LP,IGET(1022)) > 0) THEN
+ CALL CALCHIPSI(USL,VSL,CHI,PSI)
+! print *,'me=',me,'EGRID1=',EGRID1(1:10,JSTA)
+!
+!*** CHI
+!
+ IF (LVLS(LP,IGET(1021)) > 0) THEN
+!$omp parallel do private(i,j)
+ DO J=JSTA,JEND
+ DO I=ISTA,IEND
+ GRID1(I,J) = CHI(I,J)
+ ENDDO
+ ENDDO
+ if(grib == 'grib2')then
+ cfld = cfld + 1
+ fld_info(cfld)%ifld=IAVBLFLD(IGET(1021))
+ fld_info(cfld)%lvl=LVLSXML(LP,IGET(1021))
+!$omp parallel do private(i,j,ii,jj)
+ do j=1,jend-jsta+1
+ jj = jsta+j-1
+ do i=1,iend-ista+1
+ ii=ista+i-1
+ datapd(i,j,cfld) = GRID1(ii,jj)
+ enddo
+ enddo
+ endif
+ ENDIF !CHI
+!
+!*** PSI
+!
+ IF (LVLS(LP,IGET(1022)) > 0) THEN
+!$omp parallel do private(i,j)
+ DO J=JSTA,JEND
+ DO I=ISTA,IEND
+ GRID1(I,J) = PSI(I,J)
+ ENDDO
+ ENDDO
+ if(grib == 'grib2')then
+ cfld = cfld + 1
+ fld_info(cfld)%ifld=IAVBLFLD(IGET(1022))
+ fld_info(cfld)%lvl=LVLSXML(LP,IGET(1022))
+!$omp parallel do private(i,j,ii,jj)
+ do j=1,jend-jsta+1
+ jj = jsta+j-1
+ do i=1,iend-ista+1
+ ii=ista+i-1
+ datapd(i,j,cfld) = GRID1(ii,jj)
+ enddo
+ enddo
+ endif
+ ENDIF !PSI
+ ENDIF !LVLS(CHIPSI)
+ ENDIF !CHIPSI
+!
+!
! GEOSTROPHIC STREAMFUNCTION.
IF (IGET(086) > 0) THEN
IF (LVLS(LP,IGET(086)) > 0) THEN
diff --git a/sorc/ncep_post.fd/UPP_PHYSICS.f b/sorc/ncep_post.fd/UPP_PHYSICS.f
index 6cdeaea7f..b4fdc069b 100644
--- a/sorc/ncep_post.fd/UPP_PHYSICS.f
+++ b/sorc/ncep_post.fd/UPP_PHYSICS.f
@@ -28,6 +28,8 @@
!>
!> tvirtual() computes virtual temperature.
!>
+!> calchipsi() computes streamfunction and velocity potential.
+!>
!> ### Program history log:
!> Date | Programmer | Comments
!> -----|------------|---------
@@ -35,6 +37,7 @@
!> 2022-07-11 | Jesse Meng | CALSLR_ROEBBER
!> 2023-02-14 | Jesse Meng | CALSLR_UUTAH
!> 2023-03-22 | Sam Trahan | Fix out-of-bounds access by not calling BOUND
+!> 2024-11-21 | K. Asmar, J. Meng, G. Vandenberghe | CALCHIPSI
!> 2024-12-12 | Jesse Meng | CALSLR_UUTAH2
!>
!> @author Jesse Meng @date 2020-05-20
@@ -52,7 +55,7 @@ module upp_physics
public :: CALRH_GFS, CALRH_GSD, CALRH_NAM
public :: CALRH_PW
public :: CALSLR_ROEBBER, CALSLR_UUTAH, CALSLR_UUTAH2
- public :: CALVOR
+ public :: CALVOR, CALCHIPSI
public :: FPVSNEW
public :: TVIRTUAL
@@ -4501,6 +4504,476 @@ END SUBROUTINE CALSLR_UUTAH
!
!-------------------------------------------------------------------------------------
!
+!> Computes streamfunction and velocity potential from absolute vorticity
+!> and divergence (computed as in calvor subroutine).
+!>
+!> Applies a poisson solver with 100,000 iterations to solve for
+!> streamfunction and velocity potential from absolute vorticity
+!> and divergence.
+!>
+!> @param[in] uwnd u-wind (m/s) at mass-points
+!> @param[in] vwnd v-wind (m/s) at mass-points
+!> @param[out] chi velocity potential (m^2/s) at mass-points
+!> @param[out] psi streamfunction (m^2/s) at mass-points
+!>
+!> ### Program history log:
+!> Date | Programmer | Comments
+!> -----|------------|---------
+!> 2024-10-28 | K. Asmar and J. Meng | Initial
+!> 2024-11-21 | George Vandenberghe | Add convergence condition
+!>
+!> @author(s) K. Asmar, J. Meng, G. Vandenberghe @date 2024-11-21
+ subroutine calchipsi (uwnd,vwnd,chi,psi)
+!
+ 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, &
+ jsta, jend, im, jm, jsta_m, jend_m, gdsdegr,&
+ ista, iend, ista_m, iend_m, ista_2l, iend_2u, &
+ me, num_procs, mpi_comm_comp
+ use gridspec_mod, only: gridtype, dyval
+ use upp_math, only: dvdxdudy, ddvdx, ddudy, uuavg
+ use mpi
+!
+ implicit none
+!
+! declare variables.
+!
+ real, dimension(ista_2l:iend_2u,jsta_2l:jend_2u), intent(in) :: uwnd, vwnd
+ real, dimension(ista_2l:iend_2u,jsta_2l:jend_2u) :: absv, div
+ real, dimension(ista_2l:iend_2u,jsta_2l:jend_2u), intent(inout) :: chi, psi
+ real, dimension(ista_2l:iend_2u,jsta_2l:jend_2u) :: ptmp, atmp, dtmp
+ real, dimension(im,2) :: glatpoles, coslpoles, upoles, vpoles, avpoles
+ real, dimension(im,jsta:jend) :: cosltemp, avtemp
+!
+ real, allocatable :: wrk1(:,:), wrk2(:,:), wrk3(:,:), cosl(:,:)
+ integer, allocatable :: ihe(:),ihw(:), ie(:),iw(:)
+!
+ integer, parameter :: npass2=2, npass3=3
+ integer I,J,ip1,im1,ii,iir,iil,jj,jjk,JMT2,imb2, npass, nn, jtem, ier
+ real rtmp, rerr, err,pval,errmax,errmin,edif
+ real r2dx,r2dy,dvdx,dudy,uavg,tph1,tphi, tx1(im+2), tx2(im+2)
+ real*8 ta,tb,tc
+!
+!***************************************************************************
+! start calchipsi here.
+!
+! loop to compute absolute vorticity from winds.
+!
+!$omp parallel do private(i,j)
+ do j=jsta_2l,jend_2u
+ do i=ista_2l,iend_2u
+ absv(i,j) = spval
+ div(i,j) = spval
+ chi(i,j) = spval
+ psi(i,j) = spval
+ enddo
+ enddo
+!
+ call exch(uwnd)
+ call exch(vwnd)
+!
+ call exch(gdlat(ista_2l,jsta_2l))
+ call exch(gdlon(ista_2l,jsta_2l))
+!
+ allocate (wrk1(ista:iend,jsta:jend), wrk2(ista:iend,jsta:jend), &
+ & wrk3(ista:iend,jsta:jend), cosl(ista_2l:iend_2u,jsta_2l:jend_2u))
+ allocate(iw(im),ie(im))
+
+ imb2 = im/2
+!$omp parallel do private(i)
+ do i=ista,iend
+ ie(i) = i+1
+ iw(i) = i-1
+ enddo
+! iw(1) = im
+! ie(im) = 1
+!
+! if(1>=jsta .and. 1<=jend)then
+! if(cos(gdlat(1,1)*dtr)= small) then
+ wrk1(i,j) = 1.0 / (erad*cosl(i,j))
+ else
+ wrk1(i,j) = 0.
+ end if
+ if(i == im .or. i == 1) then
+ wrk2(i,j) = 1.0 / ((360.+gdlon(ip1,J)-gdlon(im1,J))*dtr) !1/dlam
+ else
+ wrk2(i,j) = 1.0 / ((gdlon(ip1,J)-gdlon(im1,J))*dtr) !1/dlam
+ end if
+ enddo
+ enddo
+ call exch(cosl)
+!
+ call fullpole( cosl(ista_2l:iend_2u,jsta_2l:jend_2u),coslpoles)
+ call fullpole(gdlat(ista_2l:iend_2u,jsta_2l:jend_2u),glatpoles)
+!
+!$omp parallel do private(i,j,ii)
+ do j=jsta,jend
+ if (j == 1) then
+ if(gdlat(ista,j) > 0.) then ! count from north to south
+ do i=ista,iend
+ ii = i + imb2
+ if (ii > im) ii = ii - im
+ ! wrk3(i,j) = 1.0 / ((180.-gdlat(i,J+1)-gdlat(II,J))*dtr) !1/dphi
+ wrk3(i,j) = 1.0 / ((180.-gdlat(i,J+1)-glatpoles(ii,1))*dtr) !1/dphi
+ enddo
+ else ! count from south to north
+ do i=ista,iend
+ ii = i + imb2
+ if (ii > im) ii = ii - im
+ ! wrk3(i,j) = 1.0 / ((180.+gdlat(i,J+1)+gdlat(II,J))*dtr) !1/dphi
+ wrk3(i,j) = 1.0 / ((180.+gdlat(i,J+1)+glatpoles(ii,1))*dtr) !1/dphi
+!
+ enddo
+ end if
+ elseif (j == jm) then
+ if(gdlat(ista,j) < 0.) then ! count from north to south
+ do i=ista,iend
+ ii = i + imb2
+ if (ii > im) ii = ii - im
+ ! wrk3(i,j) = 1.0 / ((180.+gdlat(i,J-1)+gdlat(II,J))*dtr)
+ wrk3(i,j) = 1.0 / ((180.+gdlat(i,J-1)+glatpoles(ii,2))*dtr)
+ enddo
+ else ! count from south to north
+ do i=ista,iend
+ ii = i + imb2
+ if (ii > im) ii = ii - im
+ ! wrk3(i,j) = 1.0 / ((180.-gdlat(i,J-1)-gdlat(II,J))*dtr)
+ wrk3(i,j) = 1.0 / ((180.-gdlat(i,J-1)-glatpoles(ii,2))*dtr)
+ enddo
+ end if
+ else
+ do i=ista,iend
+ wrk3(i,j) = 1.0 / ((gdlat(I,J-1)-gdlat(I,J+1))*dtr) !1/dphi
+ enddo
+ endif
+ enddo
+!
+ npass = 0
+!
+ jtem = jm / 18 + 1
+!
+ call fullpole(uwnd(ista_2l:iend_2u,jsta_2l:jend_2u),upoles)
+ call fullpole(vwnd(ista_2l:iend_2u,jsta_2l:jend_2u),vpoles)
+!
+!$omp parallel do private(i,j,ip1,im1,ii,jj,tx1,tx2)
+ do j=jsta,jend
+ if(j == 1) then ! near north or south pole
+ if(gdlat(ista,j) > 0.) then ! count from north to south
+ if(cosl(ista,j) >= small) then !not a pole point
+ do i=ista,iend
+ ip1 = ie(i)
+ 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
+ upoles(ii,1)==spval .or. uwnd(i,j+1)==spval) cycle
+ absv(i,j) = ((vwnd(ip1,j)-vwnd(im1,j))*wrk2(i,j) &
+ & + (upoles(ii,1)*coslpoles(ii,1) &
+ & + uwnd(i,j+1)*cosl(i,j+1))*wrk3(i,j)) * wrk1(i,j) &
+ & + f(i,j)
+ div(i,j) = ((uwnd(ip1,j)-uwnd(im1,j))*wrk2(i,j) &
+ & - (vpoles(ii,1)*coslpoles(ii,1) &
+ & + vwnd(i,j+1)*cosl(i,j+1))*wrk3(i,j)) * wrk1(i,j)
+ enddo
+ else !pole point, compute at j=2
+ jj = 2
+ do i=ista,iend
+ 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) &
+ & + f(i,jj)
+ div(i,j) = ((uwnd(ip1,jj)-uwnd(im1,jj))*wrk2(i,jj) &
+ & + (vwnd(i,j)*cosl(i,j) &
+ - vwnd(i,jj+1)*cosl(i,jj+1))*wrk3(i,jj)) * wrk1(i,jj)
+ enddo
+ endif
+ else
+ if(cosl(ista,j) >= small) then !not a pole point
+ do i=ista,iend
+ ip1 = ie(i)
+ 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
+ upoles(ii,1)==spval .or. uwnd(i,j+1)==spval) cycle
+ absv(i,j) = ((vwnd(ip1,j)-vwnd(im1,j))*wrk2(i,j) &
+ & - (upoles(ii,1)*coslpoles(ii,1) &
+ & + uwnd(i,j+1)*cosl(i,j+1))*wrk3(i,j)) * wrk1(i,j) &
+ & + f(i,j)
+ div(i,j) = ((uwnd(ip1,j)-uwnd(im1,j))*wrk2(i,j) &
+ & + (vpoles(ii,1)*coslpoles(ii,1) &
+ & + vwnd(i,j+1)*cosl(i,j+1))*wrk3(i,j)) * wrk1(i,j)
+ enddo
+ else !pole point, compute at j=2
+ jj = 2
+ do i=ista,iend
+ 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) &
+ & + f(i,jj)
+ div(i,j) = ((uwnd(ip1,jj)-uwnd(im1,jj))*wrk2(i,jj) &
+ & - (vwnd(i,j)*cosl(i,j) &
+ - vwnd(i,jj+1)*cosl(i,jj+1))*wrk3(i,jj)) * wrk1(i,jj)
+ enddo
+ endif
+ endif
+ else if(j == jm) then ! near north or south pole
+ if(gdlat(ista,j) < 0.) then ! count from north to south
+ if(cosl(ista,j) >= small) then !not a pole point
+ do i=ista,iend
+ ip1 = ie(i)
+ 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
+ uwnd(i,j-1)==spval .or. upoles(ii,2)==spval) cycle
+ absv(i,j) = ((vwnd(ip1,j)-vwnd(im1,j))*wrk2(i,j) &
+ & - (uwnd(i,j-1)*cosl(i,j-1) &
+ & + upoles(ii,2)*coslpoles(ii,2))*wrk3(i,j)) * wrk1(i,j) &
+ & + f(i,j)
+ div(i,j) = ((uwnd(ip1,j)-uwnd(im1,j))*wrk2(i,j) &
+ & + (vwnd(i,j-1)*cosl(i,j-1) &
+ & + vpoles(ii,2)*coslpoles(ii,2))*wrk3(i,j)) * wrk1(i,j)
+ enddo
+ else !pole point,compute at jm-1
+ jj = jm-1
+ do i=ista,iend
+ 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) &
+ & + f(i,jj)
+ div(i,j) = ((uwnd(ip1,jj)-uwnd(im1,jj))*wrk2(i,jj) &
+ & + (vwnd(i,jj-1)*cosl(i,jj-1) &
+ & - vwnd(i,j)*cosl(i,j))*wrk3(i,jj)) * wrk1(i,jj)
+ enddo
+ endif
+ else
+ if(cosl(ista,j) >= small) then !not a pole point
+ do i=ista,iend
+ ip1 = ie(i)
+ 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
+ uwnd(i,j-1)==spval .or. upoles(ii,2)==spval) cycle
+ absv(i,j) = ((vwnd(ip1,j)-vwnd(im1,j))*wrk2(i,j) &
+ & + (uwnd(i,j-1)*cosl(i,j-1) &
+ & + upoles(ii,2)*coslpoles(ii,2))*wrk3(i,j)) * wrk1(i,j) &
+ & + f(i,j)
+ div(i,j) = ((uwnd(ip1,j)-uwnd(im1,j))*wrk2(i,j) &
+ & - (vwnd(i,j-1)*cosl(i,j-1) &
+ & + vpoles(ii,2)*coslpoles(ii,2))*wrk3(i,j)) * wrk1(i,j)
+ enddo
+ else !pole point,compute at jm-1
+ jj = jm-1
+ do i=ista,iend
+ 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) &
+ & + f(i,jj)
+ div(i,j) = ((uwnd(ip1,jj)-uwnd(im1,jj))*wrk2(i,jj) &
+ & - (vwnd(i,jj-1)*cosl(i,jj-1) &
+ & - vwnd(i,j)*cosl(i,j))*wrk3(i,jj)) * wrk1(i,jj)
+ enddo
+ endif
+ endif
+ else
+ do i=ista,iend
+ 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) &
+ + f(i,j)
+ div(i,j) = ((uwnd(ip1,j)-uwnd(im1,j))*wrk2(i,j) &
+ & + (vwnd(i,j-1)*cosl(i,j-1) &
+ - vwnd(i,j+1)*cosl(i,j+1))*wrk3(i,j)) * wrk1(i,j)
+ enddo
+ end if
+ if (npass > 0) then
+ do i=ista,iend
+ tx1(i) = absv(i,j)
+ enddo
+ do nn=1,npass
+ do i=ista,iend
+ tx2(i+1) = tx1(i)
+ enddo
+ tx2(1) = tx2(im+1)
+ tx2(im+2) = tx2(2)
+ do i=2,im+1
+ tx1(i-1) = 0.25 * (tx2(i-1) + tx2(i+1)) + 0.5*tx2(i)
+ enddo
+ enddo
+ do i=ista,iend
+ absv(i,j) = tx1(i)
+ enddo
+ endif
+ end do ! end of j loop
+
+! deallocate (wrk1, wrk2, wrk3, cosl)
+! gfs use lon avg as one scaler value for pole point
+!
+ ! call poleavg(im,jm,jsta,jend,small,cosl(1,jsta),spval,absv(1,jsta))
+!
+ call exch(absv(ista_2l:iend_2u,jsta_2l:jend_2u))
+ call fullpole(absv(ista_2l:iend_2u,jsta_2l:jend_2u),avpoles)
+!
+ cosltemp=spval
+ if(jsta== 1) cosltemp(1:im, 1)=coslpoles(1:im,1)
+ if(jend==jm) cosltemp(1:im,jm)=coslpoles(1:im,2)
+ avtemp=spval
+ if(jsta== 1) avtemp(1:im, 1)=avpoles(1:im,1)
+ if(jend==jm) avtemp(1:im,jm)=avpoles(1:im,2)
+!
+ call poleavg(im,jm,jsta,jend,small,cosltemp(1,jsta),spval,avtemp(1,jsta))
+!
+ if(jsta== 1) absv(ista:iend, 1)=avtemp(ista:iend, 1)
+ if(jend==jm) absv(ista:iend,jm)=avtemp(ista:iend,jm)
+!
+! deallocate (wrk1, wrk11, wrk2, wrk3, cosl, iw, ie)
+!
+ call exch(absv(ista_2l:iend_2u,jsta_2l:jend_2u))
+ call exch(div(ista_2l:iend_2u,jsta_2l:jend_2u))
+!
+! store absv and div factors before poisson loops
+!$omp parallel do private(i,j)
+ do j=jsta,jend
+ do i=ista,iend
+ atmp(i,j)=0.25*(absv(i,j)-f(i,j))/(wrk2(i,j)*wrk1(i,j)*wrk3(i,j)*wrk1(i,j)*cosl(i,j)*4.)
+ dtmp(i,j)=0.25*div(i,j)/(wrk2(i,j)*wrk1(i,j)*wrk3(i,j)*wrk1(i,j)*cosl(i,j)*4.)
+ enddo
+ enddo
+!
+! poisson solver for psi and chi
+ psi=0.
+! ta=mpi_wtime()
+ do jjk=1,1000
+ do jj=1,300
+ call exch(psi(ista_2l:iend_2u,jsta_2l:jend_2u))
+ ptmp=psi
+ err=0
+ do j=jsta,jend
+ do i=ista,iend
+ if (j>1 .and. j1 .and. j Computes snow solid-liquid-ratio slr using the Steenburgh 2024 algorithm.
!>
!> Obtained the code and data from U of Utah Jim Steenburgh,
@@ -4718,4 +5191,3 @@ end subroutine calslr_uutah2
!-------------------------------------------------------------------------------------
!
end module upp_physics
-
diff --git a/tests/logs/rt.log.HERA b/tests/logs/rt.log.HERA
index 46861970f..c87b497dd 100644
--- a/tests/logs/rt.log.HERA
+++ b/tests/logs/rt.log.HERA
@@ -1,75 +1,69 @@
===== Start of UPP Regression Testing Log =====
UPP Hash Tested:
-6f373c84a5e96eb5596c816cf00f0771cd43d8af
+d29834b59c0e0978e4b21da2c275453d35466eca
Submodule hashes:
-179cae1dd84401cf25d250bd9102e66560a9d328 sorc/libIFI.fd
-529f870d33b65c3b6c1aa3c3236b94efc3bd336d sorc/ncep_post.fd/post_gtg.fd
-Run directory: /scratch2/NAGAPE/epic/Gillian.Petro/RTs/upp-rts/1104/ci/rundir/upp-HERA
+Run directory: /scratch2/NAGAPE/epic/Fernando.Andrade-maldonado/regression-tests/upp/1072/UPP/ci/rundir/upp-HERA
Baseline directory: /scratch2/NAGAPE/epic/UPP/test_suite
-Total runtime: 00h:13m:56s
-Test Date: 20241223 15:19:18
+Total runtime: 00h:10m:45s
+Test Date: 20250108 20:23:33
Summary Results:
-12/23 15:08:58Z -fv3gefs pe test: your new post executable generates bit-identical geaer.t00z.master.grb2f060 as the trunk
-12/23 15:09:17Z -fv3hafs test: your new post executable generates bit-identical HURPRS09.tm00 as the trunk
-12/23 15:09:34Z -fv3hafs pe test: your new post executable generates bit-identical HURPRS09.tm00 as the trunk
-12/23 15:09:37Z -rap test: your new post executable generates bit-identical WRFPRS.GrbF16 as the trunk
-12/23 15:09:38Z -rap test: your new post executable generates bit-identical WRFNAT.GrbF16 as the trunk
-12/23 15:09:53Z -fv3gefs test: your new post executable generates bit-identical geaer.t00z.master.grb2f060 as the trunk
-12/23 15:10:09Z -hrrr pe test: your new post executable generates bit-identical WRFTWO.GrbF04 as the trunk
-12/23 15:10:11Z -hrrr pe test: your new post executable generates bit-identical WRFPRS.GrbF04 as the trunk
-12/23 15:10:12Z -hrrr pe test: your new post executable generates bit-identical WRFNAT.GrbF04 as the trunk
-12/23 15:10:17Z -hrrr test: your new post executable generates bit-identical WRFTWO.GrbF04 as the trunk
-12/23 15:10:18Z -hrrr test: your new post executable generates bit-identical WRFPRS.GrbF04 as the trunk
-12/23 15:10:19Z -hrrr test: your new post executable generates bit-identical WRFNAT.GrbF04 as the trunk
-12/23 15:10:31Z -rap pe test: your new post executable did generate changed results in WRFPRS.GrbF16
-12/23 15:10:32Z -rap pe test: your new post executable generates bit-identical WRFNAT.GrbF16 as the trunk
-12/23 15:10:47Z -nmmb pe test: your new post executable generates bit-identical BGDAWP03.tm00.Grib2 as the trunk
-12/23 15:10:49Z -nmmb pe test: your new post executable generates bit-identical BGRD3D03.tm00.Grib2 as the trunk
-12/23 15:10:49Z -nmmb pe test: your new post executable generates bit-identical BGRDSF03.tm00.Grib2 as the trunk
-12/23 15:10:50Z -nmmb test: your new post executable generates bit-identical BGDAWP03.tm00.Grib2 as the trunk
-12/23 15:10:51Z -nmmb test: your new post executable generates bit-identical BGRD3D03.tm00.Grib2 as the trunk
-12/23 15:10:52Z -nmmb test: your new post executable generates bit-identical BGRDSF03.tm00.Grib2 as the trunk
-12/23 15:10:55Z -fv3r test: your new post executable generates bit-identical PRSLEV10.tm00 as the trunk
-12/23 15:11:09Z -fv3r pe test: your new post executable generates bit-identical PRSLEV10.tm00 as the trunk
-12/23 15:12:27Z -rtma pe test: your new post executable did not generate bit-identical NATLEV00.tm00 as the trunk
-12/23 15:12:30Z -rtma pe test: your new post executable generates bit-identical PRSLEV00.tm00 as the trunk
-12/23 15:12:30Z -rtma pe test: your new post executable generates bit-identical IFIFIP00.tm00 as the trunk
-12/23 15:13:23Z -fv3r test: your new post executable did not generate bit-identical NATLEV10.tm00 as the trunk
-12/23 15:13:28Z -rtma test: your new post executable did not generate bit-identical NATLEV00.tm00 as the trunk
-12/23 15:13:32Z -rtma test: your new post executable generates bit-identical PRSLEV00.tm00 as the trunk
-12/23 15:13:32Z -rtma test: your new post executable generates bit-identical IFIFIP00.tm00 as the trunk
-12/23 15:13:39Z -fv3r pe test: your new post executable did not generate bit-identical NATLEV10.tm00 as the trunk
-12/23 15:18:20Z -fv3gfs test: your new post executable did not generate bit-identical gfs.t00z.master.grb2f006 as the trunk
-12/23 15:18:23Z -fv3gfs test: your new post executable generates bit-identical gfs.t00z.sfluxgrbf006.grib2 as the trunk
-12/23 15:18:24Z -fv3gfs test: your new post executable generates bit-identical gfs.t00z.special.grb2f006 as the trunk
-12/23 15:19:05Z -fv3gfs pe test: your new post executable did not generate bit-identical gfs.t00z.master.grb2f006 as the trunk
-12/23 15:19:08Z -fv3gfs pe test: your new post executable generates bit-identical gfs.t00z.sfluxgrbf006.grib2 as the trunk
-12/23 15:19:08Z -fv3gfs pe test: your new post executable generates bit-identical gfs.t00z.special.grb2f006 as the trunk
-12/23 15:10:53Z -Runtime: nmmb_test 00:00:59 -- baseline 00:01:00
-12/23 15:10:54Z -Runtime: nmmb_pe_test 00:01:07 -- baseline 00:01:00
-12/23 15:10:54Z -Runtime: fv3gefs_test 00:00:26 -- baseline 00:40:00
-12/23 15:10:54Z -Runtime: fv3gefs_pe_test 00:00:30 -- baseline 00:40:00
-12/23 15:10:54Z -Runtime: rap_test 00:01:02 -- baseline 00:02:00
-12/23 15:10:55Z -Runtime: rap_pe_test 00:01:13 -- baseline 00:02:00
-12/23 15:10:55Z -Runtime: hrrr_test 00:02:26 -- baseline 00:02:00
-12/23 15:10:56Z -Runtime: hrrr_pe_test 00:01:57 -- baseline 00:02:00
-12/23 15:18:31Z -Runtime: fv3gfs_test 00:09:01 -- baseline 00:15:00
-12/23 15:19:16Z -Runtime: fv3gfs_pe_test 00:09:45 -- baseline 00:15:00
-12/23 15:19:17Z -Runtime: fv3r_test 00:04:00 -- baseline 00:03:00
-12/23 15:19:17Z -Runtime: fv3r_pe_test 00:04:00 -- baseline 00:03:00
-12/23 15:19:17Z -Runtime: fv3hafs_test 00:00:34 -- baseline 00:03:00
-12/23 15:19:18Z -Runtime: fv3hafs_pe_test 00:00:32 -- baseline 00:03:00
-12/23 15:19:18Z -Runtime: rtma_test 00:04:09 -- baseline 00:03:00
-12/23 15:19:18Z -Runtime: rtma_test_pe_test 00:04:06 -- baseline
-There are changes in results for case fv3r_pe_test in NATLEV10.tm00
-There are changes in results for case fv3r in NATLEV10.tm00
-There are changes in results for case gfs_pe_test in gfs.t00z.master.grb2f006
-There are changes in results for case gfs in gfs.t00z.master.grb2f006
-There are changes in results for case rtma_pe_test in NATLEV00.tm00
-There are changes in results for case rtma in NATLEV00.tm00
-Refer to .diff files in rundir: /scratch2/NAGAPE/epic/Gillian.Petro/RTs/upp-rts/1104/ci/rundir/upp-HERA for details on differences in results for each case.
+01/08 20:16:09Z -fv3hafs test: your new post executable generates bit-identical HURPRS09.tm00 as the trunk
+01/08 20:16:12Z -fv3hafs pe test: your new post executable generates bit-identical HURPRS09.tm00 as the trunk
+01/08 20:16:30Z -fv3gefs pe test: your new post executable generates bit-identical geaer.t00z.master.grb2f060 as the trunk
+01/08 20:16:35Z -rap test: your new post executable generates bit-identical WRFPRS.GrbF16 as the trunk
+01/08 20:16:36Z -rap test: your new post executable generates bit-identical WRFNAT.GrbF16 as the trunk
+01/08 20:16:53Z -rap pe test: your new post executable did generate changed results in WRFPRS.GrbF16
+01/08 20:16:54Z -fv3gefs test: your new post executable generates bit-identical geaer.t00z.master.grb2f060 as the trunk
+01/08 20:16:54Z -rap pe test: your new post executable generates bit-identical WRFNAT.GrbF16 as the trunk
+01/08 20:16:54Z -nmmb pe test: your new post executable generates bit-identical BGDAWP03.tm00.Grib2 as the trunk
+01/08 20:16:56Z -nmmb pe test: your new post executable generates bit-identical BGRD3D03.tm00.Grib2 as the trunk
+01/08 20:16:57Z -nmmb pe test: your new post executable generates bit-identical BGRDSF03.tm00.Grib2 as the trunk
+01/08 20:16:59Z -nmmb test: your new post executable generates bit-identical BGDAWP03.tm00.Grib2 as the trunk
+01/08 20:17:01Z -nmmb test: your new post executable generates bit-identical BGRD3D03.tm00.Grib2 as the trunk
+01/08 20:17:02Z -nmmb test: your new post executable generates bit-identical BGRDSF03.tm00.Grib2 as the trunk
+01/08 20:17:14Z -fv3r test: your new post executable generates bit-identical PRSLEV10.tm00 as the trunk
+01/08 20:17:16Z -fv3r pe test: your new post executable generates bit-identical PRSLEV10.tm00 as the trunk
+01/08 20:17:19Z -fv3r test: your new post executable generates bit-identical NATLEV10.tm00 as the trunk
+01/08 20:17:20Z -fv3r pe test: your new post executable generates bit-identical NATLEV10.tm00 as the trunk
+01/08 20:17:22Z -rtma pe test: your new post executable generates bit-identical NATLEV00.tm00 as the trunk
+01/08 20:17:24Z -rtma pe test: your new post executable generates bit-identical PRSLEV00.tm00 as the trunk
+01/08 20:17:25Z -rtma pe test: your new post executable generates bit-identical IFIFIP00.tm00 as the trunk
+01/08 20:17:25Z -rtma test: your new post executable generates bit-identical NATLEV00.tm00 as the trunk
+01/08 20:17:27Z -rtma test: your new post executable generates bit-identical PRSLEV00.tm00 as the trunk
+01/08 20:17:28Z -rtma test: your new post executable generates bit-identical IFIFIP00.tm00 as the trunk
+01/08 20:17:45Z -hrrr pe test: your new post executable generates bit-identical WRFTWO.GrbF04 as the trunk
+01/08 20:17:46Z -hrrr pe test: your new post executable generates bit-identical WRFPRS.GrbF04 as the trunk
+01/08 20:17:48Z -hrrr pe test: your new post executable generates bit-identical WRFNAT.GrbF04 as the trunk
+01/08 20:18:10Z -hrrr test: your new post executable generates bit-identical WRFTWO.GrbF04 as the trunk
+01/08 20:18:11Z -hrrr test: your new post executable generates bit-identical WRFPRS.GrbF04 as the trunk
+01/08 20:18:12Z -hrrr test: your new post executable generates bit-identical WRFNAT.GrbF04 as the trunk
+01/08 20:22:43Z -fv3gfs test: your new post executable generates bit-identical gfs.t00z.master.grb2f006 as the trunk
+01/08 20:22:47Z -fv3gfs test: your new post executable generates bit-identical gfs.t00z.sfluxgrbf006.grib2 as the trunk
+01/08 20:22:47Z -fv3gfs test: your new post executable generates bit-identical gfs.t00z.special.grb2f006 as the trunk
+01/08 20:23:26Z -fv3gfs pe test: your new post executable generates bit-identical gfs.t00z.master.grb2f006 as the trunk
+01/08 20:23:30Z -fv3gfs pe test: your new post executable generates bit-identical gfs.t00z.sfluxgrbf006.grib2 as the trunk
+01/08 20:23:30Z -fv3gfs pe test: your new post executable generates bit-identical gfs.t00z.special.grb2f006 as the trunk
+01/08 20:17:10Z -Runtime: nmmb_test 00:01:36 -- baseline 00:01:00
+01/08 20:17:11Z -Runtime: nmmb_pe_test 00:01:31 -- baseline 00:01:00
+01/08 20:17:11Z -Runtime: fv3gefs_test 00:01:28 -- baseline 00:40:00
+01/08 20:17:11Z -Runtime: fv3gefs_pe_test 00:01:04 -- baseline 00:40:00
+01/08 20:17:12Z -Runtime: rap_test 00:01:10 -- baseline 00:02:00
+01/08 20:17:12Z -Runtime: rap_pe_test 00:01:28 -- baseline 00:02:00
+01/08 20:18:13Z -Runtime: hrrr_test 00:02:46 -- baseline 00:02:00
+01/08 20:18:13Z -Runtime: hrrr_pe_test 00:02:22 -- baseline 00:02:00
+01/08 20:23:00Z -Runtime: fv3gfs_test 00:07:21 -- baseline 00:15:00
+01/08 20:23:31Z -Runtime: fv3gfs_pe_test 00:08:04 -- baseline 00:15:00
+01/08 20:23:31Z -Runtime: fv3r_test 00:01:53 -- baseline 00:03:00
+01/08 20:23:32Z -Runtime: fv3r_pe_test 00:01:54 -- baseline 00:03:00
+01/08 20:23:32Z -Runtime: fv3hafs_test 00:00:43 -- baseline 00:03:00
+01/08 20:23:32Z -Runtime: fv3hafs_pe_test 00:00:46 -- baseline 00:03:00
+01/08 20:23:33Z -Runtime: rtma_test 00:02:02 -- baseline 00:03:00
+01/08 20:23:33Z -Runtime: rtma_test_pe_test 00:01:59 -- baseline
+No changes in test results detected.
===== End of UPP Regression Testing Log =====
diff --git a/tests/logs/rt.log.HERCULES b/tests/logs/rt.log.HERCULES
index 6bb869605..b9e2fdd38 100644
--- a/tests/logs/rt.log.HERCULES
+++ b/tests/logs/rt.log.HERCULES
@@ -1,75 +1,69 @@
===== Start of UPP Regression Testing Log =====
UPP Hash Tested:
-6f373c84a5e96eb5596c816cf00f0771cd43d8af
+d29834b59c0e0978e4b21da2c275453d35466eca
Submodule hashes:
-179cae1dd84401cf25d250bd9102e66560a9d328 sorc/libIFI.fd
-529f870d33b65c3b6c1aa3c3236b94efc3bd336d sorc/ncep_post.fd/post_gtg.fd
-Run directory: /work/noaa/epic/gpetro/hercules/RTs/upp-rts/1104/ci/rundir/upp-HERCULES
+Run directory: /work/noaa/epic/gpetro/hercules/RTs/upp-rts/1072/ci/rundir/upp-HERCULES
Baseline directory: /work/noaa/epic/UPP
-Total runtime: 00h:14m:52s
-Test Date: 20241223 09:20:17
+Total runtime: 00h:11m:22s
+Test Date: 20250108 14:13:00
Summary Results:
-12/23 15:08:36Z -nmmb pe test: your new post executable generates bit-identical BGDAWP03.tm00.Grib2 as the trunk
-12/23 15:08:37Z -nmmb pe test: your new post executable generates bit-identical BGRD3D03.tm00.Grib2 as the trunk
-12/23 15:08:37Z -nmmb pe test: your new post executable generates bit-identical BGRDSF03.tm00.Grib2 as the trunk
-12/23 15:08:42Z -rap pe test: your new post executable did generate changed results in WRFPRS.GrbF16
-12/23 15:08:42Z -rap pe test: your new post executable generates bit-identical WRFNAT.GrbF16 as the trunk
-12/23 15:08:49Z -nmmb test: your new post executable generates bit-identical BGDAWP03.tm00.Grib2 as the trunk
-12/23 15:08:50Z -nmmb test: your new post executable generates bit-identical BGRD3D03.tm00.Grib2 as the trunk
-12/23 15:08:50Z -nmmb test: your new post executable generates bit-identical BGRDSF03.tm00.Grib2 as the trunk
-12/23 15:08:59Z -fv3gefs test: your new post executable generates bit-identical geaer.t00z.master.grb2f060 as the trunk
-12/23 15:09:02Z -fv3gefs pe test: your new post executable generates bit-identical geaer.t00z.master.grb2f060 as the trunk
-12/23 15:09:08Z -fv3hafs pe test: your new post executable generates bit-identical HURPRS09.tm00 as the trunk
-12/23 15:09:08Z -fv3hafs test: your new post executable generates bit-identical HURPRS09.tm00 as the trunk
-12/23 15:09:12Z -hrrr pe test: your new post executable generates bit-identical WRFTWO.GrbF04 as the trunk
-12/23 15:09:13Z -hrrr pe test: your new post executable generates bit-identical WRFPRS.GrbF04 as the trunk
-12/23 15:09:14Z -hrrr pe test: your new post executable generates bit-identical WRFNAT.GrbF04 as the trunk
-12/23 15:09:32Z -rap test: your new post executable generates bit-identical WRFPRS.GrbF16 as the trunk
-12/23 15:09:32Z -rap test: your new post executable generates bit-identical WRFNAT.GrbF16 as the trunk
-12/23 15:09:34Z -fv3r pe test: your new post executable generates bit-identical PRSLEV10.tm00 as the trunk
-12/23 15:10:20Z -fv3r test: your new post executable generates bit-identical PRSLEV10.tm00 as the trunk
-12/23 15:11:40Z -fv3r pe test: your new post executable did not generate bit-identical NATLEV10.tm00 as the trunk
-12/23 15:12:37Z -fv3r test: your new post executable did not generate bit-identical NATLEV10.tm00 as the trunk
-12/23 15:13:00Z -rtma test: your new post executable did not generate bit-identical NATLEV00.tm00 as the trunk
-12/23 15:13:02Z -rtma test: your new post executable generates bit-identical PRSLEV00.tm00 as the trunk
-12/23 15:13:02Z -rtma test: your new post executable generates bit-identical IFIFIP00.tm00 as the trunk
-12/23 15:13:02Z -rtma pe test: your new post executable did not generate bit-identical NATLEV00.tm00 as the trunk
-12/23 15:13:04Z -rtma pe test: your new post executable generates bit-identical PRSLEV00.tm00 as the trunk
-12/23 15:13:04Z -rtma pe test: your new post executable generates bit-identical IFIFIP00.tm00 as the trunk
-12/23 15:13:28Z -fv3gfs pe test: your new post executable did not generate bit-identical gfs.t00z.master.grb2f006 as the trunk
-12/23 15:13:29Z -fv3gfs pe test: your new post executable generates bit-identical gfs.t00z.sfluxgrbf006.grib2 as the trunk
-12/23 15:13:29Z -fv3gfs pe test: your new post executable generates bit-identical gfs.t00z.special.grb2f006 as the trunk
-12/23 15:16:56Z -hrrr test: your new post executable generates bit-identical WRFTWO.GrbF04 as the trunk
-12/23 15:16:56Z -hrrr test: your new post executable generates bit-identical WRFPRS.GrbF04 as the trunk
-12/23 15:16:58Z -hrrr test: your new post executable generates bit-identical WRFNAT.GrbF04 as the trunk
-12/23 15:20:06Z -fv3gfs test: your new post executable did not generate bit-identical gfs.t00z.master.grb2f006 as the trunk
-12/23 15:20:07Z -fv3gfs test: your new post executable generates bit-identical gfs.t00z.sfluxgrbf006.grib2 as the trunk
-12/23 15:20:07Z -fv3gfs test: your new post executable generates bit-identical gfs.t00z.special.grb2f006 as the trunk
-12/23 15:09:01Z -Runtime: nmmb_test 00:01:18 -- baseline 00:03:00
-12/23 15:09:01Z -Runtime: nmmb_pe_test 00:01:05 -- baseline 00:03:00
-12/23 15:09:01Z -Runtime: fv3gefs_test 00:00:18 -- baseline 01:20:00
-12/23 15:09:16Z -Runtime: fv3gefs_pe_test 00:00:21 -- baseline 01:20:00
-12/23 15:09:46Z -Runtime: rap_test 00:00:51 -- baseline 00:02:00
-12/23 15:09:46Z -Runtime: rap_pe_test 00:01:09 -- baseline 00:02:00
-12/23 15:17:01Z -Runtime: hrrr_test 00:08:17 -- baseline 00:02:00
-12/23 15:17:01Z -Runtime: hrrr_pe_test 00:01:41 -- baseline 00:02:00
-12/23 15:20:17Z -Runtime: fv3gfs_test 00:12:34 -- baseline 00:18:00
-12/23 15:20:17Z -Runtime: fv3gfs_pe_test 00:05:56 -- baseline 00:18:00
-12/23 15:20:17Z -Runtime: fv3r_test 00:05:04 -- baseline 00:03:00
-12/23 15:20:17Z -Runtime: fv3r_pe_test 00:04:07 -- baseline 00:03:00
-12/23 15:20:17Z -Runtime: fv3hafs_test 00:00:27 -- baseline 00:00:40
-12/23 15:20:17Z -Runtime: fv3hafs_pe_test 00:00:27 -- baseline 00:00:40
-12/23 15:20:17Z -Runtime: rtma_test 00:04:21 -- baseline 00:04:00
-12/23 15:20:17Z -Runtime: rtma_pe_test 00:04:23 -- baseline 00:04:00
-There are changes in results for case rtma_pe_test in NATLEV00.tm00
-There are changes in results for case gfs in gfs.t00z.master.grb2f006
-There are changes in results for case fv3r in NATLEV10.tm00
-There are changes in results for case rtma in NATLEV00.tm00
-There are changes in results for case fv3r_pe_test in NATLEV10.tm00
-There are changes in results for case gfs_pe_test in gfs.t00z.master.grb2f006
-Refer to .diff files in rundir: /work/noaa/epic/gpetro/hercules/RTs/upp-rts/1104/ci/rundir/upp-HERCULES for details on differences in results for each case.
+01/08 20:04:01Z -fv3gefs test: your new post executable generates bit-identical geaer.t00z.master.grb2f060 as the trunk
+01/08 20:04:03Z -fv3gefs pe test: your new post executable generates bit-identical geaer.t00z.master.grb2f060 as the trunk
+01/08 20:04:11Z -fv3hafs pe test: your new post executable generates bit-identical HURPRS09.tm00 as the trunk
+01/08 20:04:11Z -fv3hafs test: your new post executable generates bit-identical HURPRS09.tm00 as the trunk
+01/08 20:04:37Z -rap test: your new post executable generates bit-identical WRFPRS.GrbF16 as the trunk
+01/08 20:04:38Z -rap test: your new post executable generates bit-identical WRFNAT.GrbF16 as the trunk
+01/08 20:04:38Z -rap pe test: your new post executable did generate changed results in WRFPRS.GrbF16
+01/08 20:04:39Z -rap pe test: your new post executable generates bit-identical WRFNAT.GrbF16 as the trunk
+01/08 20:04:43Z -nmmb pe test: your new post executable generates bit-identical BGDAWP03.tm00.Grib2 as the trunk
+01/08 20:04:44Z -nmmb pe test: your new post executable generates bit-identical BGRD3D03.tm00.Grib2 as the trunk
+01/08 20:04:44Z -nmmb pe test: your new post executable generates bit-identical BGRDSF03.tm00.Grib2 as the trunk
+01/08 20:04:51Z -nmmb test: your new post executable generates bit-identical BGDAWP03.tm00.Grib2 as the trunk
+01/08 20:04:52Z -nmmb test: your new post executable generates bit-identical BGRD3D03.tm00.Grib2 as the trunk
+01/08 20:04:52Z -nmmb test: your new post executable generates bit-identical BGRDSF03.tm00.Grib2 as the trunk
+01/08 20:05:21Z -hrrr pe test: your new post executable generates bit-identical WRFTWO.GrbF04 as the trunk
+01/08 20:05:22Z -hrrr pe test: your new post executable generates bit-identical WRFPRS.GrbF04 as the trunk
+01/08 20:05:23Z -fv3r test: your new post executable generates bit-identical PRSLEV10.tm00 as the trunk
+01/08 20:05:23Z -hrrr pe test: your new post executable generates bit-identical WRFNAT.GrbF04 as the trunk
+01/08 20:05:26Z -fv3r test: your new post executable generates bit-identical NATLEV10.tm00 as the trunk
+01/08 20:05:50Z -fv3r pe test: your new post executable generates bit-identical PRSLEV10.tm00 as the trunk
+01/08 20:05:53Z -fv3r pe test: your new post executable generates bit-identical NATLEV10.tm00 as the trunk
+01/08 20:06:00Z -rtma test: your new post executable generates bit-identical NATLEV00.tm00 as the trunk
+01/08 20:06:00Z -rtma pe test: your new post executable generates bit-identical NATLEV00.tm00 as the trunk
+01/08 20:06:01Z -rtma test: your new post executable generates bit-identical PRSLEV00.tm00 as the trunk
+01/08 20:06:01Z -rtma test: your new post executable generates bit-identical IFIFIP00.tm00 as the trunk
+01/08 20:06:02Z -rtma pe test: your new post executable generates bit-identical PRSLEV00.tm00 as the trunk
+01/08 20:06:02Z -rtma pe test: your new post executable generates bit-identical IFIFIP00.tm00 as the trunk
+01/08 20:08:09Z -hrrr test: your new post executable generates bit-identical WRFTWO.GrbF04 as the trunk
+01/08 20:08:10Z -hrrr test: your new post executable generates bit-identical WRFPRS.GrbF04 as the trunk
+01/08 20:08:11Z -hrrr test: your new post executable generates bit-identical WRFNAT.GrbF04 as the trunk
+01/08 20:10:08Z -fv3gfs pe test: your new post executable generates bit-identical gfs.t00z.master.grb2f006 as the trunk
+01/08 20:10:09Z -fv3gfs pe test: your new post executable generates bit-identical gfs.t00z.sfluxgrbf006.grib2 as the trunk
+01/08 20:10:09Z -fv3gfs pe test: your new post executable generates bit-identical gfs.t00z.special.grb2f006 as the trunk
+01/08 20:12:51Z -fv3gfs test: your new post executable generates bit-identical gfs.t00z.master.grb2f006 as the trunk
+01/08 20:12:51Z -fv3gfs test: your new post executable generates bit-identical gfs.t00z.sfluxgrbf006.grib2 as the trunk
+01/08 20:12:51Z -fv3gfs test: your new post executable generates bit-identical gfs.t00z.special.grb2f006 as the trunk
+01/08 20:04:58Z -Runtime: nmmb_test 00:01:08 -- baseline 00:03:00
+01/08 20:04:58Z -Runtime: nmmb_pe_test 00:01:01 -- baseline 00:03:00
+01/08 20:04:59Z -Runtime: fv3gefs_test 00:00:17 -- baseline 01:20:00
+01/08 20:04:59Z -Runtime: fv3gefs_pe_test 00:00:19 -- baseline 01:20:00
+01/08 20:04:59Z -Runtime: rap_test 00:00:54 -- baseline 00:02:00
+01/08 20:04:59Z -Runtime: rap_pe_test 00:00:55 -- baseline 00:02:00
+01/08 20:08:14Z -Runtime: hrrr_test 00:04:27 -- baseline 00:02:00
+01/08 20:08:14Z -Runtime: hrrr_pe_test 00:01:39 -- baseline 00:02:00
+01/08 20:12:59Z -Runtime: fv3gfs_test 00:09:07 -- baseline 00:18:00
+01/08 20:12:59Z -Runtime: fv3gfs_pe_test 00:06:25 -- baseline 00:18:00
+01/08 20:12:59Z -Runtime: fv3r_test 00:01:42 -- baseline 00:03:00
+01/08 20:12:59Z -Runtime: fv3r_pe_test 00:02:09 -- baseline 00:03:00
+01/08 20:12:59Z -Runtime: fv3hafs_test 00:00:27 -- baseline 00:00:40
+01/08 20:12:59Z -Runtime: fv3hafs_pe_test 00:00:27 -- baseline 00:00:40
+01/08 20:12:59Z -Runtime: rtma_test 00:02:17 -- baseline 00:04:00
+01/08 20:13:00Z -Runtime: rtma_pe_test 00:02:18 -- baseline 00:04:00
+No changes in test results detected.
===== End of UPP Regression Testing Log =====
diff --git a/tests/logs/rt.log.ORION b/tests/logs/rt.log.ORION
index e1d2d6038..d9feabcd2 100644
--- a/tests/logs/rt.log.ORION
+++ b/tests/logs/rt.log.ORION
@@ -1,75 +1,69 @@
===== Start of UPP Regression Testing Log =====
UPP Hash Tested:
-6f373c84a5e96eb5596c816cf00f0771cd43d8af
+d29834b59c0e0978e4b21da2c275453d35466eca
Submodule hashes:
-179cae1dd84401cf25d250bd9102e66560a9d328 sorc/libIFI.fd
-529f870d33b65c3b6c1aa3c3236b94efc3bd336d sorc/ncep_post.fd/post_gtg.fd
-Run directory: /work/noaa/epic/gpetro/orion/RTs/upp-rts/1104/ci/rundir/upp-ORION
+Run directory: /work/noaa/epic/gpetro/orion/RTs/upp-rts/1072/ci/rundir/upp-ORION
Baseline directory: /work/noaa/epic/UPP
-Total runtime: 00h:13m:00s
-Test Date: 20241223 09:18:28
+Total runtime: 00h:13m:13s
+Test Date: 20250108 14:14:59
Summary Results:
-12/23 15:09:03Z -fv3gefs test: your new post executable generates bit-identical geaer.t00z.master.grb2f060 as the trunk
-12/23 15:09:07Z -fv3gefs pe test: your new post executable generates bit-identical geaer.t00z.master.grb2f060 as the trunk
-12/23 15:09:13Z -fv3hafs test: your new post executable generates bit-identical HURPRS09.tm00 as the trunk
-12/23 15:09:13Z -fv3hafs pe test: your new post executable generates bit-identical HURPRS09.tm00 as the trunk
-12/23 15:09:55Z -nmmb pe test: your new post executable generates bit-identical BGDAWP03.tm00.Grib2 as the trunk
-12/23 15:09:56Z -nmmb pe test: your new post executable generates bit-identical BGRD3D03.tm00.Grib2 as the trunk
-12/23 15:09:56Z -nmmb pe test: your new post executable generates bit-identical BGRDSF03.tm00.Grib2 as the trunk
-12/23 15:10:04Z -rap pe test: your new post executable did generate changed results in WRFPRS.GrbF16
-12/23 15:10:05Z -rap pe test: your new post executable generates bit-identical WRFNAT.GrbF16 as the trunk
-12/23 15:10:06Z -nmmb test: your new post executable generates bit-identical BGDAWP03.tm00.Grib2 as the trunk
-12/23 15:10:07Z -nmmb test: your new post executable generates bit-identical BGRD3D03.tm00.Grib2 as the trunk
-12/23 15:10:07Z -nmmb test: your new post executable generates bit-identical BGRDSF03.tm00.Grib2 as the trunk
-12/23 15:10:29Z -rap test: your new post executable generates bit-identical WRFPRS.GrbF16 as the trunk
-12/23 15:10:29Z -rap test: your new post executable generates bit-identical WRFNAT.GrbF16 as the trunk
-12/23 15:10:45Z -fv3r test: your new post executable generates bit-identical PRSLEV10.tm00 as the trunk
-12/23 15:10:50Z -fv3r pe test: your new post executable generates bit-identical PRSLEV10.tm00 as the trunk
-12/23 15:11:19Z -hrrr pe test: your new post executable generates bit-identical WRFTWO.GrbF04 as the trunk
-12/23 15:11:20Z -hrrr pe test: your new post executable generates bit-identical WRFPRS.GrbF04 as the trunk
-12/23 15:11:21Z -hrrr pe test: your new post executable generates bit-identical WRFNAT.GrbF04 as the trunk
-12/23 15:15:53Z -hrrr test: your new post executable generates bit-identical WRFTWO.GrbF04 as the trunk
-12/23 15:15:54Z -hrrr test: your new post executable generates bit-identical WRFPRS.GrbF04 as the trunk
-12/23 15:15:55Z -hrrr test: your new post executable generates bit-identical WRFNAT.GrbF04 as the trunk
-12/23 15:15:56Z -fv3r test: your new post executable did not generate bit-identical NATLEV10.tm00 as the trunk
-12/23 15:15:58Z -fv3r pe test: your new post executable did not generate bit-identical NATLEV10.tm00 as the trunk
-12/23 15:16:21Z -rtma pe test: your new post executable did not generate bit-identical NATLEV00.tm00 as the trunk
-12/23 15:16:23Z -rtma pe test: your new post executable generates bit-identical PRSLEV00.tm00 as the trunk
-12/23 15:16:24Z -rtma pe test: your new post executable generates bit-identical IFIFIP00.tm00 as the trunk
-12/23 15:16:30Z -rtma test: your new post executable did not generate bit-identical NATLEV00.tm00 as the trunk
-12/23 15:16:32Z -rtma test: your new post executable generates bit-identical PRSLEV00.tm00 as the trunk
-12/23 15:16:33Z -rtma test: your new post executable generates bit-identical IFIFIP00.tm00 as the trunk
-12/23 15:16:37Z -fv3gfs pe test: your new post executable did not generate bit-identical gfs.t00z.master.grb2f006 as the trunk
-12/23 15:16:37Z -fv3gfs pe test: your new post executable generates bit-identical gfs.t00z.sfluxgrbf006.grib2 as the trunk
-12/23 15:16:38Z -fv3gfs pe test: your new post executable generates bit-identical gfs.t00z.special.grb2f006 as the trunk
-12/23 15:18:16Z -fv3gfs test: your new post executable did not generate bit-identical gfs.t00z.master.grb2f006 as the trunk
-12/23 15:18:17Z -fv3gfs test: your new post executable generates bit-identical gfs.t00z.sfluxgrbf006.grib2 as the trunk
-12/23 15:18:17Z -fv3gfs test: your new post executable generates bit-identical gfs.t00z.special.grb2f006 as the trunk
-12/23 15:10:10Z -Runtime: nmmb_test 00:01:26 -- baseline 00:03:00
-12/23 15:10:11Z -Runtime: nmmb_pe_test 00:01:15 -- baseline 00:03:00
-12/23 15:10:11Z -Runtime: fv3gefs_test 00:00:22 -- baseline 01:20:00
-12/23 15:10:11Z -Runtime: fv3gefs_pe_test 00:00:26 -- baseline 01:20:00
-12/23 15:10:41Z -Runtime: rap_test 00:01:48 -- baseline 00:02:00
-12/23 15:10:41Z -Runtime: rap_pe_test 00:01:24 -- baseline 00:02:00
-12/23 15:15:56Z -Runtime: hrrr_test 00:07:14 -- baseline 00:02:00
-12/23 15:15:57Z -Runtime: hrrr_pe_test 00:02:40 -- baseline 00:02:00
-12/23 15:18:27Z -Runtime: fv3gfs_test 00:09:36 -- baseline 00:18:00
-12/23 15:18:27Z -Runtime: fv3gfs_pe_test 00:07:57 -- baseline 00:18:00
-12/23 15:18:27Z -Runtime: fv3r_test 00:07:15 -- baseline 00:03:00
-12/23 15:18:27Z -Runtime: fv3r_pe_test 00:07:17 -- baseline 00:03:00
-12/23 15:18:27Z -Runtime: fv3hafs_test 00:00:32 -- baseline 00:00:40
-12/23 15:18:27Z -Runtime: fv3hafs_pe_test 00:00:32 -- baseline 00:00:40
-12/23 15:18:27Z -Runtime: rtma_test 00:07:52 -- baseline 00:04:00
-12/23 15:18:27Z -Runtime: rtma_pe_test 00:07:43 -- baseline 00:04:00
-There are changes in results for case rtma_pe_test in NATLEV00.tm00
-There are changes in results for case gfs in gfs.t00z.master.grb2f006
-There are changes in results for case fv3r in NATLEV10.tm00
-There are changes in results for case rtma in NATLEV00.tm00
-There are changes in results for case fv3r_pe_test in NATLEV10.tm00
-There are changes in results for case gfs_pe_test in gfs.t00z.master.grb2f006
-Refer to .diff files in rundir: /work/noaa/epic/gpetro/orion/RTs/upp-rts/1104/ci/rundir/upp-ORION for details on differences in results for each case.
+01/08 20:05:23Z -fv3gefs pe test: your new post executable generates bit-identical geaer.t00z.master.grb2f060 as the trunk
+01/08 20:05:29Z -fv3hafs test: your new post executable generates bit-identical HURPRS09.tm00 as the trunk
+01/08 20:05:29Z -fv3hafs pe test: your new post executable generates bit-identical HURPRS09.tm00 as the trunk
+01/08 20:05:37Z -fv3gefs test: your new post executable generates bit-identical geaer.t00z.master.grb2f060 as the trunk
+01/08 20:06:14Z -nmmb pe test: your new post executable generates bit-identical BGDAWP03.tm00.Grib2 as the trunk
+01/08 20:06:16Z -nmmb pe test: your new post executable generates bit-identical BGRD3D03.tm00.Grib2 as the trunk
+01/08 20:06:16Z -nmmb pe test: your new post executable generates bit-identical BGRDSF03.tm00.Grib2 as the trunk
+01/08 20:06:20Z -rap pe test: your new post executable did generate changed results in WRFPRS.GrbF16
+01/08 20:06:21Z -rap pe test: your new post executable generates bit-identical WRFNAT.GrbF16 as the trunk
+01/08 20:06:23Z -rap test: your new post executable generates bit-identical WRFPRS.GrbF16 as the trunk
+01/08 20:06:23Z -nmmb test: your new post executable generates bit-identical BGDAWP03.tm00.Grib2 as the trunk
+01/08 20:06:24Z -rap test: your new post executable generates bit-identical WRFNAT.GrbF16 as the trunk
+01/08 20:06:24Z -nmmb test: your new post executable generates bit-identical BGRD3D03.tm00.Grib2 as the trunk
+01/08 20:06:25Z -nmmb test: your new post executable generates bit-identical BGRDSF03.tm00.Grib2 as the trunk
+01/08 20:07:01Z -fv3r test: your new post executable generates bit-identical PRSLEV10.tm00 as the trunk
+01/08 20:07:05Z -fv3r test: your new post executable generates bit-identical NATLEV10.tm00 as the trunk
+01/08 20:07:09Z -fv3r pe test: your new post executable generates bit-identical PRSLEV10.tm00 as the trunk
+01/08 20:07:13Z -fv3r pe test: your new post executable generates bit-identical NATLEV10.tm00 as the trunk
+01/08 20:07:37Z -hrrr pe test: your new post executable generates bit-identical WRFTWO.GrbF04 as the trunk
+01/08 20:07:37Z -hrrr pe test: your new post executable generates bit-identical WRFPRS.GrbF04 as the trunk
+01/08 20:07:39Z -rtma pe test: your new post executable generates bit-identical NATLEV00.tm00 as the trunk
+01/08 20:07:39Z -hrrr pe test: your new post executable generates bit-identical WRFNAT.GrbF04 as the trunk
+01/08 20:07:40Z -rtma test: your new post executable generates bit-identical NATLEV00.tm00 as the trunk
+01/08 20:07:41Z -rtma pe test: your new post executable generates bit-identical PRSLEV00.tm00 as the trunk
+01/08 20:07:42Z -rtma pe test: your new post executable generates bit-identical IFIFIP00.tm00 as the trunk
+01/08 20:07:42Z -rtma test: your new post executable generates bit-identical PRSLEV00.tm00 as the trunk
+01/08 20:07:42Z -rtma test: your new post executable generates bit-identical IFIFIP00.tm00 as the trunk
+01/08 20:12:05Z -hrrr test: your new post executable generates bit-identical WRFTWO.GrbF04 as the trunk
+01/08 20:12:06Z -hrrr test: your new post executable generates bit-identical WRFPRS.GrbF04 as the trunk
+01/08 20:12:07Z -hrrr test: your new post executable generates bit-identical WRFNAT.GrbF04 as the trunk
+01/08 20:12:55Z -fv3gfs pe test: your new post executable generates bit-identical gfs.t00z.master.grb2f006 as the trunk
+01/08 20:12:56Z -fv3gfs pe test: your new post executable generates bit-identical gfs.t00z.sfluxgrbf006.grib2 as the trunk
+01/08 20:12:56Z -fv3gfs pe test: your new post executable generates bit-identical gfs.t00z.special.grb2f006 as the trunk
+01/08 20:14:51Z -fv3gfs test: your new post executable generates bit-identical gfs.t00z.master.grb2f006 as the trunk
+01/08 20:14:52Z -fv3gfs test: your new post executable generates bit-identical gfs.t00z.sfluxgrbf006.grib2 as the trunk
+01/08 20:14:52Z -fv3gfs test: your new post executable generates bit-identical gfs.t00z.special.grb2f006 as the trunk
+01/08 20:06:27Z -Runtime: nmmb_test 00:01:28 -- baseline 00:03:00
+01/08 20:06:27Z -Runtime: nmmb_pe_test 00:01:20 -- baseline 00:03:00
+01/08 20:06:27Z -Runtime: fv3gefs_test 00:00:40 -- baseline 01:20:00
+01/08 20:06:27Z -Runtime: fv3gefs_pe_test 00:00:26 -- baseline 01:20:00
+01/08 20:06:27Z -Runtime: rap_test 00:01:27 -- baseline 00:02:00
+01/08 20:06:27Z -Runtime: rap_pe_test 00:01:24 -- baseline 00:02:00
+01/08 20:12:13Z -Runtime: hrrr_test 00:07:10 -- baseline 00:02:00
+01/08 20:12:13Z -Runtime: hrrr_pe_test 00:02:42 -- baseline 00:02:00
+01/08 20:14:58Z -Runtime: fv3gfs_test 00:09:55 -- baseline 00:18:00
+01/08 20:14:58Z -Runtime: fv3gfs_pe_test 00:07:59 -- baseline 00:18:00
+01/08 20:14:58Z -Runtime: fv3r_test 00:02:08 -- baseline 00:03:00
+01/08 20:14:58Z -Runtime: fv3r_pe_test 00:02:16 -- baseline 00:03:00
+01/08 20:14:58Z -Runtime: fv3hafs_test 00:00:32 -- baseline 00:00:40
+01/08 20:14:58Z -Runtime: fv3hafs_pe_test 00:00:32 -- baseline 00:00:40
+01/08 20:14:58Z -Runtime: rtma_test 00:02:45 -- baseline 00:04:00
+01/08 20:14:59Z -Runtime: rtma_pe_test 00:02:45 -- baseline 00:04:00
+No changes in test results detected.
===== End of UPP Regression Testing Log =====