diff --git a/parm/hfip_postcntrl.xml b/parm/hfip_postcntrl.xml index e2de5b25a..370282e85 100755 --- a/parm/hfip_postcntrl.xml +++ b/parm/hfip_postcntrl.xml @@ -971,15 +971,19 @@ TSOIL_ON_DEPTH_BEL_LAND_SFC + 2 0. 1. 4. 10. 30. 60. 100. 160. 300. + 2 0. 1. 4. 10. 30. 60. 100. 160. 300. 4.0 SOILW_ON_DEPTH_BEL_LAND_SFC + 2 0. 1. 4. 10. 30. 60. 100. 160. 300. - 0. 1. 4. 10. 30. 60. 100. 160. 300. + 2 + 0. 1. 4. 10. 30. 60. 100. 160. 300. 3.0 @@ -1185,7 +1189,9 @@ SOILW_ON_DEPTH_BEL_LAND_SFC + 2 0. 1. + 2 0. 1. 3.0 diff --git a/parm/postxconfig-NT-hfip.txt b/parm/postxconfig-NT-hfip.txt index 4728ef24c..0f98590a3 100644 --- a/parm/postxconfig-NT-hfip.txt +++ b/parm/postxconfig-NT-hfip.txt @@ -6133,13 +6133,13 @@ TSOIL ? ? depth_bel_land_sfc -0 -? +1 +2 9 0. 1. 4. 10. 30. 60. 100. 160. 300. depth_bel_land_sfc -0 -? +1 +2 9 0. 1. 4. 10. 30. 60. 100. 160. 300. ? @@ -6175,13 +6175,13 @@ SOILW NCEP ? depth_bel_land_sfc -0 -? +1 +2 9 0. 1. 4. 10. 30. 60. 100. 160. 300. depth_bel_land_sfc -0 -? +1 +2 9 0. 1. 4. 10. 30. 60. 100. 160. 300. ? @@ -6947,13 +6947,13 @@ SOILW NCEP ? depth_bel_land_sfc -0 -? +1 +2 2 0. 1. depth_bel_land_sfc -0 -? +1 +2 2 0. 1. ? diff --git a/parm/postxconfig-NT-rrfs_mpas.txt b/parm/postxconfig-NT-rrfs_mpas.txt index 3b4abb8fc..7573f5dd3 100644 --- a/parm/postxconfig-NT-rrfs_mpas.txt +++ b/parm/postxconfig-NT-rrfs_mpas.txt @@ -1,6 +1,6 @@ 3 -17 -12 +18 +14 143 WRFTWO 4 @@ -6544,6 +6544,90 @@ isobaric_sfc ? ? ? +116 +TSOIL_ON_DEPTH_BEL_LAND_SFC +? +1 +tmpl4_0 +TSOIL +? +? +depth_bel_land_sfc +1 +2 +9 +0. 1. 4. 10. 30. 60. 100. 160. 300. +depth_bel_land_sfc +1 +2 +9 +0. 1. 4. 10. 30. 60. 100. 160. 300. +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +0 +0.0 +0 +0.0 +1 +4.0 +0 +0 +0 +? +? +? +117 +SOILW_ON_DEPTH_BEL_LAND_SFC +? +1 +tmpl4_0 +SOILW +NCEP +? +depth_bel_land_sfc +1 +2 +9 +0. 1. 4. 10. 30. 60. 100. 160. 300. +depth_bel_land_sfc +1 +2 +9 +0. 1. 4. 10. 30. 60. 100. 160. 300. +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +0 +0.0 +0 +0.0 +1 +3.0 +0 +0 +0 +? +? +? WRFNAT 4 ncep_emc @@ -7274,3 +7358,45 @@ smaller_than_first_limit ? ? ? +117 +SOILW_ON_DEPTH_BEL_LAND_SFC +? +1 +tmpl4_0 +SOILW +NCEP +? +depth_bel_land_sfc +1 +2 +2 +0. 1. +depth_bel_land_sfc +1 +2 +2 +0. 1. +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +0 +0.0 +0 +0.0 +1 +3.0 +0 +0 +0 +? +? +? diff --git a/parm/rrfs_mpas_postcntrl.xml b/parm/rrfs_mpas_postcntrl.xml index bc9f433df..376b8367f 100644 --- a/parm/rrfs_mpas_postcntrl.xml +++ b/parm/rrfs_mpas_postcntrl.xml @@ -967,7 +967,7 @@ 77500. 80000. 82500. 85000. 87500. 90000. 92500. 95000. 97500. 100000. 101320. 3.0 - + @@ -1166,7 +1166,7 @@ 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 6.0 - + diff --git a/sorc/ncep_post.fd/INITPOST_MPAS.F b/sorc/ncep_post.fd/INITPOST_MPAS.F index b6935e8f5..c70354260 100644 --- a/sorc/ncep_post.fd/INITPOST_MPAS.F +++ b/sorc/ncep_post.fd/INITPOST_MPAS.F @@ -1,28 +1,27 @@ !> @file -!> @brief initpost() initializes post for run. +!> @brief initpost_mpas() initializes UPP for MPAS / MPASSIT output !> -!> @author Russ Treadon W/NP2 @date 1993-11-10 - -!> This routine initializes constants and -!> variables at the start of an ETA model or post -!> processor run. -!> -!> This routine assumes that integers and reals are the same size. +!> @author Jaymes Kenyon (GSL) @date 2024-08-30 +! +!> This routine initializes constants and variables +!> when using UPP on MPAS model output. Specifcally, +!> it processes output from netCDF files that have been +!> generated by MPASSIT. MPASSIT reads MPAS output +!> from an unstructured mesh and interpolates the output onto +!> a structured grid. Since many MPASSIT array names +!> follow WRF-ARW conventions, this routine (INITPOST_MPAS) +!> was adapted from INITPOST, which was used to process +!> WRF-ARW output. !> !> ### Program History Log !> Date | Programmer | Comments !> -----|------------|--------- -!> 1993-11-10 | Russ Treadon | Initial. Added DOCBLOC -!> 1998-05-29 | T Black | Conversion from 1-D to 2-D -!> 1999-01-20 | Jim Tuccillo | MPI Version -!> 2001-10-25 | H CHuang | Modified to process hybrid model output -!> 2002-06-19 | Mike Baldwin | WRF Version -!> 2002-08-15 | H CHuang | Unit correction and generalize projection options -!> 2021-03-11 | Bo Cui | Change local arrays to dimension (im,jsta:jend) -!> 2023-01-24 | Sam Trahan | Comment-out wordy debug writes -!> 2024-08-14 | Jaymes Kenyon| Copied INITPOST as INITPOST_MPAS +!> 2024-08-14 | Jaymes Kenyon| Copied INITPOST as INITPOST_MPAS (reference INITPOST history prior to this date) +!> 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 !> -!> @author Russ Treadon W/NP2 @date 1993-11-10 +!> @author Jaymes Kenyon (GSL) @date 2024-08-14 + SUBROUTINE INITPOST_MPAS use vrbls4d, only: dust, smoke @@ -126,7 +125,7 @@ SUBROUTINE INITPOST_MPAS ! ALLOCATE ( THV(IM,JSTA_2L:JEND_2U,LM) ) ALLOCATE ( DUM3D ( IM+1, JM+1, LM+1 ) ) - WRITE(6,*)'INITPOST_MPAS: ENTER INITPOST_MPAS' + if (me==0) WRITE(6,*)'INITPOST_MPAS: ENTER INITPOST_MPAS' ! gridtype='A' hbotd=0 @@ -167,18 +166,18 @@ SUBROUTINE INITPOST_MPAS ! DateStr = '2002-03-05_18:00:00' ! how do I get the filename? call ext_ncd_ioinit(SysDepInfo,Status) - print*,'called ioinit', Status +! print*,'called ioinit', Status call ext_ncd_open_for_read( trim(fileName), 0, 0, " ", & DataHandle, Status) - print*,'called open for read', Status - if ( Status /= 0 ) then +! print*,'called open for read', Status + if ( Status /= 0 .and. me == 0 ) then print*,'error opening ',fileName, ' Status = ', Status ; stop endif ! get date/time info ! this routine will get the next time from the file, not using it - print *,'DateStr before calling ext_ncd_get_next_time=',DateStr +! print *,'DateStr before calling ext_ncd_get_next_time=',DateStr ! call ext_ncd_get_next_time(DataHandle, DateStr, Status) - print *,'DateStri,Status,DataHandle = ',DateStr,Status,DataHandle +! print *,'DateStri,Status,DataHandle = ',DateStr,Status,DataHandle ! The end j row is going to be jend_2u for all variables except for V. JS=JSTA_2L @@ -197,14 +196,16 @@ SUBROUTINE INITPOST_MPAS call ext_ncd_get_dom_ti_char(DataHandle,'START_DATE',startdate, & status ) #endif - print*,'startdate= ',startdate + if (me==0) print*,'startdate= ',startdate jdate=0 idate=0 read(startdate,15)iyear,imn,iday,ihrst,imin 15 format(i4,1x,i2,1x,i2,1x,i2,1x,i2) - print*,'start yr mo day hr min=',iyear,imn,iday,ihrst,imin - print*,'processing yr mo day hr min=' & - ,idat(3),idat(1),idat(2),idat(4),idat(5) + if (me==0) then + print*,'start yr mo day hr min=',iyear,imn,iday,ihrst,imin + print*,'processing yr mo day hr min=' & + ,idat(3),idat(1),idat(2),idat(4),idat(5) + endif idate(1)=iyear idate(2)=imn idate(3)=iday @@ -223,7 +224,7 @@ SUBROUTINE INITPOST_MPAS CALL W3DIFDAT(JDATE,IDATE,0,RINC) ifhr=nint(rinc(2)+rinc(1)*24.) ifmin=nint(rinc(3)) - print*,' in INITPOST_MPAS ifhr ifmin fileName=',ifhr,ifmin,fileName + if (me==0) print*,' in INITPOST_MPAS ifhr ifmin fileName=',ifhr,ifmin,fileName ! OK, since all of the variables are dimensioned/allocated to be ! the same size, this means we have to be careful int getVariable ! to not try to get too much data. For example, @@ -233,7 +234,7 @@ SUBROUTINE INITPOST_MPAS call ext_ncd_get_dom_ti_integer(DataHandle,'MP_PHYSICS' & ,itmp,1,ioutcount,istatus) imp_physics=itmp - print*,'MP_PHYSICS= ',itmp + if (me==0) print*,'MP_PHYSICS= ',itmp ! Initializes constants for Ferrier microphysics if(imp_physics==5 .or. imp_physics==85 .or. imp_physics==95)then @@ -242,11 +243,11 @@ SUBROUTINE INITPOST_MPAS call ext_ncd_get_dom_ti_integer(DataHandle,'CU_PHYSICS' & ,itmp,1,ioutcount,istatus) - icu_physics=itmp - print*,'CU_PHYSICS= ',icu_physics + icu_physics=itmp + if (me==0) print*,'CU_PHYSICS= ',icu_physics ! get 3-D variables - print*,'im,jm,lm= ',im,jm,lm + if (me==0) print*,'im,jm,lm= ',im,jm,lm ii=im/2 jj=(jsta+jend)/2 ll=lm @@ -322,7 +323,7 @@ SUBROUTINE INITPOST_MPAS ENDDO ENDDO ENDDO - print*,'finish reading W' + !print*,'finish reading W' VarName='QVAPOR' call getVariable(fileName,DateStr,DataHandle,VarName,DUM3D, & @@ -337,7 +338,7 @@ SUBROUTINE INITPOST_MPAS end do end do end do - print*,'finish reading mixing ratio' + !print*,'finish reading mixing ratio' ! if(jj>= jsta .and. jj<=jend)print*,'sample Q= ',Q(ii,jj,ll) ! DCD 4/3/13 @@ -592,8 +593,8 @@ SUBROUTINE INITPOST_MPAS do j = jsta_2l, jend_2u do i = 1, im qqni ( i, j, l ) = dum3d ( i, j, l ) - if(i==im/2.and.j==(jsta+jend)/2)print*,'sample QQNI= ', & - i,j,l,QQNI ( i, j, l ) + !if(i==im/2.and.j==(jsta+jend)/2)print*,'sample QQNI= ', & + ! i,j,l,QQNI ( i, j, l ) end do end do end do @@ -604,8 +605,8 @@ SUBROUTINE INITPOST_MPAS do j = jsta_2l, jend_2u do i = 1, im qqnr ( i, j, l ) = dum3d ( i, j, l ) - if(i==im/2.and.j==(jsta+jend)/2)print*,'sample QQNR= ', & - i,j,l,QQNR ( i, j, l ) + !if(i==im/2.and.j==(jsta+jend)/2)print*,'sample QQNR= ', & + ! i,j,l,QQNR ( i, j, l ) end do end do end do @@ -620,8 +621,8 @@ SUBROUTINE INITPOST_MPAS do j = jsta_2l, jend_2u do i = 1, im qqnw ( i, j, l ) = dum3d ( i, j, l ) - if(i==im/2.and.j==(jsta+jend)/2)print*,'sample QQNW= ', & - i,j,l,QQNW ( i, j, l ) + !if(i==im/2.and.j==(jsta+jend)/2)print*,'sample QQNW= ', & + ! i,j,l,QQNW ( i, j, l ) end do end do end do @@ -632,8 +633,8 @@ SUBROUTINE INITPOST_MPAS do j = jsta_2l, jend_2u do i = 1, im qqnwfa ( i, j, l ) = dum3d ( i, j, l ) - if(i==im/2.and.j==(jsta+jend)/2)print*,'sample QQNWFA= ', & - i,j,l,QQNWFA ( i, j, l ) + !if(i==im/2.and.j==(jsta+jend)/2)print*,'sample QQNWFA= ', & + ! i,j,l,QQNWFA ( i, j, l ) end do end do end do @@ -644,8 +645,8 @@ SUBROUTINE INITPOST_MPAS do j = jsta_2l, jend_2u do i = 1, im qqnifa ( i, j, l ) = dum3d ( i, j, l ) - if(i==im/2.and.j==(jsta+jend)/2)print*,'sample QQNIFA= ', & - i,j,l,QQNIFA ( i, j, l ) + !if(i==im/2.and.j==(jsta+jend)/2)print*,'sample QQNIFA= ', & + ! i,j,l,QQNIFA ( i, j, l ) end do end do end do @@ -833,7 +834,7 @@ SUBROUTINE INITPOST_MPAS call getVariable(fileName,DateStr,DataHandle,VarName,DUM3D, & IM+1,1,JM+1,LM+1,IM,JS,JE,LM+1) - print*,'finish reading geopotential' + !print*,'finish reading geopotential' ! ph/phb are geopotential z=(ph+phb)/9.801 DO L=1,LM+1 DO I=1,IM @@ -971,9 +972,9 @@ SUBROUTINE INITPOST_MPAS do i = 1, im ZINT(I,J,LM+1)=FIS(I,J)/G DUMMY(I,J)=FIS(I,J) - if(i==im/2.and.j==(jsta+jend)/2) & - print*,'i,j,L,ZINT from unipost= ',i,j,LM+1,ZINT(I,J,LM+1) & - , ALPINT(I,J,LM+1),ALPINT(I,J,LM) + !if(i==im/2.and.j==(jsta+jend)/2) & + ! print*,'i,j,L,ZINT from unipost= ',i,j,LM+1,ZINT(I,J,LM+1)& + ! ,ALPINT(I,J,LM+1),ALPINT(I,J,LM) end do end do DO L=LM,1,-1 @@ -985,24 +986,24 @@ SUBROUTINE INITPOST_MPAS DUM3D(I,J,L)=ZINT(I,J,L)-DUMMY2(I,J)/g ! now replace model heights with unipost heights ZINT(I,J,L)=DUMMY2(I,J)/G - if(i==im/2.and.j==(jsta+jend)/2) & - print*,'i,j,L,ZINT from unipost= ',i,j,l,ZINT(I,J,L) + !if(i==im/2.and.j==(jsta+jend)/2) & + ! print*,'i,j,L,ZINT from unipost= ',i,j,l,ZINT(I,J,L) DUMMY(I,J)=DUMMY2(I,J) ENDDO ENDDO END DO - DO L=LM,1,-1 - do j = js, je - do i = 1, im - if(i==im/2.and.j==(jsta+jend)/2) then - print*,'DIFF heights model-unipost= ', & - i,j,l,DUM3D(I,J,L) - endif - ENDDO - ENDDO - END DO - - print*,'finish deriving geopotential in ARW' + !DO L=LM,1,-1 + ! do j = js, je + ! do i = 1, im + ! if(i==im/2.and.j==(jsta+jend)/2) then + ! print*,'DIFF heights model-unipost= ', & + ! i,j,l,DUM3D(I,J,L) + ! endif + ! ENDDO + ! ENDDO + !END DO + + if (me==0) print*,'Finished deriving geopotential in RAPR application' ENDIF ! IF(MODELNAME == 'RAPR')THEN @@ -1022,7 +1023,7 @@ SUBROUTINE INITPOST_MPAS ! i,j,l,ALPINT(I,J,L+1),ALPINT(I,J,L),ZMID(I,J,L) ENDDO ENDDO - print*,'max/min ZMID= ',l,maxval(dummy),minval(dummy) + !print*,'max/min ZMID= ',l,maxval(dummy),minval(dummy) ENDDO DO I=1,IM @@ -1034,8 +1035,8 @@ SUBROUTINE INITPOST_MPAS dummy(i,j)=ZMID(I,J,LM) ENDDO ENDDO - print*,'max/min ZMID= ',lm,maxval(ZMID(1:im,js:je,lm)), & - minval(ZMID(1:im,js:je,lm)) + !print*,'max/min ZMID= ',lm,maxval(ZMID(1:im,js:je,lm)), & + ! minval(ZMID(1:im,js:je,lm)) ELSE DO L=1,LM @@ -1064,12 +1065,12 @@ SUBROUTINE INITPOST_MPAS taod5503d ( i, j, l ) = dum3d ( i, j, l ) dz = ZINT( i, j, l ) - ZINT( i, j, l+1 ) aextc55 ( i, j, l ) = taod5503d ( i, j, l ) / dz - if(i==im/2.and.j==(jsta+jend)/2)print*,'sample TAOD5503D= ', & - i,j,l,TAOD5503D ( i, j, l ) - if(i==im/2.and.j==(jsta+jend)/2)print*,'sample dz= ', & - dz - if(i==im/2.and.j==(jsta+jend)/2)print*,'sample AEXTC55= ', & - i,j,l,AEXTC55 ( i, j, l ) + + if( me==0 .and. i==im/2 .and. j==(jsta+jend)/2 ) then + print*,'sample TAOD5503D= ',i,j,l,TAOD5503D( i, j, l ) + print*,'sample dz= ',dz + print*,'sample AEXTC55= ',i,j,l,AEXTC55( i, j, l ) + endif end do end do end do @@ -1188,10 +1189,6 @@ SUBROUTINE INITPOST_MPAS end do end do - call ext_ncd_get_dom_ti_real(DataHandle,'DX',tmp, & - 1,ioutcount,istatus) - dxval=nint(tmp) - write(6,*) 'dxval= ', dxval #ifdef COMMCODE IF(MODELNAME == 'NCAR' .OR. MODELNAME == 'RAPR')THEN if(imp_physics/=5 .and. imp_physics/=0)then @@ -1373,13 +1370,18 @@ SUBROUTINE INITPOST_MPAS ! RUC LSM - use depths of center of soil layer IF(iSF_SURFACE_PHYSICS==3)then ! RUC LSM - call getVariable(fileName,DateStr,DataHandle,'ZS',SLLEVEL, & - NSOIL,1,1,1,NSOIL,1,1,1) - print*,'SLLEVEL= ',(SLLEVEL(N),N=1,NSOIL) + ! call getVariable(fileName,DateStr,DataHandle,'ZS',SLLEVEL, & + ! NSOIL,1,1,1,NSOIL,1,1,1) + ! print*,'SLLEVEL= ',(SLLEVEL(N),N=1,NSOIL) + + ! J. Kenyon / 23 Aug 2024: Assign depths of soil levels for + ! RUC LSM until the 'ZS' array (from MPASSIT) can be correctly read. + ! A similar hard-coding approach is also used in INITPOST_NETCDF. + SLLEVEL = (/ 0.0, 0.01, 0.04, 0.1, 0.3, 0.6, 1.0, 1.6, 3.0 /) ELSE call getVariable(fileName,DateStr,DataHandle,'DZS',SLDPTH, & NSOIL,1,1,1,NSOIL,1,1,1) - print*,'SLDPTH= ',(SLDPTH(N),N=1,NSOIL) + if (me==0) print*,'SLDPTH= ',(SLDPTH(N),N=1,NSOIL) END IF ! SRD @@ -1930,7 +1932,7 @@ SUBROUTINE INITPOST_MPAS VEGFRC ( i, j ) = dummy ( i, j )/100. end do end do - print*,'VEGFRC at ',ii,jj,' = ',VEGFRC(ii,jj) + if (me==0) print*,'VEGFRC at ',ii,jj,' = ',VEGFRC(ii,jj) VarName='SHDMIN' call getVariable(fileName,DateStr,DataHandle,VarName,DUMMY, & @@ -1940,7 +1942,7 @@ SUBROUTINE INITPOST_MPAS shdmin ( i, j ) = dummy ( i, j )/100. end do end do - print*,'SHDMIN at ',ii,jj,' = ',SHDMIN(ii,jj) + if (me==0) print*,'SHDMIN at ',ii,jj,' = ',SHDMIN(ii,jj) VarName='SHDMAX' call getVariable(fileName,DateStr,DataHandle,VarName,DUMMY, & @@ -1950,7 +1952,7 @@ SUBROUTINE INITPOST_MPAS shdmax ( i, j ) = dummy ( i, j )/100. end do end do - print*,'SHDMAX at ',ii,jj,' = ',SHDMAX(ii,jj) + if (me==0) print*,'SHDMAX at ',ii,jj,' = ',SHDMAX(ii,jj) VarName='LAI' call getVariable(fileName,DateStr,DataHandle,VarName,DUMMY, & @@ -1960,7 +1962,7 @@ SUBROUTINE INITPOST_MPAS lai ( i, j ) = dummy ( i, j ) end do end do - print*,'LAI at ',ii,jj,' = ',LAI(ii,jj) + if (me==0) print*,'LAI at ',ii,jj,' = ',LAI(ii,jj) VarName='ACSNOW' call getVariable(fileName,DateStr,DataHandle,VarName,DUMMY, & @@ -1970,7 +1972,7 @@ SUBROUTINE INITPOST_MPAS ACSNOW ( i, j ) = dummy ( i, j ) end do end do - print*,'maxval ACSNOW: ', maxval(ACSNOW) + if (me==0) print*,'maxval ACSNOW: ', maxval(ACSNOW) VarName='ACSNOM' call getVariable(fileName,DateStr,DataHandle,VarName,DUMMY, & IM,1,JM,1,IM,JS,JE,1) @@ -2132,7 +2134,7 @@ SUBROUTINE INITPOST_MPAS !C RAINC is "ACCUMULATED TOTAL CUMULUS PRECIPITATION" !C RAINNC is "ACCUMULATED TOTAL GRID SCALE PRECIPITATION" - write(6,*) 'getting RAINC' + if (me==0) write(6,*) 'getting RAINC' VarName='RAINC' call getVariable(fileName,DateStr,DataHandle,VarName,DUMMY, & IM,1,JM,1,IM,JS,JE,1) @@ -2142,7 +2144,7 @@ SUBROUTINE INITPOST_MPAS end do end do ! print*,'CUPREC at ',ii,jj,' = ',CUPREC(ii,jj) - write(6,*) 'getting RAINNC' + if (me==0) write(6,*) 'getting RAINNC' VarName='RAINNC' call getVariable(fileName,DateStr,DataHandle,VarName,DUMMY, & IM,1,JM,1,IM,JS,JE,1) @@ -2152,7 +2154,7 @@ SUBROUTINE INITPOST_MPAS end do end do ! print*,'ANCPRC at ',ii,jj,' = ',ANCPRC(ii,jj) - write(6,*) 'past getting RAINNC' + if (me==0) write(6,*) 'past getting RAINNC' do j = jsta_2l, jend_2u do i = 1, im @@ -2162,7 +2164,7 @@ SUBROUTINE INITPOST_MPAS !-- RAINC_bucket is "ACCUMULATED CUMULUS PRECIPITATION OVER BUCKET_DT PERIODS OF TIME" - write(6,*) 'getting PREC_ACC_C, [mm] ' + if (me==0) write(6,*) 'getting PREC_ACC_C, [mm] ' ! VarName='RAINC_BUCKET' VarName='PREC_ACC_C' call getVariable(fileName,DateStr,DataHandle,VarName,DUMMY, & @@ -2175,7 +2177,7 @@ SUBROUTINE INITPOST_MPAS !-- RAINC_bucket1 is "ACCUMULATED CUMULUS PRECIPITATION OVER BUCKET_DT1 PERIODS OF TIME" - write(6,*) 'getting PREC_ACC_C1, [mm] ' + if (me==0) write(6,*) 'getting PREC_ACC_C1, [mm] ' VarName='PREC_ACC_C1' call getVariable(fileName,DateStr,DataHandle,VarName,DUMMY, & IM,1,JM,1,IM,JS,JE,1) @@ -2187,7 +2189,7 @@ SUBROUTINE INITPOST_MPAS !-- RAINNC_bucket is "ACCUMULATED GRID SCALE PRECIPITATION OVER BUCKET_DT PERIODS OF TIME" - write(6,*) 'getting PREC_ACC_NC, [mm]' + if (me==0) write(6,*) 'getting PREC_ACC_NC, [mm]' ! VarName='RAINNC_BUCKET' VarName='PREC_ACC_NC' call getVariable(fileName,DateStr,DataHandle,VarName,DUMMY, & @@ -2200,7 +2202,7 @@ SUBROUTINE INITPOST_MPAS !-- RAINNC_bucket1 is "ACCUMULATED GRID SCALE PRECIPITATION OVER BUCKET_DT1 PERIODS OF TIME" - write(6,*) 'getting PREC_ACC_NC1, [mm]' + if (me==0) write(6,*) 'getting PREC_ACC_NC1, [mm]' VarName='PREC_ACC_NC1' call getVariable(fileName,DateStr,DataHandle,VarName,DUMMY, & IM,1,JM,1,IM,JS,JE,1) @@ -2252,7 +2254,7 @@ SUBROUTINE INITPOST_MPAS !-- SNOW_bucket is "ACCUMULATED GRID SCALE SNOW OVER BUCKET_DT PERIODS OF TIME" - write(6,*) 'getting SNOW_ACC_NC, [mm] ' + if (me==0) write(6,*) 'getting SNOW_ACC_NC, [mm] ' ! VarName='SNOW_BUCKET' VarName='SNOW_ACC_NC' call getVariable(fileName,DateStr,DataHandle,VarName,DUMMY, & @@ -2265,7 +2267,7 @@ SUBROUTINE INITPOST_MPAS !-- SNOW_bucket1 is "ACCUMULATED GRID SCALE SNOW OVER BUCKET_DT1 PERIODS OF TIME" - write(6,*) 'getting SNOW_ACC_NC1, [mm] ' + if (me==0) write(6,*) 'getting SNOW_ACC_NC1, [mm] ' VarName='SNOW_ACC_NC1' call getVariable(fileName,DateStr,DataHandle,VarName,DUMMY, & IM,1,JM,1,IM,JS,JE,1) @@ -2277,7 +2279,7 @@ SUBROUTINE INITPOST_MPAS !-- GRAUP_bucket is "ACCUMULATED GRID SCALE GRAUPEL OVER BUCKET_DT PERIODS OF TIME" - write(6,*) 'getting GRAUP_ACC_NC, [mm] ' + if (me==0) write(6,*) 'getting GRAUP_ACC_NC, [mm] ' VarName='GRAUP_ACC_NC' call getVariable(fileName,DateStr,DataHandle,VarName,DUMMY, & IM,1,JM,1,IM,JS,JE,1) @@ -2289,7 +2291,7 @@ SUBROUTINE INITPOST_MPAS !-- GRAUP_bucket1 is "ACCUMULATED GRID SCALE GRAUPEL OVER BUCKET_DT1 PERIODS OF TIME" - write(6,*) 'getting GRAUP_ACC_NC1, [mm] ' + if (me==0) write(6,*) 'getting GRAUP_ACC_NC1, [mm] ' VarName='GRAUP_ACC_NC1' call getVariable(fileName,DateStr,DataHandle,VarName,DUMMY, & IM,1,JM,1,IM,JS,JE,1) @@ -2504,7 +2506,7 @@ SUBROUTINE INITPOST_MPAS SWRADmean ( i, j ) = dummy ( i, j ) end do end do - print*,'SWRADmean at ',ii,jj,' = ',SWRADmean(ii,jj) + if (me==0) print*,'SWRADmean at ',ii,jj,' = ',SWRADmean(ii,jj) ! time_averaged SWNORM VarName='SWNORMMEAN' @@ -2516,7 +2518,7 @@ SUBROUTINE INITPOST_MPAS SWNORMmean ( i, j ) = dummy ( i, j ) end do end do - print*,'SWNORMmean at ',ii,jj,' = ',SWNORMmean(ii,jj) + if (me==0) print*,'SWNORMmean at ',ii,jj,' = ',SWNORMmean(ii,jj) VarName='GLW' ! Downwelling longwave flux at surface @@ -2664,7 +2666,7 @@ SUBROUTINE INITPOST_MPAS SNO ( i, j ) = dummy ( i, j ) elseif( dummy ( i, j ) > 5000.0) then SNO ( i, j ) = 5000.0 - write(*,*) 'too large SNOW=',i,j,dummy ( i, j ) + !write(*,*) 'too large SNOW=',i,j,dummy ( i, j ) elseif( dummy ( i, j ) < 0.0 ) then SNO ( i, j ) = 0.0 write(*,*) 'negative SNOW=',i,j,dummy ( i, j ) @@ -2684,7 +2686,7 @@ SUBROUTINE INITPOST_MPAS SI ( i, j ) = dummy ( i, j ) * 1000. elseif( dummy ( i, j ) > 50.0) then SI ( i, j ) = 50.0 * 1000. - write(*,*) 'too large SNOWH=',i,j,dummy ( i, j ) + !write(*,*) 'too large SNOWH=',i,j,dummy ( i, j ) elseif( dummy ( i, j ) < 0.0 ) then SI ( i, j ) = 0.0 write(*,*) 'negative SNOWH=',i,j,dummy ( i, j ) @@ -2724,7 +2726,7 @@ SUBROUTINE INITPOST_MPAS SNFDEN ( i, j ) = max(0.,dummy ( i, j )) end do end do - print *,' MIN/MAX SNFDEN ',minval(SNFDEN),maxval(SNFDEN) + if (me==0) print *,' MIN/MAX SNFDEN ',minval(SNFDEN),maxval(SNFDEN) ! snowfall accumulation VarName='SNOWFALLAC' @@ -2735,7 +2737,7 @@ SUBROUTINE INITPOST_MPAS SNDEPAC ( i, j ) = dummy ( i, j ) end do end do - print *,' MIN/MAX SNDEPAC ',minval(SNDEPAC),maxval(SNDEPAC) + if (me==0) print *,' MIN/MAX SNDEPAC ',minval(SNDEPAC),maxval(SNDEPAC) ! snow temperature at the interface of 2 snow layers VarName='SOILT1' @@ -2766,7 +2768,7 @@ SUBROUTINE INITPOST_MPAS ISLTYP ( i, j ) = idummy ( i, j ) end do end do - print*,'MAX ISLTYP=', maxval(idummy) + if (me==0) print*,'MAX ISLTYP=', maxval(idummy) ! VarName='ISLOPE' ! call getIVariableN(fileName,DateStr,DataHandle,VarName,IDUMMY, & @@ -2840,7 +2842,7 @@ SUBROUTINE INITPOST_MPAS end do ! pos north ! print*,'GDLAT at ',ii,jj,' = ',GDLAT(ii,jj) - print*,'read past GDLAT' +! print*,'read past GDLAT' VarName='XLONG' call getVariable(fileName,DateStr,DataHandle,VarName,DUMMY, & IM,1,JM,1,IM,JS,JE,1) @@ -2854,7 +2856,7 @@ SUBROUTINE INITPOST_MPAS end do end do ! print*,'GDLON at ',ii,jj,' = ',GDLON(ii,jj) - print*,'read past GDLON' +! print*,'read past GDLON' ! pos east call collect_loc(gdlat,dummy) if(me==0)then @@ -2905,8 +2907,6 @@ SUBROUTINE INITPOST_MPAS 1,1,1,1,1,1,1,1) -! ncdump -h - ! ncar wrf does not output zenith angle so make czen=czmean so that ! RSWIN can be output normally in SURFCE IF(MODELNAME /= 'RAPR')THEN @@ -2928,14 +2928,11 @@ SUBROUTINE INITPOST_MPAS CZMEAN ( i, j ) = CZEN ( i, j ) end do end do - print*,'sample RAPR zenith angle=',acos(czen(ii,jj))*rtd + if (me==0) print*,'sample RAPR zenith angle=',acos(czen(ii,jj))*rtd ENDIF -!! -!! -!! - write(6,*) 'filename in INITPOST_MPAS=', filename,' is' + write(6,*) 'filename in INITPOST_MPAS=', filename,' is' ! status=nf_open(filename,NF_NOWRITE,ncid) ! write(6,*) 'returned ncid= ', ncid @@ -2955,81 +2952,125 @@ SUBROUTINE INITPOST_MPAS ! maptype=int(tmp) ! status=nf_close(ncid) -! dxval=30000. -! dyval=30000. -! -! write(6,*) 'dxval= ', dxval -! write(6,*) 'dyval= ', dyval -! write(6,*) 'cenlat= ', cenlat -! write(6,*) 'cenlon= ', cenlon -! write(6,*) 'truelat1= ', truelat1 -! write(6,*) 'truelat2= ', truelat2 -! write(6,*) 'maptype is ', maptype -! -!tgs call ext_ncd_get_dom_ti_real(DataHandle,'DX',tmp, & -! 1,ioutcount,istatus) -! dxval=nint(tmp) -! write(6,*) 'dxval= ', dxval + + call ext_ncd_get_dom_ti_integer(DataHandle,'MAP_PROJ',itmp, & + 1,ioutcount,istatus) + maptype=itmp + write(6,*) 'maptype is ', maptype + + call ext_ncd_get_dom_ti_real(DataHandle,'DX',tmp, & + 1,ioutcount,istatus) + if(maptype==0)then + dxval=tmp*gdsdegr ! grid length in degrees for lat-lon proj + write(6,*) 'dxval= ',tmp + else + dxval=nint(tmp) + write(6,*) 'dxval= ',dxval + endif + call ext_ncd_get_dom_ti_real(DataHandle,'DY',tmp, & 1,ioutcount,istatus) - dyval=nint(tmp) - write(6,*) 'dyval= ', dyval + if(maptype==0)then + dyval=tmp*gdsdegr ! grid length in degrees for lat-lon proj + write(6,*) 'dyval= ',tmp + else + dyval=nint(tmp) + write(6,*) 'dyval= ',dyval + endif + call ext_ncd_get_dom_ti_real(DataHandle,'CEN_LAT',tmp, & 1,ioutcount,istatus) cenlat=nint(gdsdegr*tmp) write(6,*) 'cenlat= ', cenlat + call ext_ncd_get_dom_ti_real(DataHandle,'CEN_LON',tmp, & 1,ioutcount,istatus) if(tmp < 0) tmp=360.0 + tmp cenlon=nint(gdsdegr*tmp) write(6,*) 'cenlon= ', cenlon + call ext_ncd_get_dom_ti_integer(DataHandle,'MAP_PROJ',itmp, & 1,ioutcount,istatus) maptype=itmp write(6,*) 'maptype is ', maptype + if(maptype/=6)then - call ext_ncd_get_dom_ti_real(DataHandle,'TRUELAT1',tmp, & - 1,ioutcount,istatus) - truelat1=nint(gdsdegr*tmp) - write(6,*) 'truelat1= ', truelat1 - if(maptype/=2)then !PS projection excluded - call ext_ncd_get_dom_ti_real(DataHandle,'TRUELAT2',tmp, & + call ext_ncd_get_dom_ti_real(DataHandle,'TRUELAT1',tmp, & 1,ioutcount,istatus) - truelat2=nint(gdsdegr*tmp) - write(6,*) 'truelat2= ', truelat2 - endif + truelat1=nint(gdsdegr*tmp) + write(6,*) 'truelat1= ', truelat1 + + if(maptype/=2)then !PS projection excluded + call ext_ncd_get_dom_ti_real(DataHandle,'TRUELAT2',tmp, & + 1,ioutcount,istatus) + truelat2=nint(gdsdegr*tmp) + write(6,*) 'truelat2= ', truelat2 + endif endif + call ext_ncd_get_dom_ti_real(DataHandle,'STAND_LON',tmp, & 1,ioutcount,istatus) if(tmp < 0) tmp=360.0 + tmp STANDLON=nint(gdsdegr*tmp) write(6,*) 'STANDLON= ', STANDLON -!MEB not sure how to get these +! Calculate DX and DY arrays do j = jsta_2l, jend_2u do i = 1, im - DX ( i, j ) = dxval/MSFT(I,J) - DY ( i, j ) = dyval/MSFT(I,J) + if(maptype==0)then + ! obatin DX and DY lengths from lat and lon + DX(i,j) = ERAD*COS(GDLAT(i,j)*DTR)*(GDLON(i+1,j)-GDLON(i,j))*DTR + DY(i,j) = ERAD*(GDLAT(i,j+1)-GDLAT(i,j))*DTR + else + ! obatin DX and DY lengths from scale factor + DX(i,j) = dxval/MSFT(i,j) + DY(i,j) = dyval/MSFT(i,j) + end if end do end do ii=im/2 jj=(jend+jsta)/2 - print*,'sample dx,dy,msft=',ii,jj,dx(ii,jj),dy(ii,jj) & - ,msft(ii,jj) - + if (me==0) print*,'Sample dx,dy(meters),msft=',dx(ii,jj),dy(ii,jj),msft(ii,jj) ! Convert DXVAL and DYVAL for ARW rotated latlon from meters to radian if(maptype==6)then dxval=(DXVAL * 360.)/(ERAD*2.*pi)*gdsdegr dyval=(DYVAL * 360.)/(ERAD*2.*pi)*gdsdegr - print*,'dx and dy for arw rotated latlon= ', & + if (me==0) print*,'dx and dy for rotated latlon= ', & dxval,dyval end if - + !tgs Define smoothing flag for isobaric output IF(MODELNAME == 'RAPR')THEN - SMFLAG=.TRUE. + SMFLAG=.FALSE. + ! J. Kenyon (28 Aug 2024): smoothing is disabled for RAPR. + ! Note that this smoothing flag is present in several + ! subroutines (e.g., MDL2P, MDLFLD, and MAPSSLP). The + ! smoothing operation is formulated using "dxval", which + ! is a domain constant (e.g., 3000 m) that depends on + ! the grid length. The "dxval" value should not be + ! confused with the spatially varying "DX(i,j)" array. + ! + ! If smoothing is reactivated, "dxval" will likely + ! already be correctly specified for some projections + ! (e.g., Lambert conformal). However, "dxval" for + ! other projections (e.g., lat-lon) is expressed as an + ! angular width (in degrees). Accordingly, a suitable + ! "dxval" (distance) will need to be specified for + ! these smoothing instances, or these instances + ! will need to be reformulated without a dependence + ! on "dxval". + ! + ! For the lat-lon projection (maptype=0), the following + ! relationships should convert dxval and dyval from + ! angular (deg) to linear (m) widths and may be useful: + ! + ! if(maptype==0)then + ! dyval=ERAD*dyval/gdsdegr*dtr + ! dxval=ERAD*dxval/gdsdegr*dtr*COS(abs(cenlat/gdsdegr*dtr)) + ! print*,'For lat-lon: using dxval,dyval (meters)=',dxval,dyval + ! endif ELSE SMFLAG=.FALSE. ENDIF @@ -3058,18 +3099,18 @@ SUBROUTINE INITPOST_MPAS !need to get DT call ext_ncd_get_dom_ti_real(DataHandle,'DT',tmp,1,ioutcount,istatus) DT=abs(tmp) - print*,'DT= ',DT + if (me==0) print*,'DT= ',DT !need to get period of time for precipitation buckets - call ext_ncd_get_dom_ti_real(DataHandle,'PREC_ACC_DT',tmp,1,ioutcount,istatus) + !call ext_ncd_get_dom_ti_real(DataHandle,'PREC_ACC_DT',tmp,1,ioutcount,istatus) !prec_acc_dt=abs(tmp) - prec_acc_dt=60.0 ! temporary hard-coding for MPAS - print*,'PREC_ACC_DT= ',prec_acc_dt + prec_acc_dt=360.0 ! temporary hard-coding for MPAS + if (me==0) print*,'PREC_ACC_DT= ',prec_acc_dt !need to get period of time for precipitation bucket 1 (15-min precip) !talk to Tanya about getting this output in wrfout file prec_acc_dt1=15.0 - print*,'PREC_ACC_DT1= ',prec_acc_dt1 + if (me==0) print*,'PREC_ACC_DT1= ',prec_acc_dt1 ! DT = 120. !MEB need to get DT NPHS = 1 !CHUANG SET IT TO 1 BECAUSE ALL THE INST PRECIP ARE ACCUMULATED 1 TIME STEP @@ -3087,7 +3128,7 @@ SUBROUTINE INITPOST_MPAS TPREC=float(NPREC)/TSPH IF(NPREC==0)TPREC=float(ifhr) !in case buket does not get emptied - print*,'NPREC,TPREC = ',NPREC,TPREC + if (me==0) print*,'NPREC,TPREC = ',NPREC,TPREC !tgs TPREC=float(ifhr) ! WRF EM does not empty precip buket at all @@ -3097,7 +3138,7 @@ SUBROUTINE INITPOST_MPAS ! THEAT=float(NHEAT)/TSPH ! TCLOD=float(NCLOD)/TSPH ! TPREC=float(NPREC)/TSPH - print*,'TSRFC TRDLW TRDSW= ',TSRFC, TRDLW, TRDSW + if (me==0) print*,'TSRFC TRDLW TRDSW= ',TSRFC, TRDLW, TRDSW !MEB need to get DT !how am i going to get this information? @@ -3127,120 +3168,34 @@ SUBROUTINE INITPOST_MPAS ! end do - ! COMPUTE DERIVED MAP OUTPUT CONSTANTS. DO L = 1,LSM ALSL(L) = ALOG(SPL(L)) END DO -! close up shop - call ext_ncd_ioclose ( DataHandle, Status ) -! -!HC WRITE IGDS OUT FOR WEIGHTMAKER TO READ IN AS KGDSIN - if(me==0)then - print*,'writing out igds' - igdout=110 -! open(igdout,file='griddef.out',form='unformatted' -! + ,status='unknown') - if(maptype == 1)THEN ! Lambert conformal - WRITE(igdout)3 - WRITE(6,*)'igd(1)=',3 - WRITE(igdout)im - WRITE(igdout)jm - WRITE(igdout)LATSTART - WRITE(igdout)LONSTART - WRITE(igdout)8 -! WRITE(igdout)CENLON - WRITE(igdout)STANDLON - WRITE(igdout)DXVAL - WRITE(igdout)DYVAL - WRITE(igdout)0 - WRITE(igdout)64 - WRITE(igdout)TRUELAT2 - WRITE(igdout)TRUELAT1 - WRITE(igdout)255 - ELSE IF(MAPTYPE == 2)THEN !Polar stereographic - WRITE(igdout)5 - WRITE(igdout)im - WRITE(igdout)jm - WRITE(igdout)LATSTART - WRITE(igdout)LONSTART - WRITE(igdout)8 - WRITE(igdout)CENLON - WRITE(igdout)DXVAL - WRITE(igdout)DYVAL - WRITE(igdout)0 - WRITE(igdout)64 - WRITE(igdout)TRUELAT2 !Assume projection at +-90 - WRITE(igdout)TRUELAT1 - WRITE(igdout)255 - ! Note: The calculation of the map scale factor at the standard - ! lat/lon and the PSMAPF - ! Get map factor at 60 degrees (N or S) for PS projection, which will - ! be needed to correctly define the DX and DY values in the GRIB GDS - if (TRUELAT1 < 0.) THEN - LAT = -60. - else - LAT = 60. - end if - - CALL MSFPS (LAT,TRUELAT1*0.001,PSMAPF) - - ELSE IF(MAPTYPE == 3)THEN !Mercator - WRITE(igdout)1 - WRITE(igdout)im - WRITE(igdout)jm - WRITE(igdout)LATSTART - WRITE(igdout)LONSTART - WRITE(igdout)8 - WRITE(igdout)latlast - WRITE(igdout)lonlast - WRITE(igdout)TRUELAT1 - WRITE(igdout)0 - WRITE(igdout)64 - WRITE(igdout)DXVAL - WRITE(igdout)DYVAL - WRITE(igdout)255 - ELSE IF(MAPTYPE==6 )THEN ! ARW rotated lat/lon grid - WRITE(igdout)205 - WRITE(igdout)im - WRITE(igdout)jm - WRITE(igdout)LATSTART - WRITE(igdout)LONSTART - WRITE(igdout)136 - WRITE(igdout)CENLAT - WRITE(igdout)CENLON - WRITE(igdout)DXVAL - WRITE(igdout)DYVAL - WRITE(igdout)64 - WRITE(igdout)LATLAST - WRITE(igdout)LONLAST - WRITE(igdout)0 - - END IF ! following for hurricane wrf post - open(10,file='copygb_hwrf.txt',form='formatted',status='unknown') - idxvald = abs(LONLAST-LONSTART)/(im-2) - idyvald = abs(LATLAST-LATSTART)/(jm-2) - print*,'dxval,dyval in degree',dxval/107000.,dyval/107000. - print*,'idxvald,idyvald,LATSTART,LONSTART,LATLAST,LONLAST= ', & - idxvald,idyvald,LATSTART,LONSTART,LATLAST,LONLAST - write(10,1010) IM-1,JM-1,LATSTART,LONSTART,LATLAST,LONLAST, & - idxvald,idyvald - -1010 format('255 0 ',2(I4,x),I8,x,I9,x,'136 ',I8,x,I9,x, & - 2(I8,x),'0') - close (10) - end if +! open(10,file='copygb_hwrf.txt',form='formatted',status='unknown') +! idxvald = abs(LONLAST-LONSTART)/(im-2) +! idyvald = abs(LATLAST-LATSTART)/(jm-2) +! print*,'dxval,dyval in degree',dxval/107000.,dyval/107000. +! print*,'idxvald,idyvald,LATSTART,LONSTART,LATLAST,LONLAST= ', & +! idxvald,idyvald,LATSTART,LONSTART,LATLAST,LONLAST +! write(10,1010) IM-1,JM-1,LATSTART,LONSTART,LATLAST,LONLAST, & +! idxvald,idyvald +! +!1010 format('255 0 ',2(I4,x),I8,x,I9,x,'136 ',I8,x,I9,x, & +! 2(I8,x),'0') +! close (10) ! DEALLOCATE (THV) deallocate (msft) ! -! convert dxval, dyval from mtere to mm -! - if (grib=="grib2" )then +! convert dxval, dyval from meters to millimeters +! (except for lat-lon grids; refer to explantion near the SMFLAG +! specification) + if ((grib=="grib2") .and. (maptype/=0)) then dxval=dxval*1000. dyval=dyval*1000. endif diff --git a/sorc/ncep_post.fd/WRFPOST.F b/sorc/ncep_post.fd/WRFPOST.F index 975733e2d..c8e9f09b5 100644 --- a/sorc/ncep_post.fd/WRFPOST.F +++ b/sorc/ncep_post.fd/WRFPOST.F @@ -38,6 +38,7 @@ !> 2023-08-16 | Yali Mao | Add gtg_on logical option !> 2023-11-29 | Eric James | Add method_blsn logical option !> 2024-08-19 | Jaymes Kenyon | Adding a call to INITPOST_MPAS +!> 2024-08-30 | Jaymes Kenyon | Hard coding iSF_SURFACE_PHYSICS=3 when modelname=RAPR and submodelname=MPAS !> @author Mike Bladwin NSSL/SPC @date 2002-06-18 !--------------------------------------------------------------------- !> @return wrfpost @@ -384,6 +385,12 @@ PROGRAM WRFPOST ! Read and set global value for surface physics scheme call ext_ncd_get_dom_ti_integer(DataHandle & ,'SF_SURFACE_PHYSICS',itmp,1,ioutcount, status ) + + ! J. Kenyon / 23 Aug 2024: GSL MPAS output erroneously + ! indicates SF_SURFACE_PHYSICS = 0 (should be 3), so overwrite + ! here: + if (modelname == 'RAPR' .and. submodelname == 'MPAS') itmp = 3 + iSF_SURFACE_PHYSICS = itmp ! set NSOIL to 4 as default for NOAH but change if using other ! SFC scheme diff --git a/sorc/ncep_post.fd/getIVariableN.f b/sorc/ncep_post.fd/getIVariableN.f index b338b1f51..5366b3073 100644 --- a/sorc/ncep_post.fd/getIVariableN.f +++ b/sorc/ncep_post.fd/getIVariableN.f @@ -13,6 +13,11 @@ subroutine getIVariableN(fileName,DateStr,dh,VarName,VarBuff,IM,JSTA_2L,JEND_2U, ! ! PROGRAM HISTORY LOG: ! +! Date | Programmer | Comments +! -----------|---------------|--------- +! 2024-08-06 | Jaymes Kenyon | Read-in netCDF fill values for MPAS applications +! 2024-09-05 | Jaymes Kenyon | Limiting write statements to process 0 only +! ! USAGE: CALL getVariable(fileName,DateStr,dh,VarName,VarBuff,IM,JSTA_2L,JEND_2U,LM,IM1,JS,JE,LM1) ! ! INPUT ARGUMENT LIST: @@ -51,7 +56,7 @@ subroutine getIVariableN(fileName,DateStr,dh,VarName,VarBuff,IM,JSTA_2L,JEND_2U, ! the portion of VarBuff that is needed for this task. use wrf_io_flags_mod - use ctlblk_mod, only: spval, submodelname + use ctlblk_mod, only: me, spval, submodelname !- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - implicit none ! @@ -81,12 +86,12 @@ subroutine getIVariableN(fileName,DateStr,dh,VarName,VarBuff,IM,JSTA_2L,JEND_2U, end_index = 1 call ext_ncd_get_var_info(dh,TRIM(VarName),ndim,ordering,Stagger,start_index,end_index,WrfType,ierr) IF ( ierr /= 0 ) THEN - write(*,*)'Error: ',ierr,TRIM(VarName),' not found in ',fileName + if (me==0) write(*,*)'Error: ',ierr,TRIM(VarName),' not found in ',fileName VarBuff=0. return ENDIF allocate(data (end_index(1), end_index(2), end_index(3), 1)) - write(*,*)'WrfType in getIVariable= ',WrfType + if (me==0) write(*,*)'WrfType in getIVariable= ',WrfType ! if( WrfType /= WRF_REAL .AND. WrfType /= WRF_REAL8 ) then !Ignore if not a real variable ! write(*,*) 'Error: Not a real variable',WrfType ! return @@ -104,23 +109,29 @@ subroutine getIVariableN(fileName,DateStr,dh,VarName,VarBuff,IM,JSTA_2L,JEND_2U, start_index,end_index, & !pat ierr) IF ( ierr /= 0 ) THEN - write(*,*)'Error reading ',Varname,' from ',fileName - write(*,*)' ndim = ', ndim - write(*,*)' end_index(1) ',end_index(1) - write(*,*)' end_index(2) ',end_index(2) - write(*,*)' end_index(3) ',end_index(3) + if (me==0) then + write(*,*)'Error reading ',Varname,' from ',fileName + write(*,*)' ndim = ', ndim + write(*,*)' end_index(1) ',end_index(1) + write(*,*)' end_index(2) ',end_index(2) + write(*,*)' end_index(3) ',end_index(3) + write(*,*)'Error reading ',Varname,' from ',fileName + endif VarBuff = 0.0 return ENDIF - if (im1>end_index(1)) write(*,*) 'Err:',Varname,' IM1=',im1,& - ' but data dim=',end_index(1) - if (je>end_index(2)) write(*,*) 'Err:',Varname,' JE=',je,& - ' but data dim=',end_index(2) - if (lm1>end_index(3)) write(*,*) 'Err:',Varname,' LM1=',lm1,& - ' but data dim=',end_index(3) - if (ndim>3) then - write(*,*) 'Error: ndim = ',ndim - endif + + if (me==0) then + if (im1>end_index(1)) write(*,*) 'Err:',Varname,' IM1=',im1,& + ' but data dim=',end_index(1) + if (je>end_index(2)) write(*,*) 'Err:',Varname,' JE=',je,& + ' but data dim=',end_index(2) + if (lm1>end_index(3)) write(*,*) 'Err:',Varname,' LM1=',lm1,& + ' but data dim=',end_index(3) + if (ndim>3) then + write(*,*) 'Error: ndim = ',ndim + endif + endif if (SUBMODELNAME=='MPAS') then ! For MPAS: determine the fill value associated with the variable diff --git a/sorc/ncep_post.fd/getVariable.f b/sorc/ncep_post.fd/getVariable.f index a5dad4141..15d3a9920 100644 --- a/sorc/ncep_post.fd/getVariable.f +++ b/sorc/ncep_post.fd/getVariable.f @@ -13,6 +13,11 @@ subroutine getVariable(fileName,DateStr,dh,VarName,VarBuff,IM,JSTA_2L,JEND_2U,LM ! ! PROGRAM HISTORY LOG: ! +! Date | Programmer | Comments +! -----------|---------------|--------- +! 2024-08-06 | Jaymes Kenyon | Read-in netCDF fill values for MPAS applications +! 2024-09-05 | Jaymes Kenyon | Limiting write statements to process 0 only +! ! USAGE: CALL getVariable(fileName,DateStr,dh,VarName,VarBuff,IM,JSTA_2L,JEND_2U,LM,IM1,JS,JE,LM1) ! ! INPUT ARGUMENT LIST: @@ -51,7 +56,7 @@ subroutine getVariable(fileName,DateStr,dh,VarName,VarBuff,IM,JSTA_2L,JEND_2U,LM ! the portion of VarBuff that is needed for this task. ! use mpi use wrf_io_flags_mod, only: wrf_real, wrf_real8 - use ctlblk_mod, only: spval, submodelname + use ctlblk_mod, only: me, spval, submodelname !- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - implicit none @@ -84,13 +89,13 @@ subroutine getVariable(fileName,DateStr,dh,VarName,VarBuff,IM,JSTA_2L,JEND_2U,LM ! print*,'SPVAL in getVariable = ',SPVAL call ext_ncd_get_var_info(dh,TRIM(VarName),ndim,ordering,Stagger,start_index,end_index,WrfType,ierr) IF ( ierr /= 0 ) THEN - write(*,*)'Error: ',ierr,TRIM(VarName),' not found in ',fileName + if (me==0) write(*,*)'Error: ',ierr,TRIM(VarName),' not found in ',fileName VarBuff=0. return ENDIF allocate(data (end_index(1), end_index(2), end_index(3), 1)) if( WrfType /= WRF_REAL .AND. WrfType /= WRF_REAL8 ) then !Ignore if not a real variable - write(*,*) 'Error: Not a real variable',WrfType + if (me==0) write(*,*) 'Error: Not a real variable',WrfType return endif ! write(*,'(A9,1x,I1,3(1x,I3),1x,A,1x,A)')& @@ -99,7 +104,7 @@ subroutine getVariable(fileName,DateStr,dh,VarName,VarBuff,IM,JSTA_2L,JEND_2U,LM ! allocate(data (end_index(1), end_index(2), end_index(3), 1)) ! call ext_ncd_read_field(dh,DateStr,TRIM(VarName),data,WrfType,0,0,0,ordering,& ! CHANGE WrfType to WRF_REAL BECAUSE THIS TELLS WRF IO API TO CONVERT TO REAL - print *,' GWVX XT_NCD GET FIELD',size(data), size(varbuff),mype +! print *,' GWVX XT_NCD GET FIELD',size(data), size(varbuff),mype idsize=size(data) if(mype == 0) then call ext_ncd_read_field(dh,DateStr,TRIM(VarName),data,WrfType,0,0,0,ordering,& @@ -111,22 +116,27 @@ subroutine getVariable(fileName,DateStr,dh,VarName,VarBuff,IM,JSTA_2L,JEND_2U,LM endif call MPI_BCAST(data,idsize,MPI_real,0,MPI_COMM_WORLD,ierr) IF ( ierr /= 0 ) THEN - write(*,*)'Error reading ',Varname,' from ',fileName - write(*,*)' ndim = ', ndim - write(*,*)' end_index(1) ',end_index(1) - write(*,*)' end_index(2) ',end_index(2) - write(*,*)' end_index(3) ',end_index(3) + if (me==0) then + write(*,*)'Error reading ',Varname,' from ',fileName + write(*,*)' ndim = ', ndim + write(*,*)' end_index(1) ',end_index(1) + write(*,*)' end_index(2) ',end_index(2) + write(*,*)' end_index(3) ',end_index(3) + endif VarBuff = 0.0 return ENDIF - if (im1>end_index(1)) write(*,*) 'Err:',Varname,' IM1=',im1,& - ' but data dim=',end_index(1) - if (je>end_index(2)) write(*,*) 'Err:',Varname,' JE=',je,& - ' but data dim=',end_index(2) - if (lm1>end_index(3)) write(*,*) 'Err:',Varname,' LM1=',lm1,& - ' but data dim=',end_index(3) - if (ndim>3) then - write(*,*) 'Error: ndim = ',ndim + + if (me==0) then + if (im1>end_index(1)) write(*,*) 'Err:',Varname,' IM1=',im1,& + ' but data dim=',end_index(1) + if (je>end_index(2)) write(*,*) 'Err:',Varname,' JE=',je,& + ' but data dim=',end_index(2) + if (lm1>end_index(3)) write(*,*) 'Err:',Varname,' LM1=',lm1,& + ' but data dim=',end_index(3) + if (ndim>3) then + write(*,*) 'Error: ndim = ',ndim + endif endif if (SUBMODELNAME=='MPAS') then diff --git a/tests/logs/rt.log.HERA b/tests/logs/rt.log.HERA index fe190de81..0746b6e80 100644 --- a/tests/logs/rt.log.HERA +++ b/tests/logs/rt.log.HERA @@ -1,69 +1,69 @@ ===== Start of UPP Regression Testing Log ===== UPP Hash Tested: -d0567960a57752b4d3a8539cd87bbadfab1b9797 +e8197c41f54a5a85e663d21c0d71b5acf8e4d1da Submodule hashes: -1ba8270870947b583cd51bc72ff8960f4c1fb36e sorc/libIFI.fd -567edcc94bc418d0dcd6cdaafed448eeb5aab570 sorc/ncep_post.fd/post_gtg.fd -Run directory: /scratch2/NAGAPE/epic/Fernando.Andrade-maldonado/regression-tests/upp/1019/UPP/ci/rundir/upp-HERA +Run directory: /scratch2/NAGAPE/epic/Fernando.Andrade-maldonado/regression-tests/upp/1029/UPP/ci/rundir/upp-HERA Baseline directory: /scratch2/NAGAPE/epic/UPP/test_suite -Total runtime: 00h:12m:07s -Test Date: 20240829 14:55:06 +Total runtime: 00h:12m:02s +Test Date: 20240906 15:35:42 Summary Results: -08/29 14:46:02Z -fv3gefs pe test: your new post executable generates bit-identical geaer.t00z.master.grb2f060 as the trunk -08/29 14:46:24Z -fv3hafs pe test: your new post executable generates bit-identical HURPRS09.tm00 as the trunk -08/29 14:46:25Z -fv3hafs test: your new post executable generates bit-identical HURPRS09.tm00 as the trunk -08/29 14:46:56Z -fv3gefs test: your new post executable generates bit-identical geaer.t00z.master.grb2f060 as the trunk -08/29 14:47:04Z -rap test: your new post executable generates bit-identical WRFPRS.GrbF16 as the trunk -08/29 14:47:07Z -rap test: your new post executable generates bit-identical WRFNAT.GrbF16 as the trunk -08/29 14:47:24Z -rap pe test: your new post executable did generate changed results in WRFPRS.GrbF16 -08/29 14:47:24Z -nmmb pe test: your new post executable generates bit-identical BGDAWP03.tm00.Grib2 as the trunk -08/29 14:47:24Z -fv3r test: your new post executable generates bit-identical PRSLEV10.tm00 as the trunk -08/29 14:47:28Z -rap pe test: your new post executable generates bit-identical WRFNAT.GrbF16 as the trunk -08/29 14:47:28Z -nmmb pe test: your new post executable generates bit-identical BGRD3D03.tm00.Grib2 as the trunk -08/29 14:47:28Z -nmmb test: your new post executable generates bit-identical BGDAWP03.tm00.Grib2 as the trunk -08/29 14:47:29Z -nmmb pe test: your new post executable generates bit-identical BGRDSF03.tm00.Grib2 as the trunk -08/29 14:47:31Z -fv3r pe test: your new post executable generates bit-identical PRSLEV10.tm00 as the trunk -08/29 14:47:31Z -nmmb test: your new post executable generates bit-identical BGRD3D03.tm00.Grib2 as the trunk -08/29 14:47:31Z -nmmb test: your new post executable generates bit-identical BGRDSF03.tm00.Grib2 as the trunk -08/29 14:47:31Z -fv3r test: your new post executable generates bit-identical NATLEV10.tm00 as the trunk -08/29 14:47:32Z -rtma pe test: your new post executable generates bit-identical NATLEV00.tm00 as the trunk -08/29 14:47:34Z -rtma test: your new post executable generates bit-identical NATLEV00.tm00 as the trunk -08/29 14:47:35Z -fv3r pe test: your new post executable generates bit-identical NATLEV10.tm00 as the trunk -08/29 14:47:39Z -rtma test: your new post executable generates bit-identical PRSLEV00.tm00 as the trunk -08/29 14:47:40Z -rtma test: your new post executable generates bit-identical IFIFIP00.tm00 as the trunk -08/29 14:47:40Z -rtma pe test: your new post executable generates bit-identical PRSLEV00.tm00 as the trunk -08/29 14:47:40Z -rtma pe test: your new post executable generates bit-identical IFIFIP00.tm00 as the trunk -08/29 14:48:09Z -hrrr pe test: your new post executable generates bit-identical WRFTWO.GrbF04 as the trunk -08/29 14:48:11Z -hrrr pe test: your new post executable generates bit-identical WRFPRS.GrbF04 as the trunk -08/29 14:48:15Z -hrrr pe test: your new post executable generates bit-identical WRFNAT.GrbF04 as the trunk -08/29 14:48:33Z -hrrr test: your new post executable generates bit-identical WRFTWO.GrbF04 as the trunk -08/29 14:48:34Z -hrrr test: your new post executable generates bit-identical WRFPRS.GrbF04 as the trunk -08/29 14:48:36Z -hrrr test: your new post executable generates bit-identical WRFNAT.GrbF04 as the trunk -08/29 14:54:12Z -fv3gfs test: your new post executable generates bit-identical gfs.t00z.master.grb2f006 as the trunk -08/29 14:54:16Z -fv3gfs test: your new post executable generates bit-identical gfs.t00z.sfluxgrbf006.grib2 as the trunk -08/29 14:54:16Z -fv3gfs test: your new post executable generates bit-identical gfs.t00z.special.grb2f006 as the trunk -08/29 14:54:51Z -fv3gfs pe test: your new post executable generates bit-identical gfs.t00z.master.grb2f006 as the trunk -08/29 14:54:54Z -fv3gfs pe test: your new post executable generates bit-identical gfs.t00z.sfluxgrbf006.grib2 as the trunk -08/29 14:54:54Z -fv3gfs pe test: your new post executable generates bit-identical gfs.t00z.special.grb2f006 as the trunk -08/29 14:47:42Z -Runtime: nmmb_test 00:02:02 -- baseline 00:01:00 -08/29 14:47:43Z -Runtime: nmmb_pe_test 00:02:00 -- baseline 00:01:00 -08/29 14:47:43Z -Runtime: fv3gefs_test 00:01:27 -- baseline 00:40:00 -08/29 14:47:43Z -Runtime: fv3gefs_pe_test 00:00:33 -- baseline 00:40:00 -08/29 14:47:44Z -Runtime: rap_test 00:01:38 -- baseline 00:02:00 -08/29 14:47:44Z -Runtime: rap_pe_test 00:01:59 -- baseline 00:02:00 -08/29 14:48:45Z -Runtime: hrrr_test 00:03:07 -- baseline 00:02:00 -08/29 14:48:45Z -Runtime: hrrr_pe_test 00:02:46 -- baseline 00:02:00 -08/29 14:54:19Z -Runtime: fv3gfs_test 00:08:47 -- baseline 00:15:00 -08/29 14:55:04Z -Runtime: fv3gfs_pe_test 00:09:25 -- baseline 00:15:00 -08/29 14:55:05Z -Runtime: fv3r_test 00:02:02 -- baseline 00:03:00 -08/29 14:55:05Z -Runtime: fv3r_pe_test 00:02:06 -- baseline 00:03:00 -08/29 14:55:05Z -Runtime: fv3hafs_test 00:00:56 -- baseline 00:03:00 -08/29 14:55:05Z -Runtime: fv3hafs_pe_test 00:00:55 -- baseline 00:03:00 -08/29 14:55:06Z -Runtime: rtma_test 00:02:11 -- baseline 00:03:00 -08/29 14:55:06Z -Runtime: rtma_test_pe_test 00:02:11 -- baseline +09/06 15:27:43Z -fv3gefs pe test: your new post executable generates bit-identical geaer.t00z.master.grb2f060 as the trunk +09/06 15:27:51Z -fv3gefs test: your new post executable generates bit-identical geaer.t00z.master.grb2f060 as the trunk +09/06 15:28:10Z -rtma pe test: your new post executable generates bit-identical NATLEV00.tm00 as the trunk +09/06 15:28:13Z -rtma pe test: your new post executable generates bit-identical PRSLEV00.tm00 as the trunk +09/06 15:28:13Z -rtma pe test: your new post executable generates bit-identical IFIFIP00.tm00 as the trunk +09/06 15:28:40Z -rap test: your new post executable generates bit-identical WRFPRS.GrbF16 as the trunk +09/06 15:28:41Z -rap test: your new post executable generates bit-identical WRFNAT.GrbF16 as the trunk +09/06 15:28:49Z -hrrr pe test: your new post executable generates bit-identical WRFTWO.GrbF04 as the trunk +09/06 15:28:50Z -hrrr pe test: your new post executable generates bit-identical WRFPRS.GrbF04 as the trunk +09/06 15:28:52Z -hrrr pe test: your new post executable generates bit-identical WRFNAT.GrbF04 as the trunk +09/06 15:28:55Z -fv3r test: your new post executable generates bit-identical PRSLEV10.tm00 as the trunk +09/06 15:28:59Z -fv3r test: your new post executable generates bit-identical NATLEV10.tm00 as the trunk +09/06 15:28:59Z -rtma test: your new post executable generates bit-identical NATLEV00.tm00 as the trunk +09/06 15:29:02Z -rtma test: your new post executable generates bit-identical PRSLEV00.tm00 as the trunk +09/06 15:29:03Z -rtma test: your new post executable generates bit-identical IFIFIP00.tm00 as the trunk +09/06 15:29:12Z -fv3hafs test: your new post executable generates bit-identical HURPRS09.tm00 as the trunk +09/06 15:29:20Z -fv3hafs pe test: your new post executable generates bit-identical HURPRS09.tm00 as the trunk +09/06 15:29:45Z -fv3r pe test: your new post executable generates bit-identical PRSLEV10.tm00 as the trunk +09/06 15:29:47Z -hrrr test: your new post executable generates bit-identical WRFTWO.GrbF04 as the trunk +09/06 15:29:47Z -hrrr test: your new post executable generates bit-identical WRFPRS.GrbF04 as the trunk +09/06 15:29:49Z -fv3r pe test: your new post executable generates bit-identical NATLEV10.tm00 as the trunk +09/06 15:29:49Z -hrrr test: your new post executable generates bit-identical WRFNAT.GrbF04 as the trunk +09/06 15:29:51Z -nmmb pe test: your new post executable generates bit-identical BGDAWP03.tm00.Grib2 as the trunk +09/06 15:29:53Z -nmmb pe test: your new post executable generates bit-identical BGRD3D03.tm00.Grib2 as the trunk +09/06 15:29:54Z -nmmb pe test: your new post executable generates bit-identical BGRDSF03.tm00.Grib2 as the trunk +09/06 15:29:55Z -rap pe test: your new post executable did generate changed results in WRFPRS.GrbF16 +09/06 15:29:55Z -rap pe test: your new post executable generates bit-identical WRFNAT.GrbF16 as the trunk +09/06 15:29:56Z -nmmb test: your new post executable generates bit-identical BGDAWP03.tm00.Grib2 as the trunk +09/06 15:29:57Z -nmmb test: your new post executable generates bit-identical BGRD3D03.tm00.Grib2 as the trunk +09/06 15:29:58Z -nmmb test: your new post executable generates bit-identical BGRDSF03.tm00.Grib2 as the trunk +09/06 15:34:48Z -fv3gfs test: your new post executable generates bit-identical gfs.t00z.master.grb2f006 as the trunk +09/06 15:34:49Z -fv3gfs test: your new post executable generates bit-identical gfs.t00z.sfluxgrbf006.grib2 as the trunk +09/06 15:34:50Z -fv3gfs test: your new post executable generates bit-identical gfs.t00z.special.grb2f006 as the trunk +09/06 15:35:26Z -fv3gfs pe test: your new post executable generates bit-identical gfs.t00z.master.grb2f006 as the trunk +09/06 15:35:29Z -fv3gfs pe test: your new post executable generates bit-identical gfs.t00z.sfluxgrbf006.grib2 as the trunk +09/06 15:35:29Z -fv3gfs pe test: your new post executable generates bit-identical gfs.t00z.special.grb2f006 as the trunk +09/06 15:30:04Z -Runtime: nmmb_test 00:01:16 -- baseline 00:01:00 +09/06 15:30:05Z -Runtime: nmmb_pe_test 00:01:12 -- baseline 00:01:00 +09/06 15:30:05Z -Runtime: fv3gefs_test 00:00:16 -- baseline 00:40:00 +09/06 15:30:05Z -Runtime: fv3gefs_pe_test 00:00:22 -- baseline 00:40:00 +09/06 15:30:06Z -Runtime: rap_test 00:00:57 -- baseline 00:02:00 +09/06 15:30:06Z -Runtime: rap_pe_test 00:01:13 -- baseline 00:02:00 +09/06 15:30:06Z -Runtime: hrrr_test 00:02:18 -- baseline 00:02:00 +09/06 15:30:07Z -Runtime: hrrr_pe_test 00:02:06 -- baseline 00:02:00 +09/06 15:34:55Z -Runtime: fv3gfs_test 00:07:35 -- baseline 00:15:00 +09/06 15:35:41Z -Runtime: fv3gfs_pe_test 00:08:14 -- baseline 00:15:00 +09/06 15:35:41Z -Runtime: fv3r_test 00:01:38 -- baseline 00:03:00 +09/06 15:35:41Z -Runtime: fv3r_pe_test 00:01:33 -- baseline 00:03:00 +09/06 15:35:41Z -Runtime: fv3hafs_test 00:00:34 -- baseline 00:03:00 +09/06 15:35:42Z -Runtime: fv3hafs_pe_test 00:00:42 -- baseline 00:03:00 +09/06 15:35:42Z -Runtime: rtma_test 00:01:42 -- baseline 00:03:00 +09/06 15:35:42Z -Runtime: rtma_test_pe_test 00:01:43 -- 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 d48ebae54..61b10455b 100644 --- a/tests/logs/rt.log.HERCULES +++ b/tests/logs/rt.log.HERCULES @@ -1,69 +1,69 @@ ===== Start of UPP Regression Testing Log ===== UPP Hash Tested: -d0567960a57752b4d3a8539cd87bbadfab1b9797 +e8197c41f54a5a85e663d21c0d71b5acf8e4d1da Submodule hashes: -1ba8270870947b583cd51bc72ff8960f4c1fb36e sorc/libIFI.fd -567edcc94bc418d0dcd6cdaafed448eeb5aab570 sorc/ncep_post.fd/post_gtg.fd -Run directory: /work2/noaa/epic/nandoam/regression-testing/upp/hercules/1019/UPP/ci/rundir/upp-HERCULES +Run directory: /work2/noaa/epic/nandoam/regression-testing/upp/hercules/1029/UPP/ci/rundir/upp-HERCULES Baseline directory: /work/noaa/epic/UPP -Total runtime: 00h:12m:03s -Test Date: 20240829 09:56:32 +Total runtime: 00h:11m:50s +Test Date: 20240906 10:37:08 Summary Results: -08/29 14:47:58Z -rap pe test: your new post executable did generate changed results in WRFPRS.GrbF16 -08/29 14:47:59Z -rap pe test: your new post executable generates bit-identical WRFNAT.GrbF16 as the trunk -08/29 14:48:10Z -nmmb pe test: your new post executable generates bit-identical BGDAWP03.tm00.Grib2 as the trunk -08/29 14:48:11Z -nmmb pe test: your new post executable generates bit-identical BGRD3D03.tm00.Grib2 as the trunk -08/29 14:48:11Z -nmmb pe test: your new post executable generates bit-identical BGRDSF03.tm00.Grib2 as the trunk -08/29 14:48:17Z -nmmb test: your new post executable generates bit-identical BGDAWP03.tm00.Grib2 as the trunk -08/29 14:48:18Z -nmmb test: your new post executable generates bit-identical BGRD3D03.tm00.Grib2 as the trunk -08/29 14:48:18Z -nmmb test: your new post executable generates bit-identical BGRDSF03.tm00.Grib2 as the trunk -08/29 14:48:41Z -hrrr pe test: your new post executable generates bit-identical WRFTWO.GrbF04 as the trunk -08/29 14:48:42Z -hrrr pe test: your new post executable generates bit-identical WRFPRS.GrbF04 as the trunk -08/29 14:48:43Z -hrrr pe test: your new post executable generates bit-identical WRFNAT.GrbF04 as the trunk -08/29 14:48:46Z -fv3r test: your new post executable generates bit-identical PRSLEV10.tm00 as the trunk -08/29 14:48:48Z -fv3r test: your new post executable generates bit-identical NATLEV10.tm00 as the trunk -08/29 14:48:54Z -fv3r pe test: your new post executable generates bit-identical PRSLEV10.tm00 as the trunk -08/29 14:48:54Z -fv3hafs test: your new post executable generates bit-identical HURPRS09.tm00 as the trunk -08/29 14:48:56Z -fv3r pe test: your new post executable generates bit-identical NATLEV10.tm00 as the trunk -08/29 14:49:12Z -fv3gefs test: your new post executable generates bit-identical geaer.t00z.master.grb2f060 as the trunk -08/29 14:49:15Z -fv3gefs pe test: your new post executable generates bit-identical geaer.t00z.master.grb2f060 as the trunk -08/29 14:49:23Z -fv3hafs pe test: your new post executable generates bit-identical HURPRS09.tm00 as the trunk -08/29 14:49:42Z -rap test: your new post executable generates bit-identical WRFPRS.GrbF16 as the trunk -08/29 14:49:43Z -rap test: your new post executable generates bit-identical WRFNAT.GrbF16 as the trunk -08/29 14:51:09Z -rtma pe test: your new post executable generates bit-identical NATLEV00.tm00 as the trunk -08/29 14:51:11Z -rtma pe test: your new post executable generates bit-identical PRSLEV00.tm00 as the trunk -08/29 14:51:12Z -rtma pe test: your new post executable generates bit-identical IFIFIP00.tm00 as the trunk -08/29 14:51:14Z -rtma test: your new post executable generates bit-identical NATLEV00.tm00 as the trunk -08/29 14:51:16Z -rtma test: your new post executable generates bit-identical PRSLEV00.tm00 as the trunk -08/29 14:51:16Z -rtma test: your new post executable generates bit-identical IFIFIP00.tm00 as the trunk -08/29 14:53:19Z -hrrr test: your new post executable generates bit-identical WRFTWO.GrbF04 as the trunk -08/29 14:53:20Z -hrrr test: your new post executable generates bit-identical WRFPRS.GrbF04 as the trunk -08/29 14:53:21Z -hrrr test: your new post executable generates bit-identical WRFNAT.GrbF04 as the trunk -08/29 14:53:45Z -fv3gfs pe test: your new post executable generates bit-identical gfs.t00z.master.grb2f006 as the trunk -08/29 14:53:47Z -fv3gfs pe test: your new post executable generates bit-identical gfs.t00z.sfluxgrbf006.grib2 as the trunk -08/29 14:53:47Z -fv3gfs pe test: your new post executable generates bit-identical gfs.t00z.special.grb2f006 as the trunk -08/29 14:56:25Z -fv3gfs test: your new post executable generates bit-identical gfs.t00z.master.grb2f006 as the trunk -08/29 14:56:25Z -fv3gfs test: your new post executable generates bit-identical gfs.t00z.sfluxgrbf006.grib2 as the trunk -08/29 14:56:25Z -fv3gfs test: your new post executable generates bit-identical gfs.t00z.special.grb2f006 as the trunk -08/29 14:48:29Z -Runtime: nmmb_test 00:01:19 -- baseline 00:03:00 -08/29 14:48:29Z -Runtime: nmmb_pe_test 00:01:12 -- baseline 00:03:00 -08/29 14:49:14Z -Runtime: fv3gefs_test 00:00:17 -- baseline 01:20:00 -08/29 14:49:29Z -Runtime: fv3gefs_pe_test 00:00:20 -- baseline 01:20:00 -08/29 14:49:44Z -Runtime: rap_test 00:00:48 -- baseline 00:02:00 -08/29 14:49:45Z -Runtime: rap_pe_test 00:01:00 -- baseline 00:02:00 -08/29 14:53:30Z -Runtime: hrrr_test 00:04:26 -- baseline 00:02:00 -08/29 14:53:30Z -Runtime: hrrr_pe_test 00:01:44 -- baseline 00:02:00 -08/29 14:56:31Z -Runtime: fv3gfs_test 00:09:26 -- baseline 00:18:00 -08/29 14:56:31Z -Runtime: fv3gfs_pe_test 00:06:48 -- baseline 00:18:00 -08/29 14:56:31Z -Runtime: fv3r_test 00:01:49 -- baseline 00:03:00 -08/29 14:56:31Z -Runtime: fv3r_pe_test 00:01:57 -- baseline 00:03:00 -08/29 14:56:31Z -Runtime: fv3hafs_test 00:00:32 -- baseline 00:00:40 -08/29 14:56:31Z -Runtime: fv3hafs_pe_test 00:00:29 -- baseline 00:00:40 -08/29 14:56:32Z -Runtime: rtma_test 00:02:21 -- baseline 00:04:00 -08/29 14:56:32Z -Runtime: rtma_pe_test 00:02:17 -- baseline 00:04:00 +09/06 15:27:50Z -fv3gefs test: your new post executable generates bit-identical geaer.t00z.master.grb2f060 as the trunk +09/06 15:27:53Z -fv3gefs pe test: your new post executable generates bit-identical geaer.t00z.master.grb2f060 as the trunk +09/06 15:28:03Z -fv3hafs test: your new post executable generates bit-identical HURPRS09.tm00 as the trunk +09/06 15:28:04Z -fv3hafs pe test: your new post executable generates bit-identical HURPRS09.tm00 as the trunk +09/06 15:28:23Z -rap test: your new post executable generates bit-identical WRFPRS.GrbF16 as the trunk +09/06 15:28:24Z -rap test: your new post executable generates bit-identical WRFNAT.GrbF16 as the trunk +09/06 15:28:29Z -rap pe test: your new post executable did generate changed results in WRFPRS.GrbF16 +09/06 15:28:30Z -rap pe test: your new post executable generates bit-identical WRFNAT.GrbF16 as the trunk +09/06 15:28:36Z -nmmb pe test: your new post executable generates bit-identical BGDAWP03.tm00.Grib2 as the trunk +09/06 15:28:37Z -nmmb pe test: your new post executable generates bit-identical BGRD3D03.tm00.Grib2 as the trunk +09/06 15:28:37Z -nmmb pe test: your new post executable generates bit-identical BGRDSF03.tm00.Grib2 as the trunk +09/06 15:28:43Z -nmmb test: your new post executable generates bit-identical BGDAWP03.tm00.Grib2 as the trunk +09/06 15:28:44Z -nmmb test: your new post executable generates bit-identical BGRD3D03.tm00.Grib2 as the trunk +09/06 15:28:44Z -nmmb test: your new post executable generates bit-identical BGRDSF03.tm00.Grib2 as the trunk +09/06 15:29:09Z -hrrr pe test: your new post executable generates bit-identical WRFTWO.GrbF04 as the trunk +09/06 15:29:10Z -hrrr pe test: your new post executable generates bit-identical WRFPRS.GrbF04 as the trunk +09/06 15:29:11Z -hrrr pe test: your new post executable generates bit-identical WRFNAT.GrbF04 as the trunk +09/06 15:29:21Z -fv3r test: your new post executable generates bit-identical PRSLEV10.tm00 as the trunk +09/06 15:29:23Z -fv3r test: your new post executable generates bit-identical NATLEV10.tm00 as the trunk +09/06 15:29:27Z -fv3r pe test: your new post executable generates bit-identical PRSLEV10.tm00 as the trunk +09/06 15:29:28Z -fv3r pe test: your new post executable generates bit-identical NATLEV10.tm00 as the trunk +09/06 15:29:48Z -rtma pe test: your new post executable generates bit-identical NATLEV00.tm00 as the trunk +09/06 15:29:49Z -rtma pe test: your new post executable generates bit-identical PRSLEV00.tm00 as the trunk +09/06 15:29:50Z -rtma pe test: your new post executable generates bit-identical IFIFIP00.tm00 as the trunk +09/06 15:29:51Z -rtma test: your new post executable generates bit-identical NATLEV00.tm00 as the trunk +09/06 15:29:52Z -rtma test: your new post executable generates bit-identical PRSLEV00.tm00 as the trunk +09/06 15:29:52Z -rtma test: your new post executable generates bit-identical IFIFIP00.tm00 as the trunk +09/06 15:32:01Z -hrrr test: your new post executable generates bit-identical WRFTWO.GrbF04 as the trunk +09/06 15:32:01Z -hrrr test: your new post executable generates bit-identical WRFPRS.GrbF04 as the trunk +09/06 15:32:03Z -hrrr test: your new post executable generates bit-identical WRFNAT.GrbF04 as the trunk +09/06 15:34:17Z -fv3gfs pe test: your new post executable generates bit-identical gfs.t00z.master.grb2f006 as the trunk +09/06 15:34:19Z -fv3gfs pe test: your new post executable generates bit-identical gfs.t00z.sfluxgrbf006.grib2 as the trunk +09/06 15:34:19Z -fv3gfs pe test: your new post executable generates bit-identical gfs.t00z.special.grb2f006 as the trunk +09/06 15:36:54Z -fv3gfs test: your new post executable generates bit-identical gfs.t00z.master.grb2f006 as the trunk +09/06 15:36:55Z -fv3gfs test: your new post executable generates bit-identical gfs.t00z.sfluxgrbf006.grib2 as the trunk +09/06 15:36:55Z -fv3gfs test: your new post executable generates bit-identical gfs.t00z.special.grb2f006 as the trunk +09/06 15:28:47Z -Runtime: nmmb_test 00:01:12 -- baseline 00:03:00 +09/06 15:28:47Z -Runtime: nmmb_pe_test 00:01:06 -- baseline 00:03:00 +09/06 15:28:47Z -Runtime: fv3gefs_test 00:00:18 -- baseline 01:20:00 +09/06 15:28:47Z -Runtime: fv3gefs_pe_test 00:00:21 -- baseline 01:20:00 +09/06 15:28:47Z -Runtime: rap_test 00:00:52 -- baseline 00:02:00 +09/06 15:28:47Z -Runtime: rap_pe_test 00:00:58 -- baseline 00:02:00 +09/06 15:32:07Z -Runtime: hrrr_test 00:04:31 -- baseline 00:02:00 +09/06 15:32:07Z -Runtime: hrrr_pe_test 00:01:39 -- baseline 00:02:00 +09/06 15:37:08Z -Runtime: fv3gfs_test 00:09:23 -- baseline 00:18:00 +09/06 15:37:08Z -Runtime: fv3gfs_pe_test 00:06:47 -- baseline 00:18:00 +09/06 15:37:08Z -Runtime: fv3r_test 00:01:51 -- baseline 00:03:00 +09/06 15:37:08Z -Runtime: fv3r_pe_test 00:01:56 -- baseline 00:03:00 +09/06 15:37:08Z -Runtime: fv3hafs_test 00:00:31 -- baseline 00:00:40 +09/06 15:37:08Z -Runtime: fv3hafs_pe_test 00:00:29 -- baseline 00:00:40 +09/06 15:37:08Z -Runtime: rtma_test 00:02:17 -- baseline 00:04:00 +09/06 15:37:08Z -Runtime: rtma_pe_test 00:02:15 -- 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 96b9f159c..9ff05e035 100644 --- a/tests/logs/rt.log.ORION +++ b/tests/logs/rt.log.ORION @@ -1,69 +1,69 @@ ===== Start of UPP Regression Testing Log ===== UPP Hash Tested: -d0567960a57752b4d3a8539cd87bbadfab1b9797 +e8197c41f54a5a85e663d21c0d71b5acf8e4d1da Submodule hashes: -1ba8270870947b583cd51bc72ff8960f4c1fb36e sorc/libIFI.fd -567edcc94bc418d0dcd6cdaafed448eeb5aab570 sorc/ncep_post.fd/post_gtg.fd -Run directory: /work2/noaa/epic/nandoam/regression-testing/upp/orion/1019/UPP/ci/rundir/upp-ORION +Run directory: /work2/noaa/epic/nandoam/regression-testing/upp/orion/1029/UPP/ci/rundir/upp-ORION Baseline directory: /work/noaa/epic/UPP -Total runtime: 00h:14m:13s -Test Date: 20240829 11:21:13 +Total runtime: 00h:16m:46s +Test Date: 20240906 10:41:22 Summary Results: -08/29 16:10:33Z -fv3gefs test: your new post executable generates bit-identical geaer.t00z.master.grb2f060 as the trunk -08/29 16:10:37Z -fv3gefs pe test: your new post executable generates bit-identical geaer.t00z.master.grb2f060 as the trunk -08/29 16:10:47Z -fv3hafs pe test: your new post executable generates bit-identical HURPRS09.tm00 as the trunk -08/29 16:10:47Z -fv3hafs test: your new post executable generates bit-identical HURPRS09.tm00 as the trunk -08/29 16:11:34Z -rap pe test: your new post executable did generate changed results in WRFPRS.GrbF16 -08/29 16:11:35Z -rap pe test: your new post executable generates bit-identical WRFNAT.GrbF16 as the trunk -08/29 16:11:37Z -rap test: your new post executable generates bit-identical WRFPRS.GrbF16 as the trunk -08/29 16:11:38Z -rap test: your new post executable generates bit-identical WRFNAT.GrbF16 as the trunk -08/29 16:11:45Z -nmmb pe test: your new post executable generates bit-identical BGDAWP03.tm00.Grib2 as the trunk -08/29 16:11:45Z -nmmb pe test: your new post executable generates bit-identical BGRD3D03.tm00.Grib2 as the trunk -08/29 16:11:46Z -nmmb pe test: your new post executable generates bit-identical BGRDSF03.tm00.Grib2 as the trunk -08/29 16:11:55Z -nmmb test: your new post executable generates bit-identical BGDAWP03.tm00.Grib2 as the trunk -08/29 16:11:56Z -nmmb test: your new post executable generates bit-identical BGRD3D03.tm00.Grib2 as the trunk -08/29 16:11:57Z -nmmb test: your new post executable generates bit-identical BGRDSF03.tm00.Grib2 as the trunk -08/29 16:12:15Z -fv3r test: your new post executable generates bit-identical PRSLEV10.tm00 as the trunk -08/29 16:12:18Z -fv3r test: your new post executable generates bit-identical NATLEV10.tm00 as the trunk -08/29 16:12:22Z -fv3r pe test: your new post executable generates bit-identical PRSLEV10.tm00 as the trunk -08/29 16:12:26Z -fv3r pe test: your new post executable generates bit-identical NATLEV10.tm00 as the trunk -08/29 16:12:56Z -rtma pe test: your new post executable generates bit-identical NATLEV00.tm00 as the trunk -08/29 16:12:58Z -hrrr pe test: your new post executable generates bit-identical WRFTWO.GrbF04 as the trunk -08/29 16:12:58Z -rtma pe test: your new post executable generates bit-identical PRSLEV00.tm00 as the trunk -08/29 16:12:59Z -rtma pe test: your new post executable generates bit-identical IFIFIP00.tm00 as the trunk -08/29 16:12:59Z -hrrr pe test: your new post executable generates bit-identical WRFPRS.GrbF04 as the trunk -08/29 16:13:00Z -rtma test: your new post executable generates bit-identical NATLEV00.tm00 as the trunk -08/29 16:13:02Z -hrrr pe test: your new post executable generates bit-identical WRFNAT.GrbF04 as the trunk -08/29 16:13:02Z -rtma test: your new post executable generates bit-identical PRSLEV00.tm00 as the trunk -08/29 16:13:03Z -rtma test: your new post executable generates bit-identical IFIFIP00.tm00 as the trunk -08/29 16:17:29Z -hrrr test: your new post executable generates bit-identical WRFTWO.GrbF04 as the trunk -08/29 16:17:29Z -hrrr test: your new post executable generates bit-identical WRFPRS.GrbF04 as the trunk -08/29 16:17:31Z -hrrr test: your new post executable generates bit-identical WRFNAT.GrbF04 as the trunk -08/29 16:19:08Z -fv3gfs pe test: your new post executable generates bit-identical gfs.t00z.master.grb2f006 as the trunk -08/29 16:19:10Z -fv3gfs pe test: your new post executable generates bit-identical gfs.t00z.sfluxgrbf006.grib2 as the trunk -08/29 16:19:10Z -fv3gfs pe test: your new post executable generates bit-identical gfs.t00z.special.grb2f006 as the trunk -08/29 16:21:01Z -fv3gfs test: your new post executable generates bit-identical gfs.t00z.master.grb2f006 as the trunk -08/29 16:21:02Z -fv3gfs test: your new post executable generates bit-identical gfs.t00z.sfluxgrbf006.grib2 as the trunk -08/29 16:21:02Z -fv3gfs test: your new post executable generates bit-identical gfs.t00z.special.grb2f006 as the trunk -08/29 16:12:11Z -Runtime: nmmb_test 00:01:46 -- baseline 00:03:00 -08/29 16:12:11Z -Runtime: nmmb_pe_test 00:01:35 -- baseline 00:03:00 -08/29 16:12:11Z -Runtime: fv3gefs_test 00:00:22 -- baseline 01:20:00 -08/29 16:12:11Z -Runtime: fv3gefs_pe_test 00:00:26 -- baseline 01:20:00 -08/29 16:12:11Z -Runtime: rap_test 00:01:27 -- baseline 00:02:00 -08/29 16:12:11Z -Runtime: rap_pe_test 00:01:25 -- baseline 00:02:00 -08/29 16:17:42Z -Runtime: hrrr_test 00:07:20 -- baseline 00:02:00 -08/29 16:17:42Z -Runtime: hrrr_pe_test 00:02:51 -- baseline 00:02:00 -08/29 16:21:12Z -Runtime: fv3gfs_test 00:10:51 -- baseline 00:18:00 -08/29 16:21:12Z -Runtime: fv3gfs_pe_test 00:08:59 -- baseline 00:18:00 -08/29 16:21:12Z -Runtime: fv3r_test 00:02:07 -- baseline 00:03:00 -08/29 16:21:13Z -Runtime: fv3r_pe_test 00:02:15 -- baseline 00:03:00 -08/29 16:21:13Z -Runtime: fv3hafs_test 00:00:36 -- baseline 00:00:40 -08/29 16:21:13Z -Runtime: fv3hafs_pe_test 00:00:36 -- baseline 00:00:40 -08/29 16:21:13Z -Runtime: rtma_test 00:02:52 -- baseline 00:04:00 -08/29 16:21:13Z -Runtime: rtma_pe_test 00:02:48 -- baseline 00:04:00 +09/06 15:29:04Z -nmmb pe test: your new post executable generates bit-identical BGDAWP03.tm00.Grib2 as the trunk +09/06 15:29:05Z -nmmb pe test: your new post executable generates bit-identical BGRD3D03.tm00.Grib2 as the trunk +09/06 15:29:05Z -nmmb pe test: your new post executable generates bit-identical BGRDSF03.tm00.Grib2 as the trunk +09/06 15:29:14Z -nmmb test: your new post executable generates bit-identical BGDAWP03.tm00.Grib2 as the trunk +09/06 15:29:15Z -nmmb test: your new post executable generates bit-identical BGRD3D03.tm00.Grib2 as the trunk +09/06 15:29:15Z -nmmb test: your new post executable generates bit-identical BGRDSF03.tm00.Grib2 as the trunk +09/06 15:30:39Z -fv3gefs test: your new post executable generates bit-identical geaer.t00z.master.grb2f060 as the trunk +09/06 15:30:43Z -fv3gefs pe test: your new post executable generates bit-identical geaer.t00z.master.grb2f060 as the trunk +09/06 15:30:54Z -fv3hafs pe test: your new post executable generates bit-identical HURPRS09.tm00 as the trunk +09/06 15:30:55Z -fv3hafs test: your new post executable generates bit-identical HURPRS09.tm00 as the trunk +09/06 15:31:43Z -rap pe test: your new post executable did generate changed results in WRFPRS.GrbF16 +09/06 15:31:44Z -rap pe test: your new post executable generates bit-identical WRFNAT.GrbF16 as the trunk +09/06 15:31:45Z -rap test: your new post executable generates bit-identical WRFPRS.GrbF16 as the trunk +09/06 15:31:46Z -rap test: your new post executable generates bit-identical WRFNAT.GrbF16 as the trunk +09/06 15:32:24Z -fv3r test: your new post executable generates bit-identical PRSLEV10.tm00 as the trunk +09/06 15:32:28Z -fv3r test: your new post executable generates bit-identical NATLEV10.tm00 as the trunk +09/06 15:32:31Z -fv3r pe test: your new post executable generates bit-identical PRSLEV10.tm00 as the trunk +09/06 15:32:35Z -fv3r pe test: your new post executable generates bit-identical NATLEV10.tm00 as the trunk +09/06 15:32:59Z -rtma pe test: your new post executable generates bit-identical NATLEV00.tm00 as the trunk +09/06 15:33:01Z -hrrr pe test: your new post executable generates bit-identical WRFTWO.GrbF04 as the trunk +09/06 15:33:01Z -rtma pe test: your new post executable generates bit-identical PRSLEV00.tm00 as the trunk +09/06 15:33:02Z -hrrr pe test: your new post executable generates bit-identical WRFPRS.GrbF04 as the trunk +09/06 15:33:02Z -rtma pe test: your new post executable generates bit-identical IFIFIP00.tm00 as the trunk +09/06 15:33:02Z -rtma test: your new post executable generates bit-identical NATLEV00.tm00 as the trunk +09/06 15:33:04Z -hrrr pe test: your new post executable generates bit-identical WRFNAT.GrbF04 as the trunk +09/06 15:33:05Z -rtma test: your new post executable generates bit-identical PRSLEV00.tm00 as the trunk +09/06 15:33:06Z -rtma test: your new post executable generates bit-identical IFIFIP00.tm00 as the trunk +09/06 15:37:29Z -hrrr test: your new post executable generates bit-identical WRFTWO.GrbF04 as the trunk +09/06 15:37:30Z -hrrr test: your new post executable generates bit-identical WRFPRS.GrbF04 as the trunk +09/06 15:37:32Z -hrrr test: your new post executable generates bit-identical WRFNAT.GrbF04 as the trunk +09/06 15:39:08Z -fv3gfs pe test: your new post executable generates bit-identical gfs.t00z.master.grb2f006 as the trunk +09/06 15:39:10Z -fv3gfs pe test: your new post executable generates bit-identical gfs.t00z.sfluxgrbf006.grib2 as the trunk +09/06 15:39:10Z -fv3gfs pe test: your new post executable generates bit-identical gfs.t00z.special.grb2f006 as the trunk +09/06 15:41:05Z -fv3gfs test: your new post executable generates bit-identical gfs.t00z.master.grb2f006 as the trunk +09/06 15:41:07Z -fv3gfs test: your new post executable generates bit-identical gfs.t00z.sfluxgrbf006.grib2 as the trunk +09/06 15:41:07Z -fv3gfs test: your new post executable generates bit-identical gfs.t00z.special.grb2f006 as the trunk +09/06 15:29:19Z -Runtime: nmmb_test 00:01:26 -- baseline 00:03:00 +09/06 15:29:19Z -Runtime: nmmb_pe_test 00:01:17 -- baseline 00:03:00 +09/06 15:30:49Z -Runtime: fv3gefs_test 00:00:22 -- baseline 01:20:00 +09/06 15:30:49Z -Runtime: fv3gefs_pe_test 00:00:26 -- baseline 01:20:00 +09/06 15:31:49Z -Runtime: rap_test 00:01:29 -- baseline 00:02:00 +09/06 15:31:49Z -Runtime: rap_pe_test 00:01:27 -- baseline 00:02:00 +09/06 15:37:35Z -Runtime: hrrr_test 00:07:15 -- baseline 00:02:00 +09/06 15:37:35Z -Runtime: hrrr_pe_test 00:02:47 -- baseline 00:02:00 +09/06 15:41:21Z -Runtime: fv3gfs_test 00:10:50 -- baseline 00:18:00 +09/06 15:41:21Z -Runtime: fv3gfs_pe_test 00:08:53 -- baseline 00:18:00 +09/06 15:41:21Z -Runtime: fv3r_test 00:02:11 -- baseline 00:03:00 +09/06 15:41:21Z -Runtime: fv3r_pe_test 00:02:18 -- baseline 00:03:00 +09/06 15:41:21Z -Runtime: fv3hafs_test 00:00:38 -- baseline 00:00:40 +09/06 15:41:21Z -Runtime: fv3hafs_pe_test 00:00:37 -- baseline 00:00:40 +09/06 15:41:21Z -Runtime: rtma_test 00:02:49 -- baseline 00:04:00 +09/06 15:41:21Z -Runtime: rtma_pe_test 00:02:45 -- baseline 00:04:00 No changes in test results detected. ===== End of UPP Regression Testing Log =====