Skip to content

Commit

Permalink
Merge branch 'develop' into feature/calcanl-new
Browse files Browse the repository at this point in the history
  • Loading branch information
DavidNew-NOAA committed Jan 10, 2025
2 parents 184bf93 + 15113ad commit 3e4abb0
Show file tree
Hide file tree
Showing 16 changed files with 174 additions and 104 deletions.
12 changes: 12 additions & 0 deletions ci/run_ci.sh
Original file line number Diff line number Diff line change
Expand Up @@ -91,6 +91,18 @@ if [[ $TEST_WORKFLOW == 1 ]]; then
fi
# ==============================================================================
# run ctests

# PATCH START
# MSU role-da can not use /work/noaa/stmp at present. The logic below
# modifies the stmp path used by g-w so that role-da can run g-w based
# ctests. This logic will be removed after MSU role-da is added to the
# stmp group.
if [[ "${TARGET}" = "orion" || "${TARGET}" = "hercules" ]]; then
echo "***WARNING*** apply MSU stmp patch to $workflow_dir/workflow/hosts/${TARGET}.yaml"
sed -i "s|/noaa/stmp|/noaa/da|g" $workflow_dir/workflow/hosts/${TARGET}.yaml
fi
# PATCH END

cd $gdasapp_dir/build
module use $gdasapp_dir/modulefiles
module load GDAS/$TARGET
Expand Down
41 changes: 18 additions & 23 deletions ci/stable_driver.sh
Original file line number Diff line number Diff line change
Expand Up @@ -73,7 +73,7 @@ $gdasdir/ush/submodules/update_develop.sh $gdasdir

# ==============================================================================
# email information
PEOPLE="[email protected] Russ.Treadon@noaa.gov [email protected] David.New@noaa.gov"
PEOPLE="[email protected] David.New@noaa.gov Russ.Treadon@noaa.gov"
BODY=$stableroot/$datestr/stable_nightly

# ==============================================================================
Expand All @@ -84,41 +84,36 @@ total=0
if [ $ci_status -eq 0 ]; then
cd $gdasdir
# checkout feature/stable-nightly
git stash
total=$(($total+$?))
if [ $total -ne 0 ]; then
echo "Unable to git stash" >> $stableroot/$datestr/output
fi
git checkout feature/stable-nightly
total=$(($total+$?))
if [ $total -ne 0 ]; then
rc=$?
total=$(($total+$rc))
if [ $rc -ne 0 ]; then
echo "Unable to checkout feature/stable-nightly" >> $stableroot/$datestr/output
fi
# merge in develop
git merge develop
total=$(($total+$?))
if [ $total -ne 0 ]; then
rc=$?
total=$(($total+$rc))
if [ $rc -ne 0 ]; then
echo "Unable to merge develop" >> $stableroot/$datestr/output
fi
# add in submodules
git stash pop
total=$(($total+$?))
if [ $total -ne 0 ]; then
echo "Unable to git stash pop" >> $stableroot/$datestr/output
fi
$my_dir/../ush/submodules/add_submodules.sh $gdasdir
total=$(($total+$?))
if [ $total -ne 0 ]; then
$gdasdir/ush/submodules/add_submodules.sh $gdasdir
rc=$?
total=$(($total+$rc))
if [ $rc -ne 0 ]; then
echo "Unable to add updated submodules to commit" >> $stableroot/$datestr/output
fi
git diff-index --quiet HEAD || git commit -m "Update to new stable build on $datestr"
total=$(($total+$?))
if [ $total -ne 0 ]; then
rc=$?
total=$(($total+$rc))
if [ $rc -ne 0 ]; then
echo "Unable to commit" >> $stableroot/$datestr/output
fi
git push --set-upstream origin feature/stable-nightly
total=$(($total+$?))
if [ $total -ne 0 ]; then
rc=$?
total=$(($total+$rc))
if [ $rc -ne 0 ]; then
echo "Unable to push" >> $stableroot/$datestr/output
fi
if [ $total -ne 0 ]; then
Expand Down Expand Up @@ -152,4 +147,4 @@ mail -r "Darth Vader - NOAA Affiliate <[email protected]>" -s "$SUBJECT" "$PE

