Skip to content
Merged
Show file tree
Hide file tree
Changes from 10 commits
Commits
Show all changes
23 commits
Select commit Hold shift + click to select a range
fd5310f
code compiles
CoryMartin-NOAA Dec 3, 2025
2929a2d
commit before meeting
CoryMartin-NOAA Dec 3, 2025
2fe6b6c
save before merge develop
CoryMartin-NOAA Dec 5, 2025
fee4a2e
Merge branch 'develop' into bugfix/gcafs-nsst
CoryMartin-NOAA Dec 5, 2025
3822a2f
Change dtf from analysis to increment
CoryMartin-NOAA Dec 5, 2025
b78e4d4
link or copy directory
CoryMartin-NOAA Dec 5, 2025
bf3603c
fix python coding norms
CoryMartin-NOAA Dec 5, 2025
f27a58b
Merge branch 'develop' into bugfix/gcafs-nsst
CoryMartin-NOAA Dec 9, 2025
a84b188
update UFS to head of develop
CoryMartin-NOAA Dec 9, 2025
a885fbe
Merge branch 'develop' into bugfix/gcafs-nsst
CoryMartin-NOAA Dec 10, 2025
0df0625
Merge branch 'develop' into bugfix/gcafs-nsst
CoryMartin-NOAA Dec 15, 2025
ce460b4
update hash
CoryMartin-NOAA Dec 15, 2025
7aef21e
changes
CoryMartin-NOAA Dec 15, 2025
89551c4
remove tests from MSU here
CoryMartin-NOAA Dec 15, 2025
9ae3bc8
restore skip
CoryMartin-NOAA Dec 15, 2025
bf2b5be
Merge branch 'develop' into bugfix/gcafs-nsst
CoryMartin-NOAA Dec 17, 2025
ebf1cfc
Merge branch 'develop' into bugfix/gcafs-nsst
CoryMartin-NOAA Dec 17, 2025
d8ca474
Merge branch 'develop' into bugfix/gcafs-nsst
bbakernoaa Dec 18, 2025
bd647a2
Merge branch 'develop' into bugfix/gcafs-nsst
CoryMartin-NOAA Dec 30, 2025
7cf91e5
Merge branch 'develop' into bugfix/gcafs-nsst
CoryMartin-NOAA Dec 30, 2025
76430ac
restore develop ci config; add to gitignore
CoryMartin-NOAA Dec 30, 2025
49aaa2a
Merge branch 'bugfix/gcafs-nsst' of https://github.com/corymartin-noa…
CoryMartin-NOAA Dec 30, 2025
5f1502f
Merge branch 'develop' into bugfix/gcafs-nsst
CoryMartin-NOAA Dec 31, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion dev/jobs/JGLOBAL_ENKF_SELECT_OBS
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,7 @@ export PREPQCPF="${COMIN_OBS}/${OPREFIX}prepbufr.acft_profiles"

# Deterministic analysis and increment files
export SFCANL="${COMOUT_ATMOS_ANALYSIS_DET}/${APREFIX_DET}analysis.sfc.a006.nc"
export DTFANL="${COMOUT_ATMOS_ANALYSIS_DET}/${APREFIX_DET}analysis.dtf.a006.nc"
export DTFANL="${COMOUT_ATMOS_ANALYSIS_DET}/${APREFIX_DET}increment.dtf.i006.nc"
export ATMANL="${COMOUT_ATMOS_ANALYSIS_DET}/${APREFIX_DET}analysis.atm.a006.nc"
export ATMINC="${COMOUT_ATMOS_ANALYSIS_DET}/${APREFIX_DET}increment.atm.i006.nc"

