From 40f4536a5f706e76c551b0812bb65390ca2e8253 Mon Sep 17 00:00:00 2001 From: Eric Sinsky - NOAA <48259628+EricSinsky-NOAA@users.noreply.github.com> Date: Fri, 29 Nov 2024 08:49:15 -0500 Subject: [PATCH] Adjust configuration for reforecast (#3123) This PR does the following for the GEFS reforecast: - [x] Archive ensemble spread in addition to ensemble mean - [x] Set `NST_SPINUP` to `0` for all 30 years - [x] Remove `arcdir` from `arch` task since it is only used in the `extractvars` task - [x] Change the repair job dependency to a forecast task dependency for each member instead of a file dependency - [x] Remove the experiment name (`PSLOT`) from the `ARCDIR` directory structure for the reforecast - [x] Adjust ensemble header information in forecast_predet so that any ensemble size can be used - [x] Remove wave post pnt dependency from archive task --- parm/archive/gefs_extracted_atmos.yaml.j2 | 27 +++++++++++++++-------- parm/config/gefs/config.base | 2 +- parm/config/gefs/config.nsst | 4 ---- parm/config/gefs/config.resources | 10 ++++----- scripts/exglobal_archive.py | 3 --- ush/forecast_predet.sh | 2 +- workflow/rocoto/gefs_tasks.py | 6 +---- 7 files changed, 26 insertions(+), 28 deletions(-) diff --git a/parm/archive/gefs_extracted_atmos.yaml.j2 b/parm/archive/gefs_extracted_atmos.yaml.j2 index 7ceba551bf..fa707203ae 100644 --- a/parm/archive/gefs_extracted_atmos.yaml.j2 +++ b/parm/archive/gefs_extracted_atmos.yaml.j2 @@ -35,9 +35,12 @@ gefs_atmos: {% if FHMAX_HF_GFS == 0 %} {% for fhr in range(ofst_hr, FHMAX_GFS + FHOUT_GFS, FHOUT_GFS) %} {% if mem=="ensstat" %} - {% set file_name = head ~ "mean.pres_." ~ res ~ ".f" ~ '%03d'|format(fhr) ~ ".grib2" %} - {% set file_path = COMIN_ATMOS_GRIB ~ "/" ~ file_name %} - - "{{ file_path | relpath(ROTDIR)}}" + {% set file_name_mean = head ~ "mean.pres_." ~ res ~ ".f" ~ '%03d'|format(fhr) ~ ".grib2" %} + {% set file_path_mean = COMIN_ATMOS_GRIB ~ "/" ~ file_name_mean %} + - "{{ file_path_mean | relpath(ROTDIR)}}" + {% set file_name_spread = head ~ "spread.pres_." ~ res ~ ".f" ~ '%03d'|format(fhr) ~ ".grib2" %} + {% set file_path_spread = COMIN_ATMOS_GRIB ~ "/" ~ file_name_spread %} + - "{{ file_path_spread | relpath(ROTDIR)}}" {% else %} {% set file_name = head ~ "pgrb2." ~ res ~ ".f" ~ '%03d'|format(fhr) %} {% set file_path = COMIN_ATMOS_GRIB ~ "/" ~ file_name %} @@ -51,9 +54,12 @@ gefs_atmos: {% if res == "0p25" %} {% for fhr in range(ofst_hr, FHMAX_HF_GFS + FHOUT_HF_GFS, FHOUT_HF_GFS) %} {% if mem=="ensstat" %} - {% set file_name = head ~ "mean.pres_." ~ res ~ ".f" ~ '%03d'|format(fhr) ~ ".grib2" %} - {% set file_path = COMIN_ATMOS_GRIB ~ "/" ~ file_name %} - - "{{ file_path | relpath(ROTDIR)}}" + {% set file_name_mean = head ~ "mean.pres_." ~ res ~ ".f" ~ '%03d'|format(fhr) ~ ".grib2" %} + {% set file_path_mean = COMIN_ATMOS_GRIB ~ "/" ~ file_name_mean %} + - "{{ file_path_mean | relpath(ROTDIR)}}" + {% set file_name_spread = head ~ "spread.pres_." ~ res ~ ".f" ~ '%03d'|format(fhr) ~ ".grib2" %} + {% set file_path_spread = COMIN_ATMOS_GRIB ~ "/" ~ file_name_spread %} + - "{{ file_path_spread | relpath(ROTDIR)}}" {% else %} {% set file_name = head ~ "pgrb2." ~ res ~ ".f" ~ '%03d'|format(fhr) %} {% set file_path = COMIN_ATMOS_GRIB ~ "/" ~ file_name %} @@ -67,9 +73,12 @@ gefs_atmos: {% if res == "0p50" %} {% for fhr in range(FHMAX_HF_GFS + FHOUT_GFS, FHMAX_GFS + FHOUT_GFS, FHOUT_GFS) %} {% if mem=="ensstat" %} - {% set file_name = head ~ "mean.pres_." ~ res ~ ".f" ~ '%03d'|format(fhr) ~ ".grib2" %} - {% set file_path = COMIN_ATMOS_GRIB ~ "/" ~ file_name %} - - "{{ file_path | relpath(ROTDIR)}}" + {% set file_name_mean = head ~ "mean.pres_." ~ res ~ ".f" ~ '%03d'|format(fhr) ~ ".grib2" %} + {% set file_path_mean = COMIN_ATMOS_GRIB ~ "/" ~ file_name_mean %} + - "{{ file_path_mean | relpath(ROTDIR)}}" + {% set file_name_spread = head ~ "spread.pres_." ~ res ~ ".f" ~ '%03d'|format(fhr) ~ ".grib2" %} + {% set file_path_spread = COMIN_ATMOS_GRIB ~ "/" ~ file_name_spread %} + - "{{ file_path_spread | relpath(ROTDIR)}}" {% else %} {% set file_name = head ~ "pgrb2." ~ res ~ ".f" ~ '%03d'|format(fhr) %} {% set file_path = COMIN_ATMOS_GRIB ~ "/" ~ file_name %} diff --git a/parm/config/gefs/config.base b/parm/config/gefs/config.base index 50ba6ad113..a1a27bf886 100644 --- a/parm/config/gefs/config.base +++ b/parm/config/gefs/config.base @@ -107,7 +107,7 @@ export PSLOT="@PSLOT@" export EXPDIR="@EXPDIR@/${PSLOT}" export ROTDIR="@COMROOT@/${PSLOT}" -export ARCDIR="${NOSCRUB}/archive/${PSLOT}" +export ARCDIR="${NOSCRUB}/archive" export ATARDIR="@ATARDIR@" # Commonly defined parameters in JJOBS diff --git a/parm/config/gefs/config.nsst b/parm/config/gefs/config.nsst index db4367b2c0..f9a29d44d3 100644 --- a/parm/config/gefs/config.nsst +++ b/parm/config/gefs/config.nsst @@ -12,10 +12,6 @@ export NST_MODEL=2 # nstf_name(2) : NST_SPINUP : 0 = OFF, 1 = ON, export NST_SPINUP=0 -cdate="${PDY}${cyc}" -if (( cdate < 2017072000 )); then - export NST_SPINUP=1 -fi # nstf_name(3) : NST_RESV (Reserved, NSST Analysis) : 0 = OFF, 1 = ON export NST_RESV=0 diff --git a/parm/config/gefs/config.resources b/parm/config/gefs/config.resources index b24fce618b..0aad8a788a 100644 --- a/parm/config/gefs/config.resources +++ b/parm/config/gefs/config.resources @@ -199,7 +199,7 @@ case ${step} in declare -x "walltime"="03:00:00" ;; "C384" | "C768" | "C1152") - declare -x "walltime"="12:00:00" + declare -x "walltime"="10:30:00" ;; *) echo "FATAL ERROR: Resources not defined for job ${step} at resolution ${CASE}" @@ -212,7 +212,7 @@ case ${step} in "atmos_products") - export walltime="15:00:00" + export walltime="5:00:00" export ntasks=24 export threads_per_task=1 export tasks_per_node="${ntasks}" @@ -220,7 +220,7 @@ case ${step} in ;; "atmos_ensstat") - export walltime="15:00:00" + export walltime="2:00:00" export ntasks=6 export threads_per_task=1 export tasks_per_node="${ntasks}" @@ -228,7 +228,7 @@ case ${step} in ;; "oceanice_products") - export walltime="15:00:00" + export walltime="3:00:00" export ntasks=1 export tasks_per_node=1 export threads_per_task=1 @@ -286,7 +286,7 @@ case ${step} in ;; "extractvars") - export walltime_gefs="15:00:00" + export walltime_gefs="2:00:00" export ntasks_gefs=1 export threads_per_task_gefs=1 export tasks_per_node_gefs="${ntasks_gefs}" diff --git a/scripts/exglobal_archive.py b/scripts/exglobal_archive.py index 37a2e4ad1b..1a7455e858 100755 --- a/scripts/exglobal_archive.py +++ b/scripts/exglobal_archive.py @@ -57,9 +57,6 @@ def main(): # Determine which archives to create arcdir_set, atardir_sets = archive.configure(archive_dict) - # Populate the product archive (ARCDIR) - archive.execute_store_products(arcdir_set) - # Create the backup tarballs and store in ATARDIR for atardir_set in atardir_sets: archive.execute_backup_dataset(atardir_set) diff --git a/ush/forecast_predet.sh b/ush/forecast_predet.sh index cfc07e73d5..1087140cad 100755 --- a/ush/forecast_predet.sh +++ b/ush/forecast_predet.sh @@ -557,7 +557,7 @@ FV3_predet(){ export e1=3 fi export e2=${memnum} - export e3=10 + export e3=${NMEM_ENS} fi } diff --git a/workflow/rocoto/gefs_tasks.py b/workflow/rocoto/gefs_tasks.py index 237e22dca8..4f7120f5a7 100644 --- a/workflow/rocoto/gefs_tasks.py +++ b/workflow/rocoto/gefs_tasks.py @@ -117,9 +117,7 @@ def atmos_prod(self): def repair_replay(self): deps = [] - history_path = self._template_to_rocoto_cycstring(self._base["COM_ATMOS_MASTER_TMPL"], {'MEMDIR': 'mem#member#'}) - data = f'{history_path}/{self.run}.t@Hz.master.grb2f006' - dep_dict = {'type': 'data', 'data': data} + dep_dict = {'type': 'metatask', 'name': 'gefs_fcst_mem#member#'} deps.append(rocoto.add_dependency(dep_dict)) dependencies = rocoto.create_dependency(dep=deps) @@ -583,8 +581,6 @@ def arch(self): if self.app_config.do_wave: dep_dict = {'type': 'metatask', 'name': 'gefs_wave_post_grid'} deps.append(rocoto.add_dependency(dep_dict)) - dep_dict = {'type': 'metatask', 'name': 'gefs_wave_post_pnt'} - deps.append(rocoto.add_dependency(dep_dict)) if self.app_config.do_wave_bnd: dep_dict = {'type': 'metatask', 'name': 'gefs_wave_post_bndpnt'} deps.append(rocoto.add_dependency(dep_dict))