From 41ee2a276e2688d19eef7d3dcb9567e3042f6843 Mon Sep 17 00:00:00 2001 From: Dan Holdaway <27729500+danholdaway@users.noreply.github.com> Date: Thu, 20 Jun 2024 13:13:57 -0400 Subject: [PATCH] Companion PR to NOAA-EMC/jcb/pull/7 (#15) - Rename the atmosphere YAML files to be `atmosphere_.yaml.j2` - Change all the keys associated with the atmosphere to be `{{atmosphere_}}` - Add the marine YAML files. --------- Co-authored-by: danholdaway Co-authored-by: RussTreadon-NOAA <26926959+RussTreadon-NOAA@users.noreply.github.com> --- .../atmosphere/fv3jedi_fv3inc_lgetkf.yaml.j2 | 36 +- .../fv3jedi_fv3inc_variational.yaml.j2 | 32 +- algorithm/marine/socaincr2mom6.yaml | 28 + ...geometry.yaml.j2 => aero_geometry.yaml.j2} | 0 model/atmosphere/3dvar_outer_loop_1.yaml.j2 | 17 - model/atmosphere/3dvar_outer_loop_2.yaml.j2 | 17 - .../atmosphere_3dvar_outer_loop_1.yaml.j2 | 17 + .../atmosphere_3dvar_outer_loop_2.yaml.j2 | 17 + ....yaml.j2 => atmosphere_background.yaml.j2} | 4 +- ...=> atmosphere_background_ensemble.yaml.j2} | 10 +- ...background_error_hybrid_bump_bump.yaml.j2} | 52 +- ...ckground_error_hybrid_gsibec_bump.yaml.j2} | 42 +- ...here_background_error_static_bump.yaml.j2} | 32 +- ...ere_background_error_static_gsibec.yaml.j2 | 25 + ...e_background_error_static_identity.yaml.j2 | 2 + ...phere_final_increment_cubed_sphere.yaml.j2 | 18 + ...tmosphere_final_increment_gaussian.yaml.j2 | 17 + .../atmosphere_geometry_background.yaml.j2 | 11 + ...aml.j2 => atmosphere_model_pseudo.yaml.j2} | 4 +- ..._ensemble_increments_cubed_sphere.yaml.j2} | 0 ...utput_ensemble_increments_gaussian.yaml.j2 | 3 + ...mosphere_posterior_output_gaussian.yaml.j2 | 3 + .../background_error_static_gsibec.yaml.j2 | 25 - .../background_error_static_identity.yaml.j2 | 2 - .../final_increment_cubed_sphere.yaml.j2 | 18 - .../final_increment_gaussian.yaml.j2 | 17 - model/atmosphere/geometry_background.yaml.j2 | 11 - ...utput_ensemble_increments_gaussian.yaml.j2 | 3 - .../posterior_output_gaussian.yaml.j2 | 3 - .../marine/marine_3dfgat_outer_loop_1.yaml.j2 | 7 + .../marine/marine_3dvar_outer_loop_1.yaml.j2 | 7 + model/marine/marine_background.yaml.j2 | 6 + ...d_error_hybrid_diffusion_diffusion.yaml.j2 | 92 +++ ..._background_error_static_diffusion.yaml.j2 | 42 ++ model/marine/marine_final_increment.yaml.j2 | 9 + .../marine/marine_geometry_background.yaml.j2 | 2 + model/marine/marine_model_pseudo.yaml.j2 | 10 + model/marine/marine_output.yaml.j2 | 4 + model/snow/geometry.yaml.j2 | 0 .../snow_geometry.yaml.j2} | 0 .../atmosphere-lgetkf/amsua_n19.yaml.j2 | 16 +- .../ascatw.ascat_metop-b.yaml.j2 | 8 +- .../atmosphere-lgetkf/conv_ps.yaml.j2 | 22 +- observations/atmosphere-lgetkf/gnssro.yaml.j2 | 10 +- .../satwnd.abi_goes-16.yaml.j2 | 24 +- .../atmosphere-lgetkf/satwnd.ahi_h8.yaml.j2 | 18 +- observations/atmosphere-lgetkf/sondes.yaml.j2 | 6 +- observations/atmosphere/aircraft.yaml.j2 | 6 +- observations/atmosphere/amsua_n19.yaml.j2 | 16 +- .../atmosphere/ascatw.ascat_metop-b.yaml.j2 | 6 +- observations/atmosphere/atms_n20.yaml.j2 | 16 +- observations/atmosphere/atms_npp.yaml.j2 | 16 +- observations/atmosphere/conv_ps.yaml.j2 | 6 +- observations/atmosphere/cris-fsr_n20.yaml.j2 | 16 +- observations/atmosphere/cris-fsr_npp.yaml.j2 | 16 +- observations/atmosphere/gnssro.yaml.j2 | 6 +- observations/atmosphere/iasi_metop-a.yaml.j2 | 16 +- observations/atmosphere/iasi_metop-b.yaml.j2 | 16 +- observations/atmosphere/omi_aura.yaml.j2 | 6 +- observations/atmosphere/ompsnp_npp.yaml.j2 | 6 +- observations/atmosphere/ompstc_npp.yaml.j2 | 6 +- .../atmosphere/satwnd.abi_goes-16.yaml.j2 | 6 +- .../atmosphere/satwnd.abi_goes-17.yaml.j2 | 6 +- observations/atmosphere/satwnd.ahi_h8.yaml.j2 | 6 +- .../atmosphere/satwnd.avhrr_n15.yaml.j2 | 4 +- .../atmosphere/satwnd.avhrr_n18.yaml.j2 | 4 +- .../atmosphere/satwnd.avhrr_n19.yaml.j2 | 4 +- .../atmosphere/satwnd.leogeo_multi.yaml.j2 | 4 +- .../atmosphere/satwnd.modis_aqua.yaml.j2 | 4 +- .../atmosphere/satwnd.modis_terra.yaml.j2 | 4 +- .../atmosphere/satwnd.seviri_m11.yaml.j2 | 6 +- .../atmosphere/satwnd.seviri_m8.yaml.j2 | 6 +- .../atmosphere/satwnd.viirs_n20.yaml.j2 | 4 +- .../atmosphere/satwnd.viirs_npp.yaml.j2 | 4 +- .../atmosphere/scatwind_ascat_metop-a.yaml.j2 | 6 +- observations/atmosphere/sfc.yaml.j2 | 6 +- observations/atmosphere/sfcship.yaml.j2 | 6 +- observations/atmosphere/sondes.yaml.j2 | 6 +- observations/atmosphere/ssmis_f17.yaml.j2 | 12 +- observations/atmosphere/ssmis_f18.yaml.j2 | 12 +- observations/marine/adt_rads_all.yaml.j2 | 52 ++ observations/marine/icec_amsr2_north.yaml.j2 | 45 ++ observations/marine/icec_amsr2_south.yaml.j2 | 45 ++ .../marine/insitu_profile_argo.yaml.j2 | 603 ++++++++++++++++++ .../marine/insitu_profile_bathy.yaml.j2 | 17 + .../marine/insitu_profile_dbuoy.yaml.j2 | 22 + .../marine/insitu_profile_dbuoyb.yaml.j2 | 22 + .../marine/insitu_profile_glider.yaml.j2 | 22 + .../insitu_profile_marinemammal.yaml.j2 | 22 + .../marine/insitu_profile_mbuoy.yaml.j2 | 22 + .../marine/insitu_profile_mbuoyb.yaml.j2 | 22 + .../marine/insitu_profile_tesac.yaml.j2 | 20 + .../insitu_profile_tesac_salinity.yaml.j2 | 22 + .../marine/insitu_profile_xbtctd.yaml.j2 | 22 + .../marine/insitu_surface_altkob.yaml.j2 | 18 + .../marine/insitu_surface_trkob.yaml.j2 | 18 + .../insitu_surface_trkob_salinity.yaml.j2 | 18 + observations/marine/sst_abi_g16_l3c.yaml.j2 | 56 ++ observations/marine/sst_abi_g17_l3c.yaml.j2 | 56 ++ observations/marine/sst_ahi_h08_l3c.yaml.j2 | 56 ++ observations/marine/sst_avhrr_ma_l3u.yaml.j2 | 56 ++ observations/marine/sst_avhrr_mb_l3u.yaml.j2 | 56 ++ observations/marine/sst_avhrr_mc_l3u.yaml.j2 | 56 ++ observations/marine/sst_viirs_n20_l3u.yaml.j2 | 56 ++ observations/marine/sst_viirs_npp_l3u.yaml.j2 | 56 ++ 105 files changed, 2071 insertions(+), 402 deletions(-) create mode 100644 algorithm/marine/socaincr2mom6.yaml rename model/aero/{geometry.yaml.j2 => aero_geometry.yaml.j2} (100%) delete mode 100644 model/atmosphere/3dvar_outer_loop_1.yaml.j2 delete mode 100644 model/atmosphere/3dvar_outer_loop_2.yaml.j2 create mode 100644 model/atmosphere/atmosphere_3dvar_outer_loop_1.yaml.j2 create mode 100644 model/atmosphere/atmosphere_3dvar_outer_loop_2.yaml.j2 rename model/atmosphere/{background.yaml.j2 => atmosphere_background.yaml.j2} (84%) rename model/atmosphere/{background_ensemble.yaml.j2 => atmosphere_background_ensemble.yaml.j2} (67%) rename model/atmosphere/{background_error_hybrid_bump_bump.yaml.j2 => atmosphere_background_error_hybrid_bump_bump.yaml.j2} (66%) rename model/atmosphere/{background_error_hybrid_gsibec_bump.yaml.j2 => atmosphere_background_error_hybrid_gsibec_bump.yaml.j2} (77%) rename model/atmosphere/{background_error_static_bump.yaml.j2 => atmosphere_background_error_static_bump.yaml.j2} (68%) create mode 100644 model/atmosphere/atmosphere_background_error_static_gsibec.yaml.j2 create mode 100644 model/atmosphere/atmosphere_background_error_static_identity.yaml.j2 create mode 100644 model/atmosphere/atmosphere_final_increment_cubed_sphere.yaml.j2 create mode 100644 model/atmosphere/atmosphere_final_increment_gaussian.yaml.j2 create mode 100644 model/atmosphere/atmosphere_geometry_background.yaml.j2 rename model/atmosphere/{model_pseudo.yaml.j2 => atmosphere_model_pseudo.yaml.j2} (86%) rename model/atmosphere/{output_ensemble_increments_cubed_sphere.yaml.j2 => atmosphere_output_ensemble_increments_cubed_sphere.yaml.j2} (100%) create mode 100644 model/atmosphere/atmosphere_output_ensemble_increments_gaussian.yaml.j2 create mode 100644 model/atmosphere/atmosphere_posterior_output_gaussian.yaml.j2 delete mode 100644 model/atmosphere/background_error_static_gsibec.yaml.j2 delete mode 100644 model/atmosphere/background_error_static_identity.yaml.j2 delete mode 100644 model/atmosphere/final_increment_cubed_sphere.yaml.j2 delete mode 100644 model/atmosphere/final_increment_gaussian.yaml.j2 delete mode 100644 model/atmosphere/geometry_background.yaml.j2 delete mode 100644 model/atmosphere/output_ensemble_increments_gaussian.yaml.j2 delete mode 100644 model/atmosphere/posterior_output_gaussian.yaml.j2 create mode 100644 model/marine/marine_3dfgat_outer_loop_1.yaml.j2 create mode 100644 model/marine/marine_3dvar_outer_loop_1.yaml.j2 create mode 100644 model/marine/marine_background.yaml.j2 create mode 100644 model/marine/marine_background_error_hybrid_diffusion_diffusion.yaml.j2 create mode 100644 model/marine/marine_background_error_static_diffusion.yaml.j2 create mode 100644 model/marine/marine_final_increment.yaml.j2 create mode 100644 model/marine/marine_geometry_background.yaml.j2 create mode 100644 model/marine/marine_model_pseudo.yaml.j2 create mode 100644 model/marine/marine_output.yaml.j2 delete mode 100644 model/snow/geometry.yaml.j2 rename model/{marine/geometry.yaml.j2 => snow/snow_geometry.yaml.j2} (100%) create mode 100644 observations/marine/adt_rads_all.yaml.j2 create mode 100644 observations/marine/icec_amsr2_north.yaml.j2 create mode 100644 observations/marine/icec_amsr2_south.yaml.j2 create mode 100644 observations/marine/insitu_profile_argo.yaml.j2 create mode 100644 observations/marine/insitu_profile_bathy.yaml.j2 create mode 100644 observations/marine/insitu_profile_dbuoy.yaml.j2 create mode 100644 observations/marine/insitu_profile_dbuoyb.yaml.j2 create mode 100644 observations/marine/insitu_profile_glider.yaml.j2 create mode 100644 observations/marine/insitu_profile_marinemammal.yaml.j2 create mode 100644 observations/marine/insitu_profile_mbuoy.yaml.j2 create mode 100644 observations/marine/insitu_profile_mbuoyb.yaml.j2 create mode 100644 observations/marine/insitu_profile_tesac.yaml.j2 create mode 100644 observations/marine/insitu_profile_tesac_salinity.yaml.j2 create mode 100644 observations/marine/insitu_profile_xbtctd.yaml.j2 create mode 100644 observations/marine/insitu_surface_altkob.yaml.j2 create mode 100644 observations/marine/insitu_surface_trkob.yaml.j2 create mode 100644 observations/marine/insitu_surface_trkob_salinity.yaml.j2 create mode 100644 observations/marine/sst_abi_g16_l3c.yaml.j2 create mode 100644 observations/marine/sst_abi_g17_l3c.yaml.j2 create mode 100644 observations/marine/sst_ahi_h08_l3c.yaml.j2 create mode 100644 observations/marine/sst_avhrr_ma_l3u.yaml.j2 create mode 100644 observations/marine/sst_avhrr_mb_l3u.yaml.j2 create mode 100644 observations/marine/sst_avhrr_mc_l3u.yaml.j2 create mode 100644 observations/marine/sst_viirs_n20_l3u.yaml.j2 create mode 100644 observations/marine/sst_viirs_npp_l3u.yaml.j2 diff --git a/algorithm/atmosphere/fv3jedi_fv3inc_lgetkf.yaml.j2 b/algorithm/atmosphere/fv3jedi_fv3inc_lgetkf.yaml.j2 index eb94c89..c7d24ca 100644 --- a/algorithm/atmosphere/fv3jedi_fv3inc_lgetkf.yaml.j2 +++ b/algorithm/atmosphere/fv3jedi_fv3inc_lgetkf.yaml.j2 @@ -10,11 +10,11 @@ background geometry: field table filename: ./fv3jedi/field_table akbk: ./fv3jedi/akbk.nc4 layout: - - {{ layout_x }} - - {{ layout_y }} - npx: {{ npx_ges }} - npy: {{ npy_ges }} - npz: {{ npz_ges }} + - {{ atmosphere_layout_x }} + - {{ atmosphere_layout_y }} + npx: {{ atmosphere_npx_ges }} + npy: {{ atmosphere_npy_ges }} + npz: {{ atmosphere_npz_ges }} field metadata override: ./fv3jedi/fv3jedi_fieldmetadata_restart.yaml jedi increment geometry: fms initialization: @@ -22,11 +22,11 @@ jedi increment geometry: field table filename: ./fv3jedi/field_table akbk: ./fv3jedi/akbk.nc4 layout: - - {{ layout_x }} - - {{ layout_y }} - npx: {{ npx_ges }} - npy: {{ npy_ges }} - npz: {{ npz_ges }} + - {{ atmosphere_layout_x }} + - {{ atmosphere_layout_y }} + npx: {{ atmosphere_npx_ges }} + npy: {{ atmosphere_npy_ges }} + npz: {{ atmosphere_npz_ges }} field metadata override: ./fv3jedi/fv3jedi_fieldmetadata_restart.yaml fv3 increment geometry: fms initialization: @@ -34,25 +34,25 @@ fv3 increment geometry: field table filename: ./fv3jedi/field_table akbk: ./fv3jedi/akbk.nc4 layout: - - {{ layout_x }} - - {{ layout_y }} - npx: {{ npx_ges }} - npy: {{ npy_ges }} - npz: {{ npz_ges }} + - {{ atmosphere_layout_x }} + - {{ atmosphere_layout_y }} + npx: {{ atmosphere_npx_ges }} + npy: {{ atmosphere_npy_ges }} + npz: {{ atmosphere_npz_ges }} field metadata override: ./fv3jedi/fv3jedi_fieldmetadata_fv3inc.yaml members from template: template: background input: datapath: ./bkg/mem%mem% filetype: fms restart - datetime: '{{ atm_background_time_iso }}' + datetime: '{{ atmosphere_background_time_iso }}' filename is datetime templated: true filename_core: "%yyyy%mm%dd.%hh%MM%ss.fv_core.res.nc" filename_trcr: "%yyyy%mm%dd.%hh%MM%ss.fv_tracer.res.nc" filename_sfcd: "%yyyy%mm%dd.%hh%MM%ss.sfc_data.nc" filename_sfcw: "%yyyy%mm%dd.%hh%MM%ss.fv_srf_wnd.res.nc" filename_cplr: "%yyyy%mm%dd.%hh%MM%ss.coupler.res" - state variables: *bkgvars + state variables: *bkgvars jedi increment input: filetype: cube sphere history filename: ./anl/mem%mem%/atminc.%yyyy%mm%dd.%hh%MM%ssz.nc4 @@ -62,5 +62,5 @@ members from template: gridtype: gaussian filename: ./anl/mem%mem%/atminc. pattern: '%mem%' - nmembers: {{ number_ensemble_members }} + nmembers: {{ atmosphere_number_ensemble_members }} zero padding: 3 diff --git a/algorithm/atmosphere/fv3jedi_fv3inc_variational.yaml.j2 b/algorithm/atmosphere/fv3jedi_fv3inc_variational.yaml.j2 index 5bb86a8..63079a2 100644 --- a/algorithm/atmosphere/fv3jedi_fv3inc_variational.yaml.j2 +++ b/algorithm/atmosphere/fv3jedi_fv3inc_variational.yaml.j2 @@ -10,11 +10,11 @@ background geometry: field table filename: ./fv3jedi/field_table akbk: ./fv3jedi/akbk.nc4 layout: - - {{ layout_x }} - - {{ layout_y }} - npx: {{ npx_ges }} - npy: {{ npy_ges }} - npz: {{ npz_ges }} + - {{ atmosphere_layout_x }} + - {{ atmosphere_layout_y }} + npx: {{ atmosphere_npx_ges }} + npy: {{ atmosphere_npy_ges }} + npz: {{ atmosphere_npz_ges }} field metadata override: ./fv3jedi/fv3jedi_fieldmetadata_restart.yaml jedi increment geometry: fms initialization: @@ -22,11 +22,11 @@ jedi increment geometry: field table filename: ./fv3jedi/field_table akbk: ./fv3jedi/akbk.nc4 layout: - - {{ layout_x }} - - {{ layout_y }} - npx: {{ npx_anl }} - npy: {{ npy_anl }} - npz: {{ npz_anl }} + - {{ atmosphere_layout_x }} + - {{ atmosphere_layout_y }} + npx: {{ atmosphere_npx_anl }} + npy: {{ atmosphere_npy_anl }} + npz: {{ atmosphere_npz_anl }} field metadata override: ./fv3jedi/fv3jedi_fieldmetadata_history.yaml fv3 increment geometry: fms initialization: @@ -34,17 +34,17 @@ fv3 increment geometry: field table filename: ./fv3jedi/field_table akbk: ./fv3jedi/akbk.nc4 layout: - - {{ layout_x }} - - {{ layout_y }} - npx: {{ npx_anl }} - npy: {{ npy_anl }} - npz: {{ npz_anl }} + - {{ atmosphere_layout_x }} + - {{ atmosphere_layout_y }} + npx: {{ atmosphere_npx_anl }} + npy: {{ atmosphere_npy_anl }} + npz: {{ atmosphere_npz_anl }} field metadata override: ./fv3jedi/fv3jedi_fieldmetadata_fv3inc.yaml members: - background input: datapath: ./bkg filetype: fms restart - datetime: "{{ atm_background_time_iso }}" + datetime: "{{ atmosphere_background_time_iso }}" filename is datetime templated: true filename_core: "%yyyy%mm%dd.%hh%MM%ss.fv_core.res.nc" filename_trcr: "%yyyy%mm%dd.%hh%MM%ss.fv_tracer.res.nc" diff --git a/algorithm/marine/socaincr2mom6.yaml b/algorithm/marine/socaincr2mom6.yaml new file mode 100644 index 0000000..83ce704 --- /dev/null +++ b/algorithm/marine/socaincr2mom6.yaml @@ -0,0 +1,28 @@ +geometry: + mom6_input_nml: mom_input.nml + fields metadata: ./fields_metadata.yaml + +date: '{{marine_window_begin}}' + +layers variable: [hocn] + +increment variables: [tocn, socn, uocn, vocn, ssh] + +vertical geometry: + date: '{{marine_window_begin}}' + basename: ./INPUT/ + ocn_filename: MOM.res.nc + read_from_file: 1 + +soca increment: + date: '{{marine_window_begin}}' + basename: ./Data/ + ocn_filename: 'ocn.3dvarfgat_pseudo.incr.{{ATM_WINDOW_MIDDLE}}.nc' + read_from_file: 1 + +output increment: + datadir: ./ + date: '{{marine_window_begin}}' + exp: mom6_iau + type: incr + output file: inc.nc diff --git a/model/aero/geometry.yaml.j2 b/model/aero/aero_geometry.yaml.j2 similarity index 100% rename from model/aero/geometry.yaml.j2 rename to model/aero/aero_geometry.yaml.j2 diff --git a/model/atmosphere/3dvar_outer_loop_1.yaml.j2 b/model/atmosphere/3dvar_outer_loop_1.yaml.j2 deleted file mode 100644 index e50d564..0000000 --- a/model/atmosphere/3dvar_outer_loop_1.yaml.j2 +++ /dev/null @@ -1,17 +0,0 @@ -- ninner: 2 - gradient norm reduction: 1e-10 - test: on - geometry: - fms initialization: - namelist filename: {{fv3jedi_files_path}}/fmsmpp.nml - field table filename: {{fv3jedi_files_path}}/field_table - akbk: {{fv3jedi_files_path}}/akbk.nc4 - layout: - - {{layout_x}} - - {{layout_y}} - npx: {{npx_anl}} - npy: {{npy_anl}} - npz: {{npz_anl}} - field metadata override: {{fv3jedi_files_path}}/fv3jedi_fieldmetadata_restart.yaml - diagnostics: - departures: bkgmob diff --git a/model/atmosphere/3dvar_outer_loop_2.yaml.j2 b/model/atmosphere/3dvar_outer_loop_2.yaml.j2 deleted file mode 100644 index 1c926f2..0000000 --- a/model/atmosphere/3dvar_outer_loop_2.yaml.j2 +++ /dev/null @@ -1,17 +0,0 @@ -- ninner: 4 - gradient norm reduction: 1e-10 - test: on - geometry: - fms initialization: - namelist filename: {{fv3jedi_files_path}}/fmsmpp.nml - field table filename: {{fv3jedi_files_path}}/field_table - akbk: {{fv3jedi_files_path}}/akbk.nc4 - layout: - - {{layout_x}} - - {{layout_y}} - npx: {{npx_anl}} - npy: {{npy_anl}} - npz: {{npz_anl}} - field metadata override: {{fv3jedi_files_path}}/fv3jedi_fieldmetadata_restart.yaml - diagnostics: - departures: bkgmob1 diff --git a/model/atmosphere/atmosphere_3dvar_outer_loop_1.yaml.j2 b/model/atmosphere/atmosphere_3dvar_outer_loop_1.yaml.j2 new file mode 100644 index 0000000..9c850f6 --- /dev/null +++ b/model/atmosphere/atmosphere_3dvar_outer_loop_1.yaml.j2 @@ -0,0 +1,17 @@ +- ninner: 2 + gradient norm reduction: 1e-10 + test: on + geometry: + fms initialization: + namelist filename: {{atmosphere_fv3jedi_files_path}}/fmsmpp.nml + field table filename: {{atmosphere_fv3jedi_files_path}}/field_table + akbk: {{atmosphere_fv3jedi_files_path}}/akbk.nc4 + layout: + - {{atmosphere_layout_x}} + - {{atmosphere_layout_y}} + npx: {{atmosphere_npx_anl}} + npy: {{atmosphere_npy_anl}} + npz: {{atmosphere_npz_anl}} + field metadata override: {{atmosphere_fv3jedi_files_path}}/fv3jedi_fieldmetadata_restart.yaml + diagnostics: + departures: bkgmob diff --git a/model/atmosphere/atmosphere_3dvar_outer_loop_2.yaml.j2 b/model/atmosphere/atmosphere_3dvar_outer_loop_2.yaml.j2 new file mode 100644 index 0000000..ec5dc09 --- /dev/null +++ b/model/atmosphere/atmosphere_3dvar_outer_loop_2.yaml.j2 @@ -0,0 +1,17 @@ +- ninner: 4 + gradient norm reduction: 1e-10 + test: on + geometry: + fms initialization: + namelist filename: {{atmosphere_fv3jedi_files_path}}/fmsmpp.nml + field table filename: {{atmosphere_fv3jedi_files_path}}/field_table + akbk: {{atmosphere_fv3jedi_files_path}}/akbk.nc4 + layout: + - {{atmosphere_layout_x}} + - {{atmosphere_layout_y}} + npx: {{atmosphere_npx_anl}} + npy: {{atmosphere_npy_anl}} + npz: {{atmosphere_npz_anl}} + field metadata override: {{atmosphere_fv3jedi_files_path}}/fv3jedi_fieldmetadata_restart.yaml + diagnostics: + departures: bkgmob1 diff --git a/model/atmosphere/background.yaml.j2 b/model/atmosphere/atmosphere_background.yaml.j2 similarity index 84% rename from model/atmosphere/background.yaml.j2 rename to model/atmosphere/atmosphere_background.yaml.j2 index af8b509..e5a8827 100644 --- a/model/atmosphere/background.yaml.j2 +++ b/model/atmosphere/atmosphere_background.yaml.j2 @@ -1,6 +1,6 @@ -datapath: {{ background_path}} +datapath: {{ atmosphere_background_path}} filetype: fms restart -datetime: "{{ atm_background_time_iso }}" +datetime: "{{ atmosphere_background_time_iso }}" filename is datetime templated: true filename_core: "%yyyy%mm%dd.%hh%MM%ss.fv_core.res.nc" filename_trcr: "%yyyy%mm%dd.%hh%MM%ss.fv_tracer.res.nc" diff --git a/model/atmosphere/background_ensemble.yaml.j2 b/model/atmosphere/atmosphere_background_ensemble.yaml.j2 similarity index 67% rename from model/atmosphere/background_ensemble.yaml.j2 rename to model/atmosphere/atmosphere_background_ensemble.yaml.j2 index 9b3cf59..37640ee 100644 --- a/model/atmosphere/background_ensemble.yaml.j2 +++ b/model/atmosphere/atmosphere_background_ensemble.yaml.j2 @@ -1,18 +1,18 @@ -datetime: '{{ atm_background_time_iso }}' +datetime: '{{ atmosphere_background_time_iso }}' members from template: template: - datetime: '{{ atm_background_time_iso }}' + datetime: '{{ atmosphere_background_time_iso }}' filetype: fms restart state variables: [ua,va,t,DZ,delp,ps,sphum,ice_wat,liq_wat,o3mr,phis, slmsk,sheleg,tsea,vtype,stype,vfrac,stc,smc,snwdph, u_srf,v_srf,f10m] - datapath: {{ background_ensemble_path}} + datapath: {{ atmosphere_background_ensemble_path}} filename is datetime templated: true filename_core: "%yyyy%mm%dd.%hh%MM%ss.fv_core.res.nc" filename_trcr: "%yyyy%mm%dd.%hh%MM%ss.fv_tracer.res.nc" filename_sfcd: "%yyyy%mm%dd.%hh%MM%ss.sfc_data.nc" filename_sfcw: "%yyyy%mm%dd.%hh%MM%ss.fv_srf_wnd.res.nc" filename_cplr: "%yyyy%mm%dd.%hh%MM%ss.coupler.res" - pattern: "{{ ensemble_pattern | default("%mem%", true) }}" - nmembers: {{ number_ensemble_members }} + pattern: "{{ atmosphere_ensemble_pattern | default("%mem%", true) }}" + nmembers: {{ atmosphere_number_ensemble_members }} zero padding: 3 diff --git a/model/atmosphere/background_error_hybrid_bump_bump.yaml.j2 b/model/atmosphere/atmosphere_background_error_hybrid_bump_bump.yaml.j2 similarity index 66% rename from model/atmosphere/background_error_hybrid_bump_bump.yaml.j2 rename to model/atmosphere/atmosphere_background_error_hybrid_bump_bump.yaml.j2 index 9d3f647..bf30ace 100644 --- a/model/atmosphere/background_error_hybrid_bump_bump.yaml.j2 +++ b/model/atmosphere/atmosphere_background_error_hybrid_bump_bump.yaml.j2 @@ -5,12 +5,12 @@ components: saber blocks: - saber block name: BUMP_NICAS saber central block: true - input variables: &control_vars [psi,chi,t,ps,rh,ice_wat,liq_wat,o3mr] - output variables: *control_vars - active variables: &active_vars [psi,chi,t,ps,rh,liq_wat,o3mr] + input variables: [psi,chi,t,ps,rh,ice_wat,liq_wat,o3mr] + output variables: [psi,chi,t,ps,rh,ice_wat,liq_wat,o3mr] + active variables: [psi,chi,t,ps,rh,liq_wat,o3mr] bump: io: - data directory: &staticb_dir {{bump_data_directory}} + data directory: {{atmosphere_bump_data_directory}} drivers: multivariate strategy: specific_univariate read local nicas: true @@ -36,15 +36,15 @@ components: io: files prefix: nicas/nicas_2D_gfs - saber block name: StdDev - input variables: *control_vars - output variables: *control_vars - active variables: *active_vars + input variables: [psi,chi,t,ps,rh,ice_wat,liq_wat,o3mr] + output variables: [psi,chi,t,ps,rh,ice_wat,liq_wat,o3mr] + active variables: [psi,chi,t,ps,rh,liq_wat,o3mr] file: filetype: fms restart datetime: 2021-12-22T00:00:00Z set datetime on read: true psinfile: true - datapath: '*staticb_dir' + datapath: {{atmosphere_bump_data_directory}} prefix: stddev/20211222.000000 filename_core: stddev.fv_core.res.nc filename_trcr: stddev.fv_tracer.res.nc @@ -52,14 +52,14 @@ components: filename_sfcw: stddev.fv_srf_wnd.res.nc filename_cplr: stddev.coupler.res - saber block name: BUMP_VerticalBalance - input variables: *control_vars - output variables: *control_vars - active variables: *active_vars + input variables: [psi,chi,t,ps,rh,ice_wat,liq_wat,o3mr] + output variables: [psi,chi,t,ps,rh,ice_wat,liq_wat,o3mr] + active variables: [psi,chi,t,ps,rh,liq_wat,o3mr] bump: general: universe length-scale: 2000.0e3 io: - data directory: *staticb_dir + data directory: {{atmosphere_bump_data_directory}} files prefix: vbal/vbal_gfs overriding sampling file: vbal/vbal_2021122200_gfs_sampling drivers: @@ -74,49 +74,49 @@ components: - balanced variable: var4 unbalanced variable: var1 - saber block name: BUMP_PsiChiToUV - input variables: *control_vars - output variables: &3dvars_with_rh [ua,va,t,ps,rh,ice_wat,liq_wat,o3mr] + input variables: [psi,chi,t,ps,rh,ice_wat,liq_wat,o3mr] + output variables: [ua,va,t,ps,rh,ice_wat,liq_wat,o3mr] active variables: [psi,chi,ua,va] bump: general: universe length-scale: 2000.0e3 io: - data directory: *staticb_dir + data directory: {{atmosphere_bump_data_directory}} files prefix: psichitouv/psichitouv_gfs drivers: read local psichitouv: true linear variable change: linear variable change name: Control2Analysis - input variables: *3dvars_with_rh - output variables: &3dvars [ua,va,t,ps,sphum,ice_wat,liq_wat,o3mr] + input variables: [ua,va,t,ps,rh,ice_wat,liq_wat,o3mr] + output variables: [ua,va,t,ps,sphum,ice_wat,liq_wat,o3mr] weight: value: 0.1 - covariance: covariance model: ensemble members from template: template: - datetime: "{{ atm_background_time_iso }}" + datetime: "{{ atmosphere_background_time_iso }}" filetype: fms restart - state variables: *3dvars - datapath: {{ background_ensemble_path}} + state variables: [ua,va,t,ps,sphum,ice_wat,liq_wat,o3mr] + datapath: {{ atmosphere_background_ensemble_path}} filename is datetime templated: true filename_core: "%yyyy%mm%dd.%hh%MM%ss.fv_core.res.nc" filename_trcr: "%yyyy%mm%dd.%hh%MM%ss.fv_tracer.res.nc" filename_sfcd: "%yyyy%mm%dd.%hh%MM%ss.sfc_data.nc" filename_sfcw: "%yyyy%mm%dd.%hh%MM%ss.fv_srf_wnd.res.nc" filename_cplr: "%yyyy%mm%dd.%hh%MM%ss.coupler.res" - pattern: "{{ ensemble_pattern | default("%mem%", true) }}" - nmembers: {{number_ensemble_members}} + pattern: "{{ atmosphere_ensemble_pattern | default("%mem%", true) }}" + nmembers: {{atmosphere_number_ensemble_members}} zero padding: 3 # localization: # localization method: SABER # saber block: # - saber block name: BUMP_NICAS -# input variables: *control_vars -# output variables: *control_vars -# active variables: *active_vars +# input variables: [psi,chi,t,ps,rh,ice_wat,liq_wat,o3mr] +# output variables: [psi,chi,t,ps,rh,ice_wat,liq_wat,o3mr] +# active variables: [psi,chi,t,ps,rh,liq_wat,o3mr] # bump: -# datadir: *staticb_dir +# datadir: {{atmosphere_bump_data_directory}} # verbosity: main # strategy: specific_univariate # method: loc diff --git a/model/atmosphere/background_error_hybrid_gsibec_bump.yaml.j2 b/model/atmosphere/atmosphere_background_error_hybrid_gsibec_bump.yaml.j2 similarity index 77% rename from model/atmosphere/background_error_hybrid_gsibec_bump.yaml.j2 rename to model/atmosphere/atmosphere_background_error_hybrid_gsibec_bump.yaml.j2 index ef8fe88..4ba0dbe 100644 --- a/model/atmosphere/background_error_hybrid_gsibec_bump.yaml.j2 +++ b/model/atmosphere/atmosphere_background_error_hybrid_gsibec_bump.yaml.j2 @@ -5,50 +5,50 @@ components: saber central block: saber block name: gsi static covariance read: - gsi akbk: &akbk {{fv3jedi_files_path}}/akbk.nc4 - gsi error covariance file: &gsiberr {{gsibec_path}}/gsi-coeffs-gfs-global.nc4 - gsi berror namelist file: &gsibnml {{gsibec_path}}/gfs_gsi_global.nml - processor layout x direction: &layout_gsib_x {{layout_gsib_x}} - processor layout y direction: &layout_gsib_y {{layout_gsib_y}} + gsi akbk: {{atmosphere_fv3jedi_files_path}}/akbk.nc4 + gsi error covariance file: {{atmosphere_gsibec_path}}/gsi-coeffs-gfs-global.nc4 + gsi berror namelist file: {{atmosphere_gsibec_path}}/gfs_gsi_global.nml + processor layout x direction: {{atmosphere_layout_gsib_x}} + processor layout y direction: {{atmosphere_layout_gsib_y}} debugging mode: false saber outer blocks: - saber block name: gsi interpolation to model grid - gsi akbk: *akbk - gsi error covariance file: *gsiberr - gsi berror namelist file: *gsibnml - processor layout x direction: *layout_gsib_x - processor layout y direction: *layout_gsib_y + gsi akbk: {{atmosphere_fv3jedi_files_path}}/akbk.nc4 + gsi error covariance file: {{atmosphere_gsibec_path}}/gsi-coeffs-gfs-global.nc4 + gsi berror namelist file: {{atmosphere_gsibec_path}}/gfs_gsi_global.nml + processor layout x direction: {{atmosphere_layout_gsib_x}} + processor layout y direction: {{atmosphere_layout_gsib_y}} debugging mode: false linear variable change: linear variable change name: Control2Analysis - input variables: &control_vars [eastward_wind,northward_wind,air_temperature,surface_pressure, + input variables: [eastward_wind,northward_wind,air_temperature,surface_pressure, specific_humidity,cloud_liquid_ice,cloud_liquid_water, mole_fraction_of_ozone_in_air] - output variables: &3dvars_anal [ua,va,t,ps,sphum,ice_wat,liq_wat,o3mr] + output variables: [ua,va,t,ps,sphum,ice_wat,liq_wat,o3mr] weight: value: 0.125 - covariance: covariance model: ensemble members from template: template: - datetime: "{{ atm_background_time_iso }}" + datetime: "{{ atmosphere_background_time_iso }}" filetype: fms restart - state variables: *3dvars_anal - datapath: {{ background_ensemble_path}} + state variables: [ua,va,t,ps,sphum,ice_wat,liq_wat,o3mr] + datapath: {{ atmosphere_background_ensemble_path}} filename is datetime templated: true filename_core: "%yyyy%mm%dd.%hh%MM%ss.fv_core.res.nc" filename_trcr: "%yyyy%mm%dd.%hh%MM%ss.fv_tracer.res.nc" filename_sfcd: "%yyyy%mm%dd.%hh%MM%ss.sfc_data.nc" filename_sfcw: "%yyyy%mm%dd.%hh%MM%ss.fv_srf_wnd.res.nc" filename_cplr: "%yyyy%mm%dd.%hh%MM%ss.coupler.res" - pattern: "{{ ensemble_pattern | default("%mem%", true) }}" - nmembers: {{number_ensemble_members}} + pattern: "{{ atmosphere_ensemble_pattern | default("%mem%", true) }}" + nmembers: {{atmosphere_number_ensemble_members}} zero padding: 3 localization: localization method: SABER saber central block: saber block name: BUMP_NICAS - active variables: &3dvars_anal_long [eastward_wind,northward_wind,air_temperature,surface_pressure, + active variables: [eastward_wind,northward_wind,air_temperature,surface_pressure, specific_humidity,cloud_liquid_ice,cloud_liquid_water, ozone_mass_mixing_ratio ] read: @@ -201,7 +201,9 @@ components: value: 0.3 linear variable change: linear variable change name: Control2Analysis - input variables: *3dvars_anal_long - output variables: *3dvars_anal + input variables: [eastward_wind,northward_wind,air_temperature,surface_pressure, + specific_humidity,cloud_liquid_ice,cloud_liquid_water, + ozone_mass_mixing_ratio ] + output variables: [ua,va,t,ps,sphum,ice_wat,liq_wat,o3mr] weight: value: 0.875 diff --git a/model/atmosphere/background_error_static_bump.yaml.j2 b/model/atmosphere/atmosphere_background_error_static_bump.yaml.j2 similarity index 68% rename from model/atmosphere/background_error_static_bump.yaml.j2 rename to model/atmosphere/atmosphere_background_error_static_bump.yaml.j2 index 65be183..68601e9 100644 --- a/model/atmosphere/background_error_static_bump.yaml.j2 +++ b/model/atmosphere/atmosphere_background_error_static_bump.yaml.j2 @@ -3,12 +3,12 @@ full inverse: true saber blocks: - saber block name: BUMP_NICAS saber central block: true - input variables: &control_vars [psi,chi,t,ps,rh,ice_wat,liq_wat,o3mr] - output variables: *control_vars - active variables: &active_vars [psi,chi,t,ps,rh,liq_wat,o3mr] + input variables: [psi,chi,t,ps,rh,ice_wat,liq_wat,o3mr] + output variables: [psi,chi,t,ps,rh,ice_wat,liq_wat,o3mr] + active variables: [psi,chi,t,ps,rh,liq_wat,o3mr] bump: io: - data directory: &staticb_dir {{bump_data_directory}} + data directory: {{atmosphere_bump_data_directory}} drivers: multivariate strategy: specific_univariate read local nicas: true @@ -34,15 +34,15 @@ saber blocks: io: files prefix: nicas/nicas_2D_gfs - saber block name: StdDev - input variables: *control_vars - output variables: *control_vars - active variables: *active_vars + input variables: [psi,chi,t,ps,rh,ice_wat,liq_wat,o3mr] + output variables: [psi,chi,t,ps,rh,ice_wat,liq_wat,o3mr] + active variables: [psi,chi,t,ps,rh,liq_wat,o3mr] file: filetype: fms restart datetime: 2021-12-22T00:00:00Z set datetime on read: true psinfile: true - datapath: *staticb_dir + datapath: {{atmosphere_bump_data_directory}} prefix: stddev/20211222.000000 filename_core: stddev.fv_core.res.nc filename_trcr: stddev.fv_tracer.res.nc @@ -50,14 +50,14 @@ saber blocks: filename_sfcw: stddev.fv_srf_wnd.res.nc filename_cplr: stddev.coupler.res - saber block name: BUMP_VerticalBalance - input variables: *control_vars - output variables: *control_vars - active variables: *active_vars + input variables: [psi,chi,t,ps,rh,ice_wat,liq_wat,o3mr] + output variables: [psi,chi,t,ps,rh,ice_wat,liq_wat,o3mr] + active variables: [psi,chi,t,ps,rh,liq_wat,o3mr] bump: general: universe length-scale: 2000.0e3 io: - data directory: *staticb_dir + data directory: {{atmosphere_bump_data_directory}} files prefix: vbal/vbal_gfs overriding sampling file: vbal/vbal_2021122200_gfs_sampling drivers: @@ -72,18 +72,18 @@ saber blocks: - balanced variable: var4 unbalanced variable: var1 - saber block name: BUMP_PsiChiToUV - input variables: *control_vars - output variables: &3dvars_with_rh [ua,va,t,ps,rh,ice_wat,liq_wat,o3mr] + input variables: [psi,chi,t,ps,rh,ice_wat,liq_wat,o3mr] + output variables: [ua,va,t,ps,rh,ice_wat,liq_wat,o3mr] active variables: [psi,chi,ua,va] bump: general: universe length-scale: 2000.0e3 io: - data directory: '*staticb_dir' + data directory: {{atmosphere_bump_data_directory}} files prefix: psichitouv/psichitouv_gfs drivers: read local psichitouv: true linear variable change: linear variable change name: Control2Analysis - input variables: *3dvars_with_rh + input variables: [ua,va,t,ps,rh,ice_wat,liq_wat,o3mr] output variables: [ua,va,t,ps,sphum,ice_wat,liq_wat,o3mr] diff --git a/model/atmosphere/atmosphere_background_error_static_gsibec.yaml.j2 b/model/atmosphere/atmosphere_background_error_static_gsibec.yaml.j2 new file mode 100644 index 0000000..242ce4f --- /dev/null +++ b/model/atmosphere/atmosphere_background_error_static_gsibec.yaml.j2 @@ -0,0 +1,25 @@ +covariance model: SABER +full inverse: true +saber central block: + saber block name: gsi static covariance + read: + gsi akbk: {{atmosphere_fv3jedi_files_path}}/akbk.nc4 + gsi error covariance file: {{atmosphere_gsibec_path}}/gsi-coeffs-gfs-global.nc4 + gsi berror namelist file: {{atmosphere_gsibec_path}}/gfs_gsi_global.nml + processor layout x direction: {{atmosphere_layout_gsib_x}} + processor layout y direction: {{atmosphere_layout_gsib_y}} + debugging mode: false +saber outer blocks: +- saber block name: gsi interpolation to model grid + gsi akbk: {{atmosphere_fv3jedi_files_path}}/akbk.nc4 + gsi error covariance file: {{atmosphere_gsibec_path}}/gsi-coeffs-gfs-global.nc4 + gsi berror namelist file: {{atmosphere_gsibec_path}}/gfs_gsi_global.nml + processor layout x direction: {{atmosphere_layout_gsib_x}} + processor layout y direction: {{atmosphere_layout_gsib_y}} + debugging mode: false +linear variable change: + linear variable change name: Control2Analysis + input variables: [eastward_wind,northward_wind,air_temperature,surface_pressure, + specific_humidity,cloud_liquid_ice,cloud_liquid_water, + mole_fraction_of_ozone_in_air] + output variables: [ua,va,t,ps,sphum,ice_wat,liq_wat,o3mr] diff --git a/model/atmosphere/atmosphere_background_error_static_identity.yaml.j2 b/model/atmosphere/atmosphere_background_error_static_identity.yaml.j2 new file mode 100644 index 0000000..a2533ec --- /dev/null +++ b/model/atmosphere/atmosphere_background_error_static_identity.yaml.j2 @@ -0,0 +1,2 @@ +covariance model: FV3JEDI-ID +date: "{{ atmosphere_background_time_iso }}" diff --git a/model/atmosphere/atmosphere_final_increment_cubed_sphere.yaml.j2 b/model/atmosphere/atmosphere_final_increment_cubed_sphere.yaml.j2 new file mode 100644 index 0000000..7d9f7e7 --- /dev/null +++ b/model/atmosphere/atmosphere_final_increment_cubed_sphere.yaml.j2 @@ -0,0 +1,18 @@ +output: + state component: + filetype: cube sphere history + filename: ./anl/atminc.%yyyy%mm%dd.%hh%MM%ssz.nc4 + provider: ufs + fields to write: [ugrd,vgrd,tmp,pressfc,spfh,icmr,clwmr,o3mr] +geometry: + fms initialization: + namelist filename: "{{atmosphere_fv3jedi_files_path}}/fmsmpp.nml" + field table filename: "{{atmosphere_fv3jedi_files_path}}/field_table" + akbk: "{{atmosphere_fv3jedi_files_path}}/akbk.nc4" + layout: + - {{atmosphere_layout_x}} + - {{atmosphere_layout_y}} + npx: {{atmosphere_npx_anl}} + npy: {{atmosphere_npy_anl}} + npz: {{atmosphere_npz_anl}} + field metadata override: "{{atmosphere_fv3jedi_files_path}}/fv3jedi_fieldmetadata_history.yaml" diff --git a/model/atmosphere/atmosphere_final_increment_gaussian.yaml.j2 b/model/atmosphere/atmosphere_final_increment_gaussian.yaml.j2 new file mode 100644 index 0000000..1d3bc4c --- /dev/null +++ b/model/atmosphere/atmosphere_final_increment_gaussian.yaml.j2 @@ -0,0 +1,17 @@ +output: + state component: + filetype: auxgrid + gridtype: gaussian + filename: {{atmosphere_final_increment_prefix}} +geometry: + fms initialization: + namelist filename: "{{atmosphere_fv3jedi_files_path}}/fmsmpp.nml" + field table filename: "{{atmosphere_fv3jedi_files_path}}/field_table" + akbk: "{{atmosphere_fv3jedi_files_path}}/akbk.nc4" + layout: + - {{atmosphere_layout_x}} + - {{atmosphere_layout_y}} + npx: {{atmosphere_npx_anl}} + npy: {{atmosphere_npy_anl}} + npz: {{atmosphere_npz_anl}} + field metadata override: "{{atmosphere_fv3jedi_files_path}}/fv3jedi_fieldmetadata_restart.yaml" diff --git a/model/atmosphere/atmosphere_geometry_background.yaml.j2 b/model/atmosphere/atmosphere_geometry_background.yaml.j2 new file mode 100644 index 0000000..65ec71b --- /dev/null +++ b/model/atmosphere/atmosphere_geometry_background.yaml.j2 @@ -0,0 +1,11 @@ +fms initialization: + namelist filename: "{{atmosphere_fv3jedi_files_path}}/fmsmpp.nml" + field table filename: "{{atmosphere_fv3jedi_files_path}}/field_table" +akbk: "{{atmosphere_fv3jedi_files_path}}/akbk.nc4" +layout: +- {{atmosphere_layout_x}} +- {{atmosphere_layout_y}} +npx: {{atmosphere_npx_ges}} +npy: {{atmosphere_npy_ges}} +npz: {{atmosphere_npz_ges}} +field metadata override: "{{atmosphere_fv3jedi_files_path}}/fv3jedi_fieldmetadata_restart.yaml" diff --git a/model/atmosphere/model_pseudo.yaml.j2 b/model/atmosphere/atmosphere_model_pseudo.yaml.j2 similarity index 86% rename from model/atmosphere/model_pseudo.yaml.j2 rename to model/atmosphere/atmosphere_model_pseudo.yaml.j2 index 05eefc2..cf054e3 100644 --- a/model/atmosphere/model_pseudo.yaml.j2 +++ b/model/atmosphere/atmosphere_model_pseudo.yaml.j2 @@ -1,5 +1,5 @@ name: PSEUDO -datapath: {{ background_path}} +datapath: {{ atmosphere_background_path}} filetype: fms restart filename is datetime templated: true filename_core: '%yyyy%mm%dd.%hh%MM%ss.fv_core.res.nc' @@ -7,7 +7,7 @@ filename_trcr: '%yyyy%mm%dd.%hh%MM%ss.fv_tracer.res.nc' filename_sfcd: '%yyyy%mm%dd.%hh%MM%ss.sfc_data.nc' filename_sfcw: '%yyyy%mm%dd.%hh%MM%ss.fv_srf_wnd.res.nc' filename_cplr: '%yyyy%mm%dd.%hh%MM%ss.coupler.res' -tstep: {{forecast_timestep}} +tstep: {{atmosphere_forecast_timestep}} model variables: [ua,va,t,delp,sphum,ice_wat,liq_wat,o3mr,phis, slmsk,sheleg,tsea,vtype,stype,vfrac,stc,smc,snwdph, u_srf,v_srf,f10m] diff --git a/model/atmosphere/output_ensemble_increments_cubed_sphere.yaml.j2 b/model/atmosphere/atmosphere_output_ensemble_increments_cubed_sphere.yaml.j2 similarity index 100% rename from model/atmosphere/output_ensemble_increments_cubed_sphere.yaml.j2 rename to model/atmosphere/atmosphere_output_ensemble_increments_cubed_sphere.yaml.j2 diff --git a/model/atmosphere/atmosphere_output_ensemble_increments_gaussian.yaml.j2 b/model/atmosphere/atmosphere_output_ensemble_increments_gaussian.yaml.j2 new file mode 100644 index 0000000..fc6674f --- /dev/null +++ b/model/atmosphere/atmosphere_output_ensemble_increments_gaussian.yaml.j2 @@ -0,0 +1,3 @@ +filetype: auxgrid +gridtype: gaussian +filename: {{atmosphere_ensemble_increment_prefix}} diff --git a/model/atmosphere/atmosphere_posterior_output_gaussian.yaml.j2 b/model/atmosphere/atmosphere_posterior_output_gaussian.yaml.j2 new file mode 100644 index 0000000..512d235 --- /dev/null +++ b/model/atmosphere/atmosphere_posterior_output_gaussian.yaml.j2 @@ -0,0 +1,3 @@ +filetype: auxgrid +gridtype: gaussian +filename: {{atmosphere_posterior_output_gaussian}} diff --git a/model/atmosphere/background_error_static_gsibec.yaml.j2 b/model/atmosphere/background_error_static_gsibec.yaml.j2 deleted file mode 100644 index e53b8fd..0000000 --- a/model/atmosphere/background_error_static_gsibec.yaml.j2 +++ /dev/null @@ -1,25 +0,0 @@ -covariance model: SABER -full inverse: true -saber central block: - saber block name: gsi static covariance - read: - gsi akbk: &akbk {{fv3jedi_files_path}}/akbk.nc4 - gsi error covariance file: &gsiberr {{gsibec_path}}/gsi-coeffs-gfs-global.nc4 - gsi berror namelist file: &gsibnml {{gsibec_path}}/gfs_gsi_global.nml - processor layout x direction: &layout_gsib_x {{layout_gsib_x}} - processor layout y direction: &layout_gsib_y {{layout_gsib_y}} - debugging mode: false -saber outer blocks: -- saber block name: gsi interpolation to model grid - gsi akbk: *akbk - gsi error covariance file: *gsiberr - gsi berror namelist file: *gsibnml - processor layout x direction: *layout_gsib_x - processor layout y direction: *layout_gsib_y - debugging mode: false -linear variable change: - linear variable change name: Control2Analysis - input variables: &control_vars [eastward_wind,northward_wind,air_temperature,surface_pressure, - specific_humidity,cloud_liquid_ice,cloud_liquid_water, - mole_fraction_of_ozone_in_air] - output variables: &3dvars_anal [ua,va,t,ps,sphum,ice_wat,liq_wat,o3mr] diff --git a/model/atmosphere/background_error_static_identity.yaml.j2 b/model/atmosphere/background_error_static_identity.yaml.j2 deleted file mode 100644 index c5e6c99..0000000 --- a/model/atmosphere/background_error_static_identity.yaml.j2 +++ /dev/null @@ -1,2 +0,0 @@ -covariance model: FV3JEDI-ID -date: "{{ atm_background_time_iso }}" diff --git a/model/atmosphere/final_increment_cubed_sphere.yaml.j2 b/model/atmosphere/final_increment_cubed_sphere.yaml.j2 deleted file mode 100644 index 2478107..0000000 --- a/model/atmosphere/final_increment_cubed_sphere.yaml.j2 +++ /dev/null @@ -1,18 +0,0 @@ -output: - state component: - filetype: cube sphere history - filename: ./anl/atminc.%yyyy%mm%dd.%hh%MM%ssz.nc4 - provider: ufs - fields to write: [ugrd,vgrd,tmp,pressfc,spfh,icmr,clwmr,o3mr] -geometry: - fms initialization: - namelist filename: "{{fv3jedi_files_path}}/fmsmpp.nml" - field table filename: "{{fv3jedi_files_path}}/field_table" - akbk: "{{fv3jedi_files_path}}/akbk.nc4" - layout: - - {{layout_x}} - - {{layout_y}} - npx: {{npx_anl}} - npy: {{npy_anl}} - npz: {{npz_anl}} - field metadata override: "{{fv3jedi_files_path}}/fv3jedi_fieldmetadata_history.yaml" diff --git a/model/atmosphere/final_increment_gaussian.yaml.j2 b/model/atmosphere/final_increment_gaussian.yaml.j2 deleted file mode 100644 index a572433..0000000 --- a/model/atmosphere/final_increment_gaussian.yaml.j2 +++ /dev/null @@ -1,17 +0,0 @@ -output: - state component: - filetype: auxgrid - gridtype: gaussian - filename: {{final_increment_prefix}} -geometry: - fms initialization: - namelist filename: "{{fv3jedi_files_path}}/fmsmpp.nml" - field table filename: "{{fv3jedi_files_path}}/field_table" - akbk: "{{fv3jedi_files_path}}/akbk.nc4" - layout: - - {{layout_x}} - - {{layout_y}} - npx: {{npx_anl}} - npy: {{npy_anl}} - npz: {{npz_anl}} - field metadata override: "{{fv3jedi_files_path}}/fv3jedi_fieldmetadata_restart.yaml" diff --git a/model/atmosphere/geometry_background.yaml.j2 b/model/atmosphere/geometry_background.yaml.j2 deleted file mode 100644 index fefe71c..0000000 --- a/model/atmosphere/geometry_background.yaml.j2 +++ /dev/null @@ -1,11 +0,0 @@ -fms initialization: - namelist filename: "{{fv3jedi_files_path}}/fmsmpp.nml" - field table filename: "{{fv3jedi_files_path}}/field_table" -akbk: "{{fv3jedi_files_path}}/akbk.nc4" -layout: -- {{layout_x}} -- {{layout_y}} -npx: {{npx_ges}} -npy: {{npy_ges}} -npz: {{npz_ges}} -field metadata override: "{{fv3jedi_files_path}}/fv3jedi_fieldmetadata_restart.yaml" diff --git a/model/atmosphere/output_ensemble_increments_gaussian.yaml.j2 b/model/atmosphere/output_ensemble_increments_gaussian.yaml.j2 deleted file mode 100644 index d11ca4d..0000000 --- a/model/atmosphere/output_ensemble_increments_gaussian.yaml.j2 +++ /dev/null @@ -1,3 +0,0 @@ -filetype: auxgrid -gridtype: gaussian -filename: {{ensemble_increment_prefix}} diff --git a/model/atmosphere/posterior_output_gaussian.yaml.j2 b/model/atmosphere/posterior_output_gaussian.yaml.j2 deleted file mode 100644 index 471137f..0000000 --- a/model/atmosphere/posterior_output_gaussian.yaml.j2 +++ /dev/null @@ -1,3 +0,0 @@ -filetype: auxgrid -gridtype: gaussian -filename: {{posterior_output_gaussian}} diff --git a/model/marine/marine_3dfgat_outer_loop_1.yaml.j2 b/model/marine/marine_3dfgat_outer_loop_1.yaml.j2 new file mode 100644 index 0000000..2931f62 --- /dev/null +++ b/model/marine/marine_3dfgat_outer_loop_1.yaml.j2 @@ -0,0 +1,7 @@ +- ninner: {{marine_ninner_1}} + gradient norm reduction: {{marine_grad_red_1}} + geometry: + mom6_input_nml: mom_input.nml + fields metadata: {{marine_soca_files_path}}/fields_metadata.yaml + diagnostics: + departures: ombg diff --git a/model/marine/marine_3dvar_outer_loop_1.yaml.j2 b/model/marine/marine_3dvar_outer_loop_1.yaml.j2 new file mode 100644 index 0000000..2931f62 --- /dev/null +++ b/model/marine/marine_3dvar_outer_loop_1.yaml.j2 @@ -0,0 +1,7 @@ +- ninner: {{marine_ninner_1}} + gradient norm reduction: {{marine_grad_red_1}} + geometry: + mom6_input_nml: mom_input.nml + fields metadata: {{marine_soca_files_path}}/fields_metadata.yaml + diagnostics: + departures: ombg diff --git a/model/marine/marine_background.yaml.j2 b/model/marine/marine_background.yaml.j2 new file mode 100644 index 0000000..d0047e8 --- /dev/null +++ b/model/marine/marine_background.yaml.j2 @@ -0,0 +1,6 @@ +read_from_file: 1 +basename: {{ marine_background_path}} +ocn_filename: MOM.res.nc +ice_filename: cice.res.nc +date: "{{ marine_background_time }}" +state variables: [cicen, hicen, hsnon, socn, tocn, uocn, vocn, ssh, hocn, mld, layer_depth] diff --git a/model/marine/marine_background_error_hybrid_diffusion_diffusion.yaml.j2 b/model/marine/marine_background_error_hybrid_diffusion_diffusion.yaml.j2 new file mode 100644 index 0000000..43feedb --- /dev/null +++ b/model/marine/marine_background_error_hybrid_diffusion_diffusion.yaml.j2 @@ -0,0 +1,92 @@ +covariance model: hybrid +components: +- covariance: + covariance model: SABER + saber central block: + saber block name: EXPLICIT_DIFFUSION + active variables: [tocn, socn, ssh, cicen] + geometry: + mom6_input_nml: mom_input.nml + fields metadata: ./fields_metadata.yaml + group mapping: + - name: ocean + variables: + - tocn + - socn + - ssh + - name: ice + variables: + - cicen + read: + groups: + - name: ocean + horizontal: + filename: hz_ocean.nc + vertical: + filename: vt_ocean.nc + - name: ice + horizontal: + filename: hz_ice.nc + + saber outer blocks: + - saber block name: StdDev + read: + model file: + date: '{{marine_window_middle}}' + basename: ./ + ocn_filename: 'ocn.bkgerr_stddev.incr.{{marine_window_middle}}.nc' + ice_filename: 'ice.bkgerr_stddev.incr.{{marine_window_middle}}.nc' + read_from_file: 3 + + linear variable change: + input variables: [cicen, hicen, hsnon, socn, tocn, uocn, vocn, ssh] + output variables: [cicen, hicen, hsnon, socn, tocn, uocn, vocn, ssh] + linear variable changes: + - linear variable change name: BalanceSOCA + + weight: + value: 1.00 + +- covariance: + covariance model: ensemble + members from template: + template: + read_from_file: 1 + date: '{{marine_window_middle}}' + basename: ./static_ens/ + ocn_filename: 'ocn.pert.steric.%mem%.nc' + ice_filename: 'ice.%mem%.nc' + state variables: [tocn, socn, ssh, uocn, vocn, cicen, hicen, hsnon] + pattern: '%mem%' + nmembers: '{{marine_number_ensemble_members}}' + localization: + localization method: SABER + saber central block: + saber block name: EXPLICIT_DIFFUSION + active variables: [tocn, socn, ssh] + geometry: + mom6_input_nml: mom_input.nml + fields metadata: ./fields_metadata.yaml + group mapping: + - name: ocean + variables: [tocn, socn, ssh, uocn, vocn] + - name: ice + variables: [cicen, hicen, hsnon] + read: + groups: + - name: ocean + multivariate strategy: duplicated + horizontal: + filename: hz_ocean.nc + vertical: + strategy: duplicated + - name: ice + horizontal: + filename: hz_ice.nc + + weight: + read_from_file: 3 + basename: ./ + ocn_filename: 'ocn.ens_weights.incr.{{marine_window_middle}}.nc' + ice_filename: 'ice.ens_weights.incr.{{marine_window_middle}}.nc' + date: '{{marine_window_middle}}' diff --git a/model/marine/marine_background_error_static_diffusion.yaml.j2 b/model/marine/marine_background_error_static_diffusion.yaml.j2 new file mode 100644 index 0000000..a2d7e05 --- /dev/null +++ b/model/marine/marine_background_error_static_diffusion.yaml.j2 @@ -0,0 +1,42 @@ +covariance model: SABER +saber central block: + saber block name: EXPLICIT_DIFFUSION + active variables: [tocn, socn, ssh, cicen] + geometry: + mom6_input_nml: mom_input.nml + fields metadata: ./fields_metadata.yaml + group mapping: + - name: ocean + variables: + - tocn + - socn + - ssh + - name: ice + variables: + - cicen + read: + groups: + - name: ocean + horizontal: + filename: hz_ocean.nc + vertical: + filename: vt_ocean.nc + - name: ice + horizontal: + filename: hz_ice.nc + +saber outer blocks: +- saber block name: StdDev + read: + model file: + date: '{{marine_stddev_time}}' + basename: ./ + ocn_filename: 'ocn.bkgerr_stddev.incr.{{marine_stddev_time}}.nc' + ice_filename: 'ice.bkgerr_stddev.incr.{{marine_stddev_time}}.nc' + read_from_file: 3 + +linear variable change: + input variables: [cicen, hicen, hsnon, socn, tocn, uocn, vocn, ssh] + output variables: [cicen, hicen, hsnon, socn, tocn, uocn, vocn, ssh] + linear variable changes: + - linear variable change name: BalanceSOCA diff --git a/model/marine/marine_final_increment.yaml.j2 b/model/marine/marine_final_increment.yaml.j2 new file mode 100644 index 0000000..ead7a3e --- /dev/null +++ b/model/marine/marine_final_increment.yaml.j2 @@ -0,0 +1,9 @@ +output: + state component: + datadir: {{marine_final_increment_dir}} + date: '{{marine_window_begin}}' + exp: {{marine_final_increment_exp}} + type: incr +geometry: + mom6_input_nml: mom_input.nml + fields metadata: {{marine_soca_files_path}}/fields_metadata.yaml diff --git a/model/marine/marine_geometry_background.yaml.j2 b/model/marine/marine_geometry_background.yaml.j2 new file mode 100644 index 0000000..2ab3b67 --- /dev/null +++ b/model/marine/marine_geometry_background.yaml.j2 @@ -0,0 +1,2 @@ +mom6_input_nml: mom_input.nml +fields metadata: {{marine_soca_files_path}}/fields_metadata.yaml diff --git a/model/marine/marine_model_pseudo.yaml.j2 b/model/marine/marine_model_pseudo.yaml.j2 new file mode 100644 index 0000000..9188340 --- /dev/null +++ b/model/marine/marine_model_pseudo.yaml.j2 @@ -0,0 +1,10 @@ +name: PseudoModel +tstep: {{marine_forecast_timestep}} +states: +{% for marine_pseudo_model_state in marine_pseudo_model_states %} +- date: '{{ marine_pseudo_model_state.date }}' + basename: '{{ marine_pseudo_model_state.basename }}' + ocn_filename: '{{ marine_pseudo_model_state.ocn_filename }}' + ice_filename: '{{ marine_pseudo_model_state.ice_filename }}' + read_from_file: {{ marine_pseudo_model_state.read_from_file }} +{% endfor %} diff --git a/model/marine/marine_output.yaml.j2 b/model/marine/marine_output.yaml.j2 new file mode 100644 index 0000000..2c8e2ad --- /dev/null +++ b/model/marine/marine_output.yaml.j2 @@ -0,0 +1,4 @@ +datadir: {{marine_output_dir}} +exp: {{marine_output_exp}} +type: an +frequency: {{marine_output_freq}} diff --git a/model/snow/geometry.yaml.j2 b/model/snow/geometry.yaml.j2 deleted file mode 100644 index e69de29..0000000 diff --git a/model/marine/geometry.yaml.j2 b/model/snow/snow_geometry.yaml.j2 similarity index 100% rename from model/marine/geometry.yaml.j2 rename to model/snow/snow_geometry.yaml.j2 diff --git a/observations/atmosphere-lgetkf/amsua_n19.yaml.j2 b/observations/atmosphere-lgetkf/amsua_n19.yaml.j2 index eff404a..15f4846 100644 --- a/observations/atmosphere-lgetkf/amsua_n19.yaml.j2 +++ b/observations/atmosphere-lgetkf/amsua_n19.yaml.j2 @@ -10,11 +10,11 @@ obsdatain: engine: type: H5File - obsfile: "{{atm_obsdatain_path}}/{{atm_obsdatain_prefix}}{{observation_from_jcb}}{{atm_obsdatain_suffix}}" + obsfile: "{{atmosphere_obsdatain_path}}/{{atmosphere_obsdatain_prefix}}{{observation_from_jcb}}{{atmosphere_obsdatain_suffix}}" obsdataout: engine: type: H5File - obsfile: "{{atm_obsdataout_path}}/{{atm_obsdataout_prefix}}{{observation_from_jcb}}{{atm_obsdataout_suffix}}" + obsfile: "{{atmosphere_obsdataout_path}}/{{atmosphere_obsdataout_prefix}}{{observation_from_jcb}}{{atmosphere_obsdataout_suffix}}" io pool: max pool size: 1 simulated variables: [brightnessTemperature] @@ -40,14 +40,14 @@ # Observation Bias Correction (VarBC) # ----------------------------------- obs bias: - input file: "{{atm_obsbiasin_path}}/{{atm_obsbiasin_prefix}}{{observation_from_jcb}}{{atm_obsbiasin_suffix}}" - output file: "{{atm_obsbiasout_path}}/{{atm_obsbiasout_prefix}}{{observation_from_jcb}}{{atm_obsbiasout_suffix}}" + input file: "{{atmosphere_obsbiasin_path}}/{{atmosphere_obsbiasin_prefix}}{{observation_from_jcb}}{{atmosphere_obsbiasin_suffix}}" + output file: "{{atmosphere_obsbiasout_path}}/{{atmosphere_obsbiasout_prefix}}{{observation_from_jcb}}{{atmosphere_obsbiasout_suffix}}" variational bc: predictors: - name: constant - name: lapseRate order: 2 - tlapse: &{{observation_from_jcb}}_tlapse "{{atm_obsbiasin_path}}/{{atm_obstlapsein_prefix}}{{observation_from_jcb}}{{atm_obstlapsein_suffix}}" + tlapse: &{{observation_from_jcb}}_tlapse "{{atmosphere_obsbiasin_path}}/{{atmosphere_obstlapsein_prefix}}{{observation_from_jcb}}{{atmosphere_obstlapsein_suffix}}" - name: lapseRate tlapse: *{{observation_from_jcb}}_tlapse - name: emissivityJacobian @@ -64,11 +64,11 @@ step size: 1.0e-4 largest analysis variance: 10000.0 prior: - input file: "{{atm_obsbiasin_path}}/{{atm_obsbiascovin_prefix}}{{observation_from_jcb}}{{atm_obsbiascovin_suffix}}" + input file: "{{atmosphere_obsbiasin_path}}/{{atmosphere_obsbiascovin_prefix}}{{observation_from_jcb}}{{atmosphere_obsbiascovin_suffix}}" inflation: ratio: 1.1 ratio for small dataset: 2.0 - output file: "{{atm_obsbiasout_path}}/{{atm_obsbiascovout_prefix}}{{observation_from_jcb}}{{atm_obsbiascovout_suffix}}" + output file: "{{atmosphere_obsbiasout_path}}/{{atmosphere_obsbiascovout_prefix}}{{observation_from_jcb}}{{atmosphere_obsbiascovout_suffix}}" # Observation Filters (QC) # ------------------------ @@ -101,7 +101,7 @@ # GeoVaLs for Driving Observation Operators (testing mode) # -------------------------------------------------------- geovals: - filename: "{{atm_obsdatain_path}}/{{atm_obsdatain_prefix}}{{observation_from_jcb}}_geoval{{atm_obsdatain_suffix}}" + filename: "{{atmosphere_obsdatain_path}}/{{atmosphere_obsdatain_prefix}}{{observation_from_jcb}}_geoval{{atmosphere_obsdatain_suffix}}" # Passed benchmark for UFO testing # -------------------------------- diff --git a/observations/atmosphere-lgetkf/ascatw.ascat_metop-b.yaml.j2 b/observations/atmosphere-lgetkf/ascatw.ascat_metop-b.yaml.j2 index a35d6dc..788ead9 100644 --- a/observations/atmosphere-lgetkf/ascatw.ascat_metop-b.yaml.j2 +++ b/observations/atmosphere-lgetkf/ascatw.ascat_metop-b.yaml.j2 @@ -10,11 +10,11 @@ obsdatain: engine: type: H5File - obsfile: "{{atm_obsdatain_path}}/{{atm_obsdatain_prefix}}{{observation_from_jcb}}{{atm_obsdatain_suffix}}" + obsfile: "{{atmosphere_obsdatain_path}}/{{atmosphere_obsdatain_prefix}}{{observation_from_jcb}}{{atmosphere_obsdatain_suffix}}" obsdataout: engine: type: H5File - obsfile: "{{atm_obsdataout_path}}/{{atm_obsdataout_prefix}}{{observation_from_jcb}}{{atm_obsdataout_suffix}}" + obsfile: "{{atmosphere_obsdataout_path}}/{{atmosphere_obsdataout_prefix}}{{observation_from_jcb}}{{atmosphere_obsdataout_suffix}}" io pool: max pool size: 1 simulated variables: [windEastward, windNorthward] @@ -276,7 +276,7 @@ # this inflation to take place both nvqc must be .true. AND ibeta must be >0, see: # https://github.com/NOAA-EMC/GSI/blob/14ae595af1b03471287d322596d35c0665336e95/src/gsi/setupw.f90#L1229 # GSI settings must have ibeta>0 for satwinds, but not for scatwinds. - # + # # If the ibeta settings for scatwinds were to change while nvqc remained .true., we would extend YAML to # an additional filter that inflates final ob-errors across-the-board by 1/0.8 = 1.25. NOTE: the nvqc setting # is defaulted to .false. in GSI code, but is overridden in global operational configuration. See: @@ -316,7 +316,7 @@ # GeoVaLs for Driving Observation Operators (testing mode) # -------------------------------------------------------- geovals: - filename: "{{atm_obsdatain_path}}/{{atm_obsdatain_prefix}}{{observation_from_jcb}}_geoval{{atm_obsdatain_suffix}}" + filename: "{{atmosphere_obsdatain_path}}/{{atmosphere_obsdatain_prefix}}{{observation_from_jcb}}_geoval{{atmosphere_obsdatain_suffix}}" # Passed benchmark for UFO testing # -------------------------------- diff --git a/observations/atmosphere-lgetkf/conv_ps.yaml.j2 b/observations/atmosphere-lgetkf/conv_ps.yaml.j2 index 014fa52..0ca33b1 100644 --- a/observations/atmosphere-lgetkf/conv_ps.yaml.j2 +++ b/observations/atmosphere-lgetkf/conv_ps.yaml.j2 @@ -10,11 +10,11 @@ obsdatain: engine: type: H5File - obsfile: "{{atm_obsdatain_path}}/{{atm_obsdatain_prefix}}{{observation_from_jcb}}{{atm_obsdatain_suffix}}" + obsfile: "{{atmosphere_obsdatain_path}}/{{atmosphere_obsdatain_prefix}}{{observation_from_jcb}}{{atmosphere_obsdatain_suffix}}" obsdataout: engine: type: H5File - obsfile: "{{atm_obsdataout_path}}/{{atm_obsdataout_prefix}}{{observation_from_jcb}}{{atm_obsdataout_suffix}}" + obsfile: "{{atmosphere_obsdataout_path}}/{{atmosphere_obsdataout_prefix}}{{observation_from_jcb}}{{atmosphere_obsdataout_suffix}}" io pool: max pool size: 1 simulated variables: [stationPressure] @@ -40,7 +40,7 @@ # Observation Prior Filters (QC) # ------------------------------ obs prior filters: - # Initial Error Assignments for SFC Observations + # Initial Error Assignments for SFC Observations - filter: Perform Action filter variables: - name: stationPressure @@ -73,7 +73,7 @@ name: ObsValue/stationPressure xvals: [85000, 80000, 75000, 70000, 65000, 60000, 55000] errors: [120, 140, 140, 140, 140, 140, 1.0e+11] - # Initial Error Assignments for SFCSHIP Observations + # Initial Error Assignments for SFCSHIP Observations - filter: Perform Action filter variables: - name: stationPressure @@ -124,7 +124,7 @@ type: float source variable: ObsErrorData/stationPressure - # Set observation quality-realted variables + # Set observation quality-realted variables # Create PreQC group variable (pqm in GSI read_prepbufr) - filter: Variable Assignment assignments: @@ -203,7 +203,7 @@ # - variable: # name: ObsType/stationPressure # is_in: 183 - ## Reject surface pressure below 500 hPa + ## Reject surface pressure below 500 hPa #- filter: Bounds Check # filter variables: # - name: stationPressure @@ -241,7 +241,7 @@ variable: stationPressure # Reduce effective observation error based on obs type and subtype - # In this case: reduce effective obs error for buoy + # In this case: reduce effective obs error for buoy - filter: Perform Action filter variables: - name: stationPressure @@ -256,7 +256,7 @@ name: inflate error inflation factor: 0.7 - # Calculate obs error inflation factors for large discrepancies between model and observations + # Calculate obs error inflation factors for large discrepancies between model and observations - filter: Variable Assignment assignments: - name: ObsErrorFactorSfcPressure/stationPressure @@ -344,7 +344,7 @@ inflation variable: name: ObsErrorFactorDuplicateCheck/stationPressure - # Reject data based on PreUseFlag (usage in GSI) + # Reject data based on PreUseFlag (usage in GSI) - filter: Perform Action filter variables: - name: stationPressure @@ -353,7 +353,7 @@ is_not_in: 0, 1 action: name: reject - # End of Filters + # End of Filters # Observation Localizations (LocalEnsembleDA) # ------------------------------------------- @@ -366,7 +366,7 @@ # GeoVaLs for Driving Observation Operators (testing mode) # -------------------------------------------------------- geovals: - filename: "{{atm_obsdatain_path}}/{{atm_obsdatain_prefix}}{{observation_from_jcb}}_geoval{{atm_obsdatain_suffix}}" + filename: "{{atmosphere_obsdatain_path}}/{{atmosphere_obsdatain_prefix}}{{observation_from_jcb}}_geoval{{atmosphere_obsdatain_suffix}}" # Passed benchmark for UFO testing # -------------------------------- diff --git a/observations/atmosphere-lgetkf/gnssro.yaml.j2 b/observations/atmosphere-lgetkf/gnssro.yaml.j2 index 5075a20..b26d992 100644 --- a/observations/atmosphere-lgetkf/gnssro.yaml.j2 +++ b/observations/atmosphere-lgetkf/gnssro.yaml.j2 @@ -10,7 +10,7 @@ obsdatain: engine: type: H5File - obsfile: "{{atm_obsdatain_path}}/{{atm_obsdatain_prefix}}{{observation_from_jcb}}{{atm_obsdatain_suffix}}" + obsfile: "{{atmosphere_obsdatain_path}}/{{atmosphere_obsdatain_prefix}}{{observation_from_jcb}}{{atmosphere_obsdatain_suffix}}" # obsgrouping: # group variables: [ "sequenceNumber" ] # sort variable: "impactHeightRO" @@ -18,7 +18,7 @@ obsdataout: engine: type: H5File - obsfile: "{{atm_obsdataout_path}}/{{atm_obsdataout_prefix}}{{observation_from_jcb}}{{atm_obsdataout_suffix}}" + obsfile: "{{atmosphere_obsdataout_path}}/{{atmosphere_obsdataout_prefix}}{{observation_from_jcb}}{{atmosphere_obsdataout_suffix}}" simulated variables: [bendingAngle] # Observation Operator @@ -35,7 +35,7 @@ # ------------------------ obs filters: # Apply gross check using pccf - # Step 0-A: Create Diagnostic Flags + # Step 0-A: Create Diagnostic Flags # Diagnostic flag for pccf - filter: Create Diagnostic Flags filter variables: @@ -126,7 +126,7 @@ minvalue: 8000.1 action: name: reject - #4. assign obs error + #4. assign obs error - filter: ROobserror filter variables: - name: bendingAngle @@ -160,7 +160,7 @@ # GeoVaLs for Driving Observation Operators (testing mode) # -------------------------------------------------------- geovals: - filename: "{{atm_obsdatain_path}}/{{atm_obsdatain_prefix}}{{observation_from_jcb}}_geoval{{atm_obsdatain_suffix}}" + filename: "{{atmosphere_obsdatain_path}}/{{atmosphere_obsdatain_prefix}}{{observation_from_jcb}}_geoval{{atmosphere_obsdatain_suffix}}" # Passed benchmark for UFO testing # -------------------------------- diff --git a/observations/atmosphere-lgetkf/satwnd.abi_goes-16.yaml.j2 b/observations/atmosphere-lgetkf/satwnd.abi_goes-16.yaml.j2 index 17f601c..1b727ad 100644 --- a/observations/atmosphere-lgetkf/satwnd.abi_goes-16.yaml.j2 +++ b/observations/atmosphere-lgetkf/satwnd.abi_goes-16.yaml.j2 @@ -10,11 +10,11 @@ obsdatain: engine: type: H5File - obsfile: "{{atm_obsdatain_path}}/{{atm_obsdatain_prefix}}{{observation_from_jcb}}{{atm_obsdatain_suffix}}" + obsfile: "{{atmosphere_obsdatain_path}}/{{atmosphere_obsdatain_prefix}}{{observation_from_jcb}}{{atmosphere_obsdatain_suffix}}" obsdataout: engine: type: H5File - obsfile: "{{atm_obsdataout_path}}/{{atm_obsdataout_prefix}}{{observation_from_jcb}}{{atm_obsdataout_suffix}}" + obsfile: "{{atmosphere_obsdataout_path}}/{{atmosphere_obsdataout_prefix}}{{observation_from_jcb}}{{atmosphere_obsdataout_suffix}}" io pool: max pool size: 1 simulated variables: [windEastward, windNorthward] @@ -40,7 +40,7 @@ Transform: SurfaceWindScalingPressure SkipWhenNoObs: false - # Calculate error inflation factor for duplicate observations + # Calculate error inflation factor for duplicate observations #- filter: Variable Assignment # assignments: # - name: ObsErrorFactorDuplicateCheck/windEastward @@ -191,7 +191,7 @@ name: reject # GSI read routine QC (part-1) - # Exclude Type 251 (VIS) --- obs tossed without passing to setup routine + # Exclude Type 251 (VIS) --- obs tossed without passing to setup routine - filter: Perform Action filter variables: - name: windEastward @@ -227,7 +227,7 @@ action: name: reject - # Exclude data over non-water surface type where latitude > 20N for Type 240 (IRSW) and Type 245 (IRLW) --- obs tossed and not passed to setup routine + # Exclude data over non-water surface type where latitude > 20N for Type 240 (IRSW) and Type 245 (IRLW) --- obs tossed and not passed to setup routine # Notes: This check was missing, so added (eliu) # Replace land_type_index_NPOSS with water_area_fraction (eliu) - filter: Bounds Check @@ -374,7 +374,7 @@ # GSI setupw routine QC # Reject any ob Type [240–260] when pressure greater than 950 mb. - # CLEARED: minvalue/maxvalue are >=/<=, not >/<, so editing range by 1 Pa + # CLEARED: minvalue/maxvalue are >=/<=, not >/<, so editing range by 1 Pa - filter: Bounds Check filter variables: - name: windEastward @@ -420,8 +420,8 @@ # Multiple satellite platforms, reject when pressure is more than 50 mb above tropopause. # CLEARED: minvalue is rejecting <, not <= as per a Perform Action, so threshold is unchanged - # Notes (eliu): This tropopause check reject too many obs; probably due to tropopause pressure estimation - # Turn this check off for now. + # Notes (eliu): This tropopause check reject too many obs; probably due to tropopause pressure estimation + # Turn this check off for now. # Need to check if troposphere pressure was implemented correctly in fv3-jed - filter: Difference Check filter variables: @@ -433,7 +433,7 @@ action: name: reject - # GOES (247) reject any observation with a /=0 surface type (non-water + # GOES (247) reject any observation with a /=0 surface type (non-water # surface) within 110 hPa of the surface pressure (as part of the LNVD # check). # NOT EXPLICITLY CLEARED: No obs in this range in file, so 0 Bounds Check rejects (which is correct) but essentially untested # Notes (eliu): Replace land_type_index_NPOESS with land_area_fraction. @@ -570,7 +570,7 @@ # configuration, see: https://github.com/NOAA-EMC/global-workflow/blob/d5ae3328fa4041b177357b1133f6b92e81c859d7/scripts/exglobal_atmos_analysis.sh#L750 # This setting activates Line 1229 of setupw.f90 to scale ratio_errors by 0.8, which is applied in # the denominator of the final ob-error, so 1/0.8 = 1.25 factor of ob-error inflation. - # + # # If this nvqc functionality were to be switched off (i.e. if variational qc were to be turned off), # you would want to remove this last inflation filter. #- filter: Perform Action @@ -591,7 +591,7 @@ # action: # name: inflate error # inflation factor: 1.25 - # End of Filters + # End of Filters # Observation Localizations (LocalEnsembleDA) # ------------------------------------------- @@ -604,7 +604,7 @@ # GeoVaLs for Driving Observation Operators (testing mode) # -------------------------------------------------------- geovals: - filename: "{{atm_obsdatain_path}}/{{atm_obsdatain_prefix}}{{observation_from_jcb}}_geoval{{atm_obsdatain_suffix}}" + filename: "{{atmosphere_obsdatain_path}}/{{atmosphere_obsdatain_prefix}}{{observation_from_jcb}}_geoval{{atmosphere_obsdatain_suffix}}" # Passed benchmark for UFO testing # -------------------------------- diff --git a/observations/atmosphere-lgetkf/satwnd.ahi_h8.yaml.j2 b/observations/atmosphere-lgetkf/satwnd.ahi_h8.yaml.j2 index 7664fcc..a745ee1 100644 --- a/observations/atmosphere-lgetkf/satwnd.ahi_h8.yaml.j2 +++ b/observations/atmosphere-lgetkf/satwnd.ahi_h8.yaml.j2 @@ -10,11 +10,11 @@ obsdatain: engine: type: H5File - obsfile: "{{atm_obsdatain_path}}/{{atm_obsdatain_prefix}}{{observation_from_jcb}}{{atm_obsdatain_suffix}}" + obsfile: "{{atmosphere_obsdatain_path}}/{{atmosphere_obsdatain_prefix}}{{observation_from_jcb}}{{atmosphere_obsdatain_suffix}}" obsdataout: engine: type: H5File - obsfile: "{{atm_obsdataout_path}}/{{atm_obsdataout_prefix}}{{observation_from_jcb}}{{atm_obsdataout_suffix}}" + obsfile: "{{atmosphere_obsdataout_path}}/{{atmosphere_obsdataout_prefix}}{{observation_from_jcb}}{{atmosphere_obsdataout_suffix}}" io pool: max pool size: 1 simulated variables: [windEastward, windNorthward] @@ -53,7 +53,7 @@ Transform: SurfaceWindScalingPressure SkipWhenNoObs: false - # Calculate error inflation factor for duplicate observations + # Calculate error inflation factor for duplicate observations #- filter: Variable Assignment # assignments: # - name: ObsErrorFactorDuplicateCheck/windEastward @@ -227,7 +227,7 @@ # GSI setupw routine QC # Reject any ob Type [240–260] when pressure greater than 950 mb. - # CLEARED: minvalue/maxvalue are >=/<=, not >/<, so editing range by 1 Pa + # CLEARED: minvalue/maxvalue are >=/<=, not >/<, so editing range by 1 Pa - filter: Bounds Check filter variables: - name: windEastward @@ -287,8 +287,8 @@ # Multiple satellite platforms, reject when pressure is more than 50 mb above tropopause. # CLEARED: minvalue is rejecting <, not <= as per a Perform Action, so threshold is unchanged - # Notes (eliu): This tropopause check reject too many obs; probably due to tropopause pressure estimation - # Turn this check off for now. + # Notes (eliu): This tropopause check reject too many obs; probably due to tropopause pressure estimation + # Turn this check off for now. # Need to check if troposphere pressure was implemented correctly in fv3-jed - filter: Difference Check filter variables: @@ -401,7 +401,7 @@ # configuration, see: https://github.com/NOAA-EMC/global-workflow/blob/d5ae3328fa4041b177357b1133f6b92e81c859d7/scripts/exglobal_atmos_analysis.sh#L750 # This setting activates Line 1229 of setupw.f90 to scale ratio_errors by 0.8, which is applied in # the denominator of the final ob-error, so 1/0.8 = 1.25 factor of ob-error inflation. - # + # # If this nvqc functionality were to be switched off (i.e. if variational qc were to be turned off), # you would want to remove this last inflation filter. #- filter: Perform Action @@ -422,7 +422,7 @@ # action: # name: inflate error # inflation factor: 1.25 - # End of Filters + # End of Filters # Observation Localizations (LocalEnsembleDA) # ------------------------------------------- @@ -435,7 +435,7 @@ # GeoVaLs for Driving Observation Operators (testing mode) # -------------------------------------------------------- geovals: - filename: "{{atm_obsdatain_path}}/{{atm_obsdatain_prefix}}{{observation_from_jcb}}_geoval{{atm_obsdatain_suffix}}" + filename: "{{atmosphere_obsdatain_path}}/{{atmosphere_obsdatain_prefix}}{{observation_from_jcb}}_geoval{{atmosphere_obsdatain_suffix}}" # Passed benchmark for UFO testing # -------------------------------- diff --git a/observations/atmosphere-lgetkf/sondes.yaml.j2 b/observations/atmosphere-lgetkf/sondes.yaml.j2 index 650be32..0bc7193 100644 --- a/observations/atmosphere-lgetkf/sondes.yaml.j2 +++ b/observations/atmosphere-lgetkf/sondes.yaml.j2 @@ -10,11 +10,11 @@ obsdatain: engine: type: H5File - obsfile: "{{atm_obsdatain_path}}/{{atm_obsdatain_prefix}}{{observation_from_jcb}}{{atm_obsdatain_suffix}}" + obsfile: "{{atmosphere_obsdatain_path}}/{{atmosphere_obsdatain_prefix}}{{observation_from_jcb}}{{atmosphere_obsdatain_suffix}}" obsdataout: engine: type: H5File - obsfile: "{{atm_obsdataout_path}}/{{atm_obsdataout_prefix}}{{observation_from_jcb}}{{atm_obsdataout_suffix}}" + obsfile: "{{atmosphere_obsdataout_path}}/{{atmosphere_obsdataout_prefix}}{{observation_from_jcb}}{{atmosphere_obsdataout_suffix}}" io pool: max pool size: 1 simulated variables: [windEastward, windNorthward, airTemperature] @@ -52,7 +52,7 @@ # GeoVaLs for Driving Observation Operators (testing mode) # -------------------------------------------------------- geovals: - filename: "{{atm_obsdatain_path}}/{{atm_obsdatain_prefix}}{{observation_from_jcb}}_geoval{{atm_obsdatain_suffix}}" + filename: "{{atmosphere_obsdatain_path}}/{{atmosphere_obsdatain_prefix}}{{observation_from_jcb}}_geoval{{atmosphere_obsdatain_suffix}}" # Passed benchmark for UFO testing # -------------------------------- diff --git a/observations/atmosphere/aircraft.yaml.j2 b/observations/atmosphere/aircraft.yaml.j2 index 22b65c0..f5e0817 100644 --- a/observations/atmosphere/aircraft.yaml.j2 +++ b/observations/atmosphere/aircraft.yaml.j2 @@ -7,7 +7,7 @@ obsdatain: engine: type: H5File - obsfile: "{{atm_obsdatain_path}}/{{atm_obsdatain_prefix}}{{observation_from_jcb}}{{atm_obsdatain_suffix}}" + obsfile: "{{atmosphere_obsdatain_path}}/{{atmosphere_obsdatain_prefix}}{{observation_from_jcb}}{{atmosphere_obsdatain_suffix}}" obsgrouping: group variables: ["stationIdentification"] sort variable: "pressure" @@ -15,7 +15,7 @@ obsdataout: engine: type: H5File - obsfile: "{{atm_obsdataout_path}}/{{atm_obsdataout_prefix}}{{observation_from_jcb}}{{atm_obsdataout_suffix}}" + obsfile: "{{atmosphere_obsdataout_path}}/{{atmosphere_obsdataout_prefix}}{{observation_from_jcb}}{{atmosphere_obsdataout_suffix}}" io pool: max pool size: 1 simulated variables: [windEastward, windNorthward, airTemperature, specificHumidity] @@ -349,7 +349,7 @@ # GeoVaLs for Driving Observation Operators (testing mode) # -------------------------------------------------------- geovals: - filename: "{{atm_obsdatain_path}}/{{atm_obsdatain_prefix}}{{observation_from_jcb}}_geoval{{atm_obsdatain_suffix}}" + filename: "{{atmosphere_obsdatain_path}}/{{atmosphere_obsdatain_prefix}}{{observation_from_jcb}}_geoval{{atmosphere_obsdatain_suffix}}" # Passed benchmark for UFO testing # -------------------------------- diff --git a/observations/atmosphere/amsua_n19.yaml.j2 b/observations/atmosphere/amsua_n19.yaml.j2 index d8dd23f..dba4162 100644 --- a/observations/atmosphere/amsua_n19.yaml.j2 +++ b/observations/atmosphere/amsua_n19.yaml.j2 @@ -7,11 +7,11 @@ obsdatain: engine: type: H5File - obsfile: "{{atm_obsdatain_path}}/{{atm_obsdatain_prefix}}{{observation_from_jcb}}{{atm_obsdatain_suffix}}" + obsfile: "{{atmosphere_obsdatain_path}}/{{atmosphere_obsdatain_prefix}}{{observation_from_jcb}}{{atmosphere_obsdatain_suffix}}" obsdataout: engine: type: H5File - obsfile: "{{atm_obsdataout_path}}/{{atm_obsdataout_prefix}}{{observation_from_jcb}}{{atm_obsdataout_suffix}}" + obsfile: "{{atmosphere_obsdataout_path}}/{{atmosphere_obsdataout_prefix}}{{observation_from_jcb}}{{atmosphere_obsdataout_suffix}}" io pool: max pool size: 1 simulated variables: [brightnessTemperature] @@ -32,14 +32,14 @@ # Observation Bias Correction (VarBC) # ----------------------------------- obs bias: - input file: "{{atm_obsbiasin_path}}/{{atm_obsbiasin_prefix}}{{observation_from_jcb}}{{atm_obsbiasin_suffix}}" - output file: "{{atm_obsbiasout_path}}/{{atm_obsbiasout_prefix}}{{observation_from_jcb}}{{atm_obsbiasout_suffix}}" + input file: "{{atmosphere_obsbiasin_path}}/{{atmosphere_obsbiasin_prefix}}{{observation_from_jcb}}{{atmosphere_obsbiasin_suffix}}" + output file: "{{atmosphere_obsbiasout_path}}/{{atmosphere_obsbiasout_prefix}}{{observation_from_jcb}}{{atmosphere_obsbiasout_suffix}}" variational bc: predictors: - name: constant - name: lapseRate order: 2 - tlapse: &{{observation_from_jcb}}_tlapse "{{atm_obsbiasin_path}}/{{atm_obstlapsein_prefix}}{{observation_from_jcb}}{{atm_obstlapsein_suffix}}" + tlapse: &{{observation_from_jcb}}_tlapse "{{atmosphere_obsbiasin_path}}/{{atmosphere_obstlapsein_prefix}}{{observation_from_jcb}}{{atmosphere_obstlapsein_suffix}}" - name: lapseRate tlapse: *{{observation_from_jcb}}_tlapse - name: emissivityJacobian @@ -56,11 +56,11 @@ step size: 1.0e-4 largest analysis variance: 10000.0 prior: - input file: "{{atm_obsbiasin_path}}/{{atm_obsbiascovin_prefix}}{{observation_from_jcb}}{{atm_obsbiascovin_suffix}}" + input file: "{{atmosphere_obsbiasin_path}}/{{atmosphere_obsbiascovin_prefix}}{{observation_from_jcb}}{{atmosphere_obsbiascovin_suffix}}" inflation: ratio: 1.1 ratio for small dataset: 2.0 - output file: "{{atm_obsbiasout_path}}/{{atm_obsbiascovout_prefix}}{{observation_from_jcb}}{{atm_obsbiascovout_suffix}}" + output file: "{{atmosphere_obsbiasout_path}}/{{atmosphere_obsbiascovout_prefix}}{{observation_from_jcb}}{{atmosphere_obsbiascovout_suffix}}" # Observation Filters (QC) # ------------------------ @@ -339,7 +339,7 @@ # GeoVaLs for Driving Observation Operators (testing mode) # -------------------------------------------------------- geovals: - filename: "{{atm_obsdatain_path}}/{{atm_obsdatain_prefix}}{{observation_from_jcb}}_geoval{{atm_obsdatain_suffix}}" + filename: "{{atmosphere_obsdatain_path}}/{{atmosphere_obsdatain_prefix}}{{observation_from_jcb}}_geoval{{atmosphere_obsdatain_suffix}}" # Passed benchmark for UFO testing # -------------------------------- diff --git a/observations/atmosphere/ascatw.ascat_metop-b.yaml.j2 b/observations/atmosphere/ascatw.ascat_metop-b.yaml.j2 index dfcfc60..bb3d5de 100644 --- a/observations/atmosphere/ascatw.ascat_metop-b.yaml.j2 +++ b/observations/atmosphere/ascatw.ascat_metop-b.yaml.j2 @@ -7,11 +7,11 @@ obsdatain: engine: type: H5File - obsfile: "{{atm_obsdatain_path}}/{{atm_obsdatain_prefix}}{{observation_from_jcb}}{{atm_obsdatain_suffix}}" + obsfile: "{{atmosphere_obsdatain_path}}/{{atmosphere_obsdatain_prefix}}{{observation_from_jcb}}{{atmosphere_obsdatain_suffix}}" obsdataout: engine: type: H5File - obsfile: "{{atm_obsdataout_path}}/{{atm_obsdataout_prefix}}{{observation_from_jcb}}{{atm_obsdataout_suffix}}" + obsfile: "{{atmosphere_obsdataout_path}}/{{atmosphere_obsdataout_prefix}}{{observation_from_jcb}}{{atmosphere_obsdataout_suffix}}" io pool: max pool size: 1 simulated variables: [windEastward, windNorthward] @@ -306,7 +306,7 @@ # GeoVaLs for Driving Observation Operators (testing mode) # -------------------------------------------------------- geovals: - filename: "{{atm_obsdatain_path}}/{{atm_obsdatain_prefix}}{{observation_from_jcb}}_geoval{{atm_obsdatain_suffix}}" + filename: "{{atmosphere_obsdatain_path}}/{{atmosphere_obsdatain_prefix}}{{observation_from_jcb}}_geoval{{atmosphere_obsdatain_suffix}}" # Passed benchmark for UFO testing # -------------------------------- diff --git a/observations/atmosphere/atms_n20.yaml.j2 b/observations/atmosphere/atms_n20.yaml.j2 index fe492cf..8398219 100644 --- a/observations/atmosphere/atms_n20.yaml.j2 +++ b/observations/atmosphere/atms_n20.yaml.j2 @@ -7,11 +7,11 @@ obsdatain: engine: type: H5File - obsfile: "{{atm_obsdatain_path}}/{{atm_obsdatain_prefix}}{{observation_from_jcb}}{{atm_obsdatain_suffix}}" + obsfile: "{{atmosphere_obsdatain_path}}/{{atmosphere_obsdatain_prefix}}{{observation_from_jcb}}{{atmosphere_obsdatain_suffix}}" obsdataout: engine: type: H5File - obsfile: "{{atm_obsdataout_path}}/{{atm_obsdataout_prefix}}{{observation_from_jcb}}{{atm_obsdataout_suffix}}" + obsfile: "{{atmosphere_obsdataout_path}}/{{atmosphere_obsdataout_prefix}}{{observation_from_jcb}}{{atmosphere_obsdataout_suffix}}" io pool: max pool size: 1 simulated variables: [brightnessTemperature] @@ -35,14 +35,14 @@ # Observation Bias Correction (VarBC) # ----------------------------------- obs bias: - input file: "{{atm_obsbiasin_path}}/{{atm_obsbiasin_prefix}}{{observation_from_jcb}}{{atm_obsbiasin_suffix}}" - output file: "{{atm_obsbiasout_path}}/{{atm_obsbiasout_prefix}}{{observation_from_jcb}}{{atm_obsbiasout_suffix}}" + input file: "{{atmosphere_obsbiasin_path}}/{{atmosphere_obsbiasin_prefix}}{{observation_from_jcb}}{{atmosphere_obsbiasin_suffix}}" + output file: "{{atmosphere_obsbiasout_path}}/{{atmosphere_obsbiasout_prefix}}{{observation_from_jcb}}{{atmosphere_obsbiasout_suffix}}" variational bc: predictors: - name: constant - name: lapse_rate order: 2 - tlapse: &{{observation_from_jcb}}_tlapse "{{atm_obsbiasin_path}}/{{atm_obstlapsein_prefix}}{{observation_from_jcb}}{{atm_obstlapsein_suffix}}" + tlapse: &{{observation_from_jcb}}_tlapse "{{atmosphere_obsbiasin_path}}/{{atmosphere_obstlapsein_prefix}}{{observation_from_jcb}}{{atmosphere_obstlapsein_suffix}}" - name: lapse_rate tlapse: *{{observation_from_jcb}}_tlapse - name: emissivity @@ -59,11 +59,11 @@ step size: 1.0e-4 largest analysis variance: 10000.0 prior: - input file: "{{atm_obsbiasin_path}}/{{atm_obsbiascovin_prefix}}{{observation_from_jcb}}{{atm_obsbiascovin_suffix}}" + input file: "{{atmosphere_obsbiasin_path}}/{{atmosphere_obsbiascovin_prefix}}{{observation_from_jcb}}{{atmosphere_obsbiascovin_suffix}}" inflation: ratio: 1.1 ratio for small dataset: 2.0 - output file: "{{atm_obsbiasout_path}}/{{atm_obsbiascovout_prefix}}{{observation_from_jcb}}{{atm_obsbiascovout_suffix}}" + output file: "{{atmosphere_obsbiasout_path}}/{{atmosphere_obsbiascovout_prefix}}{{observation_from_jcb}}{{atmosphere_obsbiascovout_suffix}}" # Observation Pre Filters (QC) # ---------------------------- @@ -530,7 +530,7 @@ # GeoVaLs for Driving Observation Operators (testing mode) # -------------------------------------------------------- geovals: - filename: "{{atm_obsdatain_path}}/{{atm_obsdatain_prefix}}{{observation_from_jcb}}_geoval{{atm_obsdatain_suffix}}" + filename: "{{atmosphere_obsdatain_path}}/{{atmosphere_obsdatain_prefix}}{{observation_from_jcb}}_geoval{{atmosphere_obsdatain_suffix}}" # Passed benchmark for UFO testing # -------------------------------- diff --git a/observations/atmosphere/atms_npp.yaml.j2 b/observations/atmosphere/atms_npp.yaml.j2 index 196bbf4..7c68b3e 100644 --- a/observations/atmosphere/atms_npp.yaml.j2 +++ b/observations/atmosphere/atms_npp.yaml.j2 @@ -7,11 +7,11 @@ obsdatain: engine: type: H5File - obsfile: "{{atm_obsdatain_path}}/{{atm_obsdatain_prefix}}{{observation_from_jcb}}{{atm_obsdatain_suffix}}" + obsfile: "{{atmosphere_obsdatain_path}}/{{atmosphere_obsdatain_prefix}}{{observation_from_jcb}}{{atmosphere_obsdatain_suffix}}" obsdataout: engine: type: H5File - obsfile: "{{atm_obsdataout_path}}/{{atm_obsdataout_prefix}}{{observation_from_jcb}}{{atm_obsdataout_suffix}}" + obsfile: "{{atmosphere_obsdataout_path}}/{{atmosphere_obsdataout_prefix}}{{observation_from_jcb}}{{atmosphere_obsdataout_suffix}}" io pool: max pool size: 1 simulated variables: [brightnessTemperature] @@ -35,14 +35,14 @@ # Observation Bias Correction (VarBC) # ----------------------------------- obs bias: - input file: "{{atm_obsbiasin_path}}/{{atm_obsbiasin_prefix}}{{observation_from_jcb}}{{atm_obsbiasin_suffix}}" - output file: "{{atm_obsbiasout_path}}/{{atm_obsbiasout_prefix}}{{observation_from_jcb}}{{atm_obsbiasout_suffix}}" + input file: "{{atmosphere_obsbiasin_path}}/{{atmosphere_obsbiasin_prefix}}{{observation_from_jcb}}{{atmosphere_obsbiasin_suffix}}" + output file: "{{atmosphere_obsbiasout_path}}/{{atmosphere_obsbiasout_prefix}}{{observation_from_jcb}}{{atmosphere_obsbiasout_suffix}}" variational bc: predictors: - name: constant - name: lapse_rate order: 2 - tlapse: &{{observation_from_jcb}}_tlapse "{{atm_obsbiasin_path}}/{{atm_obstlapsein_prefix}}{{observation_from_jcb}}{{atm_obstlapsein_suffix}}" + tlapse: &{{observation_from_jcb}}_tlapse "{{atmosphere_obsbiasin_path}}/{{atmosphere_obstlapsein_prefix}}{{observation_from_jcb}}{{atmosphere_obstlapsein_suffix}}" - name: lapse_rate tlapse: *{{observation_from_jcb}}_tlapse - name: emissivity @@ -59,11 +59,11 @@ step size: 1.0e-4 largest analysis variance: 10000.0 prior: - input file: "{{atm_obsbiasin_path}}/{{atm_obsbiascovin_prefix}}{{observation_from_jcb}}{{atm_obsbiascovin_suffix}}" + input file: "{{atmosphere_obsbiasin_path}}/{{atmosphere_obsbiascovin_prefix}}{{observation_from_jcb}}{{atmosphere_obsbiascovin_suffix}}" inflation: ratio: 1.1 ratio for small dataset: 2.0 - output file: "{{atm_obsbiasout_path}}/{{atm_obsbiascovout_prefix}}{{observation_from_jcb}}{{atm_obsbiascovout_suffix}}" + output file: "{{atmosphere_obsbiasout_path}}/{{atmosphere_obsbiascovout_prefix}}{{observation_from_jcb}}{{atmosphere_obsbiascovout_suffix}}" # Observation Pre Filters (QC) # ---------------------------- @@ -548,7 +548,7 @@ # GeoVaLs for Driving Observation Operators (testing mode) # -------------------------------------------------------- geovals: - filename: "{{atm_obsdatain_path}}/{{atm_obsdatain_prefix}}{{observation_from_jcb}}_geoval{{atm_obsdatain_suffix}}" + filename: "{{atmosphere_obsdatain_path}}/{{atmosphere_obsdatain_prefix}}{{observation_from_jcb}}_geoval{{atmosphere_obsdatain_suffix}}" # Passed benchmark for UFO testing # -------------------------------- diff --git a/observations/atmosphere/conv_ps.yaml.j2 b/observations/atmosphere/conv_ps.yaml.j2 index ea52885..d8d90f9 100644 --- a/observations/atmosphere/conv_ps.yaml.j2 +++ b/observations/atmosphere/conv_ps.yaml.j2 @@ -7,11 +7,11 @@ obsdatain: engine: type: H5File - obsfile: "{{atm_obsdatain_path}}/{{atm_obsdatain_prefix}}{{observation_from_jcb}}{{atm_obsdatain_suffix}}" + obsfile: "{{atmosphere_obsdatain_path}}/{{atmosphere_obsdatain_prefix}}{{observation_from_jcb}}{{atmosphere_obsdatain_suffix}}" obsdataout: engine: type: H5File - obsfile: "{{atm_obsdataout_path}}/{{atm_obsdataout_prefix}}{{observation_from_jcb}}{{atm_obsdataout_suffix}}" + obsfile: "{{atmosphere_obsdataout_path}}/{{atmosphere_obsdataout_prefix}}{{observation_from_jcb}}{{atmosphere_obsdataout_suffix}}" io pool: max pool size: 1 simulated variables: [stationPressure] @@ -356,7 +356,7 @@ # GeoVaLs for Driving Observation Operators (testing mode) # -------------------------------------------------------- geovals: - filename: "{{atm_obsdatain_path}}/{{atm_obsdatain_prefix}}{{observation_from_jcb}}_geoval{{atm_obsdatain_suffix}}" + filename: "{{atmosphere_obsdatain_path}}/{{atmosphere_obsdatain_prefix}}{{observation_from_jcb}}_geoval{{atmosphere_obsdatain_suffix}}" # Passed benchmark for UFO testing # -------------------------------- diff --git a/observations/atmosphere/cris-fsr_n20.yaml.j2 b/observations/atmosphere/cris-fsr_n20.yaml.j2 index 547e820..9e1fb87 100644 --- a/observations/atmosphere/cris-fsr_n20.yaml.j2 +++ b/observations/atmosphere/cris-fsr_n20.yaml.j2 @@ -7,11 +7,11 @@ obsdatain: engine: type: H5File - obsfile: "{{atm_obsdatain_path}}/{{atm_obsdatain_prefix}}{{observation_from_jcb}}{{atm_obsdatain_suffix}}" + obsfile: "{{atmosphere_obsdatain_path}}/{{atmosphere_obsdatain_prefix}}{{observation_from_jcb}}{{atmosphere_obsdatain_suffix}}" obsdataout: engine: type: H5File - obsfile: "{{atm_obsdataout_path}}/{{atm_obsdataout_prefix}}{{observation_from_jcb}}{{atm_obsdataout_suffix}}" + obsfile: "{{atmosphere_obsdataout_path}}/{{atmosphere_obsdataout_prefix}}{{observation_from_jcb}}{{atmosphere_obsdataout_suffix}}" io pool: max pool size: 1 simulated variables: [brightness_temperature] @@ -32,14 +32,14 @@ # Observation Bias Correction (VarBC) # ----------------------------------- obs bias: - input file: "{{atm_obsbiasin_path}}/{{atm_obsbiasin_prefix}}{{observation_from_jcb}}{{atm_obsbiasin_suffix}}" - output file: "{{atm_obsbiasout_path}}/{{atm_obsbiasout_prefix}}{{observation_from_jcb}}{{atm_obsbiasout_suffix}}" + input file: "{{atmosphere_obsbiasin_path}}/{{atmosphere_obsbiasin_prefix}}{{observation_from_jcb}}{{atmosphere_obsbiasin_suffix}}" + output file: "{{atmosphere_obsbiasout_path}}/{{atmosphere_obsbiasout_prefix}}{{observation_from_jcb}}{{atmosphere_obsbiasout_suffix}}" variational bc: predictors: - name: constant - name: lapse_rate order: 2 - tlapse: &{{observation_from_jcb}}_tlapse "{{atm_obsbiasin_path}}/{{atm_obstlapsein_prefix}}{{observation_from_jcb}}{{atm_obstlapsein_suffix}}" + tlapse: &{{observation_from_jcb}}_tlapse "{{atmosphere_obsbiasin_path}}/{{atmosphere_obstlapsein_prefix}}{{observation_from_jcb}}{{atmosphere_obstlapsein_suffix}}" - name: lapse_rate tlapse: *{{observation_from_jcb}}_tlapse - name: emissivity @@ -56,11 +56,11 @@ step size: 1.0e-4 largest analysis variance: 10000.0 prior: - input file: "{{atm_obsbiasin_path}}/{{atm_obsbiascovin_prefix}}{{observation_from_jcb}}{{atm_obsbiascovin_suffix}}" + input file: "{{atmosphere_obsbiasin_path}}/{{atmosphere_obsbiascovin_prefix}}{{observation_from_jcb}}{{atmosphere_obsbiascovin_suffix}}" inflation: ratio: 1.1 ratio for small dataset: 2.0 - output file: "{{atm_obsbiasout_path}}/{{atm_obsbiascovout_prefix}}{{observation_from_jcb}}{{atm_obsbiascovout_suffix}}" + output file: "{{atmosphere_obsbiasout_path}}/{{atmosphere_obsbiascovout_prefix}}{{observation_from_jcb}}{{atmosphere_obsbiascovout_suffix}}" # #obs filters: ## Wavenumber Check @@ -439,7 +439,7 @@ # GeoVaLs for Driving Observation Operators (testing mode) # -------------------------------------------------------- geovals: - filename: "{{atm_obsdatain_path}}/{{atm_obsdatain_prefix}}{{observation_from_jcb}}_geoval{{atm_obsdatain_suffix}}" + filename: "{{atmosphere_obsdatain_path}}/{{atmosphere_obsdatain_prefix}}{{observation_from_jcb}}_geoval{{atmosphere_obsdatain_suffix}}" # Passed benchmark for UFO testing # -------------------------------- diff --git a/observations/atmosphere/cris-fsr_npp.yaml.j2 b/observations/atmosphere/cris-fsr_npp.yaml.j2 index 90194ca..be21f78 100644 --- a/observations/atmosphere/cris-fsr_npp.yaml.j2 +++ b/observations/atmosphere/cris-fsr_npp.yaml.j2 @@ -7,11 +7,11 @@ obsdatain: engine: type: H5File - obsfile: "{{atm_obsdatain_path}}/{{atm_obsdatain_prefix}}{{observation_from_jcb}}{{atm_obsdatain_suffix}}" + obsfile: "{{atmosphere_obsdatain_path}}/{{atmosphere_obsdatain_prefix}}{{observation_from_jcb}}{{atmosphere_obsdatain_suffix}}" obsdataout: engine: type: H5File - obsfile: "{{atm_obsdataout_path}}/{{atm_obsdataout_prefix}}{{observation_from_jcb}}{{atm_obsdataout_suffix}}" + obsfile: "{{atmosphere_obsdataout_path}}/{{atmosphere_obsdataout_prefix}}{{observation_from_jcb}}{{atmosphere_obsdataout_suffix}}" io pool: max pool size: 1 simulated variables: [brightness_temperature] @@ -32,14 +32,14 @@ # Observation Bias Correction (VarBC) # ----------------------------------- obs bias: - input file: "{{atm_obsbiasin_path}}/{{atm_obsbiasin_prefix}}{{observation_from_jcb}}{{atm_obsbiasin_suffix}}" - output file: "{{atm_obsbiasout_path}}/{{atm_obsbiasout_prefix}}{{observation_from_jcb}}{{atm_obsbiasout_suffix}}" + input file: "{{atmosphere_obsbiasin_path}}/{{atmosphere_obsbiasin_prefix}}{{observation_from_jcb}}{{atmosphere_obsbiasin_suffix}}" + output file: "{{atmosphere_obsbiasout_path}}/{{atmosphere_obsbiasout_prefix}}{{observation_from_jcb}}{{atmosphere_obsbiasout_suffix}}" variational bc: predictors: - name: constant - name: lapse_rate order: 2 - tlapse: &{{observation_from_jcb}}_tlapse "{{atm_obsbiasin_path}}/{{atm_obstlapsein_prefix}}{{observation_from_jcb}}{{atm_obstlapsein_suffix}}" + tlapse: &{{observation_from_jcb}}_tlapse "{{atmosphere_obsbiasin_path}}/{{atmosphere_obstlapsein_prefix}}{{observation_from_jcb}}{{atmosphere_obstlapsein_suffix}}" - name: lapse_rate tlapse: *{{observation_from_jcb}}_tlapse - name: emissivity @@ -56,11 +56,11 @@ step size: 1.0e-4 largest analysis variance: 10000.0 prior: - input file: "{{atm_obsbiasin_path}}/{{atm_obsbiascovin_prefix}}{{observation_from_jcb}}{{atm_obsbiascovin_suffix}}" + input file: "{{atmosphere_obsbiasin_path}}/{{atmosphere_obsbiascovin_prefix}}{{observation_from_jcb}}{{atmosphere_obsbiascovin_suffix}}" inflation: ratio: 1.1 ratio for small dataset: 2.0 - output file: "{{atm_obsbiasout_path}}/{{atm_obsbiascovout_prefix}}{{observation_from_jcb}}{{atm_obsbiascovout_suffix}}" + output file: "{{atmosphere_obsbiasout_path}}/{{atmosphere_obsbiascovout_prefix}}{{observation_from_jcb}}{{atmosphere_obsbiascovout_suffix}}" #obs filters: ## Wavenumber Check #- filter: BlackList @@ -438,7 +438,7 @@ # GeoVaLs for Driving Observation Operators (testing mode) # -------------------------------------------------------- geovals: - filename: "{{atm_obsdatain_path}}/{{atm_obsdatain_prefix}}{{observation_from_jcb}}_geoval{{atm_obsdatain_suffix}}" + filename: "{{atmosphere_obsdatain_path}}/{{atmosphere_obsdatain_prefix}}{{observation_from_jcb}}_geoval{{atmosphere_obsdatain_suffix}}" # Passed benchmark for UFO testing # -------------------------------- diff --git a/observations/atmosphere/gnssro.yaml.j2 b/observations/atmosphere/gnssro.yaml.j2 index 3a984c0..6aab75e 100644 --- a/observations/atmosphere/gnssro.yaml.j2 +++ b/observations/atmosphere/gnssro.yaml.j2 @@ -7,7 +7,7 @@ obsdatain: engine: type: H5File - obsfile: "{{atm_obsdatain_path}}/{{atm_obsdatain_prefix}}{{observation_from_jcb}}{{atm_obsdatain_suffix}}" + obsfile: "{{atmosphere_obsdatain_path}}/{{atmosphere_obsdatain_prefix}}{{observation_from_jcb}}{{atmosphere_obsdatain_suffix}}" # obsgrouping: # group variables: [ "sequenceNumber" ] # sort variable: "impactHeightRO" @@ -15,7 +15,7 @@ obsdataout: engine: type: H5File - obsfile: "{{atm_obsdataout_path}}/{{atm_obsdataout_prefix}}{{observation_from_jcb}}{{atm_obsdataout_suffix}}" + obsfile: "{{atmosphere_obsdataout_path}}/{{atmosphere_obsdataout_prefix}}{{observation_from_jcb}}{{atmosphere_obsdataout_suffix}}" simulated variables: [bendingAngle] # Observation Operator @@ -150,7 +150,7 @@ # GeoVaLs for Driving Observation Operators (testing mode) # -------------------------------------------------------- geovals: - filename: "{{atm_obsdatain_path}}/{{atm_obsdatain_prefix}}{{observation_from_jcb}}_geoval{{atm_obsdatain_suffix}}" + filename: "{{atmosphere_obsdatain_path}}/{{atmosphere_obsdatain_prefix}}{{observation_from_jcb}}_geoval{{atmosphere_obsdatain_suffix}}" # Passed benchmark for UFO testing # -------------------------------- diff --git a/observations/atmosphere/iasi_metop-a.yaml.j2 b/observations/atmosphere/iasi_metop-a.yaml.j2 index b546ac5..141ddfc 100644 --- a/observations/atmosphere/iasi_metop-a.yaml.j2 +++ b/observations/atmosphere/iasi_metop-a.yaml.j2 @@ -7,11 +7,11 @@ obsdatain: engine: type: H5File - obsfile: "{{atm_obsdatain_path}}/{{atm_obsdatain_prefix}}{{observation_from_jcb}}{{atm_obsdatain_suffix}}" + obsfile: "{{atmosphere_obsdatain_path}}/{{atmosphere_obsdatain_prefix}}{{observation_from_jcb}}{{atmosphere_obsdatain_suffix}}" obsdataout: engine: type: H5File - obsfile: "{{atm_obsdataout_path}}/{{atm_obsdataout_prefix}}{{observation_from_jcb}}{{atm_obsdataout_suffix}}" + obsfile: "{{atmosphere_obsdataout_path}}/{{atmosphere_obsdataout_prefix}}{{observation_from_jcb}}{{atmosphere_obsdataout_suffix}}" io pool: max pool size: 1 observed variables: [radiance] @@ -34,14 +34,14 @@ # Observation Bias Correction (VarBC) # ----------------------------------- obs bias: - input file: "{{atm_obsbiasin_path}}/{{atm_obsbiasin_prefix}}{{observation_from_jcb}}{{atm_obsbiasin_suffix}}" - output file: "{{atm_obsbiasout_path}}/{{atm_obsbiasout_prefix}}{{observation_from_jcb}}{{atm_obsbiasout_suffix}}" + input file: "{{atmosphere_obsbiasin_path}}/{{atmosphere_obsbiasin_prefix}}{{observation_from_jcb}}{{atmosphere_obsbiasin_suffix}}" + output file: "{{atmosphere_obsbiasout_path}}/{{atmosphere_obsbiasout_prefix}}{{observation_from_jcb}}{{atmosphere_obsbiasout_suffix}}" variational bc: predictors: - name: constant - name: lapse_rate order: 2 - tlapse: &{{observation_from_jcb}}_tlapse "{{atm_obsbiasin_path}}/{{atm_obstlapsein_prefix}}{{observation_from_jcb}}{{atm_obstlapsein_suffix}}" + tlapse: &{{observation_from_jcb}}_tlapse "{{atmosphere_obsbiasin_path}}/{{atmosphere_obstlapsein_prefix}}{{observation_from_jcb}}{{atmosphere_obstlapsein_suffix}}" - name: lapse_rate tlapse: *{{observation_from_jcb}}_tlapse - name: emissivity @@ -58,11 +58,11 @@ step size: 1.0e-4 largest analysis variance: 10000.0 prior: - input file: "{{atm_obsbiasin_path}}/{{atm_obsbiascovin_prefix}}{{observation_from_jcb}}{{atm_obsbiascovin_suffix}}" + input file: "{{atmosphere_obsbiasin_path}}/{{atmosphere_obsbiascovin_prefix}}{{observation_from_jcb}}{{atmosphere_obsbiascovin_suffix}}" inflation: ratio: 1.1 ratio for small dataset: 2.0 - output file: "{{atm_obsbiasout_path}}/{{atm_obsbiascovout_prefix}}{{observation_from_jcb}}{{atm_obsbiascovout_suffix}}" + output file: "{{atmosphere_obsbiasout_path}}/{{atmosphere_obsbiascovout_prefix}}{{observation_from_jcb}}{{atmosphere_obsbiascovout_suffix}}" # Observation Pre Filters (QC) # ---------------------------- @@ -572,7 +572,7 @@ # GeoVaLs for Driving Observation Operators (testing mode) # -------------------------------------------------------- geovals: - filename: "{{atm_obsdatain_path}}/{{atm_obsdatain_prefix}}{{observation_from_jcb}}_geoval{{atm_obsdatain_suffix}}" + filename: "{{atmosphere_obsdatain_path}}/{{atmosphere_obsdatain_prefix}}{{observation_from_jcb}}_geoval{{atmosphere_obsdatain_suffix}}" # Passed benchmark for UFO testing # -------------------------------- diff --git a/observations/atmosphere/iasi_metop-b.yaml.j2 b/observations/atmosphere/iasi_metop-b.yaml.j2 index 51696bd..051d621 100644 --- a/observations/atmosphere/iasi_metop-b.yaml.j2 +++ b/observations/atmosphere/iasi_metop-b.yaml.j2 @@ -7,11 +7,11 @@ obsdatain: engine: type: H5File - obsfile: "{{atm_obsdatain_path}}/{{atm_obsdatain_prefix}}{{observation_from_jcb}}{{atm_obsdatain_suffix}}" + obsfile: "{{atmosphere_obsdatain_path}}/{{atmosphere_obsdatain_prefix}}{{observation_from_jcb}}{{atmosphere_obsdatain_suffix}}" obsdataout: engine: type: H5File - obsfile: "{{atm_obsdataout_path}}/{{atm_obsdataout_prefix}}{{observation_from_jcb}}{{atm_obsdataout_suffix}}" + obsfile: "{{atmosphere_obsdataout_path}}/{{atmosphere_obsdataout_prefix}}{{observation_from_jcb}}{{atmosphere_obsdataout_suffix}}" io pool: max pool size: 1 observed variables: [radiance] @@ -34,14 +34,14 @@ # Observation Bias Correction (VarBC) # ----------------------------------- obs bias: - input file: "{{atm_obsbiasin_path}}/{{atm_obsbiasin_prefix}}{{observation_from_jcb}}{{atm_obsbiasin_suffix}}" - output file: "{{atm_obsbiasout_path}}/{{atm_obsbiasout_prefix}}{{observation_from_jcb}}{{atm_obsbiasout_suffix}}" + input file: "{{atmosphere_obsbiasin_path}}/{{atmosphere_obsbiasin_prefix}}{{observation_from_jcb}}{{atmosphere_obsbiasin_suffix}}" + output file: "{{atmosphere_obsbiasout_path}}/{{atmosphere_obsbiasout_prefix}}{{observation_from_jcb}}{{atmosphere_obsbiasout_suffix}}" variational bc: predictors: - name: constant - name: lapse_rate order: 2 - tlapse: &{{observation_from_jcb}}_tlapse "{{atm_obsbiasin_path}}/{{atm_obstlapsein_prefix}}{{observation_from_jcb}}{{atm_obstlapsein_suffix}}" + tlapse: &{{observation_from_jcb}}_tlapse "{{atmosphere_obsbiasin_path}}/{{atmosphere_obstlapsein_prefix}}{{observation_from_jcb}}{{atmosphere_obstlapsein_suffix}}" - name: lapse_rate tlapse: *{{observation_from_jcb}}_tlapse - name: emissivity @@ -58,11 +58,11 @@ step size: 1.0e-4 largest analysis variance: 10000.0 prior: - input file: "{{atm_obsbiasin_path}}/{{atm_obsbiascovin_prefix}}{{observation_from_jcb}}{{atm_obsbiascovin_suffix}}" + input file: "{{atmosphere_obsbiasin_path}}/{{atmosphere_obsbiascovin_prefix}}{{observation_from_jcb}}{{atmosphere_obsbiascovin_suffix}}" inflation: ratio: 1.1 ratio for small dataset: 2.0 - output file: "{{atm_obsbiasout_path}}/{{atm_obsbiascovout_prefix}}{{observation_from_jcb}}{{atm_obsbiascovout_suffix}}" + output file: "{{atmosphere_obsbiasout_path}}/{{atmosphere_obsbiascovout_prefix}}{{observation_from_jcb}}{{atmosphere_obsbiascovout_suffix}}" # Observation Pre Filters (QC) # ---------------------------- @@ -572,7 +572,7 @@ # GeoVaLs for Driving Observation Operators (testing mode) # -------------------------------------------------------- geovals: - filename: "{{atm_obsdatain_path}}/{{atm_obsdatain_prefix}}{{observation_from_jcb}}_geoval{{atm_obsdatain_suffix}}" + filename: "{{atmosphere_obsdatain_path}}/{{atmosphere_obsdatain_prefix}}{{observation_from_jcb}}_geoval{{atmosphere_obsdatain_suffix}}" # Passed benchmark for UFO testing # -------------------------------- diff --git a/observations/atmosphere/omi_aura.yaml.j2 b/observations/atmosphere/omi_aura.yaml.j2 index 3b5cd8d..d8b6d1b 100644 --- a/observations/atmosphere/omi_aura.yaml.j2 +++ b/observations/atmosphere/omi_aura.yaml.j2 @@ -7,11 +7,11 @@ obsdatain: engine: type: H5File - obsfile: "{{atm_obsdatain_path}}/{{atm_obsdatain_prefix}}{{observation_from_jcb}}{{atm_obsdatain_suffix}}" + obsfile: "{{atmosphere_obsdatain_path}}/{{atmosphere_obsdatain_prefix}}{{observation_from_jcb}}{{atmosphere_obsdatain_suffix}}" obsdataout: engine: type: H5File - obsfile: "{{atm_obsdataout_path}}/{{atm_obsdataout_prefix}}{{observation_from_jcb}}{{atm_obsdataout_suffix}}" + obsfile: "{{atmosphere_obsdataout_path}}/{{atmosphere_obsdataout_prefix}}{{observation_from_jcb}}{{atmosphere_obsdataout_suffix}}" io pool: max pool size: 1 simulated variables: [ozoneTotal] @@ -168,7 +168,7 @@ # GeoVaLs for Driving Observation Operators (testing mode) # -------------------------------------------------------- geovals: - filename: "{{atm_obsdatain_path}}/{{atm_obsdatain_prefix}}{{observation_from_jcb}}_geoval{{atm_obsdatain_suffix}}" + filename: "{{atmosphere_obsdatain_path}}/{{atmosphere_obsdatain_prefix}}{{observation_from_jcb}}_geoval{{atmosphere_obsdatain_suffix}}" # Passed benchmark for UFO testing # -------------------------------- diff --git a/observations/atmosphere/ompsnp_npp.yaml.j2 b/observations/atmosphere/ompsnp_npp.yaml.j2 index 069771b..807eb94 100644 --- a/observations/atmosphere/ompsnp_npp.yaml.j2 +++ b/observations/atmosphere/ompsnp_npp.yaml.j2 @@ -7,7 +7,7 @@ obsdatain: engine: type: H5File - obsfile: "{{atm_obsdatain_path}}/{{atm_obsdatain_prefix}}{{observation_from_jcb}}{{atm_obsdatain_suffix}}" + obsfile: "{{atmosphere_obsdatain_path}}/{{atmosphere_obsdatain_prefix}}{{observation_from_jcb}}{{atmosphere_obsdatain_suffix}}" obsgrouping: group variables: ["latitude"] sort variable: "pressure" @@ -15,7 +15,7 @@ obsdataout: engine: type: H5File - obsfile: "{{atm_obsdataout_path}}/{{atm_obsdataout_prefix}}{{observation_from_jcb}}{{atm_obsdataout_suffix}}" + obsfile: "{{atmosphere_obsdataout_path}}/{{atmosphere_obsdataout_prefix}}{{observation_from_jcb}}{{atmosphere_obsdataout_suffix}}" io pool: max pool size: 1 simulated variables: [ozoneLayer] @@ -323,7 +323,7 @@ # GeoVaLs for Driving Observation Operators (testing mode) # -------------------------------------------------------- geovals: - filename: "{{atm_obsdatain_path}}/{{atm_obsdatain_prefix}}{{observation_from_jcb}}_geoval{{atm_obsdatain_suffix}}" + filename: "{{atmosphere_obsdatain_path}}/{{atmosphere_obsdatain_prefix}}{{observation_from_jcb}}_geoval{{atmosphere_obsdatain_suffix}}" # Passed benchmark for UFO testing # -------------------------------- diff --git a/observations/atmosphere/ompstc_npp.yaml.j2 b/observations/atmosphere/ompstc_npp.yaml.j2 index 81c64c8..c6e3884 100644 --- a/observations/atmosphere/ompstc_npp.yaml.j2 +++ b/observations/atmosphere/ompstc_npp.yaml.j2 @@ -7,11 +7,11 @@ obsdatain: engine: type: H5File - obsfile: "{{atm_obsdatain_path}}/{{atm_obsdatain_prefix}}{{observation_from_jcb}}{{atm_obsdatain_suffix}}" + obsfile: "{{atmosphere_obsdatain_path}}/{{atmosphere_obsdatain_prefix}}{{observation_from_jcb}}{{atmosphere_obsdatain_suffix}}" obsdataout: engine: type: H5File - obsfile: "{{atm_obsdataout_path}}/{{atm_obsdataout_prefix}}{{observation_from_jcb}}{{atm_obsdataout_suffix}}" + obsfile: "{{atmosphere_obsdataout_path}}/{{atmosphere_obsdataout_prefix}}{{observation_from_jcb}}{{atmosphere_obsdataout_suffix}}" io pool: max pool size: 1 simulated variables: [ozoneTotal] @@ -128,7 +128,7 @@ # GeoVaLs for Driving Observation Operators (testing mode) # -------------------------------------------------------- geovals: - filename: "{{atm_obsdatain_path}}/{{atm_obsdatain_prefix}}{{observation_from_jcb}}_geoval{{atm_obsdatain_suffix}}" + filename: "{{atmosphere_obsdatain_path}}/{{atmosphere_obsdatain_prefix}}{{observation_from_jcb}}_geoval{{atmosphere_obsdatain_suffix}}" # Passed benchmark for UFO testing # -------------------------------- diff --git a/observations/atmosphere/satwnd.abi_goes-16.yaml.j2 b/observations/atmosphere/satwnd.abi_goes-16.yaml.j2 index 21c0f49..e01f17c 100644 --- a/observations/atmosphere/satwnd.abi_goes-16.yaml.j2 +++ b/observations/atmosphere/satwnd.abi_goes-16.yaml.j2 @@ -7,11 +7,11 @@ obsdatain: engine: type: H5File - obsfile: "{{atm_obsdatain_path}}/{{atm_obsdatain_prefix}}{{observation_from_jcb}}{{atm_obsdatain_suffix}}" + obsfile: "{{atmosphere_obsdatain_path}}/{{atmosphere_obsdatain_prefix}}{{observation_from_jcb}}{{atmosphere_obsdatain_suffix}}" obsdataout: engine: type: H5File - obsfile: "{{atm_obsdataout_path}}/{{atm_obsdataout_prefix}}{{observation_from_jcb}}{{atm_obsdataout_suffix}}" + obsfile: "{{atmosphere_obsdataout_path}}/{{atmosphere_obsdataout_prefix}}{{observation_from_jcb}}{{atmosphere_obsdataout_suffix}}" io pool: max pool size: 1 simulated variables: [windEastward, windNorthward] @@ -594,7 +594,7 @@ # GeoVaLs for Driving Observation Operators (testing mode) # -------------------------------------------------------- geovals: - filename: "{{atm_obsdatain_path}}/{{atm_obsdatain_prefix}}{{observation_from_jcb}}_geoval{{atm_obsdatain_suffix}}" + filename: "{{atmosphere_obsdatain_path}}/{{atmosphere_obsdatain_prefix}}{{observation_from_jcb}}_geoval{{atmosphere_obsdatain_suffix}}" # Passed benchmark for UFO testing # -------------------------------- diff --git a/observations/atmosphere/satwnd.abi_goes-17.yaml.j2 b/observations/atmosphere/satwnd.abi_goes-17.yaml.j2 index bc4b072..b0a4179 100644 --- a/observations/atmosphere/satwnd.abi_goes-17.yaml.j2 +++ b/observations/atmosphere/satwnd.abi_goes-17.yaml.j2 @@ -7,11 +7,11 @@ obsdatain: engine: type: H5File - obsfile: "{{atm_obsdatain_path}}/{{atm_obsdatain_prefix}}{{observation_from_jcb}}{{atm_obsdatain_suffix}}" + obsfile: "{{atmosphere_obsdatain_path}}/{{atmosphere_obsdatain_prefix}}{{observation_from_jcb}}{{atmosphere_obsdatain_suffix}}" obsdataout: engine: type: H5File - obsfile: "{{atm_obsdataout_path}}/{{atm_obsdataout_prefix}}{{observation_from_jcb}}{{atm_obsdataout_suffix}}" + obsfile: "{{atmosphere_obsdataout_path}}/{{atmosphere_obsdataout_prefix}}{{observation_from_jcb}}{{atmosphere_obsdataout_suffix}}" io pool: max pool size: 1 simulated variables: [windEastward, windNorthward] @@ -594,7 +594,7 @@ # GeoVaLs for Driving Observation Operators (testing mode) # -------------------------------------------------------- geovals: - filename: "{{atm_obsdatain_path}}/{{atm_obsdatain_prefix}}{{observation_from_jcb}}_geoval{{atm_obsdatain_suffix}}" + filename: "{{atmosphere_obsdatain_path}}/{{atmosphere_obsdatain_prefix}}{{observation_from_jcb}}_geoval{{atmosphere_obsdatain_suffix}}" # Passed benchmark for UFO testing # -------------------------------- diff --git a/observations/atmosphere/satwnd.ahi_h8.yaml.j2 b/observations/atmosphere/satwnd.ahi_h8.yaml.j2 index f7569d3..0aac154 100644 --- a/observations/atmosphere/satwnd.ahi_h8.yaml.j2 +++ b/observations/atmosphere/satwnd.ahi_h8.yaml.j2 @@ -7,11 +7,11 @@ obsdatain: engine: type: H5File - obsfile: "{{atm_obsdatain_path}}/{{atm_obsdatain_prefix}}{{observation_from_jcb}}{{atm_obsdatain_suffix}}" + obsfile: "{{atmosphere_obsdatain_path}}/{{atmosphere_obsdatain_prefix}}{{observation_from_jcb}}{{atmosphere_obsdatain_suffix}}" obsdataout: engine: type: H5File - obsfile: "{{atm_obsdataout_path}}/{{atm_obsdataout_prefix}}{{observation_from_jcb}}{{atm_obsdataout_suffix}}" + obsfile: "{{atmosphere_obsdataout_path}}/{{atmosphere_obsdataout_prefix}}{{observation_from_jcb}}{{atmosphere_obsdataout_suffix}}" io pool: max pool size: 1 simulated variables: [windEastward, windNorthward] @@ -425,7 +425,7 @@ # GeoVaLs for Driving Observation Operators (testing mode) # -------------------------------------------------------- geovals: - filename: "{{atm_obsdatain_path}}/{{atm_obsdatain_prefix}}{{observation_from_jcb}}_geoval{{atm_obsdatain_suffix}}" + filename: "{{atmosphere_obsdatain_path}}/{{atmosphere_obsdatain_prefix}}{{observation_from_jcb}}_geoval{{atmosphere_obsdatain_suffix}}" # Passed benchmark for UFO testing # -------------------------------- diff --git a/observations/atmosphere/satwnd.avhrr_n15.yaml.j2 b/observations/atmosphere/satwnd.avhrr_n15.yaml.j2 index 7fe70cd..bbe81a8 100644 --- a/observations/atmosphere/satwnd.avhrr_n15.yaml.j2 +++ b/observations/atmosphere/satwnd.avhrr_n15.yaml.j2 @@ -3,11 +3,11 @@ obsdatain: engine: type: H5File - obsfile: "{{atm_obsdatain_path}}/{{atm_obsdatain_prefix}}{{observation_from_jcb}}{{atm_obsdatain_suffix}}" + obsfile: "{{atmosphere_obsdatain_path}}/{{atmosphere_obsdatain_prefix}}{{observation_from_jcb}}{{atmosphere_obsdatain_suffix}}" obsdataout: engine: type: H5File - obsfile: "{{atm_obsdataout_path}}/{{atm_obsdataout_prefix}}{{observation_from_jcb}}{{atm_obsdataout_suffix}}" + obsfile: "{{atmosphere_obsdataout_path}}/{{atmosphere_obsdataout_prefix}}{{observation_from_jcb}}{{atmosphere_obsdataout_suffix}}" io pool: max pool size: 1 simulated variables: [windEastward, windNorthward] diff --git a/observations/atmosphere/satwnd.avhrr_n18.yaml.j2 b/observations/atmosphere/satwnd.avhrr_n18.yaml.j2 index fee0d85..fcced81 100644 --- a/observations/atmosphere/satwnd.avhrr_n18.yaml.j2 +++ b/observations/atmosphere/satwnd.avhrr_n18.yaml.j2 @@ -3,11 +3,11 @@ obsdatain: engine: type: H5File - obsfile: "{{atm_obsdatain_path}}/{{atm_obsdatain_prefix}}{{observation_from_jcb}}{{atm_obsdatain_suffix}}" + obsfile: "{{atmosphere_obsdatain_path}}/{{atmosphere_obsdatain_prefix}}{{observation_from_jcb}}{{atmosphere_obsdatain_suffix}}" obsdataout: engine: type: H5File - obsfile: "{{atm_obsdataout_path}}/{{atm_obsdataout_prefix}}{{observation_from_jcb}}{{atm_obsdataout_suffix}}" + obsfile: "{{atmosphere_obsdataout_path}}/{{atmosphere_obsdataout_prefix}}{{observation_from_jcb}}{{atmosphere_obsdataout_suffix}}" io pool: max pool size: 1 simulated variables: [windEastward, windNorthward] diff --git a/observations/atmosphere/satwnd.avhrr_n19.yaml.j2 b/observations/atmosphere/satwnd.avhrr_n19.yaml.j2 index 6af10f9..efb8471 100644 --- a/observations/atmosphere/satwnd.avhrr_n19.yaml.j2 +++ b/observations/atmosphere/satwnd.avhrr_n19.yaml.j2 @@ -3,11 +3,11 @@ obsdatain: engine: type: H5File - obsfile: "{{atm_obsdatain_path}}/{{atm_obsdatain_prefix}}{{observation_from_jcb}}{{atm_obsdatain_suffix}}" + obsfile: "{{atmosphere_obsdatain_path}}/{{atmosphere_obsdatain_prefix}}{{observation_from_jcb}}{{atmosphere_obsdatain_suffix}}" obsdataout: engine: type: H5File - obsfile: "{{atm_obsdataout_path}}/{{atm_obsdataout_prefix}}{{observation_from_jcb}}{{atm_obsdataout_suffix}}" + obsfile: "{{atmosphere_obsdataout_path}}/{{atmosphere_obsdataout_prefix}}{{observation_from_jcb}}{{atmosphere_obsdataout_suffix}}" io pool: max pool size: 1 simulated variables: [windEastward, windNorthward] diff --git a/observations/atmosphere/satwnd.leogeo_multi.yaml.j2 b/observations/atmosphere/satwnd.leogeo_multi.yaml.j2 index b267c33..11ca76e 100644 --- a/observations/atmosphere/satwnd.leogeo_multi.yaml.j2 +++ b/observations/atmosphere/satwnd.leogeo_multi.yaml.j2 @@ -3,11 +3,11 @@ obsdatain: engine: type: H5File - obsfile: "{{atm_obsdatain_path}}/{{atm_obsdatain_prefix}}{{observation_from_jcb}}{{atm_obsdatain_suffix}}" + obsfile: "{{atmosphere_obsdatain_path}}/{{atmosphere_obsdatain_prefix}}{{observation_from_jcb}}{{atmosphere_obsdatain_suffix}}" obsdataout: engine: type: H5File - obsfile: "{{atm_obsdataout_path}}/{{atm_obsdataout_prefix}}{{observation_from_jcb}}{{atm_obsdataout_suffix}}" + obsfile: "{{atmosphere_obsdataout_path}}/{{atmosphere_obsdataout_prefix}}{{observation_from_jcb}}{{atmosphere_obsdataout_suffix}}" io pool: max pool size: 1 simulated variables: [windEastward, windNorthward] diff --git a/observations/atmosphere/satwnd.modis_aqua.yaml.j2 b/observations/atmosphere/satwnd.modis_aqua.yaml.j2 index 4ab84f5..d0af752 100644 --- a/observations/atmosphere/satwnd.modis_aqua.yaml.j2 +++ b/observations/atmosphere/satwnd.modis_aqua.yaml.j2 @@ -3,11 +3,11 @@ obsdatain: engine: type: H5File - obsfile: "{{atm_obsdatain_path}}/{{atm_obsdatain_prefix}}{{observation_from_jcb}}{{atm_obsdatain_suffix}}" + obsfile: "{{atmosphere_obsdatain_path}}/{{atmosphere_obsdatain_prefix}}{{observation_from_jcb}}{{atmosphere_obsdatain_suffix}}" obsdataout: engine: type: H5File - obsfile: "{{atm_obsdataout_path}}/{{atm_obsdataout_prefix}}{{observation_from_jcb}}{{atm_obsdataout_suffix}}" + obsfile: "{{atmosphere_obsdataout_path}}/{{atmosphere_obsdataout_prefix}}{{observation_from_jcb}}{{atmosphere_obsdataout_suffix}}" io pool: max pool size: 1 simulated variables: [windEastward, windNorthward] diff --git a/observations/atmosphere/satwnd.modis_terra.yaml.j2 b/observations/atmosphere/satwnd.modis_terra.yaml.j2 index 811da82..0f6d3f7 100644 --- a/observations/atmosphere/satwnd.modis_terra.yaml.j2 +++ b/observations/atmosphere/satwnd.modis_terra.yaml.j2 @@ -3,11 +3,11 @@ obsdatain: engine: type: H5File - obsfile: "{{atm_obsdatain_path}}/{{atm_obsdatain_prefix}}{{observation_from_jcb}}{{atm_obsdatain_suffix}}" + obsfile: "{{atmosphere_obsdatain_path}}/{{atmosphere_obsdatain_prefix}}{{observation_from_jcb}}{{atmosphere_obsdatain_suffix}}" obsdataout: engine: type: H5File - obsfile: "{{atm_obsdataout_path}}/{{atm_obsdataout_prefix}}{{observation_from_jcb}}{{atm_obsdataout_suffix}}" + obsfile: "{{atmosphere_obsdataout_path}}/{{atmosphere_obsdataout_prefix}}{{observation_from_jcb}}{{atmosphere_obsdataout_suffix}}" io pool: max pool size: 1 simulated variables: [windEastward, windNorthward] diff --git a/observations/atmosphere/satwnd.seviri_m11.yaml.j2 b/observations/atmosphere/satwnd.seviri_m11.yaml.j2 index 58e85d6..cb6a10d 100644 --- a/observations/atmosphere/satwnd.seviri_m11.yaml.j2 +++ b/observations/atmosphere/satwnd.seviri_m11.yaml.j2 @@ -7,11 +7,11 @@ obsdatain: engine: type: H5File - obsfile: "{{atm_obsdatain_path}}/{{atm_obsdatain_prefix}}{{observation_from_jcb}}{{atm_obsdatain_suffix}}" + obsfile: "{{atmosphere_obsdatain_path}}/{{atmosphere_obsdatain_prefix}}{{observation_from_jcb}}{{atmosphere_obsdatain_suffix}}" obsdataout: engine: type: H5File - obsfile: "{{atm_obsdataout_path}}/{{atm_obsdataout_prefix}}{{observation_from_jcb}}{{atm_obsdataout_suffix}}" + obsfile: "{{atmosphere_obsdataout_path}}/{{atmosphere_obsdataout_prefix}}{{observation_from_jcb}}{{atmosphere_obsdataout_suffix}}" io pool: max pool size: 1 simulated variables: [windEastward, windNorthward] @@ -432,7 +432,7 @@ # GeoVaLs for Driving Observation Operators (testing mode) # -------------------------------------------------------- geovals: - filename: "{{atm_obsdatain_path}}/{{atm_obsdatain_prefix}}{{observation_from_jcb}}_geoval{{atm_obsdatain_suffix}}" + filename: "{{atmosphere_obsdatain_path}}/{{atmosphere_obsdatain_prefix}}{{observation_from_jcb}}_geoval{{atmosphere_obsdatain_suffix}}" # Passed benchmark for UFO testing # -------------------------------- diff --git a/observations/atmosphere/satwnd.seviri_m8.yaml.j2 b/observations/atmosphere/satwnd.seviri_m8.yaml.j2 index aac8a65..e85bb81 100644 --- a/observations/atmosphere/satwnd.seviri_m8.yaml.j2 +++ b/observations/atmosphere/satwnd.seviri_m8.yaml.j2 @@ -7,11 +7,11 @@ obsdatain: engine: type: H5File - obsfile: "{{atm_obsdatain_path}}/{{atm_obsdatain_prefix}}{{observation_from_jcb}}{{atm_obsdatain_suffix}}" + obsfile: "{{atmosphere_obsdatain_path}}/{{atmosphere_obsdatain_prefix}}{{observation_from_jcb}}{{atmosphere_obsdatain_suffix}}" obsdataout: engine: type: H5File - obsfile: "{{atm_obsdataout_path}}/{{atm_obsdataout_prefix}}{{observation_from_jcb}}{{atm_obsdataout_suffix}}" + obsfile: "{{atmosphere_obsdataout_path}}/{{atmosphere_obsdataout_prefix}}{{observation_from_jcb}}{{atmosphere_obsdataout_suffix}}" io pool: max pool size: 1 simulated variables: [windEastward, windNorthward] @@ -432,7 +432,7 @@ # GeoVaLs for Driving Observation Operators (testing mode) # -------------------------------------------------------- geovals: - filename: "{{atm_obsdatain_path}}/{{atm_obsdatain_prefix}}{{observation_from_jcb}}_geoval{{atm_obsdatain_suffix}}" + filename: "{{atmosphere_obsdatain_path}}/{{atmosphere_obsdatain_prefix}}{{observation_from_jcb}}_geoval{{atmosphere_obsdatain_suffix}}" # Passed benchmark for UFO testing # -------------------------------- diff --git a/observations/atmosphere/satwnd.viirs_n20.yaml.j2 b/observations/atmosphere/satwnd.viirs_n20.yaml.j2 index 033d1e5..67949e6 100644 --- a/observations/atmosphere/satwnd.viirs_n20.yaml.j2 +++ b/observations/atmosphere/satwnd.viirs_n20.yaml.j2 @@ -3,11 +3,11 @@ obsdatain: engine: type: H5File - obsfile: "{{atm_obsdatain_path}}/{{atm_obsdatain_prefix}}{{observation_from_jcb}}{{atm_obsdatain_suffix}}" + obsfile: "{{atmosphere_obsdatain_path}}/{{atmosphere_obsdatain_prefix}}{{observation_from_jcb}}{{atmosphere_obsdatain_suffix}}" obsdataout: engine: type: H5File - obsfile: "{{atm_obsdataout_path}}/{{atm_obsdataout_prefix}}{{observation_from_jcb}}{{atm_obsdataout_suffix}}" + obsfile: "{{atmosphere_obsdataout_path}}/{{atmosphere_obsdataout_prefix}}{{observation_from_jcb}}{{atmosphere_obsdataout_suffix}}" io pool: max pool size: 1 simulated variables: [windEastward, windNorthward] diff --git a/observations/atmosphere/satwnd.viirs_npp.yaml.j2 b/observations/atmosphere/satwnd.viirs_npp.yaml.j2 index c8148fb..6528a59 100644 --- a/observations/atmosphere/satwnd.viirs_npp.yaml.j2 +++ b/observations/atmosphere/satwnd.viirs_npp.yaml.j2 @@ -3,11 +3,11 @@ obsdatain: engine: type: H5File - obsfile: "{{atm_obsdatain_path}}/{{atm_obsdatain_prefix}}{{observation_from_jcb}}{{atm_obsdatain_suffix}}" + obsfile: "{{atmosphere_obsdatain_path}}/{{atmosphere_obsdatain_prefix}}{{observation_from_jcb}}{{atmosphere_obsdatain_suffix}}" obsdataout: engine: type: H5File - obsfile: "{{atm_obsdataout_path}}/{{atm_obsdataout_prefix}}{{observation_from_jcb}}{{atm_obsdataout_suffix}}" + obsfile: "{{atmosphere_obsdataout_path}}/{{atmosphere_obsdataout_prefix}}{{observation_from_jcb}}{{atmosphere_obsdataout_suffix}}" io pool: max pool size: 1 simulated variables: [windEastward, windNorthward] diff --git a/observations/atmosphere/scatwind_ascat_metop-a.yaml.j2 b/observations/atmosphere/scatwind_ascat_metop-a.yaml.j2 index 10cca68..0c1a745 100644 --- a/observations/atmosphere/scatwind_ascat_metop-a.yaml.j2 +++ b/observations/atmosphere/scatwind_ascat_metop-a.yaml.j2 @@ -7,11 +7,11 @@ obsdatain: engine: type: H5File - obsfile: "{{atm_obsdatain_path}}/{{atm_obsdatain_prefix}}{{observation_from_jcb}}{{atm_obsdatain_suffix}}" + obsfile: "{{atmosphere_obsdatain_path}}/{{atmosphere_obsdatain_prefix}}{{observation_from_jcb}}{{atmosphere_obsdatain_suffix}}" obsdataout: engine: type: H5File - obsfile: "{{atm_obsdataout_path}}/{{atm_obsdataout_prefix}}{{observation_from_jcb}}{{atm_obsdataout_suffix}}" + obsfile: "{{atmosphere_obsdataout_path}}/{{atmosphere_obsdataout_prefix}}{{observation_from_jcb}}{{atmosphere_obsdataout_suffix}}" io pool: max pool size: 1 simulated variables: [windEastward, windNorthward] @@ -306,7 +306,7 @@ # GeoVaLs for Driving Observation Operators (testing mode) # -------------------------------------------------------- geovals: - filename: "{{atm_obsdatain_path}}/{{atm_obsdatain_prefix}}{{observation_from_jcb}}_geoval{{atm_obsdatain_suffix}}" + filename: "{{atmosphere_obsdatain_path}}/{{atmosphere_obsdatain_prefix}}{{observation_from_jcb}}_geoval{{atmosphere_obsdatain_suffix}}" # Passed benchmark for UFO testing # -------------------------------- diff --git a/observations/atmosphere/sfc.yaml.j2 b/observations/atmosphere/sfc.yaml.j2 index 3192c2a..b470a0e 100644 --- a/observations/atmosphere/sfc.yaml.j2 +++ b/observations/atmosphere/sfc.yaml.j2 @@ -7,11 +7,11 @@ obsdatain: engine: type: H5File - obsfile: "{{atm_obsdatain_path}}/{{atm_obsdatain_prefix}}{{observation_from_jcb}}{{atm_obsdatain_suffix}}" + obsfile: "{{atmosphere_obsdatain_path}}/{{atmosphere_obsdatain_prefix}}{{observation_from_jcb}}{{atmosphere_obsdatain_suffix}}" obsdataout: engine: type: H5File - obsfile: "{{atm_obsdataout_path}}/{{atm_obsdataout_prefix}}{{observation_from_jcb}}{{atm_obsdataout_suffix}}" + obsfile: "{{atmosphere_obsdataout_path}}/{{atmosphere_obsdataout_prefix}}{{observation_from_jcb}}{{atmosphere_obsdataout_suffix}}" io pool: max pool size: 1 simulated variables: [stationPressure] @@ -33,7 +33,7 @@ # GeoVaLs for Driving Observation Operators (testing mode) # -------------------------------------------------------- geovals: - filename: "{{atm_obsdatain_path}}/{{atm_obsdatain_prefix}}{{observation_from_jcb}}_geoval{{atm_obsdatain_suffix}}" + filename: "{{atmosphere_obsdatain_path}}/{{atmosphere_obsdatain_prefix}}{{observation_from_jcb}}_geoval{{atmosphere_obsdatain_suffix}}" # Passed benchmark for UFO testing # -------------------------------- diff --git a/observations/atmosphere/sfcship.yaml.j2 b/observations/atmosphere/sfcship.yaml.j2 index 2c5e25e..5e1a227 100644 --- a/observations/atmosphere/sfcship.yaml.j2 +++ b/observations/atmosphere/sfcship.yaml.j2 @@ -7,12 +7,12 @@ obsdatain: engine: type: H5File - obsfile: "{{atm_obsdatain_path}}/{{atm_obsdatain_prefix}}{{observation_from_jcb}}{{atm_obsdatain_suffix}}" + obsfile: "{{atmosphere_obsdatain_path}}/{{atmosphere_obsdatain_prefix}}{{observation_from_jcb}}{{atmosphere_obsdatain_suffix}}" obsdataout: engine: type: H5File overwrite: true - obsfile: "{{atm_obsdataout_path}}/{{atm_obsdataout_prefix}}{{observation_from_jcb}}{{atm_obsdataout_suffix}}" + obsfile: "{{atmosphere_obsdataout_path}}/{{atmosphere_obsdataout_prefix}}{{observation_from_jcb}}{{atmosphere_obsdataout_suffix}}" io pool: max pool size: 1 simulated variables: [stationPressure, airTemperature, specificHumidity] @@ -93,7 +93,7 @@ # GeoVaLs for Driving Observation Operators (testing mode) # -------------------------------------------------------- geovals: - filename: "{{atm_obsdatain_path}}/{{atm_obsdatain_prefix}}{{observation_from_jcb}}_geoval{{atm_obsdatain_suffix}}" + filename: "{{atmosphere_obsdatain_path}}/{{atmosphere_obsdatain_prefix}}{{observation_from_jcb}}_geoval{{atmosphere_obsdatain_suffix}}" # Passed benchmark for UFO testing # -------------------------------- diff --git a/observations/atmosphere/sondes.yaml.j2 b/observations/atmosphere/sondes.yaml.j2 index f564144..aff438b 100644 --- a/observations/atmosphere/sondes.yaml.j2 +++ b/observations/atmosphere/sondes.yaml.j2 @@ -7,7 +7,7 @@ obsdatain: engine: type: H5File - obsfile: "{{atm_obsdatain_path}}/{{atm_obsdatain_prefix}}{{observation_from_jcb}}{{atm_obsdatain_suffix}}" + obsfile: "{{atmosphere_obsdatain_path}}/{{atmosphere_obsdatain_prefix}}{{observation_from_jcb}}{{atmosphere_obsdatain_suffix}}" obsgrouping: group variables: ["stationIdentification"] sort variable: "pressure" @@ -15,7 +15,7 @@ obsdataout: engine: type: H5File - obsfile: "{{atm_obsdataout_path}}/{{atm_obsdataout_prefix}}{{observation_from_jcb}}{{atm_obsdataout_suffix}}" + obsfile: "{{atmosphere_obsdataout_path}}/{{atmosphere_obsdataout_prefix}}{{observation_from_jcb}}{{atmosphere_obsdataout_suffix}}" io pool: max pool size: 1 simulated variables: [stationPressure, airTemperature, windEastward, windNorthward, @@ -121,7 +121,7 @@ # GeoVaLs for Driving Observation Operators (testing mode) # -------------------------------------------------------- geovals: - filename: "{{atm_obsdatain_path}}/{{atm_obsdatain_prefix}}{{observation_from_jcb}}_geoval{{atm_obsdatain_suffix}}" + filename: "{{atmosphere_obsdatain_path}}/{{atmosphere_obsdatain_prefix}}{{observation_from_jcb}}_geoval{{atmosphere_obsdatain_suffix}}" # Passed benchmark for UFO testing # -------------------------------- diff --git a/observations/atmosphere/ssmis_f17.yaml.j2 b/observations/atmosphere/ssmis_f17.yaml.j2 index c89cb27..763f274 100644 --- a/observations/atmosphere/ssmis_f17.yaml.j2 +++ b/observations/atmosphere/ssmis_f17.yaml.j2 @@ -7,11 +7,11 @@ obsdatain: engine: type: H5File - obsfile: "{{atm_obsdatain_path}}/{{atm_obsdatain_prefix}}{{observation_from_jcb}}{{atm_obsdatain_suffix}}" + obsfile: "{{atmosphere_obsdatain_path}}/{{atmosphere_obsdatain_prefix}}{{observation_from_jcb}}{{atmosphere_obsdatain_suffix}}" obsdataout: engine: type: H5File - obsfile: "{{atm_obsdataout_path}}/{{atm_obsdataout_prefix}}{{observation_from_jcb}}{{atm_obsdataout_suffix}}" + obsfile: "{{atmosphere_obsdataout_path}}/{{atmosphere_obsdataout_prefix}}{{observation_from_jcb}}{{atmosphere_obsdataout_suffix}}" simulated variables: [brightness_temperature] channels: {{ get_satellite_variable(observation_from_jcb, "simulated") }} @@ -28,8 +28,8 @@ # Observation Bias Correction (VarBC) # ----------------------------------- obs bias: - input file: "{{atm_obsbiasin_path}}/{{atm_obsbiasin_prefix}}{{observation_from_jcb}}{{atm_obsbiasin_suffix}}" - output file: "{{atm_obsbiasout_path}}/{{atm_obsbiasout_prefix}}{{observation_from_jcb}}{{atm_obsbiasout_suffix}}" + input file: "{{atmosphere_obsbiasin_path}}/{{atmosphere_obsbiasin_prefix}}{{observation_from_jcb}}{{atmosphere_obsbiasin_suffix}}" + output file: "{{atmosphere_obsbiasout_path}}/{{atmosphere_obsbiasout_prefix}}{{observation_from_jcb}}{{atmosphere_obsbiasout_suffix}}" variational bc: predictors: - name: constant @@ -46,7 +46,7 @@ - name: sine_of_latitude - name: lapse_rate order: 2 - tlapse: &{{observation_from_jcb}}_tlapse "{{atm_obsbiasin_path}}/{{atm_obstlapsein_prefix}}{{observation_from_jcb}}{{atm_obstlapsein_suffix}}" + tlapse: &{{observation_from_jcb}}_tlapse "{{atmosphere_obsbiasin_path}}/{{atmosphere_obstlapsein_prefix}}{{observation_from_jcb}}{{atmosphere_obstlapsein_suffix}}" - name: lapse_rate tlapse: *{{observation_from_jcb}}_tlapse - name: emissivity @@ -170,7 +170,7 @@ # GeoVaLs for Driving Observation Operators (testing mode) # -------------------------------------------------------- geovals: - filename: "{{atm_obsdatain_path}}/{{atm_obsdatain_prefix}}{{observation_from_jcb}}_geoval{{atm_obsdatain_suffix}}" + filename: "{{atmosphere_obsdatain_path}}/{{atmosphere_obsdatain_prefix}}{{observation_from_jcb}}_geoval{{atmosphere_obsdatain_suffix}}" # Passed benchmark for UFO testing # -------------------------------- diff --git a/observations/atmosphere/ssmis_f18.yaml.j2 b/observations/atmosphere/ssmis_f18.yaml.j2 index 5cd86df..4f55848 100644 --- a/observations/atmosphere/ssmis_f18.yaml.j2 +++ b/observations/atmosphere/ssmis_f18.yaml.j2 @@ -7,11 +7,11 @@ obsdatain: engine: type: H5File - obsfile: "{{atm_obsdatain_path}}/{{atm_obsdatain_prefix}}{{observation_from_jcb}}{{atm_obsdatain_suffix}}" + obsfile: "{{atmosphere_obsdatain_path}}/{{atmosphere_obsdatain_prefix}}{{observation_from_jcb}}{{atmosphere_obsdatain_suffix}}" obsdataout: engine: type: H5File - obsfile: "{{atm_obsdataout_path}}/{{atm_obsdataout_prefix}}{{observation_from_jcb}}{{atm_obsdataout_suffix}}" + obsfile: "{{atmosphere_obsdataout_path}}/{{atmosphere_obsdataout_prefix}}{{observation_from_jcb}}{{atmosphere_obsdataout_suffix}}" simulated variables: [brightness_temperature] channels: {{ get_satellite_variable(observation_from_jcb, "simulated") }} @@ -28,8 +28,8 @@ # Observation Bias Correction (VarBC) # ----------------------------------- obs bias: - input file: "{{atm_obsbiasin_path}}/{{atm_obsbiasin_prefix}}{{observation_from_jcb}}{{atm_obsbiasin_suffix}}" - output file: "{{atm_obsbiasout_path}}/{{atm_obsbiasout_prefix}}{{observation_from_jcb}}{{atm_obsbiasout_suffix}}" + input file: "{{atmosphere_obsbiasin_path}}/{{atmosphere_obsbiasin_prefix}}{{observation_from_jcb}}{{atmosphere_obsbiasin_suffix}}" + output file: "{{atmosphere_obsbiasout_path}}/{{atmosphere_obsbiasout_prefix}}{{observation_from_jcb}}{{atmosphere_obsbiasout_suffix}}" variational bc: predictors: - name: constant @@ -46,7 +46,7 @@ - name: sine_of_latitude - name: lapse_rate order: 2 - tlapse: &{{observation_from_jcb}}_tlapse "{{atm_obsbiasin_path}}/{{atm_obstlapsein_prefix}}{{observation_from_jcb}}{{atm_obstlapsein_suffix}}" + tlapse: &{{observation_from_jcb}}_tlapse "{{atmosphere_obsbiasin_path}}/{{atmosphere_obstlapsein_prefix}}{{observation_from_jcb}}{{atmosphere_obstlapsein_suffix}}" - name: lapse_rate tlapse: *{{observation_from_jcb}}_tlapse - name: emissivity @@ -170,7 +170,7 @@ # GeoVaLs for Driving Observation Operators (testing mode) # -------------------------------------------------------- geovals: - filename: "{{atm_obsdatain_path}}/{{atm_obsdatain_prefix}}{{observation_from_jcb}}_geoval{{atm_obsdatain_suffix}}" + filename: "{{atmosphere_obsdatain_path}}/{{atmosphere_obsdatain_prefix}}{{observation_from_jcb}}_geoval{{atmosphere_obsdatain_suffix}}" # Passed benchmark for UFO testing # -------------------------------- diff --git a/observations/marine/adt_rads_all.yaml.j2 b/observations/marine/adt_rads_all.yaml.j2 new file mode 100644 index 0000000..da532ec --- /dev/null +++ b/observations/marine/adt_rads_all.yaml.j2 @@ -0,0 +1,52 @@ +- obs space: + name: {{observation_from_jcb}} + obsdatain: + engine: + type: H5File + obsfile: "{{marine_obsdatain_path}}/{{marine_obsdatain_prefix}}{{observation_from_jcb}}{{marine_obsdatain_suffix}}" + obsdataout: + engine: + type: H5File + obsfile: "{{marine_obsdataout_path}}/{{marine_obsdataout_prefix}}{{observation_from_jcb}}{{marine_obsdataout_suffix}}" + simulated variables: [absoluteDynamicTopography] + io pool: + max pool size: 1 + get values: + time interpolation: linear + obs operator: + name: ADT + obs error: + covariance model: diagonal + obs filters: + - filter: Domain Check + where: + - variable: {name: GeoVaLs/sea_area_fraction} + minvalue: 0.9 + - filter: Domain Check + where: + - variable: { name: GeoVaLs/sea_surface_temperature} + minvalue: 5.0 + - filter: Background Check + absolute threshold: 1.0 + - filter: Domain Check + where: + - variable: {name: GeoVaLs/sea_floor_depth_below_sea_surface} + minvalue: 500 + - filter: Perform Action + action: + name: assign error + error function: + name: ObsFunction/LinearCombination + options: + variables: [GeoVaLs/mesoscale_representation_error, + ObsError/absoluteDynamicTopography] + coefs: [0.1, + 1.0] + - filter: Domain Check + where: + - variable: { name: GeoVaLs/sea_ice_area_fraction} + maxvalue: 0.00001 + - filter: Domain Check + where: + - variable: {name: GeoVaLs/distance_from_coast} + minvalue: 100e3 diff --git a/observations/marine/icec_amsr2_north.yaml.j2 b/observations/marine/icec_amsr2_north.yaml.j2 new file mode 100644 index 0000000..c633898 --- /dev/null +++ b/observations/marine/icec_amsr2_north.yaml.j2 @@ -0,0 +1,45 @@ +- obs space: + name: {{observation_from_jcb}} + obsdatain: + engine: + type: H5File + obsfile: "{{marine_obsdatain_path}}/{{marine_obsdatain_prefix}}{{observation_from_jcb}}{{marine_obsdatain_suffix}}" + obsdataout: + engine: + type: H5File + obsfile: "{{marine_obsdataout_path}}/{{marine_obsdataout_prefix}}{{observation_from_jcb}}{{marine_obsdataout_suffix}}" + simulated variables: [seaIceFraction] + io pool: + max pool size: 1 + get values: + time interpolation: linear + obs operator: + name: Identity + observation alias file: obsop_name_map.yaml + obs error: + covariance model: diagonal + obs filters: + - filter: Domain Check + where: + - variable: {name: GeoVaLs/sea_area_fraction} + minvalue: 0.9 + - filter: Bounds Check + minvalue: 0.0 + maxvalue: 1.0 + #- filter: Background Check + # threshold: 5.0 + - filter: Domain Check + where: + - variable: { name: GeoVaLs/sea_surface_temperature} + maxvalue: 2.0 + - filter: Domain Check + where: + - variable: { name: GeoVaLs/sea_surface_temperature} + maxvalue: 0.0 + action: + name: inflate error + inflation factor: 2.0 + - filter: Domain Check + where: + - variable: {name: GeoVaLs/distance_from_coast} + minvalue: 100e3 diff --git a/observations/marine/icec_amsr2_south.yaml.j2 b/observations/marine/icec_amsr2_south.yaml.j2 new file mode 100644 index 0000000..c633898 --- /dev/null +++ b/observations/marine/icec_amsr2_south.yaml.j2 @@ -0,0 +1,45 @@ +- obs space: + name: {{observation_from_jcb}} + obsdatain: + engine: + type: H5File + obsfile: "{{marine_obsdatain_path}}/{{marine_obsdatain_prefix}}{{observation_from_jcb}}{{marine_obsdatain_suffix}}" + obsdataout: + engine: + type: H5File + obsfile: "{{marine_obsdataout_path}}/{{marine_obsdataout_prefix}}{{observation_from_jcb}}{{marine_obsdataout_suffix}}" + simulated variables: [seaIceFraction] + io pool: + max pool size: 1 + get values: + time interpolation: linear + obs operator: + name: Identity + observation alias file: obsop_name_map.yaml + obs error: + covariance model: diagonal + obs filters: + - filter: Domain Check + where: + - variable: {name: GeoVaLs/sea_area_fraction} + minvalue: 0.9 + - filter: Bounds Check + minvalue: 0.0 + maxvalue: 1.0 + #- filter: Background Check + # threshold: 5.0 + - filter: Domain Check + where: + - variable: { name: GeoVaLs/sea_surface_temperature} + maxvalue: 2.0 + - filter: Domain Check + where: + - variable: { name: GeoVaLs/sea_surface_temperature} + maxvalue: 0.0 + action: + name: inflate error + inflation factor: 2.0 + - filter: Domain Check + where: + - variable: {name: GeoVaLs/distance_from_coast} + minvalue: 100e3 diff --git a/observations/marine/insitu_profile_argo.yaml.j2 b/observations/marine/insitu_profile_argo.yaml.j2 new file mode 100644 index 0000000..4a1dbd7 --- /dev/null +++ b/observations/marine/insitu_profile_argo.yaml.j2 @@ -0,0 +1,603 @@ +- obs space: + name: insitu_profile_argo + obsdatain: + engine: + type: H5File + obsfile: "{{marine_obsdatain_path}}/{{marine_obsdatain_prefix}}{{observation_from_jcb}}{{marine_obsdatain_suffix}}" + obsgrouping: + group variables: [latitude, longitude, dateTime] + sort variable: depth + sort group: MetaData + sort order: ascending + obsdataout: + engine: + type: H5File + obsfile: "{{marine_obsdataout_path}}/{{marine_obsdataout_prefix}}{{observation_from_jcb}}{{marine_obsdataout_suffix}}" + simulated variables: [waterTemperature, salinity] + observed variables: [waterTemperature, salinity] + derived variables: [waterPressure] + io pool: + max pool size: 1 + obs operator: + name: Composite + components: + - name: InsituTemperature + variables: + - name: waterTemperature + - name: VertInterp + # note: alias file is needed for now because of a conflict with "waterTemperature". + # The built-in alias maps to "ocean_temperature", but soca uses "sea_water_temperature" + observation alias file: obsop_name_map.yaml + variables: + - name: salinity + vertical coordinate: sea_water_depth + observation vertical coordinate: depth + interpolation method: linear + obs error: + covariance model: diagonal + + #------------------------------------------------------------------------------- + # START OF OBS FILTERS (work done by Kriti Bhargava) + # The QC filters used here are based on the document by IODE that can be found at + # https://cdn.ioos.noaa.gov/media/2017/12/recommendations_in_situ_data_real_time_qc.pdf + #------------------------------------------------------------------------------- + obs filters: + + # land check + - filter: Domain Check + where: + - variable: {name: GeoVaLs/sea_area_fraction} + minvalue: 0.5 + + #------------------------------------------------------------------------------- + ## Filters for T: + #------------------------------------------------------------------------------- + #------------------------------------------------------------------------------- + ### Global range test + #----------------------------------------------------------------------------- + - filter: Bounds Check + filter variables: [{name: waterTemperature}] + minvalue: -2.5 + maxvalue: 40.0 + + #----------------------------------------------------------------------------- + ### Regional range tests + #----------------------------------------------------------------------------- + + #### Red Sea + #----------------------------------------------------------------------------- + #### + #### the document linked here describes Red sea as the are between 10N, 40E; + #### 20N, 50E; 30N, 30E; 10N, 40E. But that would also include Gulf of Aden. + #### A more reasonable choice seemed to be a box that extends from 10 N to + #### 30 N and 30 E to 45 East . + + - filter: Bounds Check + filter variables: [{name: waterTemperature}] + minvalue: 21.7 + maxvalue: 40.0 + where: + - variable: + name: MetaData/latitude + minvalue: 10 + maxvalue: 30 + - variable: + name: MetaData/longitude + minvalue: 30 + maxvalue: 45 + + #### Mediterranean Sea + #----------------------------------------------------------------------------- + ##### Area 1/3 for Mediterranean Sea + - filter: Bounds Check + filter variables: [{name: waterTemperature}] + minvalue: 10.0 + maxvalue: 40.0 + where: + - variable: + name: MetaData/latitude + minvalue: 30 + maxvalue: 40 + - variable: + name: MetaData/longitude + minvalue: -6 + maxvalue: 40 + ##### Area 2/3 for Mediterranean Sea + - filter: Bounds Check + filter variables: [{name: waterTemperature}] + minvalue: 10.0 + maxvalue: 40.0 + where: + - variable: + name: MetaData/latitude + minvalue: 40 + maxvalue: 41.5 + - variable: + name: MetaData/longitude + minvalue: 20 + maxvalue: 30 + ##### Area 3/3 for Mediterranean Sea + - filter: Bounds Check + filter variables: [{name: waterTemperature}] + minvalue: 10.0 + maxvalue: 40.0 + where: + - variable: + name: MetaData/latitude + minvalue: 40 + maxvalue: 46 + - variable: + name: MetaData/longitude + minvalue: 0 + maxvalue: 20 + + #### Northwestern shelves + #----------------------------------------------------------------------------- + - filter: Bounds Check + filter variables: [{name: waterTemperature}] + minvalue: -2.0 + maxvalue: 24.0 + where: + - variable: + name: MetaData/latitude + minvalue: 50 + maxvalue: 60 + - variable: + name: MetaData/longitude + minvalue: -20 + maxvalue: 10 + #### Southwestern shelves + #----------------------------------------------------------------------------- + - filter: Bounds Check + filter variables: [{name: waterTemperature}] + minvalue: -2.0 + maxvalue: 30 + where: + - variable: + name: MetaData/latitude + minvalue: 25 + maxvalue: 50 + - variable: + name: MetaData/longitude + minvalue: -30 + maxvalue: 0 + + #### Arctic Sea + #----------------------------------------------------------------------------- + - filter: Bounds Check + filter variables: [{name: waterTemperature}] + minvalue: -1.92 + maxvalue: 25.0 + where: + - variable: + name: MetaData/latitude + minvalue: 60 + + - filter: Background Check + filter variables: [{name: waterTemperature}] + threshold: 5.0 + absolute threshold: 5.0 + + #------------------------------------------------------------------------------- + ### Spike test + #----------------------------------------------------------------------------- + - filter: Create Diagnostic Flags + filter variables: + - name: waterTemperature + - name: salinity + flags: + - name: spike + initial value: false + - name: step + initial value: false + + - filter: Spike and Step Check + filter variables: + - name: ObsValue/waterTemperature + dependent: ObsValue/waterTemperature # dy/ + independent: MetaData/depth # dx + count spikes: true + count steps: true + tolerance: + nominal value: 10 # K nominal, in the case of temperature (not really) + gradient: 0.1 # K/m - if dy/dx greater, could be a spike + gradient x resolution: 10 # m - can't know dx to better precision + factors: [1,1,0.5] # multiply tolerance, for ranges bounded by... + x boundaries: [0,500,500] # ...these values of x (depth in m) + boundary layer: + x range: [0.0,300.0] # when bounded by these x values (depth in m)... + step tolerance range: [0.0,-2.0] # ...relax tolerance for steps in boundary layer... + maximum x interval: [50.0,100.0] # ...and ignore level if dx greater than this + action: + name: reject + + #### Count spikes + #----------------------------------------------------------------------------- + - filter: Variable Assignment # create derived obs value containing only T spikes + assignments: + - name: DerivedMetaData/waterTemperature_spikes + type: int + function: + name: IntObsFunction/ProfileLevelCount + options: + where: + - variable: + name: DiagnosticFlags/spike/waterTemperature + value: is_true + + #### Count steps + #----------------------------------------------------------------------------- + - filter: Variable Assignment # create derived obs value containing only T steps + assignments: + - name: DerivedMetaData/waterTemperature_steps + type: int + function: + name: IntObsFunction/ProfileLevelCount + options: + where: + - variable: + name: DiagnosticFlags/step/waterTemperature + value: is_true + #### Count total rejections + #----------------------------------------------------------------------------- + - filter: Variable Assignment # compute sum 2*spikes+steps + assignments: + - name: DerivedMetaData/waterTemperature_rejections + type: int + function: + name: IntObsFunction/LinearCombination + options: + variables: [DerivedMetaData/waterTemperature_spikes, DerivedMetaData/waterTemperature_steps] + coefs: [2,1] + #### Reject entire profile if total rejctions > threshold + #----------------------------------------------------------------------------- + - filter: Perform Action # reject whole profile if 2*spikes+steps>=rejection threshold + where: + - variable: + name: DerivedMetaData/waterTemperature_rejections + minvalue: 3 + action: + name: reject + + #------------------------------------------------------------------------------- + ## Filters for S: + #------------------------------------------------------------------------------- + #----------------------------------------------------------------------------- + ### Global range test + #----------------------------------------------------------------------------- + - filter: Bounds Check + filter variables: [{name: salinity}] + minvalue: 2.0 + maxvalue: 41.0 + + #----------------------------------------------------------------------------- + ### Regional range test + #----------------------------------------------------------------------------- + #### Red Sea + #----------------------------------------------------------------------------- + #### + #### the document linked here describes Red sea as the are between 10N, 40E; + #### 20N, 50E; 30N, 30E; 10N, 40E. But that would also include Gulf of Aden. + #### A more reasonable choice seemed to be a box that extends from 10 N to + #### 30 N and 30 E to 45 East . + + - filter: Bounds Check + filter variables: [{name: salinity}] + minvalue: 2.0 + maxvalue: 41.0 + where: + - variable: + name: MetaData/latitude + minvalue: 10 + maxvalue: 30 + - variable: + name: MetaData/longitude + minvalue: 30 + maxvalue: 45 + + #### Mediterranean Sea + #----------------------------------------------------------------------------- + ##### Area 1/3 for Mediterranean Sea + - filter: Bounds Check + filter variables: [{name: salinity}] + minvalue: 2.0 + maxvalue: 40.0 + where: + - variable: + name: MetaData/latitude + minvalue: 30 + maxvalue: 40 + - variable: + name: MetaData/longitude + minvalue: -6 + maxvalue: 40 + ##### Area 2/3 for Mediterranean Sea + - filter: Bounds Check + filter variables: [{name: salinity}] + minvalue: 2.0 + maxvalue: 40.0 + where: + - variable: + name: MetaData/latitude + minvalue: 40 + maxvalue: 41.5 + - variable: + name: MetaData/longitude + minvalue: 20 + maxvalue: 30 + ##### Area 3/3 for Mediterranean Sea + - filter: Bounds Check + filter variables: [{name: salinity}] + minvalue: 2.0 + maxvalue: 40.0 + where: + - variable: + name: MetaData/latitude + minvalue: 40 + maxvalue: 46 + - variable: + name: MetaData/longitude + minvalue: 0 + maxvalue: 20 + + + #### Northwestern shelves + #----------------------------------------------------------------------------- + - filter: Bounds Check + filter variables: [{name: salinity}] + minvalue: 0.0 + maxvalue: 37.0 + where: + - variable: + name: MetaData/latitude + minvalue: 50 + maxvalue: 60 + - variable: + name: MetaData/longitude + minvalue: -20 + maxvalue: 10 + + #### Southwestern shelves + #----------------------------------------------------------------------------- + - filter: Bounds Check + filter variables: [{name: salinity}] + minvalue: 0.0 + maxvalue: 38 + where: + - variable: + name: MetaData/latitude + minvalue: 25 + maxvalue: 50 + - variable: + name: MetaData/longitude + minvalue: -30 + maxvalue: 0 + + #### Arctic Sea + #----------------------------------------------------------------------------- + - filter: Bounds Check + filter variables: [{name: salinity}] + minvalue: 2.0 + maxvalue: 40.0 + where: + - variable: + name: MetaData/latitude + minvalue: 60 + + - filter: Background Check + filter variables: [{name: salinity}] + threshold: 5.0 + absolute threshold: 5.0 + + #------------------------------------------------------------------------------- + ### Spike test + #----------------------------------------------------------------------------- + - filter: Spike and Step Check + filter variables: + - name: ObsValue/salinity + dependent: ObsValue/salinity # dy/ + independent: MetaData/depth # dx + count spikes: true + count steps: true + tolerance: + nominal value: 1.0 # PSU nominal, in the case of salinity (not really) + threshold: 0.6 # weird salinity thing + factors: [1,1,0.2] # multiply tolerance, for ranges bounded by... + x boundaries: [0,200,600] # ...these values of x (depth in m) + boundary layer: + x range: [0.0,300.0] # when bounded by these x values (depth in m)... + maximum x interval: [50.0,100.0] # ...and ignore level if dx greater than this + action: + name: reject + + #### Count spikes + #----------------------------------------------------------------------------- + - filter: Variable Assignment # create derived obs value containing only S spikes + assignments: + - name: DerivedMetaData/salinity_spikes + type: int + function: + name: IntObsFunction/ProfileLevelCount + options: + where: + - variable: + name: DiagnosticFlags/spike/salinity + value: is_true + #### Count steps + #----------------------------------------------------------------------------- + - filter: Variable Assignment # create derived obs value containing only S steps + assignments: + - name: DerivedMetaData/salinity_steps + type: int + function: + name: IntObsFunction/ProfileLevelCount + options: + where: + - variable: + name: DiagnosticFlags/step/salinity + value: is_true + #### Count total rejections + #----------------------------------------------------------------------------- + - filter: Variable Assignment # compute sum 2*spikes+steps + assignments: + - name: DerivedMetaData/salinity_rejections + type: int + function: + name: IntObsFunction/LinearCombination + options: + variables: [DerivedMetaData/salinity_spikes, DerivedMetaData/salinity_steps] + coefs: [2,1] + #### Reject entire profile if total rejctions > threshold + #----------------------------------------------------------------------------- + - filter: Perform Action # reject whole profile if 2*spikes+steps>=rejection threshold + where: + - variable: + name: DerivedMetaData/salinity_rejections + minvalue: 3 + action: + name: reject + #------------------------------------------------------------------------------- + ### End of Spike test + #----------------------------------------------------------------------------- + + #----------------------------------------------------------------------------- + ## Filters on the whole profile: + #----------------------------------------------------------------------------- + #------------------------------------------------------------------------------- + ### Ocean Vertical stability test + #----------------------------------------------------------------------------- + + #### get pressure from depth + #----------------------------------------------------------------------------- + - filter: Variable Transforms + Transform: OceanDepthToPressure + ocean depth variable: depth + ocean depth group: MetaData + #### Create diagonostic flags for spike step + #----------------------------------------------------------------------------- + - filter: Create Diagnostic Flags + filter variables: + - name: DerivedObsValue/waterPressure + flags: + - name: DensitySpike + initial value: false + - name: DensityStep + initial value: false + - name: Superadiabat + initial value: false + #### + #----------------------------------------------------------------------------- + - filter: Ocean Vertical Stability Check + where: + - variable: + name: ObsValue/waterTemperature + value: is_valid + filter variables: + - name: DerivedObsValue/waterPressure # density spikes/steps --> flag d + variables: + temperature: ObsValue/waterTemperature + salinity: ObsValue/salinity + pressure: DerivedObsValue/waterPressure + count spikes: true + count steps: true + nominal tolerance: -0.05 + threshold: 0.25 + actions: + - name: set + flag: Superadiabat + - name: reject + #### where there are any density inversions, reject temperature only: + #----------------------------------------------------------------------------- + - filter: Perform Action + filter variables: + - name: ObsValue/waterTemperature + where: + - variable: + name: DiagnosticFlags/Superadiabat/waterPressure + value: is_true + action: + name: reject + #### where density spikes, reject all vars (temperature and salinity): + #----------------------------------------------------------------------------- + - filter: Perform Action + filter variables: + - name: ObsValue/waterTemperature + - name: ObsValue/salinity + where: + - variable: + name: DiagnosticFlags/DensitySpike/waterPressure + value: is_true + action: + name: reject + #### create derived metadata counting levels: + #----------------------------------------------------------------------------- + - filter: Variable Assignment + assignments: + - name: DerivedMetaData/number_of_levels + type: int + function: + name: IntObsFunction/ProfileLevelCount + options: + where: + - variable: + name: ObsValue/waterTemperature + value: is_valid + #### create derived metadata counting spikes and steps: + #----------------------------------------------------------------------------- + - filter: Variable Assignment + assignments: + - name: DerivedMetaData/ocean_density_inversions + type: int + function: + name: IntObsFunction/ProfileLevelCount + options: + where: + - variable: + name: DiagnosticFlags/DensitySpike/waterPressure + value: is_true + - variable: + name: DiagnosticFlags/DensityStep/waterPressure + value: is_true + where operator: or + + #### whole profile is rejected if spikes+steps >= numlev/4, so compute + #### 4*( sum spikes+steps ) minus numlev + #### in order to check it against 0: + #----------------------------------------------------------------------------- + - filter: Variable Assignment + assignments: + - name: DerivedMetaData/ocean_density_rejections + type: int + function: + name: IntObsFunction/LinearCombination + options: + variables: [DerivedMetaData/ocean_density_inversions, DerivedMetaData/number_of_levels] + coefs: [4, -1] + #### reject whole profile if spikes+steps >= numlev/4 AND >= 2: + #----------------------------------------------------------------------------- + - filter: Perform Action + filter variables: + - name: ObsValue/waterTemperature + - name: ObsValue/salinity + where: + - variable: + name: DerivedMetaData/ocean_density_rejections + minvalue: 0 + - variable: + name: DerivedMetaData/ocean_density_inversions + minvalue: 2 + where operator: and + action: + name: reject + #------------------------------------------------------------------------------- + ### End of ocean vertical stability test + #----------------------------------------------------------------------------- + + #----------------------------------------------------------------------------- + ### If T was bad, remove S as well regardless + #----------------------------------------------------------------------------- + - filter: RejectList + where: + - variable: QCflagsData/waterTemperature + minvalue: 1 + defer to post: true diff --git a/observations/marine/insitu_profile_bathy.yaml.j2 b/observations/marine/insitu_profile_bathy.yaml.j2 new file mode 100644 index 0000000..8223f36 --- /dev/null +++ b/observations/marine/insitu_profile_bathy.yaml.j2 @@ -0,0 +1,17 @@ +- obs space: + name: insitu_profile_bathy + obsdatain: + engine: + type: H5File + obsfile: "{{marine_obsdatain_path}}/{{marine_obsdatain_prefix}}{{observation_from_jcb}}{{marine_obsdatain_suffix}}" + obsdataout: + engine: + type: H5File + obsfile: "{{marine_obsdataout_path}}/{{marine_obsdataout_prefix}}{{observation_from_jcb}}{{marine_obsdataout_suffix}}" + simulated variables: [waterTemperature] + io pool: + max pool size: 1 + obs operator: + name: InsituTemperature + obs error: + covariance model: diagonal diff --git a/observations/marine/insitu_profile_dbuoy.yaml.j2 b/observations/marine/insitu_profile_dbuoy.yaml.j2 new file mode 100644 index 0000000..cec36c1 --- /dev/null +++ b/observations/marine/insitu_profile_dbuoy.yaml.j2 @@ -0,0 +1,22 @@ +- obs space: + name: insitu_profile_dbuoy + obsdatain: + engine: + type: H5File + obsfile: "{{marine_obsdatain_path}}/{{marine_obsdatain_prefix}}{{observation_from_jcb}}{{marine_obsdatain_suffix}}" + obsdataout: + engine: + type: H5File + obsfile: "{{marine_obsdataout_path}}/{{marine_obsdataout_prefix}}{{observation_from_jcb}}{{marine_obsdataout_suffix}}" + simulated variables: [waterTemperature] + observed variables: [waterTemperature] + io pool: + max pool size: 1 + obs operator: + name: Composite + components: + - name: InsituTemperature + variables: + - name: waterTemperature + obs error: + covariance model: diagonal diff --git a/observations/marine/insitu_profile_dbuoyb.yaml.j2 b/observations/marine/insitu_profile_dbuoyb.yaml.j2 new file mode 100644 index 0000000..5cec54d --- /dev/null +++ b/observations/marine/insitu_profile_dbuoyb.yaml.j2 @@ -0,0 +1,22 @@ +- obs space: + name: insitu_profile_dbuoyb + obsdatain: + engine: + type: H5File + obsfile: "{{marine_obsdatain_path}}/{{marine_obsdatain_prefix}}{{observation_from_jcb}}{{marine_obsdatain_suffix}}" + obsdataout: + engine: + type: H5File + obsfile: "{{marine_obsdataout_path}}/{{marine_obsdataout_prefix}}{{observation_from_jcb}}{{marine_obsdataout_suffix}}" + simulated variables: [waterTemperature] + observed variables: [waterTemperature] + io pool: + max pool size: 1 + obs operator: + name: Composite + components: + - name: InsituTemperature + variables: + - name: waterTemperature + obs error: + covariance model: diagonal diff --git a/observations/marine/insitu_profile_glider.yaml.j2 b/observations/marine/insitu_profile_glider.yaml.j2 new file mode 100644 index 0000000..1c9bab3 --- /dev/null +++ b/observations/marine/insitu_profile_glider.yaml.j2 @@ -0,0 +1,22 @@ +- obs space: + name: insitu_profile_glider + obsdatain: + engine: + type: H5File + obsfile: "{{marine_obsdatain_path}}/{{marine_obsdatain_prefix}}{{observation_from_jcb}}{{marine_obsdatain_suffix}}" + obsdataout: + engine: + type: H5File + obsfile: "{{marine_obsdataout_path}}/{{marine_obsdataout_prefix}}{{observation_from_jcb}}{{marine_obsdataout_suffix}}" + simulated variables: [waterTemperature] + observed variables: [waterTemperature] + io pool: + max pool size: 1 + obs operator: + name: Composite + components: + - name: InsituTemperature + variables: + - name: waterTemperature + obs error: + covariance model: diagonal diff --git a/observations/marine/insitu_profile_marinemammal.yaml.j2 b/observations/marine/insitu_profile_marinemammal.yaml.j2 new file mode 100644 index 0000000..ad44565 --- /dev/null +++ b/observations/marine/insitu_profile_marinemammal.yaml.j2 @@ -0,0 +1,22 @@ +- obs space: + name: insitu_profile_marinemammal + obsdatain: + engine: + type: H5File + obsfile: "{{marine_obsdatain_path}}/{{marine_obsdatain_prefix}}{{observation_from_jcb}}{{marine_obsdatain_suffix}}" + obsdataout: + engine: + type: H5File + obsfile: "{{marine_obsdataout_path}}/{{marine_obsdataout_prefix}}{{observation_from_jcb}}{{marine_obsdataout_suffix}}" + simulated variables: [waterTemperature] + observed variables: [waterTemperature] + io pool: + max pool size: 1 + obs operator: + name: Composite + components: + - name: InsituTemperature + variables: + - name: waterTemperature + obs error: + covariance model: diagonal diff --git a/observations/marine/insitu_profile_mbuoy.yaml.j2 b/observations/marine/insitu_profile_mbuoy.yaml.j2 new file mode 100644 index 0000000..bf783ca --- /dev/null +++ b/observations/marine/insitu_profile_mbuoy.yaml.j2 @@ -0,0 +1,22 @@ +- obs space: + name: insitu_profile_mbuoy + obsdatain: + engine: + type: H5File + obsfile: "{{marine_obsdatain_path}}/{{marine_obsdatain_prefix}}{{observation_from_jcb}}{{marine_obsdatain_suffix}}" + obsdataout: + engine: + type: H5File + obsfile: "{{marine_obsdataout_path}}/{{marine_obsdataout_prefix}}{{observation_from_jcb}}{{marine_obsdataout_suffix}}" + simulated variables: [waterTemperature] + observed variables: [waterTemperature] + io pool: + max pool size: 1 + obs operator: + name: Composite + components: + - name: InsituTemperature + variables: + - name: waterTemperature + obs error: + covariance model: diagonal diff --git a/observations/marine/insitu_profile_mbuoyb.yaml.j2 b/observations/marine/insitu_profile_mbuoyb.yaml.j2 new file mode 100644 index 0000000..78c2617 --- /dev/null +++ b/observations/marine/insitu_profile_mbuoyb.yaml.j2 @@ -0,0 +1,22 @@ +- obs space: + name: insitu_profile_mbuoyb + obsdatain: + engine: + type: H5File + obsfile: "{{marine_obsdatain_path}}/{{marine_obsdatain_prefix}}{{observation_from_jcb}}{{marine_obsdatain_suffix}}" + obsdataout: + engine: + type: H5File + obsfile: "{{marine_obsdataout_path}}/{{marine_obsdataout_prefix}}{{observation_from_jcb}}{{marine_obsdataout_suffix}}" + simulated variables: [waterTemperature] + observed variables: [waterTemperature] + io pool: + max pool size: 1 + obs operator: + name: Composite + components: + - name: InsituTemperature + variables: + - name: waterTemperature + obs error: + covariance model: diagonal diff --git a/observations/marine/insitu_profile_tesac.yaml.j2 b/observations/marine/insitu_profile_tesac.yaml.j2 new file mode 100644 index 0000000..0c9af57 --- /dev/null +++ b/observations/marine/insitu_profile_tesac.yaml.j2 @@ -0,0 +1,20 @@ +- obs space: + name: insitu_profile_tesac + obsdatain: + engine: + type: H5File + obsfile: "{{marine_obsdatain_path}}/{{marine_obsdatain_prefix}}{{observation_from_jcb}}{{marine_obsdatain_suffix}}" + obsdataout: + engine: + type: H5File + obsfile: "{{marine_obsdataout_path}}/{{marine_obsdataout_prefix}}{{observation_from_jcb}}{{marine_obsdataout_suffix}}" + simulated variables: [waterTemperature] + observed variables: [waterTemperature] + io pool: + max pool size: 1 + obs operator: + name: Composite + components: + - name: InsituTemperature + variables: + - name: waterTemperature diff --git a/observations/marine/insitu_profile_tesac_salinity.yaml.j2 b/observations/marine/insitu_profile_tesac_salinity.yaml.j2 new file mode 100644 index 0000000..36c5003 --- /dev/null +++ b/observations/marine/insitu_profile_tesac_salinity.yaml.j2 @@ -0,0 +1,22 @@ +- obs space: + name: insitu_profile_tesac_salinity + obsdatain: + engine: + type: H5File + obsfile: "{{marine_obsdatain_path}}/{{marine_obsdatain_prefix}}{{observation_from_jcb}}{{marine_obsdatain_suffix}}" + obsdataout: + engine: + type: H5File + obsfile: "{{marine_obsdataout_path}}/{{marine_obsdataout_prefix}}{{observation_from_jcb}}{{marine_obsdataout_suffix}}" + simulated variables: [salinity] + observed variables: [salinity] + io pool: + max pool size: 1 + obs operator: + name: VertInterp + observation alias file: ./obsop_name_map.yaml + vertical coordinate: sea_water_depth + observation vertical coordinate: depth + interpolation method: linear + obs error: + covariance model: diagonal diff --git a/observations/marine/insitu_profile_xbtctd.yaml.j2 b/observations/marine/insitu_profile_xbtctd.yaml.j2 new file mode 100644 index 0000000..aee91cf --- /dev/null +++ b/observations/marine/insitu_profile_xbtctd.yaml.j2 @@ -0,0 +1,22 @@ +- obs space: + name: insitu_profile_xbtctd + obsdatain: + engine: + type: H5File + obsfile: "{{marine_obsdatain_path}}/{{marine_obsdatain_prefix}}{{observation_from_jcb}}{{marine_obsdatain_suffix}}" + obsdataout: + engine: + type: H5File + obsfile: "{{marine_obsdataout_path}}/{{marine_obsdataout_prefix}}{{observation_from_jcb}}{{marine_obsdataout_suffix}}" + simulated variables: [waterTemperature] + observed variables: [waterTemperature] + io pool: + max pool size: 1 + obs operator: + name: Composite + components: + - name: InsituTemperature + variables: + - name: waterTemperature + obs error: + covariance model: diagonal diff --git a/observations/marine/insitu_surface_altkob.yaml.j2 b/observations/marine/insitu_surface_altkob.yaml.j2 new file mode 100644 index 0000000..063c3ec --- /dev/null +++ b/observations/marine/insitu_surface_altkob.yaml.j2 @@ -0,0 +1,18 @@ +- obs space: + name: insitu_surface_altkob + obsdatain: + engine: + type: H5File + obsfile: "{{marine_obsdatain_path}}/{{marine_obsdatain_prefix}}{{observation_from_jcb}}{{marine_obsdatain_suffix}}" + obsdataout: + engine: + type: H5File + obsfile: "{{marine_obsdataout_path}}/{{marine_obsdataout_prefix}}{{observation_from_jcb}}{{marine_obsdataout_suffix}}" + simulated variables: [seaSurfaceTemperature] + io pool: + max pool size: 1 + obs operator: + name: Identity + observation alias file: obsop_name_map.yaml + obs error: + covariance model: diagonal diff --git a/observations/marine/insitu_surface_trkob.yaml.j2 b/observations/marine/insitu_surface_trkob.yaml.j2 new file mode 100644 index 0000000..6251292 --- /dev/null +++ b/observations/marine/insitu_surface_trkob.yaml.j2 @@ -0,0 +1,18 @@ +- obs space: + name: insitu_surface_trkob + obsdatain: + engine: + type: H5File + obsfile: "{{marine_obsdatain_path}}/{{marine_obsdatain_prefix}}{{observation_from_jcb}}{{marine_obsdatain_suffix}}" + obsdataout: + engine: + type: H5File + obsfile: "{{marine_obsdataout_path}}/{{marine_obsdataout_prefix}}{{observation_from_jcb}}{{marine_obsdataout_suffix}}" + simulated variables: [seaSurfaceTemperature] + io pool: + max pool size: 1 + obs operator: + name: Identity + observation alias file: ./obsop_name_map.yaml + obs error: + covariance model: diagonal diff --git a/observations/marine/insitu_surface_trkob_salinity.yaml.j2 b/observations/marine/insitu_surface_trkob_salinity.yaml.j2 new file mode 100644 index 0000000..5ba67e9 --- /dev/null +++ b/observations/marine/insitu_surface_trkob_salinity.yaml.j2 @@ -0,0 +1,18 @@ +- obs space: + name: insitu_surface_trkob_salinity + obsdatain: + engine: + type: H5File + obsfile: "{{marine_obsdatain_path}}/{{marine_obsdatain_prefix}}{{observation_from_jcb}}{{marine_obsdatain_suffix}}" + obsdataout: + engine: + type: H5File + obsfile: "{{marine_obsdataout_path}}/{{marine_obsdataout_prefix}}{{observation_from_jcb}}{{marine_obsdataout_suffix}}" + simulated variables: [seaSurfaceSalinity] + get values: + time interpolation: linear + obs operator: + name: Identity + observation alias file: ./obsop_name_map.yaml + obs error: + covariance model: diagonal diff --git a/observations/marine/sst_abi_g16_l3c.yaml.j2 b/observations/marine/sst_abi_g16_l3c.yaml.j2 new file mode 100644 index 0000000..184fc29 --- /dev/null +++ b/observations/marine/sst_abi_g16_l3c.yaml.j2 @@ -0,0 +1,56 @@ +- obs space: + name: {{observation_from_jcb}} + obsdatain: + engine: + type: H5File + obsfile: "{{marine_obsdatain_path}}/{{marine_obsdatain_prefix}}{{observation_from_jcb}}{{marine_obsdatain_suffix}}" + obsdataout: + engine: + type: H5File + obsfile: "{{marine_obsdataout_path}}/{{marine_obsdataout_prefix}}{{observation_from_jcb}}{{marine_obsdataout_suffix}}" + simulated variables: [seaSurfaceTemperature] + io pool: + max pool size: 1 + get values: + time interpolation: linear + obs operator: + name: Identity + observation alias file: obsop_name_map.yaml + obs error: + covariance model: diagonal + obs filters: + - filter: Domain Check + where: + - variable: {name: GeoVaLs/sea_area_fraction} + minvalue: 0.9 + - filter: Bounds Check + minvalue: 1.0 + maxvalue: 41.0 + - filter: Background Check + absolute threshold: 5.0 + - filter: Domain Check + where: + - variable: {name: ObsError/seaSurfaceTemperature} + minvalue: 1.0e-8 + - filter: Domain Check + where: + - variable: { name: GeoVaLs/sea_ice_area_fraction} + maxvalue: 1.0e-5 + - filter: Domain Check + where: + - variable: {name: GeoVaLs/sea_surface_temperature} + minvalue: -1.0 + #- filter: Domain Check + # where: + # - variable: {name: GeoVaLs/distance_from_coast} + # minvalue: 100e3 + - filter: Perform Action + action: + name: assign error + error function: + name: ObsFunction/LinearCombination + options: + variables: + - ObsError/seaSurfaceTemperature + coefs: + - 0.05 diff --git a/observations/marine/sst_abi_g17_l3c.yaml.j2 b/observations/marine/sst_abi_g17_l3c.yaml.j2 new file mode 100644 index 0000000..184fc29 --- /dev/null +++ b/observations/marine/sst_abi_g17_l3c.yaml.j2 @@ -0,0 +1,56 @@ +- obs space: + name: {{observation_from_jcb}} + obsdatain: + engine: + type: H5File + obsfile: "{{marine_obsdatain_path}}/{{marine_obsdatain_prefix}}{{observation_from_jcb}}{{marine_obsdatain_suffix}}" + obsdataout: + engine: + type: H5File + obsfile: "{{marine_obsdataout_path}}/{{marine_obsdataout_prefix}}{{observation_from_jcb}}{{marine_obsdataout_suffix}}" + simulated variables: [seaSurfaceTemperature] + io pool: + max pool size: 1 + get values: + time interpolation: linear + obs operator: + name: Identity + observation alias file: obsop_name_map.yaml + obs error: + covariance model: diagonal + obs filters: + - filter: Domain Check + where: + - variable: {name: GeoVaLs/sea_area_fraction} + minvalue: 0.9 + - filter: Bounds Check + minvalue: 1.0 + maxvalue: 41.0 + - filter: Background Check + absolute threshold: 5.0 + - filter: Domain Check + where: + - variable: {name: ObsError/seaSurfaceTemperature} + minvalue: 1.0e-8 + - filter: Domain Check + where: + - variable: { name: GeoVaLs/sea_ice_area_fraction} + maxvalue: 1.0e-5 + - filter: Domain Check + where: + - variable: {name: GeoVaLs/sea_surface_temperature} + minvalue: -1.0 + #- filter: Domain Check + # where: + # - variable: {name: GeoVaLs/distance_from_coast} + # minvalue: 100e3 + - filter: Perform Action + action: + name: assign error + error function: + name: ObsFunction/LinearCombination + options: + variables: + - ObsError/seaSurfaceTemperature + coefs: + - 0.05 diff --git a/observations/marine/sst_ahi_h08_l3c.yaml.j2 b/observations/marine/sst_ahi_h08_l3c.yaml.j2 new file mode 100644 index 0000000..184fc29 --- /dev/null +++ b/observations/marine/sst_ahi_h08_l3c.yaml.j2 @@ -0,0 +1,56 @@ +- obs space: + name: {{observation_from_jcb}} + obsdatain: + engine: + type: H5File + obsfile: "{{marine_obsdatain_path}}/{{marine_obsdatain_prefix}}{{observation_from_jcb}}{{marine_obsdatain_suffix}}" + obsdataout: + engine: + type: H5File + obsfile: "{{marine_obsdataout_path}}/{{marine_obsdataout_prefix}}{{observation_from_jcb}}{{marine_obsdataout_suffix}}" + simulated variables: [seaSurfaceTemperature] + io pool: + max pool size: 1 + get values: + time interpolation: linear + obs operator: + name: Identity + observation alias file: obsop_name_map.yaml + obs error: + covariance model: diagonal + obs filters: + - filter: Domain Check + where: + - variable: {name: GeoVaLs/sea_area_fraction} + minvalue: 0.9 + - filter: Bounds Check + minvalue: 1.0 + maxvalue: 41.0 + - filter: Background Check + absolute threshold: 5.0 + - filter: Domain Check + where: + - variable: {name: ObsError/seaSurfaceTemperature} + minvalue: 1.0e-8 + - filter: Domain Check + where: + - variable: { name: GeoVaLs/sea_ice_area_fraction} + maxvalue: 1.0e-5 + - filter: Domain Check + where: + - variable: {name: GeoVaLs/sea_surface_temperature} + minvalue: -1.0 + #- filter: Domain Check + # where: + # - variable: {name: GeoVaLs/distance_from_coast} + # minvalue: 100e3 + - filter: Perform Action + action: + name: assign error + error function: + name: ObsFunction/LinearCombination + options: + variables: + - ObsError/seaSurfaceTemperature + coefs: + - 0.05 diff --git a/observations/marine/sst_avhrr_ma_l3u.yaml.j2 b/observations/marine/sst_avhrr_ma_l3u.yaml.j2 new file mode 100644 index 0000000..184fc29 --- /dev/null +++ b/observations/marine/sst_avhrr_ma_l3u.yaml.j2 @@ -0,0 +1,56 @@ +- obs space: + name: {{observation_from_jcb}} + obsdatain: + engine: + type: H5File + obsfile: "{{marine_obsdatain_path}}/{{marine_obsdatain_prefix}}{{observation_from_jcb}}{{marine_obsdatain_suffix}}" + obsdataout: + engine: + type: H5File + obsfile: "{{marine_obsdataout_path}}/{{marine_obsdataout_prefix}}{{observation_from_jcb}}{{marine_obsdataout_suffix}}" + simulated variables: [seaSurfaceTemperature] + io pool: + max pool size: 1 + get values: + time interpolation: linear + obs operator: + name: Identity + observation alias file: obsop_name_map.yaml + obs error: + covariance model: diagonal + obs filters: + - filter: Domain Check + where: + - variable: {name: GeoVaLs/sea_area_fraction} + minvalue: 0.9 + - filter: Bounds Check + minvalue: 1.0 + maxvalue: 41.0 + - filter: Background Check + absolute threshold: 5.0 + - filter: Domain Check + where: + - variable: {name: ObsError/seaSurfaceTemperature} + minvalue: 1.0e-8 + - filter: Domain Check + where: + - variable: { name: GeoVaLs/sea_ice_area_fraction} + maxvalue: 1.0e-5 + - filter: Domain Check + where: + - variable: {name: GeoVaLs/sea_surface_temperature} + minvalue: -1.0 + #- filter: Domain Check + # where: + # - variable: {name: GeoVaLs/distance_from_coast} + # minvalue: 100e3 + - filter: Perform Action + action: + name: assign error + error function: + name: ObsFunction/LinearCombination + options: + variables: + - ObsError/seaSurfaceTemperature + coefs: + - 0.05 diff --git a/observations/marine/sst_avhrr_mb_l3u.yaml.j2 b/observations/marine/sst_avhrr_mb_l3u.yaml.j2 new file mode 100644 index 0000000..184fc29 --- /dev/null +++ b/observations/marine/sst_avhrr_mb_l3u.yaml.j2 @@ -0,0 +1,56 @@ +- obs space: + name: {{observation_from_jcb}} + obsdatain: + engine: + type: H5File + obsfile: "{{marine_obsdatain_path}}/{{marine_obsdatain_prefix}}{{observation_from_jcb}}{{marine_obsdatain_suffix}}" + obsdataout: + engine: + type: H5File + obsfile: "{{marine_obsdataout_path}}/{{marine_obsdataout_prefix}}{{observation_from_jcb}}{{marine_obsdataout_suffix}}" + simulated variables: [seaSurfaceTemperature] + io pool: + max pool size: 1 + get values: + time interpolation: linear + obs operator: + name: Identity + observation alias file: obsop_name_map.yaml + obs error: + covariance model: diagonal + obs filters: + - filter: Domain Check + where: + - variable: {name: GeoVaLs/sea_area_fraction} + minvalue: 0.9 + - filter: Bounds Check + minvalue: 1.0 + maxvalue: 41.0 + - filter: Background Check + absolute threshold: 5.0 + - filter: Domain Check + where: + - variable: {name: ObsError/seaSurfaceTemperature} + minvalue: 1.0e-8 + - filter: Domain Check + where: + - variable: { name: GeoVaLs/sea_ice_area_fraction} + maxvalue: 1.0e-5 + - filter: Domain Check + where: + - variable: {name: GeoVaLs/sea_surface_temperature} + minvalue: -1.0 + #- filter: Domain Check + # where: + # - variable: {name: GeoVaLs/distance_from_coast} + # minvalue: 100e3 + - filter: Perform Action + action: + name: assign error + error function: + name: ObsFunction/LinearCombination + options: + variables: + - ObsError/seaSurfaceTemperature + coefs: + - 0.05 diff --git a/observations/marine/sst_avhrr_mc_l3u.yaml.j2 b/observations/marine/sst_avhrr_mc_l3u.yaml.j2 new file mode 100644 index 0000000..184fc29 --- /dev/null +++ b/observations/marine/sst_avhrr_mc_l3u.yaml.j2 @@ -0,0 +1,56 @@ +- obs space: + name: {{observation_from_jcb}} + obsdatain: + engine: + type: H5File + obsfile: "{{marine_obsdatain_path}}/{{marine_obsdatain_prefix}}{{observation_from_jcb}}{{marine_obsdatain_suffix}}" + obsdataout: + engine: + type: H5File + obsfile: "{{marine_obsdataout_path}}/{{marine_obsdataout_prefix}}{{observation_from_jcb}}{{marine_obsdataout_suffix}}" + simulated variables: [seaSurfaceTemperature] + io pool: + max pool size: 1 + get values: + time interpolation: linear + obs operator: + name: Identity + observation alias file: obsop_name_map.yaml + obs error: + covariance model: diagonal + obs filters: + - filter: Domain Check + where: + - variable: {name: GeoVaLs/sea_area_fraction} + minvalue: 0.9 + - filter: Bounds Check + minvalue: 1.0 + maxvalue: 41.0 + - filter: Background Check + absolute threshold: 5.0 + - filter: Domain Check + where: + - variable: {name: ObsError/seaSurfaceTemperature} + minvalue: 1.0e-8 + - filter: Domain Check + where: + - variable: { name: GeoVaLs/sea_ice_area_fraction} + maxvalue: 1.0e-5 + - filter: Domain Check + where: + - variable: {name: GeoVaLs/sea_surface_temperature} + minvalue: -1.0 + #- filter: Domain Check + # where: + # - variable: {name: GeoVaLs/distance_from_coast} + # minvalue: 100e3 + - filter: Perform Action + action: + name: assign error + error function: + name: ObsFunction/LinearCombination + options: + variables: + - ObsError/seaSurfaceTemperature + coefs: + - 0.05 diff --git a/observations/marine/sst_viirs_n20_l3u.yaml.j2 b/observations/marine/sst_viirs_n20_l3u.yaml.j2 new file mode 100644 index 0000000..184fc29 --- /dev/null +++ b/observations/marine/sst_viirs_n20_l3u.yaml.j2 @@ -0,0 +1,56 @@ +- obs space: + name: {{observation_from_jcb}} + obsdatain: + engine: + type: H5File + obsfile: "{{marine_obsdatain_path}}/{{marine_obsdatain_prefix}}{{observation_from_jcb}}{{marine_obsdatain_suffix}}" + obsdataout: + engine: + type: H5File + obsfile: "{{marine_obsdataout_path}}/{{marine_obsdataout_prefix}}{{observation_from_jcb}}{{marine_obsdataout_suffix}}" + simulated variables: [seaSurfaceTemperature] + io pool: + max pool size: 1 + get values: + time interpolation: linear + obs operator: + name: Identity + observation alias file: obsop_name_map.yaml + obs error: + covariance model: diagonal + obs filters: + - filter: Domain Check + where: + - variable: {name: GeoVaLs/sea_area_fraction} + minvalue: 0.9 + - filter: Bounds Check + minvalue: 1.0 + maxvalue: 41.0 + - filter: Background Check + absolute threshold: 5.0 + - filter: Domain Check + where: + - variable: {name: ObsError/seaSurfaceTemperature} + minvalue: 1.0e-8 + - filter: Domain Check + where: + - variable: { name: GeoVaLs/sea_ice_area_fraction} + maxvalue: 1.0e-5 + - filter: Domain Check + where: + - variable: {name: GeoVaLs/sea_surface_temperature} + minvalue: -1.0 + #- filter: Domain Check + # where: + # - variable: {name: GeoVaLs/distance_from_coast} + # minvalue: 100e3 + - filter: Perform Action + action: + name: assign error + error function: + name: ObsFunction/LinearCombination + options: + variables: + - ObsError/seaSurfaceTemperature + coefs: + - 0.05 diff --git a/observations/marine/sst_viirs_npp_l3u.yaml.j2 b/observations/marine/sst_viirs_npp_l3u.yaml.j2 new file mode 100644 index 0000000..184fc29 --- /dev/null +++ b/observations/marine/sst_viirs_npp_l3u.yaml.j2 @@ -0,0 +1,56 @@ +- obs space: + name: {{observation_from_jcb}} + obsdatain: + engine: + type: H5File + obsfile: "{{marine_obsdatain_path}}/{{marine_obsdatain_prefix}}{{observation_from_jcb}}{{marine_obsdatain_suffix}}" + obsdataout: + engine: + type: H5File + obsfile: "{{marine_obsdataout_path}}/{{marine_obsdataout_prefix}}{{observation_from_jcb}}{{marine_obsdataout_suffix}}" + simulated variables: [seaSurfaceTemperature] + io pool: + max pool size: 1 + get values: + time interpolation: linear + obs operator: + name: Identity + observation alias file: obsop_name_map.yaml + obs error: + covariance model: diagonal + obs filters: + - filter: Domain Check + where: + - variable: {name: GeoVaLs/sea_area_fraction} + minvalue: 0.9 + - filter: Bounds Check + minvalue: 1.0 + maxvalue: 41.0 + - filter: Background Check + absolute threshold: 5.0 + - filter: Domain Check + where: + - variable: {name: ObsError/seaSurfaceTemperature} + minvalue: 1.0e-8 + - filter: Domain Check + where: + - variable: { name: GeoVaLs/sea_ice_area_fraction} + maxvalue: 1.0e-5 + - filter: Domain Check + where: + - variable: {name: GeoVaLs/sea_surface_temperature} + minvalue: -1.0 + #- filter: Domain Check + # where: + # - variable: {name: GeoVaLs/distance_from_coast} + # minvalue: 100e3 + - filter: Perform Action + action: + name: assign error + error function: + name: ObsFunction/LinearCombination + options: + variables: + - ObsError/seaSurfaceTemperature + coefs: + - 0.05