Expand Down
4 changes: 2 additions & 2 deletions dev/parm/config/gcafs/config.fetch
Original file line number Diff line number Diff line change
Expand Up @@ -18,9 +18,9 @@ if [[ "${PDY}${cyc}" -gt "${SDATE}" ]]; then
fi
export gdas_version
if [[ "${machine}" == "ORION" || "${machine}" == "HERCULES" ]]; then
FETCH_YAML_TMPL_LIST="${PARMgfs}/fetch/${NET}_${APP}_gdas-anl_msu.yaml.j2,${PARMgfs}/fetch/${NET}_${APP}_gdas-dtfanl_msu.yaml.j2"
FETCH_YAML_TMPL_LIST="${PARMgfs}/fetch/${NET}_${APP}_gdas-anl_msu.yaml.j2,"
else
FETCH_YAML_TMPL_LIST="${PARMgfs}/fetch/${NET}_${APP}_gdas-anl.yaml.j2,${PARMgfs}/fetch/${NET}_${APP}_gdas-dtfanl.yaml.j2"
FETCH_YAML_TMPL_LIST="${PARMgfs}/fetch/${NET}_${APP}_gdas-anl.yaml.j2,"
fi
export FETCH_YAML_TMPL_LIST
else
Expand Down
2 changes: 1 addition & 1 deletion dev/scripts/exglobal_atmos_analysis.sh
Original file line number Diff line number Diff line change
Expand Up @@ -178,7 +178,6 @@ GRADSTAT=${GRADSTAT:-${COMIN_ATMOS_ANALYSIS_PREV}/${GPREFIX}radstat.tar}
# Analysis files
export APREFIX=${APREFIX:-""}
SFCANL=${SFCANL:-${COMOUT_ATMOS_ANALYSIS}/${APREFIX}analysis.sfc.a006.nc}
DTFANL=${DTFANL:-${COMOUT_ATMOS_ANALYSIS}/${APREFIX}analysis.dtf.a006.nc}
ATMANL=${ATMANL:-${COMOUT_ATMOS_ANALYSIS}/${APREFIX}analysis.atm.a006.nc}
ABIAS=${ABIAS:-${COMOUT_ATMOS_ANALYSIS}/${APREFIX}abias.txt}
ABIASPC=${ABIASPC:-${COMOUT_ATMOS_ANALYSIS}/${APREFIX}abias_pc.txt}
Expand All @@ -188,6 +187,7 @@ GSISTAT=${GSISTAT:-${COMOUT_ATMOS_ANALYSIS}/${APREFIX}gsistat.txt}

# Increment files
ATMINC=${ATMINC:-${COMOUT_ATMOS_ANALYSIS}/${APREFIX}increment.atm.i006.nc}
DTFANL=${DTFANL:-${COMOUT_ATMOS_ANALYSIS}/${APREFIX}increment.dtf.i006.nc}

# Obs diag
RUN_SELECT=${RUN_SELECT:-"NO"}
Expand Down
2 changes: 1 addition & 1 deletion dev/scripts/exglobal_atmos_analysis_calc.sh
Original file line number Diff line number Diff line change
Expand Up @@ -73,11 +73,11 @@ ATMG09=${ATMG09:-"${COMIN_ATMOS_HISTORY_PREV}/${GPREFIX}atm.f009.nc"}
# Analysis files
export APREFIX=${APREFIX:-""}
SFCANL=${SFCANL:-"${COMOUT_ATMOS_ANALYSIS}/${APREFIX}analysis.sfc.a006.nc"}
DTFANL=${DTFANL:-"${COMOUT_ATMOS_ANALYSIS}/${APREFIX}analysis.dtf.a006.nc"}
ATMANL=${ATMANL:-"${COMOUT_ATMOS_ANALYSIS}/${APREFIX}analysis.atm.a006.nc"}

# Increment files
ATMINC=${ATMINC:-"${COMOUT_ATMOS_ANALYSIS}/${APREFIX}increment.atm.i006.nc"}
DTFANL=${DTFANL:-"${COMOUT_ATMOS_ANALYSIS}/${APREFIX}increment.dtf.i006.nc"}

# Set script / GSI control parameters
DOHYBVAR=${DOHYBVAR:-"NO"}
Expand Down
2 changes: 1 addition & 1 deletion dev/scripts/exglobal_atmos_sfcanl.sh
Original file line number Diff line number Diff line change
Expand Up @@ -112,7 +112,7 @@ done
# There is only a single NSST analysis at the middle of the window
# For now use/assume it is the same at the beginning of the window if doing IAU
if [[ "${DONST}" == "YES" ]]; then
export NST_FILE=${NST_FILE:-${COMIN_ATMOS_ANALYSIS}/${APREFIX}analysis.dtf.a006.nc}
export NST_FILE=${NST_FILE:-${COMIN_ATMOS_ANALYSIS}/${APREFIX}increment.dtf.i006.nc}
if [[ -s "${NST_FILE}" ]]; then
cpreq "${NST_FILE}" "${DATA}/dtfanl"
export NST_FILE="dtfanl"
Expand Down
4 changes: 2 additions & 2 deletions dev/scripts/exglobal_enkf_sfc.sh
Original file line number Diff line number Diff line change
Expand Up @@ -127,7 +127,7 @@ else
fi

if [[ "${DONST}" == "YES" ]]; then
export NST_FILE=${NST_FILE:-${COMIN_ATMOS_ANALYSIS_DET}/${APREFIX}analysis.dtf.a006.nc}
export NST_FILE=${NST_FILE:-${COMIN_ATMOS_ANALYSIS_DET}/${APREFIX}increment.dtf.i006.nc}
else
export NST_FILE="NULL"
fi
Expand Down Expand Up @@ -159,7 +159,7 @@ export MAX_TASKS_CY=${NMEM_ENS}

if [[ "${DOIAU}" == "YES" ]]; then
# Update surface restarts at beginning of window when IAU is ON
# For now assume/hold analysis.dtf.nc is valid at beginning of window.
# For now assume/hold increment.dtf.nc is valid at beginning of window.

for n in $(seq 1 "${ntiles}"); do

Expand Down
3 changes: 3 additions & 0 deletions dev/scripts/exglobal_offline_atmos_analysis.py
Original file line number Diff line number Diff line change
Expand Up @@ -33,5 +33,8 @@
# Compute the increment between the analysis and background
offline_anl.calc_increment()

# Compute the tref increment
offline_anl.calc_tref_inc()

# Copy the analysis increment and regridded analysis back to COM
offline_anl.finalize()
10 changes: 3 additions & 7 deletions dev/ush/fetch_gdas_for_gcafs.sh
Original file line number Diff line number Diff line change
Expand Up @@ -37,27 +37,23 @@ PDY="${cycle_Y}${cycle_M}${cycle_D}"
# HPSS path for the two tar files
hpss_path_root="/NCEPPROD/hpssprod/runhistory/rh${cycle_Y}/${cycle_YM}/${PDY}"
hpss_file_nc="com_gfs_${gdas_version}_gdas.${PDY}_${cyc}.gdas_nc.tar"
hpss_file_restart="com_gfs_${gdas_version}_gdas.${PDY}_${cyc}.gdas_restart.tar"

# get the names of the files to extract
atmanl="./gdas.${PDY}/${cyc}/atmos/gdas.t${cyc}z.atmanl.nc"
dtfanl="./gdas.${PDY}/${cyc}/atmos/gdas.t${cyc}z.dtfanl.nc"
sfcanl="./gdas.${PDY}/${cyc}/atmos/gdas.t${cyc}z.sfcanl.nc"

# Fetch the tar files from HPSS
cd "${OUTPUT_DIR}/tmp"

htar -xvf "${hpss_path_root}/${hpss_file_nc}" "${atmanl}"
htar -xvf "${hpss_path_root}/${hpss_file_restart}" "${dtfanl}"
htar -xvf "${hpss_path_root}/${hpss_file_nc}" "${atmanl}" "${sfcanl}"

