diff --git a/dev/parm/config/gcafs/config.atmos_products b/dev/parm/config/gcafs/config.atmos_products index 02b5acbaa5e..54f4e16a277 100644 --- a/dev/parm/config/gcafs/config.atmos_products +++ b/dev/parm/config/gcafs/config.atmos_products @@ -6,15 +6,11 @@ echo "BEGIN: config.atmos_products" # Get task specific resources -. "${EXPDIR}/config.resources" atmos_products +source "${EXPDIR}/config.resources" atmos_products ## Maximum number of rocoto tasks per member export MAX_TASKS=25 -# Scripts used by this job -export INTERP_ATMOS_MASTERSH="${USHgfs}/interp_atmos_master.sh" -export INTERP_ATMOS_SFLUXSH="${USHgfs}/interp_atmos_sflux.sh" - if [[ "${RUN:-}" == "gcdas" ]]; then export downset=1 export FHOUT_PGBS=${FHOUT:-1} # Output frequency of supplemental gfs pgb file at 1.0 and 0.5 deg @@ -29,8 +25,6 @@ elif [[ "${RUN:-}" == "gcafs" ]]; then export FHMAX_WGNE=180 fi -export APCP_MSG="597" # Message number for APCP in GFSv16. Look for TODO in exglobal_atmos_products.sh - # paramlist files for the different forecast hours and downsets export paramlista="${PARMgfs}/product/gfs.fFFF.paramlist.a.txt" export paramlista_anl="${PARMgfs}/product/gfs.anl.paramlist.a.txt" diff --git a/dev/parm/config/gefs/config.atmos_products b/dev/parm/config/gefs/config.atmos_products index 11c144636de..edc38f389c1 100644 --- a/dev/parm/config/gefs/config.atmos_products +++ b/dev/parm/config/gefs/config.atmos_products @@ -6,17 +6,11 @@ echo "BEGIN: config.atmos_products" # Get task specific resources -. "${EXPDIR}/config.resources" atmos_products +source "${EXPDIR}/config.resources" atmos_products # Maximum number of rocoto tasks per member export MAX_TASKS=25 -# Scripts used by this job -export INTERP_ATMOS_MASTERSH="${USHgfs}/interp_atmos_master.sh" -export INTERP_ATMOS_SFLUXSH="${USHgfs}/interp_atmos_sflux.sh" - -export downset=2 - if [[ "${FHMAX_HF_GFS:-0}" == "0" ]]; then export FHOUT_PGBS=${FHOUT_GFS:-3} # Output frequency of supplemental gfs pgb file at 1.0 and 0.5 deg else @@ -25,6 +19,7 @@ fi export FLXGF="NO" # Create interpolated sflux.1p00 file # paramlist files for the different forecast hours and downsets +export downset=2 export paramlista="${PARMgfs}/product/${NET}.0p25.fFFF.paramlist.a.txt" export paramlista_anl="${PARMgfs}/product/${NET}.0p25.anl.paramlist.a.txt" export paramlista_f000="${PARMgfs}/product/${NET}.0p25.f000.paramlist.a.txt" diff --git a/dev/parm/config/gfs/config.atmos_products b/dev/parm/config/gfs/config.atmos_products index 5b6e4067b5d..e234d61e13c 100644 --- a/dev/parm/config/gfs/config.atmos_products +++ b/dev/parm/config/gfs/config.atmos_products @@ -6,32 +6,25 @@ echo "BEGIN: config.atmos_products" # Get task specific resources -. "${EXPDIR}/config.resources" atmos_products +source "${EXPDIR}/config.resources" atmos_products ## Maximum number of rocoto tasks per member export MAX_TASKS=25 -# Scripts used by this job -export INTERP_ATMOS_MASTERSH="${USHgfs}/interp_atmos_master.sh" -export INTERP_ATMOS_SFLUXSH="${USHgfs}/interp_atmos_sflux.sh" - if [[ "${RUN:-}" == "gdas" ]]; then - export downset=1 export FHOUT_PGBS=${FHOUT:-1} # Output frequency of supplemental gfs pgb file at 1.0 and 0.5 deg export FLXGF="NO" # Create interpolated sflux.1p00 file export WGNE="NO" # WGNE products are created for first FHMAX_WGNE forecast hours export FHMAX_WGNE=0 elif [[ "${RUN:-}" == "gfs" ]]; then - export downset=2 export FHOUT_PGBS=${FHOUT_GFS:-3} # Output frequency of supplemental gfs pgb file at 1.0 and 0.5 deg export FLXGF="YES" # Create interpolated sflux.1p00 file export WGNE="YES" # WGNE products are created for first FHMAX_WGNE forecast hours export FHMAX_WGNE=180 fi -export APCP_MSG="597" # Message number for APCP in GFSv16. Look for TODO in exglobal_atmos_products.sh - -# paramlist files for the different forecast hours and downsets +# paramlist files for the different forecast hours and downsets (a, b) +export downset=2 export paramlista="${PARMgfs}/product/gfs.fFFF.paramlist.a.txt" export paramlista_anl="${PARMgfs}/product/gfs.anl.paramlist.a.txt" export paramlista_f000="${PARMgfs}/product/gfs.f000.paramlist.a.txt" diff --git a/parm/archive/gdas.yaml.j2 b/parm/archive/gdas.yaml.j2 index 7163237c9b6..abf4fe5bb57 100644 --- a/parm/archive/gdas.yaml.j2 +++ b/parm/archive/gdas.yaml.j2 @@ -46,6 +46,10 @@ gdas: - "{{ COMIN_ATMOS_GRIB_0p25 | relpath(ROTDIR) }}/{{ head }}pres_a.0p25.analysis.grib2.idx" - "{{ COMIN_ATMOS_GRIB_1p00 | relpath(ROTDIR) }}/{{ head }}pres_a.1p00.analysis.grib2" - "{{ COMIN_ATMOS_GRIB_1p00 | relpath(ROTDIR) }}/{{ head }}pres_a.1p00.analysis.grib2.idx" + - "{{ COMIN_ATMOS_GRIB_0p25 | relpath(ROTDIR) }}/{{ head }}pres_b.0p25.analysis.grib2" + - "{{ COMIN_ATMOS_GRIB_0p25 | relpath(ROTDIR) }}/{{ head }}pres_b.0p25.analysis.grib2.idx" + - "{{ COMIN_ATMOS_GRIB_1p00 | relpath(ROTDIR) }}/{{ head }}pres_b.1p00.analysis.grib2" + - "{{ COMIN_ATMOS_GRIB_1p00 | relpath(ROTDIR) }}/{{ head }}pres_b.1p00.analysis.grib2.idx" # Analysis netCDF (raw) data - "{{ COMIN_ATMOS_ANALYSIS | relpath(ROTDIR) }}/{{ head }}analysis.atm.a006.nc" @@ -145,6 +149,10 @@ gdas: - "{{ COMIN_ATMOS_GRIB_0p25 | relpath(ROTDIR) }}/{{ head }}pres_a.0p25.f{{ fhr3 }}.grib2.idx" - "{{ COMIN_ATMOS_GRIB_1p00 | relpath(ROTDIR) }}/{{ head }}pres_a.1p00.f{{ fhr3 }}.grib2" - "{{ COMIN_ATMOS_GRIB_1p00 | relpath(ROTDIR) }}/{{ head }}pres_a.1p00.f{{ fhr3 }}.grib2.idx" + - "{{ COMIN_ATMOS_GRIB_0p25 | relpath(ROTDIR) }}/{{ head }}pres_b.0p25.f{{ fhr3 }}.grib2" + - "{{ COMIN_ATMOS_GRIB_0p25 | relpath(ROTDIR) }}/{{ head }}pres_b.0p25.f{{ fhr3 }}.grib2.idx" + - "{{ COMIN_ATMOS_GRIB_1p00 | relpath(ROTDIR) }}/{{ head }}pres_b.1p00.f{{ fhr3 }}.grib2" + - "{{ COMIN_ATMOS_GRIB_1p00 | relpath(ROTDIR) }}/{{ head }}pres_b.1p00.f{{ fhr3 }}.grib2.idx" # Forecast GRIB2 fluxes - "{{ COMIN_ATMOS_MASTER | relpath(ROTDIR) }}/{{ head }}sflux.f{{ fhr3 }}.grib2" - "{{ COMIN_ATMOS_MASTER | relpath(ROTDIR) }}/{{ head }}sflux.f{{ fhr3 }}.grib2.idx" diff --git a/parm/product/grib_wafs.grb2to1.list b/parm/product/grib_wafs.grb2to1.list deleted file mode 100644 index 9b90e755f79..00000000000 --- a/parm/product/grib_wafs.grb2to1.list +++ /dev/null @@ -1,92 +0,0 @@ -:TMP:1000 mb: -:TMP:850 mb: -:TMP:700 mb: -:TMP:600 mb: -:TMP:500 mb: -:TMP:400 mb: -:TMP:300 mb: -:TMP:250 mb: -:TMP:200 mb: -:TMP:150 mb: -:TMP:100 mb: -:TMP:70 mb: -:UGRD:1000 mb: -:UGRD:850 mb: -:UGRD:700 mb: -:UGRD:600 mb: -:UGRD:500 mb: -:UGRD:400 mb: -:UGRD:300 mb: -:UGRD:250 mb: -:UGRD:200 mb: -:UGRD:150 mb: -:UGRD:100 mb: -:UGRD:70 mb: -:VGRD:1000 mb: -:VGRD:850 mb: -:VGRD:700 mb: -:VGRD:600 mb: -:VGRD:500 mb: -:VGRD:400 mb: -:VGRD:300 mb: -:VGRD:250 mb: -:VGRD:200 mb: -:VGRD:150 mb: -:VGRD:100 mb: -:VGRD:70 mb: -:HGT:1000 mb: -:HGT:850 mb: -:HGT:700 mb: -:HGT:600 mb: -:HGT:500 mb: -:HGT:400 mb: -:HGT:300 mb: -:HGT:250 mb: -:HGT:200 mb: -:HGT:150 mb: -:HGT:100 mb: -:HGT:70 mb: -:RH:1000 mb: -:RH:850 mb: -:RH:700 mb: -:RH:600 mb: -:RH:500 mb: -:RH:400 mb: -:RH:300 mb: -:RH:250 mb: -:RH:200 mb: -:RH:150 mb: -:RH:100 mb: -:VVEL:850 mb: -:VVEL:700 mb: -:VVEL:600 mb: -:VVEL:500 mb: -:VVEL:400 mb: -:VVEL:300 mb: -:VVEL:250 mb: -:VVEL:200 mb: -:VVEL:150 mb: -:VVEL:100 mb: -:TMP:tropopause: -:UGRD:tropopause: -:VGRD:tropopause: -:HGT:tropopause: -:PRES:tropopause -:TMP:max wind: -:UGRD:max wind: -:VGRD:max wind: -:HGT:max wind: -:PRES:max wind: -:TMP:30-0 mb above ground: -:UGRD:30-0 mb above ground: -:VGRD:30-0 mb above ground: -:RH:30-0 mb above ground: -:TMP:2 m above ground: -:RH:2 m above ground: -:UGRD:10 m above ground: -:VGRD:10 m above ground: -:APCP:surface: -:ACPCP:surface: -:PRES:surface: -:PRMSL:mean sea level: -:ABSV:500 mb: \ No newline at end of file diff --git a/parm/product/grib_wafsgfs_intdsk b/parm/product/grib_wafsgfs_intdsk deleted file mode 100755 index a1e873f8c81..00000000000 --- a/parm/product/grib_wafsgfs_intdsk +++ /dev/null @@ -1,92 +0,0 @@ -TMP:kpds5=11:kpds6=100:kpds7=850: -TMP:kpds5=11:kpds6=100:kpds7=700: -TMP:kpds5=11:kpds6=100:kpds7=600: -TMP:kpds5=11:kpds6=100:kpds7=500: -TMP:kpds5=11:kpds6=100:kpds7=400: -TMP:kpds5=11:kpds6=100:kpds7=300: -TMP:kpds5=11:kpds6=100:kpds7=250: -TMP:kpds5=11:kpds6=100:kpds7=200: -TMP:kpds5=11:kpds6=100:kpds7=150: -TMP:kpds5=11:kpds6=100:kpds7=100: -TMP:kpds5=11:kpds6=100:kpds7=70: -TMP:kpds5=11:kpds6=7:kpds7=0: -TMP:kpds5=11:kpds6=6:kpds7=0: -UGRD:kpds5=33:kpds6=100:kpds7=850: -UGRD:kpds5=33:kpds6=100:kpds7=700: -UGRD:kpds5=33:kpds6=100:kpds7=600: -UGRD:kpds5=33:kpds6=100:kpds7=500: -UGRD:kpds5=33:kpds6=100:kpds7=400: -UGRD:kpds5=33:kpds6=100:kpds7=300: -UGRD:kpds5=33:kpds6=100:kpds7=250: -UGRD:kpds5=33:kpds6=100:kpds7=200: -UGRD:kpds5=33:kpds6=100:kpds7=150: -UGRD:kpds5=33:kpds6=100:kpds7=100: -UGRD:kpds5=33:kpds6=100:kpds7=70: -UGRD:kpds5=33:kpds6=7:kpds7=0: -UGRD:kpds5=33:kpds6=6:kpds7=0: -VGRD:kpds5=34:kpds6=100:kpds7=850: -VGRD:kpds5=34:kpds6=100:kpds7=700: -VGRD:kpds5=34:kpds6=100:kpds7=600: -VGRD:kpds5=34:kpds6=100:kpds7=500: -VGRD:kpds5=34:kpds6=100:kpds7=400: -VGRD:kpds5=34:kpds6=100:kpds7=300: -VGRD:kpds5=34:kpds6=100:kpds7=250: -VGRD:kpds5=34:kpds6=100:kpds7=200: -VGRD:kpds5=34:kpds6=100:kpds7=150: -VGRD:kpds5=34:kpds6=100:kpds7=100: -VGRD:kpds5=34:kpds6=100:kpds7=70: -VGRD:kpds5=34:kpds6=7:kpds7=0: -VGRD:kpds5=34:kpds6=6:kpds7=0: -HGT:kpds5=7:kpds6=7:kpds7=0: -HGT:kpds5=7:kpds6=6:kpds7=0: -TMP:kpds5=11:kpds6=105:kpds7=2: -TMP:kpds5=11:kpds6=100:kpds7=1000: -UGRD:kpds5=33:kpds6=105:kpds7=10: -UGRD:kpds5=33:kpds6=100:kpds7=1000: -VGRD:kpds5=34:kpds6=105:kpds7=10: -VGRD:kpds5=34:kpds6=100:kpds7=1000: -PRES:kpds5=1:kpds6=1:kpds7=0: -PRMSL:kpds5=2:kpds6=102:kpds7=0: -APCP:kpds5=61:kpds6=1:kpds7=0: -ACPCP:kpds5=63:kpds6=1:kpds7=0: -HGT:kpds5=7:kpds6=100:kpds7=1000: -HGT:kpds5=7:kpds6=100:kpds7=850: -HGT:kpds5=7:kpds6=100:kpds7=700: -HGT:kpds5=7:kpds6=100:kpds7=600: -HGT:kpds5=7:kpds6=100:kpds7=500: -HGT:kpds5=7:kpds6=100:kpds7=400: -HGT:kpds5=7:kpds6=100:kpds7=300: -HGT:kpds5=7:kpds6=100:kpds7=250: -HGT:kpds5=7:kpds6=100:kpds7=200: -HGT:kpds5=7:kpds6=100:kpds7=150: -HGT:kpds5=7:kpds6=100:kpds7=100: -HGT:kpds5=7:kpds6=100:kpds7=70: -RH:kpds5=52:kpds6=105:kpds7=2: -RH:kpds5=52:kpds6=100:kpds7=1000: -RH:kpds5=52:kpds6=100:kpds7=850: -RH:kpds5=52:kpds6=100:kpds7=700: -RH:kpds5=52:kpds6=100:kpds7=600: -RH:kpds5=52:kpds6=100:kpds7=500: -RH:kpds5=52:kpds6=100:kpds7=400: -RH:kpds5=52:kpds6=100:kpds7=300: -RH:kpds5=52:kpds6=100:kpds7=250: -RH:kpds5=52:kpds6=100:kpds7=200: -RH:kpds5=52:kpds6=100:kpds7=150: -RH:kpds5=52:kpds6=100:kpds7=100: -VVEL:kpds5=39:kpds6=100:kpds7=850: -VVEL:kpds5=39:kpds6=100:kpds7=700: -VVEL:kpds5=39:kpds6=100:kpds7=600: -VVEL:kpds5=39:kpds6=100:kpds7=500: -VVEL:kpds5=39:kpds6=100:kpds7=400: -VVEL:kpds5=39:kpds6=100:kpds7=300: -VVEL:kpds5=39:kpds6=100:kpds7=250: -VVEL:kpds5=39:kpds6=100:kpds7=200: -VVEL:kpds5=39:kpds6=100:kpds7=150: -VVEL:kpds5=39:kpds6=100:kpds7=100: -UGRD:kpds5=33:kpds6=116:kpds7=7680: -VGRD:kpds5=34:kpds6=116:kpds7=7680: -TMP:kpds5=11:kpds6=116:kpds7=7680: -RH:kpds5=52:kpds6=116:kpds7=7680: -PRES:kpds5=1:kpds6=7:kpds7=0: -PRES:kpds5=1:kpds6=6:kpds7=0: -ABSV:kpds5=41:kpds6=100:kpds7=500: diff --git a/parm/product/grib_wafsgfs_intdskf00 b/parm/product/grib_wafsgfs_intdskf00 deleted file mode 100755 index fe0b85185fa..00000000000 --- a/parm/product/grib_wafsgfs_intdskf00 +++ /dev/null @@ -1,90 +0,0 @@ -TMP:kpds5=11:kpds6=100:kpds7=850: -TMP:kpds5=11:kpds6=100:kpds7=700: -TMP:kpds5=11:kpds6=100:kpds7=600: -TMP:kpds5=11:kpds6=100:kpds7=500: -TMP:kpds5=11:kpds6=100:kpds7=400: -TMP:kpds5=11:kpds6=100:kpds7=300: -TMP:kpds5=11:kpds6=100:kpds7=250: -TMP:kpds5=11:kpds6=100:kpds7=200: -TMP:kpds5=11:kpds6=100:kpds7=150: -TMP:kpds5=11:kpds6=100:kpds7=100: -TMP:kpds5=11:kpds6=100:kpds7=70: -TMP:kpds5=11:kpds6=7:kpds7=0: -TMP:kpds5=11:kpds6=6:kpds7=0: -UGRD:kpds5=33:kpds6=100:kpds7=850: -UGRD:kpds5=33:kpds6=100:kpds7=700: -UGRD:kpds5=33:kpds6=100:kpds7=600: -UGRD:kpds5=33:kpds6=100:kpds7=500: -UGRD:kpds5=33:kpds6=100:kpds7=400: -UGRD:kpds5=33:kpds6=100:kpds7=300: -UGRD:kpds5=33:kpds6=100:kpds7=250: -UGRD:kpds5=33:kpds6=100:kpds7=200: -UGRD:kpds5=33:kpds6=100:kpds7=150: -UGRD:kpds5=33:kpds6=100:kpds7=100: -UGRD:kpds5=33:kpds6=100:kpds7=70: -UGRD:kpds5=33:kpds6=7:kpds7=0: -UGRD:kpds5=33:kpds6=6:kpds7=0: -VGRD:kpds5=34:kpds6=100:kpds7=850: -VGRD:kpds5=34:kpds6=100:kpds7=700: -VGRD:kpds5=34:kpds6=100:kpds7=600: -VGRD:kpds5=34:kpds6=100:kpds7=500: -VGRD:kpds5=34:kpds6=100:kpds7=400: -VGRD:kpds5=34:kpds6=100:kpds7=300: -VGRD:kpds5=34:kpds6=100:kpds7=250: -VGRD:kpds5=34:kpds6=100:kpds7=200: -VGRD:kpds5=34:kpds6=100:kpds7=150: -VGRD:kpds5=34:kpds6=100:kpds7=100: -VGRD:kpds5=34:kpds6=100:kpds7=70: -VGRD:kpds5=34:kpds6=7:kpds7=0: -VGRD:kpds5=34:kpds6=6:kpds7=0: -HGT:kpds5=7:kpds6=7:kpds7=0: -HGT:kpds5=7:kpds6=6:kpds7=0: -TMP:kpds5=11:kpds6=105:kpds7=2: -TMP:kpds5=11:kpds6=100:kpds7=1000: -UGRD:kpds5=33:kpds6=105:kpds7=10: -UGRD:kpds5=33:kpds6=100:kpds7=1000: -VGRD:kpds5=34:kpds6=105:kpds7=10: -VGRD:kpds5=34:kpds6=100:kpds7=1000: -PRES:kpds5=1:kpds6=1:kpds7=0: -PRMSL:kpds5=2:kpds6=102:kpds7=0: -HGT:kpds5=7:kpds6=100:kpds7=1000: -HGT:kpds5=7:kpds6=100:kpds7=850: -HGT:kpds5=7:kpds6=100:kpds7=700: -HGT:kpds5=7:kpds6=100:kpds7=600: -HGT:kpds5=7:kpds6=100:kpds7=500: -HGT:kpds5=7:kpds6=100:kpds7=400: -HGT:kpds5=7:kpds6=100:kpds7=300: -HGT:kpds5=7:kpds6=100:kpds7=250: -HGT:kpds5=7:kpds6=100:kpds7=200: -HGT:kpds5=7:kpds6=100:kpds7=150: -HGT:kpds5=7:kpds6=100:kpds7=100: -HGT:kpds5=7:kpds6=100:kpds7=70: -RH:kpds5=52:kpds6=105:kpds7=2: -RH:kpds5=52:kpds6=100:kpds7=1000: -RH:kpds5=52:kpds6=100:kpds7=850: -RH:kpds5=52:kpds6=100:kpds7=700: -RH:kpds5=52:kpds6=100:kpds7=600: -RH:kpds5=52:kpds6=100:kpds7=500: -RH:kpds5=52:kpds6=100:kpds7=400: -RH:kpds5=52:kpds6=100:kpds7=300: -RH:kpds5=52:kpds6=100:kpds7=250: -RH:kpds5=52:kpds6=100:kpds7=200: -RH:kpds5=52:kpds6=100:kpds7=150: -RH:kpds5=52:kpds6=100:kpds7=100: -VVEL:kpds5=39:kpds6=100:kpds7=850: -VVEL:kpds5=39:kpds6=100:kpds7=700: -VVEL:kpds5=39:kpds6=100:kpds7=600: -VVEL:kpds5=39:kpds6=100:kpds7=500: -VVEL:kpds5=39:kpds6=100:kpds7=400: -VVEL:kpds5=39:kpds6=100:kpds7=300: -VVEL:kpds5=39:kpds6=100:kpds7=250: -VVEL:kpds5=39:kpds6=100:kpds7=200: -VVEL:kpds5=39:kpds6=100:kpds7=150: -VVEL:kpds5=39:kpds6=100:kpds7=100: -UGRD:kpds5=33:kpds6=116:kpds7=7680: -VGRD:kpds5=34:kpds6=116:kpds7=7680: -TMP:kpds5=11:kpds6=116:kpds7=7680: -RH:kpds5=52:kpds6=116:kpds7=7680: -PRES:kpds5=1:kpds6=7:kpds7=0: -PRES:kpds5=1:kpds6=6:kpds7=0: -ABSV:kpds5=41:kpds6=100:kpds7=500: diff --git a/parm/product/wafs.namelist b/parm/product/wafs.namelist deleted file mode 100755 index d8b5583be17..00000000000 --- a/parm/product/wafs.namelist +++ /dev/null @@ -1 +0,0 @@ - &NLCOPYGB IDS(33)=1,IDS(34)=1,/ diff --git a/parm/product/wafs_gfsmaster.grb1.list b/parm/product/wafs_gfsmaster.grb1.list deleted file mode 100755 index d22c4a69bd0..00000000000 --- a/parm/product/wafs_gfsmaster.grb1.list +++ /dev/null @@ -1,79 +0,0 @@ -UGRD:kpds5=33:kpds6=100:kpds7=100: -UGRD:kpds5=33:kpds6=100:kpds7=125 -UGRD:kpds5=33:kpds6=100:kpds7=150 -UGRD:kpds5=33:kpds6=100:kpds7=175 -UGRD:kpds5=33:kpds6=100:kpds7=200 -UGRD:kpds5=33:kpds6=100:kpds7=225 -UGRD:kpds5=33:kpds6=100:kpds7=250 -UGRD:kpds5=33:kpds6=100:kpds7=275 -UGRD:kpds5=33:kpds6=100:kpds7=300 -UGRD:kpds5=33:kpds6=100:kpds7=350 -UGRD:kpds5=33:kpds6=100:kpds7=400 -UGRD:kpds5=33:kpds6=100:kpds7=450 -UGRD:kpds5=33:kpds6=100:kpds7=500 -UGRD:kpds5=33:kpds6=100:kpds7=600 -UGRD:kpds5=33:kpds6=100:kpds7=700 -UGRD:kpds5=33:kpds6=100:kpds7=750 -UGRD:kpds5=33:kpds6=100:kpds7=850 -VGRD:kpds5=34:kpds6=100:kpds7=100: -VGRD:kpds5=34:kpds6=100:kpds7=125 -VGRD:kpds5=34:kpds6=100:kpds7=150 -VGRD:kpds5=34:kpds6=100:kpds7=175 -VGRD:kpds5=34:kpds6=100:kpds7=200 -VGRD:kpds5=34:kpds6=100:kpds7=225 -VGRD:kpds5=34:kpds6=100:kpds7=250 -VGRD:kpds5=34:kpds6=100:kpds7=275 -VGRD:kpds5=34:kpds6=100:kpds7=300 -VGRD:kpds5=34:kpds6=100:kpds7=350 -VGRD:kpds5=34:kpds6=100:kpds7=400 -VGRD:kpds5=34:kpds6=100:kpds7=450 -VGRD:kpds5=34:kpds6=100:kpds7=500 -VGRD:kpds5=34:kpds6=100:kpds7=600 -VGRD:kpds5=34:kpds6=100:kpds7=700 -VGRD:kpds5=34:kpds6=100:kpds7=750 -VGRD:kpds5=34:kpds6=100:kpds7=850 -TMP:kpds5=11:kpds6=100:kpds7=100: -TMP:kpds5=11:kpds6=100:kpds7=125 -TMP:kpds5=11:kpds6=100:kpds7=150 -TMP:kpds5=11:kpds6=100:kpds7=175 -TMP:kpds5=11:kpds6=100:kpds7=200 -TMP:kpds5=11:kpds6=100:kpds7=225 -TMP:kpds5=11:kpds6=100:kpds7=250 -TMP:kpds5=11:kpds6=100:kpds7=275 -TMP:kpds5=11:kpds6=100:kpds7=300 -TMP:kpds5=11:kpds6=100:kpds7=350 -TMP:kpds5=11:kpds6=100:kpds7=400 -TMP:kpds5=11:kpds6=100:kpds7=450 -TMP:kpds5=11:kpds6=100:kpds7=500 -TMP:kpds5=11:kpds6=100:kpds7=600 -TMP:kpds5=11:kpds6=100:kpds7=700 -TMP:kpds5=11:kpds6=100:kpds7=750 -TMP:kpds5=11:kpds6=100:kpds7=850 -HGT:kpds5=7:kpds6=100:kpds7=100: -HGT:kpds5=7:kpds6=100:kpds7=125 -HGT:kpds5=7:kpds6=100:kpds7=150 -HGT:kpds5=7:kpds6=100:kpds7=175 -HGT:kpds5=7:kpds6=100:kpds7=200 -HGT:kpds5=7:kpds6=100:kpds7=225 -HGT:kpds5=7:kpds6=100:kpds7=250 -HGT:kpds5=7:kpds6=100:kpds7=275 -HGT:kpds5=7:kpds6=100:kpds7=300 -HGT:kpds5=7:kpds6=100:kpds7=350 -HGT:kpds5=7:kpds6=100:kpds7=400 -HGT:kpds5=7:kpds6=100:kpds7=450 -HGT:kpds5=7:kpds6=100:kpds7=500 -HGT:kpds5=7:kpds6=100:kpds7=600 -HGT:kpds5=7:kpds6=100:kpds7=700 -HGT:kpds5=7:kpds6=100:kpds7=750 -HGT:kpds5=7:kpds6=100:kpds7=850 -RH:kpds5=52:kpds6=100:kpds7=450 -RH:kpds5=52:kpds6=100:kpds7=500 -RH:kpds5=52:kpds6=100:kpds7=600 -RH:kpds5=52:kpds6=100:kpds7=700 -RH:kpds5=52:kpds6=100:kpds7=750 -RH:kpds5=52:kpds6=100:kpds7=850 -ICAHT:kpds5=5:kpds6=7:kpds7=0 -TMP:kpds5=11:kpds6=7:kpds7=0 -UGRD:kpds5=33:kpds6=6:kpds7=0 -VGRD:kpds5=34:kpds6=6:kpds7=0 -ICAHT:kpds5=5:kpds6=6:kpds7=0 diff --git a/parm/product/wafs_gfsmaster.grb2.list b/parm/product/wafs_gfsmaster.grb2.list deleted file mode 100644 index 2f04a581fb2..00000000000 --- a/parm/product/wafs_gfsmaster.grb2.list +++ /dev/null @@ -1,79 +0,0 @@ -UGRD:100 mb: -UGRD:125 mb -UGRD:150 mb -UGRD:175 mb -UGRD:200 mb -UGRD:225 mb -UGRD:250 mb -UGRD:275 mb -UGRD:300 mb -UGRD:350 mb -UGRD:400 mb -UGRD:450 mb -UGRD:500 mb -UGRD:600 mb -UGRD:700 mb -UGRD:750 mb -UGRD:850 mb -VGRD:100 mb: -VGRD:125 mb -VGRD:150 mb -VGRD:175 mb -VGRD:200 mb -VGRD:225 mb -VGRD:250 mb -VGRD:275 mb -VGRD:300 mb -VGRD:350 mb -VGRD:400 mb -VGRD:450 mb -VGRD:500 mb -VGRD:600 mb -VGRD:700 mb -VGRD:750 mb -VGRD:850 mb -TMP:100 mb: -TMP:125 mb -TMP:150 mb -TMP:175 mb -TMP:200 mb -TMP:225 mb -TMP:250 mb -TMP:275 mb -TMP:300 mb -TMP:350 mb -TMP:400 mb -TMP:450 mb -TMP:500 mb -TMP:600 mb -TMP:700 mb -TMP:750 mb -TMP:850 mb -HGT:100 mb: -HGT:125 mb -HGT:150 mb -HGT:175 mb -HGT:200 mb -HGT:225 mb -HGT:250 mb -HGT:275 mb -HGT:300 mb -HGT:350 mb -HGT:400 mb -HGT:450 mb -HGT:500 mb -HGT:600 mb -HGT:700 mb -HGT:750 mb -HGT:850 mb -RH:450 mb: -RH:500 mb -RH:600 mb -RH:700 mb -RH:750 mb -RH:850 mb -ICAHT:tropopause -ICAHT:max wind -VGRD:max wind -UGRD:max wind -TMP:tropopause \ No newline at end of file diff --git a/scripts/exglobal_atmos_products.sh b/scripts/exglobal_atmos_products.sh index 2c21d71120b..6c0ee4fc122 100755 --- a/scripts/exglobal_atmos_products.sh +++ b/scripts/exglobal_atmos_products.sh @@ -1,17 +1,5 @@ #! /usr/bin/env bash -# Scripts used -INTERP_ATMOS_MASTERSH=${INTERP_ATMOS_MASTERSH:-"${USHgfs}/interp_atmos_master.sh"} -INTERP_ATMOS_SFLUXSH=${INTERP_ATMOS_SFLUXSH:-"${USHgfs}/interp_atmos_sflux.sh"} - -# Variables used in this job -downset=${downset:-1} # No. of groups of pressure grib2 products to create -ntasks_atmos_products=${ntasks_atmos_products:-8} # no. of processors available to process each group - -# WGNE related options -WGNE=${WGNE:-NO} # Create WGNE products -FHMAX_WGNE=${FHMAX_WGNE:-0} # WGNE products are created for first FHMAX_WGNE forecast hours (except 0) - cd "${DATA}" || exit 1 # Set paramlist files based on FORECAST_HOUR (-1, 0, 3, 6, etc.) @@ -19,10 +7,12 @@ cd "${DATA}" || exit 1 if [[ ${FORECAST_HOUR} -le 0 ]]; then if [[ ${FORECAST_HOUR} -lt 0 ]]; then fhr3="analysis" + # shellcheck disable=SC2034 # paramlista is used later indirectly paramlista="${paramlista_anl}" FLXGF="NO" elif [[ ${FORECAST_HOUR} == 0 ]]; then fhr3=$(printf "f%03d" "${FORECAST_HOUR}") + # shellcheck disable=SC2034 # paramlista is used later indirectly paramlista="${paramlista_f000}" fi PGBS="YES" @@ -36,45 +26,24 @@ fi #----------------------------------------------------- # Section creating pressure grib2 interpolated products -# Files needed by ${INTERP_ATMOS_MASTERSH} -MASTER_FILE="${COMIN_ATMOS_MASTER}/${PREFIX}master.${fhr3}.grib2" - -# Get inventory from ${MASTER_FILE} that matches patterns from ${paramlista} -# Extract this inventory from ${MASTER_FILE} into a smaller tmpfile or tmpfileb based on paramlista or paramlistb -# shellcheck disable=SC2312 -${WGRIB2} "${MASTER_FILE}" | grep -F -f "${paramlista}" | ${WGRIB2} -i -grib "tmpfilea_${fhr3}" "${MASTER_FILE}" && true -export err=$? -if [[ ${err} -ne 0 ]]; then - err_exit "wgrib2 failed to create intermediate grib2 file from ${MASTER_FILE} using ${paramlista}" -fi - -# Do the same as above for ${paramlistb} -if [[ ${downset} -eq 2 ]]; then - # shellcheck disable=SC2312 - ${WGRIB2} "${MASTER_FILE}" | grep -F -f "${paramlistb}" | ${WGRIB2} -i -grib "tmpfileb_${fhr3}" "${MASTER_FILE}" && true - export err=$? - if [[ ${err} -ne 0 ]]; then - err_exit "wgrib2 failed to create intermediate grib2 file from ${MASTER_FILE} using ${paramlistb}" - fi -fi - # Determine grids once and save them as a string and an array for processing grid_string="0p25" if [[ "${PGBS:-}" == "YES" ]]; then grid_string="${grid_string}:0p50:1p00" else - echo "Supplemental product generation is disable for fhr = ${fhr3}" + echo "INFO: Supplemental product generation is disabled for fhr = ${fhr3}" PGBS="NO" # Can't generate supplemental products if PGBS is not YES fi # Also transform the ${grid_string} into an array for processing IFS=':' read -ra grids <<< "${grid_string}" -for (( nset=1 ; nset <= downset ; nset++ )); do +# Files needed by ${USHgfs}/interp_atmos_master.sh +MASTER_FILE="${COMIN_ATMOS_MASTER}/${PREFIX}master.${fhr3}.grib2" - echo "Begin processing nset = ${nset}" +nset=1 +while [[ ${nset} -le ${downset:-1} ]]; do - # Number of processors available to process $nset - nproc=${ntasks} + echo "INFO: Begin processing nset = ${nset}" # Each set represents a group of files if [[ ${nset} == 1 ]]; then @@ -83,20 +52,35 @@ for (( nset=1 ; nset <= downset ; nset++ )); do grp="b" fi - # process grib2 chunkfiles to interpolate using MPMD + # Get inventory from ${MASTER_FILE} that matches patterns from ${paramlist} + # Extract this inventory from ${MASTER_FILE} into a smaller tmpfile based on paramlist + tmpfile="tmpfile${grp}_${fhr3}" + paramlist="paramlist${grp}" + parmfile="${!paramlist}" + + # shellcheck disable=SC2312 + ${WGRIB2} "${MASTER_FILE}" | grep -F -f "${parmfile}" | ${WGRIB2} -i -grib "${tmpfile}" "${MASTER_FILE}" && true + export err=$? + if [[ ${err} -ne 0 ]]; then + err_exit "wgrib2 failed to create intermediate grib2 file from '${MASTER_FILE}' using '${parmfile}'" + fi + + # Number of processors available to process $nset + nproc=${ntasks} # shellcheck disable=SC2312 ncount=$(${WGRIB2} "${tmpfile}" | wc -l) if [[ ${nproc} -gt ${ncount} ]]; then echo "WARNING: Total no. of available processors '${nproc}' exceeds no. of records '${ncount}' in ${tmpfile}" - echo "Reduce nproc to ${ncount} (or less) to not waste resources" + echo "WARNING: Reduce nproc to ${ncount} (or less) to not waste resources" fi inv=$(( ncount / nproc )) - rm -f "${DATA}/poescript" + rm -f "${DATA}/cmdfile" last=0 - for (( iproc = 1 ; iproc <= nproc ; iproc++ )); do + iproc=1 + while [[ ${iproc} -le ${nproc} ]]; do first=$((last + 1)) last=$((last + inv)) if [[ ${last} -gt ${ncount} ]]; then @@ -126,20 +110,21 @@ for (( nset=1 ; nset <= downset ; nset++ )); do fi input_file="${tmpfile}_${iproc}" output_file_prefix="pgb2${grp}file_${fhr3}_${iproc}" - echo "${INTERP_ATMOS_MASTERSH} ${input_file} ${output_file_prefix} ${grid_string}" >> "${DATA}/poescript" + echo "${USHgfs}/interp_atmos_master.sh ${input_file} ${output_file_prefix} ${grid_string}" >> "${DATA}/cmdfile" # if at final record and have not reached the final processor then write echo's to - # poescript for remaining processors + # cmdfile for remaining processors if [[ ${last} -eq ${ncount} ]]; then for (( pproc = iproc+1 ; pproc < nproc ; pproc++ )); do - echo "/bin/echo ${pproc}" >> "${DATA}/poescript" + echo "/bin/echo ${pproc}" >> "${DATA}/cmdfile" done break fi - done # for (( iproc = 1 ; iproc <= nproc ; iproc++ )); do + iproc=$(( iproc + 1 )) + done # while [[ iproc -le nproc ]]; do # Run with MPMD or serial - "${USHgfs}/run_mpmd.sh" "${DATA}/poescript" && true + "${USHgfs}/run_mpmd.sh" "${DATA}/cmdfile" && true export err=$? if [[ ${err} -ne 0 ]]; then err_exit "Some or all interpolations of the master grib file failed during MPMD execution!" @@ -150,26 +135,32 @@ for (( nset=1 ; nset <= downset ; nset++ )); do # Concatenate grib files from each processor into a single one # and clean-up as you go - echo "Concatenating processor-specific grib2 files into a single product file" - for (( iproc = 1 ; iproc <= nproc ; iproc++ )); do + echo "INFO: Concatenating processor-specific grib2 files into a single product file" + iproc=1 + while [[ ${iproc} -le ${nproc} ]]; do for grid in "${grids[@]}"; do - cat "pgb2${grp}file_${fhr3}_${iproc}_${grid}" >> "pgb2${grp}file_${fhr3}_${grid}" - rm -f "pgb2${grp}file_${fhr3}_${iproc}_${grid}" + if [[ -s "pgb2${grp}file_${fhr3}_${iproc}_${grid}" ]]; then + cat "pgb2${grp}file_${fhr3}_${iproc}_${grid}" >> "pgb2${grp}file_${fhr3}_${grid}" + rm -f "pgb2${grp}file_${fhr3}_${iproc}_${grid}" + fi done # There is no further use of the processor specific tmpfile; delete it rm -f "${tmpfile}_${iproc}" + iproc=$(( iproc + 1 )) done # Move to COM and index the product grib files for grid in "${grids[@]}"; do + ${WGRIB2} -s "pgb2${grp}file_${fhr3}_${grid}" > "pgb2${grp}file_${fhr3}_${grid}.idx" prod_dir="COMOUT_ATMOS_GRIB_${grid}" - cpfs "pgb2${grp}file_${fhr3}_${grid}" "${!prod_dir}/${PREFIX}pres_${grp}.${grid}.${fhr3}.grib2" - ${WGRIB2} -s "pgb2${grp}file_${fhr3}_${grid}" > "${!prod_dir}/${PREFIX}pres_${grp}.${grid}.${fhr3}.grib2.idx" + cpfs "pgb2${grp}file_${fhr3}_${grid}" "${!prod_dir}/${PREFIX}pres_${grp}.${grid}.${fhr3}.grib2" + cpfs "pgb2${grp}file_${fhr3}_${grid}.idx" "${!prod_dir}/${PREFIX}pres_${grp}.${grid}.${fhr3}.grib2.idx" done - echo "Finished processing nset = ${nset}" + echo "INFO: Finished processing nset = ${nset}" -done # for (( nset=1 ; nset <= downset ; nset++ )) + nset=$(( nset + 1 )) +done # while [[ ${nset} -le ${downset} ]]; do #--------------------------------------------------------------- @@ -184,11 +175,11 @@ fi # move to COM and index it if [[ "${FLXGF:-}" == "YES" ]]; then - # Files needed by ${INTERP_ATMOS_SFLUXSH} + # Files needed by ${USHgfs}/interp_atmos_sflux.sh input_file="${FLUX_FILE}" output_file_prefix="sflux_${fhr3}" grid_string="1p00" - "${INTERP_ATMOS_SFLUXSH}" "${input_file}" "${output_file_prefix}" "${grid_string}" && true + "${USHgfs}/interp_atmos_sflux.sh" "${input_file}" "${output_file_prefix}" "${grid_string}" && true export err=$? if [[ ${err} -ne 0 ]]; then err_exit "Unable to interpolate the surface flux grib2 files!" @@ -197,18 +188,21 @@ if [[ "${FLXGF:-}" == "YES" ]]; then # Move to COM and index the product sflux file IFS=':' read -ra grids <<< "${grid_string}" for grid in "${grids[@]}"; do + ${WGRIB2} -s "sflux_${fhr3}_${grid}" > "sflux_${fhr3}_${grid}.idx" prod_dir="COMOUT_ATMOS_GRIB_${grid}" - cpfs "sflux_${fhr3}_${grid}" "${!prod_dir}/${PREFIX}flux.${grid}.${fhr3}.grib2" - ${WGRIB2} -s "sflux_${fhr3}_${grid}" > "${!prod_dir}/${PREFIX}flux.${grid}.${fhr3}.grib2.idx" + cpfs "sflux_${fhr3}_${grid}" "${!prod_dir}/${PREFIX}flux.${grid}.${fhr3}.grib2" + cpfs "sflux_${fhr3}_${grid}.idx" "${!prod_dir}/${PREFIX}flux.${grid}.${fhr3}.grib2.idx" done fi # Section creating 0.25 degree WGNE products for nset=1, and fhr <= FHMAX_WGNE if [[ "${WGNE:-}" == "YES" ]]; then grp="a" - if [[ ${FORECAST_HOUR} -gt 0 && ${FORECAST_HOUR} -le ${FHMAX_WGNE} ]]; then - # TODO: 597 is the message number for APCP in GFSv16. GFSv17 may change this as more messages are added. This can be controlled via config.atmos_products - ${WGRIB2} "${COMOUT_ATMOS_GRIB_0p25}/${PREFIX}pres_${grp}.0p25.${fhr3}.grib2" -d "${APCP_MSG:-597}" -grib "${COMOUT_ATMOS_GRIB_0p25}/${PREFIX}wgne.${fhr3}.grib2" + if [[ ${FORECAST_HOUR} -gt 0 && ${FORECAST_HOUR} -le ${FHMAX_WGNE:-0} ]]; then + # 598 is the message number for APCP in GFSv17 (it was 597 in GFSv16) + ${WGRIB2} "${COMOUT_ATMOS_GRIB_0p25}/${PREFIX}pres_${grp}.0p25.${fhr3}.grib2" \ + -d "${APCP_MSG:-598}" \ + -grib "${COMOUT_ATMOS_GRIB_0p25}/${PREFIX}wgne.${fhr3}.grib2" fi fi @@ -217,6 +211,7 @@ fi # Start sending DBN alerts # Everything below this line is for sending files to DBN (SENDDBN=YES) if [[ "${SENDDBN:-}" == "YES" ]]; then + "${DBNROOT}/bin/dbn_alert" MODEL "${RUN^^}_PGB2_0P25" "${job}" "${COMOUT_ATMOS_GRIB_0p25}/${PREFIX}pres_a.0p25.${fhr3}.grib2" "${DBNROOT}/bin/dbn_alert" MODEL "${RUN^^}_PGB2_0P25_WIDX" "${job}" "${COMOUT_ATMOS_GRIB_0p25}/${PREFIX}pres_a.0p25.${fhr3}.grib2.idx" if [[ "${RUN}" == "gfs" ]]; then @@ -225,16 +220,20 @@ if [[ "${SENDDBN:-}" == "YES" ]]; then if [[ -s "${COMOUT_ATMOS_GRIB_0p50}/${PREFIX}pres_a.0p50.${fhr3}.grib2" ]]; then "${DBNROOT}/bin/dbn_alert" MODEL "${RUN^^}_PGB2_0P5" "${job}" "${COMOUT_ATMOS_GRIB_0p50}/${PREFIX}pres_a.0p50.${fhr3}.grib2" "${DBNROOT}/bin/dbn_alert" MODEL "${RUN^^}_PGB2_0P5_WIDX" "${job}" "${COMOUT_ATMOS_GRIB_0p50}/${PREFIX}pres_a.0p50.${fhr3}.grib2.idx" + fi + if [[ -s "${COMOUT_ATMOS_GRIB_0p50}/${PREFIX}pres_b.0p50.${fhr3}.grib2" ]]; then "${DBNROOT}/bin/dbn_alert" MODEL "${RUN^^}_PGB2B_0P5" "${job}" "${COMOUT_ATMOS_GRIB_0p50}/${PREFIX}pres_b.0p50.${fhr3}.grib2" "${DBNROOT}/bin/dbn_alert" MODEL "${RUN^^}_PGB2B_0P5_WIDX" "${job}" "${COMOUT_ATMOS_GRIB_0p50}/${PREFIX}pres_b.0p50.${fhr3}.grib2.idx" fi if [[ -s "${COMOUT_ATMOS_GRIB_1p00}/${PREFIX}pres_a.1p00.${fhr3}.grib2" ]]; then "${DBNROOT}/bin/dbn_alert" MODEL "${RUN^^}_PGB2_1P0" "${job}" "${COMOUT_ATMOS_GRIB_1p00}/${PREFIX}pres_a.1p00.${fhr3}.grib2" "${DBNROOT}/bin/dbn_alert" MODEL "${RUN^^}_PGB2_1P0_WIDX" "${job}" "${COMOUT_ATMOS_GRIB_1p00}/${PREFIX}pres_a.1p00.${fhr3}.grib2.idx" + fi + if [[ -s "${COMOUT_ATMOS_GRIB_1p00}/${PREFIX}pres_b.1p00.${fhr3}.grib2" ]]; then "${DBNROOT}/bin/dbn_alert" MODEL "${RUN^^}_PGB2B_1P0" "${job}" "${COMOUT_ATMOS_GRIB_1p00}/${PREFIX}pres_b.1p00.${fhr3}.grib2" "${DBNROOT}/bin/dbn_alert" MODEL "${RUN^^}_PGB2B_1P0_WIDX" "${job}" "${COMOUT_ATMOS_GRIB_1p00}/${PREFIX}pres_b.1p00.${fhr3}.grib2.idx" fi - if [[ "${WGNE:-}" == "YES" && -s "${COMOUT_ATMOS_GRIB_0p25}/${PREFIX}wgne.${fhr3}.grib2" ]] ; then + if [[ "${WGNE:-}" == "YES" ]] && [[ -s "${COMOUT_ATMOS_GRIB_0p25}/${PREFIX}wgne.${fhr3}.grib2" ]] ; then "${DBNROOT}/bin/dbn_alert" MODEL "${RUN^^}_WGNE" "${job}" "${COMOUT_ATMOS_GRIB_0p25}/${PREFIX}wgne.${fhr3}.grib2" fi fi @@ -249,39 +248,32 @@ if [[ "${SENDDBN:-}" == "YES" ]]; then else # forecast hours f000, f003, f006, etc. - if [[ "${RUN}" == "gdas" ]]; then - "${DBNROOT}/bin/dbn_alert" MODEL "${RUN^^}_PGB_GB2" "${job}" "${COMOUT_ATMOS_GRIB_1p00}/${PREFIX}pres_a.1p00.${fhr3}.grib2" - "${DBNROOT}/bin/dbn_alert" MODEL "${RUN^^}_PGB_GB2_WIDX" "${job}" "${COMOUT_ATMOS_GRIB_1p00}/${PREFIX}pres_a.1p00.${fhr3}.grib2.idx" - if (( FORECAST_HOUR % 3 == 0 )); then - "${DBNROOT}/bin/dbn_alert" MODEL "${RUN^^}_SF" "${job}" "${COMIN_ATMOS_HISTORY}/${PREFIX}atm.${fhr3}.nc" - "${DBNROOT}/bin/dbn_alert" MODEL "${RUN^^}_BF" "${job}" "${COMIN_ATMOS_HISTORY}/${PREFIX}sfc.${fhr3}.nc" - "${DBNROOT}/bin/dbn_alert" MODEL "${RUN^^}_SGB_GB2" "${job}" "${COMIN_ATMOS_MASTER}/${PREFIX}sflux.f${fhr3}.grib2" - "${DBNROOT}/bin/dbn_alert" MODEL "${RUN^^}_SGB_GB2_WIDX" "${job}" "${COMIN_ATMOS_MASTER}/${PREFIX}sflux.f${fhr3}.grib2.idx" - fi - elif [[ "${RUN}" == "gfs" ]]; then - - "${DBNROOT}/bin/dbn_alert" MODEL "${RUN^^}_SF" "${job}" "${COMIN_ATMOS_HISTORY}/${PREFIX}atm.${fhr3}.nc" - if [[ ${fhr} -gt 0 && ${fhr} -le 84 || ${fhr} -eq 120 ]]; then - "${DBNROOT}/bin/dbn_alert" MODEL "${RUN^^}_BF" "${job}" "${COMIN_ATMOS_HISTORY}/${PREFIX}sfc.${fhr3}.nc" - fi - - if [[ -s "${COMIN_ATMOS_MASTER}/${PREFIX}sflux.f${fhr3}.grib2" ]]; then - "${DBNROOT}/bin/dbn_alert" MODEL "${RUN^^}_SGB_GB2" "${job}" "${COMIN_ATMOS_MASTER}/${PREFIX}sflux.f${fhr3}.grib2" - "${DBNROOT}/bin/dbn_alert" MODEL "${RUN^^}_SGB_GB2_WIDX" "${job}" "${COMIN_ATMOS_MASTER}/${PREFIX}sflux.f${fhr3}.grib2.idx" - fi - elif [[ "${RUN}" == "gcafs" ]]; then - - "${DBNROOT}/bin/dbn_alert" MODEL "${RUN^^}_SF" "${job}" "${COM_ATMOS_HISTORY}/${PREFIX}atm.f${fhr3}.nc" - if [[ ${fhr} -gt 0 && ${fhr} -le 84 || ${fhr} == 120 ]]; then - "${DBNROOT}/bin/dbn_alert" MODEL "${RUN^^}_BF" "${job}" "${COM_ATMOS_HISTORY}/${PREFIX}sfc.f${fhr3}.nc" - fi - - if [[ -s "${COM_ATMOS_MASTER}/${PREFIX}sflux.f${fhr3}.grib2" ]]; then - "${DBNROOT}/bin/dbn_alert" MODEL "${RUN^^}_SGB_GB2" "${job}" "${COM_ATMOS_MASTER}/${PREFIX}sflux.f${fhr3}.grib2" - "${DBNROOT}/bin/dbn_alert" MODEL "${RUN^^}_SGB_GB2_WIDX" "${job}" "${COM_ATMOS_MASTER}/${PREFIX}sflux.f${fhr3}.grib2.idx" - fi - fi - + case "${RUN}" in + gdas) + "${DBNROOT}/bin/dbn_alert" MODEL "${RUN^^}_PGB_GB2" "${job}" "${COMOUT_ATMOS_GRIB_1p00}/${PREFIX}pres_a.1p00.${fhr3}.grib2" + "${DBNROOT}/bin/dbn_alert" MODEL "${RUN^^}_PGB_GB2_WIDX" "${job}" "${COMOUT_ATMOS_GRIB_1p00}/${PREFIX}pres_a.1p00.${fhr3}.grib2.idx" + if (( FORECAST_HOUR % 3 == 0 )); then + "${DBNROOT}/bin/dbn_alert" MODEL "${RUN^^}_SF" "${job}" "${COMIN_ATMOS_HISTORY}/${PREFIX}atm.${fhr3}.nc" + "${DBNROOT}/bin/dbn_alert" MODEL "${RUN^^}_BF" "${job}" "${COMIN_ATMOS_HISTORY}/${PREFIX}sfc.${fhr3}.nc" + "${DBNROOT}/bin/dbn_alert" MODEL "${RUN^^}_SGB_GB2" "${job}" "${COMIN_ATMOS_MASTER}/${PREFIX}sflux.f${fhr3}.grib2" + "${DBNROOT}/bin/dbn_alert" MODEL "${RUN^^}_SGB_GB2_WIDX" "${job}" "${COMIN_ATMOS_MASTER}/${PREFIX}sflux.f${fhr3}.grib2.idx" + fi + ;; + gfs) + "${DBNROOT}/bin/dbn_alert" MODEL "${RUN^^}_SF" "${job}" "${COMIN_ATMOS_HISTORY}/${PREFIX}atm.${fhr3}.nc" + if [[ ${fhr} -gt 0 && ${fhr} -le 84 || ${fhr} -eq 120 ]]; then + "${DBNROOT}/bin/dbn_alert" MODEL "${RUN^^}_BF" "${job}" "${COMIN_ATMOS_HISTORY}/${PREFIX}sfc.${fhr3}.nc" + fi + + if [[ -s "${COMIN_ATMOS_MASTER}/${PREFIX}sflux.f${fhr3}.grib2" ]]; then + "${DBNROOT}/bin/dbn_alert" MODEL "${RUN^^}_SGB_GB2" "${job}" "${COMIN_ATMOS_MASTER}/${PREFIX}sflux.f${fhr3}.grib2" + "${DBNROOT}/bin/dbn_alert" MODEL "${RUN^^}_SGB_GB2_WIDX" "${job}" "${COMIN_ATMOS_MASTER}/${PREFIX}sflux.f${fhr3}.grib2.idx" + fi + ;; + *) + err_exit "Unsupported RUN value '${RUN}' for SENDDBN section" + ;; + esac fi # end if fhr3=anl