# ==============================================================================
# scrub working directory for older files
find $stableroot/* -maxdepth 1 -mtime +3 -exec rm -rf {} \;
find $stableroot/* -maxdepth 1 -mtime +1 -exec rm -rf {} \;
99 changes: 68 additions & 31 deletions modulefiles/GDAS/wcoss2.intel.lua
Original file line number Diff line number Diff line change
Expand Up @@ -3,49 +3,86 @@ Load environment for running the GDAS application with Intel compilers and MPI.
]])

local pkgName = myModuleName()
local pkgVersion = myModuleVersion()
local pkgVersion = myModuleVersion() or "1.0"
local pkgNameVer = myModuleFullName()

prepend_path("MODULEPATH", "/apps/dev/lmodules/core")

load("PrgEnv-intel/8.2.0")
load("cmake/3.20.2")
load("craype")
load("cray-pals")
load("git/2.29.0")
load("intel/19.1.3.304")
load("cray-mpich/8.1.12")
load("hdf5/1.12.2")
load("netcdf/4.7.4")
load("udunits/2.2.28")
prepend_path("MODULEPATH", "/apps/ops/test/spack-stack-1.6.0-nco/envs/nco-intel-19.1.3.304/install/modulefiles/Core")

load("PrgEnv-intel/8.3.3")
load("stack-intel/19.1.3.304")
load("stack-cray-mpich/8.1.9")
load("stack-python/3.10.13")
load("craype/2.7.17")
load("cray-pals/1.3.2")
load("cmake/3.23.1")
load("gettext/0.19.7")
load("pcre2/10.42")
load("curl/8.4.0")
load("zlib/1.2.13")
load("git/2.35.3")
load("pkg-config/0.29.2")
load("hdf5/1.14.0")
load("parallel-netcdf/1.12.2")
load("netcdf-c/4.9.2")
load("nccmp/1.9.0.1")
load("netcdf-fortran/4.6.1")
load("nco/5.0.6")
load("parallelio/2.5.10")
load("boost/1.83.0")
load("bufr/12.0.1")
load("ecbuild/3.7.2")
load("openjpeg/2.5.0")
load("eigen/3.4.0")
load("boost/1.79.0")
load("gsl-lite/v0.40.0")
load("sp/2.4.0")
load("python/3.8.6")
load("ecbuild/3.7.0")
load("qhull/2020.2")
load("eckit/1.24.4")
load("openblas/0.3.24")
load("eckit/1.24.5")
load("fftw/3.3.10")
load("fckit/0.11.0")
load("fms/2023.04")
load("esmf/8.5.0")
load("atlas/0.35.0")
load("nccmp")
load("nco/5.0.6")
load("gsl/2.7")
load("sp/2.5.0")
load("gsl-lite/0.37.0")
load("libjpeg/2.1.0")
load("libpng/1.6.37")
load("libxt/1.1.5")
load("libxmu/1.1.4")
load("libxpm/3.5.12")
load("libxaw/1.0.13")
load("udunits/2.2.28")
load("ncview/2.1.9")
load("netcdf-cxx4/4.3.1")
load("core/rocoto/1.3.5")
load("prod_util/2.0.14")
load("bufr/12.0.1")
load("fms-C/2023.04")
load("esmf-C/8.6.0")

-- hack for pybind11
setenv("pybind11_ROOT", "/apps/spack/python/3.8.6/intel/19.1.3.304/pjn2nzkjvqgmjw4hmyz43v5x4jbxjzpk/lib/python3.8/site-packages/pybind11/share/cmake/pybind11")
load("py-setuptools/63.4.3")
load("py-jinja2/3.1.2")
load("py-netcdf4/1.5.8")
load("py-pybind11/2.11.1")
load("py-pycodestyle/2.11.0")
load("py-pyyaml/5.4.1")
load("py-scipy/1.10.1")
load("py-xarray/2023.7.0")
load("py-f90nml/1.4.3")
load("py-pip/23.1.2")
load("py-bottleneck/1.3.7")
load("py-numexpr/2.8.4")
load("py-six/1.16.0")
load("py-python-dateutil/2.8.2")
load("py-pytz/2023.3")
load("py-pandas/1.5.3")
load("py-numpy/1.24.4")
load("py-markupsafe/2.1.3")
load("py-cftime/1.0.3.4")
load("py-packaging/23.1")

-- hack for git-lfs
prepend_path("PATH", "/apps/spack/git-lfs/2.11.0/gcc/11.2.0/m6b6nl5kfqngfteqbggydc7kflxere3s/bin")

-- hack for FMS
setenv('fms_ROOT', '/apps/prod/hpc-stack/i-19.1.3.304__m-8.1.12__h-1.14.0__n-4.9.2__p-2.5.10__e-8.6.0pnetcdf/intel-19.1.3.304/cray-mpich-8.1.12/fms/2023.04')
setenv("CC","cc")
setenv("CXX","CC")
setenv("FC","ftn")

local mpiexec = '/pe/intel/compilers_and_libraries_2020.4.304/linux/mpi/intel64/bin/mpirun'
local mpiexec = '/opt/cray/pals/1.3.2/bin/mpirun'
local mpinproc = '-n'
setenv('MPIEXEC_EXEC', mpiexec)
setenv('MPIEXEC_NPROC', mpinproc)
Expand Down
12 changes: 3 additions & 9 deletions parm/aero/jcb-base.yaml.j2
Original file line number Diff line number Diff line change
Expand Up @@ -128,12 +128,6 @@ aero_obsbiascovout_prefix: "{{APREFIX}}"
aero_obsbiascovout_suffix: ".satbias_cov.nc"

bias_files:
atms_n20: rad_varbc_params.tar
atms_npp: rad_varbc_params.tar
mtiasi_metop-a: rad_varbc_params.tar
mtiasi_metop-b: rad_varbc_params.tar
amsua_n19: rad_varbc_params.tar
ssmis_f17: rad_varbc_params.tar
ssmis_f18: rad_varbc_params.tar
cris-fsr_n20: rad_varbc_params.tar
cris-fsr_npp: rad_varbc_params.tar
viirs_npp_aod: aero_varbc_params.tar
viirs_n20_aod: aero_varbc_params.tar
viirs_n21_aod: aero_varbc_params.tar
3 changes: 3 additions & 0 deletions parm/soca/obsprep/obsprep_config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -244,6 +244,9 @@ observations:
provider: GTS
dmpdir subdir: atmos
type: bufr
window:
back: 4
forward: 4
dmpdir regex: 'gdas.*.subpfl.*.bufr_d'

- obs space:
Expand Down
2 changes: 1 addition & 1 deletion sorc/fv3-jedi
Submodule fv3-jedi updated 35 files
+117 −9 src/fv3jedi/Geometry/fv3jedi_geom_mod.f90
+4 −2 src/fv3jedi/IO/CubeSphereHistory/fv3jedi_io_cube_sphere_history_mod.f90
+11 −3 src/fv3jedi/IO/Utils/IOBase.h
+10 −3 src/fv3jedi/Increment/Increment.h
+1 −1 src/fv3jedi/LinearVariableChange/Analysis2Model/LinVarChaA2M.cc
+0 −1 src/fv3jedi/LinearVariableChange/Analysis2Model/LinVarChaA2M.h
+7 −7 src/fv3jedi/LinearVariableChange/Base/LinearVariableChangeBase.h
+1 −1 src/fv3jedi/LinearVariableChange/Control2Analysis/LinVarChaC2A.cc
+0 −1 src/fv3jedi/LinearVariableChange/Control2Analysis/LinVarChaC2A.h
+0 −1 src/fv3jedi/LinearVariableChange/LinearVariableChange.h
+1 −1 src/fv3jedi/LinearVariableChange/Model2GeoVaLs/LinVarChaModel2GeoVaLs.cc
+0 −1 src/fv3jedi/LinearVariableChange/Model2GeoVaLs/LinVarChaModel2GeoVaLs.h
+10 −3 src/fv3jedi/State/State.h
+1 −1 src/fv3jedi/Utilities/fv3jedi_tile_comms_mod.f90
+0 −1 src/fv3jedi/VariableChange/Analysis2Model/VarChaA2M.cc
+0 −1 src/fv3jedi/VariableChange/Analysis2Model/VarChaA2M.h
+7 −5 src/fv3jedi/VariableChange/Base/VariableChangeBase.h
+0 −1 src/fv3jedi/VariableChange/ColdStartWinds/VarChaColdStartWinds.cc
+0 −1 src/fv3jedi/VariableChange/ColdStartWinds/VarChaColdStartWinds.h
+0 −1 src/fv3jedi/VariableChange/Control2Analysis/VarChaC2A.cc
+0 −1 src/fv3jedi/VariableChange/Control2Analysis/VarChaC2A.h
+0 −1 src/fv3jedi/VariableChange/Model2GeoVaLs/VarChaModel2GeoVaLs.cc
+0 −1 src/fv3jedi/VariableChange/Model2GeoVaLs/VarChaModel2GeoVaLs.h
+0 −1 src/fv3jedi/VariableChange/VariableChange.cc
+0 −1 src/fv3jedi/VariableChange/VertRemap/VarChaVertRemap.cc
+0 −1 src/fv3jedi/VariableChange/VertRemap/VarChaVertRemap.h
+6 −0 src/mains/CMakeLists.txt
+18 −0 src/mains/fv3jediProcessPerts.cc
+11 −0 test/CMakeLists.txt
+6 −2 test/testinput/4dvar_append_obs.yaml
+1 −0 test/testinput/forecast_ufs_1.yaml
+1 −0 test/testinput/forecast_ufs_2.yaml
+142 −0 test/testinput/processperts_gfs.yaml
+26 −26 test/testoutput/4dvar_append_obs.ref
+140 −0 test/testoutput/processperts_gfs.ref
2 changes: 1 addition & 1 deletion sorc/ioda
Submodule ioda updated 71 files
+1 −3 share/ioda/yaml/iodatest_odb_groundgps.yaml
+2 −5 share/ioda/yaml/odb_default_name_map.yaml
+2 −5 share/ioda/yaml/odb_gnssro_name_map.yaml
+2 −5 share/ioda/yaml/odb_gnssro_profile_name_map.yaml
+2 −5 share/ioda/yaml/odb_surface_name_map.yaml
+2 −5 share/ioda/yaml/odb_surfacesst_name_map.yaml
+372 −237 src/ObsSpace.cc
+23 −4 src/ObsSpace.h
+7 −1 src/ObsSpaceParameters.h
+1 −0 src/containers/ColumnMetadatum.cpp
+1 −0 src/containers/Constants.h
+3 −0 src/containers/Data.cpp
+3 −0 src/containers/Datum.cpp
+28 −0 src/containers/FrameCols.cpp
+7 −0 src/containers/FrameCols.h
+17 −0 src/containers/FrameColsData.cpp
+23 −0 src/containers/FrameRows.cpp
+7 −0 src/containers/FrameRows.h
+19 −0 src/containers/Functions.cpp
+30 −0 src/containers/FunctionsCols.cpp
+4 −0 src/containers/FunctionsRows.cpp
+11 −0 src/containers/IFrame.h
+1 −1 src/core/IodaUtils.cc
+7 −1 src/engines/ioda/CMakeLists.txt
+82 −0 src/engines/ioda/include/ioda/Engines/ODC/ComplementarityInfo.h
+0 −19 src/engines/ioda/include/ioda/Engines/ODC/DataFromSQL.h
+39 −0 src/engines/ioda/include/ioda/Engines/ODC/ObsGroupTransform.h
+1 −1 src/engines/ioda/include/ioda/Engines/ODC/ObsGroupTransformFactory.h
+89 −0 src/engines/ioda/include/ioda/Engines/ODC/OdbColumnUtils.h
+37 −0 src/engines/ioda/include/ioda/Engines/ODC/OdbConstants.h
+36 −0 src/engines/ioda/include/ioda/Engines/ODC/ParsedColumnExpression.h
+1 −1 src/engines/ioda/include/ioda/Engines/ODC/VariableCreator.h
+0 −27 src/engines/ioda/include/ioda/Layout.h
+0 −33 src/engines/ioda/include/ioda/Misc/MergeMethods.h
+0 −15 src/engines/ioda/include/ioda/Variables/Has_Variables.h
+120 −0 src/engines/ioda/src/ioda/Engines/ODC/ComplementarityInfo.cpp
+1 −1 src/engines/ioda/src/ioda/Engines/ODC/DataFromSQL.cpp
+182 −240 src/engines/ioda/src/ioda/Engines/ODC/ODC.cpp
+94 −1 src/engines/ioda/src/ioda/Engines/ODC/ObsGroupTransform.cpp
+141 −0 src/engines/ioda/src/ioda/Engines/ODC/OdbColumnUtils.cpp
+51 −0 src/engines/ioda/src/ioda/Engines/ODC/ParsedColumnExpression.cpp
+1 −0 src/engines/ioda/src/ioda/Engines/ODC/VariableCreator.cpp
+1 −0 src/engines/ioda/src/ioda/Engines/ODC/VariableReader.cpp
+0 −133 src/engines/ioda/src/ioda/Has_Variables.cpp
+0 −22 src/engines/ioda/src/ioda/Layouts/Layout.cpp
+1 −86 src/engines/ioda/src/ioda/Layouts/Layout_ObsGroup_ODB.cpp
+0 −19 src/engines/ioda/src/ioda/Layouts/Layout_ObsGroup_ODB.h
+0 −18 src/engines/ioda/src/ioda/Layouts/Layout_ObsGroup_ODB_Params.h
+1 −2 src/engines/test/ioda/CMakeLists.txt
+0 −28 src/engines/test/ioda/layouts/CMakeLists.txt
+0 −5 src/engines/test/ioda/layouts/odb_concat_name_map.yaml
+0 −5 src/engines/test/ioda/layouts/odb_matchinginputoutput_name_map.yaml
+0 −5 src/engines/test/ioda/layouts/odb_verticalreference_name_map.yaml
+0 −55 src/engines/test/ioda/layouts/test-layoutobsgroup.cpp
+0 −94 src/engines/test/ioda/layouts/test-layoutodb.cpp
+0 −5 src/engines/test/ioda/variables/CMakeLists.txt
+0 −13 src/engines/test/ioda/variables/hasvariables_stitching_map.yaml
+0 −155 src/engines/test/ioda/variables/test_stitchcomplementaryvariables.cpp
+121 −9 src/mains/filterObs/filterObs.hpp
+43 −9 test/CMakeLists.txt
+0 −24 test/ioda/ObsSpace.h
+1 −2 test/ioda/ObsSpaceAppend.h
+19 −0 test/mains/TestIodaObsSpaceOSDF.cc
+28 −0 test/testinput/iodatest_filter_obs_amsua.yaml
+27 −0 test/testinput/iodatest_filter_obs_sondes.yaml
+36 −0 test/testinput/iodatest_obsspace.yaml
+6 −6 test/testinput/iodatest_obsspace_append.yaml
+4 −4 test/testinput/iodatest_obsspace_append_mpi.yaml
+0 −119 test/testinput/iodatest_obsspace_dataframe_flag.yaml
+37 −0 test/testinput/iodatest_obsspace_out_odc.yaml
+35 −0 test/testinput/iodatest_obsspace_out_odc_readbackin.yaml
3 changes: 3 additions & 0 deletions test/gw-ci/create_exp.sh
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,9 @@ expyaml=${expyaml_ctest}
export pslot=${pslot_ctest}
export RUNTESTS=${exp_path}/${pslot}
export HPC_ACCOUNT="da-cpu"
if [[ $MACHINE_ID = wcoss2 ]]; then
export HPC_ACCOUNT="GFS-DEV"
fi

# Source the gw environement
source ${HOMEgfs}/workflow/gw_setup.sh
Expand Down
2 changes: 2 additions & 0 deletions ush/module-setup.sh
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,8 @@ elif [[ $MACHINE_ID = s4* ]] ; then

elif [[ $MACHINE_ID = wcoss2 ]]; then
# We are on WCOSS2
# Ignore default modules of the same version lower in the search path (req'd by spack-stack)
export LMOD_TMOD_FIND_FIRST=yes
module reset

elif [[ $MACHINE_ID = cheyenne* ]] ; then
Expand Down
57 changes: 37 additions & 20 deletions ush/soca/prep_ocean_obs.py
Original file line number Diff line number Diff line change
Expand Up @@ -138,39 +138,51 @@ def initialize(self):
interval = timedelta(hours=assim_freq * i)
window_cdates.append(cdate + interval)

input_files = prep_ocean_obs_utils.obs_fetch(self.task_config,
self.task_config,
obsprep_space,
window_cdates)
# fetch the obs files to DATA directory and get the list of files and cycles
fetched_files = prep_ocean_obs_utils.obs_fetch(self.task_config,
self.task_config,
obsprep_space,
window_cdates)

if not input_files:
if not fetched_files:
logger.warning(f"No files found for obs source {obtype}, skipping")
break # go to next observer in OBS_YAML

obsprep_space['input files'] = input_files
obsprep_space['window begin'] = self.window_begin
obsprep_space['window end'] = self.window_end
ioda_filename = f"{RUN}.t{cyc:02d}z.{obs_space_name}.{cdatestr}.nc4"
obsprep_space['output file'] = ioda_filename
ioda_config_file = obtype + '2ioda.yaml'
obsprep_space['conversion config file'] = ioda_config_file

# set up the config file for conversion to IODA for bufr and
# netcdf files respectively
if obsprep_space['type'] == 'bufr':
# create a pre-filled template file for the bufr2ioda converter,
# which will be overwritten for each input cycle
bufrconv_config = {
'RUN': RUN,
'current_cycle': cdate,
'DMPDIR': COMIN_OBS,
'COM_OBS': COMIN_OBS,
'OCEAN_BASIN_FILE': OCEAN_BASIN_FILE}
obsprep_space['conversion config file'] = ioda_config_file
bufr2iodapy = BUFR2IODA_PY_DIR + '/bufr2ioda_' + obtype + '.py'
bufr2iodapy = os.path.join(BUFR2IODA_PY_DIR, f'bufr2ioda_{obtype}.py')
obsprep_space['bufr2ioda converter'] = bufr2iodapy
tmpl_filename = 'bufr2ioda_' + obtype + '.yaml'
tmpl_filename = f"bufr2ioda_{obtype}.yaml"
bufrconv_template = os.path.join(BUFR2IODA_TMPL_DIR, tmpl_filename)
output_files = [] # files to save to COM directory
bufrconv_files = [] # files needed to populate the IODA converter config
# for each cycle of the retrieved obs bufr files...
for input_file, cycle in fetched_files:
cycletime = cycle[8:10]
ioda_filename = f"{RUN}.t{cycletime}z.{obs_space_name}.{cycle}.nc4"
output_files.append(ioda_filename)
bufrconv_files.append((cycle, input_file, ioda_filename))

obsprep_space['output file'] = output_files
obsprep_space['bufrconv files'] = bufrconv_files

try:
bufrconv = parse_j2yaml(bufrconv_template, bufrconv_config)
bufrconv.update(obsprep_space)
bufrconv.save(ioda_config_file)
except Exception as e:
logger.warning(f"An exeception {e} occured while trying to create BUFR2IODA config")
Expand All @@ -180,7 +192,10 @@ def initialize(self):
obsspaces_to_convert.append({"obs space": obsprep_space})

elif obsprep_space['type'] == 'nc':
obsprep_space['conversion config file'] = ioda_config_file

obsprep_space['input files'] = [f[0] for f in fetched_files]
ioda_filename = f"{RUN}.t{cyc:02d}z.{obs_space_name}.{cdatestr}.nc4"
obsprep_space['output file'] = [ioda_filename]
save_as_yaml(obsprep_space, ioda_config_file)

obsspaces_to_convert.append({"obs space": obsprep_space})
Expand All @@ -192,7 +207,7 @@ def initialize(self):
logger.critical("Ill-formed OBS_YAML or OBSPREP_YAML file, exiting")
raise

# yes, there is redundancy between the yamls fed to the ioda converter and here,
# yes, there is redundancy between the yamls fed to the ioda converters and here,
# this seems safer and easier than being selective about the fields
save_as_yaml({"observations": obsspaces_to_convert}, self.task_config.conversion_list_file)

Expand Down Expand Up @@ -258,16 +273,18 @@ def finalize(self):

obsspaces_to_save = YAMLFile(self.task_config.save_list_file)

for obsspace_to_save in obsspaces_to_save['observations']:

output_file = os.path.basename(obsspace_to_save['output file'])
conv_config_file = os.path.basename(obsspace_to_save['conversion config file'])
output_file_dest = os.path.join(COMOUT_OBS, output_file)
for obs_space in obsspaces_to_save['observations']:
files_to_save = []
conv_config_file = os.path.basename(obs_space['conversion config file'])
conv_config_file_dest = os.path.join(COMOUT_OBS, conv_config_file)
files_to_save.append([conv_config_file, conv_config_file_dest])

for output_file in obs_space['output file']:
output_file_dest = os.path.join(COMOUT_OBS, output_file)
files_to_save.append([output_file, output_file_dest])

try:
FileHandler({'copy': [[output_file, output_file_dest]]}).sync()
FileHandler({'copy': [[conv_config_file, conv_config_file_dest]]}).sync()
FileHandler({'copy': files_to_save}).sync()
except Exception as e:
logger.warning(f"An exeception {e} occured while trying to run gen_bufr_json")
except OSError:
Expand Down
Loading

0 comments on commit 3e4abb0

Please sign in to comment.