From 3f9edb2fad7a145f1ca1f3803e1800201a186aed Mon Sep 17 00:00:00 2001 From: jordanschnell Date: Tue, 19 Mar 2024 16:12:16 +0000 Subject: [PATCH 01/16] Add capability to ingest RAP/HRRR smoke for IC/BC --- parm/varmap_tables/GSDphys_var_map.txt | 3 +- sorc/chgres_cube.fd/atm_input_data.F90 | 50 ++++++++++++++++++++++---- 2 files changed, 45 insertions(+), 8 deletions(-) diff --git a/parm/varmap_tables/GSDphys_var_map.txt b/parm/varmap_tables/GSDphys_var_map.txt index 28a5b0ca7..0d7215fea 100644 --- a/parm/varmap_tables/GSDphys_var_map.txt +++ b/parm/varmap_tables/GSDphys_var_map.txt @@ -24,4 +24,5 @@ cnwat cnwat set_to_fill 0.0 S icetk icetk set_to_fill 265.0 S weasd weasd set_to_fill 0.0 S snod snod set_to_fill 0.0 S -tprcp tprcp set_to_fill 0.0 S +tprcp tprcp set_to_fill 0.0 S +massden smoke set_to_fill 1E-12 T diff --git a/sorc/chgres_cube.fd/atm_input_data.F90 b/sorc/chgres_cube.fd/atm_input_data.F90 index fd7d254c1..1b1d76eb4 100644 --- a/sorc/chgres_cube.fd/atm_input_data.F90 +++ b/sorc/chgres_cube.fd/atm_input_data.F90 @@ -1978,7 +1978,7 @@ subroutine read_input_atm_grib2_file(localpet) integer, intent(in) :: localpet - integer, parameter :: ntrac_max=14 + integer, parameter :: ntrac_max=15 integer, parameter :: max_levs=1000 character(len=300) :: the_file @@ -2015,7 +2015,8 @@ subroutine read_input_atm_grib2_file(localpet) real(esmf_kind_r8), allocatable :: rlevs(:) real(esmf_kind_r4), allocatable :: dummy2d(:,:) real(esmf_kind_r8), allocatable :: dummy3d(:,:,:), dummy2d_8(:,:),& - u_tmp_3d(:,:,:), v_tmp_3d(:,:,:) + u_tmp_3d(:,:,:), v_tmp_3d(:,:,:),& + dummy3d_pres(:,:,:) real(esmf_kind_r8), pointer :: presptr(:,:,:), psptr(:,:),tptr(:,:,:), & qptr(:,:,:), wptr(:,:,:), & uptr(:,:,:), vptr(:,:,:) @@ -2030,18 +2031,19 @@ subroutine read_input_atm_grib2_file(localpet) tracers(:) = "NULL" - trac_names_oct10 = (/1, 1, 14, 1, 1, 1, 1, 6, 6, 1, 6, 13, 13, 2 /) - trac_names_oct11 = (/0, 22, 192, 23, 24, 25, 32, 1, 29, 100, 28, 193, 192, 2 /) + trac_names_oct10 = (/1, 1, 14, 1, 1, 1, 1, 6, 6, 1, 6, 13, 13, 2, 20 /) + trac_names_oct11 = (/0, 22, 192, 23, 24, 25, 32, 1, 29, 100, 28, 193, 192, 2, 0 /) + trac_names_vmap = (/"sphum ", "liq_wat ", "o3mr ", "ice_wat ", & "rainwat ", "snowwat ", "graupel ", "cld_amt ", "ice_nc ", & "rain_nc ", "water_nc", "liq_aero", "ice_aero", & - "sgs_tke "/) + "sgs_tke ", "massden"/) tracers_default = (/"sphum ", "liq_wat ", "o3mr ", "ice_wat ", & "rainwat ", "snowwat ", "graupel ", "cld_amt ", "ice_nc ", & "rain_nc ", "water_nc", "liq_aero", "ice_aero", & - "sgs_tke "/) + "sgs_tke ", "smoke "/) the_file = trim(data_dir_input_grid) // "/" // trim(grib2_file_input_grid) @@ -2393,11 +2395,19 @@ subroutine read_input_atm_grib2_file(localpet) allocate(dummy2d(i_input,j_input)) allocate(dummy2d_8(i_input,j_input)) allocate(dummy3d(i_input,j_input,lev_input)) + if (trim(external_model) .eq. 'RAP' .or. & ! for smoke conversion + trim(external_model) .eq. 'HRRR' ) then + allocate(dummy3d_pres(i_input,j_input,lev_input)) + endif allocate(dum2d_1(i_input,j_input)) else allocate(dummy2d(0,0)) allocate(dummy2d_8(0,0)) allocate(dummy3d(0,0,0)) + if (trim(external_model) .eq. 'RAP' .or. & ! for smoke conversion + trim(external_model) .eq. 'HRRR' ) then + allocate(dummy3d_pres(0,0,0)) + endif allocate(dum2d_1(0,0)) endif @@ -2457,12 +2467,26 @@ subroutine read_input_atm_grib2_file(localpet) call get_var_cond(vname,this_miss_var_method=method, this_miss_var_value=value, & this_field_var_name=tmpstr,loc=varnum) - if (n==1 .and. .not. hasspfh) then + if (n==1 .and. .not. hasspfh .or. & + ( (trim(external_model) .eq. 'RAP' .or. & ! for smoke conversion + trim(external_model) .eq. 'HRRR' ) .and. & + (tracers_input_vmap(n) == trac_names_vmap(15)))) then print*,"- CALL FieldGather TEMPERATURE." call ESMF_FieldGather(temp_input_grid,dummy3d,rootPet=0, tile=1, rc=rc) if(ESMF_logFoundError(rcToCheck=rc,msg=ESMF_LOGERR_PASSTHRU,line=__LINE__,file=__FILE__)) & call error_handler("IN FieldGet", rc) endif + + if ( (trim(external_model) .eq. 'RAP' .or. & ! for smoke conversion + trim(external_model) .eq. 'HRRR' ) .and. & + tracers_input_vmap(n) == trac_names_vmap(15)) then + print*,"- CALL FieldGather 3D Pressure." + call ESMF_FieldGather(pres_input_grid,dummy3d_pres,rootPet=0, tile=1, rc=rc) + if(ESMF_logFoundError(rcToCheck=rc,msg=ESMF_LOGERR_PASSTHRU,line=__LINE__,file=__FILE__)) & + call error_handler("IN FieldGet", rc) + else + continue ! massden/smoke only in RAP/HRRR + endif if (localpet == 0) then @@ -2557,6 +2581,18 @@ subroutine read_input_atm_grib2_file(localpet) end if endif + ! Convert smoke from mass density (RAP/HRRR = kg/m^3) to mixing ratio (ug/kg) + if ( (trim(external_model) .eq. 'RAP' .or. & + trim(external_model) .eq. 'HRRR' ) .and. & + tracers_input_vmap(n) == trac_names_vmap(15)) then + do i = 1, i_input + do j = 1, j_input + dummy2d(i,j) = dummy2d(i,j) * 1.0d9 * & + (287.05 * dummy3d(i,j,vlev) / dummy3d_pres(i,j,vlev)) + enddo + enddo + endif + dummy3d(:,:,vlev) = real(dummy2d,esmf_kind_r8) enddo !vlev From a513d2983b5fc668d80c4fbb2a0a484402441d9f Mon Sep 17 00:00:00 2001 From: jordanschnell Date: Tue, 19 Mar 2024 16:38:07 +0000 Subject: [PATCH 02/16] deallocate dummy3d_pres if allocated --- sorc/chgres_cube.fd/atm_input_data.F90 | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/sorc/chgres_cube.fd/atm_input_data.F90 b/sorc/chgres_cube.fd/atm_input_data.F90 index 1b1d76eb4..4a13d0ab3 100644 --- a/sorc/chgres_cube.fd/atm_input_data.F90 +++ b/sorc/chgres_cube.fd/atm_input_data.F90 @@ -2557,7 +2557,7 @@ subroutine read_input_atm_grib2_file(localpet) ". SET MISSING VARIABLE CONDITION TO 'INTRP' TO AVOID THIS ERROR.", 1) endif ! If entire array is empty and method is set to intrp, switch method to fill - if (trim(method) .eq. 'intrp' .and. all_empty) method='set_to_fill' + i if (trim(method) .eq. 'intrp' .and. all_empty) method='set_to_fill' call handle_grib_error(vname, slevs(vlev),method,value,varnum,read_from_input,iret,var=dummy2d) if (iret==1) then ! missing_var_method == skip or no entry @@ -2642,6 +2642,7 @@ subroutine read_input_atm_grib2_file(localpet) enddo deallocate(dummy3d_col_in, dummy3d_col_out) + if allocated(dummy3d_pres) deallocate(dummy3d_pres) call read_winds(u_tmp_3d,v_tmp_3d,localpet,octet_23,rlevs,lugb,pdt_num) From f3a0cdca85f06a57025b50df47dc9864f89b4eed Mon Sep 17 00:00:00 2001 From: jordanschnell Date: Tue, 19 Mar 2024 17:41:07 +0000 Subject: [PATCH 03/16] Fix typos --- sorc/chgres_cube.fd/atm_input_data.F90 | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/sorc/chgres_cube.fd/atm_input_data.F90 b/sorc/chgres_cube.fd/atm_input_data.F90 index 4a13d0ab3..15eb06cf8 100644 --- a/sorc/chgres_cube.fd/atm_input_data.F90 +++ b/sorc/chgres_cube.fd/atm_input_data.F90 @@ -2557,7 +2557,7 @@ subroutine read_input_atm_grib2_file(localpet) ". SET MISSING VARIABLE CONDITION TO 'INTRP' TO AVOID THIS ERROR.", 1) endif ! If entire array is empty and method is set to intrp, switch method to fill - i if (trim(method) .eq. 'intrp' .and. all_empty) method='set_to_fill' + if (trim(method) .eq. 'intrp' .and. all_empty) method='set_to_fill' call handle_grib_error(vname, slevs(vlev),method,value,varnum,read_from_input,iret,var=dummy2d) if (iret==1) then ! missing_var_method == skip or no entry @@ -2642,7 +2642,7 @@ subroutine read_input_atm_grib2_file(localpet) enddo deallocate(dummy3d_col_in, dummy3d_col_out) - if allocated(dummy3d_pres) deallocate(dummy3d_pres) + if (allocated(dummy3d_pres)) deallocate(dummy3d_pres) call read_winds(u_tmp_3d,v_tmp_3d,localpet,octet_23,rlevs,lugb,pdt_num) From 047e3f134ff07cf8cc6cfdb1618ef51005c9fedc Mon Sep 17 00:00:00 2001 From: jordanschnell Date: Tue, 19 Mar 2024 22:28:04 +0000 Subject: [PATCH 04/16] Explicit read of pressure during smoke portion of loop --- sorc/chgres_cube.fd/atm_input_data.F90 | 53 ++++++++++++++++++++------ 1 file changed, 42 insertions(+), 11 deletions(-) diff --git a/sorc/chgres_cube.fd/atm_input_data.F90 b/sorc/chgres_cube.fd/atm_input_data.F90 index 15eb06cf8..ef974e907 100644 --- a/sorc/chgres_cube.fd/atm_input_data.F90 +++ b/sorc/chgres_cube.fd/atm_input_data.F90 @@ -2470,7 +2470,7 @@ subroutine read_input_atm_grib2_file(localpet) if (n==1 .and. .not. hasspfh .or. & ( (trim(external_model) .eq. 'RAP' .or. & ! for smoke conversion trim(external_model) .eq. 'HRRR' ) .and. & - (tracers_input_vmap(n) == trac_names_vmap(15)))) then + tracers_input_vmap(n) == trac_names_vmap(15) )) then print*,"- CALL FieldGather TEMPERATURE." call ESMF_FieldGather(temp_input_grid,dummy3d,rootPet=0, tile=1, rc=rc) if(ESMF_logFoundError(rcToCheck=rc,msg=ESMF_LOGERR_PASSTHRU,line=__LINE__,file=__FILE__)) & @@ -2480,13 +2480,46 @@ subroutine read_input_atm_grib2_file(localpet) if ( (trim(external_model) .eq. 'RAP' .or. & ! for smoke conversion trim(external_model) .eq. 'HRRR' ) .and. & tracers_input_vmap(n) == trac_names_vmap(15)) then - print*,"- CALL FieldGather 3D Pressure." - call ESMF_FieldGather(pres_input_grid,dummy3d_pres,rootPet=0, tile=1, rc=rc) - if(ESMF_logFoundError(rcToCheck=rc,msg=ESMF_LOGERR_PASSTHRU,line=__LINE__,file=__FILE__)) & - call error_handler("IN FieldGet", rc) - else - continue ! massden/smoke only in RAP/HRRR + if (localpet == 0) then + + print*,"- READ PRESSURE FOR SMOKE CONVERSION." + + jdisc = 0 ! search for discipline - meteorological products + j = 0 ! search at beginning of file. + jpdt = -9999 ! array of values in product definition template, set towildcard + jids = -9999 ! array of values in identification section, set towildcard + jgdt = -9999 ! array of values in grid definition template, set towildcard + jgdtn = -1 ! search for any grid definition number. + jpdtn = pdt_num ! Search for the product definition template number. + jpdt(1) = 3 ! Sect4/oct 10 - parameter category - mass + jpdt(2) = 0 ! Sect4/oct 11 - parameter number - pressure + jpdt(10) = octet_23 ! Sect4/oct 23 - type of level. + unpack=.true. + + do vlev = 1, lev_input + + jpdt(12) = nint(rlevs(vlev)) + call getgb2(lugb, lugi, j, jdisc, jids, jpdtn, jpdt, jgdtn, jgdt, & + unpack, k, gfld, iret) + if (iret /= 0) then + call error_handler("READING IN PRESSURE AT LEVEL"//trim(slevs(vlev)),iret) + endif + + dum2d_1 = reshape(gfld%fld, (/i_input,j_input/) ) + + dummy3d_pres(:,:,vlev) = dum2d_1 + + enddo + + endif ! localpet == 0 + endif ! read pressure for smoke conversion + + if (tracers_input_vmap(n) == trac_names_vmap(15) .and. & + (trim(external_model) .ne. 'RAP' .and. & ! for smoke conversion + trim(external_model) .ne. 'HRRR' ) ) then + cycle ! Do not process smoke for non RAP/HRRR endif + if (localpet == 0) then @@ -2582,9 +2615,7 @@ subroutine read_input_atm_grib2_file(localpet) endif ! Convert smoke from mass density (RAP/HRRR = kg/m^3) to mixing ratio (ug/kg) - if ( (trim(external_model) .eq. 'RAP' .or. & - trim(external_model) .eq. 'HRRR' ) .and. & - tracers_input_vmap(n) == trac_names_vmap(15)) then + if ( tracers_input_vmap(n) == trac_names_vmap(15) ) then do i = 1, i_input do j = 1, j_input dummy2d(i,j) = dummy2d(i,j) * 1.0d9 * & @@ -2642,7 +2673,6 @@ subroutine read_input_atm_grib2_file(localpet) enddo deallocate(dummy3d_col_in, dummy3d_col_out) - if (allocated(dummy3d_pres)) deallocate(dummy3d_pres) call read_winds(u_tmp_3d,v_tmp_3d,localpet,octet_23,rlevs,lugb,pdt_num) @@ -2906,6 +2936,7 @@ subroutine read_input_atm_grib2_file(localpet) endif deallocate(dummy3d, dum2d_1) + if (allocated(dummy3d_pres)) deallocate(dummy3d_pres) !--------------------------------------------------------------------------- ! Convert from 2-d to 3-d component winds. From 9273b883163fa160b8be34b35fd9e82e80e76766 Mon Sep 17 00:00:00 2001 From: jordanschnell Date: Wed, 20 Mar 2024 13:37:28 +0000 Subject: [PATCH 05/16] cleanup --- sorc/chgres_cube.fd/atm_input_data.F90 | 2 ++ 1 file changed, 2 insertions(+) diff --git a/sorc/chgres_cube.fd/atm_input_data.F90 b/sorc/chgres_cube.fd/atm_input_data.F90 index ef974e907..834e58571 100644 --- a/sorc/chgres_cube.fd/atm_input_data.F90 +++ b/sorc/chgres_cube.fd/atm_input_data.F90 @@ -2480,6 +2480,7 @@ subroutine read_input_atm_grib2_file(localpet) if ( (trim(external_model) .eq. 'RAP' .or. & ! for smoke conversion trim(external_model) .eq. 'HRRR' ) .and. & tracers_input_vmap(n) == trac_names_vmap(15)) then + if (localpet == 0) then print*,"- READ PRESSURE FOR SMOKE CONVERSION." @@ -2512,6 +2513,7 @@ subroutine read_input_atm_grib2_file(localpet) enddo endif ! localpet == 0 + endif ! read pressure for smoke conversion if (tracers_input_vmap(n) == trac_names_vmap(15) .and. & From 8704aa4d7ad7096becfc1f28c0cbb23e37103984 Mon Sep 17 00:00:00 2001 From: jordanschnell Date: Wed, 20 Mar 2024 14:19:04 +0000 Subject: [PATCH 06/16] Fix character length in massden --- sorc/chgres_cube.fd/atm_input_data.F90 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sorc/chgres_cube.fd/atm_input_data.F90 b/sorc/chgres_cube.fd/atm_input_data.F90 index 834e58571..b9ed4dcbf 100644 --- a/sorc/chgres_cube.fd/atm_input_data.F90 +++ b/sorc/chgres_cube.fd/atm_input_data.F90 @@ -2038,7 +2038,7 @@ subroutine read_input_atm_grib2_file(localpet) trac_names_vmap = (/"sphum ", "liq_wat ", "o3mr ", "ice_wat ", & "rainwat ", "snowwat ", "graupel ", "cld_amt ", "ice_nc ", & "rain_nc ", "water_nc", "liq_aero", "ice_aero", & - "sgs_tke ", "massden"/) + "sgs_tke ", "massden "/) tracers_default = (/"sphum ", "liq_wat ", "o3mr ", "ice_wat ", & "rainwat ", "snowwat ", "graupel ", "cld_amt ", "ice_nc ", & From fb62769b467797fce8a7f8866226cd5dc00ac4f1 Mon Sep 17 00:00:00 2001 From: jordanschnell Date: Wed, 2 Oct 2024 19:53:55 +0000 Subject: [PATCH 07/16] Created seperate file that contains smoke variable and removed smoke from the original varmap --- parm/varmap_tables/GSDphys_smoke_var_map.txt | 28 ++++++++++++++++++++ parm/varmap_tables/GSDphys_var_map.txt | 1 - 2 files changed, 28 insertions(+), 1 deletion(-) create mode 100644 parm/varmap_tables/GSDphys_smoke_var_map.txt diff --git a/parm/varmap_tables/GSDphys_smoke_var_map.txt b/parm/varmap_tables/GSDphys_smoke_var_map.txt new file mode 100644 index 000000000..0d7215fea --- /dev/null +++ b/parm/varmap_tables/GSDphys_smoke_var_map.txt @@ -0,0 +1,28 @@ +dzdt dzdt set_to_fill 0 D +delta_p delp skip 0 D +sphum sphum intrp 1E-7 T +liq_wat liq_wat intrp 0 T +o3mr o3mr intrp 1E-7 T +rainwat rainwat intrp 0 T +ice_wat ice_wat intrp 0 T +snowwat snowwat intrp 0 T +graupel graupel intrp 0 T +ice_nc ice_nc intrp -1.0 T +rain_nc rain_nc intrp -1.0 T +water_nc water_nc intrp -1.0 T +liq_aero liq_aero intrp 0 T +ice_aero ice_aero intrp 0 T +sgs_tke sgs_tke intrp 0 T +vtype vtype skip 0 S +sotype stype skip 0 S +vfrac vfrac skip 0 S +fricv uustar skip 0 S +sfcr zorl set_to_fill 0.01 S +soilw smc stop 0 S +soilt stc stop 0 S +cnwat cnwat set_to_fill 0.0 S +icetk icetk set_to_fill 265.0 S +weasd weasd set_to_fill 0.0 S +snod snod set_to_fill 0.0 S +tprcp tprcp set_to_fill 0.0 S +massden smoke set_to_fill 1E-12 T diff --git a/parm/varmap_tables/GSDphys_var_map.txt b/parm/varmap_tables/GSDphys_var_map.txt index 0d7215fea..05544006a 100644 --- a/parm/varmap_tables/GSDphys_var_map.txt +++ b/parm/varmap_tables/GSDphys_var_map.txt @@ -25,4 +25,3 @@ icetk icetk set_to_fill 265.0 S weasd weasd set_to_fill 0.0 S snod snod set_to_fill 0.0 S tprcp tprcp set_to_fill 0.0 S -massden smoke set_to_fill 1E-12 T From 89db7a9785049bb22487bf8b77bb905bcf3a63c0 Mon Sep 17 00:00:00 2001 From: jordanschnell Date: Wed, 16 Oct 2024 15:40:03 +0000 Subject: [PATCH 08/16] add regtests for smoke --- .../chgres_cube/13km.conus.rap-smoke.grib2.sh | 102 ++++++++++++++++++ reg_tests/chgres_cube/driver.jet.sh | 92 +++++++++++----- 2 files changed, 166 insertions(+), 28 deletions(-) create mode 100755 reg_tests/chgres_cube/13km.conus.rap-smoke.grib2.sh diff --git a/reg_tests/chgres_cube/13km.conus.rap-smoke.grib2.sh b/reg_tests/chgres_cube/13km.conus.rap-smoke.grib2.sh new file mode 100755 index 000000000..e80e05794 --- /dev/null +++ b/reg_tests/chgres_cube/13km.conus.rap-smoke.grib2.sh @@ -0,0 +1,102 @@ +#!/bin/bash + +#----------------------------------------------------------------------------- +# Invoke chgres to create 13-km CONUS coldstart files using RAP GRIB2 data +# as input. The coldstart files are then compared to baseline files +# using the 'nccmp' utility. This script is run by the machine specific +# driver script. +#----------------------------------------------------------------------------- + +set -x + +export DATA=$OUTDIR/13km_conus_rap-smoke_grib2 +rm -fr $DATA + +export CRES=778 +export KMRES=13km +export FIXfv3=${HOMEreg}/fix/RRFS_CONUS_${KMRES} + +export COMIN=${HOMEreg}/input_data/rap.grib2 + +export GRIB2_FILE_INPUT=1921221000900 +export VCOORD_FILE=${HOMEufs}/fix/am/global_hyblev.l64.txt +export VARMAP_FILE=${HOMEufs}/parm/varmap_tables/GSDphys_smoke_var_map.txt +export INPUT_TYPE='grib2' +export CONVERT_NST=".false." +export OROG_FILES_TARGET_GRID="C778_oro_data.tile7.nc" +export REGIONAL=1 +export HALO_BLEND=0 +export HALO_BNDY=4 +export CDATE=2019080100 +export EXTERNAL_MODEL="RAP" +export NSOILL_OUT=9 +export TRACERS_TARGET='"NULL"' +export TRACERS_INPUT='"NULL"' +export SOTYP_FROM_CLIMO=.false. +export VGTYP_FROM_CLIMO=.false. +export VGFRC_FROM_CLIMO=.true. +export MINMAX_VGFRC_FROM_CLIMO=.true. +export TG3_FROM_SOIL=.true. +export LAI_FROM_CLIMO=.true. +export GEOGRID_FILE_INPUT=${HOMEufs}/fix/am/geo_em.d01.nc_RAPX + +export OMP_NUM_THREADS_CH=${OMP_NUM_THREADS:-1} + +NCCMP=${NCCMP:-$(which nccmp)} + +#----------------------------------------------------------------------------- +# Invoke chgres program. +#----------------------------------------------------------------------------- + +echo "Starting at: " `date` + +${HOMEufs}/ush/chgres_cube.sh + +iret=$? +if [ $iret -ne 0 ]; then + set +x + echo "<<< 13-km CONUS RAP-SMOKE W/ GSD PHYSICS AND SFC FROM FILE GRIB2 TEST FAILED. <<<" + exit $iret +fi + +echo "Ending at: " `date` + +#----------------------------------------------------------------------------- +# Compare output from chgres to baseline set of data. +# +# orion's nccmp utility does not work with the netcdf +# required to run ufs_utils. So swap it. +#----------------------------------------------------------------------------- + +machine=${machine:-NULL} +if [ $machine == 'orion' ]; then + module unload netcdfp/4.7.4.release + module load netcdf/4.7.2 +fi + +cd $DATA + +test_failed=0 +for files in *.nc +do + if [ -f $files ]; then + echo CHECK $files + $NCCMP -dmfqS $files $HOMEreg/baseline_data/13km_conus_rap_grib2/$files + iret=$? + if [ $iret -ne 0 ]; then + test_failed=1 + fi + fi +done + +set +x +if [ $test_failed -ne 0 ]; then + echo "<<< 13-km CONUS RAP-SMOKE W/ GSD PHYSICS AND SFC FROM FILE GRIB2 TEST FAILED. >>>" + if [ "$UPDATE_BASELINE" = "TRUE" ]; then + $HOMEufs/reg_tests/update_baseline.sh $HOMEreg "13km_conus_rap-smoke_grib2" $commit_num + fi +else + echo "<<< 13-km CONUS RAP-SMOKE W/ GSD PHYSICS AND SFC FROM FILE GRIB2 TEST PASSED. >>>" +fi + +exit 0 diff --git a/reg_tests/chgres_cube/driver.jet.sh b/reg_tests/chgres_cube/driver.jet.sh index f3b5ec1b5..0d2b9c42d 100755 --- a/reg_tests/chgres_cube/driver.jet.sh +++ b/reg_tests/chgres_cube/driver.jet.sh @@ -7,15 +7,15 @@ # Set WORK_DIR to a general working location outside the UFS_UTILS directory. # The exact working directory (OUTDIR) will be WORK_DIR/reg_tests/chgres-cube. # Set the PROJECT_CODE and QUEUE as appropriate. To see which projects you -# are authorized to use, type "account_params". +#are authorized to use, type "account_params". # # Invoke the script with no arguments. A series of daisy- # chained jobs will be submitted. To check the queue, type: # "squeue -u USERNAME". # -# The run output will be stored in OUTDIR. Standard output from -# each test will be placed in its own log file. Once the suite -# has completed, a summary of results is placed in SUM_FILE. +# The run output will be stored in OUTDIR. Log output from the suite +# will be in LOG_FILE. Once the suite has completed, a summary is +# placed in SUM_FILE. # # A test fails when its output does not match the baseline files as # determined by the "nccmp" utility. The baseline files are stored in @@ -33,7 +33,7 @@ module list export OUTDIR="${WORK_DIR:-/lfs5/HFIP/emcda/$LOGNAME/stmp}" export OUTDIR="${OUTDIR}/reg-tests/chgres-cube" -PROJECT_CODE="${PROJECT_CODE:-hfv3gfs}" +PROJECT_CODE="rtwbl" #"${PROJECT_CODE:-hfv3gfs}" QUEUE="${QUEUE:-batch}" export machine="jet" @@ -85,104 +85,140 @@ TEST2=$(sbatch --parsable --partition=xjet --nodes=2 --ntasks-per-node=6 -t 0:10 --exclusive -o $LOG_FILE -e $LOG_FILE ./c192.fv3.history.sh) #----------------------------------------------------------------------------- -# Initialize C96 using FV3 gaussian netcdf files. +# Initialize C96 using FV3 gaussian nemsio files. #----------------------------------------------------------------------------- LOG_FILE=consistency.log03 export OMP_NUM_THREADS=1 -TEST3=$(sbatch --parsable --partition=xjet --nodes=2 --ntasks-per-node=6 -t 0:10:00 -A $PROJECT_CODE -q $QUEUE -J c96.fv3.netcdf \ +TEST3=$(sbatch --parsable --partition=xjet --nodes=2 --ntasks-per-node=6 -t 0:10:00 -A $PROJECT_CODE -q $QUEUE -J c96.fv3.nemsio \ + --exclusive -o $LOG_FILE -e $LOG_FILE ./c96.fv3.nemsio.sh) + +#----------------------------------------------------------------------------- +# Initialize C96 using spectral GFS sigio/sfcio files. +#----------------------------------------------------------------------------- + +LOG_FILE=consistency.log04 +export OMP_NUM_THREADS=6 # should match cpus-per-task +TEST4=$(sbatch --parsable --partition=xjet --nodes=4 --ntasks-per-node=3 --cpus-per-task=6 -t 0:25:00 \ + --exclusive -A $PROJECT_CODE -q $QUEUE -J c96.gfs.sigio -o $LOG_FILE -e $LOG_FILE ./c96.gfs.sigio.sh) + +#----------------------------------------------------------------------------- +# Initialize C96 using spectral GFS gaussian nemsio files. +#----------------------------------------------------------------------------- + +LOG_FILE=consistency.log05 +export OMP_NUM_THREADS=1 +TEST5=$(sbatch --parsable --partition=xjet --nodes=1 --ntasks-per-node=6 -t 0:10:00 -A $PROJECT_CODE -q $QUEUE -J c96.gfs.nemsio \ + --exclusive -o $LOG_FILE -e $LOG_FILE ./c96.gfs.nemsio.sh) + +#----------------------------------------------------------------------------- +# Initialize C96 using FV3 gaussian netcdf files. +#----------------------------------------------------------------------------- + +LOG_FILE=consistency.log06 +export OMP_NUM_THREADS=1 +TEST6=$(sbatch --parsable --partition=xjet --nodes=2 --ntasks-per-node=6 -t 0:10:00 -A $PROJECT_CODE -q $QUEUE -J c96.fv3.netcdf \ --exclusive -o $LOG_FILE -e $LOG_FILE ./c96.fv3.netcdf.sh) #----------------------------------------------------------------------------- # Initialize C192 using GFS GRIB2 data. #----------------------------------------------------------------------------- -LOG_FILE=consistency.log04 +LOG_FILE=consistency.log07 export OMP_NUM_THREADS=1 -TEST4=$(sbatch --parsable --partition=xjet --nodes=1 --ntasks-per-node=6 -t 0:05:00 -A $PROJECT_CODE -q $QUEUE -J c192.gfs.grib2 \ +TEST7=$(sbatch --parsable --partition=xjet --nodes=1 --ntasks-per-node=6 -t 0:05:00 -A $PROJECT_CODE -q $QUEUE -J c192.gfs.grib2 \ --exclusive -o $LOG_FILE -e $LOG_FILE ./c192.gfs.grib2.sh) #----------------------------------------------------------------------------- # Initialize CONUS 25-KM USING GFS GRIB2 files. #----------------------------------------------------------------------------- -LOG_FILE=consistency.log05 +LOG_FILE=consistency.log08 export OMP_NUM_THREADS=1 # should match cpus-per-task -TEST5=$(sbatch --parsable --partition=xjet --ntasks-per-node=6 --nodes=1 -t 0:05:00 -A $PROJECT_CODE -q $QUEUE -J 25km.conus.gfs.grib2.conus \ +TEST8=$(sbatch --parsable --partition=xjet --ntasks-per-node=6 --nodes=1 -t 0:05:00 -A $PROJECT_CODE -q $QUEUE -J 25km.conus.gfs.grib2.conus \ --exclusive -o $LOG_FILE -e $LOG_FILE ./25km.conus.gfs.grib2.sh) #----------------------------------------------------------------------------- # Initialize CONUS 3-KM USING HRRR GRIB2 file WITH GFS PHYSICS. #----------------------------------------------------------------------------- -LOG_FILE=consistency.log06 +LOG_FILE=consistency.log09 export OMP_NUM_THREADS=1 # should match cpus-per-task -TEST6=$(sbatch --parsable --partition=xjet --ntasks-per-node=6 --nodes=2 -t 0:10:00 -A $PROJECT_CODE -q $QUEUE -J 3km.conus.hrrr.gfssdf.grib2.conus \ +TEST9=$(sbatch --parsable --partition=xjet --ntasks-per-node=6 --nodes=2 -t 0:10:00 -A $PROJECT_CODE -q $QUEUE -J 3km.conus.hrrr.gfssdf.grib2.conus \ --exclusive -o $LOG_FILE -e $LOG_FILE ./3km.conus.hrrr.gfssdf.grib2.sh) #----------------------------------------------------------------------------- # Initialize CONUS 3-KM USING HRRR GRIB2 file WITH GSD PHYSICS AND SFC VARS FROM FILE. #----------------------------------------------------------------------------- -LOG_FILE=consistency.log07 +LOG_FILE=consistency.log10 export OMP_NUM_THREADS=1 # should match cpus-per-task -TEST7=$(sbatch --parsable --partition=xjet --ntasks-per-node=6 --nodes=3 -t 0:10:00 -A $PROJECT_CODE -q $QUEUE -J 3km.conus.hrrr.newsfc.grib2.conus \ +TEST10=$(sbatch --parsable --partition=xjet --ntasks-per-node=6 --nodes=3 -t 0:10:00 -A $PROJECT_CODE -q $QUEUE -J 3km.conus.hrrr.newsfc.grib2.conus \ --exclusive -o $LOG_FILE -e $LOG_FILE ./3km.conus.hrrr.newsfc.grib2.sh) #----------------------------------------------------------------------------- # Initialize CONUS 13-KM USING NAM GRIB2 file WITH GFS PHYSICS . #----------------------------------------------------------------------------- -LOG_FILE=consistency.log08 +LOG_FILE=consistency.log11 export OMP_NUM_THREADS=1 # should match cpus-per-task -TEST8=$(sbatch --parsable --partition=xjet --ntasks-per-node=6 --nodes=1 -t 0:05:00 -A $PROJECT_CODE -q $QUEUE -J 13km.conus.nam.grib2.conus \ +TEST11=$(sbatch --parsable --partition=xjet --ntasks-per-node=6 --nodes=1 -t 0:05:00 -A $PROJECT_CODE -q $QUEUE -J 13km.conus.nam.grib2.conus \ --exclusive -o $LOG_FILE -e $LOG_FILE ./13km.conus.nam.grib2.sh) #----------------------------------------------------------------------------- # Initialize CONUS 13-KM USING RAP GRIB2 file WITH GSD PHYSICS . #----------------------------------------------------------------------------- -LOG_FILE=consistency.log09 +LOG_FILE=consistency.log12 export OMP_NUM_THREADS=1 # should match cpus-per-task -TEST9=$(sbatch --parsable --partition=xjet --ntasks-per-node=6 --nodes=1 -t 0:05:00 -A $PROJECT_CODE -q $QUEUE -J 13km.conus.rap.grib2.conus \ +TEST12=$(sbatch --parsable --partition=xjet --ntasks-per-node=6 --nodes=1 -t 0:05:00 -A $PROJECT_CODE -q $QUEUE -J 13km.conus.rap.grib2.conus \ --exclusive -o $LOG_FILE -e $LOG_FILE ./13km.conus.rap.grib2.sh) #----------------------------------------------------------------------------- # Initialize CONUS 13-KM NA USING NCEI GFS GRIB2 file WITH GFS PHYSICS . #----------------------------------------------------------------------------- -LOG_FILE=consistency.log10 +LOG_FILE=consistency.log13 export OMP_NUM_THREADS=1 # should match cpus-per-task -TEST10=$(sbatch --parsable --partition=xjet --ntasks-per-node=6 --nodes=2 -t 0:10:00 -A $PROJECT_CODE -q $QUEUE -J 13km.na.gfs.ncei.grib2.conus \ +TEST13=$(sbatch --parsable --partition=xjet --ntasks-per-node=6 --nodes=2 -t 0:10:00 -A $PROJECT_CODE -q $QUEUE -J 13km.na.gfs.ncei.grib2.conus \ --exclusive -o $LOG_FILE -e $LOG_FILE ./13km.na.gfs.ncei.grib2.sh) #----------------------------------------------------------------------------- # Initialize C96 WAM IC using FV3 gaussian netcdf files. #----------------------------------------------------------------------------- -LOG_FILE=consistency.log11 +LOG_FILE=consistency.log14 export OMP_NUM_THREADS=1 # should match cpus-per-task -TEST11=$(sbatch --parsable --partition=xjet --ntasks-per-node=6 --nodes=2 -t 0:15:00 -A $PROJECT_CODE -q $QUEUE -J c96.fv3.netcdf2wam \ +TEST14=$(sbatch --parsable --partition=xjet --ntasks-per-node=6 --nodes=2 -t 0:15:00 -A $PROJECT_CODE -q $QUEUE -J c96.fv3.netcdf2wam \ --exclusive -o $LOG_FILE -e $LOG_FILE ./c96.fv3.netcdf2wam.sh) #----------------------------------------------------------------------------- # Initialize CONUS 25-KM USING GFS PGRIB2+BGRIB2 files. #----------------------------------------------------------------------------- -LOG_FILE=consistency.log12 +LOG_FILE=consistency.log15 export OMP_NUM_THREADS=1 # should match cpus-per-task -TEST12=$(sbatch --parsable --partition=xjet --ntasks-per-node=6 --nodes=1 -t 0:05:00 -A $PROJECT_CODE -q $QUEUE -J 25km.conus.gfs.pbgrib2.conus \ +TEST15=$(sbatch --parsable --partition=xjet --ntasks-per-node=6 --nodes=1 -t 0:05:00 -A $PROJECT_CODE -q $QUEUE -J 25km.conus.gfs.pbgrib2.conus \ --exclusive -o $LOG_FILE -e $LOG_FILE ./25km.conus.gfs.pbgrib2.sh) #----------------------------------------------------------------------------- # Initialize C96 using GEFS GRIB2 data. #----------------------------------------------------------------------------- -LOG_FILE=consistency.log13 +LOG_FILE=consistency.log16 export OMP_NUM_THREADS=1 -TEST13=$(sbatch --parsable --partition=xjet --nodes=1 --ntasks-per-node=6 -t 0:05:00 -A $PROJECT_CODE -q $QUEUE -J c96.gefs.grib2 \ +TEST16=$(sbatch --parsable --partition=xjet --nodes=1 --ntasks-per-node=6 -t 0:05:00 -A $PROJECT_CODE -q $QUEUE -J c96.gefs.grib2 \ --exclusive -o $LOG_FILE -e $LOG_FILE ./c96.gefs.grib2.sh) +#----------------------------------------------------------------------------- +# Initialize CONUS 13-KM USING RAP-SMOKE GRIB2 file WITH GSD PHYSICS . +#----------------------------------------------------------------------------- + +LOG_FILE=consistency.log17 +export OMP_NUM_THREADS=1 # should match cpus-per-task +TEST17=$(sbatch --parsable --partition=xjet --ntasks-per-node=6 --nodes=1 -t 0:05:00 -A $PROJECT_CODE -q $QUEUE -J 13km.conus.rap-smoke.grib2.conus \ + --exclusive -o $LOG_FILE -e $LOG_FILE ./13km.conus.rap-smoke.grib2.sh) + #----------------------------------------------------------------------------- # Create summary log. #----------------------------------------------------------------------------- @@ -190,7 +226,7 @@ TEST13=$(sbatch --parsable --partition=xjet --nodes=1 --ntasks-per-node=6 -t 0:0 LOG_FILE=consistency.log sbatch --partition=xjet --nodes=1 -t 0:01:00 -A $PROJECT_CODE -J chgres_summary -o $LOG_FILE -e $LOG_FILE \ --open-mode=append -q $QUEUE -d\ - afterok:$TEST1:$TEST2:$TEST3:$TEST4:$TEST5:$TEST6:$TEST7:$TEST8:$TEST9:$TEST10:$TEST11:$TEST12:$TEST13 << EOF + afterok:$TEST1:$TEST2:$TEST3:$TEST4:$TEST5:$TEST6:$TEST7:$TEST8:$TEST9:$TEST10:$TEST11:$TEST12:$TEST13:$TEST14:$TEST15:$TEST16:$TEST17 << EOF #!/bin/bash grep -a '<<<' $LOG_FILE* > $SUM_FILE EOF From f63fbbe3603af4a24412fbb8ad2c5031320e79c6 Mon Sep 17 00:00:00 2001 From: jordanschnell Date: Wed, 16 Oct 2024 15:47:45 +0000 Subject: [PATCH 09/16] update reg --- reg_tests/chgres_cube/driver.jet.sh | 87 ++++++++++------------------- 1 file changed, 30 insertions(+), 57 deletions(-) diff --git a/reg_tests/chgres_cube/driver.jet.sh b/reg_tests/chgres_cube/driver.jet.sh index 0d2b9c42d..e240144ec 100755 --- a/reg_tests/chgres_cube/driver.jet.sh +++ b/reg_tests/chgres_cube/driver.jet.sh @@ -7,15 +7,15 @@ # Set WORK_DIR to a general working location outside the UFS_UTILS directory. # The exact working directory (OUTDIR) will be WORK_DIR/reg_tests/chgres-cube. # Set the PROJECT_CODE and QUEUE as appropriate. To see which projects you -#are authorized to use, type "account_params". +# are authorized to use, type "account_params". # # Invoke the script with no arguments. A series of daisy- # chained jobs will be submitted. To check the queue, type: # "squeue -u USERNAME". # -# The run output will be stored in OUTDIR. Log output from the suite -# will be in LOG_FILE. Once the suite has completed, a summary is -# placed in SUM_FILE. +# The run output will be stored in OUTDIR. Standard output from +# each test will be placed in its own log file. Once the suite +# has completed, a summary of results is placed in SUM_FILE. # # A test fails when its output does not match the baseline files as # determined by the "nccmp" utility. The baseline files are stored in @@ -33,7 +33,7 @@ module list export OUTDIR="${WORK_DIR:-/lfs5/HFIP/emcda/$LOGNAME/stmp}" export OUTDIR="${OUTDIR}/reg-tests/chgres-cube" -PROJECT_CODE="rtwbl" #"${PROJECT_CODE:-hfv3gfs}" +PROJECT_CODE="${PROJECT_CODE:-hfv3gfs}" QUEUE="${QUEUE:-batch}" export machine="jet" @@ -84,139 +84,112 @@ export OMP_NUM_THREADS=1 TEST2=$(sbatch --parsable --partition=xjet --nodes=2 --ntasks-per-node=6 -t 0:10:00 -A $PROJECT_CODE -q $QUEUE -J c192.fv3.history \ --exclusive -o $LOG_FILE -e $LOG_FILE ./c192.fv3.history.sh) -#----------------------------------------------------------------------------- -# Initialize C96 using FV3 gaussian nemsio files. -#----------------------------------------------------------------------------- - -LOG_FILE=consistency.log03 -export OMP_NUM_THREADS=1 -TEST3=$(sbatch --parsable --partition=xjet --nodes=2 --ntasks-per-node=6 -t 0:10:00 -A $PROJECT_CODE -q $QUEUE -J c96.fv3.nemsio \ - --exclusive -o $LOG_FILE -e $LOG_FILE ./c96.fv3.nemsio.sh) - -#----------------------------------------------------------------------------- -# Initialize C96 using spectral GFS sigio/sfcio files. -#----------------------------------------------------------------------------- - -LOG_FILE=consistency.log04 -export OMP_NUM_THREADS=6 # should match cpus-per-task -TEST4=$(sbatch --parsable --partition=xjet --nodes=4 --ntasks-per-node=3 --cpus-per-task=6 -t 0:25:00 \ - --exclusive -A $PROJECT_CODE -q $QUEUE -J c96.gfs.sigio -o $LOG_FILE -e $LOG_FILE ./c96.gfs.sigio.sh) - -#----------------------------------------------------------------------------- -# Initialize C96 using spectral GFS gaussian nemsio files. -#----------------------------------------------------------------------------- - -LOG_FILE=consistency.log05 -export OMP_NUM_THREADS=1 -TEST5=$(sbatch --parsable --partition=xjet --nodes=1 --ntasks-per-node=6 -t 0:10:00 -A $PROJECT_CODE -q $QUEUE -J c96.gfs.nemsio \ - --exclusive -o $LOG_FILE -e $LOG_FILE ./c96.gfs.nemsio.sh) - #----------------------------------------------------------------------------- # Initialize C96 using FV3 gaussian netcdf files. #----------------------------------------------------------------------------- -LOG_FILE=consistency.log06 +LOG_FILE=consistency.log03 export OMP_NUM_THREADS=1 -TEST6=$(sbatch --parsable --partition=xjet --nodes=2 --ntasks-per-node=6 -t 0:10:00 -A $PROJECT_CODE -q $QUEUE -J c96.fv3.netcdf \ +TEST3=$(sbatch --parsable --partition=xjet --nodes=2 --ntasks-per-node=6 -t 0:10:00 -A $PROJECT_CODE -q $QUEUE -J c96.fv3.netcdf \ --exclusive -o $LOG_FILE -e $LOG_FILE ./c96.fv3.netcdf.sh) #----------------------------------------------------------------------------- # Initialize C192 using GFS GRIB2 data. #----------------------------------------------------------------------------- -LOG_FILE=consistency.log07 +LOG_FILE=consistency.log04 export OMP_NUM_THREADS=1 -TEST7=$(sbatch --parsable --partition=xjet --nodes=1 --ntasks-per-node=6 -t 0:05:00 -A $PROJECT_CODE -q $QUEUE -J c192.gfs.grib2 \ +TEST4=$(sbatch --parsable --partition=xjet --nodes=1 --ntasks-per-node=6 -t 0:05:00 -A $PROJECT_CODE -q $QUEUE -J c192.gfs.grib2 \ --exclusive -o $LOG_FILE -e $LOG_FILE ./c192.gfs.grib2.sh) #----------------------------------------------------------------------------- # Initialize CONUS 25-KM USING GFS GRIB2 files. #----------------------------------------------------------------------------- -LOG_FILE=consistency.log08 +LOG_FILE=consistency.log05 export OMP_NUM_THREADS=1 # should match cpus-per-task -TEST8=$(sbatch --parsable --partition=xjet --ntasks-per-node=6 --nodes=1 -t 0:05:00 -A $PROJECT_CODE -q $QUEUE -J 25km.conus.gfs.grib2.conus \ +TEST5=$(sbatch --parsable --partition=xjet --ntasks-per-node=6 --nodes=1 -t 0:05:00 -A $PROJECT_CODE -q $QUEUE -J 25km.conus.gfs.grib2.conus \ --exclusive -o $LOG_FILE -e $LOG_FILE ./25km.conus.gfs.grib2.sh) #----------------------------------------------------------------------------- # Initialize CONUS 3-KM USING HRRR GRIB2 file WITH GFS PHYSICS. #----------------------------------------------------------------------------- -LOG_FILE=consistency.log09 +LOG_FILE=consistency.log06 export OMP_NUM_THREADS=1 # should match cpus-per-task -TEST9=$(sbatch --parsable --partition=xjet --ntasks-per-node=6 --nodes=2 -t 0:10:00 -A $PROJECT_CODE -q $QUEUE -J 3km.conus.hrrr.gfssdf.grib2.conus \ +TEST6=$(sbatch --parsable --partition=xjet --ntasks-per-node=6 --nodes=2 -t 0:10:00 -A $PROJECT_CODE -q $QUEUE -J 3km.conus.hrrr.gfssdf.grib2.conus \ --exclusive -o $LOG_FILE -e $LOG_FILE ./3km.conus.hrrr.gfssdf.grib2.sh) #----------------------------------------------------------------------------- # Initialize CONUS 3-KM USING HRRR GRIB2 file WITH GSD PHYSICS AND SFC VARS FROM FILE. #----------------------------------------------------------------------------- -LOG_FILE=consistency.log10 +LOG_FILE=consistency.log07 export OMP_NUM_THREADS=1 # should match cpus-per-task -TEST10=$(sbatch --parsable --partition=xjet --ntasks-per-node=6 --nodes=3 -t 0:10:00 -A $PROJECT_CODE -q $QUEUE -J 3km.conus.hrrr.newsfc.grib2.conus \ +TEST7=$(sbatch --parsable --partition=xjet --ntasks-per-node=6 --nodes=3 -t 0:10:00 -A $PROJECT_CODE -q $QUEUE -J 3km.conus.hrrr.newsfc.grib2.conus \ --exclusive -o $LOG_FILE -e $LOG_FILE ./3km.conus.hrrr.newsfc.grib2.sh) #----------------------------------------------------------------------------- # Initialize CONUS 13-KM USING NAM GRIB2 file WITH GFS PHYSICS . #----------------------------------------------------------------------------- -LOG_FILE=consistency.log11 +LOG_FILE=consistency.log08 export OMP_NUM_THREADS=1 # should match cpus-per-task -TEST11=$(sbatch --parsable --partition=xjet --ntasks-per-node=6 --nodes=1 -t 0:05:00 -A $PROJECT_CODE -q $QUEUE -J 13km.conus.nam.grib2.conus \ +TEST8=$(sbatch --parsable --partition=xjet --ntasks-per-node=6 --nodes=1 -t 0:05:00 -A $PROJECT_CODE -q $QUEUE -J 13km.conus.nam.grib2.conus \ --exclusive -o $LOG_FILE -e $LOG_FILE ./13km.conus.nam.grib2.sh) #----------------------------------------------------------------------------- # Initialize CONUS 13-KM USING RAP GRIB2 file WITH GSD PHYSICS . #----------------------------------------------------------------------------- -LOG_FILE=consistency.log12 +LOG_FILE=consistency.log09 export OMP_NUM_THREADS=1 # should match cpus-per-task -TEST12=$(sbatch --parsable --partition=xjet --ntasks-per-node=6 --nodes=1 -t 0:05:00 -A $PROJECT_CODE -q $QUEUE -J 13km.conus.rap.grib2.conus \ +TEST9=$(sbatch --parsable --partition=xjet --ntasks-per-node=6 --nodes=1 -t 0:05:00 -A $PROJECT_CODE -q $QUEUE -J 13km.conus.rap.grib2.conus \ --exclusive -o $LOG_FILE -e $LOG_FILE ./13km.conus.rap.grib2.sh) #----------------------------------------------------------------------------- # Initialize CONUS 13-KM NA USING NCEI GFS GRIB2 file WITH GFS PHYSICS . #----------------------------------------------------------------------------- -LOG_FILE=consistency.log13 +LOG_FILE=consistency.log10 export OMP_NUM_THREADS=1 # should match cpus-per-task -TEST13=$(sbatch --parsable --partition=xjet --ntasks-per-node=6 --nodes=2 -t 0:10:00 -A $PROJECT_CODE -q $QUEUE -J 13km.na.gfs.ncei.grib2.conus \ +TEST10=$(sbatch --parsable --partition=xjet --ntasks-per-node=6 --nodes=2 -t 0:10:00 -A $PROJECT_CODE -q $QUEUE -J 13km.na.gfs.ncei.grib2.conus \ --exclusive -o $LOG_FILE -e $LOG_FILE ./13km.na.gfs.ncei.grib2.sh) #----------------------------------------------------------------------------- # Initialize C96 WAM IC using FV3 gaussian netcdf files. #----------------------------------------------------------------------------- -LOG_FILE=consistency.log14 +LOG_FILE=consistency.log11 export OMP_NUM_THREADS=1 # should match cpus-per-task -TEST14=$(sbatch --parsable --partition=xjet --ntasks-per-node=6 --nodes=2 -t 0:15:00 -A $PROJECT_CODE -q $QUEUE -J c96.fv3.netcdf2wam \ +TEST11=$(sbatch --parsable --partition=xjet --ntasks-per-node=6 --nodes=2 -t 0:15:00 -A $PROJECT_CODE -q $QUEUE -J c96.fv3.netcdf2wam \ --exclusive -o $LOG_FILE -e $LOG_FILE ./c96.fv3.netcdf2wam.sh) #----------------------------------------------------------------------------- # Initialize CONUS 25-KM USING GFS PGRIB2+BGRIB2 files. #----------------------------------------------------------------------------- -LOG_FILE=consistency.log15 +LOG_FILE=consistency.log12 export OMP_NUM_THREADS=1 # should match cpus-per-task -TEST15=$(sbatch --parsable --partition=xjet --ntasks-per-node=6 --nodes=1 -t 0:05:00 -A $PROJECT_CODE -q $QUEUE -J 25km.conus.gfs.pbgrib2.conus \ +TEST12=$(sbatch --parsable --partition=xjet --ntasks-per-node=6 --nodes=1 -t 0:05:00 -A $PROJECT_CODE -q $QUEUE -J 25km.conus.gfs.pbgrib2.conus \ --exclusive -o $LOG_FILE -e $LOG_FILE ./25km.conus.gfs.pbgrib2.sh) #----------------------------------------------------------------------------- # Initialize C96 using GEFS GRIB2 data. #----------------------------------------------------------------------------- -LOG_FILE=consistency.log16 +LOG_FILE=consistency.log13 export OMP_NUM_THREADS=1 -TEST16=$(sbatch --parsable --partition=xjet --nodes=1 --ntasks-per-node=6 -t 0:05:00 -A $PROJECT_CODE -q $QUEUE -J c96.gefs.grib2 \ +TEST13=$(sbatch --parsable --partition=xjet --nodes=1 --ntasks-per-node=6 -t 0:05:00 -A $PROJECT_CODE -q $QUEUE -J c96.gefs.grib2 \ --exclusive -o $LOG_FILE -e $LOG_FILE ./c96.gefs.grib2.sh) #----------------------------------------------------------------------------- # Initialize CONUS 13-KM USING RAP-SMOKE GRIB2 file WITH GSD PHYSICS . #----------------------------------------------------------------------------- -LOG_FILE=consistency.log17 +LOG_FILE=consistency.log14 export OMP_NUM_THREADS=1 # should match cpus-per-task -TEST17=$(sbatch --parsable --partition=xjet --ntasks-per-node=6 --nodes=1 -t 0:05:00 -A $PROJECT_CODE -q $QUEUE -J 13km.conus.rap-smoke.grib2.conus \ +TEST14=$(sbatch --parsable --partition=xjet --ntasks-per-node=6 --nodes=1 -t 0:05:00 -A $PROJECT_CODE -q $QUEUE -J 13km.conus.rap-smoke.grib2.conus \ --exclusive -o $LOG_FILE -e $LOG_FILE ./13km.conus.rap-smoke.grib2.sh) #----------------------------------------------------------------------------- @@ -226,7 +199,7 @@ TEST17=$(sbatch --parsable --partition=xjet --ntasks-per-node=6 --nodes=1 -t 0:0 LOG_FILE=consistency.log sbatch --partition=xjet --nodes=1 -t 0:01:00 -A $PROJECT_CODE -J chgres_summary -o $LOG_FILE -e $LOG_FILE \ --open-mode=append -q $QUEUE -d\ - afterok:$TEST1:$TEST2:$TEST3:$TEST4:$TEST5:$TEST6:$TEST7:$TEST8:$TEST9:$TEST10:$TEST11:$TEST12:$TEST13:$TEST14:$TEST15:$TEST16:$TEST17 << EOF + afterok:$TEST1:$TEST2:$TEST3:$TEST4:$TEST5:$TEST6:$TEST7:$TEST8:$TEST9:$TEST10:$TEST11:$TEST12:$TEST13:$TEST14 << EOF #!/bin/bash grep -a '<<<' $LOG_FILE* > $SUM_FILE EOF From a4de98bad9031e13d87ded66c9893dd001cb7a24 Mon Sep 17 00:00:00 2001 From: "jordan.schnell" Date: Mon, 21 Oct 2024 15:29:25 +0000 Subject: [PATCH 10/16] add hera regtest --- reg_tests/chgres_cube/13km.conus.rap-smoke.grib2.sh | 7 ++++--- reg_tests/chgres_cube/driver.hera.sh | 13 ++++++++++++- 2 files changed, 16 insertions(+), 4 deletions(-) diff --git a/reg_tests/chgres_cube/13km.conus.rap-smoke.grib2.sh b/reg_tests/chgres_cube/13km.conus.rap-smoke.grib2.sh index e80e05794..74fc88df5 100755 --- a/reg_tests/chgres_cube/13km.conus.rap-smoke.grib2.sh +++ b/reg_tests/chgres_cube/13km.conus.rap-smoke.grib2.sh @@ -1,8 +1,9 @@ #!/bin/bash #----------------------------------------------------------------------------- -# Invoke chgres to create 13-km CONUS coldstart files using RAP GRIB2 data -# as input. The coldstart files are then compared to baseline files +# Invoke chgres to create 13-km CONUS coldstart files using RAP-SMOKE GRIB2 data +# as input. i.e., if one desires MASSDEN/SMOKE in the ICs/LBCS +# The coldstart files are then compared to baseline files # using the 'nccmp' utility. This script is run by the machine specific # driver script. #----------------------------------------------------------------------------- @@ -81,7 +82,7 @@ for files in *.nc do if [ -f $files ]; then echo CHECK $files - $NCCMP -dmfqS $files $HOMEreg/baseline_data/13km_conus_rap_grib2/$files + $NCCMP -dmfqS $files $HOMEreg/baseline_data/13km_conus_rap-smoke_grib2/$files iret=$? if [ $iret -ne 0 ]; then test_failed=1 diff --git a/reg_tests/chgres_cube/driver.hera.sh b/reg_tests/chgres_cube/driver.hera.sh index cd817ad43..86bf372b4 100755 --- a/reg_tests/chgres_cube/driver.hera.sh +++ b/reg_tests/chgres_cube/driver.hera.sh @@ -187,6 +187,17 @@ export OMP_NUM_THREADS=1 # should match cpus-per-task TEST13=$(sbatch --parsable --ntasks-per-node=6 --nodes=1 -t 0:05:00 -A $PROJECT_CODE -q $QUEUE -J c96.gefs.grib2 \ -o $LOG_FILE -e $LOG_FILE ./c96.gefs.grib2.sh) + +#----------------------------------------------------------------------------- +# Initialize CONUS 13-KM USING RAP-SMOKE GRIB2 file WITH GSD PHYSICS . +#----------------------------------------------------------------------------- +LOG_FILE=consistency.log14 +export OMP_NUM_THREADS=1 # should match cpus-per-task +TEST14=$(sbatch --parsable --ntasks-per-node=6 --nodes=1 -t 0:05:00 -A $PROJECT_CODE -q $QUEUE -J 13km.conus.rap-smoke.grib2.conus \ + -o $LOG_FILE -e $LOG_FILE ./13km.conus.rap-smoke.grib2.sh) + + + #----------------------------------------------------------------------------- # Create summary log. #----------------------------------------------------------------------------- @@ -194,7 +205,7 @@ TEST13=$(sbatch --parsable --ntasks-per-node=6 --nodes=1 -t 0:05:00 -A $PROJECT_ LOG_FILE=consistency.log sbatch --nodes=1 -t 0:01:00 -A $PROJECT_CODE -J chgres_summary -o $LOG_FILE -e $LOG_FILE \ --open-mode=append -q $QUEUE -d\ - afterok:$TEST1:$TEST2:$TEST3:$TEST4:$TEST5:$TEST6:$TEST7:$TEST8:$TEST9:$TEST10:$TEST11:$TEST12:$TEST13 << EOF + afterok:$TEST1:$TEST2:$TEST3:$TEST4:$TEST5:$TEST6:$TEST7:$TEST8:$TEST9:$TEST10:$TEST11:$TEST12:$TEST13:$TEST14 << EOF #!/bin/bash grep -a '<<<' ${LOG_FILE}?? > summary.log EOF From 0a954d1dd41c9786df5bbe7a7e4ddfe5af611aa4 Mon Sep 17 00:00:00 2001 From: "jordan.schnell" Date: Mon, 21 Oct 2024 19:24:25 +0000 Subject: [PATCH 11/16] Update drivers for hercules, wcoss2, and orion --- reg_tests/chgres_cube/driver.hercules.sh | 11 ++++++++++- reg_tests/chgres_cube/driver.orion.sh | 11 ++++++++++- reg_tests/chgres_cube/driver.wcoss2.sh | 11 ++++++++++- 3 files changed, 30 insertions(+), 3 deletions(-) diff --git a/reg_tests/chgres_cube/driver.hercules.sh b/reg_tests/chgres_cube/driver.hercules.sh index 2ef2800b3..05e80bfc5 100755 --- a/reg_tests/chgres_cube/driver.hercules.sh +++ b/reg_tests/chgres_cube/driver.hercules.sh @@ -188,13 +188,22 @@ export OMP_NUM_THREADS=1 # needs to match cpus-per-task TEST13=$(sbatch --parsable --ntasks-per-node=6 --nodes=1 --mem=75G -t 0:05:00 -A $PROJECT_CODE -q $QUEUE -J c96.gefs.grib2 \ --open-mode=append -o $LOG_FILE13 -e $LOG_FILE13 ./c96.gefs.grib2.sh) +#----------------------------------------------------------------------------- +# Initialize CONUS 13-KM USING RAP-SMOKE GRIB2 file WITH GSD PHYSICS. +#----------------------------------------------------------------------------- + +LOG_FILE14=${LOG_FILE}14 +export OMP_NUM_THREADS=1 # should match cpus-per-task +TEST14=$(sbatch --parsable --ntasks-per-node=12 --nodes=1 --mem=75G -t 0:10:00 -A $PROJECT_CODE -q $QUEUE -J 13km.conus.rap-smoke.grib2 \ + --open-mode=append -o $LOG_FILE14 -e $LOG_FILE14 ./13km.conus.rap-smoke.grib2.sh) + #----------------------------------------------------------------------------- # Create summary log. #----------------------------------------------------------------------------- sbatch --nodes=1 -t 0:01:00 -A $PROJECT_CODE -J chgres_summary -o $LOG_FILE -e $LOG_FILE \ --open-mode=append -q $QUEUE \ - -d afterok:$TEST1:$TEST2:$TEST3:$TEST4:$TEST5:$TEST6:$TEST7:$TEST8:$TEST9:$TEST10:$TEST11:$TEST12:$TEST13 << EOF + -d afterok:$TEST1:$TEST2:$TEST3:$TEST4:$TEST5:$TEST6:$TEST7:$TEST8:$TEST9:$TEST10:$TEST11:$TEST12:$TEST13:$TEST14 << EOF #!/bin/bash grep -a '<<<' ${LOG_FILE}* > $SUM_FILE EOF diff --git a/reg_tests/chgres_cube/driver.orion.sh b/reg_tests/chgres_cube/driver.orion.sh index ae1ebf8ce..2c57df30b 100755 --- a/reg_tests/chgres_cube/driver.orion.sh +++ b/reg_tests/chgres_cube/driver.orion.sh @@ -186,13 +186,22 @@ export OMP_NUM_THREADS=1 # needs to match cpus-per-task TEST13=$(sbatch --parsable --ntasks-per-node=6 --nodes=1 --mem=75G -t 0:05:00 -A $PROJECT_CODE -q $QUEUE -J c96.gefs.grib2 \ --open-mode=append -o $LOG_FILE13 -e $LOG_FILE13 ./c96.gefs.grib2.sh) +#----------------------------------------------------------------------------- +# Initialize CONUS 13-KM USING RAP-SMOKE GRIB2 file WITH GSD PHYSICS. +#----------------------------------------------------------------------------- + +LOG_FILE14=${LOG_FILE}14 +export OMP_NUM_THREADS=1 # should match cpus-per-task +TEST14=$(sbatch --parsable --ntasks-per-node=12 --nodes=1 --mem=75G -t 0:10:00 -A $PROJECT_CODE -q $QUEUE -J 13km.conus.rap-smoke.grib2 \ + --open-mode=append -o $LOG_FILE14 -e $LOG_FILE14 ./13km.conus.rap-smoke.grib2.sh) + #----------------------------------------------------------------------------- # Create summary log. #----------------------------------------------------------------------------- sbatch --nodes=1 -t 0:01:00 -A $PROJECT_CODE -J chgres_summary -o $LOG_FILE -e $LOG_FILE \ --open-mode=append -q $QUEUE \ - -d afterok:$TEST1:$TEST2:$TEST3:$TEST4:$TEST5:$TEST6:$TEST7:$TEST8:$TEST9:$TEST10:$TEST11:$TEST12:$TEST13 << EOF + -d afterok:$TEST1:$TEST2:$TEST3:$TEST4:$TEST5:$TEST6:$TEST7:$TEST8:$TEST9:$TEST10:$TEST11:$TEST12:$TEST13:$TEST14 << EOF #!/bin/bash grep -a '<<<' ${LOG_FILE}* > $SUM_FILE EOF diff --git a/reg_tests/chgres_cube/driver.wcoss2.sh b/reg_tests/chgres_cube/driver.wcoss2.sh index fd81b4ea9..e38af7278 100755 --- a/reg_tests/chgres_cube/driver.wcoss2.sh +++ b/reg_tests/chgres_cube/driver.wcoss2.sh @@ -184,6 +184,15 @@ export APRUN="mpiexec -n 6 -ppn 6 --cpu-bind core" TEST13=$(qsub -V -o $LOG_FILE -e $LOG_FILE -q $QUEUE -A $PROJECT_CODE -l walltime=00:05:00 \ -N c96.gefs.grib2 -l select=1:ncpus=6:ompthreads=1:mem=15GB $PWD/c96.gefs.grib2.sh) +#----------------------------------------------------------------------------- +# Initialize CONUS 13-KM USING RAP-SMOKE GRIB2 file WITH GSD PHYSICS. +#----------------------------------------------------------------------------- + +LOG_FILE=consistency.log14 +export APRUN="mpiexec -n 6 -ppn 6 --cpu-bind core" +TEST14=$(qsub -V -o $LOG_FILE -e $LOG_FILE -q $QUEUE -A $PROJECT_CODE -l walltime=00:05:00 \ + -N 13km.conus.rap-smoke.grib2.conus -l select=1:ncpus=6:ompthreads=1:mem=15GB $PWD/13km.conus.rap-smoke.grib2.sh) + #----------------------------------------------------------------------------- # Create summary log. #----------------------------------------------------------------------------- @@ -191,7 +200,7 @@ TEST13=$(qsub -V -o $LOG_FILE -e $LOG_FILE -q $QUEUE -A $PROJECT_CODE -l walltim LOG_FILE=consistency.log qsub -V -o ${LOG_FILE} -e ${LOG_FILE} -q $QUEUE -A $PROJECT_CODE -l walltime=00:01:00 \ -N chgres_summary -l select=1:ncpus=1:mem=100MB \ - -W depend=afterok:$TEST1:$TEST2:$TEST3:$TEST4:$TEST5:$TEST6:$TEST7:$TEST8:$TEST9:$TEST10:$TEST11:$TEST12:$TEST13 << EOF + -W depend=afterok:$TEST1:$TEST2:$TEST3:$TEST4:$TEST5:$TEST6:$TEST7:$TEST8:$TEST9:$TEST10:$TEST11:$TEST12:$TEST13:$TEST14 << EOF #!/bin/bash cd ${this_dir} grep -a '<<<' ${LOG_FILE}?? | grep -v echo > $SUM_FILE From 6dadfcac21d751d05332585a7a3e7d11d8809b0f Mon Sep 17 00:00:00 2001 From: "jordan.schnell" Date: Mon, 4 Nov 2024 19:05:58 +0000 Subject: [PATCH 12/16] doc test --- docs/source/chgres_cube.rst | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docs/source/chgres_cube.rst b/docs/source/chgres_cube.rst index 7d3c9f3c1..f32e3a241 100644 --- a/docs/source/chgres_cube.rst +++ b/docs/source/chgres_cube.rst @@ -417,6 +417,8 @@ Column 1: Name the code searches for in the table. Do not change. Some definiti * hice - sea/lake ice thickness * weasd - snow liquid equivalent * snod - physical snow depth + ---Optional--- + * massden - smoke mass mixing ratio (only available in RAP/HRRR-Smoke) Column 2: Name of the variable in the output “coldstart” files. Unimplemented. From 5bd91ce7a7e82c9ef2ad68a24195a157a2daab17 Mon Sep 17 00:00:00 2001 From: "jordan.schnell" Date: Mon, 4 Nov 2024 19:08:57 +0000 Subject: [PATCH 13/16] more --- docs/source/chgres_cube.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/source/chgres_cube.rst b/docs/source/chgres_cube.rst index f32e3a241..8c9e08738 100644 --- a/docs/source/chgres_cube.rst +++ b/docs/source/chgres_cube.rst @@ -418,7 +418,7 @@ Column 1: Name the code searches for in the table. Do not change. Some definiti * weasd - snow liquid equivalent * snod - physical snow depth ---Optional--- - * massden - smoke mass mixing ratio (only available in RAP/HRRR-Smoke) + * massden - smoke mass mixing ratio (only available in RAP/HRRR-Smoke and use of the GSDphys_smoke_var_map.txt varmap) Column 2: Name of the variable in the output “coldstart” files. Unimplemented. From 8283affefbff5f83f4ecbdc4a107e05ff6b0282c Mon Sep 17 00:00:00 2001 From: "jordan.schnell" Date: Mon, 4 Nov 2024 20:01:58 +0000 Subject: [PATCH 14/16] format fix attempt --- docs/source/chgres_cube.rst | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/docs/source/chgres_cube.rst b/docs/source/chgres_cube.rst index 8c9e08738..8a0da06c5 100644 --- a/docs/source/chgres_cube.rst +++ b/docs/source/chgres_cube.rst @@ -417,7 +417,9 @@ Column 1: Name the code searches for in the table. Do not change. Some definiti * hice - sea/lake ice thickness * weasd - snow liquid equivalent * snod - physical snow depth - ---Optional--- + + --Optional-- + * massden - smoke mass mixing ratio (only available in RAP/HRRR-Smoke and use of the GSDphys_smoke_var_map.txt varmap) Column 2: Name of the variable in the output “coldstart” files. Unimplemented. From 5b273d00dbd51f0ed32d6f2c7c1c4cbddbef8d51 Mon Sep 17 00:00:00 2001 From: "jordan.schnell" Date: Mon, 4 Nov 2024 20:04:08 +0000 Subject: [PATCH 15/16] minimum docs --- docs/source/chgres_cube.rst | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/docs/source/chgres_cube.rst b/docs/source/chgres_cube.rst index 8a0da06c5..194275a57 100644 --- a/docs/source/chgres_cube.rst +++ b/docs/source/chgres_cube.rst @@ -417,10 +417,7 @@ Column 1: Name the code searches for in the table. Do not change. Some definiti * hice - sea/lake ice thickness * weasd - snow liquid equivalent * snod - physical snow depth - - --Optional-- - - * massden - smoke mass mixing ratio (only available in RAP/HRRR-Smoke and use of the GSDphys_smoke_var_map.txt varmap) + * massden - smoke mass mixing ratio Column 2: Name of the variable in the output “coldstart” files. Unimplemented. From 828db08dc2f7d2299f2446b08ccbdb4096dd3c22 Mon Sep 17 00:00:00 2001 From: "jordan.schnell" Date: Mon, 4 Nov 2024 20:34:03 +0000 Subject: [PATCH 16/16] remove note that only GFS physics suite is supported --- docs/source/chgres_cube.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/source/chgres_cube.rst b/docs/source/chgres_cube.rst index 194275a57..5eeadebf9 100644 --- a/docs/source/chgres_cube.rst +++ b/docs/source/chgres_cube.rst @@ -389,7 +389,7 @@ Namelist variables with “input” in their name refer to data input to chgres_ Variable Mapping (VARMAP) table ------------------------------- -The VARMAP table, set in the chgres_cube namelist (variable varmap_file), controls how chgres_cube handles variables that might be missing from the GRIB2 files. Since there are so many different versions of GRIB2 files, it's often uncertain what fields are available even if you know what source model the data is coming from. Each file contains the following: (Note, only the GFS physics suite is currently supported.) +The VARMAP table, set in the chgres_cube namelist (variable varmap_file), controls how chgres_cube handles variables that might be missing from the GRIB2 files. Since there are so many different versions of GRIB2 files, it's often uncertain what fields are available even if you know what source model the data is coming from. Each file contains the following columns: Column 1: Name the code searches for in the table. Do not change. Some definitions: