From ef204d7d62376526420ba0e7477b37957deff34b Mon Sep 17 00:00:00 2001 From: "Samuel Trahan (NOAA contractor)" <39415369+SamuelTrahanNOAA@users.noreply.github.com> Date: Thu, 17 Oct 2024 17:56:08 -0400 Subject: [PATCH] Clean up IFI support and add library prereqs to modulefiles (#1056) * modulefile for external ifi on hera * IFI.F: less wordy logging and faster IFI debug output * compile_upp.sh: -B = build ifi executables & -D = option sent to cmake * update libIFI hash * correct argument length to eliminate runtime error * update libIFI.fd hash * IFI.F: some code cleanup and correctly handle spval * compile_upp.sh: -B flag to compile IFI executables * connect new library requirements to build system * Jet module paths for ifi * remove duplicate line * add hera rt log * add hercules rt log * add orion rt log * update author information in INITPOST_NETCDF.f * gcc tests use same ubuntu version as intel * gcc tests ubuntu 22.04 * explicitly specify gcc 11 hoping it will work * set ubuntu 22.04 in another place * revert accidental change * update libIFI.fd hash --------- Co-authored-by: WenMeng-NOAA <48260754+WenMeng-NOAA@users.noreply.github.com> Co-authored-by: gspetro-NOAA --- .github/workflows/gcc.yml | 4 +- modulefiles/hera_external_ifi.lua | 6 + modulefiles/hera_ifi_test_prereqs.lua | 6 + modulefiles/jet_external_ifi.lua | 6 + modulefiles/jet_ifi_test_prereqs.lua | 6 + sorc/libIFI.fd | 2 +- sorc/ncep_post.fd/IFI.F | 248 +++++++++++++++++++------- sorc/ncep_post.fd/INITPOST_NETCDF.f | 3 +- tests/compile_upp.sh | 33 +++- tests/logs/rt.log.HERA | 114 ++++++------ tests/logs/rt.log.HERCULES | 114 ++++++------ tests/logs/rt.log.ORION | 114 ++++++------ 12 files changed, 415 insertions(+), 241 deletions(-) create mode 100644 modulefiles/hera_external_ifi.lua create mode 100644 modulefiles/hera_ifi_test_prereqs.lua create mode 100644 modulefiles/jet_external_ifi.lua create mode 100644 modulefiles/jet_ifi_test_prereqs.lua diff --git a/.github/workflows/gcc.yml b/.github/workflows/gcc.yml index 74b981bf0..57c657a2f 100644 --- a/.github/workflows/gcc.yml +++ b/.github/workflows/gcc.yml @@ -31,7 +31,7 @@ env: jobs: setup: - runs-on: ubuntu-latest + runs-on: ubuntu-22.04 steps: - name: checkout-upp # This is for getting spack.yaml @@ -67,7 +67,7 @@ jobs: build: needs: setup - runs-on: ubuntu-latest + runs-on: ubuntu-22.04 steps: - name: checkout-upp diff --git a/modulefiles/hera_external_ifi.lua b/modulefiles/hera_external_ifi.lua new file mode 100644 index 000000000..b506922a6 --- /dev/null +++ b/modulefiles/hera_external_ifi.lua @@ -0,0 +1,6 @@ +help([[ +Load external libIFI for UPP on hera +]]) + +prepend_path("MODULEPATH", "/scratch2/BMC/ifi/modulefiles") +load("ifi/20230511-intel-2022.1.2") diff --git a/modulefiles/hera_ifi_test_prereqs.lua b/modulefiles/hera_ifi_test_prereqs.lua new file mode 100644 index 000000000..4f6f079ff --- /dev/null +++ b/modulefiles/hera_ifi_test_prereqs.lua @@ -0,0 +1,6 @@ +help([[ +Load prerequisites for IFI's own internal test programs and its "fip2 lookalike." This is only needed with the internal IFI when building with -DBUILD_IFI_EXECUTABLES=ON (the -B option to compile_upp.sh). +]]) + + +load("netcdf-cxx4/4.3.1") diff --git a/modulefiles/jet_external_ifi.lua b/modulefiles/jet_external_ifi.lua new file mode 100644 index 000000000..1e960e4a1 --- /dev/null +++ b/modulefiles/jet_external_ifi.lua @@ -0,0 +1,6 @@ +help([[ +Load external libIFI for UPP on hera +]]) + +prepend_path("MODULEPATH", "/lfs5/BMC/ifi/modulefiles") +load("ifi/20241001-intel-2022.1.2") diff --git a/modulefiles/jet_ifi_test_prereqs.lua b/modulefiles/jet_ifi_test_prereqs.lua new file mode 100644 index 000000000..4f6f079ff --- /dev/null +++ b/modulefiles/jet_ifi_test_prereqs.lua @@ -0,0 +1,6 @@ +help([[ +Load prerequisites for IFI's own internal test programs and its "fip2 lookalike." This is only needed with the internal IFI when building with -DBUILD_IFI_EXECUTABLES=ON (the -B option to compile_upp.sh). +]]) + + +load("netcdf-cxx4/4.3.1") diff --git a/sorc/libIFI.fd b/sorc/libIFI.fd index 1ba827087..179cae1dd 160000 --- a/sorc/libIFI.fd +++ b/sorc/libIFI.fd @@ -1 +1 @@ -Subproject commit 1ba8270870947b583cd51bc72ff8960f4c1fb36e +Subproject commit 179cae1dd84401cf25d250bd9102e66560a9d328 diff --git a/sorc/ncep_post.fd/IFI.F b/sorc/ncep_post.fd/IFI.F index aa94a8c03..ce4dbc86a 100644 --- a/sorc/ncep_post.fd/IFI.F +++ b/sorc/ncep_post.fd/IFI.F @@ -834,12 +834,16 @@ END SUBROUTINE EXCH_c_float ! Initialize the IFI algorithm + if(me==0) print *,'IFI.F: initialize algorithm data structures' call ifi_check(algo%init(ifi_config,fcst_lead_sec,hybr_vars,ME,NUM_PROCS,MPI_COMM_COMP), & 'could not initialize IFI algorithm') ! Run the IFI algorithm + if(me==0) print *,'IFI.F: calculate exner function' call ifi_check(algo%calc_exner(),'calc_exner() failed') + + if(me==0) print *,'IFI.F: interpolate from hybrid levels to pressure levels' call ifi_check(algo%hybrid_to_pressure(),'hybrid_to_pressure() failed') call ifi_check(algo%get_pres_vars(pres_vars),'get_pres_vars()') @@ -850,6 +854,7 @@ END SUBROUTINE EXCH_c_float call ifi_check(algo%discard_hybrid_level_vars(),'discard_hybrid_level_vars() failed') + if(me==0) print *,'IFI.F: calculate model-derived fields' call ifi_check(algo%derive_fields(),'derive_fields() failed') call ifi_check(algo%get_derived_vars(derived_vars),'get_derived_vars()') @@ -858,6 +863,7 @@ END SUBROUTINE EXCH_c_float call write_fip_output(derived_vars,fcst_lead_sec,trim(outfile),.false.,'z1','z0') endif + if(me==0) print *,'IFI.F: run FIP algorithm' call ifi_check(algo%run_fip_algo(),'run_fip_algo() failed') call ifi_check(algo%get_fip_algo_vars(pres_vars),'get_fip_algo_vars()') @@ -868,6 +874,8 @@ END SUBROUTINE EXCH_c_float call ifi_check(algo%discard_pressure_level_vars(),'discard_pressure_level_vars() failed') call ifi_check(algo%discard_derived_vars(),'discard_derived_vars() failed') + + if(me==0) print *,'IFI.F: interpolate from pressure levels to flight levels' call ifi_check(algo%pressure_to_flight(),'pressure_to_flight() failed') call ifi_check(algo%get_flight_vars(flight_vars),'get_flight_vars()') @@ -877,6 +885,8 @@ END SUBROUTINE EXCH_c_float endif call ifi_check(algo%discard_fip_algo_vars(),'discard_fip_algo_vars() failed') + + if(me==0) print *,'IFI.F: calculate the icing category' call ifi_check(algo%make_icing_category(),'make_icing_category() failed') ! Get the final output fields: @@ -888,11 +898,14 @@ END SUBROUTINE EXCH_c_float call write_fip_output(cat_vars,fcst_lead_sec,trim(outfile),.false.,'z1','z0') endif + if(me==0) print *,'IFI.F: copy data from libIFI data structures to UPP arrays' call send_data(cat_vars,'ICE_PROB',1007) call send_data(cat_vars,'SLD',1008) call send_data(cat_vars,'ICE_SEV_CAT',1009) call send_data(cat_vars,'WMO_ICE_SEV_CAT',1010) - + + if(me==0) print *,'IFI.F: done' + ! When this subroutine ends, a Fortran-2003-compliant compiler ! will free all memory IFI uses, by calling the destructors (final ! routines) for cat_vars, hybr_vars, algo, and config. @@ -941,7 +954,8 @@ subroutine find_range(var,count,missing_value_is_set,missing_value,min_not_miss, integer :: i,type,iret real(kind=ifi_real_t), parameter :: zero = 0 - print *,'find range begin' + ! write(0,*) 'find range begin' + ! write(0,*) 'first index = ',var(1) if(missing_value_is_set) then epsilon = abs(missing_value)*1e-4 @@ -953,7 +967,7 @@ subroutine find_range(var,count,missing_value_is_set,missing_value,min_not_miss, ! Initialize to out-of-bounds values so they'll stay that way if no valid values are found: minv = 1e30 maxv = -1e30 - + ! write(0,*)'find_range count',count ! Find the min and max values in the array: if(missing_value_is_set) then !$OMP PARALLEL DO REDUCTION(min:minv) REDUCTION(max:maxv) @@ -989,7 +1003,7 @@ subroutine find_range(var,count,missing_value_is_set,missing_value,min_not_miss, ! If min or max are inf, -inf, or NaN, assume all values are missing. all_missing = global_minv<-9e9 .or. global_minv>9e9 .or. global_maxv<-9e9 .or. global_maxv>9e9 - print *,'range min,max = ',global_minv,global_maxv + !print *,'range min,max = ',global_minv,global_maxv if(all_missing) then min_not_miss=-1 @@ -999,7 +1013,7 @@ subroutine find_range(var,count,missing_value_is_set,missing_value,min_not_miss, max_not_miss=global_maxv endif - print *,'find range end' + !print *,'find range end' end subroutine find_range !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! @@ -1018,7 +1032,7 @@ subroutine nc_check(code,file,message) 93 format(A,': ',A,': ',A,'(',I0,')') end subroutine nc_check - subroutine write_fip_output(ifi_data,fcst_lead_sec,output_file,rename,z2dname,z3dname) + subroutine write_fip_output(ifi_data,fcst_lead_sec,output_file,rename,z2dname,z3dname,z_dim_data) use ifi_mod use iso_c_binding use netcdf @@ -1029,6 +1043,9 @@ subroutine write_fip_output(ifi_data,fcst_lead_sec,output_file,rename,z2dname,z3 logical, intent(in) :: rename double precision, intent(in) :: fcst_lead_sec character(len=*), intent(in) :: z2dname,z3dname + + real, optional :: z_dim_data(:) + type var_info character(len=maxname) :: varname, outname integer :: varid, ndims, dims(4), dimids(4), count @@ -1052,7 +1069,7 @@ subroutine write_fip_output(ifi_data,fcst_lead_sec,output_file,rename,z2dname,z3 character(len=200) :: varname,nextname - integer :: dimids(4), ncid, ivar, id, nvars, nx0, ny0, nz0, ntime, dims(4) + integer :: dimids(4), ncid, ivar, id, nvars, nx0, ny0, nz0, ntime, dims(4), z_varid type(var_info),target :: var_data(maxvars) if(me==0) then @@ -1070,6 +1087,19 @@ subroutine write_fip_output(ifi_data,fcst_lead_sec,output_file,rename,z2dname,z3 varname=' ' ! special value indicating "start at the beginning" + if(me == 0) then + write(*,'(A,A)') output_file,': cataloging variables and defining NetCDF file' + endif + + if(present(z_dim_data)) then + if(size(z_dim_data) == nz0) then + call nc_check(def_axis_var(z3dname, z_dim_data, dimids(3), z_varid), output_file, 'def_axis_var') + else if(me == 0) then +102 format('Error: length of z dimension data (',I0,') differs from z dimension (',I0,')') + write(0,102) size(z_dim_data),size(z_dim_data),nz0 + endif + endif + ivar=0 do while(ivar read_var(var_data(ivar),trim(varname),var_data(ivar)%should_dealloc) + nullify(var_data(ivar)%data) + + call set_dims(var_data(ivar),rename,dims,dimids) + if(me==0) then - call set_dims(var_data(ivar),dims,dimids) - var_data(ivar)%varid = def_var(var_data(ivar),rename) + var_data(ivar)%varid = def_var(var_data(ivar)) endif enddo - if(me/=0) then - ! Ranks that are not writing are done now - return - endif - nvars=ivar if(nvars<1) then - write(*,"(A,A)") output_file,': no data to write!' + if(me == 0) then + write(*,"(A,A)") output_file,': no data to write!' + endif return endif - call nc_check(nf90_enddef(ncid),output_file,'nf90_enddef') + if(me == 0) then + call nc_check(nf90_enddef(ncid),output_file,'nf90_enddef') + write(*,"(A,A)") output_file,': write data' + endif + + if(present(z_dim_data)) then + if(size(z_dim_data) == nz0) then + call write_axis_var(z3dname, z_dim_data, dimids(3), z_varid) + endif + endif - write(*,*) 'before write loop ',me do ivar=1,nvars -24 format(' put var ',A) - print 24,trim(var_data(ivar)%varname) + varname = var_data(ivar)%varname + nullify(var_data(ivar)%data) + var_data(ivar)%data => read_var(var_data(ivar),trim(var_data(ivar)%varname), & + var_data(ivar)%should_dealloc) ! updates "should_dealloc" - call find_range(var_data(ivar)%data,var_data(ivar)%count, & + if(me == 0) then + call find_range(var_data(ivar)%data,var_data(ivar)%count, & var_data(ivar)%missing_value_is_set,var_data(ivar)%missing_value,& var_data(ivar)%min_not_miss,var_data(ivar)%max_not_miss, & var_data(ivar)%all_missing) - call write_var(var_data(ivar)) + call write_var(var_data(ivar)) + endif if(var_data(ivar)%should_dealloc) then deallocate(var_data(ivar)%data) endif nullify(var_data(ivar)%data) enddo - call nc_check(nf90_close(ncid),output_file,"nf90_close") + if(me == 0) then + call nc_check(nf90_close(ncid),output_file,"nf90_close") + write(*,"(A,A)") output_file,': done writing data' + endif contains - subroutine set_dims(var,dims,dimids) + subroutine set_dims(var,rename,dims,dimids) implicit none type(var_info), intent(inout), target :: var + logical, intent(in) :: rename integer, intent(in) :: dims(:), dimids(:) + character(len=:), pointer :: varname + real(kind=ifi_real_t), pointer :: local_data_1D(:) varname=>var%varname(1:len_trim(var%varname)) - if(me/=0) then - ! Ranks that are not writing are done now - return + ! Get the variable's dimensions. + local_data_1D => ifi_data%get_data(trim(varname),var%missing_value_is_set,var%missing_value, & + ims,ime,jms,jme,kms,kme, ids,ide,jds,jde,kds,kde, ips,ipe,jps,jpe,kps,kpe) + + if(rename) then + var%outname=var%varname + select case(trim(var%varname)) + case('CIMIXR') + var%outname = 'ICMR' + case('SPFH') + var%outname = 'MIXR' + case('GRLE') + var%outname = 'GRMR' + case('CAPE_surface') + var%outname = 'CAPE' + case('CIN_surface') + var%outname = 'CIN' + case('CLMR') + var%outname = 'CLWMR' + case('APCP_surface') + var%outname = 'APCP1Hr' + end select endif + var%ims=ims ; var%ime=ime ; var%jms=jms ; var%jme=jme ; var%kms=kms ; var%kme=kme + var%ids=ids ; var%ide=ide ; var%jds=jds ; var%jde=jde ; var%kds=kds ; var%kde=kde + var%ips=ips ; var%ipe=ipe ; var%jps=jps ; var%jpe=jpe ; var%kps=kps ; var%kpe=kpe + ! These must also be in IFITest.cc IFITest::write_netcdf if(varname=='x' .or. varname=='x0') then @@ -1191,6 +1262,7 @@ subroutine set_dims(var,dims,dimids) end subroutine set_dims subroutine write_var(var) + use ctlblk_mod, only: spval implicit none type(var_info), intent(inout) :: var @@ -1210,47 +1282,39 @@ subroutine write_var(var) start=ones,count=dims), & output_file,"nf90_put_var "//trim(var%outname)) + ! call nc_check(nf90_redef(ncid), & + ! output_file, "nf90_redef to write attributes for "//trim(var%outname)) + call nc_check(nf90_put_att(ncid,var%varid,"min_value",var%min_not_miss), & output_file,"nf90_put_att "//trim(var%outname)//" min_value") call nc_check(nf90_put_att(ncid,var%varid,"max_value",var%max_not_miss), & output_file,"nf90_put_att "//trim(var%outname)//" max_value") + if(var%missing_value_is_set) then + call nc_check(nf90_put_att(ncid,var%varid,"_FillValue",var%missing_value), & + output_file,"nf90_put_att "//trim(var%outname)//" _FillValue") + else + if(me==0) then + print *,'Warning: no missing value for ',trim(var%varname),' (will use spval)' + endif + call nc_check(nf90_put_att(ncid,var%varid,"_FillValue",spval), & + output_file,"nf90_put_att "//trim(var%outname)//" _FillValue") + endif + + ! call nc_check(nf90_enddef(ncid),output_file,'nf90_enddef') + end subroutine write_var - integer function def_var(var,rename) + integer function def_var(var) + use ctlblk_mod, only: spval use iso_c_binding, only: c_float implicit none - logical :: rename type(var_info), intent(inout) :: var integer :: varid, xtype, dimids(var%ndims) character(len=100) :: outname - if(rename) then - var%outname=var%varname - select case(trim(var%varname)) - case('CIMIXR') - var%outname = 'ICMR' - case('SPFH') - var%outname = 'MIXR' - case('GRLE') - var%outname = 'GRMR' - case('CAPE_surface') - var%outname = 'CAPE' - case('CIN_surface') - var%outname = 'CIN' - case('CLMR') - var%outname = 'CLWMR' - case('APCP_surface') - var%outname = 'APCP1Hr' - end select - endif - - var%ims=ims ; var%ime=ime ; var%jms=jms ; var%jme=jme ; var%kms=kms ; var%kme=kme - var%ids=ids ; var%ide=ide ; var%jds=jds ; var%jde=jde ; var%kds=kds ; var%kde=kde - var%ips=ips ; var%ipe=ipe ; var%jps=jps ; var%jpe=jpe ; var%kps=kps ; var%kpe=kpe - dimids = var%dimids(1:var%ndims) if(ifi_real_t==c_float) then @@ -1268,14 +1332,62 @@ integer function def_var(var,rename) call nc_check(nf90_put_att(ncid,def_var,"max_value",var%max_not_miss), & output_file,"nf90_put_att "//trim(var%outname)//" max_value") - if(var%missing_value_is_set) then - call nc_check(nf90_put_att(ncid,def_var,"_FillValue",-9999.0), & - output_file,"nf90_put_att "//trim(var%outname)//" _FillValue") - end if + call nc_check(nf90_put_att(ncid,def_var,"_FillValue",-9999.0), & + output_file,"nf90_put_att "//trim(var%outname)//" _FillValue") end function def_var + subroutine write_axis_var(name, values, dimid, varid) + use ctlblk_mod, only: spval + use iso_c_binding, only: c_float + implicit none + character(len=*), intent(in) :: name + integer, intent(in) :: varid + real(ifi_real_t), intent(in) :: values(:) + integer, intent(in) :: dimid + + integer :: dimids(1), xtype, ones(1) + + if(me/=0) then + ! Ranks that are not writing are done now + return + endif + + ones = 1 + dimids = dimid + + call nc_check(nf90_put_var(ncid=ncid,varid=varid,values=values, & + start=ones,count=dimids), & + output_file,"nf90_put_var "//trim(name)) + + end subroutine write_axis_var + + integer function def_axis_var(name, values, dimid, varid) + use ctlblk_mod, only: spval + use iso_c_binding, only: c_float + implicit none + character(len=*), intent(in) :: name + real(ifi_real_t), intent(in) :: values(:) + integer, intent(in) :: dimid + integer, intent(inout) :: varid + + integer :: dimids(1), xtype + + dimids = dimid + + if(ifi_real_t==c_float) then + xtype = NF90_FLOAT + else + xtype = NF90_DOUBLE + endif + + call nc_check(nf90_def_var(ncid,trim(name),xtype,dimids,def_axis_var), & + output_file,"nf90_def_var "//trim(name)) + + end function def_axis_var + function read_var(var,varname,should_dealloc) + use ctlblk_mod, only: spval use mpi implicit none type(var_info), intent(inout) :: var @@ -1286,7 +1398,7 @@ function read_var(var,varname,should_dealloc) real(kind=ifi_real_t), allocatable :: local_data(:,:),global_data(:,:) real(kind=ifi_real_t), pointer :: global_data_1D(:) - + real(kind=ifi_real_t) :: local integer :: nxny_local,nxny_global,nz,count,i,j,k integer :: local_ilen,local_jlen,local_klen,local_index integer :: global_ilen,global_jlen,global_klen,global_index, ierr @@ -1295,6 +1407,8 @@ function read_var(var,varname,should_dealloc) local_data_1D => ifi_data%get_data(trim(varname),var%missing_value_is_set,var%missing_value, & ims,ime,jms,jme,kms,kme, ids,ide,jds,jde,kds,kde, ips,ipe,jps,jpe,kps,kpe) + !print *,'local 1D',local_data_1D(1) + global_ilen=ide-ids+1 global_jlen=jde-jds+1 global_klen=kde-kds+1 @@ -1352,7 +1466,12 @@ function read_var(var,varname,should_dealloc) do k=kds,kde do j=jps,jpe do i=ips,ipe - local_data(i-ips+1,j-jps+1) = local_data_1D( 1 + (i-ims) + ((j-jms) + (k-kms)*(jme-jms+1))*(ime-ims+1) ) + local = local_data_1D( 1 + (i-ims) + ((j-jms) + (k-kms)*(jme-jms+1))*(ime-ims+1) ) + if(.not. (local < spval)) then + ! The default missing value in FIP2 is -9999 + local = -9999 + endif + local_data(i-ips+1,j-jps+1) = local enddo enddo call gather_for_write(local_data,global_data,0) @@ -1366,6 +1485,11 @@ function read_var(var,varname,should_dealloc) endif enddo + ! if(me == 0) then + ! print *,'global 1D',global_data_1D(1) + ! print *,'global 2D', global_data(1,1) + ! endif + ! Ranks that are not writing data are done. if(me/=0) then ! This rank does not have the global data, and will not use the data anyway, diff --git a/sorc/ncep_post.fd/INITPOST_NETCDF.f b/sorc/ncep_post.fd/INITPOST_NETCDF.f index 23b1a2e95..6e1a9ecd0 100644 --- a/sorc/ncep_post.fd/INITPOST_NETCDF.f +++ b/sorc/ncep_post.fd/INITPOST_NETCDF.f @@ -57,6 +57,7 @@ !> 2024-05-10 | Karina Asmar | Read omega from model output and calculate HGT for hydrostatic runs !> 2024-06-25 | Wen Meng | Add capability to read fhzero as either an integer or float !> 2024-08-26 | Karina Asmar | Add temporal u/v, speed max wind components at 10m agl +!> 2024-10-11 | Sam Trahan | Fixed an incorrect array length in read_netcdf_3d_para !> !> @author Hui-Ya Chuang @date 2016-03-04 !---------------------------------------------------------------------- @@ -4049,7 +4050,7 @@ subroutine read_netcdf_3d_para(ncid,im,jm,ista,ista_2l,iend,iend_2u,jsta,jsta_2l implicit none INCLUDE "mpif.h" - character(len=20),intent(in) :: varname + character(len=*),intent(in) :: varname real,intent(in) :: spval integer,intent(in) :: ncid,im,jm,lm,jsta_2l,jend_2u,jsta,jend integer,intent(in) :: ista_2l,iend_2u,ista,iend diff --git a/tests/compile_upp.sh b/tests/compile_upp.sh index bce87b787..64f0c5434 100755 --- a/tests/compile_upp.sh +++ b/tests/compile_upp.sh @@ -8,38 +8,51 @@ set -eu usage() { echo - echo "Usage: $0 [-p] [-g] [-w] [-v] [-c] [-i] [-d] -h" + echo "Usage: $0 [options]" echo echo " -p installation prefix DEFAULT: ../install" echo " -g build with GTG(users with gtg repos. access only) DEFAULT: OFF" - echo " -I build with libIFI(users with ifi repos. access only) DEFAULT: OFF" echo " -i build with libIFI(users with ifi install access only) DEFAULT: OFF" + echo " -I build with libIFI (users with ifi repos. access only) DEFAULT: OFF" + echo " -B build libIFI test programs (only valid with -I) DEFAULT: OFF" echo " -n build without nemsio DEFAULT: ON" echo " -w build without WRF-IO DEFAULT: ON" echo " -v build with cmake verbose DEFAULT: NO" echo " -c Compiler to use for build DEFAULT: intel" echo " -d Debug mode of CMAKE_BUILD_TYPE DEFAULT: Release" + echo " -Doption=value Passes this option to cmake (can use more than once)" echo " -h display this message and quit" echo exit 1 } +load_ifi_module=NO prefix="../install" ifi_opt=" -DBUILD_WITH_IFI=OFF" +build_ifi_executables_opt=" " +build_ifi_executables=NO gtg_opt=" -DBUILD_WITH_GTG=OFF" nemsio_opt=" -DBUILD_WITH_NEMSIO=ON" wrfio_opt=" -DBUILD_WITH_WRFIO=ON" +more=" " compiler="intel" verbose_opt="" debug_opt="" -while getopts ":p:gnwc:vhiId" opt; do +while getopts ":p:gnwc:vhiIdBD:" opt; do case $opt in + D) + more="$more -$opt$OPTARG" + ;; p) prefix=$OPTARG ;; g) gtg_opt=" -DBUILD_WITH_GTG=ON" ;; + B) + build_ifi_executables_opt=" -DBUILD_IFI_EXECUTABLES=ON" + build_ifi_executables=YES + ;; n) nemsio_opt=" -DBUILD_WITH_NEMSIO=OFF" ;; @@ -51,6 +64,7 @@ while getopts ":p:gnwc:vhiId" opt; do ;; i) ifi_opt=" -DREQUIRE_IFI=ON" + load_ifi_module=YES ;; c) compiler=$OPTARG @@ -74,7 +88,7 @@ if [[ ! -z $debug_opt && $ifi_opt =~ INTERNAL.*=ON ]] ; then debug_opt="$debug_opt -DIFI_DEBUG=ON" fi -cmake_opts=" -DCMAKE_INSTALL_PREFIX=$prefix"${nemsio_opt}${wrfio_opt}${gtg_opt}${ifi_opt}${debug_opt} +cmake_opts=" -DCMAKE_INSTALL_PREFIX=$prefix"${nemsio_opt}${wrfio_opt}${gtg_opt}${ifi_opt}${debug_opt}${build_ifi_executables_opt}${more} if [[ $(uname -s) == Darwin ]]; then readonly MYDIR=$(cd "$(dirname "$(greadlink -f -n "${BASH_SOURCE[0]}" )" )" && pwd -P) @@ -110,6 +124,14 @@ if [[ $MACHINE_ID != "unknown" ]]; then exit 1 fi module load $modulefile + if [[ "$load_ifi_module" == YES ]] ; then + echo "Loading modulefile for external libIFI library" + module load ${modulefile}_external_ifi + fi + if [[ "$build_ifi_executables" == YES ]] ; then + echo "Loading libIFI executables' prerequisites" + module load ${modulefile}_ifi_test_prereqs + fi module list fi @@ -123,3 +145,6 @@ make install rm -rf $PATHTR/exec && mkdir -p $PATHTR/exec cp $prefix/bin/upp.x $PATHTR/exec/. +if [[ "$build_ifi_executables" == YES ]] ; then + cp $prefix/bin/fip2-lookalike.x $PATHTR/exec/. +fi diff --git a/tests/logs/rt.log.HERA b/tests/logs/rt.log.HERA index a6db0a20c..b42ff20e5 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: -59dd480958e9ac6f16a0878bb6ec52be78ed57ef +11dc42891b03185dbafbed90d8743a8a20f1a150 Submodule hashes: --1ba8270870947b583cd51bc72ff8960f4c1fb36e sorc/libIFI.fd +-6104d2c5d656d32123cde7088aa1e1acde2d8094 sorc/libIFI.fd -529f870d33b65c3b6c1aa3c3236b94efc3bd336d sorc/ncep_post.fd/post_gtg.fd -Run directory: /scratch2/NAGAPE/epic/Gillian.Petro/RTs/upp-rts/1060/ci/rundir/upp-HERA +Run directory: /scratch2/NAGAPE/epic/Gillian.Petro/RTs/upp-rts/1056/ci/rundir/upp-HERA Baseline directory: /scratch2/NAGAPE/epic/UPP/test_suite -Total runtime: 00h:11m:41s -Test Date: 20241009 13:23:59 +Total runtime: 00h:10m:50s +Test Date: 20241010 19:47:10 Summary Results: -10/09 13:17:06Z -fv3gefs pe test: your new post executable generates bit-identical geaer.t00z.master.grb2f060 as the trunk -10/09 13:17:09Z -fv3gefs test: your new post executable generates bit-identical geaer.t00z.master.grb2f060 as the trunk -10/09 13:17:19Z -fv3hafs test: your new post executable generates bit-identical HURPRS09.tm00 as the trunk -10/09 13:17:20Z -fv3hafs pe test: your new post executable generates bit-identical HURPRS09.tm00 as the trunk -10/09 13:17:38Z -hrrr test: your new post executable generates bit-identical WRFTWO.GrbF04 as the trunk -10/09 13:17:40Z -hrrr test: your new post executable generates bit-identical WRFPRS.GrbF04 as the trunk -10/09 13:17:42Z -fv3r test: your new post executable generates bit-identical PRSLEV10.tm00 as the trunk -10/09 13:17:43Z -hrrr test: your new post executable generates bit-identical WRFNAT.GrbF04 as the trunk -10/09 13:17:58Z -rap test: your new post executable generates bit-identical WRFPRS.GrbF16 as the trunk -10/09 13:18:22Z -rap test: your new post executable generates bit-identical WRFNAT.GrbF16 as the trunk -10/09 13:18:26Z -fv3r test: your new post executable generates bit-identical NATLEV10.tm00 as the trunk -10/09 13:18:28Z -rap pe test: your new post executable did generate changed results in WRFPRS.GrbF16 -10/09 13:18:33Z -hrrr pe test: your new post executable generates bit-identical WRFTWO.GrbF04 as the trunk -10/09 13:18:35Z -rap pe test: your new post executable generates bit-identical WRFNAT.GrbF16 as the trunk -10/09 13:18:36Z -fv3r pe test: your new post executable generates bit-identical PRSLEV10.tm00 as the trunk -10/09 13:18:36Z -rtma pe test: your new post executable generates bit-identical NATLEV00.tm00 as the trunk -10/09 13:18:40Z -hrrr pe test: your new post executable generates bit-identical WRFPRS.GrbF04 as the trunk -10/09 13:18:43Z -hrrr pe test: your new post executable generates bit-identical WRFNAT.GrbF04 as the trunk -10/09 13:18:44Z -rtma test: your new post executable generates bit-identical NATLEV00.tm00 as the trunk -10/09 13:18:52Z -fv3r pe test: your new post executable generates bit-identical NATLEV10.tm00 as the trunk -10/09 13:18:53Z -rtma pe test: your new post executable generates bit-identical PRSLEV00.tm00 as the trunk -10/09 13:18:53Z -rtma test: your new post executable generates bit-identical PRSLEV00.tm00 as the trunk -10/09 13:18:56Z -rtma test: your new post executable generates bit-identical IFIFIP00.tm00 as the trunk -10/09 13:18:56Z -rtma pe test: your new post executable generates bit-identical IFIFIP00.tm00 as the trunk -10/09 13:19:41Z -nmmb pe test: your new post executable generates bit-identical BGDAWP03.tm00.Grib2 as the trunk -10/09 13:19:42Z -nmmb pe test: your new post executable generates bit-identical BGRD3D03.tm00.Grib2 as the trunk -10/09 13:19:43Z -nmmb pe test: your new post executable generates bit-identical BGRDSF03.tm00.Grib2 as the trunk -10/09 13:19:45Z -nmmb test: your new post executable generates bit-identical BGDAWP03.tm00.Grib2 as the trunk -10/09 13:19:46Z -nmmb test: your new post executable generates bit-identical BGRD3D03.tm00.Grib2 as the trunk -10/09 13:19:47Z -nmmb test: your new post executable generates bit-identical BGRDSF03.tm00.Grib2 as the trunk -10/09 13:22:23Z -fv3gfs test: your new post executable generates bit-identical gfs.t00z.master.grb2f006 as the trunk -10/09 13:22:27Z -fv3gfs test: your new post executable generates bit-identical gfs.t00z.sfluxgrbf006.grib2 as the trunk -10/09 13:22:27Z -fv3gfs test: your new post executable generates bit-identical gfs.t00z.special.grb2f006 as the trunk -10/09 13:23:52Z -fv3gfs pe test: your new post executable generates bit-identical gfs.t00z.master.grb2f006 as the trunk -10/09 13:23:54Z -fv3gfs pe test: your new post executable generates bit-identical gfs.t00z.sfluxgrbf006.grib2 as the trunk -10/09 13:23:54Z -fv3gfs pe test: your new post executable generates bit-identical gfs.t00z.special.grb2f006 as the trunk -10/09 13:19:53Z -Runtime: nmmb_test 00:02:54 -- baseline 00:01:00 -10/09 13:19:53Z -Runtime: nmmb_pe_test 00:02:46 -- baseline 00:01:00 -10/09 13:19:53Z -Runtime: fv3gefs_test 00:00:16 -- baseline 00:40:00 -10/09 13:19:54Z -Runtime: fv3gefs_pe_test 00:00:22 -- baseline 00:40:00 -10/09 13:19:54Z -Runtime: rap_test 00:01:38 -- baseline 00:02:00 -10/09 13:19:54Z -Runtime: rap_pe_test 00:01:42 -- baseline 00:02:00 -10/09 13:19:55Z -Runtime: hrrr_test 00:02:31 -- baseline 00:02:00 -10/09 13:19:55Z -Runtime: hrrr_pe_test 00:02:26 -- baseline 00:02:00 -10/09 13:22:41Z -Runtime: fv3gfs_test 00:07:36 -- baseline 00:15:00 -10/09 13:23:57Z -Runtime: fv3gfs_pe_test 00:07:50 -- baseline 00:15:00 -10/09 13:23:57Z -Runtime: fv3r_test 00:02:17 -- baseline 00:03:00 -10/09 13:23:58Z -Runtime: fv3r_pe_test 00:02:12 -- baseline 00:03:00 -10/09 13:23:58Z -Runtime: fv3hafs_test 00:00:35 -- baseline 00:03:00 -10/09 13:23:58Z -Runtime: fv3hafs_pe_test 00:00:36 -- baseline 00:03:00 -10/09 13:23:59Z -Runtime: rtma_test 00:02:36 -- baseline 00:03:00 -10/09 13:23:59Z -Runtime: rtma_test_pe_test 00:02:51 -- baseline +10/10 19:39:13Z -fv3gefs pe test: your new post executable generates bit-identical geaer.t00z.master.grb2f060 as the trunk +10/10 19:39:33Z -fv3gefs test: your new post executable generates bit-identical geaer.t00z.master.grb2f060 as the trunk +10/10 19:39:39Z -fv3hafs test: your new post executable generates bit-identical HURPRS09.tm00 as the trunk +10/10 19:39:47Z -fv3hafs pe test: your new post executable generates bit-identical HURPRS09.tm00 as the trunk +10/10 19:40:00Z -nmmb pe test: your new post executable generates bit-identical BGDAWP03.tm00.Grib2 as the trunk +10/10 19:40:01Z -nmmb pe test: your new post executable generates bit-identical BGRD3D03.tm00.Grib2 as the trunk +10/10 19:40:02Z -nmmb pe test: your new post executable generates bit-identical BGRDSF03.tm00.Grib2 as the trunk +10/10 19:40:03Z -nmmb test: your new post executable generates bit-identical BGDAWP03.tm00.Grib2 as the trunk +10/10 19:40:05Z -nmmb test: your new post executable generates bit-identical BGRD3D03.tm00.Grib2 as the trunk +10/10 19:40:05Z -nmmb test: your new post executable generates bit-identical BGRDSF03.tm00.Grib2 as the trunk +10/10 19:40:08Z -rap test: your new post executable generates bit-identical WRFPRS.GrbF16 as the trunk +10/10 19:40:10Z -rap test: your new post executable generates bit-identical WRFNAT.GrbF16 as the trunk +10/10 19:40:25Z -rap pe test: your new post executable did generate changed results in WRFPRS.GrbF16 +10/10 19:40:26Z -rap pe test: your new post executable generates bit-identical WRFNAT.GrbF16 as the trunk +10/10 19:40:30Z -fv3r test: your new post executable generates bit-identical PRSLEV10.tm00 as the trunk +10/10 19:40:35Z -fv3r test: your new post executable generates bit-identical NATLEV10.tm00 as the trunk +10/10 19:40:36Z -fv3r pe test: your new post executable generates bit-identical PRSLEV10.tm00 as the trunk +10/10 19:40:39Z -rtma pe test: your new post executable generates bit-identical NATLEV00.tm00 as the trunk +10/10 19:40:42Z -rtma pe test: your new post executable generates bit-identical PRSLEV00.tm00 as the trunk +10/10 19:40:42Z -fv3r pe test: your new post executable generates bit-identical NATLEV10.tm00 as the trunk +10/10 19:40:43Z -rtma pe test: your new post executable generates bit-identical IFIFIP00.tm00 as the trunk +10/10 19:40:43Z -rtma test: your new post executable generates bit-identical NATLEV00.tm00 as the trunk +10/10 19:40:47Z -rtma test: your new post executable generates bit-identical PRSLEV00.tm00 as the trunk +10/10 19:40:47Z -rtma test: your new post executable generates bit-identical IFIFIP00.tm00 as the trunk +10/10 19:40:55Z -hrrr pe test: your new post executable generates bit-identical WRFTWO.GrbF04 as the trunk +10/10 19:40:56Z -hrrr pe test: your new post executable generates bit-identical WRFPRS.GrbF04 as the trunk +10/10 19:40:59Z -hrrr pe test: your new post executable generates bit-identical WRFNAT.GrbF04 as the trunk +10/10 19:41:17Z -hrrr test: your new post executable generates bit-identical WRFTWO.GrbF04 as the trunk +10/10 19:41:18Z -hrrr test: your new post executable generates bit-identical WRFPRS.GrbF04 as the trunk +10/10 19:41:19Z -hrrr test: your new post executable generates bit-identical WRFNAT.GrbF04 as the trunk +10/10 19:46:12Z -fv3gfs test: your new post executable generates bit-identical gfs.t00z.master.grb2f006 as the trunk +10/10 19:46:16Z -fv3gfs test: your new post executable generates bit-identical gfs.t00z.sfluxgrbf006.grib2 as the trunk +10/10 19:46:16Z -fv3gfs test: your new post executable generates bit-identical gfs.t00z.special.grb2f006 as the trunk +10/10 19:46:55Z -fv3gfs pe test: your new post executable generates bit-identical gfs.t00z.master.grb2f006 as the trunk +10/10 19:46:58Z -fv3gfs pe test: your new post executable generates bit-identical gfs.t00z.sfluxgrbf006.grib2 as the trunk +10/10 19:46:58Z -fv3gfs pe test: your new post executable generates bit-identical gfs.t00z.special.grb2f006 as the trunk +10/10 19:40:17Z -Runtime: nmmb_test 00:01:21 -- baseline 00:01:00 +10/10 19:40:17Z -Runtime: nmmb_pe_test 00:00:52 -- baseline 00:01:00 +10/10 19:40:17Z -Runtime: fv3gefs_test 00:00:23 -- baseline 00:40:00 +10/10 19:40:18Z -Runtime: fv3gefs_pe_test 00:00:22 -- baseline 00:40:00 +10/10 19:40:18Z -Runtime: rap_test 00:01:08 -- baseline 00:02:00 +10/10 19:40:33Z -Runtime: rap_pe_test 00:01:16 -- baseline 00:02:00 +10/10 19:41:34Z -Runtime: hrrr_test 00:02:25 -- baseline 00:02:00 +10/10 19:41:35Z -Runtime: hrrr_pe_test 00:02:11 -- baseline 00:02:00 +10/10 19:46:22Z -Runtime: fv3gfs_test 00:07:18 -- baseline 00:15:00 +10/10 19:47:08Z -Runtime: fv3gfs_pe_test 00:08:00 -- baseline 00:15:00 +10/10 19:47:08Z -Runtime: fv3r_test 00:01:37 -- baseline 00:03:00 +10/10 19:47:08Z -Runtime: fv3r_pe_test 00:01:45 -- baseline 00:03:00 +10/10 19:47:09Z -Runtime: fv3hafs_test 00:00:37 -- baseline 00:03:00 +10/10 19:47:09Z -Runtime: fv3hafs_pe_test 00:00:38 -- baseline 00:03:00 +10/10 19:47:09Z -Runtime: rtma_test 00:01:49 -- baseline 00:03:00 +10/10 19:47:09Z -Runtime: rtma_test_pe_test 00:01:48 -- 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 238eae5de..e0676f4f9 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: -59dd480958e9ac6f16a0878bb6ec52be78ed57ef +11dc42891b03185dbafbed90d8743a8a20f1a150 Submodule hashes: --1ba8270870947b583cd51bc72ff8960f4c1fb36e sorc/libIFI.fd +-6104d2c5d656d32123cde7088aa1e1acde2d8094 sorc/libIFI.fd -529f870d33b65c3b6c1aa3c3236b94efc3bd336d sorc/ncep_post.fd/post_gtg.fd -Run directory: /work/noaa/epic/gpetro/RTs/upp-rts/hercules/1060/ci/rundir/upp-HERCULES +Run directory: /work/noaa/epic/gpetro/RTs/upp-rts/hercules/1056/ci/rundir/upp-HERCULES Baseline directory: /work/noaa/epic/UPP -Total runtime: 00h:12m:36s -Test Date: 20241009 08:24:39 +Total runtime: 00h:12m:14s +Test Date: 20241010 14:48:39 Summary Results: -10/09 13:15:11Z -fv3gefs test: your new post executable generates bit-identical geaer.t00z.master.grb2f060 as the trunk -10/09 13:15:15Z -fv3gefs pe test: your new post executable generates bit-identical geaer.t00z.master.grb2f060 as the trunk -10/09 13:15:31Z -fv3hafs pe test: your new post executable generates bit-identical HURPRS09.tm00 as the trunk -10/09 13:15:31Z -fv3hafs test: your new post executable generates bit-identical HURPRS09.tm00 as the trunk -10/09 13:15:55Z -rap test: your new post executable generates bit-identical WRFPRS.GrbF16 as the trunk -10/09 13:15:56Z -rap test: your new post executable generates bit-identical WRFNAT.GrbF16 as the trunk -10/09 13:15:58Z -rap pe test: your new post executable did generate changed results in WRFPRS.GrbF16 -10/09 13:15:59Z -rap pe test: your new post executable generates bit-identical WRFNAT.GrbF16 as the trunk -10/09 13:16:37Z -nmmb test: your new post executable generates bit-identical BGDAWP03.tm00.Grib2 as the trunk -10/09 13:16:38Z -nmmb test: your new post executable generates bit-identical BGRD3D03.tm00.Grib2 as the trunk -10/09 13:16:39Z -nmmb test: your new post executable generates bit-identical BGRDSF03.tm00.Grib2 as the trunk -10/09 13:16:41Z -nmmb pe test: your new post executable generates bit-identical BGDAWP03.tm00.Grib2 as the trunk -10/09 13:16:48Z -nmmb pe test: your new post executable generates bit-identical BGRD3D03.tm00.Grib2 as the trunk -10/09 13:16:48Z -fv3r test: your new post executable generates bit-identical PRSLEV10.tm00 as the trunk -10/09 13:16:49Z -nmmb pe test: your new post executable generates bit-identical BGRDSF03.tm00.Grib2 as the trunk -10/09 13:16:53Z -hrrr pe test: your new post executable generates bit-identical WRFTWO.GrbF04 as the trunk -10/09 13:16:53Z -fv3r test: your new post executable generates bit-identical NATLEV10.tm00 as the trunk -10/09 13:16:54Z -hrrr pe test: your new post executable generates bit-identical WRFPRS.GrbF04 as the trunk -10/09 13:16:56Z -hrrr pe test: your new post executable generates bit-identical WRFNAT.GrbF04 as the trunk -10/09 13:17:01Z -fv3r pe test: your new post executable generates bit-identical PRSLEV10.tm00 as the trunk -10/09 13:17:04Z -fv3r pe test: your new post executable generates bit-identical NATLEV10.tm00 as the trunk -10/09 13:17:07Z -rtma pe test: your new post executable generates bit-identical NATLEV00.tm00 as the trunk -10/09 13:17:08Z -rtma test: your new post executable generates bit-identical NATLEV00.tm00 as the trunk -10/09 13:17:10Z -rtma pe test: your new post executable generates bit-identical PRSLEV00.tm00 as the trunk -10/09 13:17:10Z -rtma pe test: your new post executable generates bit-identical IFIFIP00.tm00 as the trunk -10/09 13:17:13Z -rtma test: your new post executable generates bit-identical PRSLEV00.tm00 as the trunk -10/09 13:17:13Z -rtma test: your new post executable generates bit-identical IFIFIP00.tm00 as the trunk -10/09 13:19:49Z -hrrr test: your new post executable generates bit-identical WRFTWO.GrbF04 as the trunk -10/09 13:19:50Z -hrrr test: your new post executable generates bit-identical WRFPRS.GrbF04 as the trunk -10/09 13:19:51Z -hrrr test: your new post executable generates bit-identical WRFNAT.GrbF04 as the trunk -10/09 13:22:05Z -fv3gfs pe test: your new post executable generates bit-identical gfs.t00z.master.grb2f006 as the trunk -10/09 13:22:06Z -fv3gfs pe test: your new post executable generates bit-identical gfs.t00z.sfluxgrbf006.grib2 as the trunk -10/09 13:22:06Z -fv3gfs pe test: your new post executable generates bit-identical gfs.t00z.special.grb2f006 as the trunk -10/09 13:24:30Z -fv3gfs test: your new post executable generates bit-identical gfs.t00z.master.grb2f006 as the trunk -10/09 13:24:31Z -fv3gfs test: your new post executable generates bit-identical gfs.t00z.sfluxgrbf006.grib2 as the trunk -10/09 13:24:31Z -fv3gfs test: your new post executable generates bit-identical gfs.t00z.special.grb2f006 as the trunk -10/09 13:16:51Z -Runtime: nmmb_test 00:01:48 -- baseline 00:03:00 -10/09 13:16:51Z -Runtime: nmmb_pe_test 00:01:59 -- baseline 00:03:00 -10/09 13:16:51Z -Runtime: fv3gefs_test 00:00:20 -- baseline 01:20:00 -10/09 13:16:51Z -Runtime: fv3gefs_pe_test 00:00:24 -- baseline 01:20:00 -10/09 13:16:51Z -Runtime: rap_test 00:01:05 -- baseline 00:02:00 -10/09 13:16:52Z -Runtime: rap_pe_test 00:01:08 -- baseline 00:02:00 -10/09 13:19:52Z -Runtime: hrrr_test 00:05:00 -- baseline 00:02:00 -10/09 13:19:52Z -Runtime: hrrr_pe_test 00:02:05 -- baseline 00:02:00 -10/09 13:24:38Z -Runtime: fv3gfs_test 00:09:40 -- baseline 00:18:00 -10/09 13:24:38Z -Runtime: fv3gfs_pe_test 00:07:15 -- baseline 00:18:00 -10/09 13:24:39Z -Runtime: fv3r_test 00:02:02 -- baseline 00:03:00 -10/09 13:24:39Z -Runtime: fv3r_pe_test 00:02:13 -- baseline 00:03:00 -10/09 13:24:39Z -Runtime: fv3hafs_test 00:00:40 -- baseline 00:00:40 -10/09 13:24:39Z -Runtime: fv3hafs_pe_test 00:00:40 -- baseline 00:00:40 -10/09 13:24:39Z -Runtime: rtma_test 00:02:22 -- baseline 00:04:00 -10/09 13:24:39Z -Runtime: rtma_pe_test 00:02:17 -- baseline 00:04:00 +10/10 19:39:07Z -fv3gefs test: your new post executable generates bit-identical geaer.t00z.master.grb2f060 as the trunk +10/10 19:39:10Z -fv3gefs pe test: your new post executable generates bit-identical geaer.t00z.master.grb2f060 as the trunk +10/10 19:39:25Z -fv3hafs test: your new post executable generates bit-identical HURPRS09.tm00 as the trunk +10/10 19:39:38Z -fv3hafs pe test: your new post executable generates bit-identical HURPRS09.tm00 as the trunk +10/10 19:39:41Z -rap test: your new post executable generates bit-identical WRFPRS.GrbF16 as the trunk +10/10 19:39:42Z -rap test: your new post executable generates bit-identical WRFNAT.GrbF16 as the trunk +10/10 19:39:46Z -rap pe test: your new post executable did generate changed results in WRFPRS.GrbF16 +10/10 19:39:46Z -rap pe test: your new post executable generates bit-identical WRFNAT.GrbF16 as the trunk +10/10 19:40:02Z -nmmb pe test: your new post executable generates bit-identical BGDAWP03.tm00.Grib2 as the trunk +10/10 19:40:03Z -nmmb pe test: your new post executable generates bit-identical BGRD3D03.tm00.Grib2 as the trunk +10/10 19:40:03Z -nmmb pe test: your new post executable generates bit-identical BGRDSF03.tm00.Grib2 as the trunk +10/10 19:40:08Z -nmmb test: your new post executable generates bit-identical BGDAWP03.tm00.Grib2 as the trunk +10/10 19:40:09Z -nmmb test: your new post executable generates bit-identical BGRD3D03.tm00.Grib2 as the trunk +10/10 19:40:09Z -nmmb test: your new post executable generates bit-identical BGRDSF03.tm00.Grib2 as the trunk +10/10 19:40:36Z -hrrr pe test: your new post executable generates bit-identical WRFTWO.GrbF04 as the trunk +10/10 19:40:36Z -hrrr pe test: your new post executable generates bit-identical WRFPRS.GrbF04 as the trunk +10/10 19:40:38Z -hrrr pe test: your new post executable generates bit-identical WRFNAT.GrbF04 as the trunk +10/10 19:40:41Z -fv3r test: your new post executable generates bit-identical PRSLEV10.tm00 as the trunk +10/10 19:40:44Z -fv3r test: your new post executable generates bit-identical NATLEV10.tm00 as the trunk +10/10 19:40:51Z -fv3r pe test: your new post executable generates bit-identical PRSLEV10.tm00 as the trunk +10/10 19:40:54Z -fv3r pe test: your new post executable generates bit-identical NATLEV10.tm00 as the trunk +10/10 19:41:19Z -rtma test: your new post executable generates bit-identical NATLEV00.tm00 as the trunk +10/10 19:41:21Z -rtma test: your new post executable generates bit-identical PRSLEV00.tm00 as the trunk +10/10 19:41:21Z -rtma test: your new post executable generates bit-identical IFIFIP00.tm00 as the trunk +10/10 19:41:24Z -rtma pe test: your new post executable generates bit-identical NATLEV00.tm00 as the trunk +10/10 19:41:26Z -rtma pe test: your new post executable generates bit-identical PRSLEV00.tm00 as the trunk +10/10 19:41:27Z -rtma pe test: your new post executable generates bit-identical IFIFIP00.tm00 as the trunk +10/10 19:43:29Z -hrrr test: your new post executable generates bit-identical WRFTWO.GrbF04 as the trunk +10/10 19:43:30Z -hrrr test: your new post executable generates bit-identical WRFPRS.GrbF04 as the trunk +10/10 19:43:31Z -hrrr test: your new post executable generates bit-identical WRFNAT.GrbF04 as the trunk +10/10 19:45:37Z -fv3gfs pe test: your new post executable generates bit-identical gfs.t00z.master.grb2f006 as the trunk +10/10 19:45:38Z -fv3gfs pe test: your new post executable generates bit-identical gfs.t00z.sfluxgrbf006.grib2 as the trunk +10/10 19:45:38Z -fv3gfs pe test: your new post executable generates bit-identical gfs.t00z.special.grb2f006 as the trunk +10/10 19:48:25Z -fv3gfs test: your new post executable generates bit-identical gfs.t00z.master.grb2f006 as the trunk +10/10 19:48:26Z -fv3gfs test: your new post executable generates bit-identical gfs.t00z.sfluxgrbf006.grib2 as the trunk +10/10 19:48:26Z -fv3gfs test: your new post executable generates bit-identical gfs.t00z.special.grb2f006 as the trunk +10/10 19:40:21Z -Runtime: nmmb_test 00:01:18 -- baseline 00:03:00 +10/10 19:40:21Z -Runtime: nmmb_pe_test 00:01:13 -- baseline 00:03:00 +10/10 19:40:22Z -Runtime: fv3gefs_test 00:00:16 -- baseline 01:20:00 +10/10 19:40:22Z -Runtime: fv3gefs_pe_test 00:00:19 -- baseline 01:20:00 +10/10 19:40:22Z -Runtime: rap_test 00:00:51 -- baseline 00:02:00 +10/10 19:40:22Z -Runtime: rap_pe_test 00:00:55 -- baseline 00:02:00 +10/10 19:43:37Z -Runtime: hrrr_test 00:04:24 -- baseline 00:02:00 +10/10 19:43:38Z -Runtime: hrrr_pe_test 00:01:45 -- baseline 00:02:00 +10/10 19:48:38Z -Runtime: fv3gfs_test 00:09:33 -- baseline 00:18:00 +10/10 19:48:39Z -Runtime: fv3gfs_pe_test 00:06:45 -- baseline 00:18:00 +10/10 19:48:39Z -Runtime: fv3r_test 00:01:51 -- baseline 00:03:00 +10/10 19:48:39Z -Runtime: fv3r_pe_test 00:02:01 -- baseline 00:03:00 +10/10 19:48:39Z -Runtime: fv3hafs_test 00:00:32 -- baseline 00:00:40 +10/10 19:48:39Z -Runtime: fv3hafs_pe_test 00:00:32 -- baseline 00:00:40 +10/10 19:48:39Z -Runtime: rtma_test 00:02:15 -- baseline 00:04:00 +10/10 19:48:39Z -Runtime: rtma_pe_test 00:02:20 -- 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 05f0760df..5f71d1671 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: -59dd480958e9ac6f16a0878bb6ec52be78ed57ef +11dc42891b03185dbafbed90d8743a8a20f1a150 Submodule hashes: --1ba8270870947b583cd51bc72ff8960f4c1fb36e sorc/libIFI.fd +-6104d2c5d656d32123cde7088aa1e1acde2d8094 sorc/libIFI.fd -529f870d33b65c3b6c1aa3c3236b94efc3bd336d sorc/ncep_post.fd/post_gtg.fd -Run directory: /work/noaa/epic/gpetro/RTs/upp-rts/orion/1060/ci/rundir/upp-ORION +Run directory: /work/noaa/epic/gpetro/RTs/upp-rts/orion/1056/ci/rundir/upp-ORION Baseline directory: /work/noaa/epic/UPP -Total runtime: 00h:15m:50s -Test Date: 20241009 08:28:00 +Total runtime: 00h:18m:01s +Test Date: 20241010 14:54:28 Summary Results: -10/09 13:17:45Z -nmmb pe test: your new post executable generates bit-identical BGDAWP03.tm00.Grib2 as the trunk -10/09 13:17:46Z -nmmb pe test: your new post executable generates bit-identical BGRD3D03.tm00.Grib2 as the trunk -10/09 13:17:47Z -nmmb pe test: your new post executable generates bit-identical BGRDSF03.tm00.Grib2 as the trunk -10/09 13:17:55Z -nmmb test: your new post executable generates bit-identical BGDAWP03.tm00.Grib2 as the trunk -10/09 13:17:57Z -nmmb test: your new post executable generates bit-identical BGRD3D03.tm00.Grib2 as the trunk -10/09 13:17:57Z -nmmb test: your new post executable generates bit-identical BGRDSF03.tm00.Grib2 as the trunk -10/09 13:18:19Z -fv3gefs test: your new post executable generates bit-identical geaer.t00z.master.grb2f060 as the trunk -10/09 13:18:23Z -fv3gefs pe test: your new post executable generates bit-identical geaer.t00z.master.grb2f060 as the trunk -10/09 13:18:49Z -rap pe test: your new post executable did generate changed results in WRFPRS.GrbF16 -10/09 13:18:50Z -rap pe test: your new post executable generates bit-identical WRFNAT.GrbF16 as the trunk -10/09 13:19:12Z -fv3r test: your new post executable generates bit-identical PRSLEV10.tm00 as the trunk -10/09 13:19:16Z -fv3r test: your new post executable generates bit-identical NATLEV10.tm00 as the trunk -10/09 13:19:22Z -fv3r pe test: your new post executable generates bit-identical PRSLEV10.tm00 as the trunk -10/09 13:19:38Z -fv3r pe test: your new post executable generates bit-identical NATLEV10.tm00 as the trunk -10/09 13:19:48Z -rtma pe test: your new post executable generates bit-identical NATLEV00.tm00 as the trunk -10/09 13:19:52Z -rtma pe test: your new post executable generates bit-identical PRSLEV00.tm00 as the trunk -10/09 13:19:52Z -rtma pe test: your new post executable generates bit-identical IFIFIP00.tm00 as the trunk -10/09 13:19:56Z -rtma test: your new post executable generates bit-identical NATLEV00.tm00 as the trunk -10/09 13:19:59Z -rtma test: your new post executable generates bit-identical PRSLEV00.tm00 as the trunk -10/09 13:19:59Z -rtma test: your new post executable generates bit-identical IFIFIP00.tm00 as the trunk -10/09 13:20:36Z -fv3hafs test: your new post executable generates bit-identical HURPRS09.tm00 as the trunk -10/09 13:20:36Z -fv3hafs pe test: your new post executable generates bit-identical HURPRS09.tm00 as the trunk -10/09 13:21:28Z -rap test: your new post executable generates bit-identical WRFPRS.GrbF16 as the trunk -10/09 13:21:28Z -rap test: your new post executable generates bit-identical WRFNAT.GrbF16 as the trunk -10/09 13:21:36Z -hrrr pe test: your new post executable generates bit-identical WRFTWO.GrbF04 as the trunk -10/09 13:21:37Z -hrrr pe test: your new post executable generates bit-identical WRFPRS.GrbF04 as the trunk -10/09 13:21:39Z -hrrr pe test: your new post executable generates bit-identical WRFNAT.GrbF04 as the trunk -10/09 13:25:46Z -fv3gfs pe test: your new post executable generates bit-identical gfs.t00z.master.grb2f006 as the trunk -10/09 13:25:47Z -fv3gfs pe test: your new post executable generates bit-identical gfs.t00z.sfluxgrbf006.grib2 as the trunk -10/09 13:25:49Z -fv3gfs pe test: your new post executable generates bit-identical gfs.t00z.special.grb2f006 as the trunk -10/09 13:27:24Z -hrrr test: your new post executable generates bit-identical WRFTWO.GrbF04 as the trunk -10/09 13:27:25Z -hrrr test: your new post executable generates bit-identical WRFPRS.GrbF04 as the trunk -10/09 13:27:27Z -hrrr test: your new post executable generates bit-identical WRFNAT.GrbF04 as the trunk -10/09 13:27:58Z -fv3gfs test: your new post executable generates bit-identical gfs.t00z.master.grb2f006 as the trunk -10/09 13:27:59Z -fv3gfs test: your new post executable generates bit-identical gfs.t00z.sfluxgrbf006.grib2 as the trunk -10/09 13:27:59Z -fv3gfs test: your new post executable generates bit-identical gfs.t00z.special.grb2f006 as the trunk -10/09 13:17:58Z -Runtime: nmmb_test 00:02:21 -- baseline 00:03:00 -10/09 13:17:58Z -Runtime: nmmb_pe_test 00:02:08 -- baseline 00:03:00 -10/09 13:18:28Z -Runtime: fv3gefs_test 00:00:19 -- baseline 01:20:00 -10/09 13:18:28Z -Runtime: fv3gefs_pe_test 00:00:23 -- baseline 01:20:00 -10/09 13:21:29Z -Runtime: rap_test 00:01:29 -- baseline 00:02:00 -10/09 13:21:29Z -Runtime: rap_pe_test 00:01:50 -- baseline 00:02:00 -10/09 13:27:30Z -Runtime: hrrr_test 00:07:28 -- baseline 00:02:00 -10/09 13:27:30Z -Runtime: hrrr_pe_test 00:02:49 -- baseline 00:02:00 -10/09 13:28:00Z -Runtime: fv3gfs_test 00:11:04 -- baseline 00:18:00 -10/09 13:28:00Z -Runtime: fv3gfs_pe_test 00:09:20 -- baseline 00:18:00 -10/09 13:28:00Z -Runtime: fv3r_test 00:02:22 -- baseline 00:03:00 -10/09 13:28:00Z -Runtime: fv3r_pe_test 00:02:43 -- baseline 00:03:00 -10/09 13:28:00Z -Runtime: fv3hafs_test 00:00:37 -- baseline 00:00:40 -10/09 13:28:00Z -Runtime: fv3hafs_pe_test 00:00:37 -- baseline 00:00:40 -10/09 13:28:00Z -Runtime: rtma_test 00:02:59 -- baseline 00:04:00 -10/09 13:28:00Z -Runtime: rtma_pe_test 00:02:52 -- baseline 00:04:00 +10/10 19:41:27Z -nmmb pe test: your new post executable generates bit-identical BGDAWP03.tm00.Grib2 as the trunk +10/10 19:41:28Z -nmmb pe test: your new post executable generates bit-identical BGRD3D03.tm00.Grib2 as the trunk +10/10 19:41:29Z -nmmb test: your new post executable generates bit-identical BGDAWP03.tm00.Grib2 as the trunk +10/10 19:41:29Z -nmmb pe test: your new post executable generates bit-identical BGRDSF03.tm00.Grib2 as the trunk +10/10 19:41:30Z -nmmb test: your new post executable generates bit-identical BGRD3D03.tm00.Grib2 as the trunk +10/10 19:41:30Z -nmmb test: your new post executable generates bit-identical BGRDSF03.tm00.Grib2 as the trunk +10/10 19:43:54Z -fv3gefs test: your new post executable generates bit-identical geaer.t00z.master.grb2f060 as the trunk +10/10 19:43:59Z -fv3gefs pe test: your new post executable generates bit-identical geaer.t00z.master.grb2f060 as the trunk +10/10 19:44:12Z -fv3hafs pe test: your new post executable generates bit-identical HURPRS09.tm00 as the trunk +10/10 19:44:13Z -fv3hafs test: your new post executable generates bit-identical HURPRS09.tm00 as the trunk +10/10 19:44:53Z -rap pe test: your new post executable did generate changed results in WRFPRS.GrbF16 +10/10 19:44:54Z -rap pe test: your new post executable generates bit-identical WRFNAT.GrbF16 as the trunk +10/10 19:44:59Z -rap test: your new post executable generates bit-identical WRFPRS.GrbF16 as the trunk +10/10 19:45:00Z -rap test: your new post executable generates bit-identical WRFNAT.GrbF16 as the trunk +10/10 19:45:31Z -fv3r test: your new post executable generates bit-identical PRSLEV10.tm00 as the trunk +10/10 19:45:36Z -fv3r test: your new post executable generates bit-identical NATLEV10.tm00 as the trunk +10/10 19:45:38Z -fv3r pe test: your new post executable generates bit-identical PRSLEV10.tm00 as the trunk +10/10 19:45:42Z -fv3r pe test: your new post executable generates bit-identical NATLEV10.tm00 as the trunk +10/10 19:46:09Z -rtma test: your new post executable generates bit-identical NATLEV00.tm00 as the trunk +10/10 19:46:10Z -rtma pe test: your new post executable generates bit-identical NATLEV00.tm00 as the trunk +10/10 19:46:11Z -rtma test: your new post executable generates bit-identical PRSLEV00.tm00 as the trunk +10/10 19:46:12Z -rtma test: your new post executable generates bit-identical IFIFIP00.tm00 as the trunk +10/10 19:46:12Z -rtma pe test: your new post executable generates bit-identical PRSLEV00.tm00 as the trunk +10/10 19:46:12Z -rtma pe test: your new post executable generates bit-identical IFIFIP00.tm00 as the trunk +10/10 19:46:17Z -hrrr pe test: your new post executable generates bit-identical WRFTWO.GrbF04 as the trunk +10/10 19:46:18Z -hrrr pe test: your new post executable generates bit-identical WRFPRS.GrbF04 as the trunk +10/10 19:46:19Z -hrrr pe test: your new post executable generates bit-identical WRFNAT.GrbF04 as the trunk +10/10 19:50:31Z -hrrr test: your new post executable generates bit-identical WRFTWO.GrbF04 as the trunk +10/10 19:50:32Z -hrrr test: your new post executable generates bit-identical WRFPRS.GrbF04 as the trunk +10/10 19:50:34Z -hrrr test: your new post executable generates bit-identical WRFNAT.GrbF04 as the trunk +10/10 19:52:27Z -fv3gfs pe test: your new post executable generates bit-identical gfs.t00z.master.grb2f006 as the trunk +10/10 19:52:28Z -fv3gfs pe test: your new post executable generates bit-identical gfs.t00z.sfluxgrbf006.grib2 as the trunk +10/10 19:52:28Z -fv3gfs pe test: your new post executable generates bit-identical gfs.t00z.special.grb2f006 as the trunk +10/10 19:54:22Z -fv3gfs test: your new post executable generates bit-identical gfs.t00z.master.grb2f006 as the trunk +10/10 19:54:23Z -fv3gfs test: your new post executable generates bit-identical gfs.t00z.sfluxgrbf006.grib2 as the trunk +10/10 19:54:23Z -fv3gfs test: your new post executable generates bit-identical gfs.t00z.special.grb2f006 as the trunk +10/10 19:41:40Z -Runtime: nmmb_test 00:01:34 -- baseline 00:03:00 +10/10 19:41:41Z -Runtime: nmmb_pe_test 00:01:33 -- baseline 00:03:00 +10/10 19:43:56Z -Runtime: fv3gefs_test 00:00:18 -- baseline 01:20:00 +10/10 19:44:11Z -Runtime: fv3gefs_pe_test 00:00:23 -- baseline 01:20:00 +10/10 19:45:11Z -Runtime: rap_test 00:01:24 -- baseline 00:02:00 +10/10 19:45:11Z -Runtime: rap_pe_test 00:01:29 -- baseline 00:02:00 +10/10 19:50:42Z -Runtime: hrrr_test 00:06:58 -- baseline 00:02:00 +10/10 19:50:42Z -Runtime: hrrr_pe_test 00:02:45 -- baseline 00:02:00 +10/10 19:54:28Z -Runtime: fv3gfs_test 00:10:57 -- baseline 00:18:00 +10/10 19:54:28Z -Runtime: fv3gfs_pe_test 00:09:02 -- baseline 00:18:00 +10/10 19:54:28Z -Runtime: fv3r_test 00:02:10 -- baseline 00:03:00 +10/10 19:54:28Z -Runtime: fv3r_pe_test 00:02:16 -- baseline 00:03:00 +10/10 19:54:28Z -Runtime: fv3hafs_test 00:00:37 -- baseline 00:00:40 +10/10 19:54:28Z -Runtime: fv3hafs_pe_test 00:00:39 -- baseline 00:00:40 +10/10 19:54:28Z -Runtime: rtma_test 00:02:46 -- baseline 00:04:00 +10/10 19:54:28Z -Runtime: rtma_pe_test 00:02:46 -- baseline 00:04:00 No changes in test results detected. ===== End of UPP Regression Testing Log =====