From e2c0f0671a59628f4614637c01900cb265d837d5 Mon Sep 17 00:00:00 2001 From: DavidNew-NOAA <134300700+DavidNew-NOAA@users.noreply.github.com> Date: Wed, 7 Aug 2024 22:55:49 -0400 Subject: [PATCH] Stage atmospheric backgrounds and UFS cubed-sphere history files (#2792) This PR changes the G-W so that backgrounds for the atmospheric analyses are staged as UFS cubed-sphere history files rather than FMS restarts. The motivation being that FMS restarts include many data we don't need for the analyses and thus take up too much disk space/bandwidth. This is a companion PR to: GDASApp#1236 JCB-GDAS#19 --------- Co-authored-by: danholdaway Co-authored-by: Dan Holdaway <27729500+danholdaway@users.noreply.github.com> Co-authored-by: Walter Kolczynski - NOAA Co-authored-by: RussTreadon-NOAA Co-authored-by: RussTreadon-NOAA <26926959+RussTreadon-NOAA@users.noreply.github.com> Co-authored-by: Rahul Mahajan Co-authored-by: David Huber <69919478+DavidHuber-NOAA@users.noreply.github.com> --- parm/gdas/staging/atm_lgetkf_bkg.yaml.j2 | 27 ++++++++---------------- parm/gdas/staging/atm_var_bkg.yaml.j2 | 13 ++---------- parm/gdas/staging/atm_var_fv3ens.yaml.j2 | 27 ++++++++---------------- sorc/gdas.cd | 2 +- ush/forecast_postdet.sh | 2 ++ ush/parsing_model_configure_FV3.sh | 4 ++-- 6 files changed, 25 insertions(+), 50 deletions(-) diff --git a/parm/gdas/staging/atm_lgetkf_bkg.yaml.j2 b/parm/gdas/staging/atm_lgetkf_bkg.yaml.j2 index eda3dad5a7..9258d9d875 100644 --- a/parm/gdas/staging/atm_lgetkf_bkg.yaml.j2 +++ b/parm/gdas/staging/atm_lgetkf_bkg.yaml.j2 @@ -1,6 +1,3 @@ -{% set ftype_list = ['fv_core.res', 'fv_srf_wnd.res', 'fv_tracer.res', 'phy_data', 'sfc_data'] %} -{% set time_list = [current_cycle] %} - mkdir: {% for imem in range(1,NMEM_ENS+1) %} {% set memchar = 'mem%03d' | format(imem) %} @@ -14,19 +11,13 @@ mkdir: - '{{ COM_ATMOS_ANALYSIS_TMPL | replace_tmpl(tmpl_dict) }}' {% endfor %} copy: -{% for time in time_list %} - {% for imem in range(1,NMEM_ENS+1) %} - {% set memchar = 'mem%03d' | format(imem) %} - {% set tmpl_dict = ({ '${ROTDIR}': ROTDIR, - '${RUN}': 'enkfgdas', - '${YMD}': previous_cycle | to_YMD, - '${HH}': previous_cycle | strftime('%H'), - '${MEMDIR}': memchar }) %} -- ['{{ COM_ATMOS_RESTART_TMPL | replace_tmpl(tmpl_dict) }}/{{ time | to_fv3time }}.coupler.res', '{{ DATA }}/bkg/{{ memchar }}/'] - {% for ftype in ftype_list %} - {% for itile in range(1,7) %} -- ['{{ COM_ATMOS_RESTART_TMPL | replace_tmpl(tmpl_dict) }}/{{ time | to_fv3time }}.{{ ftype }}.tile{{ itile }}.nc', '{{ DATA }}/bkg/{{ memchar }}/'] - {% endfor %} - {% endfor %} - {% endfor %} +{% for imem in range(1,NMEM_ENS+1) %} + {% set memchar = 'mem%03d' | format(imem) %} + {% set tmpl_dict = ({ '${ROTDIR}': ROTDIR, + '${RUN}': 'enkfgdas', + '${YMD}': previous_cycle | to_YMD, + '${HH}': previous_cycle | strftime('%H'), + '${MEMDIR}': memchar }) %} +- ['{{ COM_ATMOS_HISTORY_TMPL | replace_tmpl(tmpl_dict) }}/enkf{{ GPREFIX }}cubed_sphere_grid_atmf006.nc', '{{ DATA }}/bkg/{{ memchar }}/'] +- ['{{ COM_ATMOS_HISTORY_TMPL | replace_tmpl(tmpl_dict) }}/enkf{{ GPREFIX }}cubed_sphere_grid_sfcf006.nc', '{{ DATA }}/bkg/{{ memchar }}/'] {% endfor %} diff --git a/parm/gdas/staging/atm_var_bkg.yaml.j2 b/parm/gdas/staging/atm_var_bkg.yaml.j2 index 37af833649..92704e1f51 100644 --- a/parm/gdas/staging/atm_var_bkg.yaml.j2 +++ b/parm/gdas/staging/atm_var_bkg.yaml.j2 @@ -1,14 +1,5 @@ -{% set ftype_list = ['fv_core.res', 'fv_srf_wnd.res', 'fv_tracer.res', 'phy_data', 'sfc_data'] %} -{% set time_list = [current_cycle] %} - mkdir: - '{{ DATA }}/bkg' copy: -{% for time in time_list %} -- ['{{ COM_ATMOS_RESTART_PREV }}/{{ time | to_fv3time }}.coupler.res', '{{ DATA }}/bkg/'] - {% for ftype in ftype_list %} - {% for itile in range(1,ntiles+1) %} -- ['{{ COM_ATMOS_RESTART_PREV }}/{{ time | to_fv3time }}.{{ ftype }}.tile{{ itile }}.nc', '{{ DATA }}/bkg/'] - {% endfor %} - {% endfor %} -{% endfor %} +- ['{{ COM_ATMOS_HISTORY_PREV }}/{{ GPREFIX }}cubed_sphere_grid_atmf006.nc', '{{ DATA }}/bkg/'] +- ['{{ COM_ATMOS_HISTORY_PREV }}/{{ GPREFIX }}cubed_sphere_grid_sfcf006.nc', '{{ DATA }}/bkg/'] diff --git a/parm/gdas/staging/atm_var_fv3ens.yaml.j2 b/parm/gdas/staging/atm_var_fv3ens.yaml.j2 index e499c86d57..776a74304d 100644 --- a/parm/gdas/staging/atm_var_fv3ens.yaml.j2 +++ b/parm/gdas/staging/atm_var_fv3ens.yaml.j2 @@ -1,24 +1,15 @@ -{% set ftype_list = ['fv_core.res', 'fv_srf_wnd.res', 'fv_tracer.res', 'phy_data', 'sfc_data'] %} -{% set time_list = [current_cycle] %} - mkdir: {% for imem in range(1,NMEM_ENS+1) %} - '{{ DATA }}/ens/{{ 'mem%03d' | format(imem) }}' {% endfor %} copy: -{% for time in time_list %} - {% for imem in range(1,NMEM_ENS+1) %} - {% set memchar = 'mem%03d' | format(imem) %} - {% set tmpl_dict = ({ '${ROTDIR}': ROTDIR, - '${RUN}': 'enkfgdas', - '${YMD}': previous_cycle | to_YMD, - '${HH}': previous_cycle | strftime('%H'), - '${MEMDIR}': memchar }) %} -- ['{{ COM_ATMOS_RESTART_TMPL | replace_tmpl(tmpl_dict) }}/{{ time | to_fv3time }}.coupler.res', '{{ DATA }}/ens/{{ memchar }}/'] - {% for ftype in ftype_list %} - {% for itile in range(1,ntiles+1) %} -- ['{{ COM_ATMOS_RESTART_TMPL | replace_tmpl(tmpl_dict) }}/{{ time | to_fv3time }}.{{ ftype }}.tile{{ itile }}.nc', '{{ DATA }}/ens/{{ memchar }}/'] - {% endfor %} - {% endfor %} - {% endfor %} +{% for imem in range(1,NMEM_ENS+1) %} + {% set memchar = 'mem%03d' | format(imem) %} + {% set tmpl_dict = ({ '${ROTDIR}': ROTDIR, + '${RUN}': 'enkfgdas', + '${YMD}': previous_cycle | to_YMD, + '${HH}': previous_cycle | strftime('%H'), + '${MEMDIR}': memchar }) %} +- ['{{ COM_ATMOS_HISTORY_TMPL | replace_tmpl(tmpl_dict) }}/enkf{{ GPREFIX }}cubed_sphere_grid_atmf006.nc', '{{ DATA }}/ens/{{ memchar }}/'] +- ['{{ COM_ATMOS_HISTORY_TMPL | replace_tmpl(tmpl_dict) }}/enkf{{ GPREFIX }}cubed_sphere_grid_sfcf006.nc', '{{ DATA }}/ens/{{ memchar }}/'] {% endfor %} diff --git a/sorc/gdas.cd b/sorc/gdas.cd index f62b9128a9..f3fa26d4d6 160000 --- a/sorc/gdas.cd +++ b/sorc/gdas.cd @@ -1 +1 @@ -Subproject commit f62b9128a98cce3d800dd90ad85753b6e178665f +Subproject commit f3fa26d4d6693fcf451184d5ecabb86c1b4190ca diff --git a/ush/forecast_postdet.sh b/ush/forecast_postdet.sh index 7de31d6235..e659d2ce80 100755 --- a/ush/forecast_postdet.sh +++ b/ush/forecast_postdet.sh @@ -209,6 +209,8 @@ EOF ${NLN} "${COMOUT_ATMOS_HISTORY}/${RUN}.t${cyc}z.atmf${FH3}.nc" "atmf${FH3}.nc" ${NLN} "${COMOUT_ATMOS_HISTORY}/${RUN}.t${cyc}z.sfcf${FH3}.nc" "sfcf${FH3}.nc" ${NLN} "${COMOUT_ATMOS_HISTORY}/${RUN}.t${cyc}z.atm.logf${FH3}.txt" "log.atm.f${FH3}" + ${NLN} "${COMOUT_ATMOS_HISTORY}/${RUN}.t${cyc}z.cubed_sphere_grid_atmf${FH3}.nc" "cubed_sphere_grid_atmf${FH3}.nc" + ${NLN} "${COMOUT_ATMOS_HISTORY}/${RUN}.t${cyc}z.cubed_sphere_grid_sfcf${FH3}.nc" "cubed_sphere_grid_sfcf${FH3}.nc" if [[ "${WRITE_DOPOST}" == ".true." ]]; then ${NLN} "${COMOUT_ATMOS_MASTER}/${RUN}.t${cyc}z.master.grb2f${FH3}" "GFSPRS.GrbF${FH2}" ${NLN} "${COMOUT_ATMOS_MASTER}/${RUN}.t${cyc}z.sfluxgrbf${FH3}.grib2" "GFSFLX.GrbF${FH2}" diff --git a/ush/parsing_model_configure_FV3.sh b/ush/parsing_model_configure_FV3.sh index 7d64ab38f9..d2dd434fff 100755 --- a/ush/parsing_model_configure_FV3.sh +++ b/ush/parsing_model_configure_FV3.sh @@ -31,7 +31,7 @@ local WRITE_GROUP=${WRITE_GROUP:-1} local WRTTASK_PER_GROUP=${WRTTASK_PER_GROUP:-24} local ITASKS=1 local OUTPUT_HISTORY=${OUTPUT_HISTORY:-".true."} -local HISTORY_FILE_ON_NATIVE_GRID=".false." +local HISTORY_FILE_ON_NATIVE_GRID=".true." local WRITE_DOPOST=${WRITE_DOPOST:-".false."} local WRITE_NSFLIP=${WRITE_NSFLIP:-".false."} local NUM_FILES=${NUM_FILES:-2} @@ -39,7 +39,7 @@ local FILENAME_BASE="'atm' 'sfc'" # OUTPUT_GRID local OUTPUT_FILE="'${OUTPUT_FILETYPE_ATM}' '${OUTPUT_FILETYPE_SFC}'" local ZSTANDARD_LEVEL=0 -local IDEFLATE=1 # netCDF zlib lossless compression (0-9); 0: no compression +local IDEFLATE=0 # netCDF zlib lossless compression (0-9); 0: no compression local QUANTIZE_NSD=${QUANTIZE_NSD:-0} # netCDF compression local ICHUNK2D=$((4*restile)) local JCHUNK2D=$((2*restile))