# create the output tar files
echo "creating output tar files"
tar cvf "${hpss_file_nc}" "${atmanl}"
tar cvf "${hpss_file_restart}" "${dtfanl}"
tar cvf "${hpss_file_nc}" "${atmanl}" "${sfcanl}"

# Move the tar files to the output directory
echo "moving tar files to ${OUTPUT_DIR}"
mv "${hpss_file_nc}" "${OUTPUT_DIR}/"
mv "${hpss_file_restart}" "${OUTPUT_DIR}/"

# Clean up temporary directory
rm -rf "${OUTPUT_DIR}/tmp"
Expand Down
2 changes: 1 addition & 1 deletion dev/ush/make_ee2_links.sh
Original file line number Diff line number Diff line change
Expand Up @@ -110,7 +110,7 @@ for dir in "${gdas_list[@]}" "${gfs_list[@]}" "${gcdas_list[@]}" "${gcafs_list[@
link_file "${system_prefix}.t${cyc}z.cnvstat" "${system_prefix}.t${cyc}z.cnvstat.tar"
fi
if [[ -f "${system_prefix}.t${cyc}z.dtfanl.nc" ]]; then
link_file "${system_prefix}.t${cyc}z.dtfanl.nc" "${system_prefix}.t${cyc}z.analysis.dtf.a006.nc"
link_file "${system_prefix}.t${cyc}z.dtfanl.nc" "${system_prefix}.t${cyc}z.increment.dtf.i006.nc"
fi
if [[ -f "${system_prefix}.t${cyc}z.gsistat" ]]; then
link_file "${system_prefix}.t${cyc}z.gsistat" "${system_prefix}.t${cyc}z.gsistat.txt"
Expand Down
2 changes: 1 addition & 1 deletion parm/archive/gdas_restarta.yaml.j2
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ gdas_restarta:
- "{{ COMIN_ATMOS_ANALYSIS | relpath(ROTDIR) }}/{{ head }}abias_pc.txt"
- "{{ COMIN_ATMOS_ANALYSIS | relpath(ROTDIR) }}/{{ head }}cnvstat.tar"
- "{{ COMIN_ATMOS_ANALYSIS | relpath(ROTDIR) }}/{{ head }}abias_int.txt"
- "{{ COMIN_ATMOS_ANALYSIS | relpath(ROTDIR) }}/{{ head }}analysis.dtf.a006.nc"
- "{{ COMIN_ATMOS_ANALYSIS | relpath(ROTDIR) }}/{{ head }}increment.dtf.i006.nc"
- "{{ COMIN_ATMOS_ANALYSIS | relpath(ROTDIR) }}/{{ head }}analysis.done.txt"
{% else %}
- "{{ COMIN_ATMOS_ANALYSIS | relpath(ROTDIR) }}/{{ head }}rad_varbc_params.tar"
Expand Down
2 changes: 1 addition & 1 deletion parm/archive/gfs_arcdir.yaml.j2
Original file line number Diff line number Diff line change
Expand Up @@ -109,7 +109,7 @@
ARCDIR ~ "/abias_air." ~ RUN ~ "." ~ cycle_YMDH ]) %}
{% do gdas_files.append([COMIN_ATMOS_ANALYSIS ~ "/" ~ head ~ "abias_int.txt",
ARCDIR ~ "/abias_int." ~ RUN ~ "." ~ cycle_YMDH ]) %}
{% do gdas_files.append([COMIN_ATMOS_ANALYSIS ~ "/" ~ head ~ "analysis.dtf.a006.nc",
{% do gdas_files.append([COMIN_ATMOS_ANALYSIS ~ "/" ~ head ~ "increment.dtf.i006.nc",
ARCDIR ~ "/dtfanl." ~ RUN ~ "." ~ cycle_YMDH ~ ".nc"]) %}

# Now append the necessary file pairs to file_set
Expand Down
2 changes: 1 addition & 1 deletion parm/archive/gfs_netcdfa.yaml.j2
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,6 @@ gfs_netcdfa:
{% endfor %}
optional:
{% if not DO_JEDIATMVAR %}
- "{{ COMIN_ATMOS_ANALYSIS | relpath(ROTDIR) }}/{{ head }}analysis.dtf.a006.nc"
- "{{ COMIN_ATMOS_ANALYSIS | relpath(ROTDIR) }}/{{ head }}increment.dtf.i006.nc"
- "{{ COMIN_ATMOS_ANALYSIS | relpath(ROTDIR) }}/{{ head }}increment.done.txt"
{% endif %}
2 changes: 2 additions & 0 deletions parm/fetch/gcafs_ATMA_gdas-anl.yaml.j2
Original file line number Diff line number Diff line change
Expand Up @@ -9,4 +9,6 @@ target:
contents:
# Atmospheric analysis
- ./gdas.{{ cycle_YMD }}/{{ cycle_HH }}/atmos/gdas.t{{ cycle_HH }}z.atmanl.nc
# Surface analysis
- ./gdas.{{ cycle_YMD }}/{{ cycle_HH }}/atmos/gdas.t{{ cycle_HH }}z.sfcanl.nc
destination: "{{ ROTDIR }}"
2 changes: 2 additions & 0 deletions parm/fetch/gcafs_ATMA_gdas-anl_msu.yaml.j2
Original file line number Diff line number Diff line change
Expand Up @@ -9,4 +9,6 @@ target:
contents:
# Atmospheric analysis
- ./gdas.{{ cycle_YMD }}/{{ cycle_HH }}/atmos/gdas.t{{ cycle_HH }}z.atmanl.nc
# Surface analysis
- ./gdas.{{ cycle_YMD }}/{{ cycle_HH }}/atmos/gdas.t{{ cycle_HH }}z.sfcanl.nc
destination: "{{ ROTDIR }}"
12 changes: 0 additions & 12 deletions parm/fetch/gcafs_ATMA_gdas-dtfanl.yaml.j2

This file was deleted.

12 changes: 0 additions & 12 deletions parm/fetch/gcafs_ATMA_gdas-dtfanl_msu.yaml.j2

This file was deleted.

3 changes: 2 additions & 1 deletion sorc/link_workflow.sh
Original file line number Diff line number Diff line change
Expand Up @@ -327,7 +327,7 @@ cd "${HOMEgfs}/exec" || exit 1
for utilexe in fbwndgfs.x gaussian_sfcanl.x gfs_bufr.x supvit.x syndat_getjtbul.x \
syndat_maksynrc.x syndat_qctropcy.x tocsbufr.x overgridid.x rdbfmsua.x \
mkgfsawps.x enkf_chgres_recenter_nc.x tave.x vint.x ocnicepost.x webtitle.x \
ensadd.x ensppf.x ensstat.x wave_stat.x; do
ensadd.x ensppf.x ensstat.x wave_stat.x tref_calc.x; do
if [[ -s "${utilexe}" ]]; then
rm -f "${utilexe}"
fi
Expand Down Expand Up @@ -542,6 +542,7 @@ for prog in enkf_chgres_recenter_nc.fd \
syndat_qctropcy.fd \
tave.fd \
tocsbufr.fd \
tref_calc.fd \
vint.fd \
webtitle.fd \
ocnicepost.fd; do
Expand Down
2 changes: 1 addition & 1 deletion sorc/ufs_model.fd
Submodule ufs_model.fd updated 51 files
+10 −12 .cicd/Jenkinsfile
+0 −0 .github/scripts/__init__.py
+259 −0 .github/scripts/get_data.py
+136 −0 .github/scripts/write_test_summary.py
+0 −0 .github/tests/__init__.py
+707 −0 .github/tests/conftest.py
+26 −0 .github/tests/print_test_summary.py
+66 −0 .github/tests/runtime_results.json
+108 −0 .github/tests/test_file_stats.json
+171 −0 .github/tests/test_get_data.py
+98 −0 .github/tests/test_write_test_summary.py
+77 −0 .github/workflows/resource-warning.yaml
+37 −0 .github/workflows/test-resource-warning.yaml
+7 −0 .github/workflows/update_project_labels.yaml
+1 −1 AQM
+11 −11 CDEPS-interface/CMakeLists.txt
+1 −1 CICE-interface/CICE
+1 −1 CICE-interface/CMakeLists.txt
+1 −1 CMEPS-interface/CMEPS
+1 −1 CMEPS-interface/CMakeLists.txt
+7 −5 CMakeLists.txt
+1 −1 CMakeModules
+2 −2 HYCOM-interface/CMakeLists.txt
+1 −1 LM4-driver
+4 −4 MOM6-interface/CMakeLists.txt
+1 −1 NOAHMP-interface/CMakeLists.txt
+1 −1 UFSATM
+1 −1 WW3
+2 −0 ci/package.py
+4 −4 doc/UsersGuide/source/BuildingAndRunning.rst
+1 −1 doc/UsersGuide/source/conf.py
+1 −1 tests/bl_date.conf
+42 −8 tests/ci/Jenkinsfile.ort
+10 −8 tests/ci/repo_check.sh
+3 −0 tests/default_vars.sh
+1 −0 tests/detect_machine.sh
+24 −24 tests/logs/OpnReqTests_control_p8_hera.log
+12 −12 tests/logs/OpnReqTests_cpld_control_nowave_noaero_p8_hera.log
+15 −15 tests/logs/OpnReqTests_regional_control_hera.log
+288 −288 tests/logs/RegressionTests_acorn.log
+303 −303 tests/logs/RegressionTests_gaeac6.log
+411 −411 tests/logs/RegressionTests_hera.log
+388 −459 tests/logs/RegressionTests_hercules.log
+310 −310 tests/logs/RegressionTests_orion.log
+502 −428 tests/logs/RegressionTests_ursa.log
+257 −257 tests/logs/RegressionTests_wcoss2.log
+4 −0 tests/parm/aqm/aqm.rc
+4 −0 tests/parm/aqm/aqm_canopy.rc
+1 −0 tests/parm/ice_in.IN
+2 −2 tests/rt.sh
+0 −18 tests/test_changes.list
55 changes: 49 additions & 6 deletions ush/python/pygfs/task/offline_analysis.py
Original file line number Diff line number Diff line change
Expand Up @@ -81,11 +81,14 @@ def initialize(self) -> None:
fcst_file_in = os.path.join(self.task_config.COMIN_ATMOS_HISTORY_PREV,
f"{self.task_config.GPREFIX}atm.f006.nc")
files_to_copy.append([fcst_file_in, os.path.join(self.task_config.DATA, "atmges_mem001")])
sfcfcst_file_in = os.path.join(self.task_config.COMIN_ATMOS_HISTORY_PREV,
f"{self.task_config.GPREFIX}sfc.f006.nc")
files_to_copy.append([sfcfcst_file_in, os.path.join(self.task_config.DATA, "sfcges_mem001")])
# TODO: Re-stage all of the inputs on HPSS to match EE2-compliant filenames
anl_file_in = os.path.join(self.task_config.COMIN_ATMOS_ANALYSIS.replace('analysis', ''), f"{self.task_config.APREFIX_IN}atmanl.nc")
files_to_copy.append([anl_file_in, os.path.join(self.task_config.DATA, "atmanl.input.nc")])
# sfcanl_file_in = os.path.join(self.task_config.COMIN_ATMOS_ANALYSIS, f"{GPREFIX}analysis.sfc.a006.nc")
# files_to_copy.append([sfcanl_file_in, os.path.join(self.task_config.DATA, "sfcanl.input.nc")])
sfcanl_file_in = os.path.join(self.task_config.COMIN_ATMOS_ANALYSIS.replace('analysis', ''), f"{self.task_config.APREFIX_IN}sfcanl.nc")
files_to_copy.append([sfcanl_file_in, os.path.join(self.task_config.DATA, "sfcanl.input.nc")])
FileHandler({'copy': files_to_copy}).sync()

# generate namelists for the executables
Expand Down Expand Up @@ -129,9 +132,26 @@ def initialize(self) -> None:
f90nml.write(namelist, nmlfile)
logger.info(f"Wrote namelist to {os.path.join(self.task_config.DATA, 'calc_increment.nml')}")

# setup namelist for tref increment calculation
logger.info("Generating namelist for 'tref_calc'")
namelist = {
"tref_calc_setup": {
"i_output": self.task_config.nlon_interp,
"j_output": self.task_config.nlat_interp,
"sfcanl_file": "sfcanl.input.nc",
"sfcf006_file": "sfcges_mem001",
"output_file": "dtfanl.nc",
}
}

logger.info(namelist)
with open(os.path.join(self.task_config.DATA, 'tref_calc.nml'), 'w') as nmlfile:
f90nml.write(namelist, nmlfile)
logger.info(f"Wrote namelist to {os.path.join(self.task_config.DATA, 'tref_calc.nml')}")

# copy executables to $DATA
executables_to_copy = []
executable_list = ['enkf_chgres_recenter_nc.x', 'calc_increment_ens_ncio.x']
executable_list = ['enkf_chgres_recenter_nc.x', 'calc_increment_ens_ncio.x', 'tref_calc.x']
for exec_name in executable_list:
executables_to_copy.append([os.path.join(self.task_config.EXECgfs, exec_name),
os.path.join(self.task_config.DATA, exec_name)])
Expand Down Expand Up @@ -163,6 +183,30 @@ def interpolate_analysis(self) -> None:
logger.exception(f"An error occured during execution of {exe}")
raise WorkflowException(f"An error occured during execution of {exe}") from err

@logit(logger)
def calc_tref_inc(self) -> None:
"""Interpolate the tref analysis and compute the dtf increment.

Parameters
----------
self : OfflineAnalysis
Instance of the OfflineAnalysis object
"""

# set up and run the executable
exe = Executable(self.task_config.APRUN_CHGRES)
exe.add_default_arg(os.path.join(self.task_config.DATA, 'tref_calc.x'))
exe.add_default_arg(os.path.join(self.task_config.DATA, 'tref_calc.nml'))
try:
logger.debug(f"Executing {exe}")
exe()
except OSError:
logger.exception(f"Failed to execute {exe}")
raise
except Exception as err:
logger.exception(f"An error occured during execution of {exe}")
raise WorkflowException(f"An error occured during execution of {exe}") from err

@logit(logger)
def calc_increment(self) -> None:
"""Compute the analysis increment for input to the forecast model
Expand Down Expand Up @@ -216,9 +260,8 @@ def finalize(self) -> None:
os.path.join(self.task_config.COMOUT_OBS, f"{self.task_config.APREFIX}snogrb_t1534.3072.1536")])
# TODO: Re-stage the inputs for the GCDAS offline analysis on HPSS following EE2-compliant filenames, then update this line
transfer_files.append([
os.path.join(self.task_config.COMIN_ATMOS_ANALYSIS.replace('analysis', ''),
f"{self.task_config.APREFIX_IN}dtfanl.nc"),
os.path.join(self.task_config.DATA, "dtfanl.nc"),
os.path.join(self.task_config.COMOUT_ATMOS_ANALYSIS,
f"{self.task_config.APREFIX}analysis.dtf.a006.nc")
f"{self.task_config.APREFIX}increment.dtf.i006.nc")
])
FileHandler({'copy': transfer_files}).sync()