From 6e1f9fe90891b083db11eb6d178978b6b84b162a Mon Sep 17 00:00:00 2001 From: RussTreadon-NOAA Date: Sat, 30 Dec 2023 20:07:33 +0000 Subject: [PATCH 1/6] update soca scripts and tests to work with submodules --- scripts/exgdas_global_marine_analysis_prep.py | 24 +++++++++++-------- scripts/exglobal_prep_ocean_obs.py | 2 +- test/soca/gw/CMakeLists.txt | 8 +++---- test/soca/gw/prep.sh | 2 +- test/soca/gw/run_jjobs.yaml.test | 12 +++++----- test/soca/gw/static.sh | 4 ++-- 6 files changed, 28 insertions(+), 24 deletions(-) diff --git a/scripts/exgdas_global_marine_analysis_prep.py b/scripts/exgdas_global_marine_analysis_prep.py index b5e7117fc..93df813e4 100755 --- a/scripts/exgdas_global_marine_analysis_prep.py +++ b/scripts/exgdas_global_marine_analysis_prep.py @@ -85,9 +85,10 @@ def cice_hist2fms(input_filename, output_filename): """ Simple reformatting utility to allow soca/fms to read CICE's history """ + input_filename_real = os.path.realpath(input_filename) # open the CICE history file - ds = xr.open_dataset(input_filename) + ds = xr.open_dataset(input_filename_real) if 'aicen' in ds.variables and 'hicen' in ds.variables and 'hsnon' in ds.variables: logging.info(f"*** Already reformatted, skipping.") @@ -100,7 +101,8 @@ def cice_hist2fms(input_filename, output_filename): ds = ds.rename({'aice_h': 'aicen', 'hi_h': 'hicen', 'hs_h': 'hsnon'}) # Save the new netCDF file - ds.to_netcdf(output_filename, mode='w') + output_filename_real = os.path.realpath(output_filename) + ds.to_netcdf(output_filename_real, mode='w') def test_hist_date(histfile, ref_date): @@ -280,7 +282,8 @@ def find_clim_ens(input_date): # concatenate altimeters into one obs space # TODO (SAMG)temporary, move this into the obs procecing eventually -adt_obs = f"{os.getenv('COM_OBS')}/{RUN}.t{cyc}z.adt" +com_obs = os.path.realpath(f"{os.getenv('COM_OBS')}") +adt_obs = f"{com_obs}/{RUN}.t{cyc}z.adt" ufsda.soca_utils.concatenate_ioda(adt_obs, wildcard="*.nc4", output_suffix=f"_all.{PDY}{cyc}.nc4", clean=True) # get the list of observations @@ -293,7 +296,7 @@ def find_clim_ens(input_date): for obs_file in obs_files: logging.info(f"******* {obs_file}") obs_src = os.path.join(os.getenv('COM_OBS'), obs_file) - obs_dst = os.path.join(os.path.abspath(obs_in), obs_file) + obs_dst = os.path.join(os.path.realpath(obs_in), obs_file) if os.path.exists(obs_src): logging.info(f"******* fetching {obs_file}") obs_list.append([obs_src, obs_dst]) @@ -319,20 +322,21 @@ def find_clim_ens(input_date): for mem in range(1, nmem_ens+1): for domain in ['ocn', 'ice']: # TODO(Guillaume): make use and define ensemble COM in the j-job + ensroot = os.getenv('COM_OCEAN_HISTORY_PREV') ensdir = os.path.join(os.getenv('COM_OCEAN_HISTORY_PREV'), '..', '..', '..', '..', '..', f'enkf{RUN}.{PDY}', f'{gcyc}', f'mem{str(mem).zfill(3)}', 'model_data', longname[domain], 'history') - ensdir = os.path.normpath(ensdir) + ensdir_real = os.path.realpath(ensdir) f009 = f'enkfgdas.t{gcyc}z.{domain}f009.nc' - fname_in = os.path.abspath(os.path.join(ensdir, f009)) - fname_out = os.path.abspath(os.path.join(static_ens, domain+"."+str(mem)+".nc")) + fname_in = os.path.abspath(os.path.join(ensdir_real, f009)) + fname_out = os.path.realpath(os.path.join(static_ens, domain+"."+str(mem)+".nc")) ens_member_list.append([fname_in, fname_out]) FileHandler({'copy': ens_member_list}).sync() # reformat the cice history output for mem in range(1, nmem_ens+1): - cice_fname = os.path.abspath(os.path.join(static_ens, "ice."+str(mem)+".nc")) + cice_fname = os.path.realpath(os.path.join(static_ens, "ice."+str(mem)+".nc")) cice_hist2fms(cice_fname, cice_fname) else: logging.info("---------------- Stage offline ensemble members") @@ -357,8 +361,8 @@ def find_clim_ens(input_date): # copy yaml for grid generation logging.info(f"---------------- generate gridgen.yaml") -gridgen_yaml_src = os.path.abspath(os.path.join(gdas_home, 'parm', 'soca', 'gridgen', 'gridgen.yaml')) -gridgen_yaml_dst = os.path.abspath(os.path.join(stage_cfg['stage_dir'], 'gridgen.yaml')) +gridgen_yaml_src = os.path.realpath(os.path.join(gdas_home, 'parm', 'soca', 'gridgen', 'gridgen.yaml')) +gridgen_yaml_dst = os.path.realpath(os.path.join(stage_cfg['stage_dir'], 'gridgen.yaml')) FileHandler({'copy': [[gridgen_yaml_src, gridgen_yaml_dst]]}).sync() ################################################################################ diff --git a/scripts/exglobal_prep_ocean_obs.py b/scripts/exglobal_prep_ocean_obs.py index 1d9bd81f0..ac99ed0bd 100755 --- a/scripts/exglobal_prep_ocean_obs.py +++ b/scripts/exglobal_prep_ocean_obs.py @@ -4,7 +4,7 @@ from datetime import datetime, timedelta import logging import os -import prep_marine_obs +from soca import prep_marine_obs import subprocess from wxflow import YAMLFile, save_as_yaml, FileHandler diff --git a/test/soca/gw/CMakeLists.txt b/test/soca/gw/CMakeLists.txt index 68a5035a7..532c25217 100644 --- a/test/soca/gw/CMakeLists.txt +++ b/test/soca/gw/CMakeLists.txt @@ -27,7 +27,7 @@ add_test(NAME test_gdasapp_soca_concatioda WORKING_DIRECTORY ${PROJECT_BINARY_DIR}/test/soca/gw/concatioda) set_tests_properties(test_gdasapp_soca_concatioda PROPERTIES - ENVIRONMENT "PYTHONPATH=${PROJECT_BINARY_DIR}/ush:${PROJECT_BINARY_DIR}/lib/python${Python3_VERSION_MAJOR}.${Python3_VERSION_MINOR}:$ENV{PYTHONPATH}") + ENVIRONMENT "PYTHONPATH=${PROJECT_BINARY_DIR}/ush:${PROJECT_BINARY_DIR}/../lib/python${Python3_VERSION_MAJOR}.${Python3_VERSION_MINOR}:$ENV{PYTHONPATH}") # Clean-up add_test(NAME test_gdasapp_soca_run_clean @@ -78,7 +78,7 @@ foreach(jjob ${jjob_list}) WORKING_DIRECTORY ${PROJECT_BINARY_DIR}/test/soca/gw/testrun) set_tests_properties(${test_name} PROPERTIES - ENVIRONMENT "PYTHONPATH=${PROJECT_BINARY_DIR}/lib/python${Python3_VERSION_MAJOR}.${Python3_VERSION_MINOR}:$ENV{PYTHONPATH}") + ENVIRONMENT "PYTHONPATH=${PROJECT_SOURCE_DIR}/ush:${PROJECT_BINARY_DIR}/../lib/python${Python3_VERSION_MAJOR}.${Python3_VERSION_MINOR}:$ENV{PYTHONPATH}") set(setup "--skip") # Only run the setup of the first test, if not, it will hang @@ -89,7 +89,7 @@ endforeach() set(ctest_list "socahybridweights" "incr_handler" "ens_handler") foreach(ctest ${ctest_list}) set(TEST ${ctest}) - set(EXEC ${PROJECT_BINARY_DIR}/bin/gdas_${ctest}.x) + set(EXEC ${PROJECT_BINARY_DIR}/../bin/gdas_${ctest}.x) set(YAML ${PROJECT_SOURCE_DIR}/test/soca/testinput/${ctest}.yaml) configure_file(${PROJECT_SOURCE_DIR}/test/soca/gw/run_gdas_apps.yaml.test ${PROJECT_BINARY_DIR}/test/soca/gw/testrun/run_gdas_apps_${ctest}.yaml) @@ -102,5 +102,5 @@ foreach(ctest ${ctest_list}) set_tests_properties(${test_name} PROPERTIES - ENVIRONMENT "PYTHONPATH=${PROJECT_BINARY_DIR}/lib/python${Python3_VERSION_MAJOR}.${Python3_VERSION_MINOR}:$ENV{PYTHONPATH}") + ENVIRONMENT "PYTHONPATH=${PROJECT_BINARY_DIR}/../lib/python${Python3_VERSION_MAJOR}.${Python3_VERSION_MINOR}:$ENV{PYTHONPATH}") endforeach() diff --git a/test/soca/gw/prep.sh b/test/soca/gw/prep.sh index 2aeadf224..424881ef3 100755 --- a/test/soca/gw/prep.sh +++ b/test/soca/gw/prep.sh @@ -35,7 +35,7 @@ done for day in $(seq 1 2 9); do cp ${COM}/06/model_data/ocean/history/gdas.t06z.ocnf003.nc \ ${project_binary_dir}/soca_static/bkgerr/stddev/ocn.ensstddev.fc.2019-04-0${day}T00:00:00Z.PT0S.nc - cp ${project_source_dir}/soca/test/Data/72x35x25/ice.bkgerror.nc \ + cp ${project_source_dir}/sorc/soca/test/Data/72x35x25/ice.bkgerror.nc \ ${project_binary_dir}/soca_static/bkgerr/stddev/ice.ensstddev.fc.2019-04-0${day}T00:00:00Z.PT0S.nc done diff --git a/test/soca/gw/run_jjobs.yaml.test b/test/soca/gw/run_jjobs.yaml.test index 683ad9135..97a9f5b10 100644 --- a/test/soca/gw/run_jjobs.yaml.test +++ b/test/soca/gw/run_jjobs.yaml.test @@ -21,12 +21,12 @@ gw environement: assym_freq: 6 backgrounds: - COM_SRC: @HOMEgfs@/sorc/gdas.cd/build/test/soca/gw/COM + COM_SRC: @HOMEgfs@/sorc/gdas.cd/build/gdas/test/soca/gw/COM working directories: - ROTDIRS: @HOMEgfs@/sorc/gdas.cd/build/test/soca/gw/testrun/testjjobs/ROTDIRS - EXPDIRS: @HOMEgfs@/sorc/gdas.cd/build/test/soca/gw/testrun/testjjobs/experiments - STMP: @HOMEgfs@/sorc/gdas.cd/build/test/soca/gw/testrun/testjjobs + ROTDIRS: @HOMEgfs@/sorc/gdas.cd/build/gdas/test/soca/gw/testrun/testjjobs/ROTDIRS + EXPDIRS: @HOMEgfs@/sorc/gdas.cd/build/gdas/test/soca/gw/testrun/testjjobs/experiments + STMP: @HOMEgfs@/sorc/gdas.cd/build/gdas/test/soca/gw/testrun/testjjobs jedi: OOPS_TRACE: 1 @@ -46,10 +46,10 @@ setup_expt config: NMEM_ENS: "4" DOHYBVAR: "YES" ocnanal: - SOCA_INPUT_FIX_DIR: @HOMEgfs@/sorc/gdas.cd/build/soca_static + SOCA_INPUT_FIX_DIR: @HOMEgfs@/sorc/gdas.cd/build/gdas/soca_static CASE_ANL: C48 SOCA_OBS_LIST: @HOMEgfs@/sorc/gdas.cd/parm/soca/obs/obs_list_small.yaml - COMIN_OBS: @HOMEgfs@/sorc/gdas.cd/build/test/soca/obs/r2d2-shared + COMIN_OBS: @HOMEgfs@/sorc/gdas.cd/build/gdas/test/soca/obs/r2d2-shared SOCA_NINNER: 1 R2D2_OBS_SRC: gdasapp R2D2_OBS_DUMP: soca diff --git a/test/soca/gw/static.sh b/test/soca/gw/static.sh index 5fc615a85..05407ea92 100755 --- a/test/soca/gw/static.sh +++ b/test/soca/gw/static.sh @@ -10,12 +10,12 @@ mkdir -p ${soca_static}/INPUT mkdir -p ${soca_static}/bump mkdir -p ${soca_static}/bkgerr/stddev -lowres=${project_source_dir}/soca/test/Data +lowres=${project_source_dir}/sorc/soca/test/Data cp -L ${lowres}/workdir/{diag_table,field_table} ${soca_static} cp -L ${project_source_dir}/test/soca/fix/MOM_input ${soca_static} cp -L ${lowres}/{fields_metadata.yml,godas_sst_bgerr.nc,rossrad.dat} ${soca_static} mv ${soca_static}/fields_metadata.yml ${soca_static}/fields_metadata.yaml -cp -L ${project_source_dir}/soca/test/testinput/obsop_name_map.yml ${soca_static}/obsop_name_map.yaml +cp -L ${project_source_dir}/sorc/soca/test/testinput/obsop_name_map.yml ${soca_static}/obsop_name_map.yaml cp -L ${lowres}/72x35x25/input.nml ${soca_static}/inputnml cp -L ${lowres}/72x35x25/INPUT/{hycom1_25.nc,ocean_mosaic.nc,grid_spec.nc,layer_coord25.nc,ocean_hgrid.nc,ocean_topog.nc} ${soca_static}/INPUT From 8667782726cf4d3161750cc97567a96e1ccbf24d Mon Sep 17 00:00:00 2001 From: RussTreadon-NOAA Date: Sat, 30 Dec 2023 20:38:37 +0000 Subject: [PATCH 2/6] update submodule hashes for select jedi repositories --- sorc/fv3-jedi | 2 +- sorc/ioda | 2 +- sorc/iodaconv | 2 +- sorc/oops | 2 +- sorc/saber | 2 +- sorc/soca | 2 +- sorc/ufo | 2 +- sorc/vader | 2 +- 8 files changed, 8 insertions(+), 8 deletions(-) diff --git a/sorc/fv3-jedi b/sorc/fv3-jedi index 1ccb1c7bc..6b827aa17 160000 --- a/sorc/fv3-jedi +++ b/sorc/fv3-jedi @@ -1 +1 @@ -Subproject commit 1ccb1c7bcc934c0497259d258aacb0c0df215fbf +Subproject commit 6b827aa17a111c81d6c3a530990e62c7b01ecf50 diff --git a/sorc/ioda b/sorc/ioda index 3194c749f..4a3e146ef 160000 --- a/sorc/ioda +++ b/sorc/ioda @@ -1 +1 @@ -Subproject commit 3194c749f999bfd26319792042350327a444961c +Subproject commit 4a3e146ef32152d59d1c562044cc5e7aeeb31f51 diff --git a/sorc/iodaconv b/sorc/iodaconv index c4f173139..cf196c1d4 160000 --- a/sorc/iodaconv +++ b/sorc/iodaconv @@ -1 +1 @@ -Subproject commit c4f173139d2c159ac3474c519a87b445295fd2c4 +Subproject commit cf196c1d4e2304068520a0eb75798175d30a5ed4 diff --git a/sorc/oops b/sorc/oops index 6d4a414f4..c6af36566 160000 --- a/sorc/oops +++ b/sorc/oops @@ -1 +1 @@ -Subproject commit 6d4a414f4017d1ad0df3be90d8a40d095a0556b6 +Subproject commit c6af36566bfa034f8de2c27b3400f3c99d414faf diff --git a/sorc/saber b/sorc/saber index 426fbb003..529149c58 160000 --- a/sorc/saber +++ b/sorc/saber @@ -1 +1 @@ -Subproject commit 426fbb003c8fb806dd7ea6c30c32fdfa438a63b4 +Subproject commit 529149c58e6cbdfddb969bd4c1e0fe35493d19df diff --git a/sorc/soca b/sorc/soca index 15eab9640..9fb50decd 160000 --- a/sorc/soca +++ b/sorc/soca @@ -1 +1 @@ -Subproject commit 15eab96405cd59c12b659d4db76ce239937ba52f +Subproject commit 9fb50decd5fd77bffcd4eaa2e087aaa9b259f73e diff --git a/sorc/ufo b/sorc/ufo index c042c2fc4..c54b6a8e4 160000 --- a/sorc/ufo +++ b/sorc/ufo @@ -1 +1 @@ -Subproject commit c042c2fc473edb719b942971dc4ed694057f5226 +Subproject commit c54b6a8e45f10e6dcfd2bb267b2f3ca1802298c4 diff --git a/sorc/vader b/sorc/vader index 099cb5db5..679d2712c 160000 --- a/sorc/vader +++ b/sorc/vader @@ -1 +1 @@ -Subproject commit 099cb5db5a2a16049ef959a4feef463fe23dee7e +Subproject commit 679d2712c437f6f59810464759a998b986471b5a From 0a604a1ed12e1c3d89348200e169c7eba112fc91 Mon Sep 17 00:00:00 2001 From: RussTreadon-NOAA Date: Sun, 31 Dec 2023 15:05:46 +0000 Subject: [PATCH 3/6] use realpath to form comout and history paths in marine vrfy script --- scripts/exgdas_global_marine_analysis_vrfy.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/scripts/exgdas_global_marine_analysis_vrfy.py b/scripts/exgdas_global_marine_analysis_vrfy.py index 6179c00e7..11a9694d9 100755 --- a/scripts/exgdas_global_marine_analysis_vrfy.py +++ b/scripts/exgdas_global_marine_analysis_vrfy.py @@ -26,9 +26,9 @@ import subprocess from datetime import datetime, timedelta -comout = os.getenv('COM_OCEAN_ANALYSIS') -com_ice_history = os.getenv('COM_ICE_HISTORY_PREV') -com_ocean_history = os.getenv('COM_OCEAN_HISTORY_PREV') +comout = os.path.realpath(os.getenv('COM_OCEAN_ANALYSIS')) +com_ice_history = os.path.realpath(os.getenv('COM_ICE_HISTORY_PREV')) +com_ocean_history = os.path.realpath(os.getenv('COM_OCEAN_HISTORY_PREV')) cyc = os.getenv('cyc') RUN = os.getenv('RUN') gcyc = str((int(cyc) - 6) % 24).zfill(2) From bd5701221379c6d55a5197b633289e7280c47fa1 Mon Sep 17 00:00:00 2001 From: RussTreadon-NOAA <26926959+RussTreadon-NOAA@users.noreply.github.com> Date: Thu, 4 Jan 2024 16:22:51 -0500 Subject: [PATCH 4/6] make bufr2ioda_subpfl_argo_profiles.py an executable file (#795) @emilyhcliu found that permission restrictions on `bufr2ioda_subpfl_argo_profiles.py` prevent it from being executed. [`feature/chmod`](https://github.com/NOAA-EMC/GDASApp/tree/feature/chmod) was created and the file permissions changed so that `bufr2ioda_subpfl_argo_profiles.py` is executable. Fixes #788 --- ush/ioda/bufr2ioda/bufr2ioda_subpfl_argo_profiles.py | 0 1 file changed, 0 insertions(+), 0 deletions(-) mode change 100644 => 100755 ush/ioda/bufr2ioda/bufr2ioda_subpfl_argo_profiles.py diff --git a/ush/ioda/bufr2ioda/bufr2ioda_subpfl_argo_profiles.py b/ush/ioda/bufr2ioda/bufr2ioda_subpfl_argo_profiles.py old mode 100644 new mode 100755 From a4a3f459f0e7d595e1258d091e7d96fda2c5fcbe Mon Sep 17 00:00:00 2001 From: Jiarui Dong Date: Fri, 5 Jan 2024 14:10:30 -0500 Subject: [PATCH 5/6] Manage the YAML files into the explicit filter ordering. (#790) - The UFO filters are rearranged by using the explicit filter ordering with `obs pre filters`, `obs prior filters` and `obs post filters` options. - Add `Temporal Thinning filter` into the `obs post filters` section and and arrange it after the `Background Check filter` and before the `Buddy check filter`. - Rename the IMS IODA file name and copy it into the `rundir/obs` directory for the late use in the snow analysis in the global workflow (https://github.com/NOAA-EMC/global-workflow/pull/2033). Co-authored-by: Cory Martin --- parm/land/obs/config/adpsfc_snow.yaml | 37 +++++++++++++---------- parm/land/obs/config/snocvr_snow.yaml | 43 ++++++++++++++------------- parm/land/prep/prep_ims.yaml | 2 +- 3 files changed, 45 insertions(+), 37 deletions(-) diff --git a/parm/land/obs/config/adpsfc_snow.yaml b/parm/land/obs/config/adpsfc_snow.yaml index a7c08eb74..d1403bad5 100644 --- a/parm/land/obs/config/adpsfc_snow.yaml +++ b/parm/land/obs/config/adpsfc_snow.yaml @@ -26,7 +26,22 @@ obs localizations: max nobs: 50 - localization method: Vertical Brasnett vertical lengthscale: 700 -obs filters: +obs pre filters: + - filter: Perform Action + filter variables: + - name: totalSnowDepth + action: + name: assign error + error parameter: 40.0 + - filter: Variable Assignment + assignments: + - name: GrossErrorProbability/totalSnowDepth + type: float + value: 0.02 + - name: BkgError/totalSnowDepth_background_error + type: float + value: 30.0 +obs prior filters: - filter: Bounds Check filter variables: - name: totalSnowDepth @@ -57,12 +72,18 @@ obs filters: name: MetaData/stationIdentification is_in: [71120,71397,71621,71727,71816] size where true: 5 +obs post filters: - filter: Background Check # gross error check filter variables: - name: totalSnowDepth threshold: 6.25 action: name: reject + - filter: Temporal Thinning + min_spacing: '{{ LAND_WINDOW_LENGTH }}' + seed_time: '{{ current_cycle | to_isotime }}' + category_variable: + name: MetaData/stationIdentification - filter: Met Office Buddy Check filter variables: - name: totalSnowDepth @@ -86,18 +107,4 @@ obs filters: damping_factor_1: 1.0 damping_factor_2: 1.0 background_error_group: BkgError - - filter: Perform Action - filter variables: - - name: totalSnowDepth - action: - name: assign error - error parameter: 40.0 - - filter: Variable Assignment - assignments: - - name: GrossErrorProbability/totalSnowDepth - type: float - value: 0.02 - - name: BkgError/totalSnowDepth_background_error - type: float - value: 30.0 diff --git a/parm/land/obs/config/snocvr_snow.yaml b/parm/land/obs/config/snocvr_snow.yaml index 3dade008b..9d25f9302 100644 --- a/parm/land/obs/config/snocvr_snow.yaml +++ b/parm/land/obs/config/snocvr_snow.yaml @@ -26,7 +26,22 @@ obs localizations: max nobs: 50 - localization method: Vertical Brasnett vertical lengthscale: 700 -obs filters: +obs pre filters: + - filter: Perform Action + filter variables: + - name: totalSnowDepth + action: + name: assign error + error parameter: 40.0 + - filter: Variable Assignment + assignments: + - name: GrossErrorProbability/totalSnowDepth + type: float + value: 0.02 + - name: BkgError/totalSnowDepth_background_error + type: float + value: 30.0 +obs prior filters: - filter: Bounds Check filter variables: - name: totalSnowDepth @@ -51,17 +66,18 @@ obs filters: name: GeoVaLs/vtype minvalue: 14.5 maxvalue: 15.5 - - filter: Temporal Thinning - min_spacing: '{{ LAND_WINDOW_LENGTH }}' - seed_time: '{{ current_cycle | to_isotime }}' - category_variable: - name: MetaData/stationIdentification +obs post filters: - filter: Background Check # gross error check filter variables: - name: totalSnowDepth threshold: 6.25 action: name: reject + - filter: Temporal Thinning + min_spacing: '{{ LAND_WINDOW_LENGTH }}' + seed_time: '{{ current_cycle | to_isotime }}' + category_variable: + name: MetaData/stationIdentification - filter: Met Office Buddy Check filter variables: - name: totalSnowDepth @@ -85,18 +101,3 @@ obs filters: damping_factor_1: 1.0 damping_factor_2: 1.0 background_error_group: BkgError - - filter: Perform Action - filter variables: - - name: totalSnowDepth - action: - name: assign error - error parameter: 40.0 - - filter: Variable Assignment - assignments: - - name: GrossErrorProbability/totalSnowDepth - type: float - value: 0.02 - - name: BkgError/totalSnowDepth_background_error - type: float - value: 30.0 - diff --git a/parm/land/prep/prep_ims.yaml b/parm/land/prep/prep_ims.yaml index 23b0feb38..d37d58a44 100644 --- a/parm/land/prep/prep_ims.yaml +++ b/parm/land/prep/prep_ims.yaml @@ -6,5 +6,5 @@ calcfims: - [$(COM_OBS)/$(OPREFIX)IMS4km_to_FV3_mapping.$(CASE)_oro_data.nc, $(DATA)/obs/IMS4km_to_FV3_mapping.$(CASE)_oro_data.nc] ims2ioda: copy: - - [$(DATA)/ims_snow_{{ current_cycle | to_YMDH }}.nc4, $(COM_OBS)/$(OPREFIX)ims_snow.nc4] + - [$(DATA)/ims_snow_{{ current_cycle | to_YMDH }}.nc4, $(DATA)/obs/$(OPREFIX)ims_snow.nc4] From 69b1eb49ffa6738b4772d34e68d1f0cb05b1ce1e Mon Sep 17 00:00:00 2001 From: Jiarui Dong Date: Fri, 5 Jan 2024 14:21:17 -0500 Subject: [PATCH 6/6] Feature/landda ci (#839) This PR is prepared for https://github.com/NOAA-EMC/global-workflow/pull/2199 --- parm/land/obs/config/adpsfc_snow.yaml | 2 +- parm/land/obs/config/snocvr_snow.yaml | 2 +- parm/land/prep/prep_gts.yaml | 3 --- test/testinput/bufr_adpsfc_snow.yaml | 6 +++--- test/testinput/bufr_snocvr_snow.yaml | 6 +++--- 5 files changed, 8 insertions(+), 11 deletions(-) diff --git a/parm/land/obs/config/adpsfc_snow.yaml b/parm/land/obs/config/adpsfc_snow.yaml index d1403bad5..963ed2e68 100644 --- a/parm/land/obs/config/adpsfc_snow.yaml +++ b/parm/land/obs/config/adpsfc_snow.yaml @@ -52,7 +52,7 @@ obs prior filters: - filter: Domain Check where: - variable: - name: MetaData/height + name: MetaData/stationElevation minvalue: -999.0 - filter: Domain Check # land only where: diff --git a/parm/land/obs/config/snocvr_snow.yaml b/parm/land/obs/config/snocvr_snow.yaml index 9d25f9302..12f20dde7 100644 --- a/parm/land/obs/config/snocvr_snow.yaml +++ b/parm/land/obs/config/snocvr_snow.yaml @@ -52,7 +52,7 @@ obs prior filters: - filter: Domain Check where: - variable: - name: MetaData/height + name: MetaData/stationElevation minvalue: -999.0 - filter: Domain Check # land only where: diff --git a/parm/land/prep/prep_gts.yaml b/parm/land/prep/prep_gts.yaml index 0f138e8e2..5d96fefda 100644 --- a/parm/land/prep/prep_gts.yaml +++ b/parm/land/prep/prep_gts.yaml @@ -3,11 +3,8 @@ gtsbufr: - $(DATA)/obs copy: - [{{ COM_OBS }}/{{ OPREFIX }}adpsfc.tm00.bufr_d, {{ DATA }}/obs/] - - [{{ COM_OBS }}/{{ OPREFIX }}snocvr.tm00.bufr_d, {{ DATA }}/obs/] gtsioda: copy: - [{{ DATA }}/{{ OPREFIX }}adpsfc_snow.nc4, {{ COM_OBS }}/{{ OPREFIX }}adpsfc_snow.nc4] - - [{{ DATA }}/{{ OPREFIX }}snocvr_snow.nc4, {{ COM_OBS }}/{{ OPREFIX }}snocvr_snow.nc4] bufr2ioda: adpsfc: {{ HOMEgfs }}/sorc/gdas.cd/test/testinput/bufr_adpsfc_snow.yaml - snocvr: {{ HOMEgfs }}/sorc/gdas.cd/test/testinput/bufr_snocvr_snow.yaml diff --git a/test/testinput/bufr_adpsfc_snow.yaml b/test/testinput/bufr_adpsfc_snow.yaml index 250e0fd62..32a1950fa 100644 --- a/test/testinput/bufr_adpsfc_snow.yaml +++ b/test/testinput/bufr_adpsfc_snow.yaml @@ -24,7 +24,7 @@ observations: stationIdentification: query: "*/RPID" - height: + stationElevation: query: "[*/SELV, */HSMSL]" # ObsValue @@ -64,9 +64,9 @@ observations: units: "degree_east" range: [-180, 180] - - name: "MetaData/height" + - name: "MetaData/stationElevation" coordinates: "longitude latitude" - source: variables/height + source: variables/stationElevation longName: "Height of Station" - name: "MetaData/stationIdentification" diff --git a/test/testinput/bufr_snocvr_snow.yaml b/test/testinput/bufr_snocvr_snow.yaml index 5c2c803e2..3ffe00c8f 100644 --- a/test/testinput/bufr_snocvr_snow.yaml +++ b/test/testinput/bufr_snocvr_snow.yaml @@ -24,7 +24,7 @@ observations: stationIdentification: query: "*/WGOSLID" - height: + stationElevation: query: "[*/SELV, */HSMSL]" # ObsValue @@ -64,9 +64,9 @@ observations: units: "degree_east" range: [-180, 180] - - name: "MetaData/height" + - name: "MetaData/stationElevation" coordinates: "longitude latitude" - source: variables/height + source: variables/stationElevation longName: "Height of Station" - name: "MetaData/stationIdentification"