From b0a681d91d33131fb742b1a2c7284a6490a19539 Mon Sep 17 00:00:00 2001 From: NeilBarton-NOAA Date: Wed, 19 Apr 2023 20:11:04 +0000 Subject: [PATCH 01/18] adding GEFS wave grid in S2SW --- parm/config/config.defaults.s2sw | 10 +++++----- parm/config/config.ufs | 3 +++ parm/config/config.wavepostsbs | 6 +++++- scripts/exgfs_wave_post_gridded_sbs.sh | 14 +++++++------- 4 files changed, 20 insertions(+), 13 deletions(-) diff --git a/parm/config/config.defaults.s2sw b/parm/config/config.defaults.s2sw index 7f751e02bc9..ceca3d86ff8 100644 --- a/parm/config/config.defaults.s2sw +++ b/parm/config/config.defaults.s2sw @@ -16,13 +16,13 @@ use_cice_alb=".true." # config.wave -waveGRD='mx025' -waveinterpGRD='reg025' -waveuoutpGRD='mx025' -MESH_WAV='mesh.mx025.nc' +waveGRD='gefsv13_025' +waveinterpGRD=' ' +waveuoutpGRD='gefsv13_025' +MESH_WAV='mesh.gefsv13_025.nc' waveesmfGRD=' ' -wavepostGRD=' ' +wavepostGRD='gefsv13_025' waveGRDN="1" waveGRDG="10" USE_WAV_RMP="NO" diff --git a/parm/config/config.ufs b/parm/config/config.ufs index a4dc53807b4..4bc75bd4c78 100644 --- a/parm/config/config.ufs +++ b/parm/config/config.ufs @@ -354,6 +354,9 @@ if [[ "${skip_ww3}" == "false" ]]; then "mx025") ntasks_ww3=80 ;; + "gefsv13_025") + ntasks_ww3=262 + ;; *) echo "FATAL ERROR: Unsupported WW3 resolution = ${ww3_res}, ABORT!" exit 1 diff --git a/parm/config/config.wavepostsbs b/parm/config/config.wavepostsbs index 4faa4f5ebe5..7783895c57a 100644 --- a/parm/config/config.wavepostsbs +++ b/parm/config/config.wavepostsbs @@ -17,7 +17,11 @@ export DOIBP_WAV='NO' # Input boundary points export DOFLD_WAV='YES' # Field data export DOPNT_WAV='YES' # Station data export DOGRB_WAV='YES' # Create grib2 files -export DOGRI_WAV='YES' # Create interpolated grids +if [[ -z ${waveinterpGRD} ]]; then + export DOGRI_WAV='YES' # Create interpolated grids +else + export DOGRI_WAV='NO' # Create interpolated grids +fi export DOSPC_WAV='YES' # Spectral post export DOBLL_WAV='YES' # Bulletin post diff --git a/scripts/exgfs_wave_post_gridded_sbs.sh b/scripts/exgfs_wave_post_gridded_sbs.sh index bd003b7f220..9584fc88375 100755 --- a/scripts/exgfs_wave_post_gridded_sbs.sh +++ b/scripts/exgfs_wave_post_gridded_sbs.sh @@ -402,7 +402,7 @@ source "$HOMEgfs/ush/preamble.sh" cd $DATA FHINCG=$(( DTFLD_WAV / 3600 )) - if [ $fhr = $fhrg ] + if [ $fhr = $fhrg ] && ([ "$DOGRB_WAV" = 'YES' ] || [ "$DOGRI_WAV" = 'YES' ]) then # Check if grib2 file created ENSTAG="" @@ -420,13 +420,13 @@ source "$HOMEgfs/ush/preamble.sh" err=5; export err;${errchk} exit $err fi - if [ $FHMAX_HF_WAV -gt 0 ] && [ $FHOUT_HF_WAV -gt 0 ] && [ $fhr -lt $FHMAX_HF_WAV ]; then - FHINCG=$FHOUT_HF_WAV - else - FHINCG=$FHOUT_WAV - fi - fhrg=$((fhr+FHINCG)) fi + if [ $FHMAX_HF_WAV -gt 0 ] && [ $FHOUT_HF_WAV -gt 0 ] && [ $fhr -lt $FHMAX_HF_WAV ]; then + FHINCG=$FHOUT_HF_WAV + else + FHINCG=$FHOUT_WAV + fi + fhrg=$((fhr+FHINCG)) echo $fhrg fhr=$fhrg #loop with out_grd stride From 38369f38cd7ac00adce9aec20d1c891697f4f868 Mon Sep 17 00:00:00 2001 From: NeilBarton-NOAA Date: Thu, 20 Apr 2023 20:12:56 +0000 Subject: [PATCH 02/18] corrected commented statement --- parm/config/config.wavepostsbs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/parm/config/config.wavepostsbs b/parm/config/config.wavepostsbs index 7783895c57a..f9f8c81d44a 100644 --- a/parm/config/config.wavepostsbs +++ b/parm/config/config.wavepostsbs @@ -20,7 +20,7 @@ export DOGRB_WAV='YES' # Create grib2 files if [[ -z ${waveinterpGRD} ]]; then export DOGRI_WAV='YES' # Create interpolated grids else - export DOGRI_WAV='NO' # Create interpolated grids + export DOGRI_WAV='NO' # Do not create interpolated grids fi export DOSPC_WAV='YES' # Spectral post export DOBLL_WAV='YES' # Bulletin post From 586c9563c47217cf517a782dee7b4905971ccb27 Mon Sep 17 00:00:00 2001 From: Jessica Meixner Date: Fri, 5 May 2023 17:16:27 +0000 Subject: [PATCH 03/18] update to ww3_gint weight files for new fix directory --- ush/wave_grid_interp_sbs.sh | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/ush/wave_grid_interp_sbs.sh b/ush/wave_grid_interp_sbs.sh index bf34068874d..7fa8d9d7f36 100755 --- a/ush/wave_grid_interp_sbs.sh +++ b/ush/wave_grid_interp_sbs.sh @@ -112,25 +112,25 @@ source "$HOMEgfs/ush/preamble.sh" # Check if there is an interpolation weights file available wht_OK='no' - if [ ! -f ${DATA}/WHTGRIDINT.bin.${grdID} ]; then - if [ -f $FIXwave/WHTGRIDINT.bin.${grdID} ] + if [ ! -f ${DATA}/ww3_gint.WHTGRIDINT.bin.${grdID} ]; then + if [ -f $FIXwave/ww3_gint.WHTGRIDINT.bin.${grdID} ] then set +x echo ' ' - echo " Copying $FIXwave/WHTGRIDINT.bin.${grdID} " + echo " Copying $FIXwave/ww3_gint.WHTGRIDINT.bin.${grdID} " set_trace - cp $FIXwave/WHTGRIDINT.bin.${grdID} ${DATA} + cp $FIXwave/ww3_gint.WHTGRIDINT.bin.${grdID} ${DATA} wht_OK='yes' else set +x echo ' ' - echo " Not found: $FIXwave/WHTGRIDINT.bin.${grdID} " + echo " Not found: $FIXwave/ww3_gint.WHTGRIDINT.bin.${grdID} " fi fi # Check and link weights file - if [ -f ${DATA}/WHTGRIDINT.bin.${grdID} ] + if [ -f ${DATA}/ww3_gint.WHTGRIDINT.bin.${grdID} ] then - ln -s ${DATA}/WHTGRIDINT.bin.${grdID} ./WHTGRIDINT.bin + ln -s ${DATA}/ww3_gint.WHTGRIDINT.bin.${grdID} ./WHTGRIDINT.bin fi # 1.b Run interpolation code @@ -147,8 +147,8 @@ source "$HOMEgfs/ush/preamble.sh" # Write interpolation file to main TEMP dir area if not there yet if [ "wht_OK" = 'no' ] then - cp -f ./WHTGRIDINT.bin ${DATA}/WHTGRIDINT.bin.${grdID} - cp -f ./WHTGRIDINT.bin ${FIXwave}/WHTGRIDINT.bin.${grdID} + cp -f ./WHTGRIDINT.bin ${DATA}/ww3_gint.WHTGRIDINT.bin.${grdID} + cp -f ./WHTGRIDINT.bin ${FIXwave}/ww3_gint.WHTGRIDINT.bin.${grdID} fi From 2a01e7ad01b3985b46fa71854c97aae07e3617c6 Mon Sep 17 00:00:00 2001 From: Jessica Meixner Date: Wed, 10 May 2023 15:02:10 +0000 Subject: [PATCH 04/18] keep defaults for wave as the same --- parm/config/config.defaults.s2sw | 10 +++++----- parm/config/config.ufs | 2 +- scripts/exgfs_wave_post_gridded_sbs.sh | 14 +++++++------- 3 files changed, 13 insertions(+), 13 deletions(-) diff --git a/parm/config/config.defaults.s2sw b/parm/config/config.defaults.s2sw index ceca3d86ff8..7f751e02bc9 100644 --- a/parm/config/config.defaults.s2sw +++ b/parm/config/config.defaults.s2sw @@ -16,13 +16,13 @@ use_cice_alb=".true." # config.wave -waveGRD='gefsv13_025' -waveinterpGRD=' ' -waveuoutpGRD='gefsv13_025' -MESH_WAV='mesh.gefsv13_025.nc' +waveGRD='mx025' +waveinterpGRD='reg025' +waveuoutpGRD='mx025' +MESH_WAV='mesh.mx025.nc' waveesmfGRD=' ' -wavepostGRD='gefsv13_025' +wavepostGRD=' ' waveGRDN="1" waveGRDG="10" USE_WAV_RMP="NO" diff --git a/parm/config/config.ufs b/parm/config/config.ufs index 1a36632b48d..2649461e556 100644 --- a/parm/config/config.ufs +++ b/parm/config/config.ufs @@ -359,7 +359,7 @@ if [[ "${skip_ww3}" == "false" ]]; then "mx025") ntasks_ww3=80 ;; - "gefsv13_025") + "glo_025") ntasks_ww3=262 ;; *) diff --git a/scripts/exgfs_wave_post_gridded_sbs.sh b/scripts/exgfs_wave_post_gridded_sbs.sh index 7c507360cf1..76e2d6d1daa 100755 --- a/scripts/exgfs_wave_post_gridded_sbs.sh +++ b/scripts/exgfs_wave_post_gridded_sbs.sh @@ -395,7 +395,7 @@ source "$HOMEgfs/ush/preamble.sh" cd $DATA FHINCG=$(( DTFLD_WAV / 3600 )) - if [ $fhr = $fhrg ] && ([ "$DOGRB_WAV" = 'YES' ] || [ "$DOGRI_WAV" = 'YES' ]) + if [ $fhr = $fhrg ] then # Check if grib2 file created ENSTAG="" @@ -413,13 +413,13 @@ source "$HOMEgfs/ush/preamble.sh" err=5; export err;${errchk} exit $err fi + if [ $FHMAX_HF_WAV -gt 0 ] && [ $FHOUT_HF_WAV -gt 0 ] && [ $fhr -lt $FHMAX_HF_WAV ]; then + FHINCG=$FHOUT_HF_WAV + else + FHINCG=$FHOUT_WAV + fi + fhrg=$((fhr+FHINCG)) fi - if [ $FHMAX_HF_WAV -gt 0 ] && [ $FHOUT_HF_WAV -gt 0 ] && [ $fhr -lt $FHMAX_HF_WAV ]; then - FHINCG=$FHOUT_HF_WAV - else - FHINCG=$FHOUT_WAV - fi - fhrg=$((fhr+FHINCG)) echo $fhrg fhr=$fhrg #loop with out_grd stride From 999ddca5f61a8da38790de18bf846e47120f1032 Mon Sep 17 00:00:00 2001 From: Jessica Meixner Date: Wed, 10 May 2023 17:11:53 +0000 Subject: [PATCH 05/18] add gefs to sbs gridded --- scripts/exgfs_wave_post_gridded_sbs.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/scripts/exgfs_wave_post_gridded_sbs.sh b/scripts/exgfs_wave_post_gridded_sbs.sh index 76e2d6d1daa..598da5dcc70 100755 --- a/scripts/exgfs_wave_post_gridded_sbs.sh +++ b/scripts/exgfs_wave_post_gridded_sbs.sh @@ -286,6 +286,7 @@ source "$HOMEgfs/ush/preamble.sh" case $grdID in glo_15mxt) GRDNAME='global' ; GRDRES=0p25 ; GRIDNR=255 ; MODNR=11 ;; reg025) GRDNAME='global' ; GRDRES=0p25 ; GRIDNR=255 ; MODNR=11 ;; + glo_025) GRDNAME='global' ; GRDRES=0p25 ; GRIDNR=255 ; MODNR=11 ;; glo_30mxt) GRDNAME='global' ; GRDRES=0p50 ; GRIDNR=255 ; MODNR=11 ;; glo_30m) GRDNAME='global' ; GRDRES=0p50 ; GRIDNR=255 ; MODNR=11 ;; at_10m) GRDNAME='atlocn' ; GRDRES=0p16 ; GRIDNR=255 ; MODNR=11 ;; From 00dbc365010b017e06586dc83a3397686b0ed86a Mon Sep 17 00:00:00 2001 From: Jessica Meixner Date: Wed, 10 May 2023 17:16:05 +0000 Subject: [PATCH 06/18] update gridded post for gefs --- parm/wave/ww3_grib2.glo_025.inp.tmpl | 9 +++++++++ scripts/exgfs_wave_post_gridded_sbs.sh | 1 + 2 files changed, 10 insertions(+) create mode 100755 parm/wave/ww3_grib2.glo_025.inp.tmpl diff --git a/parm/wave/ww3_grib2.glo_025.inp.tmpl b/parm/wave/ww3_grib2.glo_025.inp.tmpl new file mode 100755 index 00000000000..ddfabdb13de --- /dev/null +++ b/parm/wave/ww3_grib2.glo_025.inp.tmpl @@ -0,0 +1,9 @@ +$ WAVEWATCH-III gridded output input file +$ ---------------------------------------- +TIME DT NT +N +FLAGS +$ +TIME 7 MODNR GRIDNR 0 0 +$ +$ end of input file diff --git a/scripts/exgfs_wave_post_gridded_sbs.sh b/scripts/exgfs_wave_post_gridded_sbs.sh index 598da5dcc70..54350180fea 100755 --- a/scripts/exgfs_wave_post_gridded_sbs.sh +++ b/scripts/exgfs_wave_post_gridded_sbs.sh @@ -318,6 +318,7 @@ source "$HOMEgfs/ush/preamble.sh" so_20m) GRDNAME='antarc' ; GRDRES=0p33 ; GRIDNR=255 ; MODNR=11 ;; glo_15mxt) GRDNAME='global' ; GRDRES=0p25 ; GRIDNR=255 ; MODNR=11 ;; reg025) GRDNAME='global' ; GRDRES=0p25 ; GRIDNR=255 ; MODNR=11 ;; + glo_025) GRDNAME='global' ; GRDRES=0p25 ; GRIDNR=255 ; MODNR=11 ;; gwes_30m) GRDNAME='global' ; GRDRES=0p50 ; GRIDNR=255 ; MODNR=10 ;; esac echo "$USHwave/wave_grib2_sbs.sh $grdID $GRIDNR $MODNR $ymdh $fhr $GRDNAME $GRDRES $gribFL > grib_$grdID.out 2>&1" >> ${fcmdnow} From f0504aa4a56fcf42522408a27a818813f373e4cc Mon Sep 17 00:00:00 2001 From: Jessica Meixner Date: Thu, 11 May 2023 19:33:23 +0000 Subject: [PATCH 07/18] update WW3 to have multiple grid setting options in config.wave --- parm/config/gfs/config.defaults.s2sw | 14 ------- parm/config/gfs/config.wave | 61 +++++++++++++++++++++------- 2 files changed, 47 insertions(+), 28 deletions(-) diff --git a/parm/config/gfs/config.defaults.s2sw b/parm/config/gfs/config.defaults.s2sw index 7f751e02bc9..20955e9f469 100644 --- a/parm/config/gfs/config.defaults.s2sw +++ b/parm/config/gfs/config.defaults.s2sw @@ -15,25 +15,11 @@ min_seaice="1.0e-6" use_cice_alb=".true." # config.wave - waveGRD='mx025' -waveinterpGRD='reg025' -waveuoutpGRD='mx025' -MESH_WAV='mesh.mx025.nc' - -waveesmfGRD=' ' -wavepostGRD=' ' -waveGRDN="1" -waveGRDG="10" -USE_WAV_RMP="NO" FHOUT_HF_WAV=3 DTPNT_WAV=10800 OUTPARS_WAV="WND CUR ICE HS T01 T02 DIR FP DP PHS PTP PDIR CHA" DOBNDPNT_WAVE='NO' -waveMULTIGRID='.false.' - -# config.waveprep -IOSRV=1 # config.arch export ARCH_GAUSSIAN="YES" diff --git a/parm/config/gfs/config.wave b/parm/config/gfs/config.wave index 658c4b40ae4..cf79478fd53 100644 --- a/parm/config/gfs/config.wave +++ b/parm/config/gfs/config.wave @@ -25,26 +25,59 @@ export CDUMPwave="${RUN}wave" export CDUMPRSTwave="gdas" # Grids for wave model -# GFSv16 -export waveGRD=${waveGRD:-'gnh_10m aoc_9km gsh_15m'} -export waveGRDN=${waveGRDN:-'1 2 3'} # gridnumber for ww3_multi -export waveGRDG=${waveGRDG:-'10 20 30'} # gridgroup for ww3_multi -export USE_WAV_RMP=${USE_WAV_RMP:-'YES'} #yes/no rmp grid remapping pre-processed coefficients -export waveMULTIGRID=${waveMULTIGRID:-'.true.'} -export MESH_WAV=${MESH_WAV:-'mesh.gwes_30m.nc'} - -# ESMF input grid -export waveesmfGRD=${waveesmfGRD:-'glox_10m'} # input grid +export waveGRD=${waveGRD:-'mx025'} + +#Grid dependent variables for various grids +case "${waveGRD}" in + "gnh_10m;aoc_9km;gsh_15m") + #GFSv16 settings: + waveGRDN='1 2 3' + waveGRDG='10 20 30' + USE_WAV_RMP='YES' + waveMULTIGRID='.true.' + IOSRV='3' + MESH_WAV=' ' + waveesmfGRD='glox_10m' + waveuoutpGRD='points' + waveinterpGRD='glo_15mxt at_10m ep_10m wc_10m glo_30m' + wavepostGRD='gnh_10m aoc_9km gsh_15m' + "gwes_30m") + #Grid used for P8 + waveinterpGRD=' ' + wavepostGRD='gwes_30m' + ;; + "mx025") + #Grid used for HR1 (tripolar 1/4 deg) + waveinterpGRD='reg025' + wavepostGRD=' ' + ;; + "glo_025") + #GEFSv13 regular lat/lon 1/4 deg grid + waveGRD='glo_025' + waveinterpGRD=' ' + wavepostGRD='glo_025' + ;; +esac + + +export waveGRD=${waveGRD:-'mx025'} +export waveGRDN=${waveGRDN:-'1'} # gridnumber for ww3_multi +export waveGRDG=${waveGRDG:-'10'} # gridgroup for ww3_multi +export USE_WAV_RMP=${USE_WAV_RMP:-'NO'} #yes/no rmp grid remapping pre-processed coefficients +export waveMULTIGRID=${waveMULTIGRID:-'.false.'} #true/false for multi or shel +export MESH_WAV=${MESH_WAV:-"mesh.${waveGRD}.nc"} #Mesh grid for wave model for CMEPS + +export waveesmfGRD=${waveesmfGRD:-' '} # input grid for multigrid # Grids for input wind fields export WAVEWND_DID= export WAVEWND_FID= # Grids for output fields (used in all steps) -export waveuoutpGRD=${waveuoutpGRD:-'points'} #unified point output grid +export waveuoutpGRD=${waveuoutpGRD:-${waveGRD}} #unified point output grid export waveinterpGRD=${waveinterpGRD:-'glo_15mxt at_10m ep_10m wc_10m glo_30m'} # Grids that need to be interpolated from native # in POST will generate grib unless gribOK not set -export wavepostGRD=${wavepostGRD:-'gnh_10m aoc_9km gsh_15m'} # Native grids that will be post-processed (grib2) +export wavepostGRD=${wavepostGRD:-${waveGRD}} # Native computational grids that will be post-processed (grib2) # The start time reflects the number of hindcast hours prior to the cycle initial time @@ -145,8 +178,8 @@ export POFILETYPE=1 # POFILETYPE=1 one point file per output step # Parameters for ww3_multi/shel.inp # Unified output T or F export FUNIPNT='T' -# Output server type (see ww3_multi.inp in WW3 repo) -export IOSRV=${IOSRV:-'3'} +# Output server type (see ww3_shel/multi.inp in WW3 repo) +export IOSRV=${IOSRV:-'1'} # Flag for dedicated output process for unified points export FPNTPROC='T' # Flag for grids sharing dedicated output processes From d3bd4bd24b2316ab0ae34e51f11cda595bc6fc8d Mon Sep 17 00:00:00 2001 From: Jessica Meixner Date: Thu, 11 May 2023 19:38:28 +0000 Subject: [PATCH 08/18] update fix.ver for wave --- versions/fix.ver | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/versions/fix.ver b/versions/fix.ver index 0046ed5eb8e..196c5f20d65 100644 --- a/versions/fix.ver +++ b/versions/fix.ver @@ -20,4 +20,4 @@ export reg2grb2_ver=20220805 export sfc_climo_ver=20220805 export ugwd_ver=20220805 export verif_ver=20220805 -export wave_ver=20220805 +export wave_ver=20230426 From 3046684bdff76bc028983c62b174a0f1cf025063 Mon Sep 17 00:00:00 2001 From: Jessica Meixner Date: Thu, 11 May 2023 20:30:22 +0000 Subject: [PATCH 09/18] add glo_025 to ufs --- parm/config/gfs/config.ufs | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/parm/config/gfs/config.ufs b/parm/config/gfs/config.ufs index a96ba126e29..53749697315 100644 --- a/parm/config/gfs/config.ufs +++ b/parm/config/gfs/config.ufs @@ -15,7 +15,7 @@ if [ $# -le 1 ]; then echo "--fv3 C48|C96|C192|C384|C768|C1152|C3072" echo "--mom6 500|100|025" echo "--cice6 500|100|025" - echo "--ww3 gnh_10m;aoc_9km;gsh_15m|gwes_30m|mx050|mx025" + echo "--ww3 gnh_10m;aoc_9km;gsh_15m|gwes_30m|glo_025|mx025" exit 1 @@ -157,7 +157,7 @@ case "${fv3_res}" in export WRITE_GROUP=2 export WRTTASK_PER_GROUP_PER_THREAD_PER_TILE=8 export WRITE_GROUP_GFS=2 - export WRTTASK_PER_GROUP_PER_THREAD_PER_TILE_GFS=4 + export WRTTASK_PER_GROUP_PER_THREAD_PER_TILE_GFS=10 ;; "C768") export DELTIM=150 @@ -353,8 +353,8 @@ if [[ "${skip_ww3}" == "false" ]]; then "gwes_30m") ntasks_ww3=100 ;; - "mx050") - ntasks_ww3=240 + "glo_025") + ntasks_ww3=262 ;; "mx025") ntasks_ww3=80 From 8533359509eced484b5659699d9d7b4fc4e87923 Mon Sep 17 00:00:00 2001 From: Jessica Meixner Date: Thu, 11 May 2023 20:33:58 +0000 Subject: [PATCH 10/18] fix case in wave --- parm/config/gfs/config.wave | 1 + 1 file changed, 1 insertion(+) diff --git a/parm/config/gfs/config.wave b/parm/config/gfs/config.wave index cf79478fd53..bd4c346d603 100644 --- a/parm/config/gfs/config.wave +++ b/parm/config/gfs/config.wave @@ -41,6 +41,7 @@ case "${waveGRD}" in waveuoutpGRD='points' waveinterpGRD='glo_15mxt at_10m ep_10m wc_10m glo_30m' wavepostGRD='gnh_10m aoc_9km gsh_15m' + ;; "gwes_30m") #Grid used for P8 waveinterpGRD=' ' From 6fc8d7fd113c5eb1f6d7d49947d76e4f78f72f3c Mon Sep 17 00:00:00 2001 From: Jessica Meixner Date: Fri, 12 May 2023 12:59:14 +0000 Subject: [PATCH 11/18] add documentation --- docs/source/wave.rst | 67 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 67 insertions(+) create mode 100644 docs/source/wave.rst diff --git a/docs/source/wave.rst b/docs/source/wave.rst new file mode 100644 index 00000000000..124fefd1e4d --- /dev/null +++ b/docs/source/wave.rst @@ -0,0 +1,67 @@ +============== +Wave Component +============== + +The wave model, WAVEWATCH III, is one component of the forecast model. This documentation is a work in progress. + +^^^^^^^^^^^^^^^^^^^^^^ +Adding a new wave Grid +^^^^^^^^^^^^^^^^^^^^^^ + +******************** +Naming the Wave Grid +******************** + +The naming convention of the wave grid within the workflow is expected to follow a convention of region underscore resolution. +Here are several regional naming conventions: + +| Acronym | Description | +| --------- | ----------------------| +| glo | global domain | +| ak | Alaska | +| ao or aoc | Arctic Ocean | +| at | Atlantic | +| ep | East Pacific | +| gnh | Global Northern Ocean | +| gsh | Global Southern Ocean | +| so | Southern Ocean | +| wc | West Coast | + + +Here are examples of resolution names: + +| Acronym | Description | +| ------- | ---------------------| +| 15m | 15 min | +| 15mxt | 15 min extended grid | +| 025 | 0.25 degrees | +| 9km | 9 km | + +This new grid name will now be referred to as ${WAVEGRID} for the following documentation. + +**************** +Adding Fix Files +**************** + +| Name of File | File Description | Notes/Requriements | +| ----------------------------------- | -------------------------------------- | -------------------------- | +| ww3_grid.inp_${WAVEGRID} | Grid Input File | Required for all new grids | +| mesh.${WAVEGRID}.nc | Mesh grid file used in forecast | This is required if this is a computational grid | +| ww3_gint.WHTGRIDINT.bin.${WAVEGRID} | Weight file for ww3_gint interpolation | If this grid is an output file that the computational grid is interpolated to, this file will help speed up post-processing | + +While the creation of these files are generally considered out of scope of this document here are some additional information: + +* The ww3_grid.inp_${WAVEGRID} for structured grids can be created with https://github.com/noaA-EMC/gridgen +* The ww3_grid.inp_${WAVEGRID} file must be a single file for the workflow +* Instructions for creating mesh.${WAVEGRID}.nc can be found at https://ufs-weather-model.readthedocs.io/en/latest/InputsOutputs.html#ww3 +* The ww3_gint.WHTGRIDINT.bin.${WAVEGRID} can be created by running the ww3_gint routine as desired and then saved. + + +******************************** +Updating Config and Script Files +******************************** + + + + + From bbd6d29db5683ce9bca1f4dc22d8dec0fc1a39b3 Mon Sep 17 00:00:00 2001 From: Jessica Meixner Date: Fri, 12 May 2023 13:09:26 +0000 Subject: [PATCH 12/18] fix table in documentation --- docs/source/wave.rst | 58 ++++++++++++++++++++++++++++++-------------- 1 file changed, 40 insertions(+), 18 deletions(-) diff --git a/docs/source/wave.rst b/docs/source/wave.rst index 124fefd1e4d..cd7342ca1fa 100644 --- a/docs/source/wave.rst +++ b/docs/source/wave.rst @@ -15,27 +15,42 @@ Naming the Wave Grid The naming convention of the wave grid within the workflow is expected to follow a convention of region underscore resolution. Here are several regional naming conventions: -| Acronym | Description | -| --------- | ----------------------| -| glo | global domain | -| ak | Alaska | -| ao or aoc | Arctic Ocean | -| at | Atlantic | -| ep | East Pacific | -| gnh | Global Northern Ocean | -| gsh | Global Southern Ocean | -| so | Southern Ocean | ++-----------+-----------------------+ +| Acronym | Description | ++===========+=======================+ +| glo | Global domain | ++-----------+-----------------------+ +| ak | Alaska | ++-----------+-----------------------+ +| ao or aoc | Arctic Ocean | ++-----------+-----------------------+ +| at | Atlantic | ++-----------+-----------------------+ +| ep | East Pacific | ++-----------+-----------------------+ +| gnh | Global Northern Ocean | ++-----------+-----------------------+ +| gsh | Global Southern Ocean | ++-----------+-----------------------+ +| so | Southern Ocean | ++-----------+-----------------------+ | wc | West Coast | ++-----------+-----------------------+ Here are examples of resolution names: ++---------+----------------------+ | Acronym | Description | -| ------- | ---------------------| ++=========+======================+ | 15m | 15 min | -| 15mxt | 15 min extended grid | -| 025 | 0.25 degrees | -| 9km | 9 km | ++---------+----------------------+ +| 15mxt | 15 min extended grid | ++---------+----------------------+ +| 025 | 0.25 degrees | ++---------+----------------------+ +| 9km | 9 km | ++---------+----------------------+ This new grid name will now be referred to as ${WAVEGRID} for the following documentation. @@ -43,11 +58,18 @@ This new grid name will now be referred to as ${WAVEGRID} for the following docu Adding Fix Files **************** -| Name of File | File Description | Notes/Requriements | -| ----------------------------------- | -------------------------------------- | -------------------------- | -| ww3_grid.inp_${WAVEGRID} | Grid Input File | Required for all new grids | +The following is a table of fix files to be added with a new grid. + ++-------------------------------------+----------------------------------------+--------------------------------------------------+ +| Name of File | File Description | Notes/Requriements | ++=====================================+========================================+==================================================+ +| ww3_grid.inp_${WAVEGRID} | Grid Input File | Required for all new grids | ++-------------------------------------+----------------------------------------+--------------------------------------------------+ | mesh.${WAVEGRID}.nc | Mesh grid file used in forecast | This is required if this is a computational grid | -| ww3_gint.WHTGRIDINT.bin.${WAVEGRID} | Weight file for ww3_gint interpolation | If this grid is an output file that the computational grid is interpolated to, this file will help speed up post-processing | ++-------------------------------------+----------------------------------------+--------------------------------------------------+ +| ww3_gint.WHTGRIDINT.bin.${WAVEGRID} | Weight file for ww3_gint interpolation | Required if output is interpolated to this grid | ++-------------------------------------+----------------------------------------+--------------------------------------------------+ + While the creation of these files are generally considered out of scope of this document here are some additional information: From eb762342527d9b81f8c6ecc6b93bdeb6dfe8e2dd Mon Sep 17 00:00:00 2001 From: Jessica Meixner Date: Fri, 12 May 2023 13:27:30 +0000 Subject: [PATCH 13/18] update documentation --- docs/source/wave.rst | 40 ++++++++++++++++++++++++++++++++++++- parm/config/gefs/config.ufs | 2 +- 2 files changed, 40 insertions(+), 2 deletions(-) diff --git a/docs/source/wave.rst b/docs/source/wave.rst index cd7342ca1fa..53e7ea0a2a3 100644 --- a/docs/source/wave.rst +++ b/docs/source/wave.rst @@ -2,7 +2,8 @@ Wave Component ============== -The wave model, WAVEWATCH III, is one component of the forecast model. This documentation is a work in progress. +The wave model, WAVEWATCH III, is one component of the forecast model. This documentation is a work in progress +and currently contains information about how to add a new grid to the workflow. ^^^^^^^^^^^^^^^^^^^^^^ Adding a new wave Grid @@ -83,7 +84,44 @@ While the creation of these files are generally considered out of scope of this Updating Config and Script Files ******************************** +You will need to update the following files: + +* parm/config/*/config.ufs +* parm/config/*/config.wave +* scripts/exgfs_wave_post_gridded_sbs.sh +You will need to add the following files: +* parm/wave/ww3_grib2.${WAVEGRID}.inp.tmpl +* parm/wave/${WAVEGRID}_interp.inp.tmpl +For config.ufs: +If this is a computational you will need to update this file. If this is a new output file you can skip this update. +There are two sections to update: +1. Add the new grid as a possible ww3 resolution at the top of the file +2. In the WW3 specific settings section, add a case for the new grid and define ntasks_ww3 (number of tasks for WW3) and +if the grid requires a different value of nthreads_ww3 (number of threads) add that to the grid specific case as well. + +For config.wave: + +If this is a computational grid, add a section for the newly added grid in the possible cases for waveGRD, adding the appropriate +non-default values for this specific grid. If this is a new output grid, then update all of the waveGRD cases for waveinterpGRD as +needed. + + +For scripts/exgfs_wave_post_gridded_sbs.sh and the inp.tmpl files: + +There are two case settings for either interpolated grid output or grib output for a computational grid that should be updated to +add to the possible cases for this new grid as appropriate. If it's a new interpolated grid, you will also need to add a +parm/wave/${WAVEGRID}_interp.inp.tmpl file. See WW3/model/inp/ww3_gint.inp for information about this file. If it's a new +computational grid or just an output grid you will need a new parm/wave/ww3_grib2.${WAVEGRID}.inp.tmpl file. See the file +WW3/model/inp/ww3_grib.inp for more infomration about this input file. The other existing templated input files can be used +as guides to create these new files. + + +***************************** +Updates for New Product Grids +***************************** + +If this is a new file for AWIPS Products, additional updates are likely required. diff --git a/parm/config/gefs/config.ufs b/parm/config/gefs/config.ufs index 2649461e556..562fc9228df 100644 --- a/parm/config/gefs/config.ufs +++ b/parm/config/gefs/config.ufs @@ -15,7 +15,7 @@ if [ $# -le 1 ]; then echo "--fv3 C48|C96|C192|C384|C768|C1152|C3072" echo "--mom6 500|100|025" echo "--cice6 500|100|025" - echo "--ww3 gnh_10m;aoc_9km;gsh_15m|gwes_30m|mx050|mx025" + echo "--ww3 gnh_10m;aoc_9km;gsh_15m|gwes_30m|glo_025|mx025" exit 1 From 5fcbcd9b216e8e495c13bf1632f78fd5ea1deb9b Mon Sep 17 00:00:00 2001 From: Jessica Meixner Date: Fri, 12 May 2023 13:40:37 +0000 Subject: [PATCH 14/18] add note about providing ICs --- docs/source/wave.rst | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/docs/source/wave.rst b/docs/source/wave.rst index 53e7ea0a2a3..0046a083f50 100644 --- a/docs/source/wave.rst +++ b/docs/source/wave.rst @@ -107,7 +107,9 @@ For config.wave: If this is a computational grid, add a section for the newly added grid in the possible cases for waveGRD, adding the appropriate non-default values for this specific grid. If this is a new output grid, then update all of the waveGRD cases for waveinterpGRD as -needed. +needed. Please note that if you change the default wave grid, that initial conditions must be staged for this IC for all ICs used +in global-workflow testing. Ideally ICs for the grids being used for testing will be provided even if its not the default grid. + For scripts/exgfs_wave_post_gridded_sbs.sh and the inp.tmpl files: @@ -120,6 +122,8 @@ WW3/model/inp/ww3_grib.inp for more infomration about this input file. The othe as guides to create these new files. + + ***************************** Updates for New Product Grids ***************************** From 2a4c5a32f4757152316547498aa840a7b6cb1b2a Mon Sep 17 00:00:00 2001 From: Jessica Meixner Date: Mon, 15 May 2023 14:56:31 -0400 Subject: [PATCH 15/18] update gfs/gefs default wave grid for current v17 and v13 updates baased on reviewer feedback --- parm/config/gefs/config.base.emc.dyn | 2 +- parm/config/gfs/config.base.emc.dyn | 2 +- parm/config/gfs/config.defaults.s2sw | 1 - parm/config/gfs/config.wave | 6 +++--- 4 files changed, 5 insertions(+), 6 deletions(-) diff --git a/parm/config/gefs/config.base.emc.dyn b/parm/config/gefs/config.base.emc.dyn index e03abff84fe..8a336a26505 100644 --- a/parm/config/gefs/config.base.emc.dyn +++ b/parm/config/gefs/config.base.emc.dyn @@ -170,7 +170,7 @@ case "${CASE}" in *) export OCNRES=025;; esac export ICERES=${OCNRES} -export waveGRD='gnh_10m aoc_9km gsh_15m' +export waveGRD='glo_025' case "${APP}" in ATM) diff --git a/parm/config/gfs/config.base.emc.dyn b/parm/config/gfs/config.base.emc.dyn index 7559d60efee..b3ab1eb9281 100644 --- a/parm/config/gfs/config.base.emc.dyn +++ b/parm/config/gfs/config.base.emc.dyn @@ -170,7 +170,7 @@ case "${CASE}" in *) export OCNRES=025;; esac export ICERES=${OCNRES} -export waveGRD='gnh_10m aoc_9km gsh_15m' +export waveGRD='mx025' case "${APP}" in ATM) diff --git a/parm/config/gfs/config.defaults.s2sw b/parm/config/gfs/config.defaults.s2sw index 20955e9f469..1b0becefec5 100644 --- a/parm/config/gfs/config.defaults.s2sw +++ b/parm/config/gfs/config.defaults.s2sw @@ -15,7 +15,6 @@ min_seaice="1.0e-6" use_cice_alb=".true." # config.wave -waveGRD='mx025' FHOUT_HF_WAV=3 DTPNT_WAV=10800 OUTPARS_WAV="WND CUR ICE HS T01 T02 DIR FP DP PHS PTP PDIR CHA" diff --git a/parm/config/gfs/config.wave b/parm/config/gfs/config.wave index bd4c346d603..aabf45758dc 100644 --- a/parm/config/gfs/config.wave +++ b/parm/config/gfs/config.wave @@ -54,14 +54,14 @@ case "${waveGRD}" in ;; "glo_025") #GEFSv13 regular lat/lon 1/4 deg grid - waveGRD='glo_025' waveinterpGRD=' ' wavepostGRD='glo_025' ;; + *) + echo "No grid specific wave config values" + ;; esac - -export waveGRD=${waveGRD:-'mx025'} export waveGRDN=${waveGRDN:-'1'} # gridnumber for ww3_multi export waveGRDG=${waveGRDG:-'10'} # gridgroup for ww3_multi export USE_WAV_RMP=${USE_WAV_RMP:-'NO'} #yes/no rmp grid remapping pre-processed coefficients From 7a7db8918225f1a5b48c7b586c10b89d5299772a Mon Sep 17 00:00:00 2001 From: Jessica Meixner Date: Tue, 16 May 2023 14:43:51 -0400 Subject: [PATCH 16/18] Update docs/source/wave.rst Co-authored-by: Walter Kolczynski - NOAA --- docs/source/wave.rst | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/source/wave.rst b/docs/source/wave.rst index 0046a083f50..4ff29ab245a 100644 --- a/docs/source/wave.rst +++ b/docs/source/wave.rst @@ -79,6 +79,7 @@ While the creation of these files are generally considered out of scope of this * Instructions for creating mesh.${WAVEGRID}.nc can be found at https://ufs-weather-model.readthedocs.io/en/latest/InputsOutputs.html#ww3 * The ww3_gint.WHTGRIDINT.bin.${WAVEGRID} can be created by running the ww3_gint routine as desired and then saved. +Once the new fix files have been created, :ref:`open an issue to have the master fix file directory updated`. This is a separate step than the process to update the workflow below. ******************************** Updating Config and Script Files From 8217aec3226fc6a753e38eacd3db07549cfe20f3 Mon Sep 17 00:00:00 2001 From: Jessica Meixner Date: Tue, 16 May 2023 18:57:15 +0000 Subject: [PATCH 17/18] update based on reviewer comments --- parm/config/gfs/config.wave | 51 ++++++++++++++++++++----------------- 1 file changed, 27 insertions(+), 24 deletions(-) diff --git a/parm/config/gfs/config.wave b/parm/config/gfs/config.wave index aabf45758dc..2a3fc9ccf41 100644 --- a/parm/config/gfs/config.wave +++ b/parm/config/gfs/config.wave @@ -27,49 +27,52 @@ export CDUMPRSTwave="gdas" # Grids for wave model export waveGRD=${waveGRD:-'mx025'} + +#grid dependent variable defaults +export waveGRDN=${waveGRDN:-'1'} # gridnumber for ww3_multi +export waveGRDG=${waveGRDG:-'10'} # gridgroup for ww3_multi +export USE_WAV_RMP=${USE_WAV_RMP:-'NO'} #yes/no rmp grid remapping pre-processed coefficients +export waveMULTIGRID=${waveMULTIGRID:-'.false.'} #true/false for multi or shel +export MESH_WAV=${MESH_WAV:-"mesh.${waveGRD}.nc"} #Mesh grid for wave model for CMEPS + +export waveesmfGRD=${waveesmfGRD:-' '} # input grid for multigrid + + #Grid dependent variables for various grids case "${waveGRD}" in "gnh_10m;aoc_9km;gsh_15m") #GFSv16 settings: - waveGRDN='1 2 3' - waveGRDG='10 20 30' - USE_WAV_RMP='YES' - waveMULTIGRID='.true.' - IOSRV='3' - MESH_WAV=' ' - waveesmfGRD='glox_10m' - waveuoutpGRD='points' - waveinterpGRD='glo_15mxt at_10m ep_10m wc_10m glo_30m' - wavepostGRD='gnh_10m aoc_9km gsh_15m' + export waveGRDN='1 2 3' + export waveGRDG='10 20 30' + export USE_WAV_RMP='YES' + export waveMULTIGRID='.true.' + export IOSRV='3' + export MESH_WAV=' ' + export waveesmfGRD='glox_10m' + export waveuoutpGRD='points' + export waveinterpGRD='glo_15mxt at_10m ep_10m wc_10m glo_30m' + export wavepostGRD='gnh_10m aoc_9km gsh_15m' ;; "gwes_30m") #Grid used for P8 - waveinterpGRD=' ' - wavepostGRD='gwes_30m' + export waveinterpGRD=' ' + export wavepostGRD='gwes_30m' ;; "mx025") #Grid used for HR1 (tripolar 1/4 deg) - waveinterpGRD='reg025' - wavepostGRD=' ' + export waveinterpGRD='reg025' + export wavepostGRD=' ' ;; "glo_025") #GEFSv13 regular lat/lon 1/4 deg grid - waveinterpGRD=' ' - wavepostGRD='glo_025' + export waveinterpGRD=' ' + export wavepostGRD='glo_025' ;; *) echo "No grid specific wave config values" ;; esac -export waveGRDN=${waveGRDN:-'1'} # gridnumber for ww3_multi -export waveGRDG=${waveGRDG:-'10'} # gridgroup for ww3_multi -export USE_WAV_RMP=${USE_WAV_RMP:-'NO'} #yes/no rmp grid remapping pre-processed coefficients -export waveMULTIGRID=${waveMULTIGRID:-'.false.'} #true/false for multi or shel -export MESH_WAV=${MESH_WAV:-"mesh.${waveGRD}.nc"} #Mesh grid for wave model for CMEPS - -export waveesmfGRD=${waveesmfGRD:-' '} # input grid for multigrid - # Grids for input wind fields export WAVEWND_DID= export WAVEWND_FID= From f2e2f957bdbb4e7b8cba1c65bee6dd918efc53fc Mon Sep 17 00:00:00 2001 From: Jessica Meixner Date: Wed, 17 May 2023 14:14:03 +0000 Subject: [PATCH 18/18] updates for reviewer comments --- parm/config/gfs/config.wave | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/parm/config/gfs/config.wave b/parm/config/gfs/config.wave index 2a3fc9ccf41..ba7b7ad2594 100644 --- a/parm/config/gfs/config.wave +++ b/parm/config/gfs/config.wave @@ -27,16 +27,13 @@ export CDUMPRSTwave="gdas" # Grids for wave model export waveGRD=${waveGRD:-'mx025'} - #grid dependent variable defaults -export waveGRDN=${waveGRDN:-'1'} # gridnumber for ww3_multi -export waveGRDG=${waveGRDG:-'10'} # gridgroup for ww3_multi -export USE_WAV_RMP=${USE_WAV_RMP:-'NO'} #yes/no rmp grid remapping pre-processed coefficients -export waveMULTIGRID=${waveMULTIGRID:-'.false.'} #true/false for multi or shel -export MESH_WAV=${MESH_WAV:-"mesh.${waveGRD}.nc"} #Mesh grid for wave model for CMEPS - -export waveesmfGRD=${waveesmfGRD:-' '} # input grid for multigrid - +export waveGRDN='1' # grid number for ww3_multi +export waveGRDG='10' # grid group for ww3_multi +export USE_WAV_RMP='NO' # YES/NO rmp grid remapping pre-processed coefficients +export waveMULTIGRID='.false.' # .true./.false. for multi or shel +export MESH_WAV="mesh.${waveGRD}.nc" # Mesh grid for wave model for CMEPS +export waveesmfGRD=' ' # input grid for multigrid #Grid dependent variables for various grids case "${waveGRD}" in