From 2b2d417a96528527d7d3e7eedaccf150dc075d92 Mon Sep 17 00:00:00 2001 From: Dan Holdaway <27729500+danholdaway@users.noreply.github.com> Date: Tue, 7 May 2024 09:22:01 -0400 Subject: [PATCH] Move Atmospheric YAMLs to JCB repo (#1033) Draft until https://github.com/NOAA-EMC/global-workflow/pull/2420 is merged since that seems to be causing a failure of `test_gdasapp_atm_jjob_var_final`. Once merged I'll finish testing and make sure the cycling works. But in the mean time folks can review the structural changes of brining in the JCB repo. GW PR: https://github.com/NOAA-EMC/global-workflow/pull/2477 --------- Co-authored-by: danholdaway Co-authored-by: RussTreadon-NOAA --- .gitmodules | 12 +- parm/atm/berror/hybvar_bump.yaml.j2 | 127 -- parm/atm/berror/hybvar_gsibec.yaml.j2 | 207 ---- parm/atm/berror/staticb_bump.yaml.j2 | 89 -- parm/atm/berror/staticb_gsibec.yaml.j2 | 26 - parm/atm/berror/staticb_identity.yaml.j2 | 2 - parm/atm/hofx/hofx4d.yaml.j2 | 48 - parm/atm/hofx/hofx_nomodel.yaml.j2 | 32 - parm/atm/hofx/hofx_ufotest.yaml.j2 | 8 - parm/atm/jcb-base.yaml.j2 | 128 ++ parm/atm/jcb-prototype_3dvar.yaml.j2 | 14 + parm/atm/jcb-prototype_4d.yaml.j2 | 19 + parm/atm/jcb-prototype_lgetkf.yaml.j2 | 20 + parm/atm/lgetkf/lgetkf.yaml.j2 | 72 -- parm/atm/obs/config/aircraft.yaml.j2 | 330 ------ parm/atm/obs/config/amsua_n19.yaml.j2 | 367 ------ parm/atm/obs/config/atms_n20.yaml.j2 | 557 --------- parm/atm/obs/config/atms_npp.yaml.j2 | 557 --------- parm/atm/obs/config/conv_ps.yaml.j2 | 350 ------ parm/atm/obs/config/cris-fsr_n20.yaml.j2 | 457 ------- parm/atm/obs/config/cris-fsr_npp.yaml.j2 | 456 ------- parm/atm/obs/config/gnssro.yaml.j2 | 140 --- parm/atm/obs/config/iasi_metop-a.yaml.j2 | 756 ------------ parm/atm/obs/config/iasi_metop-b.yaml.j2 | 756 ------------ parm/atm/obs/config/lgetkf_amsua_n19.yaml.j2 | 79 -- parm/atm/obs/config/lgetkf_conv_ps.yaml.j2 | 357 ------ parm/atm/obs/config/lgetkf_gnssro.yaml.j2 | 146 --- .../config/lgetkf_satwind_abi_goes-16.yaml.j2 | 573 --------- .../obs/config/lgetkf_satwind_ahi_h8.yaml.j2 | 404 ------- .../lgetkf_scatwind_ascat_metop-b.yaml.j2 | 301 ----- parm/atm/obs/config/lgetkf_sondes.yaml.j2 | 33 - parm/atm/obs/config/omi_aura.yaml.j2 | 153 --- parm/atm/obs/config/ompsnp_npp.yaml.j2 | 304 ----- parm/atm/obs/config/ompstc_npp.yaml.j2 | 113 -- parm/atm/obs/config/satwind.yaml.j2 | 882 -------------- .../obs/config/satwind_abi_goes-16.yaml.j2 | 566 --------- .../obs/config/satwind_abi_goes-17.yaml.j2 | 566 --------- parm/atm/obs/config/satwind_ahi_h8.yaml.j2 | 397 ------- parm/atm/obs/config/satwind_avhrr_n15.yaml.j2 | 289 ----- parm/atm/obs/config/satwind_avhrr_n18.yaml.j2 | 289 ----- parm/atm/obs/config/satwind_avhrr_n19.yaml.j2 | 289 ----- .../atm/obs/config/satwind_seviri_m11.yaml.j2 | 405 ------- parm/atm/obs/config/satwind_seviri_m8.yaml.j2 | 405 ------- .../obs/config/scatwind_ascat_metop-a.yaml.j2 | 294 ----- .../obs/config/scatwind_ascat_metop-b.yaml.j2 | 294 ----- parm/atm/obs/config/seviri_m08.yaml.j2 | 488 -------- parm/atm/obs/config/seviri_m11.yaml.j2 | 486 -------- parm/atm/obs/config/sfc.yaml.j2 | 20 - parm/atm/obs/config/sfcship.yaml.j2 | 75 -- parm/atm/obs/config/sondes.yaml.j2 | 104 -- parm/atm/obs/config/ssmis_f17.yaml.j2 | 152 --- parm/atm/obs/config/ssmis_f18.yaml.j2 | 152 --- parm/atm/obs/lists/gdas_prototype.yaml.j2 | 15 - parm/atm/obs/lists/gdas_prototype_3d.yaml.j2 | 10 - parm/atm/obs/lists/gdas_prototype_4d.yaml.j2 | 15 - parm/atm/obs/lists/lgetkf_prototype.yaml.j2 | 7 - parm/atm/obs/testing/aircraft.yaml | 334 ------ parm/atm/obs/testing/amsua_metop-a.yaml | 471 -------- parm/atm/obs/testing/amsua_metop-b.yaml | 471 -------- parm/atm/obs/testing/amsua_metop-c.yaml | 470 -------- parm/atm/obs/testing/amsua_n15.yaml | 470 -------- parm/atm/obs/testing/amsua_n18.yaml | 471 -------- parm/atm/obs/testing/amsua_n19.yaml | 470 -------- parm/atm/obs/testing/atms_n20.yaml | 518 -------- parm/atm/obs/testing/atms_n20_noqc.yaml | 148 --- parm/atm/obs/testing/atms_npp.yaml | 518 -------- parm/atm/obs/testing/atms_npp_noqc.yaml | 148 --- parm/atm/obs/testing/avhrr3_metop-a.yaml | 191 --- parm/atm/obs/testing/avhrr3_metop-b.yaml | 191 --- parm/atm/obs/testing/avhrr3_n18.yaml | 191 --- parm/atm/obs/testing/avhrr3_n19.yaml | 191 --- parm/atm/obs/testing/conv_ps.yaml | 277 ----- parm/atm/obs/testing/conv_ps_noqc.yaml | 110 -- parm/atm/obs/testing/cris-fsr_n20.yaml | 489 -------- parm/atm/obs/testing/cris-fsr_npp.yaml | 489 -------- parm/atm/obs/testing/gps_bend.yaml | 86 -- parm/atm/obs/testing/iasi_metop-a.yaml | 624 ---------- parm/atm/obs/testing/iasi_metop-a_noqc.yaml | 158 --- parm/atm/obs/testing/iasi_metop-b.yaml | 624 ---------- parm/atm/obs/testing/iasi_metop-b_noqc.yaml | 158 --- parm/atm/obs/testing/mhs_metop-b.yaml | 177 --- parm/atm/obs/testing/mhs_n19.yaml | 161 --- parm/atm/obs/testing/omi_aura.yaml | 93 -- parm/atm/obs/testing/omi_aura_noqc.yaml | 35 - parm/atm/obs/testing/ompsnp_npp.yaml | 291 ----- parm/atm/obs/testing/ompsnp_npp_noqc.yaml | 47 - parm/atm/obs/testing/ompstc_npp.yaml | 95 -- parm/atm/obs/testing/ompstc_npp_noqc.yaml | 35 - parm/atm/obs/testing/satwind.yaml | 1045 ----------------- parm/atm/obs/testing/satwind_noqc.yaml | 412 ------- parm/atm/obs/testing/scatwind.yaml | 298 ----- parm/atm/obs/testing/scatwind_noqc.yaml | 50 - parm/atm/obs/testing/seviri_m08.yaml | 329 ------ parm/atm/obs/testing/seviri_m11.yaml | 329 ------ parm/atm/obs/testing/sfc.yaml | 22 - parm/atm/obs/testing/sfcship.yaml | 73 -- parm/atm/obs/testing/sondes.yaml | 106 -- parm/atm/obs/testing/sondes_ps.yaml | 23 - parm/atm/obs/testing/ssmis_f17.yaml | 770 ------------ parm/atm/obs/testing/ssmis_f18.yaml | 770 ------------ parm/atm/utils/fv3jedi_fv3inc_lgetkf.yaml.j2 | 62 - .../utils/fv3jedi_fv3inc_variational.yaml.j2 | 62 - parm/atm/variational/3dvar_drpcg.yaml.j2 | 102 -- parm/jcb-algorithms | 1 + parm/jcb-gdas | 1 + test/atm/global-workflow/config.atmanl | 10 +- test/atm/global-workflow/config.atmensanl | 5 +- test/atm/global-workflow/config.yaml | 4 +- .../global-workflow/gdas_prototype.yaml.j2 | 5 - .../jcb-prototype_3dvar.yaml.j2 | 16 + .../jcb-prototype_lgetkf.yaml.j2 | 21 + .../global-workflow/lgetkf_prototype.yaml.j2 | 5 - 112 files changed, 241 insertions(+), 27675 deletions(-) delete mode 100644 parm/atm/berror/hybvar_bump.yaml.j2 delete mode 100644 parm/atm/berror/hybvar_gsibec.yaml.j2 delete mode 100644 parm/atm/berror/staticb_bump.yaml.j2 delete mode 100644 parm/atm/berror/staticb_gsibec.yaml.j2 delete mode 100644 parm/atm/berror/staticb_identity.yaml.j2 delete mode 100644 parm/atm/hofx/hofx4d.yaml.j2 delete mode 100644 parm/atm/hofx/hofx_nomodel.yaml.j2 delete mode 100644 parm/atm/hofx/hofx_ufotest.yaml.j2 create mode 100644 parm/atm/jcb-base.yaml.j2 create mode 100644 parm/atm/jcb-prototype_3dvar.yaml.j2 create mode 100644 parm/atm/jcb-prototype_4d.yaml.j2 create mode 100644 parm/atm/jcb-prototype_lgetkf.yaml.j2 delete mode 100644 parm/atm/lgetkf/lgetkf.yaml.j2 delete mode 100644 parm/atm/obs/config/aircraft.yaml.j2 delete mode 100644 parm/atm/obs/config/amsua_n19.yaml.j2 delete mode 100644 parm/atm/obs/config/atms_n20.yaml.j2 delete mode 100644 parm/atm/obs/config/atms_npp.yaml.j2 delete mode 100644 parm/atm/obs/config/conv_ps.yaml.j2 delete mode 100644 parm/atm/obs/config/cris-fsr_n20.yaml.j2 delete mode 100644 parm/atm/obs/config/cris-fsr_npp.yaml.j2 delete mode 100644 parm/atm/obs/config/gnssro.yaml.j2 delete mode 100644 parm/atm/obs/config/iasi_metop-a.yaml.j2 delete mode 100644 parm/atm/obs/config/iasi_metop-b.yaml.j2 delete mode 100644 parm/atm/obs/config/lgetkf_amsua_n19.yaml.j2 delete mode 100644 parm/atm/obs/config/lgetkf_conv_ps.yaml.j2 delete mode 100644 parm/atm/obs/config/lgetkf_gnssro.yaml.j2 delete mode 100644 parm/atm/obs/config/lgetkf_satwind_abi_goes-16.yaml.j2 delete mode 100644 parm/atm/obs/config/lgetkf_satwind_ahi_h8.yaml.j2 delete mode 100644 parm/atm/obs/config/lgetkf_scatwind_ascat_metop-b.yaml.j2 delete mode 100644 parm/atm/obs/config/lgetkf_sondes.yaml.j2 delete mode 100644 parm/atm/obs/config/omi_aura.yaml.j2 delete mode 100644 parm/atm/obs/config/ompsnp_npp.yaml.j2 delete mode 100644 parm/atm/obs/config/ompstc_npp.yaml.j2 delete mode 100644 parm/atm/obs/config/satwind.yaml.j2 delete mode 100644 parm/atm/obs/config/satwind_abi_goes-16.yaml.j2 delete mode 100644 parm/atm/obs/config/satwind_abi_goes-17.yaml.j2 delete mode 100644 parm/atm/obs/config/satwind_ahi_h8.yaml.j2 delete mode 100644 parm/atm/obs/config/satwind_avhrr_n15.yaml.j2 delete mode 100644 parm/atm/obs/config/satwind_avhrr_n18.yaml.j2 delete mode 100644 parm/atm/obs/config/satwind_avhrr_n19.yaml.j2 delete mode 100644 parm/atm/obs/config/satwind_seviri_m11.yaml.j2 delete mode 100644 parm/atm/obs/config/satwind_seviri_m8.yaml.j2 delete mode 100644 parm/atm/obs/config/scatwind_ascat_metop-a.yaml.j2 delete mode 100644 parm/atm/obs/config/scatwind_ascat_metop-b.yaml.j2 delete mode 100644 parm/atm/obs/config/seviri_m08.yaml.j2 delete mode 100644 parm/atm/obs/config/seviri_m11.yaml.j2 delete mode 100644 parm/atm/obs/config/sfc.yaml.j2 delete mode 100644 parm/atm/obs/config/sfcship.yaml.j2 delete mode 100644 parm/atm/obs/config/sondes.yaml.j2 delete mode 100644 parm/atm/obs/config/ssmis_f17.yaml.j2 delete mode 100644 parm/atm/obs/config/ssmis_f18.yaml.j2 delete mode 100644 parm/atm/obs/lists/gdas_prototype.yaml.j2 delete mode 100644 parm/atm/obs/lists/gdas_prototype_3d.yaml.j2 delete mode 100644 parm/atm/obs/lists/gdas_prototype_4d.yaml.j2 delete mode 100644 parm/atm/obs/lists/lgetkf_prototype.yaml.j2 delete mode 100644 parm/atm/obs/testing/aircraft.yaml delete mode 100644 parm/atm/obs/testing/amsua_metop-a.yaml delete mode 100644 parm/atm/obs/testing/amsua_metop-b.yaml delete mode 100644 parm/atm/obs/testing/amsua_metop-c.yaml delete mode 100644 parm/atm/obs/testing/amsua_n15.yaml delete mode 100644 parm/atm/obs/testing/amsua_n18.yaml delete mode 100644 parm/atm/obs/testing/amsua_n19.yaml delete mode 100644 parm/atm/obs/testing/atms_n20.yaml delete mode 100644 parm/atm/obs/testing/atms_n20_noqc.yaml delete mode 100644 parm/atm/obs/testing/atms_npp.yaml delete mode 100644 parm/atm/obs/testing/atms_npp_noqc.yaml delete mode 100644 parm/atm/obs/testing/avhrr3_metop-a.yaml delete mode 100644 parm/atm/obs/testing/avhrr3_metop-b.yaml delete mode 100644 parm/atm/obs/testing/avhrr3_n18.yaml delete mode 100644 parm/atm/obs/testing/avhrr3_n19.yaml delete mode 100644 parm/atm/obs/testing/conv_ps.yaml delete mode 100644 parm/atm/obs/testing/conv_ps_noqc.yaml delete mode 100644 parm/atm/obs/testing/cris-fsr_n20.yaml delete mode 100644 parm/atm/obs/testing/cris-fsr_npp.yaml delete mode 100644 parm/atm/obs/testing/gps_bend.yaml delete mode 100644 parm/atm/obs/testing/iasi_metop-a.yaml delete mode 100644 parm/atm/obs/testing/iasi_metop-a_noqc.yaml delete mode 100644 parm/atm/obs/testing/iasi_metop-b.yaml delete mode 100644 parm/atm/obs/testing/iasi_metop-b_noqc.yaml delete mode 100644 parm/atm/obs/testing/mhs_metop-b.yaml delete mode 100644 parm/atm/obs/testing/mhs_n19.yaml delete mode 100644 parm/atm/obs/testing/omi_aura.yaml delete mode 100644 parm/atm/obs/testing/omi_aura_noqc.yaml delete mode 100644 parm/atm/obs/testing/ompsnp_npp.yaml delete mode 100644 parm/atm/obs/testing/ompsnp_npp_noqc.yaml delete mode 100644 parm/atm/obs/testing/ompstc_npp.yaml delete mode 100644 parm/atm/obs/testing/ompstc_npp_noqc.yaml delete mode 100644 parm/atm/obs/testing/satwind.yaml delete mode 100644 parm/atm/obs/testing/satwind_noqc.yaml delete mode 100644 parm/atm/obs/testing/scatwind.yaml delete mode 100644 parm/atm/obs/testing/scatwind_noqc.yaml delete mode 100644 parm/atm/obs/testing/seviri_m08.yaml delete mode 100644 parm/atm/obs/testing/seviri_m11.yaml delete mode 100644 parm/atm/obs/testing/sfc.yaml delete mode 100644 parm/atm/obs/testing/sfcship.yaml delete mode 100644 parm/atm/obs/testing/sondes.yaml delete mode 100644 parm/atm/obs/testing/sondes_ps.yaml delete mode 100644 parm/atm/obs/testing/ssmis_f17.yaml delete mode 100644 parm/atm/obs/testing/ssmis_f18.yaml delete mode 100644 parm/atm/utils/fv3jedi_fv3inc_lgetkf.yaml.j2 delete mode 100644 parm/atm/utils/fv3jedi_fv3inc_variational.yaml.j2 delete mode 100644 parm/atm/variational/3dvar_drpcg.yaml.j2 create mode 160000 parm/jcb-algorithms create mode 160000 parm/jcb-gdas delete mode 100644 test/atm/global-workflow/gdas_prototype.yaml.j2 create mode 100644 test/atm/global-workflow/jcb-prototype_3dvar.yaml.j2 create mode 100644 test/atm/global-workflow/jcb-prototype_lgetkf.yaml.j2 delete mode 100644 test/atm/global-workflow/lgetkf_prototype.yaml.j2 diff --git a/.gitmodules b/.gitmodules index f8f34c6fa..a4e4d00c2 100644 --- a/.gitmodules +++ b/.gitmodules @@ -74,6 +74,14 @@ url = https://github.com/jcsda/crtm.git branch = release/crtm_jedi_v2.4.1 [submodule "sorc/fms"] - path = sorc/fms - url = https://github.com/jcsda/fms.git + path = sorc/fms + url = https://github.com/jcsda/fms.git branch = release-stable +[submodule "parm/jcb-gdas"] + path = parm/jcb-gdas + url = https://github.com/noaa-emc/jcb-gdas + branch = develop +[submodule "parm/jcb-algorithms"] + path = parm/jcb-algorithms + url = https://github.com/noaa-emc/jcb-algorithms + branch = develop diff --git a/parm/atm/berror/hybvar_bump.yaml.j2 b/parm/atm/berror/hybvar_bump.yaml.j2 deleted file mode 100644 index e0eae4713..000000000 --- a/parm/atm/berror/hybvar_bump.yaml.j2 +++ /dev/null @@ -1,127 +0,0 @@ -covariance model: hybrid -components: -- covariance: - covariance model: SABER - 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] - bump: - io: - data directory: &staticb_dir '{{ DATA }}/berror' - drivers: - multivariate strategy: specific_univariate - read local nicas: true - nicas: - minimum level: - - variables: - - liq_wat - value: 76 - grids: - - model: - variables: - - stream_function - - velocity_potential - - air_temperature - - relative_humidity - - cloud_liquid_water - - ozone_mass_mixing_ratio - io: - files prefix: nicas/nicas_3D_gfs - - model: - variables: - - surface_pressure - io: - files prefix: nicas/nicas_2D_gfs - - saber block name: StdDev - input variables: *control_vars - output variables: *control_vars - active variables: *active_vars - file: - filetype: fms restart - datetime: 2021-12-22T00:00:00Z - set datetime on read: true - psinfile: true - datapath: '*staticb_dir' - prefix: stddev/20211222.000000 - filename_core: stddev.fv_core.res.nc - filename_trcr: stddev.fv_tracer.res.nc - filename_sfcd: stddev.sfc_data.nc - 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 - bump: - general: - universe length-scale: 2000.0e3 - io: - data directory: *staticb_dir - files prefix: vbal/vbal_gfs - overriding sampling file: vbal/vbal_2021122200_gfs_sampling - drivers: - read local sampling: true - read vertical balance: true - vertical balance: - vbal: - - balanced variable: var2 - unbalanced variable: var1 - - balanced variable: var3 - unbalanced variable: var1 - - 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] - active variables: [psi,chi,ua,va] - bump: - general: - universe length-scale: 2000.0e3 - io: - data directory: *staticb_dir - 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] - weight: - value: 0.1 -- covariance: - covariance model: ensemble - members from template: - template: - datetime: '{{ current_cycle | to_isotime }}' - filetype: fms restart - state variables: *3dvars - datapath: ens/mem%mem%/ - filename_core: '{{ current_cycle | to_fv3time }}.fv_core.res.nc' - filename_trcr: '{{ current_cycle | to_fv3time }}.fv_tracer.res.nc' - filename_sfcd: '{{ current_cycle | to_fv3time }}.sfc_data.nc' - filename_sfcw: '{{ current_cycle | to_fv3time }}.fv_srf_wnd.res.nc' - filename_cplr: '{{ current_cycle | to_fv3time }}.coupler.res' - pattern: '%mem%' - nmembers: {{ NMEM_ENS }} - 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 -# bump: -# datadir: *staticb_dir -# verbosity: main -# strategy: specific_univariate -# method: loc -# load_nicas_local: true -# grids: -# - prefix: nicas/nicas_3D_gfs -# variables: [stream_function,velocity_potential,air_temperature,relative_humidity,cloud_liquid_water,ozone_mass_mixing_ratio] - weight: - value: 0.9 diff --git a/parm/atm/berror/hybvar_gsibec.yaml.j2 b/parm/atm/berror/hybvar_gsibec.yaml.j2 deleted file mode 100644 index 27570aaaa..000000000 --- a/parm/atm/berror/hybvar_gsibec.yaml.j2 +++ /dev/null @@ -1,207 +0,0 @@ -covariance model: hybrid -components: -- covariance: - covariance model: SABER - saber central block: - saber block name: gsi covariance - read: - gsi akbk: &akbk '{{ DATA }}/fv3jedi/akbk.nc4' - gsi error covariance file: &gsiberr '{{ DATA }}/berror/gsi-coeffs-gfs-global.nc4' -# gsi error covariance file: &gsiberr '{{ DATA }}/berror/global_berror.f77' - gsi berror namelist file: &gsibnml '{{ DATA }}/berror/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] - weight: - value: 0.125 -- covariance: - covariance model: ensemble - members from template: - template: - datetime: '{{ current_cycle | to_isotime }}' - filetype: fms restart - state variables: *3dvars_anal - datapath: ens/mem%mem% - filename_core: '{{ current_cycle | to_fv3time }}.fv_core.res.nc' - filename_trcr: '{{ current_cycle | to_fv3time }}.fv_tracer.res.nc' - filename_sfcd: '{{ current_cycle | to_fv3time }}.sfc_data.nc' - filename_sfcw: '{{ current_cycle | to_fv3time }}.fv_srf_wnd.res.nc' - filename_cplr: '{{ current_cycle | to_fv3time }}.coupler.res' - pattern: '%mem%' - nmembers: {{ NMEM_ENS }} - 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, - specific_humidity,cloud_liquid_ice,cloud_liquid_water, - ozone_mass_mixing_ratio ] - read: - general: - universe length-scale: 2500.0e3 - drivers: - multivariate strategy: duplicated - compute nicas: true - model: - level for 2d variables: last - nicas: - resolution: 6 - min effective resolution: 0.2 # Note: this is very much not recommended (resolution too low), only - # used because covariance quality is not important for CI tests - explicit length-scales: true - horizontal length-scale: - - groups: - - common - profile: - - 1300000.0 - - 1300000.0 - - 1300000.0 - - 1300000.0 - - 1300000.0 - - 1300000.0 - - 1300000.0 - - 1300000.0 - - 1300000.0 - - 1300000.0 - - 1300000.0 - - 1250000.0 - - 1250000.0 - - 1200000.0 - - 1200000.0 - - 1150000.0 - - 1150000.0 - - 1100000.0 - - 1100000.0 - - 1000000.0 - - 1000000.0 - - 1000000.0 - - 1000000.0 - - 1000000.0 - - 1000000.0 - - 1000000.0 - - 1000000.0 - - 1000000.0 - - 1000000.0 - - 1000000.0 - - 1000000.0 - - 1000000.0 - - 1000000.0 - - 1000000.0 - - 1000000.0 - - 1000000.0 - - 1000000.0 - - 1000000.0 - - 1000000.0 - - 950000.0 - - 950000.0 - - 900000.0 - - 900000.0 - - 850000.0 - - 850000.0 - - 800000.0 - - 800000.0 - - 750000.0 - - 750000.0 - - 665000.0 - - 665000.0 - - 585000.0 - - 585000.0 - - 510000.0 - - 510000.0 - - 440000.0 - - 440000.0 - - 390000.0 - - 390000.0 - - 380000.0 - - 380000.0 - - 370000.0 - - 370000.0 - - 360000.0 - - 360000.0 - - 350000.0 - - 350000.0 - - 350000.0 - - 350000.0 - - 350000.0 - - 350000.0 - - 350000.0 - - 350000.0 - - 350000.0 - - 350000.0 - - 350000.0 - - 350000.0 - - 350000.0 - - 350000.0 - - 350000.0 - - 350000.0 - - 350000.0 - - 350000.0 - - 350000.0 - - 350000.0 - - 350000.0 - - 350000.0 - - 350000.0 - - 350000.0 - - 350000.0 - - 350000.0 - - 350000.0 - - 350000.0 - - 350000.0 - - 350000.0 - - 350000.0 - - 350000.0 - - 350000.0 - - 350000.0 - - 350000.0 - - 350000.0 - - 350000.0 - - 350000.0 - - 350000.0 - - 350000.0 - - 350000.0 - - 350000.0 - - 350000.0 - - 350000.0 - - 350000.0 - - 350000.0 - - 350000.0 - - 350000.0 - - 350000.0 - - 350000.0 - - 350000.0 - - 350000.0 - - 350000.0 - - 350000.0 - - 350000.0 - - 350000.0 - - 350000.0 - - 350000.0 - - 350000.0 - - 350000.0 - - 350000.0 - - 350000.0 - vertical length-scale: - - groups: - - common - value: 0.3 - linear variable change: - linear variable change name: Control2Analysis - input variables: *3dvars_anal_long - output variables: *3dvars_anal - weight: - value: 0.875 diff --git a/parm/atm/berror/staticb_bump.yaml.j2 b/parm/atm/berror/staticb_bump.yaml.j2 deleted file mode 100644 index 4c63e1c3f..000000000 --- a/parm/atm/berror/staticb_bump.yaml.j2 +++ /dev/null @@ -1,89 +0,0 @@ -covariance model: SABER -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] - bump: - io: - data directory: &staticb_dir '{{ DATA }}/berror' - drivers: - multivariate strategy: specific_univariate - read local nicas: true - nicas: - minimum level: - - variables: - - liq_wat - value: 76 - grids: - - model: - variables: - - stream_function - - velocity_potential - - air_temperature - - relative_humidity - - cloud_liquid_water - - ozone_mass_mixing_ratio - io: - files prefix: nicas/nicas_3D_gfs - - model: - variables: - - surface_pressure - io: - files prefix: nicas/nicas_2D_gfs -- saber block name: StdDev - input variables: *control_vars - output variables: *control_vars - active variables: *active_vars - file: - filetype: fms restart - datetime: 2021-12-22T00:00:00Z - set datetime on read: true - psinfile: true - datapath: *staticb_dir - prefix: stddev/20211222.000000 - filename_core: stddev.fv_core.res.nc - filename_trcr: stddev.fv_tracer.res.nc - filename_sfcd: stddev.sfc_data.nc - 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 - bump: - general: - universe length-scale: 2000.0e3 - io: - data directory: *staticb_dir - files prefix: vbal/vbal_gfs - overriding sampling file: vbal/vbal_2021122200_gfs_sampling - drivers: - read local sampling: true - read vertical balance: true - vertical balance: - vbal: - - balanced variable: var2 - unbalanced variable: var1 - - balanced variable: var3 - unbalanced variable: var1 - - 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] - active variables: [psi,chi,ua,va] - bump: - general: - universe length-scale: 2000.0e3 - io: - data directory: '*staticb_dir' - 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: [ua,va,t,ps,sphum,ice_wat,liq_wat,o3mr] diff --git a/parm/atm/berror/staticb_gsibec.yaml.j2 b/parm/atm/berror/staticb_gsibec.yaml.j2 deleted file mode 100644 index 8fd02c070..000000000 --- a/parm/atm/berror/staticb_gsibec.yaml.j2 +++ /dev/null @@ -1,26 +0,0 @@ -covariance model: SABER -full inverse: true -saber central block: - saber block name: gsi covariance - read: - gsi akbk: &akbk '{{ DATA }}/fv3jedi/akbk.nc4' - gsi error covariance file: &gsiberr '{{ DATA }}/berror/gsi-coeffs-gfs-global.nc4' -# gsi error covariance file: &gsiberr '{{ DATA }}/berror/global_berror.f77' - gsi berror namelist file: &gsibnml '{{ DATA }}/berror/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/parm/atm/berror/staticb_identity.yaml.j2 b/parm/atm/berror/staticb_identity.yaml.j2 deleted file mode 100644 index 084edf3fe..000000000 --- a/parm/atm/berror/staticb_identity.yaml.j2 +++ /dev/null @@ -1,2 +0,0 @@ -covariance model: FV3JEDI-ID -date: '{{ ATM_WINDOW_BEGIN }}' diff --git a/parm/atm/hofx/hofx4d.yaml.j2 b/parm/atm/hofx/hofx4d.yaml.j2 deleted file mode 100644 index 9c24720da..000000000 --- a/parm/atm/hofx/hofx4d.yaml.j2 +++ /dev/null @@ -1,48 +0,0 @@ -time window: - begin: '{{ ATM_WINDOW_BEGIN | to_isotime }}' - length: '{{ ATM_WINDOW_LENGTH }}' -forecast length: '{{ ATM_WINDOW_LENGTH }}' -geometry: - fms initialization: - namelist filename: '{{ DATA }}/fv3jedi/fmsmpp.nml' - field table filename: '{{ DATA }}/fv3jedi/field_table' - akbk: '{{ DATA }}/fv3jedi/akbk.nc4' - layout: - - {{ layout_x }} - - {{ layout_y }} - npx: {{ npx_ges }} - npy: {{ npy_ges }} - npz: {{ npz_ges }} - field metadata override: '{{ DATA }}/fv3jedi/fv3jedi_fieldmetadata_restart.yaml' -initial condition: - datapath: '{{ DATA }}/bkg' - filetype: fms restart - datetime: '{{ ATM_WINDOW_BEGIN | to_isotime }}' - filename_core: '{{ ATM_WINDOW_BEGIN | to_fv3time }}.fv_core.res.nc' - filename_trcr: '{{ ATM_WINDOW_BEGIN | to_fv3time }}.fv_tracer.res.nc' - filename_sfcd: '{{ ATM_WINDOW_BEGIN | to_fv3time }}.sfc_data.nc' - filename_sfcw: '{{ ATM_WINDOW_BEGIN | to_fv3time }}.fv_srf_wnd.res.nc' - filename_cplr: '{{ ATM_WINDOW_BEGIN | to_fv3time }}.coupler.res' - state 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] -model: - name: PSEUDO - datapath: '{{ DATA }}/bkg' - filetype: fms restart - datetime: '{{ ATM_WINDOW_BEGIN | to_isotime }}' - 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' - tstep: {{ BKG_TSTEP }} - 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] -observations: -{% filter indent(width=2) %} -{% set atm_obs_list = 'OBS_LIST' | getenv('atm/obs/lists/gdas_prototype.yaml.j2') %} -{% include atm_obs_list %} -{% endfilter %} diff --git a/parm/atm/hofx/hofx_nomodel.yaml.j2 b/parm/atm/hofx/hofx_nomodel.yaml.j2 deleted file mode 100644 index f49df0e53..000000000 --- a/parm/atm/hofx/hofx_nomodel.yaml.j2 +++ /dev/null @@ -1,32 +0,0 @@ -time window: - begin: '{{ ATM_WINDOW_BEGIN | to_isotime }}' - length: '{{ ATM_WINDOW_LENGTH }}' -geometry: - fms initialization: - namelist filename: '{{ DATA }}/fv3jedi/fmsmpp.nml' - field table filename: '{{ DATA }}/fv3jedi/field_table' - akbk: '{{ DATA }}/fv3jedi/akbk.nc4' - layout: - - {{ layout_x }} - - {{ layout_y }} - npx: {{ npx_ges }} - npy: {{ npy_ges }} - npz: {{ npz_ges }} - field metadata override: '{{ DATA }}/fv3jedi/fv3jedi_fieldmetadata_restart.yaml' -state: - datapath: '{{ DATA }}/bkg' - filetype: fms restart - datetime: '{{ current_cycle | to_isotime }}' - filename_core: '{{ current_cycle | to_fv3time }}.fv_core.res.nc' - filename_trcr: '{{ current_cycle | to_fv3time }}.fv_tracer.res.nc' - filename_sfcd: '{{ current_cycle | to_fv3time }}.sfc_data.nc' - filename_sfcw: '{{ current_cycle | to_fv3time }}.fv_srf_wnd.res.nc' - filename_cplr: '{{ current_cycle | to_fv3time }}.coupler.res' - state 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] -observations: -{% filter indent(width=2) %} -{% set atm_obs_list = 'OBS_LIST' | getenv('atm/obs/lists/gdas_prototype.yaml.j2') %} -{% include atm_obs_list %} -{% endfilter %} diff --git a/parm/atm/hofx/hofx_ufotest.yaml.j2 b/parm/atm/hofx/hofx_ufotest.yaml.j2 deleted file mode 100644 index 85273ace0..000000000 --- a/parm/atm/hofx/hofx_ufotest.yaml.j2 +++ /dev/null @@ -1,8 +0,0 @@ -time window: - begin: '{{ ATM_WINDOW_BEGIN }}' - end: '{{ ATM_WINDOW_END }}' -observations: -{% filter indent(width=2) %} -{% set atm_obs_list = 'OBS_LIST' | getenv('atm/obs/lists/gdas_prototype.yaml.j2') %} -{% include atm_obs_list %} -{% endfilter %} diff --git a/parm/atm/jcb-base.yaml.j2 b/parm/atm/jcb-base.yaml.j2 new file mode 100644 index 000000000..4845b0fbc --- /dev/null +++ b/parm/atm/jcb-base.yaml.j2 @@ -0,0 +1,128 @@ +# Search path for model and obs for JCB +# ------------------------------------- +algorithm_path: "{{PARMgfs}}/gdas/jcb-algorithms" +app_path_algorithm: "{{PARMgfs}}/gdas/jcb-gdas/algorithm/atmosphere" +app_path_model: "{{PARMgfs}}/gdas/jcb-gdas/model/atmosphere" +app_path_observations: "{{PARMgfs}}/gdas/jcb-gdas/observations/atmosphere" +app_path_observation_chronicle: "{{PARMgfs}}/gdas/jcb-gdas/observation_chronicle/atmosphere" + + +# Places where we deviate from the generic file name of a yaml +# ------------------------------------------------------------ +#final_increment_file: final_increment_gaussian +final_increment_file: final_increment_cubed_sphere +output_ensemble_increments_file: output_ensemble_increments_gaussian +model_file: model_pseudo +initial_condition_file: background # Initial conditions for 4D apps is background + + +# Assimilation window +# ------------------- +window_begin: "{{ ATM_WINDOW_BEGIN | to_isotime }}" +window_length: "{{ ATM_WINDOW_LENGTH }}" +bound_to_include: begin + +# Default background time is for 3D applications +atm_background_time_iso: "{{ current_cycle | to_isotime }}" + + +# Analysis standard things +# ------------------------ +analysis_variables: [ua,va,t,ps,sphum,ice_wat,liq_wat,o3mr] +minimizer: DRPCG +final_diagnostics_departures: anlmob + +cost_type: 3D-Var +number_of_outer_loops: 2 + +# Model things +# ------------ +# Geometry +layout_x: {{ layout_x | default(1, true) }} +layout_y: {{ layout_y | default(1, true) }} +npx_ges: {{ npx_ges | default(49, true) }} +npy_ges: {{ npy_ges | default(49, true) }} +npz_ges: {{ npz_ges | default(127, true) }} +npx_anl: {{ npx_anl | default(49, true) }} +npy_anl: {{ npy_anl | default(49, true) }} +npz_anl: {{ npz_anl | default(127, true) }} + +fv3jedi_files_path: ./fv3jedi # Ideally this would be {{DATA}}/fv3jedi but FMS + +# Background +background_path: ./bkg +background_ensemble_path: ./ens/mem%mem% + +# Background error +bump_data_directory: "{{ DATA }}/berror" +gsibec_path: "{{ DATA }}/berror" +number_ensemble_members: {{ NMEM_ENS | default(1, true) }} +layout_gsib_x: {{ layout_gsib_x | default(1, true) }} +layout_gsib_y: {{ layout_gsib_y | default(1, true) }} + +background_error_file: "{{BERROR_YAML}}" + +# Forecasting +forecast_length: "{{ ATM_WINDOW_LENGTH }}" +forecast_timestep: "{{ BKG_TSTEP }}" + +# Write final increment on Guassian grid in variational +final_increment_prefix: "./anl/atminc." + + +# Observation things +# ------------------ +observations: all_observations + +crtm_coefficient_path: "{{ DATA }}/crtm/" + +# Naming conventions for observational files +atm_obsdatain_path: "{{atm_obsdatain_path}}" +atm_obsdatain_prefix: "{{OPREFIX}}" +atm_obsdatain_suffix: ".tm00.nc" + +atm_obsdataout_path: "{{atm_obsdataout_path}}" +atm_obsdataout_prefix: diag_ +atm_obsdataout_suffix: "_{{ current_cycle | to_YMDH }}.nc" + +# Naming conventions for bias correction files +atm_obsbiasin_path: "{{DATA}}/obs/" +atm_obsbiasin_prefix: "{{GPREFIX}}" +atm_obsbiasin_suffix: ".satbias.nc" +atm_obstlapsein_prefix: "{{GPREFIX}}" +atm_obstlapsein_suffix: ".tlapse.txt" +atm_obsbiascovin_prefix: "{{GPREFIX}}" +atm_obsbiascovin_suffix: ".satbias_cov.nc" + +atm_obsbiasout_path: "{{DATA}}/bc/" +atm_obsbiasout_prefix: "{{APREFIX}}" +atm_obsbiasout_suffix: ".satbias.nc" +atm_obsbiascovout_prefix: "{{APREFIX}}" +atm_obsbiascovout_suffix: ".satbias_cov.nc" + + +# Local Ensemble DA (LETKF) +# ------------------------- +local_ensemble_da_solver: GETKF + +increment_variables: [ua,va,DZ,delp,t,ps,sphum,ice_wat,liq_wat,o3mr] + +# Veritcal localization for GETKF +vl_fraction_of_retained_variance: 0.750 +vl_lengthscale: 2.1 +vl_lengthscale_units: logp +inflation_rtps: 0.85 +inflation_rtpp: 0.0 +inflation_mult: 1.0 + +# Driver +driver_update_obs_config_with_geometry_info: true +driver_save_posterior_mean: false +driver_save_posterior_ensemble: false +driver_save_prior_mean: false +driver_save_posterior_mean_increment: false +driver_save_posterior_ensemble_increments: true + +# Diagnostics +ensemble_increment_prefix: "./anl/mem%{member}%/atminc." +posterior_output_gaussian: "./mem%{member}%/atmanl." diff --git a/parm/atm/jcb-prototype_3dvar.yaml.j2 b/parm/atm/jcb-prototype_3dvar.yaml.j2 new file mode 100644 index 000000000..c8fb9308f --- /dev/null +++ b/parm/atm/jcb-prototype_3dvar.yaml.j2 @@ -0,0 +1,14 @@ +# Algorithm +# --------- +algorithm: 3dvar + +# Observation things +# ------------------ +observations: + - satwnd.abi_goes-16 + - ascatw.ascat_metop-b + #- conv_ps # Turned off until naming convention of obs files is resolved. + #- gnssro # Turned off until naming convention of obs files is resolved. + - ompsnp_npp + - ompstc_npp + - omi_aura diff --git a/parm/atm/jcb-prototype_4d.yaml.j2 b/parm/atm/jcb-prototype_4d.yaml.j2 new file mode 100644 index 000000000..ba24460a7 --- /dev/null +++ b/parm/atm/jcb-prototype_4d.yaml.j2 @@ -0,0 +1,19 @@ +# Algorithm +# --------- +algorithm: hofx4d + +# Observation things +# ------------------ +observations: + - amsua_n19 + - sondes + - atms_n20 + - aircraft + - satwind + - omi_aura + - ompsnp_npp + - ompstc8_npp + - cris-fsr_n20 + - cris-fsr_npp + - sfc + - sfcship diff --git a/parm/atm/jcb-prototype_lgetkf.yaml.j2 b/parm/atm/jcb-prototype_lgetkf.yaml.j2 new file mode 100644 index 000000000..54600b7d1 --- /dev/null +++ b/parm/atm/jcb-prototype_lgetkf.yaml.j2 @@ -0,0 +1,20 @@ +# Use observations for lgetkf +# --------------------------- +app_path_observations: {{PARMgfs}}/gdas/jcb-gdas/observations/atmosphere-lgetkf +app_path_observation_chronicle: {{PARMgfs}}/gdas/jcb-gdas/observation_chronicle/atmosphere-lgetkf + +# Algorithm +# --------- +algorithm: local_ensemble_da + +# Model things +# ------------ +background_ensemble_path: ./bkg/mem%mem% + +# Observation things +# ------------------ +observations: + - satwnd.abi_goes-16 + - ascatw.ascat_metop-b + #- conv_ps # Turned off until naming convention of obs files is resolved. + #- gnssro # Turned off until naming convention of obs files is resolved. diff --git a/parm/atm/lgetkf/lgetkf.yaml.j2 b/parm/atm/lgetkf/lgetkf.yaml.j2 deleted file mode 100644 index 4f156d213..000000000 --- a/parm/atm/lgetkf/lgetkf.yaml.j2 +++ /dev/null @@ -1,72 +0,0 @@ -geometry: - fms initialization: - namelist filename: ./fv3jedi/fmsmpp.nml - field table filename: ./fv3jedi/field_table - akbk: ./fv3jedi/akbk.nc4 - layout: - - {{ layout_x }} - - {{ layout_y }} - npx: {{ npx_ges }} - npy: {{ npy_ges }} - npz: {{ npz_ges }} - field metadata override: ./fv3jedi/fv3jedi_fieldmetadata_restart.yaml -time window: - begin: '{{ ATM_WINDOW_BEGIN | to_isotime }}' - length: '{{ ATM_WINDOW_LENGTH }}' -increment variables: [ua,va,DZ,delp,t,ps,sphum,ice_wat,liq_wat,o3mr] - -background: - datetime: '{{ current_cycle | to_isotime }}' - members from template: - template: - datetime: '{{ current_cycle | to_isotime }}' - 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: bkg/mem%mem% - filename_core: '{{ current_cycle | to_fv3time }}.fv_core.res.nc' - filename_trcr: '{{ current_cycle | to_fv3time }}.fv_tracer.res.nc' - filename_sfcd: '{{ current_cycle | to_fv3time }}.sfc_data.nc' - filename_sfcw: '{{ current_cycle | to_fv3time }}.fv_srf_wnd.res.nc' - filename_cplr: '{{ current_cycle | to_fv3time }}.coupler.res' - pattern: '%mem%' - nmembers: {{ NMEM_ENS }} - zero padding: 3 - -observations: -{% filter indent(width=2) %} -{% set atm_obs_list = 'OBS_LIST' | getenv('atm/obs/lists/lgetkf_prototype.yaml.j2') %} -{% include atm_obs_list %} -{% endfilter %} - -driver: - update obs config with geometry info: true - save posterior mean: false - save posterior ensemble: false - save prior mean: false - save posterior mean increment: false - save posterior ensemble increments: true - do posterior observer: false - -local ensemble DA: - solver: GETKF - vertical localization: -# fraction of retained variance: 0.975 # use for scientific tests - fraction of retained variance: 0.750 # use for ctest - lengthscale: 2.1 - lengthscale units: logp - inflation: - rtps: 0.85 - rtpp: 0.0 - mult: 1.0 - -#output: -# filetype: auxgrid -# gridtype: gaussian -# filename: ./mem%{member}%/atmanl. - -output ensemble increments: - filetype: auxgrid - gridtype: gaussian - filename: ./anl/mem%{member}%/atminc. diff --git a/parm/atm/obs/config/aircraft.yaml.j2 b/parm/atm/obs/config/aircraft.yaml.j2 deleted file mode 100644 index 353a0ab5f..000000000 --- a/parm/atm/obs/config/aircraft.yaml.j2 +++ /dev/null @@ -1,330 +0,0 @@ -- obs space: - name: Aircraft - obsdatain: - engine: - type: H5File - obsfile: '{{ DATA }}/obs/{{ OPREFIX }}aircraft.{{ current_cycle | to_YMDH }}.nc' - obsgrouping: - group variables: ["stationIdentification"] - sort variable: "pressure" - sort order: "descending" - obsdataout: - engine: - type: H5File - obsfile: '{{ DATA }}/diags/diag_aircraft_{{ current_cycle | to_YMDH }}.nc' - io pool: - max pool size: 1 - simulated variables: [windEastward, windNorthward, airTemperature, specificHumidity] - # - obs operator: - name: VertInterp - # - obs filters: - # Observation Range Sanity Check - - filter: Bounds Check - filter variables: - - name: airTemperature - minvalue: 195 - maxvalue: 327 - action: - name: reject - # - - filter: Bounds Check - filter variables: - - name: specificHumidity - minvalue: 1.0E-7 - maxvalue: 0.034999999 - action: - name: reject - # - - filter: Bounds Check - filter variables: - - name: windEastward - - name: windNorthward - minvalue: -130 - maxvalue: 130 - action: - name: reject - # - - filter: Bounds Check - filter variables: - - name: windEastward - - name: windNorthward - test variables: - - name: ObsFunction/Velocity - maxvalue: 130.0 - action: - name: reject - # Reject when pressure is less than 126 mb. - - filter: Bounds Check - filter variables: - - name: windEastward - - name: windNorthward - test variables: - - name: MetaData/pressure - minvalue: 12600 - action: - name: reject - # - # Reject all obs with PreQC mark already set above 3 - # - filter: PreQC - # maxvalue: 3 - # action: - # name: reject - # - #-------------------------------------------------------------------------------------------------------------------- - # Wind - #-------------------------------------------------------------------------------------------------------------------- - # - # Begin by assigning all ObsError to a constant value. These will get overwritten (as needed) for specific types. - - filter: Perform Action - filter variables: - - name: windEastward - - name: windNorthward - action: - name: assign error - error parameter: 2.0 # 2.0 m/s - # Assign intial ObsError specific to AIREP/ACARS - - filter: Perform Action - filter variables: - - name: windEastward - - name: windNorthward - action: - name: assign error - error parameter: 3.6 # 3.6 m/s - where: - - variable: - name: ObsType/windEastward - is_in: 230 - # Assign intial ObsError specific to AMDAR - - filter: Perform Action - filter variables: - - name: windEastward - - name: windNorthward - action: - name: assign error - error parameter: 3.0 # 3.0 m/s - where: - - variable: - name: ObsType/windEastward - is_in: 231 - # Assign intial ObsError specific to MDCRS - - filter: Perform Action - filter variables: - - name: windEastward - - name: windNorthward - action: - name: assign error - error parameter: 2.5 # 2.5 m/s - where: - - variable: - name: ObsType/windEastward - is_in: 233 - # - - filter: Perform Action - filter variables: - - name: windEastward - - name: windNorthward - action: - name: assign error - error function: - name: ObsFunction/ObsErrorModelStepwiseLinear - options: - xvar: - name: MetaData/pressure - xvals: [100000, 95000, 80000, 65000, 60000, 55000, 50000, 45000, 40000, 35000, 30000, 25000, 20000, 15000, 10000] #Pressure (Pa) - errors: [1.4, 1.5, 1.6, 1.8, 1.9, 2.0, 2.1, 2.3, 2.6, 2.8, 3.0, 3.2, 2.7, 2.4, 2.1] - # Assign the initial ObsError, based on height/pressure for RECON aircraft - - filter: Perform Action - filter variables: - - name: windEastward - - name: windNorthward - action: - name: assign error - error function: - name: ObsFunction/ObsErrorModelStepwiseLinear - options: - xvar: - name: MetaData/pressure - xvals: [70000, 65000, 60000, 55000, 50000, 45000, 40000, 35000, 30000, 25000, 20000, 15000, 10000, 7500, 5000] - errors: [2.4, 2.5, 2.6, 2.7, 2.8, 2.95, 3.1, 3.25, 3.4, 3.175, 2.95, 2.725, 2.5, 2.6, 2.7] - where: - - variable: - name: ObsType/windEastward - is_in: 232 - # Reject when difference of wind direction is more than 50 degrees. - - filter: Bounds Check - filter variables: - - name: windEastward - - name: windNorthward - test variables: - - name: ObsFunction/WindDirAngleDiff - options: - minimum_uv: 3.5 - maxvalue: 50.0 - action: - name: reject - defer to post: true - # When multiple obs exist within a single vertical model level, inflate ObsError - # - filter: Perform Action - # filter variables: - # - name: windEastward - # action: - # name: inflate error - # inflation variable: - # name: ObsFunction/ObsErrorFactorConventional - # options: - # test QCflag: PreQC - # inflate variables: [windEastward] - # defer to post: true - # - # - filter: Perform Action - # filter variables: - # - name: windNorthward - # action: - # name: inflate error - # inflation variable: - # name: ObsFunction/ObsErrorFactorConventional - # options: - # test QCflag: PreQC - # inflate variables: [windNorthward] - # defer to post: true - # - # Gross error check with (O - B) / ObsError greater than threshold. - - filter: Background Check - filter variables: - - name: windEastward - - name: windNorthward - threshold: 6.0 - absolute threshold: 19.0 - action: - name: reject - # - #-------------------------------------------------------------------------------------------------------------------- - # Temperature - #-------------------------------------------------------------------------------------------------------------------- - # - # Begin by assigning all ObsError to a constant value. These will get overwritten for specific types. - - filter: Perform Action - filter variables: - - name: airTemperature - action: - name: assign error - error parameter: 2.0 # 2.0 K - # Assign the initial observation error, based on pressure (for AIREP/ACARS; itype=130) - - filter: Perform Action - filter variables: - - name: airTemperature - action: - name: assign error - error function: - name: ObsFunction/ObsErrorModelStepwiseLinear - options: - xvar: - name: MetaData/pressure - xvals: [100000, 95000, 90000, 85000, 80000] - errors: [2.5, 2.3, 2.1, 1.9, 1.7] - where: - - variable: - name: ObsType/airTemperature - is_in: 130 - # Assign the initial observation error, based on pressure (for AMDAR and MDCRS; itype=131,133) - - filter: Perform Action - filter variables: - - name: airTemperature - action: - name: assign error - error function: - name: ObsFunction/ObsErrorModelStepwiseLinear - options: - xvar: - name: MetaData/pressure - xvals: [100000, 95000, 90000, 85000, 80000] - errors: [1.4706, 1.3529, 1.2353, 1.1176, 1.0] - where: - - variable: - name: ObsType/airTemperature - is_in: 131,133 - # Assign the initial observation error, based on pressure (for RECON aircraft; itype=132) - - filter: Perform Action - filter variables: - - name: airTemperature - action: - name: assign error - error function: - name: ObsFunction/ObsErrorModelStepwiseLinear - options: - xvar: - name: MetaData/pressure - xvals: [100000, 95000, 90000, 85000, 35000, 30000, 25000, 20000, 15000, 10000, 7500, 5000, 4000, 3200, 2000, 1000] - errors: [1.2, 1.1, 0.9, 0.8, 0.8, 0.9, 1.2, 1.2, 1.0, 0.8, 0.8, 0.9, 0.95, 1.0, 1.25, 1.5] - where: - - variable: - name: ObsType/airTemperature - is_in: 132 - # When multiple obs exist within a single vertical model level, inflate ObsError - # - filter: Perform Action - # filter variables: - # - name: airTemperature - # action: - # name: inflate error - # inflation variable: - # name: ObsFunction/ObsErrorFactorConventional - # options: - # test QCflag: PreQC - # inflate variables: [airTemperature] - # defer to post: true - - # Gross error check with (O - B) / ObsError greater than threshold. - - filter: Background Check - filter variables: - - name: airTemperature - threshold: 7.0 - absolute threshold: 8.0 - action: - name: reject - # - #-------------------------------------------------------------------------------------------------------------------- - # Moisture - #-------------------------------------------------------------------------------------------------------------------- - # - # Assign the initial observation error, based on height/pressure ONLY MDCRS - - filter: Perform Action - filter variables: - - name: specificHumidity - action: - name: assign error - error function: - name: ObsFunction/ObsErrorModelStepwiseLinear - options: - xvar: - name: MetaData/pressure - xvals: [110000, 105000, 100000, 95000, 90000, 85000, 80000, 75000, 70000, 65000, 60000, 55000, - 50000, 45000, 40000, 35000, 30000, 25000, 20000, 15000, 10000, 7500, 5000, 4000, 3000] - errors: [.19455, .19062, .18488, .17877, .17342, .16976, .16777, .16696, .16605, .16522, .16637, .17086, - .17791, .18492, .18996, .19294, .19447, .19597, .19748, .19866, .19941, .19979, .19994, .19999, .2] - scale_factor_var: ObsValue/specificHumidity - where: - - variable: - name: ObsType/specificHumidity - is_in: 133 - # When multiple obs exist within a single vertical model level, inflate ObsError - # - filter: Perform Action - # filter variables: - # - name: specificHumidity - # action: - # name: inflate error - # inflation variable: - # name: ObsFunction/ObsErrorFactorConventional - # options: - # test QCflag: PreQC - # inflate variables: [specificHumidity] - # defer to post: true - - # Gross error check with (O - B) / ObsError greater than threshold. - - filter: Background Check - filter variables: - - name: specificHumidity - threshold: 8.0 - action: - name: reject diff --git a/parm/atm/obs/config/amsua_n19.yaml.j2 b/parm/atm/obs/config/amsua_n19.yaml.j2 deleted file mode 100644 index 06ec22687..000000000 --- a/parm/atm/obs/config/amsua_n19.yaml.j2 +++ /dev/null @@ -1,367 +0,0 @@ -- obs space: - name: amsua_n19 - obsdatain: - engine: - type: H5File - obsfile: '{{ DATA }}/obs/{{ OPREFIX }}amsua_n19.{{ current_cycle | to_YMDH }}.nc' - obsdataout: - engine: - type: H5File - obsfile: '{{ DATA }}/diags/diag_amsua_n19_{{ current_cycle | to_YMDH }}.nc' - io pool: - max pool size: 1 - simulated variables: [brightnessTemperature] - channels: &amsua_n19_channels 1-15 - obs operator: - name: CRTM - Absorbers: [H2O,O3] - Clouds: [Water, Ice] - Cloud_Fraction: 1.0 - obs options: - Sensor_ID: amsua_n19 - EndianType: little_endian - CoefficientPath: '{{ DATA }}/crtm/' - obs bias: - input file: '{{ DATA }}/obs/{{ GPREFIX }}amsua_n19.satbias.nc' - output file: '{{ DATA }}/bc/{{ APREFIX }}amsua_n19.satbias.nc' - variational bc: - predictors: - - name: constant - - name: lapse_rate - order: 2 - tlapse: &amsua_n19_tlapse '{{ DATA }}/obs/{{ GPREFIX }}amsua_n19.tlapse.txt' - - name: lapse_rate - tlapse: *amsua_n19_tlapse - - name: emissivity - - name: scan_angle - order: 4 - - name: scan_angle - order: 3 - - name: scan_angle - order: 2 - - name: scan_angle - covariance: - minimal required obs number: 20 - variance range: [1.0e-6, 10.0] - step size: 1.0e-4 - largest analysis variance: 10000.0 - prior: - input file: '{{ DATA }}/obs/{{ GPREFIX }}amsua_n19.satbias_cov.nc' - inflation: - ratio: 1.1 - ratio for small dataset: 2.0 - output file: '{{ DATA }}/bc/{{ APREFIX }}amsua_n19.satbias_cov.nc' - obs filters: - - filter: BlackList - filter variables: - - name: brightnessTemperature - channels: *amsua_n19_channels - action: - name: assign error - error function: - name: ObsFunction/ObsErrorModelRamp - channels: *amsua_n19_channels - options: - channels: *amsua_n19_channels - xvar: - name: ObsFunction/CLWRetSymmetricMW - options: - clwret_ch238: 1 - clwret_ch314: 2 - clwret_types: [ObsValue, HofX] - x0: [ 0.050, 0.030, 0.030, 0.020, 0.000, - 0.100, 0.000, 0.000, 0.000, 0.000, - 0.000, 0.000, 0.000, 0.000, 0.030] - x1: [ 0.600, 0.450, 0.400, 0.450, 1.000, - 1.500, 0.000, 0.000, 0.000, 0.000, - 0.000, 0.000, 0.000, 0.000, 0.200] - err0: [ 2.500, 2.200, 2.000, 0.550, 0.300, - 0.230, 0.230, 0.250, 0.250, 0.350, - 0.400, 0.550, 0.800, 3.000, 3.500] - err1: [20.000, 18.000, 12.000, 3.000, 0.500, - 0.300, 0.230, 0.250, 0.250, 0.350, - 0.400, 0.550, 0.800, 3.000, 18.000] - # CLW Retrieval Check - - filter: Bounds Check - filter variables: - - name: brightnessTemperature - channels: 1-6, 15 - test variables: - - name: ObsFunction/CLWRetMW - options: - clwret_ch238: 1 - clwret_ch314: 2 - clwret_types: [ObsValue] - maxvalue: 999.0 - action: - name: reject - # CLW Retrieval Check - - filter: Bounds Check - filter variables: - - name: brightnessTemperature - channels: 1-6, 15 - test variables: - - name: ObsFunction/CLWRetMW - options: - clwret_ch238: 1 - clwret_ch314: 2 - clwret_types: [HofX] - maxvalue: 999.0 - action: - name: reject - # Hydrometeor Check (cloud/precipitation affected chanels) - - filter: Bounds Check - filter variables: - - name: brightnessTemperature - channels: *amsua_n19_channels - test variables: - - name: ObsFunction/HydrometeorCheckAMSUA - channels: *amsua_n19_channels - options: - channels: *amsua_n19_channels - obserr_clearsky: [ 2.500, 2.200, 2.000, 0.550, 0.300, - 0.230, 0.230, 0.250, 0.250, 0.350, - 0.400, 0.550, 0.800, 3.000, 3.500] - clwret_function: - name: ObsFunction/CLWRetMW - options: - clwret_ch238: 1 - clwret_ch314: 2 - clwret_types: [ObsValue] - obserr_function: - name: ObsFunction/ObsErrorModelRamp - channels: *amsua_n19_channels - options: - channels: *amsua_n19_channels - xvar: - name: ObsFunction/CLWRetSymmetricMW - options: - clwret_ch238: 1 - clwret_ch314: 2 - clwret_types: [ObsValue, HofX] - x0: [ 0.050, 0.030, 0.030, 0.020, 0.000, - 0.100, 0.000, 0.000, 0.000, 0.000, - 0.000, 0.000, 0.000, 0.000, 0.030] - x1: [ 0.600, 0.450, 0.400, 0.450, 1.000, - 1.500, 0.000, 0.000, 0.000, 0.000, - 0.000, 0.000, 0.000, 0.000, 0.200] - err0: [ 2.500, 2.200, 2.000, 0.550, 0.300, - 0.230, 0.230, 0.250, 0.250, 0.350, - 0.400, 0.550, 0.800, 3.000, 3.500] - err1: [20.000, 18.000, 12.000, 3.000, 0.500, - 0.300, 0.230, 0.250, 0.250, 0.350, - 0.400, 0.550, 0.800, 3.000, 18.000] - maxvalue: 0.0 - action: - name: reject - # Topography check - - filter: BlackList - filter variables: - - name: brightnessTemperature - channels: *amsua_n19_channels - action: - name: inflate error - inflation variable: - name: ObsFunction/ObsErrorFactorTopoRad - channels: *amsua_n19_channels - options: - sensor: amsua_n19 - channels: *amsua_n19_channels - # Transmittnace Top Check - - filter: BlackList - filter variables: - - name: brightnessTemperature - channels: *amsua_n19_channels - action: - name: inflate error - inflation variable: - name: ObsFunction/ObsErrorFactorTransmitTopRad - channels: *amsua_n19_channels - options: - sensor: amsua_n19 - channels: *amsua_n19_channels - # Surface Jacobian check - - filter: BlackList - filter variables: - - name: brightnessTemperature - channels: *amsua_n19_channels - action: - name: inflate error - inflation variable: - name: ObsFunction/ObsErrorFactorSurfJacobianRad - channels: *amsua_n19_channels - options: - sensor: amsua_n19 - channels: *amsua_n19_channels - obserr_demisf: [0.010, 0.020, 0.015, 0.020, 0.200] - obserr_dtempf: [0.500, 2.000, 1.000, 2.000, 4.500] - # Situation dependent Check - - filter: BlackList - filter variables: - - name: brightnessTemperature - channels: *amsua_n19_channels - action: - name: inflate error - inflation variable: - name: ObsFunction/ObsErrorFactorSituDependMW - channels: *amsua_n19_channels - options: - sensor: amsua_n19 - channels: *amsua_n19_channels - clwobs_function: - name: ObsFunction/CLWRetMW - options: - clwret_ch238: 1 - clwret_ch314: 2 - clwret_types: [ObsValue] - clwbkg_function: - name: ObsFunction/CLWRetMW - options: - clwret_ch238: 1 - clwret_ch314: 2 - clwret_types: [HofX] - bias_application: HofX - scatobs_function: - name: ObsFunction/SCATRetMW - options: - scatret_ch238: 1 - scatret_ch314: 2 - scatret_ch890: 15 - scatret_types: [ObsValue] - bias_application: HofX - clwmatchidx_function: - name: ObsFunction/CLWMatchIndexMW - channels: *amsua_n19_channels - options: - channels: *amsua_n19_channels - clwobs_function: - name: ObsFunction/CLWRetMW - options: - clwret_ch238: 1 - clwret_ch314: 2 - clwret_types: [ObsValue] - clwbkg_function: - name: ObsFunction/CLWRetMW - options: - clwret_ch238: 1 - clwret_ch314: 2 - clwret_types: [HofX] - bias_application: HofX - clwret_clearsky: [0.050, 0.030, 0.030, 0.020, 0.000, - 0.100, 0.000, 0.000, 0.000, 0.000, - 0.000, 0.000, 0.000, 0.000, 0.030] - obserr_function: - name: ObsFunction/ObsErrorModelRamp - channels: *amsua_n19_channels - options: - channels: *amsua_n19_channels - xvar: - name: ObsFunction/CLWRetSymmetricMW - options: - clwret_ch238: 1 - clwret_ch314: 2 - clwret_types: [ObsValue, HofX] - x0: [ 0.050, 0.030, 0.030, 0.020, 0.000, - 0.100, 0.000, 0.000, 0.000, 0.000, - 0.000, 0.000, 0.000, 0.000, 0.030] - x1: [ 0.600, 0.450, 0.400, 0.450, 1.000, - 1.500, 0.000, 0.000, 0.000, 0.000, - 0.000, 0.000, 0.000, 0.000, 0.200] - err0: [ 2.500, 2.200, 2.000, 0.550, 0.300, - 0.230, 0.230, 0.250, 0.250, 0.350, - 0.400, 0.550, 0.800, 3.000, 3.500] - err1: [20.000, 18.000, 12.000, 3.000, 0.500, - 0.300, 0.230, 0.250, 0.250, 0.350, - 0.400, 0.550, 0.800, 3.000, 18.000] - obserr_clearsky: [2.500, 2.200, 2.000, 0.550, 0.300, - 0.230, 0.230, 0.250, 0.250, 0.350, - 0.400, 0.550, 0.800, 3.000, 3.500] - # Gross check - - filter: Background Check - filter variables: - - name: brightnessTemperature - channels: *amsua_n19_channels - function absolute threshold: - - name: ObsFunction/ObsErrorBoundMW - channels: *amsua_n19_channels - options: - sensor: amsua_n19 - channels: *amsua_n19_channels - obserr_bound_latitude: - name: ObsFunction/ObsErrorFactorLatRad - options: - latitude_parameters: [25.0, 0.25, 0.04, 3.0] - obserr_bound_transmittop: - name: ObsFunction/ObsErrorFactorTransmitTopRad - channels: *amsua_n19_channels - options: - channels: *amsua_n19_channels - obserr_bound_topo: - name: ObsFunction/ObsErrorFactorTopoRad - channels: *amsua_n19_channels - options: - channels: *amsua_n19_channels - sensor: amsua_n19 - obserr_function: - name: ObsFunction/ObsErrorModelRamp - channels: *amsua_n19_channels - options: - channels: *amsua_n19_channels - xvar: - name: ObsFunction/CLWRetSymmetricMW - options: - clwret_ch238: 1 - clwret_ch314: 2 - clwret_types: [ObsValue, HofX] - bias_application: HofX - x0: [ 0.050, 0.030, 0.030, 0.020, 0.000, - 0.100, 0.000, 0.000, 0.000, 0.000, - 0.000, 0.000, 0.000, 0.000, 0.030] - x1: [ 0.600, 0.450, 0.400, 0.450, 1.000, - 1.500, 0.000, 0.000, 0.000, 0.000, - 0.000, 0.000, 0.000, 0.000, 0.200] - err0: [ 2.500, 2.200, 2.000, 0.550, 0.300, - 0.230, 0.230, 0.250, 0.250, 0.350, - 0.400, 0.550, 0.800, 3.000, 3.500] - err1: [20.000, 18.000, 12.000, 3.000, 0.500, - 0.300, 0.230, 0.250, 0.250, 0.350, - 0.400, 0.550, 0.800, 3.000, 18.000] - obserr_bound_max: [4.5, 4.5, 4.5, 2.5, 2.0, - 2.0, 2.0, 2.0, 2.0, 2.0, - 2.5, 3.5, 4.5, 4.5, 4.5] - action: - name: reject - # Inter-channel check - - filter: Bounds Check - filter variables: - - name: brightnessTemperature - channels: *amsua_n19_channels - test variables: - - name: ObsFunction/InterChannelConsistencyCheck - channels: *amsua_n19_channels - options: - channels: *amsua_n19_channels - sensor: amsua_n19 - use_flag: [ 1, 1, 1, 1, 1, - 1, -1, -1, 1, 1, - 1, 1, 1, -1, 1 ] - maxvalue: 1.0e-12 - action: - name: reject - # Useflag check - - filter: Bounds Check - filter variables: - - name: brightnessTemperature - channels: *amsua_n19_channels - test variables: - - name: ObsFunction/ChannelUseflagCheckRad - channels: *amsua_n19_channels - options: - sensor: amsua_n19 - channels: *amsua_n19_channels - use_flag: [ 1, 1, 1, 1, 1, - 1, -1, -1, 1, 1, - 1, 1, 1, -1, 1 ] - minvalue: 1.0e-12 - action: - name: reject diff --git a/parm/atm/obs/config/atms_n20.yaml.j2 b/parm/atm/obs/config/atms_n20.yaml.j2 deleted file mode 100644 index 5f29a735f..000000000 --- a/parm/atm/obs/config/atms_n20.yaml.j2 +++ /dev/null @@ -1,557 +0,0 @@ -- obs space: - name: atms_n20 - obsdatain: - engine: - type: H5File - obsfile: '{{ DATA }}/obs/{{ OPREFIX }}atms_n20.tm00.nc' - obsdataout: - engine: - type: H5File - obsfile: '{{ DATA }}/diags/diag_atms_n20_{{ current_cycle | to_YMDH }}.nc' - io pool: - max pool size: 1 - simulated variables: [brightnessTemperature] - channels: &atms_n20_channels 1-22 - - obs operator: - name: CRTM - Absorbers: [H2O, O3, CO2] - Clouds: [Water, Ice] - Cloud_Fraction: 1.0 - Cloud_Seeding: true - obs options: - Sensor_ID: &Sensor_ID atms_n20 - EndianType: little_endian - CoefficientPath: '{{ DATA }}/crtm/' - linear obs operator: - Absorbers: [H2O, O3] - - obs bias: - input file: '{{ DATA }}/obs/{{ GPREFIX }}atms_n20.satbias.nc' - output file: '{{ DATA }}/bc/{{ APREFIX }}atms_n20.satbias.nc' - variational bc: - predictors: - - name: constant - - name: lapse_rate - order: 2 - tlapse: &atms_n20_tlapse '{{ DATA }}/obs/{{ GPREFIX }}atms_n20.tlapse.txt' - - name: lapse_rate - tlapse: *atms_n20_tlapse - - name: emissivity - - name: scan_angle - order: 4 - - name: scan_angle - order: 3 - - name: scan_angle - order: 2 - - name: scan_angle - covariance: - minimal required obs number: 20 - variance range: [1.0e-6, 10.0] - step size: 1.0e-4 - largest analysis variance: 10000.0 - prior: - input file: '{{ DATA }}/obs/{{ GPREFIX }}atms_n20.satbias_cov.nc' - inflation: - ratio: 1.1 - ratio for small dataset: 2.0 - output file: '{{ DATA }}/bc/{{ APREFIX }}atms_n20.satbias_cov.nc' - - obs pre filters: - # Step 0-A: Create Diagnostic Flags - - filter: Create Diagnostic Flags - filter variables: - - name: brightnessTemperature - channels: *atms_n20_channels - flags: - - name: ScanEdgeRemoval - initial value: false - force reinitialization: false - - name: Thinning - initial value: false - force reinitialization: false - - name: CLWRetrievalCheck - initial value: false - force reinitialization: false - - name: WindowChannelExtremeResidual - initial value: false - force reinitialization: false - - name: HydrometeorCheck - initial value: false - force reinitialization: false - - name: GrossCheck - initial value: false - force reinitialization: false - - name: InterChannelConsistency - initial value: false - force reinitialization: false - - name: UseflagCheck - initial value: false - force reinitialization: false - - obs post filters: - # Step 0-B: Calculate derived variables - # Calculate CLW retrieved from observation - - filter: Variable Assignment - assignments: - - name: CLWRetFromObs@DerivedMetaData - type: float - function: - name: CLWRetMW@ObsFunction - options: - clwret_ch238: 1 - clwret_ch314: 2 - clwret_types: [ObsValue] - - # Calculate CLW retrieved from observation - - filter: Variable Assignment - assignments: - - name: CLWRetFromBkg@DerivedMetaData - type: float - function: - name: CLWRetMW@ObsFunction - options: - clwret_ch238: 1 - clwret_ch314: 2 - clwret_types: [HofX] - - # Calculate symmetric retrieved CLW - - filter: Variable Assignment - assignments: - - name: CLWRetSymmetric@DerivedMetaData - type: float - value: 1000.0 - - - filter: Variable Assignment - where: - - variable: - name: CLWRetFromObs@DerivedMetaData - minvalue: 0. - maxvalue: 999. - - variable: - name: CLWRetFromBkg@DerivedMetaData - minvalue: 0. - maxvalue: 999. - where operator: and - assignments: - - name: CLWRetSymmetric@DerivedMetaData - type: float - function: - name: Arithmetic@ObsFunction - options: - variables: - - name: CLWRetFromObs@DerivedMetaData - - name: CLWRetFromBkg@DerivedMetaData - total coefficient: 0.5 - - # Calculate scattering index from observation - - filter: Variable Assignment - assignments: - - name: SIRetFromObs@DerivedMetaData - type: float - function: - name: SCATRetMW@ObsFunction - options: - scatret_ch238: 1 - scatret_ch314: 2 - scatret_ch890: 16 - scatret_types: [ObsValue] - - # Calculate CLW obs/bkg match index - - filter: Variable Assignment - assignments: - - name: CLWMatchIndex@DerivedMetaData - channels: *atms_n20_channels - type: float - function: - name: CLWMatchIndexMW@ObsFunction - channels: *atms_n20_channels - options: - channels: *atms_n20_channels - clwobs_function: - name: CLWRetFromObs@DerivedMetaData - clwbkg_function: - name: CLWRetFromBkg@DerivedMetaData - clwret_clearsky: [ 0.030, 0.030, 0.030, 0.020, 0.030, - 0.080, 0.150, 0.000, 0.000, 0.000, - 0.000, 0.000, 0.000, 0.000, 0.000, - 0.020, 0.030, 0.030, 0.030, 0.030, - 0.050, 0.100] - - # Calculate symmetric observation error - - filter: Variable Assignment - assignments: - - name: InitialObsError@DerivedMetaData - channels: *atms_n20_channels - type: float - function: - name: ObsErrorModelRamp@ObsFunction - channels: *atms_n20_channels - options: - channels: *atms_n20_channels - xvar: - name: CLWRetSymmetric@DerivedMetaData - x0: [ 0.030, 0.030, 0.030, 0.020, 0.030, - 0.080, 0.150, 0.000, 0.000, 0.000, - 0.000, 0.000, 0.000, 0.000, 0.000, - 0.020, 0.030, 0.030, 0.030, 0.030, - 0.050, 0.100] - x1: [ 0.350, 0.380, 0.400, 0.450, 0.500, - 1.000, 1.000, 0.000, 0.000, 0.000, - 0.000, 0.000, 0.000, 0.000, 0.000, - 0.350, 0.500, 0.500, 0.500, 0.500, - 0.500, 0.500] - err0: [ 4.500, 4.500, 4.500, 2.500, 0.550, - 0.300, 0.300, 0.400, 0.400, 0.400, - 0.450, 0.450, 0.550, 0.800, 4.000, - 4.000, 4.000, 3.500, 3.000, 3.000, - 3.000, 3.000] - err1: [20.000, 25.000, 12.000, 7.000, 3.500, - 3.000, 0.800, 0.400, 0.400, 0.400, - 0.450, 0.450, 0.550, 0.800, 4.000, - 19.000, 30.000, 25.000, 16.500, 12.000, - 9.000, 6.500] - - # Calculate Innovation@DerivedMetaData - - filter: Variable Assignment - assignments: - - name: Innovation@DerivedMetaData - channels: *atms_n20_channels - type: float - function: - name: ObsFunction/Arithmetic - channels: *atms_n20_channels - options: - variables: - - name: brightnessTemperature@ObsValue - channels: *atms_n20_channels - - name: brightnessTemperature@HofX - channels: *atms_n20_channels - coefs: [1, -1] - - # Step 0-C: Assign Initial All-Sky Observation Error - - filter: Perform Action - filter variables: - - name: brightnessTemperature - channels: *atms_n20_channels - action: - name: assign error - error function: - name: InitialObsError@DerivedMetaData - channels: *atms_n20_channels - - # Step 1: Remove Observations from the Edge of the Scan - - filter: Domain Check - filter variables: - - name: brightnessTemperature - channels: 1-22 - where: - - variable: - name: MetaData/sensorScanPosition - is_in: 7-90 - actions: - - name: set - flag: ScanEdgeRemoval - - name: reject - - # Step 2: Data Thinning - - filter: Gaussian Thinning - horizontal_mesh: 145 - use_reduced_horizontal_grid: true - distance_norm: geodesic - # round_horizontal_bin_count_to_nearest: true - # partition_longitude_bins_using_mesh: true - actions: - - name: set - flag: Thinning - - name: reject - - # Step 3A: CLW Retrieval Check (observation_based) - - filter: Bounds Check - filter variables: - - name: brightnessTemperature - channels: 1-7, 16-22 - test variables: - - name: CLWRetFromObs@DerivedMetaData - maxvalue: 999.0 - actions: - - name: set - flag: CLWRetrievalCheck - - name: reject - - # Step 3B: CLW Retrieval Check (background_based) - - filter: Bounds Check - filter variables: - - name: brightnessTemperature - channels: 1-7, 16-22 - test variables: - - name: CLWRetFromBkg@DerivedMetaData - maxvalue: 999.0 - actions: - - name: set - flag: CLWRetrievalCheck - - name: reject - - # Step 4: Window Channel Sanity Check - - filter: Bounds Check - filter variables: - - name: brightnessTemperature - channels: 1-7, 16, 17-22 - test variables: - - name: Innovation@DerivedMetaData - channels: 1, 2, 5-7, 16 - maxvalue: 200.0 - minvalue: -200.0 - flag all filter variables if any test variable is out of bounds: true - actions: - - name: set - flag: WindowChannelExtremeResidual - - name: reject - - # Step 5: Hydrometeor Check (cloud/precipitation affected chanels) - - filter: Variable Assignment - assignments: - - name: DerivedMetaData/HydrometeorCheckATMS - channels: *atms_n20_channels - type: float - function: - name: HydrometeorCheckATMS@ObsFunction - channels: *atms_n20_channels - options: - channels: *atms_n20_channels - obserr_clearsky: [ 4.500, 4.500, 4.500, 2.500, 0.550, - 0.300, 0.300, 0.400, 0.400, 0.400, - 0.450, 0.450, 0.550, 0.800, 4.000, - 4.000, 4.000, 3.500, 3.000, 3.000, - 3.000, 3.000] - clwret_function: - name: CLWRetFromObs@DerivedMetaData - obserr_function: - name: InitialObsError@DerivedMetaData - channels: *atms_n20_channels - - - filter: Bounds Check - filter variables: - - name: brightnessTemperature - channels: *atms_n20_channels - test variables: - - name: DerivedMetaData/HydrometeorCheckATMS - channels: *atms_n20_channels - maxvalue: 0.0 - actions: - - name: set - flag: HydrometeorCheck - ignore: rejected observations - - name: reject - - # Step 6: Observation Error Inflation based on Topography Check - - filter: Variable Assignment - assignments: - - name: ObsErrorFactorTopo@DerivedMetaData - channels: *atms_n20_channels - type: float - function: - name: ObsErrorFactorTopoRad@ObsFunction - channels: *atms_n20_channels - options: - sensor: *Sensor_ID - channels: *atms_n20_channels - - - filter: Perform Action - filter variables: - - name: brightnessTemperature - channels: *atms_n20_channels - action: - name: inflate error - inflation variable: - name: ObsErrorFactorTopo@DerivedMetaData - channels: *atms_n20_channels - - # Step 7: Obs Error Inflation based on TOA Transmittancec Check - - filter: Variable Assignment - assignments: - - name: ObsErrorFactorTransmitTop@DerivedMetaData - channels: *atms_n20_channels - type: float - function: - name: ObsErrorFactorTransmitTopRad@ObsFunction - channels: *atms_n20_channels - options: - channels: *atms_n20_channels - - - filter: Perform Action - filter variables: - - name: brightnessTemperature - channels: *atms_n20_channels - action: - name: inflate error - inflation variable: - name: ObsErrorFactorTransmitTop@DerivedMetaData - channels: *atms_n20_channels - - # Step 8: Observation Error Inflation based on Surface Jacobian Check - - filter: Variable Assignment - assignments: - - name: ObsErrorFactorSurfJacobian@DerivedMetaData - channels: *atms_n20_channels - type: float - function: - name: ObsErrorFactorSurfJacobianRad@ObsFunction - channels: *atms_n20_channels - options: - sensor: *Sensor_ID - channels: *atms_n20_channels - obserr_demisf: [0.010, 0.020, 0.015, 0.020, 0.200] - obserr_dtempf: [0.500, 2.000, 1.000, 2.000, 4.500] - - - - filter: Perform Action - filter variables: - - name: brightnessTemperature - channels: *atms_n20_channels - action: - name: inflate error - inflation variable: - name: ObsErrorFactorSurfJacobian@DerivedMetaData - channels: *atms_n20_channels - - # Step 9: Situation Dependent Check - - filter: Variable Assignment - assignments: - - name: ObsErrorFactorSituDepend@DerivedMetaData - channels: *atms_n20_channels - type: float - function: - name: ObsErrorFactorSituDependMW@ObsFunction - channels: *atms_n20_channels - options: - sensor: *Sensor_ID - channels: *atms_n20_channels - clwbkg_function: - name: CLWRetFromBkg@DerivedMetaData - clwobs_function: - name: CLWRetFromObs@DerivedMetaData - scatobs_function: - name: SIRetFromObs@DerivedMetaData - clwmatchidx_function: - name: CLWMatchIndex@DerivedMetaData - channels: *atms_n20_channels - obserr_function: - name: InitialObsError@DerivedMetaData - channels: *atms_n20_channels - obserr_clearsky: [ 4.500, 4.500, 4.500, 2.500, 0.550, - 0.300, 0.300, 0.400, 0.400, 0.400, - 0.450, 0.450, 0.550, 0.800, 4.000, - 4.000, 4.000, 3.500, 3.000, 3.000, - 3.000, 3.000] - - - filter: Perform Action - filter variables: - - name: brightnessTemperature - channels: *atms_n20_channels - action: - name: inflate error - inflation variable: - name: ObsErrorFactorSituDepend@DerivedMetaData - channels: *atms_n20_channels - - # Step 10: Gross check - # Remove data if abs(Obs-HofX) > absolute threhold - - filter: Variable Assignment - assignments: - - name: ObsErrorFactorLat@DerivedMetaData - type: float - function: - name: ObsErrorFactorLatRad@ObsFunction - options: - latitude_parameters: [25.0, 0.25, 0.04, 3.0] - - - filter: Variable Assignment - assignments: - - name: ObsErrorBound@DerivedMetaData - channels: *atms_n20_channels - type: float - function: - name: ObsErrorBoundMW@ObsFunction - channels: *atms_n20_channels - options: - sensor: *Sensor_ID - channels: *atms_n20_channels - obserr_bound_latitude: - name: ObsErrorFactorLat@DerivedMetaData - obserr_bound_transmittop: - name: ObsErrorFactorTransmitTop@DerivedMetaData - channels: *atms_n20_channels - options: - channels: *atms_n20_channels - obserr_bound_topo: - name: ObsErrorFactorTopo@DerivedMetaData - channels: *atms_n20_channels - obserr_function: - name: InitialObsError@DerivedMetaData - channels: *atms_n20_channels - threhold: 3 - obserr_bound_max: [4.5, 4.5, 3.0, 3.0, 1.0, - 1.0, 1.0, 1.0, 1.0, 1.0, - 1.0, 1.0, 1.0, 2.0, 4.5, - 4.5, 2.0, 2.0, 2.0, 2.0, - 2.0, 2.0] - - - filter: Background Check - filter variables: - - name: brightnessTemperature - channels: *atms_n20_channels - function absolute threshold: - - name: ObsErrorBound@DerivedMetaData - channels: *atms_n20_channels - actions: - - name: set - flag: GrossCheck - ignore: rejected observations - - name: reject - - # Step 11: Inter-Channel Check - - filter: Bounds Check - filter variables: - - name: brightnessTemperature - channels: *atms_n20_channels - test variables: - - name: InterChannelConsistencyCheck@ObsFunction - channels: *atms_n20_channels - options: - channels: *atms_n20_channels - use passive_bc: true - sensor: *Sensor_ID - use_flag: [ 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, - 1, 1, 1, 1, 4, - 1, 1, 1, 1, 1, - 1, 1] - maxvalue: 1.0e-12 - actions: - - name: set - flag: InterChannelConsistency - ignore: rejected observations - - name: reject - - # Step 12: Useflag Check - - filter: Bounds Check - filter variables: - - name: brightnessTemperature - channels: *atms_n20_channels - test variables: - - name: ObsFunction/ChannelUseflagCheckRad - channels: *atms_n20_channels - options: - channels: *atms_n20_channels - use_flag: [ 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, - 1, 1, 1, 1, 4, - 1, 1, 1, 1, 1, - 1, 1] - minvalue: 1.0e-12 - actions: - - name: set - flag: UseflagCheck - ignore: rejected observations - - name: reject diff --git a/parm/atm/obs/config/atms_npp.yaml.j2 b/parm/atm/obs/config/atms_npp.yaml.j2 deleted file mode 100644 index a7be6b9cc..000000000 --- a/parm/atm/obs/config/atms_npp.yaml.j2 +++ /dev/null @@ -1,557 +0,0 @@ -- obs space: - name: atms_npp - obsdatain: - engine: - type: H5File - obsfile: {{ DATA }}/obs/{{ OPREFIX }}atms_npp.tm00.nc - obsdataout: - engine: - type: H5File - obsfile: {{ DATA }}/diags/diag_atms_npp_{{ current_cycle | to_YMDH }}.nc - io pool: - max pool size: 1 - simulated variables: [brightnessTemperature] - channels: &atms_npp_channels 1-2 - - obs operator: - name: CRTM - Absorbers: [H2O,O3,CO2] - Clouds: [Water, Ice] - Cloud_Fraction: 1.0 - Cloud_Seeding: true - obs options: - Sensor_ID: &Sensor_ID atms_npp - EndianType: little_endian - CoefficientPath: {{ DATA }}/crtm/ - linear obs operator: - Absorbers: [H2O, O3] - - obs bias: - input file: {{ DATA }}/obs/{{ GPREFIX }}atms_npp.satbias.nc - output file: {{ DATA }}/bc/{{ APREFIX }}atms_npp.satbias.nc - variational bc: - predictors: - - name: constant - - name: lapse_rate - order: 2 - tlapse: &atms_npp_tlapse {{ DATA }}/obs/{{ GPREFIX }}atms_npp.tlapse.txt - - name: lapse_rate - tlapse: *atms_npp_tlapse - - name: emissivity - - name: scan_angle - order: 4 - - name: scan_angle - order: 3 - - name: scan_angle - order: 2 - - name: scan_angle - covariance: - minimal required obs number: 20 - variance range: [1.0e-6, 10.0] - step size: 1.0e-4 - largest analysis variance: 10000.0 - prior: - input file: {{ DATA }}/obs/{{ GPREFIX }}atms_npp.satbias_cov.nc - inflation: - ratio: 1.1 - ratio for small dataset: 2.0 - output file: {{ DATA }}/bc/{{ APREFIX }}atms_npp.satbias_cov.nc - - obs pre filters: - # Step 0-A: Create Diagnostic Flags - - filter: Create Diagnostic Flags - filter variables: - - name: brightnessTemperature - channels: *atms_npp_channels - flags: - - name: ScanEdgeRemoval - initial value: false - force reinitialization: false - - name: Thinning - initial value: false - force reinitialization: false - - name: CLWRetrievalCheck - initial value: false - force reinitialization: false - - name: WindowChannelExtremeResidual - initial value: false - force reinitialization: false - - name: HydrometeorCheck - initial value: false - force reinitialization: false - - name: GrossCheck - initial value: false - force reinitialization: false - - name: InterChannelConsistency - initial value: false - force reinitialization: false - - name: UseflagCheck - initial value: false - force reinitialization: false - - obs post filters: - # Step 0-B: Calculate derived variables - # Calculate CLW retrieved from observation - - filter: Variable Assignment - assignments: - - name: CLWRetFromObs@DerivedMetaData - type: float - function: - name: CLWRetMW@ObsFunction - options: - clwret_ch238: 1 - clwret_ch314: 2 - clwret_types: [ObsValue] - - # Calculate CLW retrieved from observation - - filter: Variable Assignment - assignments: - - name: CLWRetFromBkg@DerivedMetaData - type: float - function: - name: CLWRetMW@ObsFunction - options: - clwret_ch238: 1 - clwret_ch314: 2 - clwret_types: [HofX] - - # Calculate symmetric retrieved CLW - - filter: Variable Assignment - assignments: - - name: CLWRetSymmetric@DerivedMetaData - type: float - value: 1000.0 - - - filter: Variable Assignment - where: - - variable: - name: CLWRetFromObs@DerivedMetaData - minvalue: 0. - maxvalue: 999. - - variable: - name: CLWRetFromBkg@DerivedMetaData - minvalue: 0. - maxvalue: 999. - where operator: and - assignments: - - name: CLWRetSymmetric@DerivedMetaData - type: float - function: - name: Arithmetic@ObsFunction - options: - variables: - - name: CLWRetFromObs@DerivedMetaData - - name: CLWRetFromBkg@DerivedMetaData - total coefficient: 0.5 - - # Calculate scattering index from observation - - filter: Variable Assignment - assignments: - - name: SIRetFromObs@DerivedMetaData - type: float - function: - name: SCATRetMW@ObsFunction - options: - scatret_ch238: 1 - scatret_ch314: 2 - scatret_ch890: 16 - scatret_types: [ObsValue] - - # Calculate CLW obs/bkg match index - - filter: Variable Assignment - assignments: - - name: CLWMatchIndex@DerivedMetaData - channels: *atms_npp_channels - type: float - function: - name: CLWMatchIndexMW@ObsFunction - channels: *atms_npp_channels - options: - channels: *atms_npp_channels - clwobs_function: - name: CLWRetFromObs@DerivedMetaData - clwbkg_function: - name: CLWRetFromBkg@DerivedMetaData - clwret_clearsky: [ 0.030, 0.030, 0.030, 0.020, 0.030, - 0.080, 0.150, 0.000, 0.000, 0.000, - 0.000, 0.000, 0.000, 0.000, 0.000, - 0.020, 0.030, 0.030, 0.030, 0.030, - 0.050, 0.100] - - # Calculate symmetric observation error - - filter: Variable Assignment - assignments: - - name: InitialObsError@DerivedMetaData - channels: *atms_npp_channels - type: float - function: - name: ObsErrorModelRamp@ObsFunction - channels: *atms_npp_channels - options: - channels: *atms_npp_channels - xvar: - name: CLWRetSymmetric@DerivedMetaData - x0: [ 0.030, 0.030, 0.030, 0.020, 0.030, - 0.080, 0.150, 0.000, 0.000, 0.000, - 0.000, 0.000, 0.000, 0.000, 0.000, - 0.020, 0.030, 0.030, 0.030, 0.030, - 0.050, 0.100] - x1: [ 0.350, 0.380, 0.400, 0.450, 0.500, - 1.000, 1.000, 0.000, 0.000, 0.000, - 0.000, 0.000, 0.000, 0.000, 0.000, - 0.350, 0.500, 0.500, 0.500, 0.500, - 0.500, 0.500] - err0: [ 4.500, 4.500, 4.500, 2.500, 0.550, - 0.300, 0.300, 0.400, 0.400, 0.400, - 0.450, 0.450, 0.550, 0.800, 4.000, - 4.000, 4.000, 3.500, 3.000, 3.000, - 3.000, 3.000] - err1: [20.000, 25.000, 12.000, 7.000, 3.500, - 3.000, 0.800, 0.400, 0.400, 0.400, - 0.450, 0.450, 0.550, 0.800, 4.000, - 19.000, 30.000, 25.000, 16.500, 12.000, - 9.000, 6.500] - - # Calculate Innovation@DerivedMetaData - - filter: Variable Assignment - assignments: - - name: Innovation@DerivedMetaData - channels: *atms_npp_channels - type: float - function: - name: ObsFunction/Arithmetic - channels: *atms_npp_channels - options: - variables: - - name: brightnessTemperature@ObsValue - channels: *atms_npp_channels - - name: brightnessTemperature@HofX - channels: *atms_npp_channels - coefs: [1, -1] - - # Step 0-C: Assign Initial All-Sky Observation Error - - filter: Perform Action - filter variables: - - name: brightnessTemperature - channels: *atms_npp_channels - action: - name: assign error - error function: - name: InitialObsError@DerivedMetaData - channels: *atms_npp_channels - - # Step 1: Remove Observations from the Edge of the Scan - - filter: Domain Check - filter variables: - - name: brightnessTemperature - channels: 1-22 - where: - - variable: - name: MetaData/sensorScanPosition - is_in: 7-90 - actions: - - name: set - flag: ScanEdgeRemoval - - name: reject - - # Step 2: Data Thinning - - filter: Gaussian Thinning - horizontal_mesh: 145 - use_reduced_horizontal_grid: true - distance_norm: geodesic - # round_horizontal_bin_count_to_nearest: true - # partition_longitude_bins_using_mesh: true - actions: - - name: set - flag: Thinning - - name: reject - - # Step 3A: CLW Retrieval Check (observation_based) - - filter: Bounds Check - filter variables: - - name: brightnessTemperature - channels: 1-7, 16-22 - test variables: - - name: CLWRetFromObs@DerivedMetaData - maxvalue: 999.0 - actions: - - name: set - flag: CLWRetrievalCheck - - name: reject - - # Step 3B: CLW Retrieval Check (background_based) - - filter: Bounds Check - filter variables: - - name: brightnessTemperature - channels: 1-7, 16-22 - test variables: - - name: CLWRetFromBkg@DerivedMetaData - maxvalue: 999.0 - actions: - - name: set - flag: CLWRetrievalCheck - - name: reject - - # Step 4: Window Channel Sanity Check - - filter: Bounds Check - filter variables: - - name: brightnessTemperature - channels: 1-7, 16, 17-22 - test variables: - - name: Innovation@DerivedMetaData - channels: 1, 2, 5-7, 16 - maxvalue: 200.0 - minvalue: -200.0 - flag all filter variables if any test variable is out of bounds: true - actions: - - name: set - flag: WindowChannelExtremeResidual - - name: reject - - # Step 5: Hydrometeor Check (cloud/precipitation affected chanels) - - filter: Variable Assignment - assignments: - - name: DerivedMetaData/HydrometeorCheckATMS - channels: *atms_npp_channels - type: float - function: - name: HydrometeorCheckATMS@ObsFunction - channels: *atms_npp_channels - options: - channels: *atms_npp_channels - obserr_clearsky: [ 4.500, 4.500, 4.500, 2.500, 0.550, - 0.300, 0.300, 0.400, 0.400, 0.400, - 0.450, 0.450, 0.550, 0.800, 4.000, - 4.000, 4.000, 3.500, 3.000, 3.000, - 3.000, 3.000] - clwret_function: - name: CLWRetFromObs@DerivedMetaData - obserr_function: - name: InitialObsError@DerivedMetaData - channels: *atms_npp_channels - - - filter: Bounds Check - filter variables: - - name: brightnessTemperature - channels: *atms_npp_channels - test variables: - - name: DerivedMetaData/HydrometeorCheckATMS - channels: *atms_npp_channels - maxvalue: 0.0 - actions: - - name: set - flag: HydrometeorCheck - ignore: rejected observations - - name: reject - - # Step 6: Observation Error Inflation based on Topography Check - - filter: Variable Assignment - assignments: - - name: ObsErrorFactorTopo@DerivedMetaData - channels: *atms_npp_channels - type: float - function: - name: ObsErrorFactorTopoRad@ObsFunction - channels: *atms_npp_channels - options: - sensor: *Sensor_ID - channels: *atms_npp_channels - - - filter: Perform Action - filter variables: - - name: brightnessTemperature - channels: *atms_npp_channels - action: - name: inflate error - inflation variable: - name: ObsErrorFactorTopo@DerivedMetaData - channels: *atms_npp_channels - - # Step 7: Obs Error Inflation based on TOA Transmittancec Check - - filter: Variable Assignment - assignments: - - name: ObsErrorFactorTransmitTop@DerivedMetaData - channels: *atms_npp_channels - type: float - function: - name: ObsErrorFactorTransmitTopRad@ObsFunction - channels: *atms_npp_channels - options: - channels: *atms_npp_channels - - - filter: Perform Action - filter variables: - - name: brightnessTemperature - channels: *atms_npp_channels - action: - name: inflate error - inflation variable: - name: ObsErrorFactorTransmitTop@DerivedMetaData - channels: *atms_npp_channels - - # Step 8: Observation Error Inflation based on Surface Jacobian Check - - filter: Variable Assignment - assignments: - - name: ObsErrorFactorSurfJacobian@DerivedMetaData - channels: *atms_npp_channels - type: float - function: - name: ObsErrorFactorSurfJacobianRad@ObsFunction - channels: *atms_npp_channels - options: - sensor: *Sensor_ID - channels: *atms_npp_channels - obserr_demisf: [0.010, 0.020, 0.015, 0.020, 0.200] - obserr_dtempf: [0.500, 2.000, 1.000, 2.000, 4.500] - - - - filter: Perform Action - filter variables: - - name: brightnessTemperature - channels: *atms_npp_channels - action: - name: inflate error - inflation variable: - name: ObsErrorFactorSurfJacobian@DerivedMetaData - channels: *atms_npp_channels - - # Step 9: Situation Dependent Check - - filter: Variable Assignment - assignments: - - name: ObsErrorFactorSituDepend@DerivedMetaData - channels: *atms_npp_channels - type: float - function: - name: ObsErrorFactorSituDependMW@ObsFunction - channels: *atms_npp_channels - options: - sensor: *Sensor_ID - channels: *atms_npp_channels - clwbkg_function: - name: CLWRetFromBkg@DerivedMetaData - clwobs_function: - name: CLWRetFromObs@DerivedMetaData - scatobs_function: - name: SIRetFromObs@DerivedMetaData - clwmatchidx_function: - name: CLWMatchIndex@DerivedMetaData - channels: *atms_npp_channels - obserr_function: - name: InitialObsError@DerivedMetaData - channels: *atms_npp_channels - obserr_clearsky: [ 4.500, 4.500, 4.500, 2.500, 0.550, - 0.300, 0.300, 0.400, 0.400, 0.400, - 0.450, 0.450, 0.550, 0.800, 4.000, - 4.000, 4.000, 3.500, 3.000, 3.000, - 3.000, 3.000] - - - filter: Perform Action - filter variables: - - name: brightnessTemperature - channels: *atms_npp_channels - action: - name: inflate error - inflation variable: - name: ObsErrorFactorSituDepend@DerivedMetaData - channels: *atms_npp_channels - - # Step 10: Gross check - # Remove data if abs(Obs-HofX) > absolute threhold - - filter: Variable Assignment - assignments: - - name: ObsErrorFactorLat@DerivedMetaData - type: float - function: - name: ObsErrorFactorLatRad@ObsFunction - options: - latitude_parameters: [25.0, 0.25, 0.04, 3.0] - - - filter: Variable Assignment - assignments: - - name: ObsErrorBound@DerivedMetaData - channels: *atms_npp_channels - type: float - function: - name: ObsErrorBoundMW@ObsFunction - channels: *atms_npp_channels - options: - sensor: *Sensor_ID - channels: *atms_npp_channels - obserr_bound_latitude: - name: ObsErrorFactorLat@DerivedMetaData - obserr_bound_transmittop: - name: ObsErrorFactorTransmitTop@DerivedMetaData - channels: *atms_npp_channels - options: - channels: *atms_npp_channels - obserr_bound_topo: - name: ObsErrorFactorTopo@DerivedMetaData - channels: *atms_npp_channels - obserr_function: - name: InitialObsError@DerivedMetaData - channels: *atms_npp_channels - threhold: 3 - obserr_bound_max: [4.5, 4.5, 3.0, 3.0, 1.0, - 1.0, 1.0, 1.0, 1.0, 1.0, - 1.0, 1.0, 1.0, 2.0, 4.5, - 4.5, 2.0, 2.0, 2.0, 2.0, - 2.0, 2.0] - - - filter: Background Check - filter variables: - - name: brightnessTemperature - channels: *atms_npp_channels - function absolute threshold: - - name: ObsErrorBound@DerivedMetaData - channels: *atms_npp_channels - actions: - - name: set - flag: GrossCheck - ignore: rejected observations - - name: reject - - # Step 11: Inter-Channel Check - - filter: Bounds Check - filter variables: - - name: brightnessTemperature - channels: *atms_npp_channels - test variables: - - name: InterChannelConsistencyCheck@ObsFunction - channels: *atms_npp_channels - options: - channels: *atms_npp_channels - use passive_bc: true - sensor: *Sensor_ID - use_flag: [ 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, - 1, 1, 1, 1, 4, - 1, 1, 1, 1, 1, - 1, 1] - maxvalue: 1.0e-12 - actions: - - name: set - flag: InterChannelConsistency - ignore: rejected observations - - name: reject - - # Step 12: Useflag Check - - filter: Bounds Check - filter variables: - - name: brightnessTemperature - channels: *atms_npp_channels - test variables: - - name: ObsFunction/ChannelUseflagCheckRad - channels: *atms_npp_channels - options: - channels: *atms_npp_channels - use_flag: [ 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, - 1, 1, 1, 1, 4, - 1, 1, 1, 1, 1, - 1, 1] - minvalue: 1.0e-12 - actions: - - name: set - flag: UseflagCheck - ignore: rejected observations - - name: reject diff --git a/parm/atm/obs/config/conv_ps.yaml.j2 b/parm/atm/obs/config/conv_ps.yaml.j2 deleted file mode 100644 index 09aed9d25..000000000 --- a/parm/atm/obs/config/conv_ps.yaml.j2 +++ /dev/null @@ -1,350 +0,0 @@ -- obs space: - name: surface_ps - obsdatain: - engine: - type: H5File - obsfile: '{{ DATA }}/obs/{{ OPREFIX }}conventional_ps.prepbufr.nc' - obsdataout: - engine: - type: H5File - obsfile: '{{ DATA }}/diags/diag_conventional_ps_prepbufr_{{ current_cycle | to_YMDH }}.nc' - io pool: - max pool size: 1 - simulated variables: [stationPressure] - - obs operator: - name: SfcPCorrected - variables: - - name: stationPressure - da_psfc_scheme: GSI - station_altitude: height - geovar_sfc_geomz: surface_altitude - geovar_geomz: geopotential_height - - linear obs operator: - name: Identity - variables: - - name: stationPressure - - obs prior filters: - # Initial Error Assignments for SFC Observations - - filter: Perform Action - filter variables: - - name: stationPressure - where: - - variable: ObsType/stationPressure - is_in: [181] - action: - name: assign error - error function: - name: ObsFunction/ObsErrorModelStepwiseLinear - options: - round_to_the_nearest_integer: true - xvar: - name: ObsValue/stationPressure - xvals: [80000, 75000, 70000, 65000, 60000, 55000 ] - errors: [110, 120, 120, 120, 120, 1.0e+11] - - - filter: Perform Action - filter variables: - - name: stationPressure - where: - - variable: ObsType/stationPressure - is_in: [187] - action: - name: assign error - error function: - name: ObsFunction/ObsErrorModelStepwiseLinear - options: - round_to_the_nearest_integer: true - xvar: - 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 - - filter: Perform Action - filter variables: - - name: stationPressure - where: - - variable: ObsType/stationPressure - is_in: [180] - action: - name: assign error - error function: - name: ObsFunction/ObsErrorModelStepwiseLinear - options: - round_to_the_nearest_integer: true - xvar: - name: ObsValue/stationPressure - xvals: [60000, 55000 ] - errors: [ 130, 1.0e+11] - - - filter: Perform Action - filter variables: - - name: stationPressure - where: - - variable: ObsType/stationPressure - is_in: [183] - action: - name: assign error - error parameter: 1.0e+11 - - # Initial Error Assignments for Radiosonde - - filter: Perform Action - filter variables: - - name: stationPressure - where: - - variable: ObsType/stationPressure - is_in: [120] - action: - name: assign error - error function: - name: ObsFunction/ObsErrorModelStepwiseLinear - options: - round_to_the_nearest_integer: true - xvar: - name: ObsValue/stationPressure - xvals: [80000, 75000, 70000, 65000, 60000, 55000 ] - errors: [ 110, 120, 120, 120, 120, 1.0e+11] - - # Create PreQC group variable (pqm in GSI read_prepbufr) - - filter: Variable Assignment - assignments: - - name: InputObsError/stationPressure - type: float - source variable: ObsErrorData/stationPressure - - # Set observation quality-realted variables - # Create PreQC group variable (pqm in GSI read_prepbufr) - - filter: Variable Assignment - assignments: - - name: PreQC/stationPressure - type: int - source variable: QualityMarker/stationPressure - - # Create PreUseFlag group variable (usage in GSI read_prepbufr) - # Initialize - - filter: Variable Assignment - assignments: - - name: PreUseFlag/stationPressure - type: int - source variable: PreQC/stationPressure - - - filter: Variable Assignment - where: - - variable: - name: PreUseFlag/stationPressure - is_in: 1-15 - assignments: - - name: PreUseFlag/stationPressure - value: 0 - # Re-assignment - - filter: Variable Assignment - where: - - variable: - name: ObsType/stationPressure - is_in: 183 - assignments: - - name: PreUseFlag/stationPressure - value: 100 - - - filter: Variable Assignment - where: - - variable: - name: ObsValue/stationPressure - is_defined: - - variable: - name: ObsValue/stationPressure - maxvalue: 50000.00 - where operator: and - assignments: - - name: PreUseFlag/stationPressure - value: 100 - - - filter: Variable Assignment - where: - - variable: - name: PreQC/stationPressure - is_in: 9, 12, 15 - assignments: - - name: PreUseFlag/stationPressure - value: 100 - - - filter: Variable Assignment - where: - - variable: - name: PreQC/stationPressure - is_in: 4-15 - assignments: - - name: PreUseFlag/stationPressure - value: 101 - - ## Observation range sanity check - #- filter: Bounds Check - # filter variables: - # - name: stationPressure - # minvalue: 37499.0 - # maxvalue: 106999.0 - # action: - # name: reject - - ## Reject all ObsType 183 - #- filter: RejectList - # where: - # - variable: - # name: ObsType/stationPressure - # is_in: 183 - - ## Reject surface pressure below 500 hPa - #- filter: Bounds Check - # filter variables: - # - name: stationPressure - # minvalue: 50000.00 - # action: - # name: reject - - #- filter: RejectList - # where: - # - variable: - # name: PreQC/stationPressure - # is_in: 4-15 - - # Inflate obs error based on obs type - - filter: Perform Action - filter variables: - - name: stationPressure - where: - - variable: PreQC/stationPressure - is_in: 3, 7 - action: - name: inflate error - inflation factor: 1.2 - - obs post filters: - # Calculate obs error inflation factors for duplicated observations at the same location - - filter: Variable Assignment - assignments: - - name: ObsErrorFactorDuplicateCheck/stationPressure - type: float - function: - name: ObsFunction/ObsErrorFactorDuplicateCheck - options: - use_air_pressure: false - variable: stationPressure - - # Reduce effective observation error based on obs type and subtype - # In this case: reduce effective obs error for buoy - - filter: Perform Action - filter variables: - - name: stationPressure - where: - - variable: - name: ObsType/stationPressure - is_in: 180 - - variable: - name: ObsSubType/stationPressure - is_in: 0 - action: - name: inflate error - inflation factor: 0.7 - - # Calculate obs error inflation factors for large discrepancies between model and observations - - filter: Variable Assignment - assignments: - - name: ObsErrorFactorSfcPressure/stationPressure - type: float - function: - name: ObsFunction/ObsErrorFactorSfcPressure - options: - geovar_sfc_geomz: surface_altitude - geovar_geomz: geopotential_height - station_altitude: height - - # Inflate surface pressure observation based on discrepancies between - # model and observations due to terrian - - filter: Perform Action - filter variables: - - name: stationPressure - action: - name: inflate error - inflation variable: - name: ObsErrorFactorSfcPressure/stationPressure - - - filter: Variable Assignment - assignments: - - name: DerivedMetaData/Innovation - type: float - function: - name: ObsFunction/Arithmetic - options: - variables: - - name: ObsValue/stationPressure - - name: HofX/stationPressure - coefs: [1, -1] - - - filter: Variable Assignment - assignments: - - name: DerivedMetaData/ObsErrorBoundSfcPressure1 - type: float - function: - name: ObsFunction/ObsErrorBoundConventional - options: - obsvar: stationPressure - obserr_bound_min: 100 - obserr_bound_max: 300 - obserr_bound_factor: 5.0 - - - filter: Background Check - filter variables: - - name: stationPressure - where: - - variable: PreQC/stationPressure - is_not_in: 3 - function absolute threshold: - - name: DerivedMetaData/ObsErrorBoundSfcPressure1 - action: - name: reject - - - filter: Variable Assignment - assignments: - - name: DerivedMetaData/ObsErrorBoundSfcPressure2 - type: float - function: - name: ObsFunction/ObsErrorBoundConventional - options: - obsvar: stationPressure - obserr_bound_min: 100 - obserr_bound_max: 300 - obserr_bound_factor: 3.5 - - - filter: Background Check - filter variables: - - name: stationPressure - where: - - variable: PreQC/stationPressure - is_in: 3 - function absolute threshold: - - name: DerivedMetaData/ObsErrorBoundSfcPressure2 - action: - name: reject - - # Inflate obs error based on duplicate check - - filter: Perform Action - filter variables: - - name: stationPressure - action: - name: inflate error - inflation variable: - name: ObsErrorFactorDuplicateCheck/stationPressure - - # Reject data based on PreUseFlag (usage in GSI) - - filter: Perform Action - filter variables: - - name: stationPressure - where: - - variable: PreUseFlag/stationPressure - is_not_in: 0, 1 - action: - name: reject - # End of Filters diff --git a/parm/atm/obs/config/cris-fsr_n20.yaml.j2 b/parm/atm/obs/config/cris-fsr_n20.yaml.j2 deleted file mode 100644 index 54fa33c33..000000000 --- a/parm/atm/obs/config/cris-fsr_n20.yaml.j2 +++ /dev/null @@ -1,457 +0,0 @@ -- obs space: - name: cris-fsr_n20 - obsdatain: - engine: - type: H5File - obsfile: '{{ DATA }}/obs/{{ OPREFIX }}cris-fsr_n20.{{ current_cycle | to_YMDH }}.nc' - obsdataout: - engine: - type: H5File - obsfile: '{{ DATA }}/diags/diag_cris-fsr_n20_{{ current_cycle | to_YMDH }}.nc' - io pool: - max pool size: 1 - simulated variables: [brightness_temperature] - channels: &cris-fsr_n20_channels 19, 24, 26, 27, 28, 31, 32, 33, 37, 39, 42, 44, 47, 49, 50, - 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, - 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, - 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, - 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, - 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, - 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, - 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, - 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, - 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, - 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 208, - 211, 216, 224, 234, 236, 238, 239, 242, 246, 248, 255, 264, 266, 268, - 275, 279, 283, 285, 291, 295, 301, 305, 311, 332, 342, 389, 400, 402, - 404, 406, 410, 427, 439, 440, 441, 445, 449, 455, 458, 461, 464, 467, - 470, 473, 475, 482, 486, 487, 490, 493, 496, 499, 501, 503, 505, 511, - 513, 514, 518, 519, 520, 522, 529, 534, 563, 568, 575, 592, 594, 596, - 598, 600, 602, 604, 611, 614, 616, 618, 620, 622, 626, 631, 638, 646, - 648, 652, 659, 673, 675, 678, 684, 688, 694, 700, 707, 710, 713, 714, - 718, 720, 722, 725, 728, 735, 742, 748, 753, 762, 780, 784, 798, 849, - 860, 862, 866, 874, 882, 890, 898, 906, 907, 908, 914, 937, 972, 973, - 978, 980, 981, 988, 995, 998, 1000, 1003, 1008, 1009, 1010, 1014, 1017, - 1018, 1020, 1022, 1024, 1026, 1029, 1030, 1032, 1034, 1037, 1038, 1041, - 1042, 1044, 1046, 1049, 1050, 1053, 1054, 1058, 1060, 1062, 1064, 1066, - 1069, 1076, 1077, 1080, 1086, 1091, 1095, 1101, 1109, 1112, 1121, 1128, - 1133, 1163, 1172, 1187, 1189, 1205, 1211, 1219, 1231, 1245, 1271, 1289, - 1300, 1313, 1316, 1325, 1329, 1346, 1347, 1473, 1474, 1491, 1499, 1553, - 1570, 1596, 1602, 1619, 1624, 1635, 1939, 1940, 1941, 1942, 1943, 1944, - 1945, 1946, 1947, 1948, 1949, 1950, 1951, 1952, 1953, 1954, 1955, 1956, - 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, - 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, - 1981, 1982, 1983, 1984, 1985, 1986, 1987, 2119, 2140, 2143, 2147, 2153, - 2158, 2161, 2168, 2171, 2175, 2182 - obs operator: - name: CRTM - Absorbers: [H2O,O3] - Clouds: [Water, Ice] - Cloud_Fraction: 1.0 - obs options: - Sensor_ID: cris-fsr_n20 - EndianType: little_endian - CoefficientPath: '{{ DATA }}/crtm/' - obs bias: - input file: '{{ DATA }}/obs/{{ GPREFIX }}cris-fsr_n20.satbias.nc' - output file: '{{ DATA }}/bc/{{ APREFIX }}cris-fsr_n20.satbias.nc' - variational bc: - predictors: - - name: constant - - name: lapse_rate - order: 2 - tlapse: &cris-fsr_n20_tlapse '{{ DATA }}/obs/{{ GPREFIX }}cris-fsr_n20.tlapse.txt' - - name: lapse_rate - tlapse: *cris-fsr_n20_tlapse - - name: emissivity - - name: scan_angle - order: 4 - - name: scan_angle - order: 3 - - name: scan_angle - order: 2 - - name: scan_angle - covariance: - minimal required obs number: 20 - variance range: [1.0e-6, 10.0] - step size: 1.0e-4 - largest analysis variance: 10000.0 - prior: - input file: '{{ DATA }}/obs/{{ GPREFIX }}cris-fsr_n20.satbias_cov.nc' - inflation: - ratio: 1.1 - ratio for small dataset: 2.0 - output file: '{{ DATA }}/bc/{{ APREFIX }}cris-fsr_n20.satbias_cov.nc' - # - #obs filters: - ## Wavenumber Check - #- filter: BlackList - # filter variables: - # - name: brightness_temperature - # channels: 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, - # 1982, 1983, 1984, 1985, 1986, 1987, 2119, 2140, 2143, 2147, - # 2153, 2158, 2161, 2168, 2171, 2175, 2182 - # where: - # - variable: - # name: solar_zenith_angle@MetaData - # maxvalue: 88.9999 - # - variable: - # name: water_area_fraction@GeoVaLs - # minvalue: 1.0e-12 - # action: - # name: reject - #- filter: BlackList - # filter variables: - # - name: brightness_temperature - # channels: *cris-fsr_n20_channels - # action: - # name: inflate error - # inflation variable: - # name: ObsErrorFactorWavenumIR@ObsFunction - # channels: *cris-fsr_n20_channels - # options: - # channels: *cris-fsr_n20_channels - ## Observation Range Sanity Check - #- filter: Bounds Check - # filter variables: - # - name: brightness_temperature - # channels: *cris-fsr_n20_channels - # minvalue: 50.00001 - # maxvalue: 449.99999 - # action: - # name: reject - ## Topography Check - #- filter: BlackList - # filter variables: - # - name: brightness_temperature - # channels: *cris-fsr_n20_channels - # action: - # name: inflate error - # inflation variable: - # name: ObsErrorFactorTopoRad@ObsFunction - # channels: *cris-fsr_n20_channels - # options: - # channels: *cris-fsr_n20_channels - # sensor: cris-fsr_n20 - ## Transmittance Top Check - #- filter: BlackList - # filter variables: - # - name: brightness_temperature - # channels: *cris-fsr_n20_channels - # action: - # name: inflate error - # inflation variable: - # name: ObsErrorFactorTransmitTopRad@ObsFunction - # channels: *cris-fsr_n20_channels - # options: - # channels: *cris-fsr_n20_channels - ## Cloud Detection Check - #- filter: Bounds Check - # filter variables: - # - name: brightness_temperature - # channels: *cris-fsr_n20_channels - # test variables: - # - name: CloudDetectMinResidualIR@ObsFunction - # channels: *cris-fsr_n20_channels - # options: - # channels: *cris-fsr_n20_channels - # use_flag: [ -1, 1, 1, -1, 1, -1, 1, -1, 1, 1, - # 1, 1, 1, 1, -1, 1, -1, 1, -1, 1, - # -1, 1, -1, 1, -1, 1, -1, 1, -1, 1, - # -1, 1, -1, 1, -1, 1, -1, 1, -1, 1, - # -1, 1, -1, 1, -1, 1, -1, 1, -1, 1, - # -1, 1, -1, 1, -1, 1, -1, 1, -1, 1, - # -1, 1, -1, 1, -1, -1, -1, 1, -1, 1, - # -1, 1, -1, 1, -1, 1, -1, 1, -1, 1, - # -1, 1, -1, 1, -1, 1, -1, 1, -1, 1, - # -1, 1, -1, 1, -1, 1, -1, 1, -1, 1, - # -1, 1, -1, 1, -1, 1, -1, 1, -1, 1, - # -1, 1, -1, 1, -1, 1, -1, 1, -1, 1, - # -1, 1, -1, 1, -1, -1, -1, 1, -1, -1, - # -1, 1, -1, -1, -1, 1, -1, -1, -1, 1, - # -1, -1, -1, 1, -1, -1, -1, 1, -1, -1, - # -1, 1, -1, -1, 1, -1, -1, -1, 1, -1, - # -1, 1, -1, -1, 1, -1, 1, -1, 1, -1, - # -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - # 1, 1, -1, -1, 1, -1, -1, -1, 1, 1, - # 1, 1, -1, -1, -1, -1, 1, 1, -1, -1, - # -1, -1, -1, -1, -1, -1, 1, -1, -1, -1, - # -1, 1, -1, -1, -1, -1, -1, -1, 1, -1, - # -1, -1, -1, -1, -1, -1, -1, -1, 1, -1, - # -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - # -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - # -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - # -1, 1, 1, -1, -1, -1, -1, -1, -1, -1, - # 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - # -1, -1, 1, 1, -1, -1, -1, -1, -1, 1, - # -1, -1, -1, -1, -1, -1, 1, -1, -1, -1, - # 1, -1, -1, -1, -1, -1, -1, 1, -1, -1, - # -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - # -1, -1, -1, -1, 1, -1, -1, -1, -1, -1, - # -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - # -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - # -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - # -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - # -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - # -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - # -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - # -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - # -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - # -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - # -1] - # use_flag_clddet: [ -1, 1, -1, -1, -1, -1, 1, -1, 1, -1, - # 1, -1, 1, -1, -1, 1, -1, -1, -1, 1, - # -1, -1, -1, 1, -1, -1, -1, 1, -1, -1, - # -1, 1, -1, -1, -1, 1, -1, -1, -1, 1, - # -1, -1, -1, 1, -1, -1, -1, 1, -1, -1, - # -1, 1, -1, -1, -1, 1, -1, -1, -1, 1, - # -1, -1, -1, 1, -1, -1, -1, 1, -1, -1, - # -1, 1, -1, -1, -1, 1, -1, -1, -1, 1, - # -1, -1, -1, 1, -1, -1, -1, 1, -1, -1, - # -1, 1, -1, -1, -1, 1, -1, -1, -1, 1, - # -1, -1, -1, 1, -1, -1, -1, 1, -1, -1, - # -1, 1, -1, -1, -1, 1, -1, -1, -1, 1, - # -1, -1, -1, 1, -1, -1, -1, 1, -1, -1, - # -1, 1, -1, -1, -1, 1, -1, -1, -1, 1, - # -1, -1, -1, 1, -1, -1, -1, 1, -1, -1, - # -1, 1, -1, -1, 1, -1, -1, -1, 1, -1, - # -1, 1, -1, -1, 1, -1, 1, -1, 1, -1, - # -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - # -1, 1, -1, -1, -1, -1, -1, -1, 1, -1, - # 1, 1, -1, -1, -1, -1, 1, 1, -1, -1, - # -1, -1, -1, -1, -1, -1, 1, -1, -1, -1, - # -1, 1, -1, -1, -1, -1, -1, -1, 1, -1, - # -1, -1, -1, -1, -1, -1, -1, -1, 1, -1, - # -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - # -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - # -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - # -1, 1, 1, -1, -1, -1, -1, -1, -1, -1, - # -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - # -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - # -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - # -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - # -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - # -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - # -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - # -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - # -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - # -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - # -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - # -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - # -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - # -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - # -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - # -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - # -1] - # obserr_dtempf: [0.50,2.00,4.00,2.00,4.00] - # maxvalue: 1.0e-12 - # action: - # name: reject - ## Surface Temperature Jacobian Check over Land - #- filter: Bounds Check - # filter variables: - # - name: brightness_temperature - # channels: *cris-fsr_n20_channels - # where: - # - variable: - # name: water_area_fraction@GeoVaLs - # maxvalue: 0.99 - # test variables: - # - name: brightness_temperature_jacobian_surface_temperature@ObsDiag - # channels: *cris-fsr_n20_channels - # maxvalue: 0.2 - ## NSST Retrieval Check - #- filter: Bounds Check - # filter variables: - # - name: brightness_temperature - # channels: *cris-fsr_n20_channels - # test variables: - # - name: NearSSTRetCheckIR@ObsFunction - # channels: *cris-fsr_n20_channels - # options: - # channels: *cris-fsr_n20_channels - # use_flag: [ -1, 1, 1, -1, 1, -1, 1, -1, 1, 1, - # 1, 1, 1, 1, -1, 1, -1, 1, -1, 1, - # -1, 1, -1, 1, -1, 1, -1, 1, -1, 1, - # -1, 1, -1, 1, -1, 1, -1, 1, -1, 1, - # -1, 1, -1, 1, -1, 1, -1, 1, -1, 1, - # -1, 1, -1, 1, -1, 1, -1, 1, -1, 1, - # -1, 1, -1, 1, -1, -1, -1, 1, -1, 1, - # -1, 1, -1, 1, -1, 1, -1, 1, -1, 1, - # -1, 1, -1, 1, -1, 1, -1, 1, -1, 1, - # -1, 1, -1, 1, -1, 1, -1, 1, -1, 1, - # -1, 1, -1, 1, -1, 1, -1, 1, -1, 1, - # -1, 1, -1, 1, -1, 1, -1, 1, -1, 1, - # -1, 1, -1, 1, -1, -1, -1, 1, -1, -1, - # -1, 1, -1, -1, -1, 1, -1, -1, -1, 1, - # -1, -1, -1, 1, -1, -1, -1, 1, -1, -1, - # -1, 1, -1, -1, 1, -1, -1, -1, 1, -1, - # -1, 1, -1, -1, 1, -1, 1, -1, 1, -1, - # -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - # 1, 1, -1, -1, 1, -1, -1, -1, 1, 1, - # 1, 1, -1, -1, -1, -1, 1, 1, -1, -1, - # -1, -1, -1, -1, -1, -1, 1, -1, -1, -1, - # -1, 1, -1, -1, -1, -1, -1, -1, 1, -1, - # -1, -1, -1, -1, -1, -1, -1, -1, 1, -1, - # -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - # -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - # -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - # -1, 1, 1, -1, -1, -1, -1, -1, -1, -1, - # 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - # -1, -1, 1, 1, -1, -1, -1, -1, -1, 1, - # -1, -1, -1, -1, -1, -1, 1, -1, -1, -1, - # 1, -1, -1, -1, -1, -1, -1, 1, -1, -1, - # -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - # -1, -1, -1, -1, 1, -1, -1, -1, -1, -1, - # -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - # -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - # -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - # -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - # -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - # -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - # -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - # -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - # -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - # -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - # -1 ] - # obserr_demisf: [0.01,0.02,0.03,0.02,0.03] - # obserr_dtempf: [0.50,2.00,4.00,2.00,4.00] - # maxvalue: 1.0e-12 - # action: - # name: reject - ## Surface Jacobians Check - #- filter: BlackList - # filter variables: - # - name: brightness_temperature - # channels: *cris-fsr_n20_channels - # action: - # name: inflate error - # inflation variable: - # name: ObsErrorFactorSurfJacobianRad@ObsFunction - # channels: *cris-fsr_n20_channels - # options: - # channels: *cris-fsr_n20_channels - # obserr_demisf: [0.01, 0.02, 0.03, 0.02, 0.03] - # obserr_dtempf: [0.50, 2.00, 4.00, 2.00, 4.00] - ## Gross check - #- filter: Background Check - # filter variables: - # - name: brightness_temperature - # channels: *cris-fsr_n20_channels - # function absolute threshold: - # - name: ObsErrorBoundIR@ObsFunction - # channels: *cris-fsr_n20_channels - # options: - # channels: *cris-fsr_n20_channels - # obserr_bound_latitude: - # name: ObsErrorFactorLatRad@ObsFunction - # options: - # latitude_parameters: [25.0, 0.5, 0.04, 1.0] - # obserr_bound_transmittop: - # name: ObsErrorFactorTransmitTopRad@ObsFunction - # channels: *cris-fsr_n20_channels - # options: - # channels: *cris-fsr_n20_channels - # obserr_bound_max: [ 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, - # 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, - # 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, - # 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, - # 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, - # 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, - # 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, - # 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, - # 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, - # 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, - # 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, - # 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, - # 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, - # 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, - # 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, - # 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, - # 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, - # 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, - # 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, - # 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, - # 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, - # 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, - # 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, - # 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, - # 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, - # 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, - # 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, - # 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, - # 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, - # 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, - # 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, - # 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, - # 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, - # 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, - # 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, - # 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, - # 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, - # 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, - # 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, - # 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, - # 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, - # 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, - # 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, - # 2.0 ] - # action: - # name: reject - ## Useflag Check - #- filter: Bounds Check - # filter variables: - # - name: brightness_temperature - # channels: *cris-fsr_n20_channels - # test variables: - # - name: ChannelUseflagCheckRad@ObsFunction - # channels: *cris-fsr_n20_channels - # options: - # channels: *cris-fsr_n20_channels - # use_flag: [ -1, 1, 1, -1, 1, -1, 1, -1, 1, 1, - # 1, 1, 1, 1, -1, 1, -1, 1, -1, 1, - # -1, 1, -1, 1, -1, 1, -1, 1, -1, 1, - # -1, 1, -1, 1, -1, 1, -1, 1, -1, 1, - # -1, 1, -1, 1, -1, 1, -1, 1, -1, 1, - # -1, 1, -1, 1, -1, 1, -1, 1, -1, 1, - # -1, 1, -1, 1, -1, -1, -1, 1, -1, 1, - # -1, 1, -1, 1, -1, 1, -1, 1, -1, 1, - # -1, 1, -1, 1, -1, 1, -1, 1, -1, 1, - # -1, 1, -1, 1, -1, 1, -1, 1, -1, 1, - # -1, 1, -1, 1, -1, 1, -1, 1, -1, 1, - # -1, 1, -1, 1, -1, 1, -1, 1, -1, 1, - # -1, 1, -1, 1, -1, -1, -1, 1, -1, -1, - # -1, 1, -1, -1, -1, 1, -1, -1, -1, 1, - # -1, -1, -1, 1, -1, -1, -1, 1, -1, -1, - # -1, 1, -1, -1, 1, -1, -1, -1, 1, -1, - # -1, 1, -1, -1, 1, -1, 1, -1, 1, -1, - # -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - # 1, 1, -1, -1, 1, -1, -1, -1, 1, 1, - # 1, 1, -1, -1, -1, -1, 1, 1, -1, -1, - # -1, -1, -1, -1, -1, -1, 1, -1, -1, -1, - # -1, 1, -1, -1, -1, -1, -1, -1, 1, -1, - # -1, -1, -1, -1, -1, -1, -1, -1, 1, -1, - # -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - # -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - # -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - # -1, 1, 1, -1, -1, -1, -1, -1, -1, -1, - # 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - # -1, -1, 1, 1, -1, -1, -1, -1, -1, 1, - # -1, -1, -1, -1, -1, -1, 1, -1, -1, -1, - # 1, -1, -1, -1, -1, -1, -1, 1, -1, -1, - # -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - # -1, -1, -1, -1, 1, -1, -1, -1, -1, -1, - # -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - # -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - # -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - # -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - # -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - # -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - # -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - # -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - # -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - # -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - # -1 ] - # minvalue: 1.0e-12 - # action: - # name: reject diff --git a/parm/atm/obs/config/cris-fsr_npp.yaml.j2 b/parm/atm/obs/config/cris-fsr_npp.yaml.j2 deleted file mode 100644 index a245b748f..000000000 --- a/parm/atm/obs/config/cris-fsr_npp.yaml.j2 +++ /dev/null @@ -1,456 +0,0 @@ -- obs space: - name: cris-fsr_npp - obsdatain: - engine: - type: H5File - obsfile: '{{ DATA }}/obs/{{ OPREFIX }}cris-fsr_npp.{{ current_cycle | to_YMDH }}.nc' - obsdataout: - engine: - type: H5File - obsfile: '{{ DATA }}/diags/diag_cris-fsr_npp_{{ current_cycle | to_YMDH }}.nc' - io pool: - max pool size: 1 - simulated variables: [brightness_temperature] - channels: &cris-fsr_npp_channels 19, 24, 26, 27, 28, 31, 32, 33, 37, 39, 42, 44, 47, 49, 50, - 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, - 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, - 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, - 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, - 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, - 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, - 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, - 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, - 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, - 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 208, - 211, 216, 224, 234, 236, 238, 239, 242, 246, 248, 255, 264, 266, 268, - 275, 279, 283, 285, 291, 295, 301, 305, 311, 332, 342, 389, 400, 402, - 404, 406, 410, 427, 439, 440, 441, 445, 449, 455, 458, 461, 464, 467, - 470, 473, 475, 482, 486, 487, 490, 493, 496, 499, 501, 503, 505, 511, - 513, 514, 518, 519, 520, 522, 529, 534, 563, 568, 575, 592, 594, 596, - 598, 600, 602, 604, 611, 614, 616, 618, 620, 622, 626, 631, 638, 646, - 648, 652, 659, 673, 675, 678, 684, 688, 694, 700, 707, 710, 713, 714, - 718, 720, 722, 725, 728, 735, 742, 748, 753, 762, 780, 784, 798, 849, - 860, 862, 866, 874, 882, 890, 898, 906, 907, 908, 914, 937, 972, 973, - 978, 980, 981, 988, 995, 998, 1000, 1003, 1008, 1009, 1010, 1014, 1017, - 1018, 1020, 1022, 1024, 1026, 1029, 1030, 1032, 1034, 1037, 1038, 1041, - 1042, 1044, 1046, 1049, 1050, 1053, 1054, 1058, 1060, 1062, 1064, 1066, - 1069, 1076, 1077, 1080, 1086, 1091, 1095, 1101, 1109, 1112, 1121, 1128, - 1133, 1163, 1172, 1187, 1189, 1205, 1211, 1219, 1231, 1245, 1271, 1289, - 1300, 1313, 1316, 1325, 1329, 1346, 1347, 1473, 1474, 1491, 1499, 1553, - 1570, 1596, 1602, 1619, 1624, 1635, 1939, 1940, 1941, 1942, 1943, 1944, - 1945, 1946, 1947, 1948, 1949, 1950, 1951, 1952, 1953, 1954, 1955, 1956, - 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, - 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, - 1981, 1982, 1983, 1984, 1985, 1986, 1987, 2119, 2140, 2143, 2147, 2153, - 2158, 2161, 2168, 2171, 2175, 2182 - obs operator: - name: CRTM - Absorbers: [H2O,O3] - Clouds: [Water, Ice] - Cloud_Fraction: 1.0 - obs options: - Sensor_ID: cris-fsr_npp - EndianType: little_endian - CoefficientPath: '{{ DATA }}/crtm/' - obs bias: - input file: '{{ DATA }}/obs/{{ GPREFIX }}cris-fsr_npp.satbias.nc' - output file: '{{ DATA }}/bc/{{ APREFIX }}cris-fsr_npp.satbias.nc' - variational bc: - predictors: - - name: constant - - name: lapse_rate - order: 2 - tlapse: &cris-fsr_npp_tlapse '{{ DATA }}/obs/{{ GPREFIX }}cris-fsr_npp.tlapse.txt' - - name: lapse_rate - tlapse: *cris-fsr_npp_tlapse - - name: emissivity - - name: scan_angle - order: 4 - - name: scan_angle - order: 3 - - name: scan_angle - order: 2 - - name: scan_angle - covariance: - minimal required obs number: 20 - variance range: [1.0e-6, 10.0] - step size: 1.0e-4 - largest analysis variance: 10000.0 - prior: - input file: '{{ DATA }}/obs/{{ GPREFIX }}cris-fsr_npp.satbias_cov.nc' - inflation: - ratio: 1.1 - ratio for small dataset: 2.0 - output file: '{{ DATA }}/bc/{{ APREFIX }}cris-fsr_npp.satbias_cov.nc' - #obs filters: - ## Wavenumber Check - #- filter: BlackList - # filter variables: - # - name: brightness_temperature - # channels: 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, - # 1982, 1983, 1984, 1985, 1986, 1987, 2119, 2140, 2143, 2147, - # 2153, 2158, 2161, 2168, 2171, 2175, 2182 - # where: - # - variable: - # name: solar_zenith_angle@MetaData - # maxvalue: 88.9999 - # - variable: - # name: water_area_fraction@GeoVaLs - # minvalue: 1.0e-12 - # action: - # name: reject - #- filter: BlackList - # filter variables: - # - name: brightness_temperature - # channels: *cris-fsr_npp_channels - # action: - # name: inflate error - # inflation variable: - # name: ObsErrorFactorWavenumIR@ObsFunction - # channels: *cris-fsr_npp_channels - # options: - # channels: *cris-fsr_npp_channels - ## Observation Range Sanity Check - #- filter: Bounds Check - # filter variables: - # - name: brightness_temperature - # channels: *cris-fsr_npp_channels - # minvalue: 50.00001 - # maxvalue: 449.99999 - # action: - # name: reject - ## Topography Check - #- filter: BlackList - # filter variables: - # - name: brightness_temperature - # channels: *cris-fsr_npp_channels - # action: - # name: inflate error - # inflation variable: - # name: ObsErrorFactorTopoRad@ObsFunction - # channels: *cris-fsr_npp_channels - # options: - # channels: *cris-fsr_npp_channels - # sensor: cris-fsr_npp - ## Transmittance Top Check - #- filter: BlackList - # filter variables: - # - name: brightness_temperature - # channels: *cris-fsr_npp_channels - # action: - # name: inflate error - # inflation variable: - # name: ObsErrorFactorTransmitTopRad@ObsFunction - # channels: *cris-fsr_npp_channels - # options: - # channels: *cris-fsr_npp_channels - ## Cloud Detection Check - #- filter: Bounds Check - # filter variables: - # - name: brightness_temperature - # channels: *cris-fsr_npp_channels - # test variables: - # - name: CloudDetectMinResidualIR@ObsFunction - # channels: *cris-fsr_npp_channels - # options: - # channels: *cris-fsr_npp_channels - # use_flag: [ -1, 1, 1, -1, 1, -1, 1, -1, 1, 1, - # 1, 1, 1, 1, -1, 1, -1, 1, -1, 1, - # -1, 1, -1, 1, -1, 1, -1, 1, -1, 1, - # -1, 1, -1, 1, -1, 1, -1, 1, -1, 1, - # -1, 1, -1, 1, -1, 1, -1, 1, -1, 1, - # -1, 1, -1, 1, -1, 1, -1, 1, -1, 1, - # -1, 1, -1, 1, -1, -1, -1, 1, -1, 1, - # -1, 1, -1, 1, -1, 1, -1, 1, -1, 1, - # -1, 1, -1, 1, -1, 1, -1, 1, -1, 1, - # -1, 1, -1, 1, -1, 1, -1, 1, -1, 1, - # -1, 1, -1, 1, -1, 1, -1, 1, -1, 1, - # -1, 1, -1, 1, -1, 1, -1, 1, -1, 1, - # -1, 1, -1, 1, -1, -1, -1, 1, -1, -1, - # -1, 1, -1, -1, -1, 1, -1, -1, -1, 1, - # -1, -1, -1, 1, -1, -1, -1, 1, -1, -1, - # -1, 1, -1, -1, 1, -1, -1, -1, 1, -1, - # -1, 1, -1, -1, 1, -1, 1, -1, 1, -1, - # -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - # 1, 1, -1, -1, 1, -1, -1, -1, 1, 1, - # 1, 1, -1, -1, -1, -1, 1, 1, -1, -1, - # -1, -1, -1, -1, -1, -1, 1, -1, -1, -1, - # -1, 1, -1, -1, -1, -1, -1, -1, 1, -1, - # -1, -1, -1, -1, -1, -1, -1, -1, 1, -1, - # -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - # -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - # -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - # -1, 1, 1, -1, -1, -1, -1, -1, -1, -1, - # 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - # -1, -1, 1, 1, -1, -1, -1, -1, -1, 1, - # -1, -1, -1, -1, -1, -1, 1, -1, -1, -1, - # 1, -1, -1, -1, -1, -1, -1, 1, -1, -1, - # -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - # -1, -1, -1, -1, 1, -1, -1, -1, -1, -1, - # -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - # -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - # -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - # -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - # -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - # -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - # -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - # -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - # -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - # -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - # -1] - # use_flag_clddet: [ -1, 1, -1, -1, -1, -1, 1, -1, 1, -1, - # 1, -1, 1, -1, -1, 1, -1, -1, -1, 1, - # -1, -1, -1, 1, -1, -1, -1, 1, -1, -1, - # -1, 1, -1, -1, -1, 1, -1, -1, -1, 1, - # -1, -1, -1, 1, -1, -1, -1, 1, -1, -1, - # -1, 1, -1, -1, -1, 1, -1, -1, -1, 1, - # -1, -1, -1, 1, -1, -1, -1, 1, -1, -1, - # -1, 1, -1, -1, -1, 1, -1, -1, -1, 1, - # -1, -1, -1, 1, -1, -1, -1, 1, -1, -1, - # -1, 1, -1, -1, -1, 1, -1, -1, -1, 1, - # -1, -1, -1, 1, -1, -1, -1, 1, -1, -1, - # -1, 1, -1, -1, -1, 1, -1, -1, -1, 1, - # -1, -1, -1, 1, -1, -1, -1, 1, -1, -1, - # -1, 1, -1, -1, -1, 1, -1, -1, -1, 1, - # -1, -1, -1, 1, -1, -1, -1, 1, -1, -1, - # -1, 1, -1, -1, 1, -1, -1, -1, 1, -1, - # -1, 1, -1, -1, 1, -1, 1, -1, 1, -1, - # -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - # -1, 1, -1, -1, -1, -1, -1, -1, 1, -1, - # 1, 1, -1, -1, -1, -1, 1, 1, -1, -1, - # -1, -1, -1, -1, -1, -1, 1, -1, -1, -1, - # -1, 1, -1, -1, -1, -1, -1, -1, 1, -1, - # -1, -1, -1, -1, -1, -1, -1, -1, 1, -1, - # -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - # -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - # -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - # -1, 1, 1, -1, -1, -1, -1, -1, -1, -1, - # -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - # -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - # -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - # -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - # -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - # -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - # -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - # -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - # -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - # -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - # -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - # -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - # -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - # -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - # -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - # -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - # -1] - # obserr_dtempf: [0.50,2.00,4.00,2.00,4.00] - # maxvalue: 1.0e-12 - # action: - # name: reject - ## Surface Temperature Jacobian Check over Land - #- filter: Bounds Check - # filter variables: - # - name: brightness_temperature - # channels: *cris-fsr_npp_channels - # where: - # - variable: - # name: water_area_fraction@GeoVaLs - # maxvalue: 0.99 - # test variables: - # - name: brightness_temperature_jacobian_surface_temperature@ObsDiag - # channels: *cris-fsr_npp_channels - # maxvalue: 0.2 - ## NSST Retrieval Check - #- filter: Bounds Check - # filter variables: - # - name: brightness_temperature - # channels: *cris-fsr_npp_channels - # test variables: - # - name: NearSSTRetCheckIR@ObsFunction - # channels: *cris-fsr_npp_channels - # options: - # channels: *cris-fsr_npp_channels - # use_flag: [ -1, 1, 1, -1, 1, -1, 1, -1, 1, 1, - # 1, 1, 1, 1, -1, 1, -1, 1, -1, 1, - # -1, 1, -1, 1, -1, 1, -1, 1, -1, 1, - # -1, 1, -1, 1, -1, 1, -1, 1, -1, 1, - # -1, 1, -1, 1, -1, 1, -1, 1, -1, 1, - # -1, 1, -1, 1, -1, 1, -1, 1, -1, 1, - # -1, 1, -1, 1, -1, -1, -1, 1, -1, 1, - # -1, 1, -1, 1, -1, 1, -1, 1, -1, 1, - # -1, 1, -1, 1, -1, 1, -1, 1, -1, 1, - # -1, 1, -1, 1, -1, 1, -1, 1, -1, 1, - # -1, 1, -1, 1, -1, 1, -1, 1, -1, 1, - # -1, 1, -1, 1, -1, 1, -1, 1, -1, 1, - # -1, 1, -1, 1, -1, -1, -1, 1, -1, -1, - # -1, 1, -1, -1, -1, 1, -1, -1, -1, 1, - # -1, -1, -1, 1, -1, -1, -1, 1, -1, -1, - # -1, 1, -1, -1, 1, -1, -1, -1, 1, -1, - # -1, 1, -1, -1, 1, -1, 1, -1, 1, -1, - # -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - # 1, 1, -1, -1, 1, -1, -1, -1, 1, 1, - # 1, 1, -1, -1, -1, -1, 1, 1, -1, -1, - # -1, -1, -1, -1, -1, -1, 1, -1, -1, -1, - # -1, 1, -1, -1, -1, -1, -1, -1, 1, -1, - # -1, -1, -1, -1, -1, -1, -1, -1, 1, -1, - # -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - # -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - # -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - # -1, 1, 1, -1, -1, -1, -1, -1, -1, -1, - # 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - # -1, -1, 1, 1, -1, -1, -1, -1, -1, 1, - # -1, -1, -1, -1, -1, -1, 1, -1, -1, -1, - # 1, -1, -1, -1, -1, -1, -1, 1, -1, -1, - # -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - # -1, -1, -1, -1, 1, -1, -1, -1, -1, -1, - # -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - # -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - # -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - # -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - # -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - # -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - # -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - # -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - # -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - # -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - # -1 ] - # obserr_demisf: [0.01,0.02,0.03,0.02,0.03] - # obserr_dtempf: [0.50,2.00,4.00,2.00,4.00] - # maxvalue: 1.0e-12 - # action: - # name: reject - ## Surface Jacobians Check - #- filter: BlackList - # filter variables: - # - name: brightness_temperature - # channels: *cris-fsr_npp_channels - # action: - # name: inflate error - # inflation variable: - # name: ObsErrorFactorSurfJacobianRad@ObsFunction - # channels: *cris-fsr_npp_channels - # options: - # channels: *cris-fsr_npp_channels - # obserr_demisf: [0.01, 0.02, 0.03, 0.02, 0.03] - # obserr_dtempf: [0.50, 2.00, 4.00, 2.00, 4.00] - ## Gross check - #- filter: Background Check - # filter variables: - # - name: brightness_temperature - # channels: *cris-fsr_npp_channels - # function absolute threshold: - # - name: ObsErrorBoundIR@ObsFunction - # channels: *cris-fsr_npp_channels - # options: - # channels: *cris-fsr_npp_channels - # obserr_bound_latitude: - # name: ObsErrorFactorLatRad@ObsFunction - # options: - # latitude_parameters: [25.0, 0.5, 0.04, 1.0] - # obserr_bound_transmittop: - # name: ObsErrorFactorTransmitTopRad@ObsFunction - # channels: *cris-fsr_npp_channels - # options: - # channels: *cris-fsr_npp_channels - # obserr_bound_max: [ 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, - # 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, - # 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, - # 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, - # 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, - # 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, - # 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, - # 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, - # 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, - # 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, - # 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, - # 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, - # 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, - # 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, - # 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, - # 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, - # 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, - # 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, - # 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, - # 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, - # 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, - # 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, - # 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, - # 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, - # 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, - # 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, - # 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, - # 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, - # 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, - # 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, - # 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, - # 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, - # 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, - # 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, - # 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, - # 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, - # 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, - # 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, - # 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, - # 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, - # 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, - # 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, - # 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, - # 2.0 ] - # action: - # name: reject - ## Useflag Check - #- filter: Bounds Check - # filter variables: - # - name: brightness_temperature - # channels: *cris-fsr_npp_channels - # test variables: - # - name: ChannelUseflagCheckRad@ObsFunction - # channels: *cris-fsr_npp_channels - # options: - # channels: *cris-fsr_npp_channels - # use_flag: [ -1, 1, 1, -1, 1, -1, 1, -1, 1, 1, - # 1, 1, 1, 1, -1, 1, -1, 1, -1, 1, - # -1, 1, -1, 1, -1, 1, -1, 1, -1, 1, - # -1, 1, -1, 1, -1, 1, -1, 1, -1, 1, - # -1, 1, -1, 1, -1, 1, -1, 1, -1, 1, - # -1, 1, -1, 1, -1, 1, -1, 1, -1, 1, - # -1, 1, -1, 1, -1, -1, -1, 1, -1, 1, - # -1, 1, -1, 1, -1, 1, -1, 1, -1, 1, - # -1, 1, -1, 1, -1, 1, -1, 1, -1, 1, - # -1, 1, -1, 1, -1, 1, -1, 1, -1, 1, - # -1, 1, -1, 1, -1, 1, -1, 1, -1, 1, - # -1, 1, -1, 1, -1, 1, -1, 1, -1, 1, - # -1, 1, -1, 1, -1, -1, -1, 1, -1, -1, - # -1, 1, -1, -1, -1, 1, -1, -1, -1, 1, - # -1, -1, -1, 1, -1, -1, -1, 1, -1, -1, - # -1, 1, -1, -1, 1, -1, -1, -1, 1, -1, - # -1, 1, -1, -1, 1, -1, 1, -1, 1, -1, - # -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - # 1, 1, -1, -1, 1, -1, -1, -1, 1, 1, - # 1, 1, -1, -1, -1, -1, 1, 1, -1, -1, - # -1, -1, -1, -1, -1, -1, 1, -1, -1, -1, - # -1, 1, -1, -1, -1, -1, -1, -1, 1, -1, - # -1, -1, -1, -1, -1, -1, -1, -1, 1, -1, - # -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - # -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - # -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - # -1, 1, 1, -1, -1, -1, -1, -1, -1, -1, - # 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - # -1, -1, 1, 1, -1, -1, -1, -1, -1, 1, - # -1, -1, -1, -1, -1, -1, 1, -1, -1, -1, - # 1, -1, -1, -1, -1, -1, -1, 1, -1, -1, - # -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - # -1, -1, -1, -1, 1, -1, -1, -1, -1, -1, - # -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - # -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - # -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - # -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - # -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - # -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - # -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - # -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - # -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - # -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - # -1 ] - # minvalue: 1.0e-12 - # action: - # name: reject diff --git a/parm/atm/obs/config/gnssro.yaml.j2 b/parm/atm/obs/config/gnssro.yaml.j2 deleted file mode 100644 index 7caa2ad9b..000000000 --- a/parm/atm/obs/config/gnssro.yaml.j2 +++ /dev/null @@ -1,140 +0,0 @@ -- obs space: - name: gnssrobndnbam - obsdatain: - engine: - type: H5File - obsfile: '{{ DATA }}/obs/{{ OPREFIX }}gnssro.tm00.bufr_d.nc' - # obsgrouping: - # group variables: [ 'sequenceNumber' ] - # sort variable: 'impactHeightRO' - # sort order: 'ascending' - obsdataout: - engine: - type: H5File - obsfile: '{{ DATA }}/diags/diag_gnssro_{{ current_cycle | to_YMDH }}.nc' - simulated variables: [bendingAngle] - - obs operator: - name: GnssroBndNBAM - obs options: - use_compress: 1 - sr_steps: 2 - vertlayer: full - super_ref_qc: NBAM - - obs filters: - # Apply gross check using pccf - # Step 0-A: Create Diagnostic Flags - # Diagnostic flag for pccf - - filter: Create Diagnostic Flags - filter variables: - - name: bendingAngle - flags: - - name: pccfCheckReject - initial value: false - force reinitialization: true - - # Diagnostic flag for qfro - - filter: Create Diagnostic Flags - filter variables: - - name: bendingAngle - flags: - - name: qfroCheckReject - initial value: false - force reinitialization: true - - # Step 0-B: pccf Check - good: 0.1-100, reject: 0 - - filter: Bounds Check - filter variables: - - name: bendingAngle - where: - - variable: - name: MetaData/satelliteIdentifier - is_in: 265-269,750-755,44,786,820,825 - test variables: - - name: MetaData/pccf - minvalue: 0.1 - maxvalue: 100.1 - actions: - - name: set - flag: pccfCheckReject - - name: reject - - # Step 0-B: qfro Check - good: 0, reject: 1 - - filter: Bounds Check - - filter: RejectList - filter variables: - - name: bendingAngle - where: - - variable: - name: MetaData/satelliteIdentifier - is_in: 3-5,421,440,821 - test variables: - - name: MetaData/qualityFlags - minvalue: -0.1 - maxvalue: 0.1 - actions: - - name: set - flag: qfroCheckReject - - name: reject - - #1. gpstop - - filter: Domain Check - filter variables: - - name: bendingAngle - where: - - variable: - name: MetaData/impactHeightRO - minvalue: 0 - maxvalue: 55000.1 - action: - name: reject - #2. commgpstop - - filter: Bounds Check - filter variables: - - name: bendingAngle - where: - - variable: - name: MetaData/satelliteIdentifier - is_in: 265,266,267,268,269 - test variables: - - name: MetaData/impactHeightRO - maxvalue: 45000.1 - action: - name: reject - #3. metop below 8 km - - filter: Bounds Check - filter variables: - - name: bendingAngle - where: - - variable: - name: MetaData/satelliteIdentifier - is_in: 3-5 - test variables: - - name: MetaData/impactHeightRO - minvalue: 8000.1 - action: - name: reject - #4. assign obs error - - filter: ROobserror - filter variables: - - name: bendingAngle - errmodel: NBAM - #5. RONBAM cut off check - - filter: Background Check RONBAM - filter variables: - - name: bendingAngle - #6. Obs error inflate - - filter: Background Check RONBAM - filter variables: - - name: bendingAngle - action: - name: RONBAMErrInflate - #7. Background check - #- filter: Background Check - # filter variables: - # - name: bendingAngle - # threshold: 10 - # action: - # name: reject - diff --git a/parm/atm/obs/config/iasi_metop-a.yaml.j2 b/parm/atm/obs/config/iasi_metop-a.yaml.j2 deleted file mode 100644 index 1634ccc6e..000000000 --- a/parm/atm/obs/config/iasi_metop-a.yaml.j2 +++ /dev/null @@ -1,756 +0,0 @@ -- obs space: - name: iasi_metop-a - obsdatain: - engine: - type: H5File - obsfile: '{{ DATA }}/obs/{{ OPREFIX }}mtiasi_metop-a.tm00.nc' - obsdataout: - engine: - type: H5File - obsfile: '{{ DATA }}/diags/diag_iasi_metop-a_{{ current_cycle | to_YMDH }}.nc' - io pool: - max pool size: 1 - observed variables: [radiance] - simulated variables: [brightnessTemperature] - derived variables: [brightnessTemperature] - channels: &iasi_metop-a_channels 16, 29, 32, 35, 38, 41, 44, 47, 49, 50, 51, 53, - 55, 56, 57, 59, 61, 62, 63, 66, 68, 70, 72, 74, 76, 78, 79, 81, 82, 83, - 84, 85, 86, 87, 89, 92, 93, 95, 97, 99, 101, 103, 104, 106, 109, 110, - 111, 113, 116, 119, 122, 125, 128, 131, 133, 135, 138, 141, 144, 146, - 148, 150, 151, 154, 157, 159, 160, 161, 163, 167, 170, 173, 176, 179, - 180, 185, 187, 191, 193, 197, 199, 200, 202, 203, 205, 207, 210, 212, - 213, 214, 217, 218, 219, 222, 224, 225, 226, 228, 230, 231, 232, 236, - 237, 239, 243, 246, 249, 252, 254, 259, 260, 262, 265, 267, 269, 275, - 279, 282, 285, 294, 296, 299, 300, 303, 306, 309, 313, 320, 323, 326, - 327, 329, 332, 335, 345, 347, 350, 354, 356, 360, 363, 366, 371, 372, - 373, 375, 377, 379, 381, 383, 386, 389, 398, 401, 404, 405, 407, 408, - 410, 411, 414, 416, 418, 423, 426, 428, 432, 433, 434, 439, 442, 445, - 450, 457, 459, 472, 477, 483, 509, 515, 546, 552, 559, 566, 571, 573, - 578, 584, 594, 625, 646, 662, 668, 705, 739, 756, 797, 867, 906, 921, - 1027, 1046, 1090, 1098, 1121, 1133, 1173, 1191, 1194, 1222, 1271, 1283, - 1338, 1409, 1414, 1420, 1424, 1427, 1430, 1434, 1440, 1442, 1445, 1450, - 1454, 1460, 1463, 1469, 1474, 1479, 1483, 1487, 1494, 1496, 1502, 1505, - 1509, 1510, 1513, 1518, 1521, 1526, 1529, 1532, 1536, 1537, 1541, 1545, - 1548, 1553, 1560, 1568, 1574, 1579, 1583, 1585, 1587, 1606, 1626, 1639, - 1643, 1652, 1658, 1659, 1666, 1671, 1675, 1681, 1694, 1697, 1710, 1786, - 1791, 1805, 1839, 1884, 1913, 1946, 1947, 1991, 2019, 2094, 2119, 2213, - 2239, 2271, 2289, 2321, 2333, 2346, 2349, 2352, 2359, 2367, 2374, 2398, - 2426, 2562, 2701, 2741, 2745, 2760, 2819, 2889, 2907, 2910, 2919, 2921, - 2939, 2944, 2945, 2948, 2951, 2958, 2971, 2977, 2985, 2988, 2990, 2991, - 2993, 3002, 3008, 3014, 3027, 3029, 3030, 3036, 3047, 3049, 3052, 3053, - 3055, 3058, 3064, 3069, 3087, 3093, 3098, 3105, 3107, 3110, 3116, 3127, - 3129, 3136, 3146, 3151, 3160, 3165, 3168, 3175, 3178, 3189, 3207, 3228, - 3244, 3248, 3252, 3256, 3263, 3281, 3295, 3303, 3309, 3312, 3322, 3326, - 3354, 3366, 3375, 3378, 3411, 3416, 3432, 3438, 3440, 3442, 3444, 3446, - 3448, 3450, 3452, 3454, 3458, 3467, 3476, 3484, 3491, 3497, 3499, 3504, - 3506, 3509, 3518, 3527, 3555, 3575, 3577, 3580, 3582, 3586, 3589, 3599, - 3610, 3626, 3638, 3646, 3653, 3658, 3661, 3673, 3689, 3700, 3710, 3726, - 3763, 3814, 3841, 3888, 4032, 4059, 4068, 4082, 4095, 4160, 4234, 4257, - 4411, 4498, 4520, 4552, 4567, 4608, 4646, 4698, 4808, 4849, 4920, 4939, - 4947, 4967, 4991, 4996, 5015, 5028, 5056, 5128, 5130, 5144, 5170, 5178, - 5183, 5188, 5191, 5368, 5371, 5379, 5381, 5383, 5397, 5399, 5401, 5403, - 5405, 5446, 5455, 5472, 5480, 5483, 5485, 5492, 5497, 5502, 5507, 5509, - 5517, 5528, 5558, 5697, 5714, 5749, 5766, 5785, 5798, 5799, 5801, 5817, - 5833, 5834, 5836, 5849, 5851, 5852, 5865, 5869, 5881, 5884, 5897, 5900, - 5916, 5932, 5948, 5963, 5968, 5978, 5988, 5992, 5994, 5997, 6003, 6008, - 6023, 6026, 6039, 6053, 6056, 6067, 6071, 6082, 6085, 6098, 6112, 6126, - 6135, 6140, 6149, 6154, 6158, 6161, 6168, 6174, 6182, 6187, 6205, 6209, - 6213, 6317, 6339, 6342, 6366, 6381, 6391, 6489, 6962, 6966, 6970, 6975, - 6977, 6982, 6985, 6987, 6989, 6991, 6993, 6995, 6997, 6999, 7000, 7004, - 7008, 7013, 7016, 7021, 7024, 7027, 7029, 7032, 7038, 7043, 7046, 7049, - 7069, 7072, 7076, 7081, 7084, 7089, 7099, 7209, 7222, 7231, 7235, 7247, - 7267, 7269, 7284, 7389, 7419, 7423, 7424, 7426, 7428, 7431, 7436, 7444, - 7475, 7549, 7584, 7665, 7666, 7831, 7836, 7853, 7865, 7885, 7888, 7912, - 7950, 7972, 7980, 7995, 8007, 8015, 8055, 8078 - - obs operator: - name: CRTM - Absorbers: [H2O,O3,CO2] - obs options: - Sensor_ID: iasi_metop-a - EndianType: little_endian - CoefficientPath: '{{ DATA }}/crtm/' - linear obs operator: - Absorbers: [H2O,O3] - - obs bias: - input file: '{{ DATA }}/obs/{{ GPREFIX }}iasi_metop-a.satbias.nc' - output file: '{{ DATA }}/bc/{{ APREFIX }}iasi_metop-a.satbias.nc' - variational bc: - predictors: - - name: constant - - name: lapse_rate - order: 2 - tlapse: &iasi_metop-a_tlapse '{{ DATA }}/obs/{{ GPREFIX }}iasi_metop-a.tlapse.txt' - - name: lapse_rate - tlapse: *iasi_metop-a_tlapse - - name: emissivity - - name: scan_angle - order: 4 - - name: scan_angle - order: 3 - - name: scan_angle - order: 2 - - name: scan_angle - covariance: - minimal required obs number: 20 - variance range: [1.0e-6, 10.0] - step size: 1.0e-4 - largest analysis variance: 10000.0 - prior: - input file: '{{ DATA }}/obs/{{ GPREFIX }}iasi_metop-a.satbias_cov.nc' - inflation: - ratio: 1.1 - ratio for small dataset: 2.0 - output file: '{{ DATA }}/bc/{{ APREFIX }}iasi_metop-a.satbias_cov.nc' - - obs pre filters: - # Step 0-A: Create Diagnostic Flags - #- filter: Create Diagnostic Flags - # filter variables: - # - name: brightnessTemperature - # channels: *iasi_metop-a_channels - # flags: - # - name: ScanEdgeRemoval - # initial value: false - # force reinitialization: false - # - name: Thinning - # initial value: false - # force reinitialization: false - # - name: ShortwaveIRCheck - # initial value: false - # force reinitialization: false - # - name: ObsValueRangeCheck - # initial value: false - # force reinitialization: false - # - name: CloudDetection - # initial value: false - # force reinitialization: false - # - name: NSSTCheck - # initial value: false - # force reinitialization: false - # - name: GrossCheck - # initial value: false - # force reinitialization: false - # - name: InterChannelConsistency - # initial value: false - # force reinitialization: false - # - name: UseFlagCheck - # initial value: false - # force reinitialization: false - - # Step 0-B: Create Derived Variables - # Assign channel wavenumbers in m-1 - - filter: Variable Assignment - assignments: - - name: MetaData/sensorCentralWavenumber - type: float - channels: *iasi_metop-a_channels - function: - name: ObsFunction/LinearCombination - options: - variables: - - name: ObsValue/radiance - channels: *iasi_metop-a_channels - coefs: [25.0] - intercept: 64475.0 - use channel numbers: true - - # Transform radiance to brightness temperature - - filter: Variable Transforms - Transform: SatBrightnessTempFromRad - transform from: - name: ObsValue/radiance - channels: *iasi_metop-a_channels - spectral variable: - name: MetaData/sensorCentralWavenumber - channels: *iasi_metop-a_channels - radiance units: wavenumber - planck1: 1.191042953e-16 - planck2: 1.4387774e-2 - - # Step 0-C: Assign Observation Error - obs prior filters: - - filter: Perform Action - filter variables: - - name: brightnessTemperature - channels: *iasi_metop-a_channels - action: - name: assign error - error parameter vector: &iasi_metop-a_oberr [ 1.38, 0.81, 0.75, 0.79, 0.72, 0.74, 0.68, 0.72, 0.65, 0.65, - 0.65, 0.69, 0.64, 0.64, 0.65, 0.67, 0.62, 0.61, 0.62, 0.64, 0.59, 0.76, - 1.22, 0.78, 0.64, 0.62, 0.61, 0.69, 0.65, 0.59, 0.61, 0.59, 0.68, 0.62, - 0.68, 4.38, 3.05, 2.31, 1.56, 1.33, 1.58, 0.93, 1.67, 0.72, 0.57, 0.58, - 0.55, 0.68, 0.59, 0.68, 0.59, 0.65, 0.58, 0.62, 0.64, 0.58, 0.64, 0.55, - 0.64, 0.5, 0.82, 0.59, 0.62, 0.51, 0.64, 0.52, 0.51, 0.51, 0.76, 0.52, - 0.57, 0.55, 0.69, 0.58, 0.65, 0.61, 0.59, 0.64, 0.76, 0.72, 1.05, 0.75, - 0.51, 0.65, 1.3, 0.69, 0.93, 1.49, 1.12, 0.68, 0.66, 0.67, 0.59, 0.59, - 0.69, 0.67, 0.64, 0.62, 0.72, 0.69, 0.66, 0.79, 0.78, 0.74, 0.88, 0.77, - 0.88, 0.86, 1, 0.87, 0.85, 0.88, 0.84, 0.84, 0.84, 0.8, 0.8, 0.87, - 0.98, 0.52, 0.65, 0.69, 0.61, 0.6, 0.67, 0.79, 0.62, 0.66, 0.7, 0.65, - 0.62, 0.61, 0.62, 0.53, 0.6, 0.68, 0.95, 0.63, 0.97, 0.65, 0.98, 0.58, - 0.73, 0.65, 0.85, 0.99, 0.76, 0.85, 0.97, 0.77, 0.62, 0.63, 1.21, 1.41, - 1.55, 1.78, 1.35, 1.14, 1.69, 1.79, 1.46, 1.63, 1.94, 2.01, 1.24, 1.76, - 1.26, 1.47, 1.9, 1.66, 2.13, 1.49, 1.52, 1.55, 1.96, 2.31, 2.33, 2.32, - 2.31, 2.33, 2.23, 2.33, 1.84, 2.29, 2.28, 2.28, 2.28, 2.26, 2.26, 2.26, - 2.27, 2.24, 2.23, 2.24, 2.26, 2.28, 2.28, 2.3, 2.15, 2.31, 2.37, 2.27, - 2.29, 2.29, 2.23, 2.28, 2.32, 2.32, 2.31, 2.32, 2.32, 2.31, 2.31, 2.28, - 2.29, 2.28, 2.26, 2.29, 2.27, 2.26, 2.25, 2.27, 2.24, 2.21, 2.24, 2.17, - 2.18, 2.17, 2.21, 1.99, 2.16, 2.2, 2.13, 2.12, 2.13, 2.1, 2.12, 2.11, - 2.09, 2.09, 2.08, 2.09, 2.04, 2.04, 2.1, 2.01, 2.05, 2.03, 2.06, 1.98, - 1.95, 1.94, 1.91, 1.7, 1.76, 1.77, 1.83, 2.04, 1.91, 1.99, 1.99, 2.07, - 2.02, 2.04, 2.1, 2.06, 2.18, 2.21, 2.24, 2.23, 2.23, 1.98, 2.2, 2.18, - 2.18, 2.21, 2.23, 2.24, 2.24, 2.25, 1.8, 2.24, 1.73, 1.73, 2.27, 1.67, - 2.21, 1.72, 2.23, 2.23, 2.23, 2.24, 2.23, 2.12, 2.17, 1.74, 2.02, 1.88, - 1.67, 1.73, 1.83, 1.82, 1.73, 1.83, 2.19, 1.84, 1.89, 1.6, 1.71, 1.86, - 1.85, 1.84, 1.87, 1.91, 1.52, 1.95, 1.87, 1.89, 1.91, 1.91, 1.93, 1.9, - 1.91, 1.9, 1.89, 1.89, 1.91, 1.9, 1.91, 1.91, 1.91, 1.93, 1.94, 1.91, - 1.92, 1.77, 1.91, 1.95, 1.19, 1.96, 1.98, 1.94, 1.55, 1.91, 1.92, 1.92, - 1.97, 1.93, 1.99, 1.86, 1.12, 1.93, 1.92, 1.95, 1.85, 1.84, 1.91, 1.12, - 1.82, 1.82, 1.95, 1.24, 1.94, 1.96, 1.21, 1.83, 1.96, 1.36, 1.96, 1.82, - 1.92, 1.68, 1.93, 1.23, 1.96, 1.93, 1.86, 1.41, 1.16, 1.6, 1.25, 1.2, - 1.65, 1.66, 1.87, 1.94, 1.96, 1.91, 1.25, 1.93, 1.91, 1.7, 0.99, 1.81, - 1.92, 1.95, 1.5, 1.47, 1.15, 1.58, 1.18, 1.82, 1.13, 1.83, 1.91, 1.26, - 1.27, 1.91, 1.45, 1.6, 1.29, 1.94, 1.94, 1.23, 1.95, 1.21, 1.94, 1.86, - 1.9, 1.33, 1.75, 2.02, 1.98, 2.03, 1.83, 1.5, 2.04, 2.02, 1.9, 2, 2.02, - 1.95, 1.93, 1.95, 1.95, 1.99, 2, 1.94, 1.96, 1.86, 1.92, 1.88, 1.86, - 1.84, 1.87, 1.77, 1.89, 1.89, 1.88, 1.94, 1.82, 1.79, 1.86, 2.06, 2.33, - 1.88, 1.86, 1.81, 1.8, 1.8, 1.86, 1.9, 2, 2.06, 2.1, 2.2, 2, 2.16, - 1.98, 1.8, 1.8, 1.85, 1.75, 2.04, 2.19, 2.14, 2.19, 1.86, 2.1, 2.11, - 2.18, 2.03, 2.28, 2.19, 2.26, 2.26, 2.21, 2.21, 2.26, 2.33, 2.27, 2.21, - 2.12, 2.23, 2.26, 2.25, 1.88, 2.26, 2.24, 2.36, 2.29, 2.35, 2.3, 2.27, - 2.08, 2.05, 2.27, 2.28, 2.27, 2.28, 1.97, 2.25, 2.25, 2.25, 2.31, 2.28, - 2.27, 2.13, 2.24, 2.28, 2.28, 2.41, 2.34, 9.32, 2.28, 2.38, 2.27, 2.27, - 2.39, 2.11, 2.09, 2.1, 2.06, 2.12, 2.08, 2, 1.93, 2.02, 2.55, 1.54, - 1.64, 1.51, 1.55, 2.82, 2.92, 2.55, 2.37, 1.85, 1.6, 1.72, 1.74, 1.79, - 1.9, 1.94, 2, 2.04, 2.08, 2.12, 2.13, 2.16, 2.18, 2.18, 2.2, 2.2, 2.41, - 2.39, 2.38, 2.4, 2.42, 2.41, 2.43, 2.45, 2.43, 2.45, 2.43, 2.4, 2.44, - 2.4, 2.42, 2.43, 2.45, 2.45, 2.45, 2.46, 2.45, 2.45, 2.43, 2.51, 2.48, - 2.48, 2.53, 2.46, 2.49, 2.5, 2.5, 2.5, 2.52, 2.52, 2.54, 2.5, 2.48, - 2.5, 2.55, 2.5, 2.48, 2.5, 2.5, 2.52, 2.52, 2.48, 2.5, 2.5, 2.52, 2.46, - 2.53, 9 ] - - obs post filters: - # Step 1: Remove Observations from the Edge of the Scan - - filter: Domain Check - filter variables: - - name: brightnessTemperature - channels: *iasi_metop-a_channels - where: - - variable: - name: MetaData/sensorScanPosition - is_in: 5-56 - action: - name: reject - # actions: - # - name: set - # flag: ScanEdgeRemoval - # - name: reject - - # Step 2: Data Thinning - - filter: Gaussian Thinning - filter variables: - - name: brightnessTemperature - channels: *iasi_metop-a_channels - horizontal_mesh: 145 - use_reduced_horizontal_grid: true - distance_norm: geodesic - priority_variable: MetaData/fractionOfClearPixelsInFOV - # round_horizontal_bin_count_to_nearest: true - # partition_longitude_bins_using_mesh: true - action: - name: reject - # actions: - # - name: set - # flag: Thinning - # - name: reject - - # Step 3: Wavenumber Check - - filter: Perform Action - filter variables: - - name: brightnessTemperature - channels: 7024, 7027, 7029, 7032, 7038, 7043, 7046, 7049, 7069, 7072, - 7076, 7081, 7084, 7089, 7099, 7209, 7222, 7231, 7235, 7247, - 7267, 7269, 7284, 7389, 7419, 7423, 7424, 7426, 7428, 7431, - 7436, 7444, 7475, 7549, 7584, 7665, 7666, 7831, 7836, 7853, - 7865, 7885, 7888, 7912, 7950, 7972, 7980, 7995, 8007, 8015, - 8055, 8078 - where: - - variable: - name: MetaData/solarZenithAngle - maxvalue: 88.9999 - - variable: - name: water_area_fraction@GeoVaLs - minvalue: 1.0e-12 - action: - name: reject - # actions: - # - name: set - # flag: ShortwaveIRCheck - # - name: reject - - # Step 4: Observation Error Inflation based on Wavenumber - - filter: Perform Action - filter variables: - - name: brightnessTemperature - channels: *iasi_metop-a_channels - action: - name: inflate error - inflation variable: - name: ObsErrorFactorWavenumIR@ObsFunction - channels: *iasi_metop-a_channels - options: - channels: *iasi_metop-a_channels - - # Step 5: Observation Range Sanity Check - - filter: Bounds Check - filter variables: - - name: brightnessTemperature - channels: *iasi_metop-a_channels - minvalue: 50.00001 - maxvalue: 449.99999 - # maxvalue: 100.00000 - action: - name: reject - # actions: - # - name: set - # flag: ObsValueRangeCheck - # - name: reject - - # Step 6: Topography Check - - filter: Perform Action - filter variables: - - name: brightnessTemperature - channels: *iasi_metop-a_channels - action: - name: inflate error - inflation variable: - name: ObsFunction/ObsErrorFactorTopoRad - channels: *iasi_metop-a_channels - options: - channels: *iasi_metop-a_channels - sensor: iasi_metop-a - - # Step 7: Transmittance Top Check - - filter: Perform Action - filter variables: - - name: brightnessTemperature - channels: *iasi_metop-a_channels - action: - name: inflate error - inflation variable: - name: ObsFunction/ObsErrorFactorTransmitTopRad - channels: *iasi_metop-a_channels - options: - channels: *iasi_metop-a_channels - - # Step 8: Cloud Detection Check - - filter: Bounds Check - filter variables: - - name: brightnessTemperature - channels: *iasi_metop-a_channels - test variables: - - name: ObsFunction/CloudDetectMinResidualIR - channels: *iasi_metop-a_channels - options: - channels: *iasi_metop-a_channels - use_flag: [ 1, -1, -1, -1, 1, -1, -1, -1, 1, -1, - 1, -1, 1, -1, 1, 1, 1, -1, 1, 1, - -1, 1, 1, 1, -1, -1, 1, 1, -1, 1, - -1, 1, -1, 1, -1, -1, -1, -1, -1, -1, - -1, -1, 1, 1, 1, -1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, -1, 1, 1, 1, 1, -1, 1, 1, 1, - 1, 1, 1, -1, 1, 1, 1, -1, 1, -1, - 1, -1, -1, -1, 1, 1, 1, 1, -1, 1, - 1, -1, 1, 1, 1, -1, 1, -1, 1, -1, - 1, 1, -1, 1, 1, 1, 1, 1, 1, -1, - 1, 1, 1, 1, -1, 1, -1, 1, -1, 1, - 1, 1, -1, 1, 1, -1, -1, -1, 1, -1, - 1, 1, -1, 1, 1, 1, 1, 1, 1, 1, - -1, 1, 1, -1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, -1, 1, -1, 1, -1, - 1, 1, -1, -1, 1, 1, 1, -1, 1, 1, - -1, 1, -1, 1, -1, -1, -1, -1, -1, 1, - 1, 1, 1, 1, 1, 1, -1, -1, -1, -1, - 1, 1, 1, -1, -1, 1, -1, 1, 1, 1, - 1, 1, -1, -1, 1, 1, -1, 1, 1, -1, - 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 1, - -1, -1, -1, -1, -1, -1, 1, -1, 1, -1, - 1, -1, -1, -1, 1, -1, -1, -1, -1, -1, - -1, -1, 1, 1, -1, 1, 1, -1, 1, 1, - 1, 1, 1, -1, -1, 1, -1, -1, -1, -1, - -1, 1, -1, 1, -1, 1, -1, -1, -1, 1, - 1, 1, 1, 1, 1, 1, -1, 1, -1, -1, - -1, -1, -1, -1, -1, 1, -1, -1, 1, -1, - -1, -1, -1, 1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 1, -1, -1, -1, -1, -1, -1, - 1, 1, -1, -1, -1, -1, -1, -1, -1, 1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 1, - -1, 1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 1, -1, - -1, 1, -1, -1, -1, -1, -1, -1, 1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1] - use_flag_clddet: [ 1, -1, -1, -1, 1, -1, -1, -1, 1, -1, - 1, -1, 1, -1, 1, 1, 1, -1, 1, 1, - -1, 1, 1, 1, -1, -1, 1, 1, -1, 1, - -1, 1, -1, 1, -1, -1, -1, -1, -1, -1, - -1, -1, 1, 1, 1, -1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, -1, 1, 1, 1, 1, -1, 1, 1, 1, - 1, 1, 1, -1, 1, 1, 1, -1, 1, -1, - 1, -1, -1, -1, 1, 1, 1, 1, -1, 1, - 1, -1, 1, 1, 1, -1, 1, -1, 1, -1, - 1, 1, -1, 1, 1, 1, 1, 1, 1, -1, - 1, 1, 1, 1, -1, 1, -1, 1, -1, 1, - 1, 1, -1, 1, 1, -1, -1, -1, 1, -1, - 1, 1, -1, 1, 1, 1, 1, 1, 1, 1, - -1, 1, 1, -1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, -1, 1, -1, 1, -1, - 1, 1, -1, -1, 1, 1, 1, -1, 1, 1, - -1, 1, -1, 1, -1, -1, -1, -1, -1, 1, - 1, 1, 1, 1, 1, 1, -1, -1, -1, -1, - 1, 1, 1, -1, -1, 1, -1, 1, 1, 1, - 1, 1, -1, -1, 1, 1, -1, 1, 1, -1, - 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 1, -1, 1, -1, 1, -1, -1, -1, 1, - 1, 1, 1, 1, 1, 1, -1, 1, -1, -1, - -1, -1, -1, -1, -1, 1, -1, -1, 1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1] - obserr_dtempf: [0.50,2.00,4.00,2.00,4.00] - error parameter vector: *iasi_metop-a_oberr - maxvalue: 1.0e-12 - action: - name: reject - # actions: - # - name: set - # flag: CloudDetection - # - name: reject - - # Step 9: NSST Retrieval Check - - filter: Bounds Check - filter variables: - - name: brightnessTemperature - channels: *iasi_metop-a_channels - test variables: - - name: NearSSTRetCheckIR@ObsFunction - channels: *iasi_metop-a_channels - options: - channels: *iasi_metop-a_channels - use_flag: [ 1, -1, -1, -1, 1, -1, -1, -1, 1, -1, - 1, -1, 1, -1, 1, 1, 1, -1, 1, 1, - -1, 1, 1, 1, -1, -1, 1, 1, -1, 1, - -1, 1, -1, 1, -1, -1, -1, -1, -1, -1, - -1, -1, 1, 1, 1, -1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, -1, 1, 1, 1, 1, -1, 1, 1, 1, - 1, 1, 1, -1, 1, 1, 1, -1, 1, -1, - 1, -1, -1, -1, 1, 1, 1, 1, -1, 1, - 1, -1, 1, 1, 1, -1, 1, -1, 1, -1, - 1, 1, -1, 1, 1, 1, 1, 1, 1, -1, - 1, 1, 1, 1, -1, 1, -1, 1, -1, 1, - 1, 1, -1, 1, 1, -1, -1, -1, 1, -1, - 1, 1, -1, 1, 1, 1, 1, 1, 1, 1, - -1, 1, 1, -1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, -1, 1, -1, 1, -1, - 1, 1, -1, -1, 1, 1, 1, -1, 1, 1, - -1, 1, -1, 1, -1, -1, -1, -1, -1, 1, - 1, 1, 1, 1, 1, 1, -1, -1, -1, -1, - 1, 1, 1, -1, -1, 1, -1, 1, 1, 1, - 1, 1, -1, -1, 1, 1, -1, 1, 1, -1, - 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 1, - -1, -1, -1, -1, -1, -1, 1, -1, 1, -1, - 1, -1, -1, -1, 1, -1, -1, -1, -1, -1, - -1, -1, 1, 1, -1, 1, 1, -1, 1, 1, - 1, 1, 1, -1, -1, 1, -1, -1, -1, -1, - -1, 1, -1, 1, -1, 1, -1, -1, -1, 1, - 1, 1, 1, 1, 1, 1, -1, 1, -1, -1, - -1, -1, -1, -1, -1, 1, -1, -1, 1, -1, - -1, -1, -1, 1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 1, -1, -1, -1, -1, -1, -1, - 1, 1, -1, -1, -1, -1, -1, -1, -1, 1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 1, - -1, 1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 1, -1, - -1, 1, -1, -1, -1, -1, -1, -1, 1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1] - obserr_demisf: [0.01,0.02,0.03,0.02,0.03] - obserr_dtempf: [0.50,2.00,4.00,2.00,4.00] - maxvalue: 1.0e-12 - action: - name: reject - # actions: - # - name: set - # flag: NSSTCheck - # - name: reject - - # Step 10: Surface Jacobians Check - - filter: Perform Action - filter variables: - - name: brightnessTemperature - channels: *iasi_metop-a_channels - action: - name: inflate error - inflation variable: - name: ObsFunction/ObsErrorFactorSurfJacobianRad - channels: *iasi_metop-a_channels - options: - channels: *iasi_metop-a_channels - obserr_demisf: [0.01, 0.02, 0.03, 0.02, 0.03] - obserr_dtempf: [0.50, 2.00, 4.00, 2.00, 4.00] - sensor: iasi_metop-a - - # Step 11: Gross check - - filter: Background Check - filter variables: - - name: brightnessTemperature - channels: *iasi_metop-a_channels - function absolute threshold: - - name: ObsFunction/ObsErrorBoundIR - channels: *iasi_metop-a_channels - options: - channels: *iasi_metop-a_channels - obserr_bound_latitude: - name: ObsFunction/ObsErrorFactorLatRad - options: - latitude_parameters: [25.0, 0.5, 0.04, 1.0] - obserr_bound_transmittop: - name: ObsFunction/ObsErrorFactorTransmitTopRad - channels: *iasi_metop-a_channels - options: - channels: *iasi_metop-a_channels - obserr_bound_max: [ 3.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, - 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, - 2.0, 2.0, 4.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, - 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 4.0, 4.0, - 3.5, 2.5, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, - 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, - 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, - 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, - 3.5, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 3.0, 2.0, 2.0, - 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, - 2.0, 2.0, 2.0, 2.0, 2.5, 2.0, 2.5, 2.5, 3.0, 2.5, - 2.5, 2.5, 2.5, 3.5, 2.5, 2.5, 3.0, 3.5, 3.0, 4.0, - 4.0, 4.0, 4.0, 4.0, 4.0, 4.5, 4.5, 4.5, 4.5, 4.5, - 4.0, 4.5, 4.0, 4.0, 4.5, 2.5, 3.0, 2.5, 3.0, 2.5, - 3.0, 2.0, 2.5, 2.5, 3.0, 3.0, 2.5, 3.0, 3.0, 3.0, - 2.5, 2.5, 4.0, 4.5, 4.5, 5.0, 4.0, 4.0, 5.0, 5.0, - 5.0, 5.0, 5.5, 5.5, 4.0, 5.0, 4.0, 4.5, 5.5, 5.5, - 6.0, 4.5, 4.5, 4.0, 5.0, 5.0, 6.0, 6.0, 6.0, 6.0, - 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, - 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, - 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, - 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, - 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, - 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, - 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, - 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, - 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, - 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, - 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, - 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, - 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, - 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, - 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, - 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, - 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, - 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, - 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, - 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 5.5, 4.5, 6.0, - 5.0, 5.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 5.0, 6.0, - 6.0, 6.0, 4.0, 6.0, 6.0, 6.0, 6.0, 4.5, 6.0, 6.0, - 4.5, 6.0, 6.0, 6.0, 6.0, 6.0, 5.0, 6.0, 6.0, 6.0, - 5.0, 6.0, 6.0, 5.0, 6.0, 5.0, 6.0, 6.0, 6.0, 5.0, - 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, - 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, - 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, - 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, - 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, - 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, - 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, - 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, - 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, - 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, - 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, - 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, - 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, - 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, - 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, - 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, - 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, - 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, - 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, - 6.0, 6.0, 6.0, 6.0, 6.0, 6.0] - error parameter vector: *iasi_metop-a_oberr - action: - name: reject - # actions: - # - name: set - # flag: GrossCheck - # - name: reject - - # Step 12: Useflag Check - - filter: Bounds Check - filter variables: - - name: brightnessTemperature - channels: *iasi_metop-a_channels - test variables: - - name: ObsFunction/ChannelUseflagCheckRad - channels: *iasi_metop-a_channels - options: - channels: *iasi_metop-a_channels - use_flag: [ 1, -1, -1, -1, 1, -1, -1, -1, 1, -1, - 1, -1, 1, -1, 1, 1, 1, -1, 1, 1, - -1, 1, 1, 1, -1, -1, 1, 1, -1, 1, - -1, 1, -1, 1, -1, -1, -1, -1, -1, -1, - -1, -1, 1, 1, 1, -1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, -1, 1, 1, 1, 1, -1, 1, 1, 1, - 1, 1, 1, -1, 1, 1, 1, -1, 1, -1, - 1, -1, -1, -1, 1, 1, 1, 1, -1, 1, - 1, -1, 1, 1, 1, -1, 1, -1, 1, -1, - 1, 1, -1, 1, 1, 1, 1, 1, 1, -1, - 1, 1, 1, 1, -1, 1, -1, 1, -1, 1, - 1, 1, -1, 1, 1, -1, -1, -1, 1, -1, - 1, 1, -1, 1, 1, 1, 1, 1, 1, 1, - -1, 1, 1, -1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, -1, 1, -1, 1, -1, - 1, 1, -1, -1, 1, 1, 1, -1, 1, 1, - -1, 1, -1, 1, -1, -1, -1, -1, -1, 1, - 1, 1, 1, 1, 1, 1, -1, -1, -1, -1, - 1, 1, 1, -1, -1, 1, -1, 1, 1, 1, - 1, 1, -1, -1, 1, 1, -1, 1, 1, -1, - 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 1, - -1, -1, -1, -1, -1, -1, 1, -1, 1, -1, - 1, -1, -1, -1, 1, -1, -1, -1, -1, -1, - -1, -1, 1, 1, -1, 1, 1, -1, 1, 1, - 1, 1, 1, -1, -1, 1, -1, -1, -1, -1, - -1, 1, -1, 1, -1, 1, -1, -1, -1, 1, - 1, 1, 1, 1, 1, 1, -1, 1, -1, -1, - -1, -1, -1, -1, -1, 1, -1, -1, 1, -1, - -1, -1, -1, 1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 1, -1, -1, -1, -1, -1, -1, - 1, 1, -1, -1, -1, -1, -1, -1, -1, 1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 1, - -1, 1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 1, -1, - -1, 1, -1, -1, -1, -1, -1, -1, 1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1] - minvalue: 1.0e-12 - action: - name: reject - # actions: - # - name: set - # flag: UseFlagCheck - # - name: reject diff --git a/parm/atm/obs/config/iasi_metop-b.yaml.j2 b/parm/atm/obs/config/iasi_metop-b.yaml.j2 deleted file mode 100644 index 95dbb7e85..000000000 --- a/parm/atm/obs/config/iasi_metop-b.yaml.j2 +++ /dev/null @@ -1,756 +0,0 @@ -- obs space: - name: iasi_metop-b - obsdatain: - engine: - type: H5File - obsfile: '{{ DATA }}/obs/{{ OPREFIX }}mtiasi_metop-b.tm00.nc' - obsdataout: - engine: - type: H5File - obsfile: '{{ DATA }}/diags/diag_iasi_metop-b_{{ current_cycle | to_YMDH }}.nc' - io pool: - max pool size: 1 - observed variables: [radiance] - simulated variables: [brightnessTemperature] - derived variables: [brightnessTemperature] - channels: &iasi_metop-b_channels 16, 29, 32, 35, 38, 41, 44, 47, 49, 50, 51, 53, - 55, 56, 57, 59, 61, 62, 63, 66, 68, 70, 72, 74, 76, 78, 79, 81, 82, 83, - 84, 85, 86, 87, 89, 92, 93, 95, 97, 99, 101, 103, 104, 106, 109, 110, - 111, 113, 116, 119, 122, 125, 128, 131, 133, 135, 138, 141, 144, 146, - 148, 150, 151, 154, 157, 159, 160, 161, 163, 167, 170, 173, 176, 179, - 180, 185, 187, 191, 193, 197, 199, 200, 202, 203, 205, 207, 210, 212, - 213, 214, 217, 218, 219, 222, 224, 225, 226, 228, 230, 231, 232, 236, - 237, 239, 243, 246, 249, 252, 254, 259, 260, 262, 265, 267, 269, 275, - 279, 282, 285, 294, 296, 299, 300, 303, 306, 309, 313, 320, 323, 326, - 327, 329, 332, 335, 345, 347, 350, 354, 356, 360, 363, 366, 371, 372, - 373, 375, 377, 379, 381, 383, 386, 389, 398, 401, 404, 405, 407, 408, - 410, 411, 414, 416, 418, 423, 426, 428, 432, 433, 434, 439, 442, 445, - 450, 457, 459, 472, 477, 483, 509, 515, 546, 552, 559, 566, 571, 573, - 578, 584, 594, 625, 646, 662, 668, 705, 739, 756, 797, 867, 906, 921, - 1027, 1046, 1090, 1098, 1121, 1133, 1173, 1191, 1194, 1222, 1271, 1283, - 1338, 1409, 1414, 1420, 1424, 1427, 1430, 1434, 1440, 1442, 1445, 1450, - 1454, 1460, 1463, 1469, 1474, 1479, 1483, 1487, 1494, 1496, 1502, 1505, - 1509, 1510, 1513, 1518, 1521, 1526, 1529, 1532, 1536, 1537, 1541, 1545, - 1548, 1553, 1560, 1568, 1574, 1579, 1583, 1585, 1587, 1606, 1626, 1639, - 1643, 1652, 1658, 1659, 1666, 1671, 1675, 1681, 1694, 1697, 1710, 1786, - 1791, 1805, 1839, 1884, 1913, 1946, 1947, 1991, 2019, 2094, 2119, 2213, - 2239, 2271, 2289, 2321, 2333, 2346, 2349, 2352, 2359, 2367, 2374, 2398, - 2426, 2562, 2701, 2741, 2745, 2760, 2819, 2889, 2907, 2910, 2919, 2921, - 2939, 2944, 2945, 2948, 2951, 2958, 2971, 2977, 2985, 2988, 2990, 2991, - 2993, 3002, 3008, 3014, 3027, 3029, 3030, 3036, 3047, 3049, 3052, 3053, - 3055, 3058, 3064, 3069, 3087, 3093, 3098, 3105, 3107, 3110, 3116, 3127, - 3129, 3136, 3146, 3151, 3160, 3165, 3168, 3175, 3178, 3189, 3207, 3228, - 3244, 3248, 3252, 3256, 3263, 3281, 3295, 3303, 3309, 3312, 3322, 3326, - 3354, 3366, 3375, 3378, 3411, 3416, 3432, 3438, 3440, 3442, 3444, 3446, - 3448, 3450, 3452, 3454, 3458, 3467, 3476, 3484, 3491, 3497, 3499, 3504, - 3506, 3509, 3518, 3527, 3555, 3575, 3577, 3580, 3582, 3586, 3589, 3599, - 3610, 3626, 3638, 3646, 3653, 3658, 3661, 3673, 3689, 3700, 3710, 3726, - 3763, 3814, 3841, 3888, 4032, 4059, 4068, 4082, 4095, 4160, 4234, 4257, - 4411, 4498, 4520, 4552, 4567, 4608, 4646, 4698, 4808, 4849, 4920, 4939, - 4947, 4967, 4991, 4996, 5015, 5028, 5056, 5128, 5130, 5144, 5170, 5178, - 5183, 5188, 5191, 5368, 5371, 5379, 5381, 5383, 5397, 5399, 5401, 5403, - 5405, 5446, 5455, 5472, 5480, 5483, 5485, 5492, 5497, 5502, 5507, 5509, - 5517, 5528, 5558, 5697, 5714, 5749, 5766, 5785, 5798, 5799, 5801, 5817, - 5833, 5834, 5836, 5849, 5851, 5852, 5865, 5869, 5881, 5884, 5897, 5900, - 5916, 5932, 5948, 5963, 5968, 5978, 5988, 5992, 5994, 5997, 6003, 6008, - 6023, 6026, 6039, 6053, 6056, 6067, 6071, 6082, 6085, 6098, 6112, 6126, - 6135, 6140, 6149, 6154, 6158, 6161, 6168, 6174, 6182, 6187, 6205, 6209, - 6213, 6317, 6339, 6342, 6366, 6381, 6391, 6489, 6962, 6966, 6970, 6975, - 6977, 6982, 6985, 6987, 6989, 6991, 6993, 6995, 6997, 6999, 7000, 7004, - 7008, 7013, 7016, 7021, 7024, 7027, 7029, 7032, 7038, 7043, 7046, 7049, - 7069, 7072, 7076, 7081, 7084, 7089, 7099, 7209, 7222, 7231, 7235, 7247, - 7267, 7269, 7284, 7389, 7419, 7423, 7424, 7426, 7428, 7431, 7436, 7444, - 7475, 7549, 7584, 7665, 7666, 7831, 7836, 7853, 7865, 7885, 7888, 7912, - 7950, 7972, 7980, 7995, 8007, 8015, 8055, 8078 - - obs operator: - name: CRTM - Absorbers: [H2O,O3,CO2] - obs options: - Sensor_ID: iasi_metop-b - EndianType: little_endian - CoefficientPath: '{{ DATA }}/crtm/' - linear obs operator: - Absorbers: [H2O,O3] - - obs bias: - input file: '{{ DATA }}/obs/{{ GPREFIX }}iasi_metop-b.satbias.nc' - output file: '{{ DATA }}/bc/{{ APREFIX }}iasi_metop-b.satbias.nc' - variational bc: - predictors: - - name: constant - - name: lapse_rate - order: 2 - tlapse: &iasi_metop-b_tlapse '{{ DATA }}/obs/{{ GPREFIX }}iasi_metop-b.tlapse.txt' - - name: lapse_rate - tlapse: *iasi_metop-b_tlapse - - name: emissivity - - name: scan_angle - order: 4 - - name: scan_angle - order: 3 - - name: scan_angle - order: 2 - - name: scan_angle - covariance: - minimal required obs number: 20 - variance range: [1.0e-6, 10.0] - step size: 1.0e-4 - largest analysis variance: 10000.0 - prior: - input file: '{{ DATA }}/obs/{{ GPREFIX }}iasi_metop-b.satbias_cov.nc' - inflation: - ratio: 1.1 - ratio for small dataset: 2.0 - output file: '{{ DATA }}/bc/{{ APREFIX }}iasi_metop-b.satbias_cov.nc' - - obs pre filters: - # Step 0-A: Create Diagnostic Flags - #- filter: Create Diagnostic Flags - # filter variables: - # - name: brightnessTemperature - # channels: *iasi_metop-b_channels - # flags: - # - name: ScanEdgeRemoval - # initial value: false - # force reinitialization: false - # - name: Thinning - # initial value: false - # force reinitialization: false - # - name: ShortwaveIRCheck - # initial value: false - # force reinitialization: false - # - name: ObsValueRangeCheck - # initial value: false - # force reinitialization: false - # - name: CloudDetection - # initial value: false - # force reinitialization: false - # - name: NSSTCheck - # initial value: false - # force reinitialization: false - # - name: GrossCheck - # initial value: false - # force reinitialization: false - # - name: InterChannelConsistency - # initial value: false - # force reinitialization: false - # - name: UseFlagCheck - # initial value: false - # force reinitialization: false - - # Step 0-B: Create Derived Variables - # Assign channel wavenumbers in m-1 - - filter: Variable Assignment - assignments: - - name: MetaData/sensorCentralWavenumber - type: float - channels: *iasi_metop-b_channels - function: - name: ObsFunction/LinearCombination - options: - variables: - - name: ObsValue/radiance - channels: *iasi_metop-b_channels - coefs: [25.0] - intercept: 64475.0 - use channel numbers: true - - # Transform radiance to brightness temperature - - filter: Variable Transforms - Transform: SatBrightnessTempFromRad - transform from: - name: ObsValue/radiance - channels: *iasi_metop-b_channels - spectral variable: - name: MetaData/sensorCentralWavenumber - channels: *iasi_metop-b_channels - radiance units: wavenumber - planck1: 1.191042953e-16 - planck2: 1.4387774e-2 - - # Step 0-C: Assign Observation Error - obs prior filters: - - filter: Perform Action - filter variables: - - name: brightnessTemperature - channels: *iasi_metop-b_channels - action: - name: assign error - error parameter vector: &iasi_metop-b_oberr [ 1.38, 0.81, 0.75, 0.79, 0.72, 0.74, 0.68, 0.72, 0.65, 0.65, - 0.65, 0.69, 0.64, 0.64, 0.65, 0.67, 0.62, 0.61, 0.62, 0.64, 0.59, 0.76, - 1.22, 0.78, 0.64, 0.62, 0.61, 0.69, 0.65, 0.59, 0.61, 0.59, 0.68, 0.62, - 0.68, 4.38, 3.05, 2.31, 1.56, 1.33, 1.58, 0.93, 1.67, 0.72, 0.57, 0.58, - 0.55, 0.68, 0.59, 0.68, 0.59, 0.65, 0.58, 0.62, 0.64, 0.58, 0.64, 0.55, - 0.64, 0.5, 0.82, 0.59, 0.62, 0.51, 0.64, 0.52, 0.51, 0.51, 0.76, 0.52, - 0.57, 0.55, 0.69, 0.58, 0.65, 0.61, 0.59, 0.64, 0.76, 0.72, 1.05, 0.75, - 0.51, 0.65, 1.3, 0.69, 0.93, 1.49, 1.12, 0.68, 0.66, 0.67, 0.59, 0.59, - 0.69, 0.67, 0.64, 0.62, 0.72, 0.69, 0.66, 0.79, 0.78, 0.74, 0.88, 0.77, - 0.88, 0.86, 1, 0.87, 0.85, 0.88, 0.84, 0.84, 0.84, 0.8, 0.8, 0.87, - 0.98, 0.52, 0.65, 0.69, 0.61, 0.6, 0.67, 0.79, 0.62, 0.66, 0.7, 0.65, - 0.62, 0.61, 0.62, 0.53, 0.6, 0.68, 0.95, 0.63, 0.97, 0.65, 0.98, 0.58, - 0.73, 0.65, 0.85, 0.99, 0.76, 0.85, 0.97, 0.77, 0.62, 0.63, 1.21, 1.41, - 1.55, 1.78, 1.35, 1.14, 1.69, 1.79, 1.46, 1.63, 1.94, 2.01, 1.24, 1.76, - 1.26, 1.47, 1.9, 1.66, 2.13, 1.49, 1.52, 1.55, 1.96, 2.31, 2.33, 2.32, - 2.31, 2.33, 2.23, 2.33, 1.84, 2.29, 2.28, 2.28, 2.28, 2.26, 2.26, 2.26, - 2.27, 2.24, 2.23, 2.24, 2.26, 2.28, 2.28, 2.3, 2.15, 2.31, 2.37, 2.27, - 2.29, 2.29, 2.23, 2.28, 2.32, 2.32, 2.31, 2.32, 2.32, 2.31, 2.31, 2.28, - 2.29, 2.28, 2.26, 2.29, 2.27, 2.26, 2.25, 2.27, 2.24, 2.21, 2.24, 2.17, - 2.18, 2.17, 2.21, 1.99, 2.16, 2.2, 2.13, 2.12, 2.13, 2.1, 2.12, 2.11, - 2.09, 2.09, 2.08, 2.09, 2.04, 2.04, 2.1, 2.01, 2.05, 2.03, 2.06, 1.98, - 1.95, 1.94, 1.91, 1.7, 1.76, 1.77, 1.83, 2.04, 1.91, 1.99, 1.99, 2.07, - 2.02, 2.04, 2.1, 2.06, 2.18, 2.21, 2.24, 2.23, 2.23, 1.98, 2.2, 2.18, - 2.18, 2.21, 2.23, 2.24, 2.24, 2.25, 1.8, 2.24, 1.73, 1.73, 2.27, 1.67, - 2.21, 1.72, 2.23, 2.23, 2.23, 2.24, 2.23, 2.12, 2.17, 1.74, 2.02, 1.88, - 1.67, 1.73, 1.83, 1.82, 1.73, 1.83, 2.19, 1.84, 1.89, 1.6, 1.71, 1.86, - 1.85, 1.84, 1.87, 1.91, 1.52, 1.95, 1.87, 1.89, 1.91, 1.91, 1.93, 1.9, - 1.91, 1.9, 1.89, 1.89, 1.91, 1.9, 1.91, 1.91, 1.91, 1.93, 1.94, 1.91, - 1.92, 1.77, 1.91, 1.95, 1.19, 1.96, 1.98, 1.94, 1.55, 1.91, 1.92, 1.92, - 1.97, 1.93, 1.99, 1.86, 1.12, 1.93, 1.92, 1.95, 1.85, 1.84, 1.91, 1.12, - 1.82, 1.82, 1.95, 1.24, 1.94, 1.96, 1.21, 1.83, 1.96, 1.36, 1.96, 1.82, - 1.92, 1.68, 1.93, 1.23, 1.96, 1.93, 1.86, 1.41, 1.16, 1.6, 1.25, 1.2, - 1.65, 1.66, 1.87, 1.94, 1.96, 1.91, 1.25, 1.93, 1.91, 1.7, 0.99, 1.81, - 1.92, 1.95, 1.5, 1.47, 1.15, 1.58, 1.18, 1.82, 1.13, 1.83, 1.91, 1.26, - 1.27, 1.91, 1.45, 1.6, 1.29, 1.94, 1.94, 1.23, 1.95, 1.21, 1.94, 1.86, - 1.9, 1.33, 1.75, 2.02, 1.98, 2.03, 1.83, 1.5, 2.04, 2.02, 1.9, 2, 2.02, - 1.95, 1.93, 1.95, 1.95, 1.99, 2, 1.94, 1.96, 1.86, 1.92, 1.88, 1.86, - 1.84, 1.87, 1.77, 1.89, 1.89, 1.88, 1.94, 1.82, 1.79, 1.86, 2.06, 2.33, - 1.88, 1.86, 1.81, 1.8, 1.8, 1.86, 1.9, 2, 2.06, 2.1, 2.2, 2, 2.16, - 1.98, 1.8, 1.8, 1.85, 1.75, 2.04, 2.19, 2.14, 2.19, 1.86, 2.1, 2.11, - 2.18, 2.03, 2.28, 2.19, 2.26, 2.26, 2.21, 2.21, 2.26, 2.33, 2.27, 2.21, - 2.12, 2.23, 2.26, 2.25, 1.88, 2.26, 2.24, 2.36, 2.29, 2.35, 2.3, 2.27, - 2.08, 2.05, 2.27, 2.28, 2.27, 2.28, 1.97, 2.25, 2.25, 2.25, 2.31, 2.28, - 2.27, 2.13, 2.24, 2.28, 2.28, 2.41, 2.34, 9.32, 2.28, 2.38, 2.27, 2.27, - 2.39, 2.11, 2.09, 2.1, 2.06, 2.12, 2.08, 2, 1.93, 2.02, 2.55, 1.54, - 1.64, 1.51, 1.55, 2.82, 2.92, 2.55, 2.37, 1.85, 1.6, 1.72, 1.74, 1.79, - 1.9, 1.94, 2, 2.04, 2.08, 2.12, 2.13, 2.16, 2.18, 2.18, 2.2, 2.2, 2.41, - 2.39, 2.38, 2.4, 2.42, 2.41, 2.43, 2.45, 2.43, 2.45, 2.43, 2.4, 2.44, - 2.4, 2.42, 2.43, 2.45, 2.45, 2.45, 2.46, 2.45, 2.45, 2.43, 2.51, 2.48, - 2.48, 2.53, 2.46, 2.49, 2.5, 2.5, 2.5, 2.52, 2.52, 2.54, 2.5, 2.48, - 2.5, 2.55, 2.5, 2.48, 2.5, 2.5, 2.52, 2.52, 2.48, 2.5, 2.5, 2.52, 2.46, - 2.53, 9 ] - - obs post filters: - # Step 1: Remove Observations from the Edge of the Scan - - filter: Domain Check - filter variables: - - name: brightnessTemperature - channels: *iasi_metop-b_channels - where: - - variable: - name: MetaData/sensorScanPosition - is_in: 5-56 - action: - name: reject - # actions: - # - name: set - # flag: ScanEdgeRemoval - # - name: reject - - # Step 2: Data Thinning - - filter: Gaussian Thinning - filter variables: - - name: brightnessTemperature - channels: *iasi_metop-b_channels - horizontal_mesh: 145 - use_reduced_horizontal_grid: true - distance_norm: geodesic - priority_variable: MetaData/fractionOfClearPixelsInFOV - # round_horizontal_bin_count_to_nearest: true - # partition_longitude_bins_using_mesh: true - action: - name: reject - # actions: - # - name: set - # flag: Thinning - # - name: reject - - # Step 3: Wavenumber Check - - filter: Perform Action - filter variables: - - name: brightnessTemperature - channels: 7024, 7027, 7029, 7032, 7038, 7043, 7046, 7049, 7069, 7072, - 7076, 7081, 7084, 7089, 7099, 7209, 7222, 7231, 7235, 7247, - 7267, 7269, 7284, 7389, 7419, 7423, 7424, 7426, 7428, 7431, - 7436, 7444, 7475, 7549, 7584, 7665, 7666, 7831, 7836, 7853, - 7865, 7885, 7888, 7912, 7950, 7972, 7980, 7995, 8007, 8015, - 8055, 8078 - where: - - variable: - name: MetaData/solarZenithAngle - maxvalue: 88.9999 - - variable: - name: water_area_fraction@GeoVaLs - minvalue: 1.0e-12 - action: - name: reject - # actions: - # - name: set - # flag: ShortwaveIRCheck - # - name: reject - - # Step 4: Observation Error Inflation based on Wavenumber - - filter: Perform Action - filter variables: - - name: brightnessTemperature - channels: *iasi_metop-b_channels - action: - name: inflate error - inflation variable: - name: ObsErrorFactorWavenumIR@ObsFunction - channels: *iasi_metop-b_channels - options: - channels: *iasi_metop-b_channels - - # Step 5: Observation Range Sanity Check - - filter: Bounds Check - filter variables: - - name: brightnessTemperature - channels: *iasi_metop-b_channels - minvalue: 50.00001 - maxvalue: 449.99999 - # maxvalue: 100.00000 - action: - name: reject - # actions: - # - name: set - # flag: ObsValueRangeCheck - # - name: reject - - # Step 6: Topography Check - - filter: Perform Action - filter variables: - - name: brightnessTemperature - channels: *iasi_metop-b_channels - action: - name: inflate error - inflation variable: - name: ObsFunction/ObsErrorFactorTopoRad - channels: *iasi_metop-b_channels - options: - channels: *iasi_metop-b_channels - sensor: iasi_metop-b - - # Step 7: Transmittance Top Check - - filter: Perform Action - filter variables: - - name: brightnessTemperature - channels: *iasi_metop-b_channels - action: - name: inflate error - inflation variable: - name: ObsFunction/ObsErrorFactorTransmitTopRad - channels: *iasi_metop-b_channels - options: - channels: *iasi_metop-b_channels - - # Step 8: Cloud Detection Check - - filter: Bounds Check - filter variables: - - name: brightnessTemperature - channels: *iasi_metop-b_channels - test variables: - - name: ObsFunction/CloudDetectMinResidualIR - channels: *iasi_metop-b_channels - options: - channels: *iasi_metop-b_channels - use_flag: [ 1, -1, -1, -1, 1, -1, -1, -1, 1, -1, - 1, -1, 1, -1, 1, 1, 1, -1, 1, 1, - -1, 1, 1, 1, -1, -1, 1, 1, -1, 1, - -1, 1, -1, 1, -1, -1, -1, -1, -1, -1, - -1, -1, 1, 1, 1, -1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, -1, 1, 1, 1, 1, -1, 1, 1, 1, - 1, 1, 1, -1, 1, 1, 1, -1, 1, -1, - 1, -1, -1, -1, 1, 1, 1, 1, -1, 1, - 1, -1, 1, 1, 1, -1, 1, -1, 1, -1, - 1, 1, -1, 1, 1, 1, 1, 1, 1, -1, - 1, 1, 1, 1, -1, 1, -1, 1, -1, 1, - 1, 1, -1, 1, 1, -1, -1, -1, 1, -1, - 1, 1, -1, 1, 1, 1, 1, 1, 1, 1, - -1, 1, 1, -1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, -1, 1, -1, 1, -1, - 1, 1, -1, -1, 1, 1, 1, -1, 1, 1, - -1, 1, -1, 1, -1, -1, -1, -1, -1, 1, - 1, 1, 1, 1, 1, 1, -1, -1, -1, -1, - 1, 1, 1, -1, -1, 1, -1, 1, 1, 1, - 1, 1, -1, -1, 1, 1, -1, 1, 1, -1, - 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 1, - -1, -1, -1, -1, -1, -1, 1, -1, 1, -1, - 1, -1, -1, -1, 1, -1, -1, -1, -1, -1, - -1, -1, 1, 1, -1, 1, 1, -1, 1, 1, - 1, 1, 1, -1, -1, 1, -1, -1, -1, -1, - -1, 1, -1, 1, -1, 1, -1, -1, -1, 1, - 1, 1, 1, 1, 1, 1, -1, 1, -1, -1, - -1, -1, -1, -1, -1, 1, -1, -1, 1, -1, - -1, -1, -1, 1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 1, -1, -1, -1, -1, -1, -1, - 1, 1, -1, -1, -1, -1, -1, -1, -1, 1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 1, - -1, 1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 1, -1, - -1, 1, -1, -1, -1, -1, -1, -1, 1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1] - use_flag_clddet: [ 1, -1, -1, -1, 1, -1, -1, -1, 1, -1, - 1, -1, 1, -1, 1, 1, 1, -1, 1, 1, - -1, 1, 1, 1, -1, -1, 1, 1, -1, 1, - -1, 1, -1, 1, -1, -1, -1, -1, -1, -1, - -1, -1, 1, 1, 1, -1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, -1, 1, 1, 1, 1, -1, 1, 1, 1, - 1, 1, 1, -1, 1, 1, 1, -1, 1, -1, - 1, -1, -1, -1, 1, 1, 1, 1, -1, 1, - 1, -1, 1, 1, 1, -1, 1, -1, 1, -1, - 1, 1, -1, 1, 1, 1, 1, 1, 1, -1, - 1, 1, 1, 1, -1, 1, -1, 1, -1, 1, - 1, 1, -1, 1, 1, -1, -1, -1, 1, -1, - 1, 1, -1, 1, 1, 1, 1, 1, 1, 1, - -1, 1, 1, -1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, -1, 1, -1, 1, -1, - 1, 1, -1, -1, 1, 1, 1, -1, 1, 1, - -1, 1, -1, 1, -1, -1, -1, -1, -1, 1, - 1, 1, 1, 1, 1, 1, -1, -1, -1, -1, - 1, 1, 1, -1, -1, 1, -1, 1, 1, 1, - 1, 1, -1, -1, 1, 1, -1, 1, 1, -1, - 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 1, -1, 1, -1, 1, -1, -1, -1, 1, - 1, 1, 1, 1, 1, 1, -1, 1, -1, -1, - -1, -1, -1, -1, -1, 1, -1, -1, 1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1] - obserr_dtempf: [0.50,2.00,4.00,2.00,4.00] - error parameter vector: *iasi_metop-b_oberr - maxvalue: 1.0e-12 - action: - name: reject - # actions: - # - name: set - # flag: CloudDetection - # - name: reject - - # Step 9: NSST Retrieval Check - - filter: Bounds Check - filter variables: - - name: brightnessTemperature - channels: *iasi_metop-b_channels - test variables: - - name: NearSSTRetCheckIR@ObsFunction - channels: *iasi_metop-b_channels - options: - channels: *iasi_metop-b_channels - use_flag: [ 1, -1, -1, -1, 1, -1, -1, -1, 1, -1, - 1, -1, 1, -1, 1, 1, 1, -1, 1, 1, - -1, 1, 1, 1, -1, -1, 1, 1, -1, 1, - -1, 1, -1, 1, -1, -1, -1, -1, -1, -1, - -1, -1, 1, 1, 1, -1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, -1, 1, 1, 1, 1, -1, 1, 1, 1, - 1, 1, 1, -1, 1, 1, 1, -1, 1, -1, - 1, -1, -1, -1, 1, 1, 1, 1, -1, 1, - 1, -1, 1, 1, 1, -1, 1, -1, 1, -1, - 1, 1, -1, 1, 1, 1, 1, 1, 1, -1, - 1, 1, 1, 1, -1, 1, -1, 1, -1, 1, - 1, 1, -1, 1, 1, -1, -1, -1, 1, -1, - 1, 1, -1, 1, 1, 1, 1, 1, 1, 1, - -1, 1, 1, -1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, -1, 1, -1, 1, -1, - 1, 1, -1, -1, 1, 1, 1, -1, 1, 1, - -1, 1, -1, 1, -1, -1, -1, -1, -1, 1, - 1, 1, 1, 1, 1, 1, -1, -1, -1, -1, - 1, 1, 1, -1, -1, 1, -1, 1, 1, 1, - 1, 1, -1, -1, 1, 1, -1, 1, 1, -1, - 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 1, - -1, -1, -1, -1, -1, -1, 1, -1, 1, -1, - 1, -1, -1, -1, 1, -1, -1, -1, -1, -1, - -1, -1, 1, 1, -1, 1, 1, -1, 1, 1, - 1, 1, 1, -1, -1, 1, -1, -1, -1, -1, - -1, 1, -1, 1, -1, 1, -1, -1, -1, 1, - 1, 1, 1, 1, 1, 1, -1, 1, -1, -1, - -1, -1, -1, -1, -1, 1, -1, -1, 1, -1, - -1, -1, -1, 1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 1, -1, -1, -1, -1, -1, -1, - 1, 1, -1, -1, -1, -1, -1, -1, -1, 1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 1, - -1, 1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 1, -1, - -1, 1, -1, -1, -1, -1, -1, -1, 1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1] - obserr_demisf: [0.01,0.02,0.03,0.02,0.03] - obserr_dtempf: [0.50,2.00,4.00,2.00,4.00] - maxvalue: 1.0e-12 - action: - name: reject - # actions: - # - name: set - # flag: NSSTCheck - # - name: reject - - # Step 10: Surface Jacobians Check - - filter: Perform Action - filter variables: - - name: brightnessTemperature - channels: *iasi_metop-b_channels - action: - name: inflate error - inflation variable: - name: ObsFunction/ObsErrorFactorSurfJacobianRad - channels: *iasi_metop-b_channels - options: - channels: *iasi_metop-b_channels - obserr_demisf: [0.01, 0.02, 0.03, 0.02, 0.03] - obserr_dtempf: [0.50, 2.00, 4.00, 2.00, 4.00] - sensor: iasi_metop-b - - # Step 11: Gross check - - filter: Background Check - filter variables: - - name: brightnessTemperature - channels: *iasi_metop-b_channels - function absolute threshold: - - name: ObsFunction/ObsErrorBoundIR - channels: *iasi_metop-b_channels - options: - channels: *iasi_metop-b_channels - obserr_bound_latitude: - name: ObsFunction/ObsErrorFactorLatRad - options: - latitude_parameters: [25.0, 0.5, 0.04, 1.0] - obserr_bound_transmittop: - name: ObsFunction/ObsErrorFactorTransmitTopRad - channels: *iasi_metop-b_channels - options: - channels: *iasi_metop-b_channels - obserr_bound_max: [ 3.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, - 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, - 2.0, 2.0, 4.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, - 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 4.0, 4.0, - 3.5, 2.5, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, - 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, - 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, - 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, - 3.5, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 3.0, 2.0, 2.0, - 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, - 2.0, 2.0, 2.0, 2.0, 2.5, 2.0, 2.5, 2.5, 3.0, 2.5, - 2.5, 2.5, 2.5, 3.5, 2.5, 2.5, 3.0, 3.5, 3.0, 4.0, - 4.0, 4.0, 4.0, 4.0, 4.0, 4.5, 4.5, 4.5, 4.5, 4.5, - 4.0, 4.5, 4.0, 4.0, 4.5, 2.5, 3.0, 2.5, 3.0, 2.5, - 3.0, 2.0, 2.5, 2.5, 3.0, 3.0, 2.5, 3.0, 3.0, 3.0, - 2.5, 2.5, 4.0, 4.5, 4.5, 5.0, 4.0, 4.0, 5.0, 5.0, - 5.0, 5.0, 5.5, 5.5, 4.0, 5.0, 4.0, 4.5, 5.5, 5.5, - 6.0, 4.5, 4.5, 4.0, 5.0, 5.0, 6.0, 6.0, 6.0, 6.0, - 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, - 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, - 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, - 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, - 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, - 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, - 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, - 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, - 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, - 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, - 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, - 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, - 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, - 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, - 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, - 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, - 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, - 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, - 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, - 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 5.5, 4.5, 6.0, - 5.0, 5.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 5.0, 6.0, - 6.0, 6.0, 4.0, 6.0, 6.0, 6.0, 6.0, 4.5, 6.0, 6.0, - 4.5, 6.0, 6.0, 6.0, 6.0, 6.0, 5.0, 6.0, 6.0, 6.0, - 5.0, 6.0, 6.0, 5.0, 6.0, 5.0, 6.0, 6.0, 6.0, 5.0, - 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, - 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, - 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, - 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, - 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, - 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, - 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, - 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, - 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, - 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, - 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, - 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, - 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, - 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, - 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, - 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, - 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, - 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, - 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, - 6.0, 6.0, 6.0, 6.0, 6.0, 6.0] - error parameter vector: *iasi_metop-b_oberr - action: - name: reject - # actions: - # - name: set - # flag: GrossCheck - # - name: reject - - # Step 12: Useflag Check - - filter: Bounds Check - filter variables: - - name: brightnessTemperature - channels: *iasi_metop-b_channels - test variables: - - name: ObsFunction/ChannelUseflagCheckRad - channels: *iasi_metop-b_channels - options: - channels: *iasi_metop-b_channels - use_flag: [ 1, -1, -1, -1, 1, -1, -1, -1, 1, -1, - 1, -1, 1, -1, 1, 1, 1, -1, 1, 1, - -1, 1, 1, 1, -1, -1, 1, 1, -1, 1, - -1, 1, -1, 1, -1, -1, -1, -1, -1, -1, - -1, -1, 1, 1, 1, -1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, -1, 1, 1, 1, 1, -1, 1, 1, 1, - 1, 1, 1, -1, 1, 1, 1, -1, 1, -1, - 1, -1, -1, -1, 1, 1, 1, 1, -1, 1, - 1, -1, 1, 1, 1, -1, 1, -1, 1, -1, - 1, 1, -1, 1, 1, 1, 1, 1, 1, -1, - 1, 1, 1, 1, -1, 1, -1, 1, -1, 1, - 1, 1, -1, 1, 1, -1, -1, -1, 1, -1, - 1, 1, -1, 1, 1, 1, 1, 1, 1, 1, - -1, 1, 1, -1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, -1, 1, -1, 1, -1, - 1, 1, -1, -1, 1, 1, 1, -1, 1, 1, - -1, 1, -1, 1, -1, -1, -1, -1, -1, 1, - 1, 1, 1, 1, 1, 1, -1, -1, -1, -1, - 1, 1, 1, -1, -1, 1, -1, 1, 1, 1, - 1, 1, -1, -1, 1, 1, -1, 1, 1, -1, - 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 1, - -1, -1, -1, -1, -1, -1, 1, -1, 1, -1, - 1, -1, -1, -1, 1, -1, -1, -1, -1, -1, - -1, -1, 1, 1, -1, 1, 1, -1, 1, 1, - 1, 1, 1, -1, -1, 1, -1, -1, -1, -1, - -1, 1, -1, 1, -1, 1, -1, -1, -1, 1, - 1, 1, 1, 1, 1, 1, -1, 1, -1, -1, - -1, -1, -1, -1, -1, 1, -1, -1, 1, -1, - -1, -1, -1, 1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 1, -1, -1, -1, -1, -1, -1, - 1, 1, -1, -1, -1, -1, -1, -1, -1, 1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 1, - -1, 1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 1, -1, - -1, 1, -1, -1, -1, -1, -1, -1, 1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1] - minvalue: 1.0e-12 - action: - name: reject - # actions: - # - name: set - # flag: UseFlagCheck - # - name: reject diff --git a/parm/atm/obs/config/lgetkf_amsua_n19.yaml.j2 b/parm/atm/obs/config/lgetkf_amsua_n19.yaml.j2 deleted file mode 100644 index 9fda72ea9..000000000 --- a/parm/atm/obs/config/lgetkf_amsua_n19.yaml.j2 +++ /dev/null @@ -1,79 +0,0 @@ -- obs space: - name: amsua_n19 - distribution: - name: Halo - halo size: 1250e3 - obsdatain: - engine: - type: H5File - obsfile: './obs/{{ OPREFIX }}amsua_n19.{{ current_cycle | to_YMDH }}.nc' - obsdataout: - engine: - type: H5File - obsfile: './diags/diag_amsua_n19_{{ current_cycle | to_YMDH }}.nc' - io pool: - max pool size: 1 - simulated variables: [brightnessTemperature] - channels: &amsua_n19_channels 4-6,9-14 - obs operator: - name: CRTM - Absorbers: [H2O,O3] - Clouds: [Water, Ice] - Cloud_Fraction: 1.0 - obs options: - Sensor_ID: amsua_n19 - EndianType: little_endian - CoefficientPath: ./crtm/ - obs error: - covariance model: diagonal - obs bias: - input file: '{{ DATA }}/obs/{{ GPREFIX }}amsua_n19.satbias.nc' - output file: '{{ DATA }}/bc/{{ APREFIX }}amsua_n19.satbias.nc' - variational bc: - predictors: - - name: constant - - name: lapse_rate - order: 2 - tlapse: &amsua_n19_tlapse '{{ DATA }}/obs/{{ GPREFIX }}amsua_n19.tlapse.txt' - - name: lapse_rate - tlapse: *amsua_n19_tlapse - - name: emissivity - - name: scan_angle - order: 4 - - name: scan_angle - order: 3 - - name: scan_angle - order: 2 - - name: scan_angle - covariance: - minimal required obs number: 20 - variance range: [1.0e-6, 10.0] - step size: 1.0e-4 - largest analysis variance: 10000.0 - prior: - input file: '{{ DATA }}/obs/{{ GPREFIX }}amsua_n19.satbias_cov.nc' - inflation: - ratio: 1.1 - ratio for small dataset: 2.0 - output file: '{{ DATA }}/bc/{{ APREFIX }}amsua_n19.satbias_cov.nc' - obs filters: - - filter: Bounds Check - filter variables: - - name: brightnessTemperature - channels: *amsua_n19_channels - minvalue: 100.0 - maxvalue: 500.0 - action: - name: reject - # Gross check - - filter: Background Check - filter variables: - - name: brightnessTemperature - channels: *amsua_n19_channels - threshold: 3.0 - action: - name: reject - obs localizations: - - localization method: Horizontal Gaspari-Cohn - lengthscale: 1250e3 - max nobs: 10000 diff --git a/parm/atm/obs/config/lgetkf_conv_ps.yaml.j2 b/parm/atm/obs/config/lgetkf_conv_ps.yaml.j2 deleted file mode 100644 index d10a46901..000000000 --- a/parm/atm/obs/config/lgetkf_conv_ps.yaml.j2 +++ /dev/null @@ -1,357 +0,0 @@ -- obs space: - name: surface_ps - distribution: - name: Halo - halo size: 1250e3 - obsdatain: - engine: - type: H5File - obsfile: '{{ DATA }}/obs/{{ OPREFIX }}conventional_ps.prepbufr.nc' - obsdataout: - engine: - type: H5File - obsfile: '{{ DATA }}/diags/diag_conventional_ps_prepbufr_{{ current_cycle | to_YMDH }}.nc' - io pool: - max pool size: 1 - simulated variables: [stationPressure] - - obs operator: - name: SfcPCorrected - variables: - - name: stationPressure - da_psfc_scheme: GSI - station_altitude: height - geovar_sfc_geomz: surface_altitude - geovar_geomz: geopotential_height - - linear obs operator: - name: Identity - variables: - - name: stationPressure - - obs prior filters: - # Initial Error Assignments for SFC Observations - - filter: Perform Action - filter variables: - - name: stationPressure - where: - - variable: ObsType/stationPressure - is_in: [181] - action: - name: assign error - error function: - name: ObsFunction/ObsErrorModelStepwiseLinear - options: - round_to_the_nearest_integer: true - xvar: - name: ObsValue/stationPressure - xvals: [80000, 75000, 70000, 65000, 60000, 55000 ] - errors: [110, 120, 120, 120, 120, 1.0e+11] - - - filter: Perform Action - filter variables: - - name: stationPressure - where: - - variable: ObsType/stationPressure - is_in: [187] - action: - name: assign error - error function: - name: ObsFunction/ObsErrorModelStepwiseLinear - options: - round_to_the_nearest_integer: true - xvar: - 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 - - filter: Perform Action - filter variables: - - name: stationPressure - where: - - variable: ObsType/stationPressure - is_in: [180] - action: - name: assign error - error function: - name: ObsFunction/ObsErrorModelStepwiseLinear - options: - round_to_the_nearest_integer: true - xvar: - name: ObsValue/stationPressure - xvals: [60000, 55000 ] - errors: [ 130, 1.0e+11] - - - filter: Perform Action - filter variables: - - name: stationPressure - where: - - variable: ObsType/stationPressure - is_in: [183] - action: - name: assign error - error parameter: 1.0e+11 - - # Initial Error Assignments for Radiosonde - - filter: Perform Action - filter variables: - - name: stationPressure - where: - - variable: ObsType/stationPressure - is_in: [120] - action: - name: assign error - error function: - name: ObsFunction/ObsErrorModelStepwiseLinear - options: - round_to_the_nearest_integer: true - xvar: - name: ObsValue/stationPressure - xvals: [80000, 75000, 70000, 65000, 60000, 55000 ] - errors: [ 110, 120, 120, 120, 120, 1.0e+11] - - # Create PreQC group variable (pqm in GSI read_prepbufr) - - filter: Variable Assignment - assignments: - - name: InputObsError/stationPressure - type: float - source variable: ObsErrorData/stationPressure - - # Set observation quality-realted variables - # Create PreQC group variable (pqm in GSI read_prepbufr) - - filter: Variable Assignment - assignments: - - name: PreQC/stationPressure - type: int - source variable: QualityMarker/stationPressure - - # Create PreUseFlag group variable (usage in GSI read_prepbufr) - # Initialize - - filter: Variable Assignment - assignments: - - name: PreUseFlag/stationPressure - type: int - source variable: PreQC/stationPressure - - - filter: Variable Assignment - where: - - variable: - name: PreUseFlag/stationPressure - is_in: 1-15 - assignments: - - name: PreUseFlag/stationPressure - value: 0 - # Re-assignment - - filter: Variable Assignment - where: - - variable: - name: ObsType/stationPressure - is_in: 183 - assignments: - - name: PreUseFlag/stationPressure - value: 100 - - - filter: Variable Assignment - where: - - variable: - name: ObsValue/stationPressure - is_defined: - - variable: - name: ObsValue/stationPressure - maxvalue: 50000.00 - where operator: and - assignments: - - name: PreUseFlag/stationPressure - value: 100 - - - filter: Variable Assignment - where: - - variable: - name: PreQC/stationPressure - is_in: 9, 12, 15 - assignments: - - name: PreUseFlag/stationPressure - value: 100 - - - filter: Variable Assignment - where: - - variable: - name: PreQC/stationPressure - is_in: 4-15 - assignments: - - name: PreUseFlag/stationPressure - value: 101 - - ## Observation range sanity check - #- filter: Bounds Check - # filter variables: - # - name: stationPressure - # minvalue: 37499.0 - # maxvalue: 106999.0 - # action: - # name: reject - - ## Reject all ObsType 183 - #- filter: RejectList - # where: - # - variable: - # name: ObsType/stationPressure - # is_in: 183 - - ## Reject surface pressure below 500 hPa - #- filter: Bounds Check - # filter variables: - # - name: stationPressure - # minvalue: 50000.00 - # action: - # name: reject - - #- filter: RejectList - # where: - # - variable: - # name: PreQC/stationPressure - # is_in: 4-15 - - # Inflate obs error based on obs type - - filter: Perform Action - filter variables: - - name: stationPressure - where: - - variable: PreQC/stationPressure - is_in: 3, 7 - action: - name: inflate error - inflation factor: 1.2 - - obs post filters: - # Calculate obs error inflation factors for duplicated observations at the same location - - filter: Variable Assignment - assignments: - - name: ObsErrorFactorDuplicateCheck/stationPressure - type: float - function: - name: ObsFunction/ObsErrorFactorDuplicateCheck - options: - use_air_pressure: false - variable: stationPressure - - # Reduce effective observation error based on obs type and subtype - # In this case: reduce effective obs error for buoy - - filter: Perform Action - filter variables: - - name: stationPressure - where: - - variable: - name: ObsType/stationPressure - is_in: 180 - - variable: - name: ObsSubType/stationPressure - is_in: 0 - action: - name: inflate error - inflation factor: 0.7 - - # Calculate obs error inflation factors for large discrepancies between model and observations - - filter: Variable Assignment - assignments: - - name: ObsErrorFactorSfcPressure/stationPressure - type: float - function: - name: ObsFunction/ObsErrorFactorSfcPressure - options: - geovar_sfc_geomz: surface_altitude - geovar_geomz: geopotential_height - station_altitude: height - - # Inflate surface pressure observation based on discrepancies between - # model and observations due to terrian - - filter: Perform Action - filter variables: - - name: stationPressure - action: - name: inflate error - inflation variable: - name: ObsErrorFactorSfcPressure/stationPressure - - - filter: Variable Assignment - assignments: - - name: DerivedMetaData/Innovation - type: float - function: - name: ObsFunction/Arithmetic - options: - variables: - - name: ObsValue/stationPressure - - name: HofX/stationPressure - coefs: [1, -1] - - - filter: Variable Assignment - assignments: - - name: DerivedMetaData/ObsErrorBoundSfcPressure1 - type: float - function: - name: ObsFunction/ObsErrorBoundConventional - options: - obsvar: stationPressure - obserr_bound_min: 100 - obserr_bound_max: 300 - obserr_bound_factor: 5.0 - - - filter: Background Check - filter variables: - - name: stationPressure - where: - - variable: PreQC/stationPressure - is_not_in: 3 - function absolute threshold: - - name: DerivedMetaData/ObsErrorBoundSfcPressure1 - action: - name: reject - - - filter: Variable Assignment - assignments: - - name: DerivedMetaData/ObsErrorBoundSfcPressure2 - type: float - function: - name: ObsFunction/ObsErrorBoundConventional - options: - obsvar: stationPressure - obserr_bound_min: 100 - obserr_bound_max: 300 - obserr_bound_factor: 3.5 - - - filter: Background Check - filter variables: - - name: stationPressure - where: - - variable: PreQC/stationPressure - is_in: 3 - function absolute threshold: - - name: DerivedMetaData/ObsErrorBoundSfcPressure2 - action: - name: reject - - # Inflate obs error based on duplicate check - - filter: Perform Action - filter variables: - - name: stationPressure - action: - name: inflate error - inflation variable: - name: ObsErrorFactorDuplicateCheck/stationPressure - - # Reject data based on PreUseFlag (usage in GSI) - - filter: Perform Action - filter variables: - - name: stationPressure - where: - - variable: PreUseFlag/stationPressure - is_not_in: 0, 1 - action: - name: reject - # End of Filters - obs localizations: - - localization method: Horizontal Gaspari-Cohn - lengthscale: 1250e3 - max nobs: 10000 diff --git a/parm/atm/obs/config/lgetkf_gnssro.yaml.j2 b/parm/atm/obs/config/lgetkf_gnssro.yaml.j2 deleted file mode 100644 index 8e7747b45..000000000 --- a/parm/atm/obs/config/lgetkf_gnssro.yaml.j2 +++ /dev/null @@ -1,146 +0,0 @@ -- obs space: - name: gnssrobndnbam - distribution: - name: Halo - halo size: 1250e3 - obsdatain: - engine: - type: H5File - obsfile: '{{ DATA }}/obs/{{ OPREFIX }}gnssro.tm00.bufr_d.nc' - # obsgrouping: - # group variables: [ 'sequenceNumber' ] - # sort variable: 'impactHeightRO' - # sort order: 'ascending' - obsdataout: - engine: - type: H5File - obsfile: '{{ DATA }}/diags/diag_gnssro_{{ current_cycle | to_YMDH }}.nc' - simulated variables: [bendingAngle] - - obs operator: - name: GnssroBndNBAM - obs options: - use_compress: 1 - sr_steps: 2 - vertlayer: full - super_ref_qc: NBAM - - obs filters: - # Apply gross check using pccf - # Step 0-A: Create Diagnostic Flags - # Diagnostic flag for pccf - - filter: Create Diagnostic Flags - filter variables: - - name: bendingAngle - flags: - - name: pccfCheckReject - initial value: false - force reinitialization: true - - # Diagnostic flag for qfro - - filter: Create Diagnostic Flags - filter variables: - - name: bendingAngle - flags: - - name: qfroCheckReject - initial value: false - force reinitialization: true - - # Step 0-B: pccf Check - good: 0.1-100, reject: 0 - - filter: Bounds Check - filter variables: - - name: bendingAngle - where: - - variable: - name: MetaData/satelliteIdentifier - is_in: 265-269,750-755,44,786,820,825 - test variables: - - name: MetaData/pccf - minvalue: 0.1 - maxvalue: 100.1 - actions: - - name: set - flag: pccfCheckReject - - name: reject - - # Step 0-B: qfro Check - good: 0, reject: 1 - - filter: Bounds Check - - filter: RejectList - filter variables: - - name: bendingAngle - where: - - variable: - name: MetaData/satelliteIdentifier - is_in: 3-5,421,440,821 - test variables: - - name: MetaData/qualityFlags - minvalue: -0.1 - maxvalue: 0.1 - actions: - - name: set - flag: qfroCheckReject - - name: reject - - #1. gpstop - - filter: Domain Check - filter variables: - - name: bendingAngle - where: - - variable: - name: MetaData/impactHeightRO - minvalue: 0 - maxvalue: 55000.1 - action: - name: reject - #2. commgpstop - - filter: Bounds Check - filter variables: - - name: bendingAngle - where: - - variable: - name: MetaData/satelliteIdentifier - is_in: 265,266,267,268,269 - test variables: - - name: MetaData/impactHeightRO - maxvalue: 45000.1 - action: - name: reject - #3. metop below 8 km - - filter: Bounds Check - filter variables: - - name: bendingAngle - where: - - variable: - name: MetaData/satelliteIdentifier - is_in: 3-5 - test variables: - - name: MetaData/impactHeightRO - minvalue: 8000.1 - action: - name: reject - #4. assign obs error - - filter: ROobserror - filter variables: - - name: bendingAngle - errmodel: NBAM - #5. RONBAM cut off check - - filter: Background Check RONBAM - filter variables: - - name: bendingAngle - #6. Obs error inflate - - filter: Background Check RONBAM - filter variables: - - name: bendingAngle - action: - name: RONBAMErrInflate - #7. Background check - #- filter: Background Check - # filter variables: - # - name: bendingAngle - # threshold: 10 - # action: - # name: reject - obs localizations: - - localization method: Horizontal Gaspari-Cohn - lengthscale: 1250e3 - max nobs: 10000 diff --git a/parm/atm/obs/config/lgetkf_satwind_abi_goes-16.yaml.j2 b/parm/atm/obs/config/lgetkf_satwind_abi_goes-16.yaml.j2 deleted file mode 100644 index f39c5eff0..000000000 --- a/parm/atm/obs/config/lgetkf_satwind_abi_goes-16.yaml.j2 +++ /dev/null @@ -1,573 +0,0 @@ -- obs space: - name: satwind_goes-16 - distribution: - name: Halo - halo size: 1250e3 - obsdatain: - engine: - type: H5File - obsfile: '{{ DATA }}/obs/{{ OPREFIX }}satwnd.abi_goes-16.tm00.nc' - obsdataout: - engine: - type: H5File - obsfile: '{{ DATA }}/diags/diag_satwind_abi_goes-16_{{ current_cycle | to_YMDH }}.nc' - io pool: - max pool size: 1 - simulated variables: [windEastward, windNorthward] - - obs operator: - name: VertInterp - hofx scaling field: SurfaceWindScalingPressure - hofx scaling field group: DerivedVariables - - linear obs operator: - name: VertInterp - - obs prior filters: - # Apply variable changes needed for wind scaling - # For wind observations with pressure provided - - filter: Variable Transforms - Transform: SurfaceWindScalingPressure - SkipWhenNoObs: False - - # Calculate error inflation factor for duplicate observations - #- filter: Variable Assignment - # assignments: - # - name: ObsErrorFactorDuplicateCheck/windEastward - # type: float - # function: - # name: ObsFunction/ObsErrorFactorDuplicateCheck - # options: - # use_air_pressure: true - # variable: windEastward - - #- filter: Variable Assignment - # assignments: - # - name: ObsErrorFactorDuplicateCheck/windNorthward - # type: float - # function: - # name: ObsFunction/ObsErrorFactorDuplicateCheck - # options: - # use_air_pressure: true - # variable: windNorthward - - obs post filters: - # Assign the initial observation error, based on height/pressure - # Hard-wiring to prepobs_errtable.global by Type - # ObsError is currently not updating in diag file, but passes directly to EffectiveError when no inflation is specified in YAML - # Type 240 (GOES SWIR): Assigned all dummy values in prepobs_errtable.global - - filter: Perform Action - filter variables: - - name: windEastward - - name: windNorthward - where: - - variable: ObsType/windEastward - is_in: 240 - action: - name: assign error - error function: - name: ObsFunction/ObsErrorModelStepwiseLinear - options: - xvar: - name: MetaData/pressure - xvals: [110000.,0.] #Pressure (Pa) - errors: [1000000000.,1000000000.] - - # Type 245 (GOES LWIR): I am assuming these are halved relative to prepobs_errtable.global, based on read_satwnd.f90: L1410–1416 - - filter: Perform Action - filter variables: - - name: windEastward - - name: windNorthward - where: - - variable: ObsType/windEastward - is_in: 245 - action: - name: assign error - error function: - name: ObsFunction/ObsErrorModelStepwiseLinear - options: - xvar: - name: MetaData/pressure - xvals: [110000.,105000.,100000.,95000.,90000.,85000.,80000.,75000.,70000.,65000.,60000.,55000.,50000.,45000.,40000.,35000.,30000.,25000.,20000.,15000.,10000.,7500.,5000.,4000.,3000.,2000.,1000.,500.,400.,300.,200.,100.,0.] #Pressure (Pa) - errors: [7.6,7.6,7.6,7.6,7.6,7.6,7.6,7.6,7.8,7.8,8.,8.,8.2,10.,12.,12.6,13.2,14.,14.,14.,14.,14.,14.,14.,14.,14.,14.,14.,14.,14.,14.,14.,14.] - - # Type 246 (GOES cloud-top WV): I am assuming these are halved relative to prepobs_errtable.global, based on read_satwnd.f90: L1410–1416 - - filter: Perform Action - filter variables: - - name: windEastward - - name: windNorthward - where: - - variable: ObsType/windEastward - is_in: 246 - action: - name: assign error - error function: - name: ObsFunction/ObsErrorModelStepwiseLinear - options: - xvar: - name: MetaData/pressure - xvals: [110000.,105000.,100000.,95000.,90000.,85000.,80000.,75000.,70000.,65000.,60000.,55000.,50000.,45000.,40000.,35000.,30000.,25000.,20000.,15000.,10000.,7500.,5000.,4000.,3000.,2000.,1000.,500.,400.,300.,200.,100.,0.] #Pressure (Pa) - errors: [7.6,7.6,7.6,7.6,7.6,7.6,7.6,7.6,7.8,7.8,8.,8.,8.2,10.,12.,12.6,13.2,14.,14.,14.,14.,14.,14.,14.,14.,14.,14.,14.,14.,14.,14.,14.,14.] - - # Type 247 (GOES clear-sky WV): I am assuming these are halved relative to prepobs_errtable.global, based on read_satwnd.f90: L1410–1416 - - filter: Perform Action - filter variables: - - name: windEastward - - name: windNorthward - where: - - variable: ObsType/windEastward - is_in: 247 - action: - name: assign error - error function: - name: ObsFunction/ObsErrorModelStepwiseLinear - options: - xvar: - name: MetaData/pressure - xvals: [110000.,105000.,100000.,95000.,90000.,85000.,80000.,75000.,70000.,65000.,60000.,55000.,50000.,45000.,40000.,35000.,30000.,25000.,20000.,15000.,10000.,7500.,5000.,4000.,3000.,2000.,1000.,500.,400.,300.,200.,100.,0.] #Pressure (Pa) - errors: [7.6,7.6,7.6,7.6,7.6,7.6,7.6,7.6,7.8,7.8,8.,8.,8.2,10.,12.,12.6,13.2,14.,14.,14.,14.,14.,14.,14.,14.,14.,14.,14.,14.,14.,14.,14.,14.] - - # Type 251 (GOES VIS): Assigned all dummy values - - filter: Perform Action - filter variables: - - name: windEastward - - name: windNorthward - where: - - variable: ObsType/windEastward - is_in: 251 - action: - name: assign error - error function: - name: ObsFunction/ObsErrorModelStepwiseLinear - options: - xvar: - name: MetaData/pressure - xvals: [110000.,0.] #Pressure (Pa) - errors: [1000000000.,1000000000.] - - # sanity-check criteria - # Observation Range Sanity Check - # NOT EXPLICITLY CLEARED: No obs in this range in file, so 0 Bounds Check rejects (which is correct) but essentially untested - - filter: Bounds Check - filter variables: - - name: windEastward - - name: windNorthward - minvalue: -130. - maxvalue: 130. - action: - name: reject - - # Velocity Sanity Check - # NOT EXPLICITLY CLEARED: No obs in this range in file, so 0 Bounds Check rejects (which is correct) but essentially untested - - filter: Bounds Check - filter variables: - - name: windEastward - - name: windNorthward - test variables: - - name: ObsFunction/Velocity - maxvalue: 130. - action: - name: reject - - # GSI read routine QC (part-1) - # Exclude Type 251 (VIS) --- obs tossed without passing to setup routine - - filter: Perform Action - filter variables: - - name: windEastward - - name: windNorthward - where: - - variable: ObsType/windEastward - is_in: 251 - action: - name: reject - - # Exclude data with satellite zenith angle > 68 for all types --- obs tossed without passing to setup routine - - filter: Bounds Check - filter variables: - - name: windEastward - - name: windNorthward - test variables: - - name: MetaData/satelliteZenithAngle - maxvalue: 68. - action: - name: reject - - # Reject obs with pressure < 12500 pa --- obs tosed without passing to setup routine - - filter: Bounds Check - filter variables: - - name: windEastward - - name: windNorthward - where: - - variable: MetaData/satelliteIdentifier - is_in: 250-299 - test variables: - - name: MetaData/pressure - minvalue: 12500. - 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 - # Notes: This check was missing, so added (eliu) - # Replace land_type_index_NPOSS with water_area_fraction (eliu) - - filter: Bounds Check - filter variables: - - name: windEastward - - name: windNorthward - where: - - variable: ObsType/windEastward - is_in: 240, 245 - - variable: MetaData/latitude - minvalue: 20. - test variables: - - name: GeoVaLs/water_area_fraction - minvalue: 0.99 - action: - name: reject - - # GSI read routine QC (part-2) - # Reject obs with qualityInformationWithoutForecast < 90. OR > 100. - - filter: Bounds Check - filter variables: - - name: windEastward - - name: windNorthward - where: - - variable: MetaData/satelliteIdentifier - is_in: 250-299 - test variables: - - name: MetaData/qualityInformationWithoutForecast - minvalue: 90. - maxvalue: 100. - action: - name: reject - - # Reject obs with pressure < 15000 pa. - - filter: Bounds Check - filter variables: - - name: windEastward - - name: windNorthward - where: - - variable: MetaData/satelliteIdentifier - is_in: 250-299 - test variables: - - name: MetaData/pressure - minvalue: 15000. - action: - name: reject - - # Reject obs with pressure < 70000 pa. when Type=251 - - filter: Bounds Check - filter variables: - - name: windEastward - - name: windNorthward - where: - - variable: MetaData/satelliteIdentifier - is_in: 250-299 - - variable: ObsType/windEastward - is_in: 251 - test variables: - - name: MetaData/pressure - minvalue: 70000. - action: - name: reject - - # Reject obs with pressure > 30000. when Type=246 - - filter: Bounds Check - filter variables: - - name: windEastward - - name: windNorthward - where: - - variable: MetaData/satelliteIdentifier - is_in: 250-299 - - variable: ObsType/windEastward - is_in: 246 - test variables: - - name: MetaData/pressure - maxvalue: 30000. - action: - name: reject - - # Reject obs with pressure > 85000. when isli=1 (land surface) - # Notes: Replace land_type_index_NPOESS with land_area_fraction (eliu) - - filter: Bounds Check - filter variables: - - name: windEastward - - name: windNorthward - where: - - variable: MetaData/satelliteIdentifier - is_in: 250-299 - - variable: GeoVaLs/land_area_fraction - minvalue: 0.99 - test variables: - - name: MetaData/pressure - maxvalue: 85000. - action: - name: reject - - # Reject obs with pct1 (Coeff. of Var.) outside of 0.04–0.5, Type [240,245,246,251] ONLY - - filter: Bounds Check - filter variables: - - name: windEastward - - name: windNorthward - where: - - variable: MetaData/satelliteIdentifier - is_in: 250-299 - - variable: ObsType/windEastward - is_in: 240, 245, 246, 251 - test variables: - - name: MetaData/coefficientOfVariation - minvalue: 0.04 - maxvalue: 0.5 - action: - name: reject - - # NESDIS obs are also subject to the experr_norm test defined as: - # - # if (10. - 0.1*(expectedError))/(ob_speed)>0.9, or ob_speed<0.1, reject, applies to NESDIS winds - # - # CLEARED: With caveat that float precision/handling differences can generate different acceptance criteria - # between UFO and GSI for observations with an experr_norm value right around the maxvalue. - - filter: Bounds Check - filter variables: - - name: windEastward - - name: windNorthward - where: - - variable: MetaData/satelliteIdentifier - is_in: 250-299 - test variables: - - name: ObsFunction/SatWindsErrnormCheck - maxvalue: 0.9 - action: - name: reject - - # Reject all Type=240 (GOES SWIR) AMVs: These are not currently assimilated in GSI and they have missing-values - # assigned to ob-errors - - filter: Perform Action - filter variables: - - name: windEastward - - name: windNorthward - where: - - variable: ObsType/windEastward - is_in: 240 - action: - name: reject - - # 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 - - filter: Bounds Check - filter variables: - - name: windEastward - - name: windNorthward - where: - - variable: ObsType/windEastward - is_in: 240-260 - test variables: - - name: MetaData/pressure - maxvalue: 95001. - action: - name: reject - - # GOES IR (245) reject when pressure between 399 and 801 mb. - # # CLEARED: minvalue/maxvalue are >=/<=, not >/<, so editing range by 1 Pa - - filter: Perform Action - filter variables: - - name: windEastward - - name: windNorthward - where: - - variable: MetaData/pressure - minvalue: 39901. - maxvalue: 80099. - - variable: ObsType/windEastward - is_in: 245 - action: - name: reject - - # GOES WV (246, 250, 254), reject when pressure greater than 399 mb. - # CLEARED: maxvalue is rejecting >, not >= as per a Perform Action, so threshold is unchanged - - filter: Bounds Check - filter variables: - - name: windEastward - - name: windNorthward - where: - - variable: ObsType/windEastward - is_in: 246, 250, 254 - test variables: - - name: MetaData/pressure - maxvalue: 39900. - action: - name: reject - - # 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. - # Need to check if troposphere pressure was implemented correctly in fv3-jed - - filter: Difference Check - filter variables: - - name: windEastward - - name: windNorthward - reference: GeoVaLs/tropopause_pressure - value: MetaData/pressure - minvalue: -5000. # 50 hPa above tropopause level, negative p-diff - action: - name: reject - - # 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. - - filter: Difference Check - filter variables: - - name: windEastward - - name: windNorthward - where: - - variable: - name: GeoVaLs/water_area_fraction - maxvalue: 0.99 - - variable: - name: ObsType/windEastward - is_in: 247 - reference: GeoVaLs/surface_pressure - value: MetaData/pressure - maxvalue: -11000. # within 110 hPa above surface pressure, negative p-diff - action: - name: reject - - # Reject GOES (247) when difference of wind direction is more than 50 degrees. - # CLEARED: maxvalue is rejecting >, not >= as per a Perform Action, so threshold is unchanged - - filter: Bounds Check - filter variables: - - name: windEastward - - name: windNorthward - where: - - variable: ObsType/windEastward - is_in: 247 - test variables: - - name: ObsFunction/WindDirAngleDiff - maxvalue: 50. - action: - name: reject - - # All satwinds must adjust errors based on ObsErrorFactorPressureCheck - # prior to the SPDB check (i.e. the gross-error check). The gross-error - # check uses the adjusted errors for error-bound tightening and rejection, - # so this check has to come first. This check will inflate errors for obs - # that are too close to either the model top or bottom. - # Notes (eliu): GMAO added a required parameter: adjusted_error_name. - - filter: Perform Action - filter variables: - - name: windEastward - where: - - variable: - name: ObsType/windEastward - is_in: 240-260 - action: - name: inflate error - inflation variable: - name: ObsFunction/ObsErrorFactorPressureCheck - options: - surface_obs: false - variable: windEastward - inflation factor: 4.0 - - - filter: Perform Action - filter variables: - - name: windNorthward - where: - - variable: - name: ObsType/windNorthward - is_in: 240-260 - action: - name: inflate error - inflation variable: - name: ObsFunction/ObsErrorFactorPressureCheck - options: - variable: windNorthward - inflation factor: 4.0 - - # All satwinds subject to a gross-error check that contains significant - # modifiers for satwinds with a negative speed-bias. ALL wind gross-error - # checks are currently being done by the SatWindsSPDBCheck. - # CLEARED - - filter: Background Check - filter variables: - - name: windEastward - function absolute threshold: - - name: ObsFunction/WindsSPDBCheck - options: - wndtype: [ 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260] - cgross: [ 2.5, 2.5, 2.5, 1.5, 2.5, 1.3, 1.3, 2.5, 2.5, 2.5, 2.5, 1.3, 2.5, 1.5, 1.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5] - error_min: [1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4] - error_max: [6.1, 6.1, 15.0, 15.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.1, 20.1, 20.1, 20.1, 20.1, 20.1] - variable: windEastward - action: - name: reject - - - filter: Background Check - filter variables: - - name: windNorthward - function absolute threshold: - - name: ObsFunction/WindsSPDBCheck - options: - wndtype: [ 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260] - cgross: [ 2.5, 2.5, 2.5, 1.5, 2.5, 1.3, 1.3, 2.5, 2.5, 2.5, 2.5, 1.3, 2.5, 1.5, 1.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5] - error_min: [1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4] - error_max: [6.1, 6.1, 15.0, 15.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.1, 20.1, 20.1, 20.1, 20.1, 20.1] - variable: windNorthward - action: - name: reject - - # The last error inflation check is for duplicate observations. This one needs - # to come last, because we don't want to inflate errors for duplication if one - # of the duplicates should be rejected. - # Notes (eliu): ObsErrorFactorDuplicateCheck obsfunction requires PreUseFlag (usage parameter from read_satwnd.f90). - # : Turn off duplicate check for now. - #- filter: Perform Action - # filter variables: - # - name: windEastward - # action: - # name: inflate error - # inflation variable: - # name: ObsErrorFactorDuplicateCheck/windEastward - - #- filter: Perform Action - # filter variables: - # - name: windNorthward - # action: - # name: inflate error - # inflation variable: - # name: ObsErrorFactorDuplicateCheck/windNorthward - - # We are extending this to an additional filter that inflates final ob-errors across-the-board by - # 1/0.8 = 1.25. This is caused by the GSI value of nvqc being set to .true. in the global operational - # 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 - # filter variables: - # - name: windEastward - # where: - # - variable: ObsType/windEastward - # is_in: 240-260 - # action: - # name: inflate error - # inflation factor: 1.25 - - #- filter: Perform Action - # filter variables: - # - name: windNorthward - # where: - # - variable: ObsType/windNorthward - # is_in: 240-260 - # action: - # name: inflate error - # inflation factor: 1.25 - - # End of Filters - obs localizations: - - localization method: Horizontal Gaspari-Cohn - lengthscale: 1250e3 - max nobs: 10000 diff --git a/parm/atm/obs/config/lgetkf_satwind_ahi_h8.yaml.j2 b/parm/atm/obs/config/lgetkf_satwind_ahi_h8.yaml.j2 deleted file mode 100644 index 3ab5656e0..000000000 --- a/parm/atm/obs/config/lgetkf_satwind_ahi_h8.yaml.j2 +++ /dev/null @@ -1,404 +0,0 @@ -- obs space: - name: satwind_ahi_h8 - distribution: - name: Halo - halo size: 1250e3 - obsdatain: - engine: - type: H5File - obsfile: '{{ DATA }}/obs/{{ OPREFIX }}satwnd.ahi_h8.tm00.nc' - obsdataout: - engine: - type: H5File - obsfile: '{{ DATA }}/diags/diag_satwind_ahi_h8_{{ current_cycle | to_YMDH }}.nc' - io pool: - max pool size: 1 - simulated variables: [windEastward, windNorthward] - - obs operator: - name: VertInterp - hofx scaling field: SurfaceWindScalingPressure - hofx scaling field group: DerivedVariables - - linear obs operator: - name: VertInterp - - # NOTE: Tests using the Gaussian Thinning filter (below) to duplicate GSI's thinning of AHI/Himawari-8 satwinds - # results in more JEDI satwinds in the diag file than in GSI, but far fewer JEDI satwinds assimilated than - # GSI. JEDI under-counts assimilated winds by roughly 25-40%, relative to GSI, and this under-count is not - # even including the temporal thinning which is applied in GSI but not JEDI (by this filter below). See - # GDASApp Issue #741 for details: https://github.com/NOAA-EMC/GDASApp/issues/741 - #obs pre filters: - #- filter: Gaussian Thinning - # horizontal_mesh: 200 - # vertical_mesh: 10000 - # use_reduced_horizontal_grid: true - # round_horizontal_bin_count_to_nearest: true - # partition_longitude_bins_using_mesh: true - - obs prior filters: - # Apply variable changes needed for wind scaling - # For wind observations with pressure provided - - filter: Variable Transforms - Transform: SurfaceWindScalingPressure - SkipWhenNoObs: False - - # Calculate error inflation factor for duplicate observations - #- filter: Variable Assignment - # assignments: - # - name: ObsErrorFactorDuplicateCheck/windEastward - # type: float - # function: - # name: ObsFunction/ObsErrorFactorDuplicateCheck - # options: - # use_air_pressure: true - # variable: windEastward - - #- filter: Variable Assignment - # assignments: - # - name: ObsErrorFactorDuplicateCheck/windNorthward - # type: float - # function: - # name: ObsFunction/ObsErrorFactorDuplicateCheck - # options: - # use_air_pressure: true - # variable: windNorthward - - obs post filters: - # Assign the initial observation error, based on height/pressure - # Hard-wiring to prepobs_errtable.global by Type - # ObsError is currently not updating in diag file, but passes directly to EffectiveError when no inflation is specified in YAML - # Type 242 (Himawari VIS) - - filter: Perform Action - filter variables: - - name: windEastward - - name: windNorthward - where: - - variable: ObsType/windEastward - is_in: 242 - action: - name: assign error - error function: - name: ObsFunction/ObsErrorModelStepwiseLinear - options: - xvar: - name: MetaData/pressure - xvals: [110000.,105000.,100000.,95000.,90000.,85000.,80000.,75000.,70000.,65000.,60000.,55000.,50000.,45000.,40000.,35000.,30000.,25000.,20000.,15000.,10000.,7500.,5000.,4000.,3000.,2000.,1000.,500.,400.,300.,200.,100.,0.] #Pressure (Pa) - errors: [3.8,3.8,3.8,3.8,3.8,3.8,3.8,3.8,3.9,3.9,4.,4.,4.1,5.,6.,6.3,6.6,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.] - - - # Type 250 (Himawari AHI WV, cloud-top or clear-sky) - - filter: Perform Action - filter variables: - - name: windEastward - - name: windNorthward - where: - - variable: ObsType/windEastward - is_in: 250 - action: - name: assign error - error function: - name: ObsFunction/ObsErrorModelStepwiseLinear - options: - xvar: - name: MetaData/pressure - xvals: [110000.,105000.,100000.,95000.,90000.,85000.,80000.,75000.,70000.,65000.,60000.,55000.,50000.,45000.,40000.,35000.,30000.,25000.,20000.,15000.,10000.,7500.,5000.,4000.,3000.,2000.,1000.,500.,400.,300.,200.,100.,0.] #Pressure (Pa) - errors: [3.8,3.8,3.8,3.8,3.8,3.8,3.8,3.8,3.9,3.9,4.,4.,4.1,5.,7.,7.3,7.6,8.,8.,8.,8.,8.,8.,8.,8.,8.,8.,8.,8.,8.,8.,8.,8.] - - - # Type Type 252 (Himawari AHI LWIR) - - filter: Perform Action - filter variables: - - name: windEastward - - name: windNorthward - where: - - variable: ObsType/windEastward - is_in: 252 - action: - name: assign error - error function: - name: ObsFunction/ObsErrorModelStepwiseLinear - options: - xvar: - name: MetaData/pressure - xvals: [110000.,105000.,100000.,95000.,90000.,85000.,80000.,75000.,70000.,65000.,60000.,55000.,50000.,45000.,40000.,35000.,30000.,25000.,20000.,15000.,10000.,7500.,5000.,4000.,3000.,2000.,1000.,500.,400.,300.,200.,100.,0.] #Pressure (Pa) - errors: [3.8,3.8,3.8,3.8,3.8,3.8,3.8,3.8,3.9,3.9,4.,4.,4.1,5.,6.,6.3,6.6,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.] - - # sanity-check criteria - # Observation Range Sanity Check - # NOT EXPLICITLY CLEARED: No obs in this range in file, so 0 Bounds Check rejects (which is correct) but essentially untested - - filter: Bounds Check - filter variables: - - name: windEastward - - name: windNorthward - minvalue: -130. - maxvalue: 130. - action: - name: reject - - # Velocity Sanity Check - # NOT EXPLICITLY CLEARED: No obs in this range in file, so 0 Bounds Check rejects (which is correct) but essentially untested - - filter: Bounds Check - filter variables: - - name: windEastward - - name: windNorthward - test variables: - - name: ObsFunction/Velocity - maxvalue: 130. - action: - name: reject - - # GSI read routine QC (part-1) - # Exclude Type 250 with windComputationMethod==5 (clear-sky WV) --- obs tossed without passing to setup routine - - filter: Perform Action - filter variables: - - name: windEastward - - name: windNorthward - where: - - variable: ObsType/windNorthward - is_in: 250 - - variable: MetaData/windComputationMethod - is_in: 5 - action: - name: reject - - # Exclude data with satellite zenith angle > 68 for all types --- obs tossed without passing to setup routine - - filter: Bounds Check - filter variables: - - name: windEastward - - name: windNorthward - test variables: - - name: MetaData/satelliteZenithAngle - maxvalue: 68. - action: - name: reject - - # GSI read routine QC (part-2) - # Reject obs with qualityInformationWithoutForecast < 85. (also > 100., which is missing data) - - filter: Bounds Check - filter variables: - - name: windEastward - - name: windNorthward - test variables: - - name: MetaData/qualityInformationWithoutForecast - minvalue: 85. - maxvalue: 100. - action: - name: reject - - # Reject Type 252 (IR) winds with a /=0 surface type (non-water surface) when latitude > 20. - - filter: Bounds Check - filter variables: - - name: windEastward - - name: windNorthward - where: - - variable: - name: GeoVaLs/water_area_fraction - maxvalue: 0.99 - - variable: - name: ObsType/windEastward - is_in: 252 - test variables: - - name: MetaData/latitude - maxvalue: 20. - action: - name: reject - - # 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 - - filter: Bounds Check - filter variables: - - name: windEastward - - name: windNorthward - where: - - variable: ObsType/windEastward - is_in: 240-260 - test variables: - - name: MetaData/pressure - maxvalue: 95001. - action: - name: reject - - # IR (Type 242), reject when pressure is less than 700 mb - - filter: Bounds Check - filter variables: - - name: windEastward - - name: windNorthward - where: - - variable: ObsType/windEastward - is_in: 242 - test variables: - - name: MetaData/pressure - minvalue: 70000. - action: - name: reject - - # cloud-top WV (Type 250), reject when pressure greater than 399 mb. - # CLEARED: maxvalue is rejecting >, not >= as per a Perform Action, so threshold is unchanged - - filter: Bounds Check - filter variables: - - name: windEastward - - name: windNorthward - where: - - variable: ObsType/windEastward - is_in: 250 - test variables: - - name: MetaData/pressure - maxvalue: 39900. - action: - name: reject - - # JMA IR (252) reject when pressure between 499 and 801 mb. - # PERFORM ACTION: minvalue/maxvalue are >=/<=, not >/<, so editing range by 1 Pa - - filter: Perform Action - filter variables: - - name: windEastward - - name: windNorthward - where: - - variable: MetaData/pressure - minvalue: 49901. - maxvalue: 80099. - - variable: ObsType/windEastward - is_in: 252 - action: - name: reject - - # 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. - # Need to check if troposphere pressure was implemented correctly in fv3-jed - - filter: Difference Check - filter variables: - - name: windEastward - - name: windNorthward - reference: GeoVaLs/tropopause_pressure - value: MetaData/pressure - minvalue: -5000. # 50 hPa above tropopause level, negative p-diff - action: - name: reject - - # All satwinds must adjust errors based on ObsErrorFactorPressureCheck - # prior to the SPDB check (i.e. the gross-error check). The gross-error - # check uses the adjusted errors for error-bound tightening and rejection, - # so this check has to come first. This check will inflate errors for obs - # that are too close to either the model top or bottom. - # Notes (eliu): GMAO added a required parameter: adjusted_error_name. - - filter: Perform Action - filter variables: - - name: windEastward - where: - - variable: - name: ObsType/windEastward - is_in: 240-260 - action: - name: inflate error - inflation variable: - name: ObsFunction/ObsErrorFactorPressureCheck - options: - surface_obs: false - variable: windEastward - inflation factor: 4.0 - - - filter: Perform Action - filter variables: - - name: windNorthward - where: - - variable: - name: ObsType/windNorthward - is_in: 240-260 - action: - name: inflate error - inflation variable: - name: ObsFunction/ObsErrorFactorPressureCheck - options: - variable: windNorthward - inflation factor: 4.0 - - # All satwinds subject to a gross-error check that contains significant - # modifiers for satwinds with a negative speed-bias. ALL wind gross-error - # checks are currently being done by the SatWindsSPDBCheck. - # CLEARED - - filter: Background Check - filter variables: - - name: windEastward - function absolute threshold: - - name: ObsFunction/WindsSPDBCheck - options: - wndtype: [ 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260] - cgross: [ 2.5, 2.5, 2.5, 1.5, 2.5, 1.3, 1.3, 2.5, 2.5, 2.5, 2.5, 1.3, 2.5, 1.5, 1.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5] - error_min: [1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4] - error_max: [6.1, 6.1, 15.0, 15.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.1, 20.1, 20.1, 20.1, 20.1, 20.1] - variable: windEastward - action: - name: reject - - - filter: Background Check - filter variables: - - name: windNorthward - function absolute threshold: - - name: ObsFunction/WindsSPDBCheck - options: - wndtype: [ 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260] - cgross: [ 2.5, 2.5, 2.5, 1.5, 2.5, 1.3, 1.3, 2.5, 2.5, 2.5, 2.5, 1.3, 2.5, 1.5, 1.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5] - error_min: [1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4] - error_max: [6.1, 6.1, 15.0, 15.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.1, 20.1, 20.1, 20.1, 20.1, 20.1] - variable: windNorthward - action: - name: reject - - # The last error inflation check is for duplicate observations. This one needs - # to come last, because we don't want to inflate errors for duplication if one - # of the duplicates should be rejected. - # Notes (eliu): ObsErrorFactorDuplicateCheck obsfunction requires PreUseFlag (usage parameter from read_satwnd.f90). - # : Turn off duplicate check for now. - #- filter: Perform Action - # filter variables: - # - name: windEastward - # action: - # name: inflate error - # inflation variable: - # name: ObsErrorFactorDuplicateCheck/windEastward - - #- filter: Perform Action - # filter variables: - # - name: windNorthward - # action: - # name: inflate error - # inflation variable: - # name: ObsErrorFactorDuplicateCheck/windNorthward - - # We are extending this to an additional filter that inflates final ob-errors across-the-board by - # 1/0.8 = 1.25. This is caused by the GSI value of nvqc being set to .true. in the global operational - # 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 - # filter variables: - # - name: windEastward - # where: - # - variable: ObsType/windEastward - # is_in: 240-260 - # action: - # name: inflate error - # inflation factor: 1.25 - - #- filter: Perform Action - # filter variables: - # - name: windNorthward - # where: - # - variable: ObsType/windNorthward - # is_in: 240-260 - # action: - # name: inflate error - # inflation factor: 1.25 - - # End of Filters - obs localizations: - - localization method: Horizontal Gaspari-Cohn - lengthscale: 1250e3 - max nobs: 10000 diff --git a/parm/atm/obs/config/lgetkf_scatwind_ascat_metop-b.yaml.j2 b/parm/atm/obs/config/lgetkf_scatwind_ascat_metop-b.yaml.j2 deleted file mode 100644 index a19161e0e..000000000 --- a/parm/atm/obs/config/lgetkf_scatwind_ascat_metop-b.yaml.j2 +++ /dev/null @@ -1,301 +0,0 @@ -- obs space: - name: ascatw_ascat_metop-b - distribution: - name: Halo - halo size: 1250e3 - obsdatain: - engine: - type: H5File - obsfile: '{{ DATA }}/obs/{{ OPREFIX }}ascatw.ascat_metop-b.tm00.nc' - obsdataout: - engine: - type: H5File - obsfile: '{{ DATA }}/diags/diag_ascatw_ascat_metop-b_{{ current_cycle | to_YMDH }}.nc' - io pool: - max pool size: 1 - simulated variables: [windEastward, windNorthward] - - obs operator: - name: VertInterp - # Use height vertical coordinate first - # vertical coordinate: geometric_height - vertical coordinate: geopotential_height - observation vertical coordinate group: DerivedVariables - observation vertical coordinate: adjustedHeight - interpolation method: linear - hofx scaling field: SurfaceWindScalingHeight - hofx scaling field group: DerivedVariables - - linear obs operator: - name: VertInterp - vertical coordinate: geopotential_height - observation vertical coordinate group: DerivedVariables - observation vertical coordinate: adjustedHeight - interpolation method: linear - - obs pre filters: - - filter: Gaussian Thinning - horizontal_mesh: 75 - use_reduced_horizontal_grid: true - round_horizontal_bin_count_to_nearest: true - partition_longitude_bins_using_mesh: true - - obs prior filters: - # Apply variable changes needed for rescaled height coordinate - - filter: Variable Transforms - Transform: AdjustedHeightCoordinate - SkipWhenNoObs: False - - # Apply variable changes needed for wind scaling - - filter: Variable Transforms - Transform: SurfaceWindScalingHeight - SkipWhenNoObs: False - - # Assign the initial observation error (constant value, 1.5 m/s right now). - - filter: Perform Action - filter variables: - - name: windEastward - - name: windNorthward - action: - name: assign error - error parameter: 1.5 - - # Calculate error inflation factor for duplicate observations - #- filter: Variable Assignment - # assignments: - # - name: ObsErrorFactorDuplicateCheck/windEastward - # type: float - # function: - # name: ObsFunction/ObsErrorFactorDuplicateCheck - # options: - # use_air_pressure: true - # variable: windEastward - - #- filter: Variable Assignment - # assignments: - # - name: ObsErrorFactorDuplicateCheck/windNorthward - # type: float - # function: - # name: ObsFunction/ObsErrorFactorDuplicateCheck - # options: - # use_air_pressure: true - # variable: windNorthward - - # Reject all obs with PreQC mark already set above 3 - # NOTE: All scatwinds have an automatic PreQC mark of 2 (hard-wired default from GSI) - # - filter: PreQC - # maxvalue: 3 - # action: - # name: reject - - obs post filters: - # Reject all ASCAT (Type 290) winds with tsavg <= 273.0 (surface temperature) - - filter: Perform Action - filter variables: - - name: windEastward - - name: windNorthward - where: - - variable: ObsType/windEastward - is_in: 290 - # - variable: GeoVaLs/surface_temperature - - variable: GeoVaLs/surface_temperature_where_land - maxvalue: 273. - action: - name: reject - - # Reject all ASCAT (Type 290) winds with isflg /= 0 (non-water surface) - - filter: Perform Action - filter variables: - - name: windEastward - - name: windNorthward - where: - - variable: ObsType/windEastward - is_in: 290 - - variable: GeoVaLs/water_area_fraction - maxvalue: 0.99 - action: - name: reject - - # Reject ASCAT (Type 290) when observed component deviates from background by more than 5.0 m/s - # NOTE: This check can reject a u- or v-component of the same observation independently, which - # is fundamentally different from how GSI rejects obs (both components are rejected if - # either component fails a check). - - filter: Bounds Check - filter variables: - - name: windEastward - - name: windNorthward - test variables: - - name: ObsFunction/Arithmetic - options: - variables: - - name: ObsValue/windEastward - - name: HofX/windEastward - coefs: [1.0, -1.0] - minvalue: -5.0 - maxvalue: 5.0 - - - filter: Bounds Check - filter variables: - - name: windEastward - - name: windNorthward - test variables: - - name: ObsFunction/Arithmetic - options: - variables: - - name: ObsValue/windNorthward - - name: HofX/windNorthward - coefs: [1.0, -1.0] - minvalue: -5.0 - maxvalue: 5.0 - - # Reject OSCAT (Type 291) when observed component deviates from background by more than 6.0 m/s - # NOTE: This check can reject a u- or v-component of the same observation independently, which - # is fundamentally different from how GSI rejects obs (both components are rejected if - # either component fails a check). - - filter: Background Check - filter variables: - - name: windEastward - - name: windNorthward - threshold: 6. - absolute threshold: 6. - where: - - variable: ObsType/windEastward - is_in: 291 - action: - name: reject - - # Reject ASCAT (Type 290) when ambiguity check fails (returned value is negative) - - filter: Bounds Check - filter variables: - - name: windEastward - - name: windNorthward - where: - - variable: ObsType/windEastward - is_in: 290 - test variables: - - name: ObsFunction/ScatWindsAmbiguityCheck - options: - minimum_uv: 0.0001 # hard-coding a minimum-uv for transparancy, want this to basically be zero - maxvalue: 0. - action: - name: reject - - # All scatwinds must adjust errors based on ObsErrorFactorPressureCheck. - # This check will inflate errors for obs that are too close to either - # the model top or bottom. - - filter: Perform Action - filter variables: - - name: windEastward - where: - - variable: - name: ObsType/windEastward - is_in: 290-291 - action: - name: inflate error - inflation variable: - name: ObsFunction/ObsErrorFactorPressureCheck - options: - variable: windEastward - inflation factor: 4.0 - - - filter: Perform Action - filter variables: - - name: windNorthward - where: - - variable: - name: ObsType/windNorthward - is_in: 290-291 - action: - name: inflate error - inflation variable: - name: ObsFunction/ObsErrorFactorPressureCheck - options: - variable: windNorthward - inflation factor: 4.0 - - # All scatwinds subject to a gross error check. This is contained within - # the WindsSPDBCheck, although it is not exclusive to satwinds. - - filter: Background Check - filter variables: - - name: windEastward - function absolute threshold: - - name: ObsFunction/WindsSPDBCheck - options: - wndtype: [ 290, 291] - cgross: [ 5.0, 5.0] - error_min: [1.4, 1.4] - error_max: [6.1, 6.1] - variable: windEastward - action: - name: reject - - - filter: Background Check - filter variables: - - name: windNorthward - function absolute threshold: - - name: ObsFunction/WindsSPDBCheck - options: - wndtype: [ 290, 291] - cgross: [ 5.0, 5.0] - error_min: [1.4, 1.4] - error_max: [6.1, 6.1] - variable: windNorthward - action: - name: reject - - # The last error inflation check is for duplicate observations. This one needs - # to come last, because we don't want to inflate errors for duplication if one - # of the duplicates should be rejected. - #- filter: Perform Action - # filter variables: - # - name: windEastward - # action: - # name: inflate error - # inflation variable: - # name: ObsErrorFactorDuplicateCheck/windEastward - - #- filter: Perform Action - # filter variables: - # - name: windNorthward - # action: - # name: inflate error - # inflation variable: - # name: ObsErrorFactorDuplicateCheck/windNorthward - - # There is no across-the-board inflation for nvqc=.true. for scatwinds, presumably because for - # 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: - # 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 functionality were to be activated for scatwinds, you would want to include this last inflation filter. - #- filter: Perform Action - # filter variables: - # - name: windEastward - # where: - # - variable: ObsType/windEastward - # is_in: 290-291 - # action: - # name: inflate error - # inflation factor: 1.25 - #- filter: Perform Action - # filter variables: - # - name: windNorthward - # where: - # - variable: ObsType/windNorthward - # is_in: 290-291 - # action: - # name: inflate error - # inflation factor: 1.25 - - # END OF FILTERS# - obs localizations: - - localization method: Horizontal Gaspari-Cohn - lengthscale: 1250e3 - max nobs: 10000 diff --git a/parm/atm/obs/config/lgetkf_sondes.yaml.j2 b/parm/atm/obs/config/lgetkf_sondes.yaml.j2 deleted file mode 100644 index 2a2c6b58d..000000000 --- a/parm/atm/obs/config/lgetkf_sondes.yaml.j2 +++ /dev/null @@ -1,33 +0,0 @@ -- obs space: - name: sondes - distribution: - name: Halo - halo size: 1250e3 - obsdatain: - engine: - type: H5File - obsfile: './obs/{{ OPREFIX }}sondes.{{ current_cycle | to_YMDH }}.nc' - obsdataout: - engine: - type: H5File - obsfile: './diags/diag_sondes_lgetkf_{{ current_cycle | to_YMDH }}.nc' - io pool: - max pool size: 1 - simulated variables: [windEastward, windNorthward, airTemperature] - obs operator: - name: VertInterp - obs error: - covariance model: diagonal - obs filters: - - filter: PreQC - maxvalue: 3 - - filter: Background Check - filter variables: - - name: windEastward - - name: windNorthward - - name: airTemperature - threshold: 2.0 - obs localizations: - - localization method: Horizontal Gaspari-Cohn - lengthscale: 1250e3 - max nobs: 10000 diff --git a/parm/atm/obs/config/omi_aura.yaml.j2 b/parm/atm/obs/config/omi_aura.yaml.j2 deleted file mode 100644 index 427b34f05..000000000 --- a/parm/atm/obs/config/omi_aura.yaml.j2 +++ /dev/null @@ -1,153 +0,0 @@ -- obs space: - name: omi_aura - obsdatain: - engine: - type: H5File - obsfile: '{{ DATA }}/obs/{{ OPREFIX }}omi_aura.tm00.nc' - obsdataout: - engine: - type: H5File - obsfile: '{{ DATA }}/diags/diag_omi_aura_{{ current_cycle | to_YMDH }}.nc' - io pool: - max pool size: 1 - simulated variables: [ozoneTotal] - - #obs operator: - # name: AtmVertInterpLay - # geovals: [mole_fraction_of_ozone_in_air] - # coefficients: [0.007886131] # convert from ppmv to DU - # nlevels: [1] - - obs operator: - name: ColumnRetrieval - nlayers_retrieval: 1 - tracer variables: [mole_fraction_of_ozone_in_air] - isApriori: false - isAveragingKernel: false - totalNoVertice: true - stretchVertices: topbottom #options: top, bottom, topbottom, none - model units coeff: 2.241398632746E-3 - - obs pre filters: - - filter: Perform Action - filter variables: - - name: ozoneTotal - action: - name: assign error - error parameter: 6.0 - - - filter: Create Diagnostic Flags - filter variables: - - name: ozoneTotal - flags: - - name: ObsValueSanityCheck - initial value: false - force reinitialization: false - - name: RowAnomaly - initial value: false - force reinitialization: false - - name: BadScan - initial value: false - force reinitialization: false - - name: Thinning - initial value: false - force reinitialization: false - - name: RetrievalQualityCodeFlag - initial value: false - force reinitialization: false - - name: RetrievalQualityAlgorithmFlag - initial value: false - force reinitialization: false - - name: GrossCheck - initial value: false - force reinitialization: false - - obs prior filters: - # GSI read routine QC - # range sanity check - - filter: Bounds Check - filter variables: - - name: ozoneTotal - minvalue: 0 - maxvalue: 10000 - actions: - - name: set - flag: ObsValueSanityCheck - - name: reject - - # Do not use the data if row anomaly (bit 10)is 1 - - filter: RejectList - filter variables: - - name: ozoneTotal - where: - - variable: - name: MetaData/totalOzoneQualityFlag - any_bit_set_of: 9 - actions: - - name: set - flag: RowAnomaly - - name: reject - - # Scan position check: reject scan position >= 25 - - filter: RejectList - filter variables: - - name: ozoneTotal - where: - - variable: - name: MetaData/sensorScanPosition - minvalue: 25 - actions: - - name: set - flag: BadScan - - name: reject - - # Accept total_ozone_error_flag values of 0 and 1, but not any others. - - filter: RejectList - filter variables: - - name: ozoneTotal - where: - - variable: - name: MetaData/totalOzoneQualityCode - is_not_in: 0, 1 - actions: - - name: set - flag: RetrievalQualityCodeFlag - - name: reject - - # Use data with best ozone algorighm - - filter: RejectList - filter variables: - - name: ozoneTotal - where: - - variable: - name: MetaData/bestOzoneAlgorithmFlag - is_in: 3, 13 - actions: - - name: set - flag: RetrievalQualityAlgorithmFlag - - name: reject - - # Data Thinning - - filter: Gaussian Thinning - horizontal_mesh: 150 - use_reduced_horizontal_grid: true - distance_norm: geodesic - actions: - - name: set - flag: Thinning - - name: reject - - obs post filters: - # GSI setup routine QC - # Gross check - - filter: Background Check - filter variables: - - name: ozoneTotal - threshold: 10.0 - absolute threshold: 300.0 - actions: - - name: set - flag: GrossCheck - - name: reject - - # End of Filters diff --git a/parm/atm/obs/config/ompsnp_npp.yaml.j2 b/parm/atm/obs/config/ompsnp_npp.yaml.j2 deleted file mode 100644 index c95cc0274..000000000 --- a/parm/atm/obs/config/ompsnp_npp.yaml.j2 +++ /dev/null @@ -1,304 +0,0 @@ -- obs space: - name: ompsnp_npp - obsdatain: - engine: - type: H5File - obsfile: '{{ DATA }}/obs/{{ OPREFIX }}ompsnp_npp.tm00.nc' - obsgrouping: - group variables: ["latitude"] - sort variable: "pressure" - sort order: "ascending" - obsdataout: - engine: - type: H5File - obsfile: '{{ DATA }}/diags/diag_ompsnp_npp_{{ current_cycle | to_YMDH }}.nc' - io pool: - max pool size: 1 - simulated variables: [ozoneLayer] - - #obs operator: - # name: AtmVertInterpLay - # geovals: [mole_fraction_of_ozone_in_air] - # coefficients: [0.007886131] # convert from ppmv to DU - # nlevels: [22] - - obs operator: - name: ColumnRetrieval - nlayers_retrieval: 1 - tracer variables: [mole_fraction_of_ozone_in_air] - isApriori: false - isAveragingKernel: false - totalNoVertice: false - stretchVertices: none #options: top, bottom, topbottom, none - # model units coeff: 2.240013904035E-3 # this number to match the gsihofx values - model units coeff: 2.241398632746E-3 # this number to match the gsihofx values (use this) - # the actual scientific conversion factor is - # 2.1415E-3 kg[O3]/m-2 to DU - # so the name of the geovals - # is also likely wrong, as it apprears to be a mass - # fraction given the conversion factor needed - - obs pre filters: - # Observation error assignment - - filter: Perform Action - filter variables: - - name: ozoneLayer - action: - name: assign error - error function: - name: ObsFunction/ObsErrorModelStepwiseLinear - options: - xvar: - name: MetaData/pressure - xvals: [0.001, 10.1325, 16.00935, 25.43258, 40.32735, 63.93607, 101.325, 160.0935, 254.3257, 403.2735, 639.3608, 1013.25, 1600.935, 2543.258, 4032.735, 6393.607, 10132.5, 16009.35, 25432.57, 40327.35, 63936.07, 101325] - errors: [7.7236, 0.020, 0.020, 0.025, 0.080, 0.150, 0.056, 0.125, 0.200, 0.299, 0.587, 0.864, 1.547, 2.718, 3.893, 4.353, 3.971, 4.407, 4.428, 3.312, 2.198, 2.285] - # errors: [7.7236, 0.020, 0.020, 0.025, 0.040, 0.080, 0.156, 0.245, 0.510, 1.098, 3.917, 6.124, 6.347, 5.798, 6.843, 9.253,10.091,10.967, 8.478, 5.572, 2.638, 3.525] # operational from gfs.v16.3.9 (late 2023) - - obs prior filters: - # Do not assimilation where pressure is zero - # Zero pressure indicates the data is total column ozone - - filter: RejectList - filter variables: - - name: ozoneLayer - where: - - variable: - name: MetaData/pressure - maxvalue: 0.0001 - - # Sanity check on observaton values - - filter: Bounds Check - filter variables: - - name: ozoneLayer - minvalue: 0 - maxvalue: 1000 - action: - name: reject - - # Total Ozone Quality Check (keeps 0, 2) - # 0 indentifies good data - # 2 identifies good data with a solar zenith angle > 84 degrees - - filter: RejectList - filter variables: - - name: ozoneLayer - where: - - variable: - name: MetaData/totalOzoneQuality - is_not_in: 0, 2 - - # Profile Ozone Quality Check (keeps 0, 1, 7) - # 0 : good data - # 1 : good data with a solar zenith angle > 84 degrees - # 7 : profile for which stray light correction applied - - filter: RejectList - filter variables: - - name: ozoneLayer - where: - - variable: - name: MetaData/profileOzoneQuality - is_not_in: 0, 1, 7 - - obs post filters: - # Gross error check - - filter: Background Check - filter variables: - - name: ozoneLayer - absolute threshold: 120 - action: - name: reject - where: - - variable: - name: MetaData/pressure - maxvalue: 0.001 - - - filter: Background Check - filter variables: - - name: ozoneLayer - absolute threshold: 30 - action: - name: reject - where: - - variable: - name: MetaData/pressure - minvalue: 30000.0 - maxvalue: 110000.0 - - - filter: Background Check - filter variables: - - name: ozoneLayer - absolute threshold: 40 - action: - name: reject - where: - - variable: - name: MetaData/pressure - minvalue: 20000.0 - maxvalue: 30000.0 - - - filter: Background Check - filter variables: - - name: ozoneLayer - absolute threshold: 44.42 - action: - name: reject - where: - - variable: - name: MetaData/pressure - minvalue: 10100.0 - maxvalue: 20000.0 - - - filter: Background Check - filter variables: - - name: ozoneLayer - absolute threshold: 57.52 - action: - name: reject - where: - - variable: - name: MetaData/pressure - minvalue: 6400.0 - maxvalue: 10100.0 - - - filter: Background Check - filter variables: - - name: ozoneLayer - absolute threshold: 69.4 - action: - name: reject - where: - - variable: - name: MetaData/pressure - minvalue: 4000.0 - maxvalue: 6400.0 - - - filter: Background Check - filter variables: - - name: ozoneLayer - absolute threshold: 70 - action: - name: reject - where: - - variable: - name: MetaData/pressure - minvalue: 2600.0 - maxvalue: 4000.0 - - - filter: Background Check - filter variables: - - name: ozoneLayer - absolute threshold: 62.73 - action: - name: reject - where: - - variable: - name: MetaData/pressure - minvalue: 1600.0 - maxvalue: 2600.0 - - - filter: Background Check - filter variables: - - name: ozoneLayer - absolute threshold: 50.52 - action: - name: reject - where: - - variable: - name: MetaData/pressure - minvalue: 1100.0 - maxvalue: 1600.0 - - - filter: Background Check - filter variables: - - name: ozoneLayer - absolute threshold: 35.9 - action: - name: reject - where: - - variable: - name: MetaData/pressure - minvalue: 700.0 - maxvalue: 1100.0 - - - filter: Background Check - filter variables: - - name: ozoneLayer - absolute threshold: 26.41 - action: - name: reject - where: - - variable: - name: MetaData/pressure - minvalue: 400.0 - maxvalue: 700.0 - - - filter: Background Check - filter variables: - - name: ozoneLayer - absolute threshold: 20.51 - action: - name: reject - where: - - variable: - name: MetaData/pressure - minvalue: 300.0 - maxvalue: 400.0 - - - filter: Background Check - filter variables: - - name: ozoneLayer - absolute threshold: 12.82 - action: - name: reject - where: - - variable: - name: MetaData/pressure - minvalue: 200.0 - maxvalue: 300.0 - - - filter: Background Check - filter variables: - - name: ozoneLayer - absolute threshold: 10 - action: - name: reject - where: - - variable: - name: MetaData/pressure - maxvalue: 70.0 - maxvalue: 200.0 - - - filter: Background Check - filter variables: - - name: ozoneLayer - absolute threshold: 5 - action: - name: reject - where: - - variable: - name: MetaData/pressure - minvalue: 40.0 - maxvalue: 70.0 - - - filter: Background Check - filter variables: - - name: ozoneLayer - absolute threshold: 2 - action: - name: reject - where: - - variable: - name: MetaData/pressure - minvalue: 30.0 - maxvalue: 40.0 - - - filter: Background Check - filter variables: - - name: ozoneLayer - absolute threshold: 1 - action: - name: reject - where: - - variable: - name: MetaData/pressure - maxvalue: 30.0 - - # End of Filters diff --git a/parm/atm/obs/config/ompstc_npp.yaml.j2 b/parm/atm/obs/config/ompstc_npp.yaml.j2 deleted file mode 100644 index 8fd6b69cd..000000000 --- a/parm/atm/obs/config/ompstc_npp.yaml.j2 +++ /dev/null @@ -1,113 +0,0 @@ -- obs space: - name: ompstc_npp - obsdatain: - engine: - type: H5File - obsfile: '{{ DATA }}/obs/{{ OPREFIX }}ompstc_npp.tm00.nc' - obsdataout: - engine: - type: H5File - obsfile: '{{ DATA }}/diags/diag_ompstc_npp_{{ current_cycle | to_YMDH }}.nc' - io pool: - max pool size: 1 - simulated variables: [ozoneTotal] - - #obs operator: - # name: AtmVertInterpLay - # geovals: [mole_fraction_of_ozone_in_air] - # coefficients: [0.007886131] # convert from ppmv to DU - # nlevels: [1] - - obs operator: - name: ColumnRetrieval - nlayers_retrieval: 1 - tracer variables: [mole_fraction_of_ozone_in_air] - isApriori: false - isAveragingKernel: false - totalNoVertice: true - stretchVertices: topbottom # options: top, bottom, topbottom, none - model units coeff: 2.241398632746E-3 - - obs pre filters: - - filter: Perform Action - filter variables: - - name: ozoneTotal - action: - name: assign error - error parameter: 6.0 - - obs prior filters: - # GSI read routine QC - # range sanity check - - filter: Bounds Check - filter variables: - - name: ozoneTotal - minvalue: 0 - maxvalue: 1000 - action: - name: reject - - #- filter: Gaussian Thinning - # horizontal_mesh: 150 - # use_reduced_horizontal_grid: true - # distance_norm: geodesic - # action: - # name: reject - - # Accept total_ozone_error_flag values of 0 and 1, but not any others. - - filter: RejectList - filter variables: - - name: ozoneTotal - where: - - variable: - name: MetaData/totalOzoneQualityCode - is_not_in: 0, 1 - - - filter: RejectList - filter variables: - - name: ozoneTotal - where: - - variable: - name: MetaData/bestOzoneAlgorithmFlag - is_in: 3, 13 - - # GSI setup routine QC - - filter: RejectList - filter variables: - - name: ozoneTotal - where: - - variable: - name: MetaData/sensorScanPosition - is_in: 1, 2, 3, 4, 35 - - variable: - name: MetaData/latitude - minvalue: 50.0 - - - filter: RejectList - filter variables: - - name: ozoneTotal - where: - - variable: - name: MetaData/sensorScanPosition - is_in: 1, 2, 3, 4, 35 - - variable: - name: MetaData/latitude - maxvalue: -50.0 - - - filter: Gaussian Thinning - horizontal_mesh: 150 - use_reduced_horizontal_grid: true - distance_norm: geodesic - action: - name: reject - - obs post filters: - - filter: Background Check - filter variables: - - name: ozoneTotal - threshold: 10.0 - absolute threshold: 300.0 - action: - name: reject - - # End of Filters diff --git a/parm/atm/obs/config/satwind.yaml.j2 b/parm/atm/obs/config/satwind.yaml.j2 deleted file mode 100644 index de0524198..000000000 --- a/parm/atm/obs/config/satwind.yaml.j2 +++ /dev/null @@ -1,882 +0,0 @@ -- obs space: - name: satwind - obsdatain: - engine: - type: H5File - obsfile: {{ DATA }}/obs/{{ OPREFIX }}satwind.{{ current_cycle | to_YMDH }}.nc - obsdataout: - engine: - type: H5File - obsfile: {{ DATA }}/diags/diag_satwind_{{ current_cycle | to_YMDH }}.nc - io pool: - max pool size: 1 - simulated variables: [windEastward, windNorthward] - obs operator: - name: VertInterp - obs pre filters: - # Assign the initial observation error, based on height/pressure - # Hard-wiring to prepobs_errtable.global by Type - # ObsError is currently not updating in diag file, but passes directly to EffectiveError when no inflation is specified in YAML - # Type 240 (GOES SWIR): Assigned all dummy values in prepobs_errtable.global - - filter: Perform Action - filter variables: - - name: windEastward - - name: windNorthward - where: - - variable: ObsType/windEastward - is_in: 240 - minvalue: -135. - maxvalue: 135. - action: - name: assign error - error function: - name: ObsFunction/ObsErrorModelStepwiseLinear - options: - xvar: - name: MetaData/pressure - xvals: [110000.,0.] #Pressure (Pa) - errors: [1000000000.,1000000000.] - # Type 241 (Multi Spec. Imager LWIR): Assigned all dummy values - - filter: Perform Action - filter variables: - - name: windEastward - - name: windNorthward - where: - - variable: ObsType/windEastward - is_in: 241 - minvalue: -135. - maxvalue: 135. - action: - name: assign error - error function: - name: ObsFunction/ObsErrorModelStepwiseLinear - options: - xvar: - name: MetaData/pressure - xvals: [110000.,0.] #Pressure (Pa) - errors: [1000000000.,1000000000.] - # Type 242 (Himawari VIS) - - filter: Perform Action - filter variables: - - name: windEastward - - name: windNorthward - where: - - variable: ObsType/windEastward - is_in: 242 - minvalue: -135. - maxvalue: 135. - action: - name: assign error - error function: - name: ObsFunction/ObsErrorModelStepwiseLinear - options: - xvar: - name: MetaData/pressure - xvals: [110000.,105000.,100000.,95000.,90000.,85000.,80000.,75000.,70000.,65000.,60000.,55000.,50000.,45000.,40000.,35000.,30000.,25000.,20000.,15000.,10000.,7500.,5000.,4000.,3000.,2000.,1000.,500.,400.,300.,200.,100.,0.] #Pressure (Pa) - errors: [3.8,3.8,3.8,3.8,3.8,3.8,3.8,3.8,3.9,3.9,4.,4.,4.1,5.,6.,6.3,6.6,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.] - # Type 243 (MVIRI/SEVIRI VIS) - - filter: Perform Action - filter variables: - - name: windEastward - - name: windNorthward - where: - - variable: ObsType/windEastward - is_in: 243 - minvalue: -135. - maxvalue: 135. - action: - name: assign error - error function: - name: ObsFunction/ObsErrorModelStepwiseLinear - options: - xvar: - name: MetaData/pressure - xvals: [110000.,105000.,100000.,95000.,90000.,85000.,80000.,75000.,70000.,65000.,60000.,55000.,50000.,45000.,40000.,35000.,30000.,25000.,20000.,15000.,10000.,7500.,5000.,4000.,3000.,2000.,1000.,500.,400.,300.,200.,100.,0.] #Pressure (Pa) - errors: [3.8,3.8,3.8,3.8,3.8,3.8,3.8,3.8,3.9,3.9,4.,4.,4.1,5.,6.,6.3,6.6,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.] - # Type 244 (AVHRR LWIR) - - filter: Perform Action - filter variables: - - name: windEastward - - name: windNorthward - where: - - variable: ObsType/windEastward - is_in: 244 - minvalue: -135. - maxvalue: 135. - action: - name: assign error - error function: - name: ObsFunction/ObsErrorModelStepwiseLinear - options: - xvar: - name: MetaData/pressure - xvals: [110000.,105000.,100000.,95000.,90000.,85000.,80000.,75000.,70000.,65000.,60000.,55000.,50000.,45000.,40000.,35000.,30000.,25000.,20000.,15000.,10000.,7500.,5000.,4000.,3000.,2000.,1000.,500.,400.,300.,200.,100.,0.] #Pressure (Pa) - errors: [3.8,3.8,3.8,3.8,3.8,3.8,3.8,3.8,3.9,3.9,4.,4.,4.1,5.,6.,6.3,6.6,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.] - # Type 245 (GOES LWIR): I am assuming these are halved relative to prepobs_errtable.global, based on read_satwnd.f90: L1410–1416 - - filter: Perform Action - filter variables: - - name: windEastward - - name: windNorthward - where: - - variable: ObsType/windEastward - is_in: 245 - minvalue: -135. - maxvalue: 135. - action: - name: assign error - error function: - name: ObsFunction/ObsErrorModelStepwiseLinear - options: - xvar: - name: MetaData/pressure - xvals: [110000.,105000.,100000.,95000.,90000.,85000.,80000.,75000.,70000.,65000.,60000.,55000.,50000.,45000.,40000.,35000.,30000.,25000.,20000.,15000.,10000.,7500.,5000.,4000.,3000.,2000.,1000.,500.,400.,300.,200.,100.,0.] #Pressure (Pa) - errors: [7.6,7.6,7.6,7.6,7.6,7.6,7.6,7.6,7.8,7.8,8.,8.,8.2,10.,12.,12.6,13.2,14.,14.,14.,14.,14.,14.,14.,14.,14.,14.,14.,14.,14.,14.,14.,14.] - # Type 246 (GOES cloud-top WV): I am assuming these are halved relative to prepobs_errtable.global, based on read_satwnd.f90: L1410–1416 - - filter: Perform Action - filter variables: - - name: windEastward - - name: windNorthward - where: - - variable: ObsType/windEastward - is_in: 246 - minvalue: -135. - maxvalue: 135. - action: - name: assign error - error function: - name: ObsFunction/ObsErrorModelStepwiseLinear - options: - xvar: - name: MetaData/pressure - xvals: [110000.,105000.,100000.,95000.,90000.,85000.,80000.,75000.,70000.,65000.,60000.,55000.,50000.,45000.,40000.,35000.,30000.,25000.,20000.,15000.,10000.,7500.,5000.,4000.,3000.,2000.,1000.,500.,400.,300.,200.,100.,0.] #Pressure (Pa) - errors: [7.6,7.6,7.6,7.6,7.6,7.6,7.6,7.6,7.8,7.8,8.,8.,8.2,10.,12.,12.6,13.2,14.,14.,14.,14.,14.,14.,14.,14.,14.,14.,14.,14.,14.,14.,14.,14.] - # Type 247 (GOES clear-sky WV): I am assuming these are halved relative to prepobs_errtable.global, based on read_satwnd.f90: L1410–1416 - - filter: Perform Action - filter variables: - - name: windEastward - - name: windNorthward - where: - - variable: ObsType/windEastward - is_in: 247 - minvalue: -135. - maxvalue: 135. - action: - name: assign error - error function: - name: ObsFunction/ObsErrorModelStepwiseLinear - options: - xvar: - name: MetaData/pressure - xvals: [110000.,105000.,100000.,95000.,90000.,85000.,80000.,75000.,70000.,65000.,60000.,55000.,50000.,45000.,40000.,35000.,30000.,25000.,20000.,15000.,10000.,7500.,5000.,4000.,3000.,2000.,1000.,500.,400.,300.,200.,100.,0.] #Pressure (Pa) - errors: [7.6,7.6,7.6,7.6,7.6,7.6,7.6,7.6,7.8,7.8,8.,8.,8.2,10.,12.,12.6,13.2,14.,14.,14.,14.,14.,14.,14.,14.,14.,14.,14.,14.,14.,14.,14.,14.] - # Type 248 (GOES Sounder cloud-top WV): Assigned all dummy values - - filter: Perform Action - filter variables: - - name: windEastward - - name: windNorthward - where: - - variable: ObsType/windEastward - is_in: 248 - minvalue: -135. - maxvalue: 135. - action: - name: assign error - error function: - name: ObsFunction/ObsErrorModelStepwiseLinear - options: - xvar: - name: MetaData/pressure - xvals: [110000.,0.] #Pressure (Pa) - errors: [1000000000.,1000000000.] - # Type 249 (GOES Sounder clear-sky WV): Assigned all dummy values - - filter: Perform Action - filter variables: - - name: windEastward - - name: windNorthward - where: - - variable: ObsType/windEastward - is_in: 249 - minvalue: -135. - maxvalue: 135. - action: - name: assign error - error function: - name: ObsFunction/ObsErrorModelStepwiseLinear - options: - xvar: - name: MetaData/pressure - xvals: [110000.,0.] #Pressure (Pa) - errors: [1000000000.,1000000000.] - # Type 250 (Himawari AHI WV, cloud-top or clear-sky) - - filter: Perform Action - filter variables: - - name: windEastward - - name: windNorthward - where: - - variable: ObsType/windEastward - is_in: 250 - minvalue: -135. - maxvalue: 135. - action: - name: assign error - error function: - name: ObsFunction/ObsErrorModelStepwiseLinear - options: - xvar: - name: MetaData/pressure - xvals: [110000.,105000.,100000.,95000.,90000.,85000.,80000.,75000.,70000.,65000.,60000.,55000.,50000.,45000.,40000.,35000.,30000.,25000.,20000.,15000.,10000.,7500.,5000.,4000.,3000.,2000.,1000.,500.,400.,300.,200.,100.,0.] #Pressure (Pa) - errors: [3.8,3.8,3.8,3.8,3.8,3.8,3.8,3.8,3.9,3.9,4.,4.,4.1,5.,7.,7.3,7.6,8.,8.,8.,8.,8.,8.,8.,8.,8.,8.,8.,8.,8.,8.,8.,8.] - # Type 251 (GOES VIS): Assigned all dummy values - - filter: Perform Action - filter variables: - - name: windEastward - - name: windNorthward - where: - - variable: ObsType/windEastward - is_in: 251 - minvalue: -135. - maxvalue: 135. - action: - name: assign error - error function: - name: ObsFunction/ObsErrorModelStepwiseLinear - options: - xvar: - name: MetaData/pressure - xvals: [110000.,0.] #Pressure (Pa) - errors: [1000000000.,1000000000.] - # Type 252 (Himawari AHI LWIR) - - filter: Perform Action - filter variables: - - name: windEastward - - name: windNorthward - where: - - variable: ObsType/windEastward - is_in: 252 - minvalue: -135. - maxvalue: 135. - action: - name: assign error - error function: - name: ObsFunction/ObsErrorModelStepwiseLinear - options: - xvar: - name: MetaData/pressure - xvals: [110000.,105000.,100000.,95000.,90000.,85000.,80000.,75000.,70000.,65000.,60000.,55000.,50000.,45000.,40000.,35000.,30000.,25000.,20000.,15000.,10000.,7500.,5000.,4000.,3000.,2000.,1000.,500.,400.,300.,200.,100.,0.] #Pressure (Pa) - errors: [3.8,3.8,3.8,3.8,3.8,3.8,3.8,3.8,3.9,3.9,4.,4.,4.1,5.,6.,6.3,6.6,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.] - # Type 253 (MVIRI/SEVERI LWIR) - - filter: Perform Action - filter variables: - - name: windEastward - - name: windNorthward - where: - - variable: ObsType/windEastward - is_in: 253 - minvalue: -135. - maxvalue: 135. - action: - name: assign error - error function: - name: ObsFunction/ObsErrorModelStepwiseLinear - options: - xvar: - name: MetaData/pressure - xvals: [110000.,105000.,100000.,95000.,90000.,85000.,80000.,75000.,70000.,65000.,60000.,55000.,50000.,45000.,40000.,35000.,30000.,25000.,20000.,15000.,10000.,7500.,5000.,4000.,3000.,2000.,1000.,500.,400.,300.,200.,100.,0.] #Pressure (Pa) - errors: [3.8,3.8,3.8,3.8,3.8,3.8,3.8,3.8,3.9,3.9,4.,4.,4.1,5.,6.,6.3,6.6,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.] - # Type 254 (MVIRI/SEVIRI WV, both cloud-top and clear-sky) - - filter: Perform Action - filter variables: - - name: windEastward - - name: windNorthward - where: - - variable: ObsType/windEastward - is_in: 254 - minvalue: -135. - maxvalue: 135. - action: - name: assign error - error function: - name: ObsFunction/ObsErrorModelStepwiseLinear - options: - xvar: - name: MetaData/pressure - xvals: [110000.,105000.,100000.,95000.,90000.,85000.,80000.,75000.,70000.,65000.,60000.,55000.,50000.,45000.,40000.,35000.,30000.,25000.,20000.,15000.,10000.,7500.,5000.,4000.,3000.,2000.,1000.,500.,400.,300.,200.,100.,0.] #Pressure (Pa) - errors: [3.8,3.8,3.8,3.8,3.8,3.8,3.8,3.8,3.9,3.9,4.,4.5,6.1,6.,6.5,7.3,7.6,7.,7.5,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.] - # Type 255 (GOES low-level picture triplet cloud drift): According to prepbufr table this should no longer exist?? - - filter: Perform Action - filter variables: - - name: windEastward - - name: windNorthward - where: - - variable: ObsType/windEastward - is_in: 255 - minvalue: -135. - maxvalue: 135. - action: - name: assign error - error function: - name: ObsFunction/ObsErrorModelStepwiseLinear - options: - xvar: - name: MetaData/pressure - xvals: [110000.,105000.,100000.,95000.,90000.,85000.,80000.,75000.,70000.,65000.,60000.,55000.,50000.,45000.,40000.,35000.,30000.,25000.,20000.,15000.,10000.,7500.,5000.,4000.,3000.,2000.,1000.,500.,400.,300.,200.,100.,0.] #Pressure (Pa) - errors: [3.8,3.8,3.8,3.8,3.8,3.8,3.8,3.8,3.9,3.9,4.,4.,4.1,5.,6.,6.3,6.6,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.] - # Type 256 (Multi Spec. Imager WV, both clear-sky and cloud-top): Assigned all dummy values - - filter: Perform Action - filter variables: - - name: windEastward - - name: windNorthward - where: - - variable: ObsType/windEastward - is_in: 256 - minvalue: -135. - maxvalue: 135. - action: - name: assign error - error function: - name: ObsFunction/ObsErrorModelStepwiseLinear - options: - xvar: - name: MetaData/pressure - xvals: [110000.,0.] #Pressure (Pa) - errors: [1000000000.,1000000000.] - # Type 257 (MODIS LWIR) - - filter: Perform Action - filter variables: - - name: windEastward - - name: windNorthward - where: - - variable: ObsType/windEastward - is_in: 257 - minvalue: -135. - maxvalue: 135. - action: - name: assign error - error function: - name: ObsFunction/ObsErrorModelStepwiseLinear - options: - xvar: - name: MetaData/pressure - xvals: [110000.,105000.,100000.,95000.,90000.,85000.,80000.,75000.,70000.,65000.,60000.,55000.,50000.,45000.,40000.,35000.,30000.,25000.,20000.,15000.,10000.,7500.,5000.,4000.,3000.,2000.,1000.,500.,400.,300.,200.,100.,0.] #Pressure (Pa) - errors: [3.8,3.8,3.8,3.8,3.8,3.8,3.8,3.8,3.9,3.9,4.,4.,4.1,5.,6.,6.3,6.6,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.] - # Type 258 (MODIS cloud-top WV): Some levels assigned dummy values - - filter: Perform Action - filter variables: - - name: windEastward - - name: windNorthward - where: - - variable: ObsType/windEastward - is_in: 258 - minvalue: -135. - maxvalue: 135. - action: - name: assign error - error function: - name: ObsFunction/ObsErrorModelStepwiseLinear - options: - xvar: - name: MetaData/pressure - xvals: [110000.,60000.,55000.,50000.,45000.,40000.,35000.,30000.,25000.,20000.,15000.,10000.,7500.,5000.,4000.,3000.,2000.,1000.,500.,400.,300.,200.,100.,0.] #Pressure (Pa) - errors: [1000000000.,1000000000.,4.,4.1,5.,6.,6.3,6.6,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.] - # Type 259 (MODIS clear-sky WV): Some levels assigned dummy values - - filter: Perform Action - filter variables: - - name: windEastward - - name: windNorthward - where: - - variable: ObsType/windEastward - is_in: 259 - minvalue: -135. - maxvalue: 135. - action: - name: assign error - error function: - name: ObsFunction/ObsErrorModelStepwiseLinear - options: - xvar: - name: MetaData/pressure - xvals: [110000.,60000.,55000.,50000.,45000.,40000.,35000.,30000.,25000.,20000.,15000.,10000.,7500.,5000.,4000.,3000.,2000.,1000.,500.,400.,300.,200.,100.,0.] #Pressure (Pa) - errors: [1000000000.,1000000000.,4.,4.1,5.,6.,6.3,6.6,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.] - # Type 260 (VIIRS LWIR): All levels assigned dummy values in prepobs_errtable.global, HOWEVER the GSI values appear - # to be a standard profile (borrowed from e.g., Type=244). Using the standard profile here. - # It's possibly that my prepobs_errtable.global file is out-of-date. - - filter: Perform Action - filter variables: - - name: windEastward - - name: windNorthward - where: - - variable: ObsType/windEastward - is_in: 260 - minvalue: -135. - maxvalue: 135. - action: - name: assign error - error function: - name: ObsFunction/ObsErrorModelStepwiseLinear - options: - xvar: - name: MetaData/pressure - xvals: [110000.,105000.,100000.,95000.,90000.,85000.,80000.,75000.,70000.,65000.,60000.,55000.,50000.,45000.,40000.,35000.,30000.,25000.,20000.,15000.,10000.,7500.,5000.,4000.,3000.,2000.,1000.,500.,400.,300.,200.,100.,0.] #Pressure (Pa) - errors: [3.8,3.8,3.8,3.8,3.8,3.8,3.8,3.8,3.9,3.9,4.,4.,4.1,5.,6.,6.3,6.6,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.] - obs prior filters: - # - # sanity-check criteria - # - # Observation Range Sanity Check - # NOT EXPLICITLY CLEARED: No obs in this range in file, so 0 Bounds Check rejects (which is correct) but essentially untested - - filter: Bounds Check - filter variables: - - name: windEastward - - name: windNorthward - minvalue: -130. - maxvalue: 130. - action: - name: reject - # Velocity Sanity Check - # NOT EXPLICITLY CLEARED: No obs in this range in file, so 0 Bounds Check rejects (which is correct) but essentially untested - - filter: Bounds Check - filter variables: - - name: windEastward - - name: windNorthward - test variables: - - name: ObsFunction/Velocity - maxvalue: 130. - action: - name: reject - # - # preQC (read_satwnd) criteria - # - # EUMETSAT winds: satelliteIdentifer [50–79] (>49, <80) - # Reject obs with satelliteZenithAngle > 68 deg - # NOT EXPLICITLY CLEARED: No obs in this range in file, so 0 Bounds Check rejects (which is correct) but essentially untested - - filter: Bounds Check - filter variables: - - name: windEastward - - name: windNorthward - where: - - variable: MetaData/satelliteIdentifier - minvalue: 49. - maxvalue: 80. - test variables: - - name: MetaData/satelliteZenithAngle - maxvalue: 68. - action: - name: reject - # Reject obs with windComputationMethod = 5 (clear-sky WV AMV) - # CLEARED - - filter: Bounds Check - filter variables: - - name: windEastward - - name: windNorthward - where: - - variable: MetaData/satelliteIdentifier - minvalue: 49. - maxvalue: 80. - test variables: - - name: MetaData/windComputationMethod - maxvalue: 4. - action: - name: reject - # Reject obs with qualityInformationWithoutForecast < 85. - # CLEARED - - filter: Bounds Check - filter variables: - - name: windEastward - - name: windNorthward - where: - - variable: MetaData/satelliteIdentifier - minvalue: 49. - maxvalue: 80. - test variables: - - name: MetaData/qualityInformationWithoutForecast - minvalue: 85. - action: - name: reject - # JMA: satelliteIdentifier [100–199] (>99, <200) - # Reject obs with satelliteZenithAngle > 68 deg - # NOT EXPLICITLY CLEARED: No obs in this range in file, so 0 Bounds Check rejects (which is correct) but essentially untested - - filter: Bounds Check - filter variables: - - name: windEastward - - name: windNorthward - where: - - variable: MetaData/satelliteIdentifier - minvalue: 99. - maxvalue: 200. - test variables: - - name: MetaData/satelliteZenithAngle - maxvalue: 68. - action: - name: reject - # Reject obs with windComputationMethod = 5 (clear-sky WV AMV) - # NOT EXPLICITLY CLEARED: No obs in this range in file, so 0 Bounds Check rejects (which is correct) but essentially untested - - filter: Bounds Check - filter variables: - - name: windEastward - - name: windNorthward - where: - - variable: MetaData/satelliteIdentifier - minvalue: 99. - maxvalue: 200. - test variables: - - name: MetaData/windComputationMethod - maxvalue: 4. - action: - name: reject - # Reject obs with qualityInformationWithoutForecast < 85. - # CLEARED - - filter: Bounds Check - filter variables: - - name: windEastward - - name: windNorthward - where: - - variable: MetaData/satelliteIdentifier - minvalue: 99. - maxvalue: 200. - test variables: - - name: MetaData/qualityInformationWithoutForecast - minvalue: 85. - action: - name: reject - # NESDIS: satelliteIdentifier [250–299] (>249, <300) - # Reject obs with satelliteZenithAngle > 68 deg - # NOT EXPLICITLY CLEARED: No obs in this range in file, so 0 Bounds Check rejects (which is correct) but essentially untested - - filter: Bounds Check - filter variables: - - name: windEastward - - name: windNorthward - where: - - variable: MetaData/satelliteIdentifier - minvalue: 249. - maxvalue: 300. - test variables: - - name: MetaData/satelliteZenithAngle - maxvalue: 68. - action: - name: reject - # Reject obs with qualityInformationWithoutForecast < 90. OR > 100. - # CLEARED - - filter: Bounds Check - filter variables: - - name: windEastward - - name: windNorthward - where: - - variable: MetaData/satelliteIdentifier - minvalue: 249. - maxvalue: 300. - test variables: - - name: MetaData/qualityInformationWithoutForecast - minvalue: 90. - maxvalue: 100. - action: - name: reject - # Reject obs with pressure < 15000. - # CLEARED - - filter: Bounds Check - filter variables: - - name: windEastward - - name: windNorthward - where: - - variable: MetaData/satelliteIdentifier - minvalue: 249. - maxvalue: 300. - test variables: - - name: MetaData/pressure - minvalue: 15000. - action: - name: reject - # Reject obs with pressure < 70000. when Type=251 - # NOT EXPLICITLY CLEARED: No obs in this range in file, so 0 Bounds Check rejects (which is correct) but essentially untested - - filter: Bounds Check - filter variables: - - name: windEastward - - name: windNorthward - where: - - variable: MetaData/satelliteIdentifier - minvalue: 249. - maxvalue: 300. - - variable: ObsType/windEastward - is_in: 251 - test variables: - - name: MetaData/pressure - minvalue: 70000. - action: - name: reject - # Reject obs with pressure > 30000. when Type=246 - # CLEARED - - filter: Bounds Check - filter variables: - - name: windEastward - - name: windNorthward - where: - - variable: MetaData/satelliteIdentifier - minvalue: 249. - maxvalue: 300. - - variable: ObsType/windEastward - is_in: 246 - test variables: - - name: MetaData/pressure - maxvalue: 30000. - action: - name: reject - # Reject obs with pressure > 85000. when isli=1 (land surface) - # CLEARED - - filter: Bounds Check - filter variables: - - name: windEastward - - name: windNorthward - where: - - variable: MetaData/satelliteIdentifier - minvalue: 249. - maxvalue: 300. - - variable: GeoVaLs/land_type_index_NPOESS - minvalue: 1. - maxvalue: 1. - test variables: - - name: MetaData/pressure - maxvalue: 85000. - action: - name: reject - # Reject obs with pct1 (Coeff. of Var.) outside of 0.04–0.5, Type [240,245,246,251] ONLY - # CLEARED - - filter: Bounds Check - filter variables: - - name: windEastward - - name: windNorthward - where: - - variable: MetaData/satelliteIdentifier - minvalue: 249. - maxvalue: 300. - - variable: ObsType/windEastward - is_in: 240,245,246,251 - test variables: - - name: MetaData/coefficientOfVariation - minvalue: 0.04 - maxvalue: 0.5 - action: - name: reject - # NESDIS obs are also subject to the experr_norm test defined as: - # - # if (10. - 0.1*(expectedError))/(ob_speed)>0.9, or ob_speed<0.1, reject, applies to Types [240,245,246,247,251] - # - # This is not implemented in the YAML file because we do not have the capability to compute - # the norm, lacking the required math operators. Instead, this will likely have to be - # implemented as an ObsFunction like the SatWindsLNVDCheck test. - # - # setupw criteria - # - # Reject any ob Type [240–260] when pressure greater than 950 mb. - # CLEARED: minvalue/maxvalue are >=/<=, not >/<, so editing range by 1 Pa - - filter: Bounds Check - filter variables: - - name: windEastward - - name: windNorthward - where: - - variable: ObsType/windEastward - is_in: 240-260 - test variables: - - name: MetaData/pressure - maxvalue: 95001. - action: - name: reject - # GOES IR (245) reject when pressure between 399 and 801 mb. - # CLEARED: minvalue/maxvalue are >=/<=, not >/<, so editing range by 1 Pa - - filter: Perform Action - filter variables: - - name: windEastward - - name: windNorthward - where: - - variable: MetaData/pressure - minvalue: 39901. - maxvalue: 80099. - - variable: ObsType/windEastward - is_in: 245 - action: - name: reject - # JMA IR (252) reject when pressure between 499 and 801 mb. - # CLEARED: minvalue/maxvalue are >=/<=, not >/<, so editing range by 1 Pa - - filter: Perform Action - filter variables: - - name: windEastward - - name: windNorthward - where: - - variable: MetaData/pressure - minvalue: 49901. - maxvalue: 80099. - - variable: ObsType/windEastward - is_in: 252 - action: - name: reject - # EUMETSAT IR (253) reject when pressure between 401 and 801 mb. - # CLEARED: minvalue/maxvalue are >=/<=, not >/<, so editing range by 1 Pa - - filter: Perform Action - filter variables: - - name: windEastward - - name: windNorthward - where: - - variable: MetaData/pressure - minvalue: 40101. - maxvalue: 80099. - - variable: ObsType/windEastward - is_in: 253 - action: - name: reject - # GOES WV (246, 250, 254), reject when pressure greater than 399 mb. - # CLEARED: maxvalue is rejecting >, not >= as per a Perform Action, so threshold is unchanged - - filter: Bounds Check - filter variables: - - name: windEastward - - name: windNorthward - where: - - variable: ObsType/windEastward - is_in: 246, 250, 254 - test variables: - - name: MetaData/pressure - maxvalue: 39900. - action: - name: reject - # EUMET (242) and JMA (243) vis, reject when pressure less than 700 mb. - # CLEARED: minvalue is rejecting <, not <= as per a Perform Action, so threshold is unchanged - - filter: Bounds Check - filter variables: - - name: windEastward - - name: windNorthward - where: - - variable: ObsType/windEastward - is_in: 242, 243 - test variables: - - name: MetaData/pressure - minvalue: 70000. - action: - name: reject - # MODIS-Aqua/Terra (257) and (259), reject when pressure less than 249 mb. - # CLEARED: minvalue is rejecting <, not <= as per a Perform Action, so threshold is unchanged - - filter: Bounds Check - filter variables: - - name: windEastward - - name: windNorthward - where: - - variable: ObsType/windEastward - is_in: 257,259 - test variables: - - name: MetaData/pressure - minvalue: 24900. - action: - name: reject - # MODIS-Aqua/Terra (258) and (259), reject when pressure greater than 600 mb. - # NOT EXPLICITLY CLEARED: No obs in this range in file, so 0 Bounds Check rejects (which is correct) but essentially untested - # maxvalue is rejecting >, not >= as per a Perform Action, so threshold is unchanged - - filter: Bounds Check - filter variables: - - name: windEastward - - name: windNorthward - where: - - variable: ObsType/windEastward - is_in: 258, 259 - test variables: - - name: MetaData/pressure - maxvalue: 60000. - action: - name: reject - # 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 - - filter: Difference Check - filter variables: - - name: windEastward - - name: windNorthward - reference: GeoVaLs/tropopause_pressure - value: MetaData/pressure - minvalue: -5000. # 50 hPa above tropopause level, negative p-diff - action: - name: reject - # 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 - - filter: Difference Check - filter variables: - - name: windEastward - - name: windNorthward - where: - - variable: - name: GeoVaLs/land_type_index_NPOESS - minvalue: 1. - - variable: - name: ObsType/windEastward - is_in: 247 - reference: GeoVaLs/surface_pressure - value: MetaData/pressure - maxvalue: -11000. # within 110 hPa above surface pressure, negative p-diff - action: - name: reject - # AVHRR (244), MODIS (257,258,259), and VIIRS (260) reject any - # observation with a /=0 surface type (non-water surface) within - # 200 hPa of the surface pressure (as part of the LNVD check). - # CLEARED: maxvalue is rejecting >, not >= as per a Perform Action, so threshold is unchanged - - filter: Difference Check - filter variables: - - name: windEastward - - name: windNorthward - where: - - variable: - name: GeoVaLs/land_type_index_NPOESS - minvalue: 1. - - variable: - name: ObsType/windEastward - is_in: 244, 257-260 - reference: GeoVaLs/surface_pressure - value: MetaData/pressure - maxvalue: -20000. # within 200 hPa above surface pressure, negative p-diff - action: - name: reject - obs post filters: - # Reject GOES (247) when difference of wind direction is more than 50 degrees. - # CLEARED: maxvalue is rejecting >, not >= as per a Perform Action, so threshold is unchanged - - filter: Bounds Check - filter variables: - - name: windEastward - - name: windNorthward - where: - - variable: ObsType/windEastward - is_in: 247 - test variables: - - name: ObsFunction/WindDirAngleDiff - maxvalue: 50. - action: - name: reject - # AVHRR (244), MODIS (257,258,259), VIIRS (260), GOES (247) use a LNVD check. - # CLEARED: maxvalue is rejecting >, not >= as per a Perform Action, so threshold is unchanged - - filter: Bounds Check - filter variables: - - name: windEastward - - name: windNorthward - where: - - variable: ObsType/windEastward - is_in: 244, 247, 257-260 - test variables: - - name: ObsFunction/SatWindsLNVDCheck - maxvalue: 3. - action: - name: reject - # - # All satwinds subject to a SPDB check (function may be broken?) - # We are ignoring this filter for now, and will come back to - # the issue of how to handle this SPDB check later. For now, - # observations that are GSI-rejected based on this test are - # not being considered when checking acceptance compliance. - #- filter: Bounds Check - # filter variables: - # - name: windEastward - # - name: windNorthward - # test variables: - # - name: ObsFunction/SatWindsSPDBCheck - # options: - # error_min: 1.4 - # error_max: 20.0 - # maxvalue: 1.75 - # action: - # name: reject - # defer to post: true - linear obs operator: - name: Identity - diff --git a/parm/atm/obs/config/satwind_abi_goes-16.yaml.j2 b/parm/atm/obs/config/satwind_abi_goes-16.yaml.j2 deleted file mode 100644 index 6f7b5a785..000000000 --- a/parm/atm/obs/config/satwind_abi_goes-16.yaml.j2 +++ /dev/null @@ -1,566 +0,0 @@ -- obs space: - name: satwind_goes-16 - obsdatain: - engine: - type: H5File - obsfile: '{{ DATA }}/obs/{{ OPREFIX }}satwnd.abi_goes-16.tm00.nc' - obsdataout: - engine: - type: H5File - obsfile: '{{ DATA }}/diags/diag_satwind_abi_goes-16_{{ current_cycle | to_YMDH }}.nc' - io pool: - max pool size: 1 - simulated variables: [windEastward, windNorthward] - - obs operator: - name: VertInterp - hofx scaling field: SurfaceWindScalingPressure - hofx scaling field group: DerivedVariables - - linear obs operator: - name: VertInterp - - obs prior filters: - # Apply variable changes needed for wind scaling - # For wind observations with pressure provided - - filter: Variable Transforms - Transform: SurfaceWindScalingPressure - SkipWhenNoObs: False - - # Calculate error inflation factor for duplicate observations - #- filter: Variable Assignment - # assignments: - # - name: ObsErrorFactorDuplicateCheck/windEastward - # type: float - # function: - # name: ObsFunction/ObsErrorFactorDuplicateCheck - # options: - # use_air_pressure: true - # variable: windEastward - - #- filter: Variable Assignment - # assignments: - # - name: ObsErrorFactorDuplicateCheck/windNorthward - # type: float - # function: - # name: ObsFunction/ObsErrorFactorDuplicateCheck - # options: - # use_air_pressure: true - # variable: windNorthward - - obs post filters: - # Assign the initial observation error, based on height/pressure - # Hard-wiring to prepobs_errtable.global by Type - # ObsError is currently not updating in diag file, but passes directly to EffectiveError when no inflation is specified in YAML - # Type 240 (GOES SWIR): Assigned all dummy values in prepobs_errtable.global - - filter: Perform Action - filter variables: - - name: windEastward - - name: windNorthward - where: - - variable: ObsType/windEastward - is_in: 240 - action: - name: assign error - error function: - name: ObsFunction/ObsErrorModelStepwiseLinear - options: - xvar: - name: MetaData/pressure - xvals: [110000.,0.] #Pressure (Pa) - errors: [1000000000.,1000000000.] - - # Type 245 (GOES LWIR): I am assuming these are halved relative to prepobs_errtable.global, based on read_satwnd.f90: L1410–1416 - - filter: Perform Action - filter variables: - - name: windEastward - - name: windNorthward - where: - - variable: ObsType/windEastward - is_in: 245 - action: - name: assign error - error function: - name: ObsFunction/ObsErrorModelStepwiseLinear - options: - xvar: - name: MetaData/pressure - xvals: [110000.,105000.,100000.,95000.,90000.,85000.,80000.,75000.,70000.,65000.,60000.,55000.,50000.,45000.,40000.,35000.,30000.,25000.,20000.,15000.,10000.,7500.,5000.,4000.,3000.,2000.,1000.,500.,400.,300.,200.,100.,0.] #Pressure (Pa) - errors: [7.6,7.6,7.6,7.6,7.6,7.6,7.6,7.6,7.8,7.8,8.,8.,8.2,10.,12.,12.6,13.2,14.,14.,14.,14.,14.,14.,14.,14.,14.,14.,14.,14.,14.,14.,14.,14.] - - # Type 246 (GOES cloud-top WV): I am assuming these are halved relative to prepobs_errtable.global, based on read_satwnd.f90: L1410–1416 - - filter: Perform Action - filter variables: - - name: windEastward - - name: windNorthward - where: - - variable: ObsType/windEastward - is_in: 246 - action: - name: assign error - error function: - name: ObsFunction/ObsErrorModelStepwiseLinear - options: - xvar: - name: MetaData/pressure - xvals: [110000.,105000.,100000.,95000.,90000.,85000.,80000.,75000.,70000.,65000.,60000.,55000.,50000.,45000.,40000.,35000.,30000.,25000.,20000.,15000.,10000.,7500.,5000.,4000.,3000.,2000.,1000.,500.,400.,300.,200.,100.,0.] #Pressure (Pa) - errors: [7.6,7.6,7.6,7.6,7.6,7.6,7.6,7.6,7.8,7.8,8.,8.,8.2,10.,12.,12.6,13.2,14.,14.,14.,14.,14.,14.,14.,14.,14.,14.,14.,14.,14.,14.,14.,14.] - - # Type 247 (GOES clear-sky WV): I am assuming these are halved relative to prepobs_errtable.global, based on read_satwnd.f90: L1410–1416 - - filter: Perform Action - filter variables: - - name: windEastward - - name: windNorthward - where: - - variable: ObsType/windEastward - is_in: 247 - action: - name: assign error - error function: - name: ObsFunction/ObsErrorModelStepwiseLinear - options: - xvar: - name: MetaData/pressure - xvals: [110000.,105000.,100000.,95000.,90000.,85000.,80000.,75000.,70000.,65000.,60000.,55000.,50000.,45000.,40000.,35000.,30000.,25000.,20000.,15000.,10000.,7500.,5000.,4000.,3000.,2000.,1000.,500.,400.,300.,200.,100.,0.] #Pressure (Pa) - errors: [7.6,7.6,7.6,7.6,7.6,7.6,7.6,7.6,7.8,7.8,8.,8.,8.2,10.,12.,12.6,13.2,14.,14.,14.,14.,14.,14.,14.,14.,14.,14.,14.,14.,14.,14.,14.,14.] - - # Type 251 (GOES VIS): Assigned all dummy values - - filter: Perform Action - filter variables: - - name: windEastward - - name: windNorthward - where: - - variable: ObsType/windEastward - is_in: 251 - action: - name: assign error - error function: - name: ObsFunction/ObsErrorModelStepwiseLinear - options: - xvar: - name: MetaData/pressure - xvals: [110000.,0.] #Pressure (Pa) - errors: [1000000000.,1000000000.] - - # sanity-check criteria - # Observation Range Sanity Check - # NOT EXPLICITLY CLEARED: No obs in this range in file, so 0 Bounds Check rejects (which is correct) but essentially untested - - filter: Bounds Check - filter variables: - - name: windEastward - - name: windNorthward - minvalue: -130. - maxvalue: 130. - action: - name: reject - - # Velocity Sanity Check - # NOT EXPLICITLY CLEARED: No obs in this range in file, so 0 Bounds Check rejects (which is correct) but essentially untested - - filter: Bounds Check - filter variables: - - name: windEastward - - name: windNorthward - test variables: - - name: ObsFunction/Velocity - maxvalue: 130. - action: - name: reject - - # GSI read routine QC (part-1) - # Exclude Type 251 (VIS) --- obs tossed without passing to setup routine - - filter: Perform Action - filter variables: - - name: windEastward - - name: windNorthward - where: - - variable: ObsType/windEastward - is_in: 251 - action: - name: reject - - # Exclude data with satellite zenith angle > 68 for all types --- obs tossed without passing to setup routine - - filter: Bounds Check - filter variables: - - name: windEastward - - name: windNorthward - test variables: - - name: MetaData/satelliteZenithAngle - maxvalue: 68. - action: - name: reject - - # Reject obs with pressure < 12500 pa --- obs tosed without passing to setup routine - - filter: Bounds Check - filter variables: - - name: windEastward - - name: windNorthward - where: - - variable: MetaData/satelliteIdentifier - is_in: 250-299 - test variables: - - name: MetaData/pressure - minvalue: 12500. - 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 - # Notes: This check was missing, so added (eliu) - # Replace land_type_index_NPOSS with water_area_fraction (eliu) - - filter: Bounds Check - filter variables: - - name: windEastward - - name: windNorthward - where: - - variable: ObsType/windEastward - is_in: 240, 245 - - variable: MetaData/latitude - minvalue: 20. - test variables: - - name: GeoVaLs/water_area_fraction - minvalue: 0.99 - action: - name: reject - - # GSI read routine QC (part-2) - # Reject obs with qualityInformationWithoutForecast < 90. OR > 100. - - filter: Bounds Check - filter variables: - - name: windEastward - - name: windNorthward - where: - - variable: MetaData/satelliteIdentifier - is_in: 250-299 - test variables: - - name: MetaData/qualityInformationWithoutForecast - minvalue: 90. - maxvalue: 100. - action: - name: reject - - # Reject obs with pressure < 15000 pa. - - filter: Bounds Check - filter variables: - - name: windEastward - - name: windNorthward - where: - - variable: MetaData/satelliteIdentifier - is_in: 250-299 - test variables: - - name: MetaData/pressure - minvalue: 15000. - action: - name: reject - - # Reject obs with pressure < 70000 pa. when Type=251 - - filter: Bounds Check - filter variables: - - name: windEastward - - name: windNorthward - where: - - variable: MetaData/satelliteIdentifier - is_in: 250-299 - - variable: ObsType/windEastward - is_in: 251 - test variables: - - name: MetaData/pressure - minvalue: 70000. - action: - name: reject - - # Reject obs with pressure > 30000. when Type=246 - - filter: Bounds Check - filter variables: - - name: windEastward - - name: windNorthward - where: - - variable: MetaData/satelliteIdentifier - is_in: 250-299 - - variable: ObsType/windEastward - is_in: 246 - test variables: - - name: MetaData/pressure - maxvalue: 30000. - action: - name: reject - - # Reject obs with pressure > 85000. when isli=1 (land surface) - # Notes: Replace land_type_index_NPOESS with land_area_fraction (eliu) - - filter: Bounds Check - filter variables: - - name: windEastward - - name: windNorthward - where: - - variable: MetaData/satelliteIdentifier - is_in: 250-299 - - variable: GeoVaLs/land_area_fraction - minvalue: 0.99 - test variables: - - name: MetaData/pressure - maxvalue: 85000. - action: - name: reject - - # Reject obs with pct1 (Coeff. of Var.) outside of 0.04–0.5, Type [240,245,246,251] ONLY - - filter: Bounds Check - filter variables: - - name: windEastward - - name: windNorthward - where: - - variable: MetaData/satelliteIdentifier - is_in: 250-299 - - variable: ObsType/windEastward - is_in: 240, 245, 246, 251 - test variables: - - name: MetaData/coefficientOfVariation - minvalue: 0.04 - maxvalue: 0.5 - action: - name: reject - - # NESDIS obs are also subject to the experr_norm test defined as: - # - # if (10. - 0.1*(expectedError))/(ob_speed)>0.9, or ob_speed<0.1, reject, applies to NESDIS winds - # - # CLEARED: With caveat that float precision/handling differences can generate different acceptance criteria - # between UFO and GSI for observations with an experr_norm value right around the maxvalue. - - filter: Bounds Check - filter variables: - - name: windEastward - - name: windNorthward - where: - - variable: MetaData/satelliteIdentifier - is_in: 250-299 - test variables: - - name: ObsFunction/SatWindsErrnormCheck - maxvalue: 0.9 - action: - name: reject - - # Reject all Type=240 (GOES SWIR) AMVs: These are not currently assimilated in GSI and they have missing-values - # assigned to ob-errors - - filter: Perform Action - filter variables: - - name: windEastward - - name: windNorthward - where: - - variable: ObsType/windEastward - is_in: 240 - action: - name: reject - - # 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 - - filter: Bounds Check - filter variables: - - name: windEastward - - name: windNorthward - where: - - variable: ObsType/windEastward - is_in: 240-260 - test variables: - - name: MetaData/pressure - maxvalue: 95001. - action: - name: reject - - # GOES IR (245) reject when pressure between 399 and 801 mb. - # # CLEARED: minvalue/maxvalue are >=/<=, not >/<, so editing range by 1 Pa - - filter: Perform Action - filter variables: - - name: windEastward - - name: windNorthward - where: - - variable: MetaData/pressure - minvalue: 39901. - maxvalue: 80099. - - variable: ObsType/windEastward - is_in: 245 - action: - name: reject - - # GOES WV (246, 250, 254), reject when pressure greater than 399 mb. - # CLEARED: maxvalue is rejecting >, not >= as per a Perform Action, so threshold is unchanged - - filter: Bounds Check - filter variables: - - name: windEastward - - name: windNorthward - where: - - variable: ObsType/windEastward - is_in: 246, 250, 254 - test variables: - - name: MetaData/pressure - maxvalue: 39900. - action: - name: reject - - # 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. - # Need to check if troposphere pressure was implemented correctly in fv3-jed - - filter: Difference Check - filter variables: - - name: windEastward - - name: windNorthward - reference: GeoVaLs/tropopause_pressure - value: MetaData/pressure - minvalue: -5000. # 50 hPa above tropopause level, negative p-diff - action: - name: reject - - # 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. - - filter: Difference Check - filter variables: - - name: windEastward - - name: windNorthward - where: - - variable: - name: GeoVaLs/water_area_fraction - maxvalue: 0.99 - - variable: - name: ObsType/windEastward - is_in: 247 - reference: GeoVaLs/surface_pressure - value: MetaData/pressure - maxvalue: -11000. # within 110 hPa above surface pressure, negative p-diff - action: - name: reject - - # Reject GOES (247) when difference of wind direction is more than 50 degrees. - # CLEARED: maxvalue is rejecting >, not >= as per a Perform Action, so threshold is unchanged - - filter: Bounds Check - filter variables: - - name: windEastward - - name: windNorthward - where: - - variable: ObsType/windEastward - is_in: 247 - test variables: - - name: ObsFunction/WindDirAngleDiff - maxvalue: 50. - action: - name: reject - - # All satwinds must adjust errors based on ObsErrorFactorPressureCheck - # prior to the SPDB check (i.e. the gross-error check). The gross-error - # check uses the adjusted errors for error-bound tightening and rejection, - # so this check has to come first. This check will inflate errors for obs - # that are too close to either the model top or bottom. - # Notes (eliu): GMAO added a required parameter: adjusted_error_name. - - filter: Perform Action - filter variables: - - name: windEastward - where: - - variable: - name: ObsType/windEastward - is_in: 240-260 - action: - name: inflate error - inflation variable: - name: ObsFunction/ObsErrorFactorPressureCheck - options: - surface_obs: false - variable: windEastward - inflation factor: 4.0 - - - filter: Perform Action - filter variables: - - name: windNorthward - where: - - variable: - name: ObsType/windNorthward - is_in: 240-260 - action: - name: inflate error - inflation variable: - name: ObsFunction/ObsErrorFactorPressureCheck - options: - variable: windNorthward - inflation factor: 4.0 - - # All satwinds subject to a gross-error check that contains significant - # modifiers for satwinds with a negative speed-bias. ALL wind gross-error - # checks are currently being done by the SatWindsSPDBCheck. - # CLEARED - - filter: Background Check - filter variables: - - name: windEastward - function absolute threshold: - - name: ObsFunction/WindsSPDBCheck - options: - wndtype: [ 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260] - cgross: [ 2.5, 2.5, 2.5, 1.5, 2.5, 1.3, 1.3, 2.5, 2.5, 2.5, 2.5, 1.3, 2.5, 1.5, 1.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5] - error_min: [1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4] - error_max: [6.1, 6.1, 15.0, 15.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.1, 20.1, 20.1, 20.1, 20.1, 20.1] - variable: windEastward - action: - name: reject - - - filter: Background Check - filter variables: - - name: windNorthward - function absolute threshold: - - name: ObsFunction/WindsSPDBCheck - options: - wndtype: [ 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260] - cgross: [ 2.5, 2.5, 2.5, 1.5, 2.5, 1.3, 1.3, 2.5, 2.5, 2.5, 2.5, 1.3, 2.5, 1.5, 1.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5] - error_min: [1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4] - error_max: [6.1, 6.1, 15.0, 15.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.1, 20.1, 20.1, 20.1, 20.1, 20.1] - variable: windNorthward - action: - name: reject - - # The last error inflation check is for duplicate observations. This one needs - # to come last, because we don't want to inflate errors for duplication if one - # of the duplicates should be rejected. - # Notes (eliu): ObsErrorFactorDuplicateCheck obsfunction requires PreUseFlag (usage parameter from read_satwnd.f90). - # : Turn off duplicate check for now. - #- filter: Perform Action - # filter variables: - # - name: windEastward - # action: - # name: inflate error - # inflation variable: - # name: ObsErrorFactorDuplicateCheck/windEastward - - #- filter: Perform Action - # filter variables: - # - name: windNorthward - # action: - # name: inflate error - # inflation variable: - # name: ObsErrorFactorDuplicateCheck/windNorthward - - # We are extending this to an additional filter that inflates final ob-errors across-the-board by - # 1/0.8 = 1.25. This is caused by the GSI value of nvqc being set to .true. in the global operational - # 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 - # filter variables: - # - name: windEastward - # where: - # - variable: ObsType/windEastward - # is_in: 240-260 - # action: - # name: inflate error - # inflation factor: 1.25 - - #- filter: Perform Action - # filter variables: - # - name: windNorthward - # where: - # - variable: ObsType/windNorthward - # is_in: 240-260 - # action: - # name: inflate error - # inflation factor: 1.25 - - # End of Filters diff --git a/parm/atm/obs/config/satwind_abi_goes-17.yaml.j2 b/parm/atm/obs/config/satwind_abi_goes-17.yaml.j2 deleted file mode 100644 index e0d197c5d..000000000 --- a/parm/atm/obs/config/satwind_abi_goes-17.yaml.j2 +++ /dev/null @@ -1,566 +0,0 @@ -- obs space: - name: satwind_goes-17 - obsdatain: - engine: - type: H5File - obsfile: '{{ DATA }}/obs/{{ OPREFIX }}satwnd.abi_goes-17.tm00.nc' - obsdataout: - engine: - type: H5File - obsfile: '{{ DATA }}/diags/diag_satwind_abi_goes-17_{{ current_cycle | to_YMDH }}.nc' - io pool: - max pool size: 1 - simulated variables: [windEastward, windNorthward] - - obs operator: - name: VertInterp - hofx scaling field: SurfaceWindScalingPressure - hofx scaling field group: DerivedVariables - - linear obs operator: - name: VertInterp - - obs prior filters: - # Apply variable changes needed for wind scaling - # For wind observations with pressure provided - - filter: Variable Transforms - Transform: SurfaceWindScalingPressure - SkipWhenNoObs: False - - # Calculate error inflation factor for duplicate observations - #- filter: Variable Assignment - # assignments: - # - name: ObsErrorFactorDuplicateCheck/windEastward - # type: float - # function: - # name: ObsFunction/ObsErrorFactorDuplicateCheck - # options: - # use_air_pressure: true - # variable: windEastward - - #- filter: Variable Assignment - # assignments: - # - name: ObsErrorFactorDuplicateCheck/windNorthward - # type: float - # function: - # name: ObsFunction/ObsErrorFactorDuplicateCheck - # options: - # use_air_pressure: true - # variable: windNorthward - - obs post filters: - # Assign the initial observation error, based on height/pressure - # Hard-wiring to prepobs_errtable.global by Type - # ObsError is currently not updating in diag file, but passes directly to EffectiveError when no inflation is specified in YAML - # Type 240 (GOES SWIR): Assigned all dummy values in prepobs_errtable.global - - filter: Perform Action - filter variables: - - name: windEastward - - name: windNorthward - where: - - variable: ObsType/windEastward - is_in: 240 - action: - name: assign error - error function: - name: ObsFunction/ObsErrorModelStepwiseLinear - options: - xvar: - name: MetaData/pressure - xvals: [110000.,0.] #Pressure (Pa) - errors: [1000000000.,1000000000.] - - # Type 245 (GOES LWIR): I am assuming these are halved relative to prepobs_errtable.global, based on read_satwnd.f90: L1410–1416 - - filter: Perform Action - filter variables: - - name: windEastward - - name: windNorthward - where: - - variable: ObsType/windEastward - is_in: 245 - action: - name: assign error - error function: - name: ObsFunction/ObsErrorModelStepwiseLinear - options: - xvar: - name: MetaData/pressure - xvals: [110000.,105000.,100000.,95000.,90000.,85000.,80000.,75000.,70000.,65000.,60000.,55000.,50000.,45000.,40000.,35000.,30000.,25000.,20000.,15000.,10000.,7500.,5000.,4000.,3000.,2000.,1000.,500.,400.,300.,200.,100.,0.] #Pressure (Pa) - errors: [7.6,7.6,7.6,7.6,7.6,7.6,7.6,7.6,7.8,7.8,8.,8.,8.2,10.,12.,12.6,13.2,14.,14.,14.,14.,14.,14.,14.,14.,14.,14.,14.,14.,14.,14.,14.,14.] - - # Type 246 (GOES cloud-top WV): I am assuming these are halved relative to prepobs_errtable.global, based on read_satwnd.f90: L1410–1416 - - filter: Perform Action - filter variables: - - name: windEastward - - name: windNorthward - where: - - variable: ObsType/windEastward - is_in: 246 - action: - name: assign error - error function: - name: ObsFunction/ObsErrorModelStepwiseLinear - options: - xvar: - name: MetaData/pressure - xvals: [110000.,105000.,100000.,95000.,90000.,85000.,80000.,75000.,70000.,65000.,60000.,55000.,50000.,45000.,40000.,35000.,30000.,25000.,20000.,15000.,10000.,7500.,5000.,4000.,3000.,2000.,1000.,500.,400.,300.,200.,100.,0.] #Pressure (Pa) - errors: [7.6,7.6,7.6,7.6,7.6,7.6,7.6,7.6,7.8,7.8,8.,8.,8.2,10.,12.,12.6,13.2,14.,14.,14.,14.,14.,14.,14.,14.,14.,14.,14.,14.,14.,14.,14.,14.] - - # Type 247 (GOES clear-sky WV): I am assuming these are halved relative to prepobs_errtable.global, based on read_satwnd.f90: L1410–1416 - - filter: Perform Action - filter variables: - - name: windEastward - - name: windNorthward - where: - - variable: ObsType/windEastward - is_in: 247 - action: - name: assign error - error function: - name: ObsFunction/ObsErrorModelStepwiseLinear - options: - xvar: - name: MetaData/pressure - xvals: [110000.,105000.,100000.,95000.,90000.,85000.,80000.,75000.,70000.,65000.,60000.,55000.,50000.,45000.,40000.,35000.,30000.,25000.,20000.,15000.,10000.,7500.,5000.,4000.,3000.,2000.,1000.,500.,400.,300.,200.,100.,0.] #Pressure (Pa) - errors: [7.6,7.6,7.6,7.6,7.6,7.6,7.6,7.6,7.8,7.8,8.,8.,8.2,10.,12.,12.6,13.2,14.,14.,14.,14.,14.,14.,14.,14.,14.,14.,14.,14.,14.,14.,14.,14.] - - # Type 251 (GOES VIS): Assigned all dummy values - - filter: Perform Action - filter variables: - - name: windEastward - - name: windNorthward - where: - - variable: ObsType/windEastward - is_in: 251 - action: - name: assign error - error function: - name: ObsFunction/ObsErrorModelStepwiseLinear - options: - xvar: - name: MetaData/pressure - xvals: [110000.,0.] #Pressure (Pa) - errors: [1000000000.,1000000000.] - - # sanity-check criteria - # Observation Range Sanity Check - # NOT EXPLICITLY CLEARED: No obs in this range in file, so 0 Bounds Check rejects (which is correct) but essentially untested - - filter: Bounds Check - filter variables: - - name: windEastward - - name: windNorthward - minvalue: -130. - maxvalue: 130. - action: - name: reject - - # Velocity Sanity Check - # NOT EXPLICITLY CLEARED: No obs in this range in file, so 0 Bounds Check rejects (which is correct) but essentially untested - - filter: Bounds Check - filter variables: - - name: windEastward - - name: windNorthward - test variables: - - name: ObsFunction/Velocity - maxvalue: 130. - action: - name: reject - - # GSI read routine QC (part-1) - # Exclude Type 251 (VIS) --- obs tossed without passing to setup routine - - filter: Perform Action - filter variables: - - name: windEastward - - name: windNorthward - where: - - variable: ObsType/windEastward - is_in: 251 - action: - name: reject - - # Exclude data with satellite zenith angle > 68 for all types --- obs tossed without passing to setup routine - - filter: Bounds Check - filter variables: - - name: windEastward - - name: windNorthward - test variables: - - name: MetaData/satelliteZenithAngle - maxvalue: 68. - action: - name: reject - - # Reject obs with pressure < 12500 pa --- obs tosed without passing to setup routine - - filter: Bounds Check - filter variables: - - name: windEastward - - name: windNorthward - where: - - variable: MetaData/satelliteIdentifier - is_in: 250-299 - test variables: - - name: MetaData/pressure - minvalue: 12500. - 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 - # Notes: This check was missing, so added (eliu) - # Replace land_type_index_NPOSS with water_area_fraction (eliu) - - filter: Bounds Check - filter variables: - - name: windEastward - - name: windNorthward - where: - - variable: ObsType/windEastward - is_in: 240, 245 - - variable: MetaData/latitude - minvalue: 20. - test variables: - - name: GeoVaLs/water_area_fraction - minvalue: 0.99 - action: - name: reject - - # GSI read routine QC (part-2) - # Reject obs with qualityInformationWithoutForecast < 90. OR > 100. - - filter: Bounds Check - filter variables: - - name: windEastward - - name: windNorthward - where: - - variable: MetaData/satelliteIdentifier - is_in: 250-299 - test variables: - - name: MetaData/qualityInformationWithoutForecast - minvalue: 90. - maxvalue: 100. - action: - name: reject - - # Reject obs with pressure < 15000 pa. - - filter: Bounds Check - filter variables: - - name: windEastward - - name: windNorthward - where: - - variable: MetaData/satelliteIdentifier - is_in: 250-299 - test variables: - - name: MetaData/pressure - minvalue: 15000. - action: - name: reject - - # Reject obs with pressure < 70000 pa. when Type=251 - - filter: Bounds Check - filter variables: - - name: windEastward - - name: windNorthward - where: - - variable: MetaData/satelliteIdentifier - is_in: 250-299 - - variable: ObsType/windEastward - is_in: 251 - test variables: - - name: MetaData/pressure - minvalue: 70000. - action: - name: reject - - # Reject obs with pressure > 30000. when Type=246 - - filter: Bounds Check - filter variables: - - name: windEastward - - name: windNorthward - where: - - variable: MetaData/satelliteIdentifier - is_in: 250-299 - - variable: ObsType/windEastward - is_in: 246 - test variables: - - name: MetaData/pressure - maxvalue: 30000. - action: - name: reject - - # Reject obs with pressure > 85000. when isli=1 (land surface) - # Notes: Replace land_type_index_NPOESS with land_area_fraction (eliu) - - filter: Bounds Check - filter variables: - - name: windEastward - - name: windNorthward - where: - - variable: MetaData/satelliteIdentifier - is_in: 250-299 - - variable: GeoVaLs/land_area_fraction - minvalue: 0.99 - test variables: - - name: MetaData/pressure - maxvalue: 85000. - action: - name: reject - - # Reject obs with pct1 (Coeff. of Var.) outside of 0.04–0.5, Type [240,245,246,251] ONLY - - filter: Bounds Check - filter variables: - - name: windEastward - - name: windNorthward - where: - - variable: MetaData/satelliteIdentifier - is_in: 250-299 - - variable: ObsType/windEastward - is_in: 240, 245, 246, 251 - test variables: - - name: MetaData/coefficientOfVariation - minvalue: 0.04 - maxvalue: 0.5 - action: - name: reject - - # NESDIS obs are also subject to the experr_norm test defined as: - # - # if (10. - 0.1*(expectedError))/(ob_speed)>0.9, or ob_speed<0.1, reject, applies to NESDIS winds - # - # CLEARED: With caveat that float precision/handling differences can generate different acceptance criteria - # between UFO and GSI for observations with an experr_norm value right around the maxvalue. - - filter: Bounds Check - filter variables: - - name: windEastward - - name: windNorthward - where: - - variable: MetaData/satelliteIdentifier - is_in: 250-299 - test variables: - - name: ObsFunction/SatWindsErrnormCheck - maxvalue: 0.9 - action: - name: reject - - # Reject all Type=240 (GOES SWIR) AMVs: These are not currently assimilated in GSI and they have missing-values - # assigned to ob-errors - - filter: Perform Action - filter variables: - - name: windEastward - - name: windNorthward - where: - - variable: ObsType/windEastward - is_in: 240 - action: - name: reject - - # 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 - - filter: Bounds Check - filter variables: - - name: windEastward - - name: windNorthward - where: - - variable: ObsType/windEastward - is_in: 240-260 - test variables: - - name: MetaData/pressure - maxvalue: 95001. - action: - name: reject - - # GOES IR (245) reject when pressure between 399 and 801 mb. - # # CLEARED: minvalue/maxvalue are >=/<=, not >/<, so editing range by 1 Pa - - filter: Perform Action - filter variables: - - name: windEastward - - name: windNorthward - where: - - variable: MetaData/pressure - minvalue: 39901. - maxvalue: 80099. - - variable: ObsType/windEastward - is_in: 245 - action: - name: reject - - # GOES WV (246, 250, 254), reject when pressure greater than 399 mb. - # CLEARED: maxvalue is rejecting >, not >= as per a Perform Action, so threshold is unchanged - - filter: Bounds Check - filter variables: - - name: windEastward - - name: windNorthward - where: - - variable: ObsType/windEastward - is_in: 246, 250, 254 - test variables: - - name: MetaData/pressure - maxvalue: 39900. - action: - name: reject - - # 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. - # Need to check if troposphere pressure was implemented correctly in fv3-jed - - filter: Difference Check - filter variables: - - name: windEastward - - name: windNorthward - reference: GeoVaLs/tropopause_pressure - value: MetaData/pressure - minvalue: -5000. # 50 hPa above tropopause level, negative p-diff - action: - name: reject - - # 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. - - filter: Difference Check - filter variables: - - name: windEastward - - name: windNorthward - where: - - variable: - name: GeoVaLs/water_area_fraction - maxvalue: 0.99 - - variable: - name: ObsType/windEastward - is_in: 247 - reference: GeoVaLs/surface_pressure - value: MetaData/pressure - maxvalue: -11000. # within 110 hPa above surface pressure, negative p-diff - action: - name: reject - - # Reject GOES (247) when difference of wind direction is more than 50 degrees. - # CLEARED: maxvalue is rejecting >, not >= as per a Perform Action, so threshold is unchanged - - filter: Bounds Check - filter variables: - - name: windEastward - - name: windNorthward - where: - - variable: ObsType/windEastward - is_in: 247 - test variables: - - name: ObsFunction/WindDirAngleDiff - maxvalue: 50. - action: - name: reject - - # All satwinds must adjust errors based on ObsErrorFactorPressureCheck - # prior to the SPDB check (i.e. the gross-error check). The gross-error - # check uses the adjusted errors for error-bound tightening and rejection, - # so this check has to come first. This check will inflate errors for obs - # that are too close to either the model top or bottom. - # Notes (eliu): GMAO added a required parameter: adjusted_error_name. - - filter: Perform Action - filter variables: - - name: windEastward - where: - - variable: - name: ObsType/windEastward - is_in: 240-260 - action: - name: inflate error - inflation variable: - name: ObsFunction/ObsErrorFactorPressureCheck - options: - surface_obs: false - variable: windEastward - inflation factor: 4.0 - - - filter: Perform Action - filter variables: - - name: windNorthward - where: - - variable: - name: ObsType/windNorthward - is_in: 240-260 - action: - name: inflate error - inflation variable: - name: ObsFunction/ObsErrorFactorPressureCheck - options: - variable: windNorthward - inflation factor: 4.0 - - # All satwinds subject to a gross-error check that contains significant - # modifiers for satwinds with a negative speed-bias. ALL wind gross-error - # checks are currently being done by the SatWindsSPDBCheck. - # CLEARED - - filter: Background Check - filter variables: - - name: windEastward - function absolute threshold: - - name: ObsFunction/WindsSPDBCheck - options: - wndtype: [ 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260] - cgross: [ 2.5, 2.5, 2.5, 1.5, 2.5, 1.3, 1.3, 2.5, 2.5, 2.5, 2.5, 1.3, 2.5, 1.5, 1.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5] - error_min: [1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4] - error_max: [6.1, 6.1, 15.0, 15.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.1, 20.1, 20.1, 20.1, 20.1, 20.1] - variable: windEastward - action: - name: reject - - - filter: Background Check - filter variables: - - name: windNorthward - function absolute threshold: - - name: ObsFunction/WindsSPDBCheck - options: - wndtype: [ 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260] - cgross: [ 2.5, 2.5, 2.5, 1.5, 2.5, 1.3, 1.3, 2.5, 2.5, 2.5, 2.5, 1.3, 2.5, 1.5, 1.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5] - error_min: [1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4] - error_max: [6.1, 6.1, 15.0, 15.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.1, 20.1, 20.1, 20.1, 20.1, 20.1] - variable: windNorthward - action: - name: reject - - # The last error inflation check is for duplicate observations. This one needs - # to come last, because we don't want to inflate errors for duplication if one - # of the duplicates should be rejected. - # Notes (eliu): ObsErrorFactorDuplicateCheck obsfunction requires PreUseFlag (usage parameter from read_satwnd.f90). - # : Turn off duplicate check for now. - #- filter: Perform Action - # filter variables: - # - name: windEastward - # action: - # name: inflate error - # inflation variable: - # name: ObsErrorFactorDuplicateCheck/windEastward - - #- filter: Perform Action - # filter variables: - # - name: windNorthward - # action: - # name: inflate error - # inflation variable: - # name: ObsErrorFactorDuplicateCheck/windNorthward - - # We are extending this to an additional filter that inflates final ob-errors across-the-board by - # 1/0.8 = 1.25. This is caused by the GSI value of nvqc being set to .true. in the global operational - # 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 - # filter variables: - # - name: windEastward - # where: - # - variable: ObsType/windEastward - # is_in: 240-260 - # action: - # name: inflate error - # inflation factor: 1.25 - - #- filter: Perform Action - # filter variables: - # - name: windNorthward - # where: - # - variable: ObsType/windNorthward - # is_in: 240-260 - # action: - # name: inflate error - # inflation factor: 1.25 - - # End of Filters diff --git a/parm/atm/obs/config/satwind_ahi_h8.yaml.j2 b/parm/atm/obs/config/satwind_ahi_h8.yaml.j2 deleted file mode 100644 index 4a2944e27..000000000 --- a/parm/atm/obs/config/satwind_ahi_h8.yaml.j2 +++ /dev/null @@ -1,397 +0,0 @@ -- obs space: - name: satwind_ahi_h8 - obsdatain: - engine: - type: H5File - obsfile: '{{ DATA }}/obs/{{ OPREFIX }}satwnd.ahi_h8.tm00.nc' - obsdataout: - engine: - type: H5File - obsfile: '{{ DATA }}/diags/diag_satwind_ahi_h8_{{ current_cycle | to_YMDH }}.nc' - io pool: - max pool size: 1 - simulated variables: [windEastward, windNorthward] - - obs operator: - name: VertInterp - hofx scaling field: SurfaceWindScalingPressure - hofx scaling field group: DerivedVariables - - linear obs operator: - name: VertInterp - - # NOTE: Tests using the Gaussian Thinning filter (below) to duplicate GSI's thinning of AHI/Himawari-8 satwinds - # results in more JEDI satwinds in the diag file than in GSI, but far fewer JEDI satwinds assimilated than - # GSI. JEDI under-counts assimilated winds by roughly 25-40%, relative to GSI, and this under-count is not - # even including the temporal thinning which is applied in GSI but not JEDI (by this filter below). See - # GDASApp Issue #741 for details: https://github.com/NOAA-EMC/GDASApp/issues/741 - #obs pre filters: - #- filter: Gaussian Thinning - # horizontal_mesh: 200 - # vertical_mesh: 10000 - # use_reduced_horizontal_grid: true - # round_horizontal_bin_count_to_nearest: true - # partition_longitude_bins_using_mesh: true - - obs prior filters: - # Apply variable changes needed for wind scaling - # For wind observations with pressure provided - - filter: Variable Transforms - Transform: SurfaceWindScalingPressure - SkipWhenNoObs: False - - # Calculate error inflation factor for duplicate observations - #- filter: Variable Assignment - # assignments: - # - name: ObsErrorFactorDuplicateCheck/windEastward - # type: float - # function: - # name: ObsFunction/ObsErrorFactorDuplicateCheck - # options: - # use_air_pressure: true - # variable: windEastward - - #- filter: Variable Assignment - # assignments: - # - name: ObsErrorFactorDuplicateCheck/windNorthward - # type: float - # function: - # name: ObsFunction/ObsErrorFactorDuplicateCheck - # options: - # use_air_pressure: true - # variable: windNorthward - - obs post filters: - # Assign the initial observation error, based on height/pressure - # Hard-wiring to prepobs_errtable.global by Type - # ObsError is currently not updating in diag file, but passes directly to EffectiveError when no inflation is specified in YAML - # Type 242 (Himawari VIS) - - filter: Perform Action - filter variables: - - name: windEastward - - name: windNorthward - where: - - variable: ObsType/windEastward - is_in: 242 - action: - name: assign error - error function: - name: ObsFunction/ObsErrorModelStepwiseLinear - options: - xvar: - name: MetaData/pressure - xvals: [110000.,105000.,100000.,95000.,90000.,85000.,80000.,75000.,70000.,65000.,60000.,55000.,50000.,45000.,40000.,35000.,30000.,25000.,20000.,15000.,10000.,7500.,5000.,4000.,3000.,2000.,1000.,500.,400.,300.,200.,100.,0.] #Pressure (Pa) - errors: [3.8,3.8,3.8,3.8,3.8,3.8,3.8,3.8,3.9,3.9,4.,4.,4.1,5.,6.,6.3,6.6,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.] - - - # Type 250 (Himawari AHI WV, cloud-top or clear-sky) - - filter: Perform Action - filter variables: - - name: windEastward - - name: windNorthward - where: - - variable: ObsType/windEastward - is_in: 250 - action: - name: assign error - error function: - name: ObsFunction/ObsErrorModelStepwiseLinear - options: - xvar: - name: MetaData/pressure - xvals: [110000.,105000.,100000.,95000.,90000.,85000.,80000.,75000.,70000.,65000.,60000.,55000.,50000.,45000.,40000.,35000.,30000.,25000.,20000.,15000.,10000.,7500.,5000.,4000.,3000.,2000.,1000.,500.,400.,300.,200.,100.,0.] #Pressure (Pa) - errors: [3.8,3.8,3.8,3.8,3.8,3.8,3.8,3.8,3.9,3.9,4.,4.,4.1,5.,7.,7.3,7.6,8.,8.,8.,8.,8.,8.,8.,8.,8.,8.,8.,8.,8.,8.,8.,8.] - - - # Type Type 252 (Himawari AHI LWIR) - - filter: Perform Action - filter variables: - - name: windEastward - - name: windNorthward - where: - - variable: ObsType/windEastward - is_in: 252 - action: - name: assign error - error function: - name: ObsFunction/ObsErrorModelStepwiseLinear - options: - xvar: - name: MetaData/pressure - xvals: [110000.,105000.,100000.,95000.,90000.,85000.,80000.,75000.,70000.,65000.,60000.,55000.,50000.,45000.,40000.,35000.,30000.,25000.,20000.,15000.,10000.,7500.,5000.,4000.,3000.,2000.,1000.,500.,400.,300.,200.,100.,0.] #Pressure (Pa) - errors: [3.8,3.8,3.8,3.8,3.8,3.8,3.8,3.8,3.9,3.9,4.,4.,4.1,5.,6.,6.3,6.6,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.] - - # sanity-check criteria - # Observation Range Sanity Check - # NOT EXPLICITLY CLEARED: No obs in this range in file, so 0 Bounds Check rejects (which is correct) but essentially untested - - filter: Bounds Check - filter variables: - - name: windEastward - - name: windNorthward - minvalue: -130. - maxvalue: 130. - action: - name: reject - - # Velocity Sanity Check - # NOT EXPLICITLY CLEARED: No obs in this range in file, so 0 Bounds Check rejects (which is correct) but essentially untested - - filter: Bounds Check - filter variables: - - name: windEastward - - name: windNorthward - test variables: - - name: ObsFunction/Velocity - maxvalue: 130. - action: - name: reject - - # GSI read routine QC (part-1) - # Exclude Type 250 with windComputationMethod==5 (clear-sky WV) --- obs tossed without passing to setup routine - - filter: Perform Action - filter variables: - - name: windEastward - - name: windNorthward - where: - - variable: ObsType/windNorthward - is_in: 250 - - variable: MetaData/windComputationMethod - is_in: 5 - action: - name: reject - - # Exclude data with satellite zenith angle > 68 for all types --- obs tossed without passing to setup routine - - filter: Bounds Check - filter variables: - - name: windEastward - - name: windNorthward - test variables: - - name: MetaData/satelliteZenithAngle - maxvalue: 68. - action: - name: reject - - # GSI read routine QC (part-2) - # Reject obs with qualityInformationWithoutForecast < 85. (also > 100., which is missing data) - - filter: Bounds Check - filter variables: - - name: windEastward - - name: windNorthward - test variables: - - name: MetaData/qualityInformationWithoutForecast - minvalue: 85. - maxvalue: 100. - action: - name: reject - - # Reject Type 252 (IR) winds with a /=0 surface type (non-water surface) when latitude > 20. - - filter: Bounds Check - filter variables: - - name: windEastward - - name: windNorthward - where: - - variable: - name: GeoVaLs/water_area_fraction - maxvalue: 0.99 - - variable: - name: ObsType/windEastward - is_in: 252 - test variables: - - name: MetaData/latitude - maxvalue: 20. - action: - name: reject - - # 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 - - filter: Bounds Check - filter variables: - - name: windEastward - - name: windNorthward - where: - - variable: ObsType/windEastward - is_in: 240-260 - test variables: - - name: MetaData/pressure - maxvalue: 95001. - action: - name: reject - - # IR (Type 242), reject when pressure is less than 700 mb - - filter: Bounds Check - filter variables: - - name: windEastward - - name: windNorthward - where: - - variable: ObsType/windEastward - is_in: 242 - test variables: - - name: MetaData/pressure - minvalue: 70000. - action: - name: reject - - # cloud-top WV (Type 250), reject when pressure greater than 399 mb. - # CLEARED: maxvalue is rejecting >, not >= as per a Perform Action, so threshold is unchanged - - filter: Bounds Check - filter variables: - - name: windEastward - - name: windNorthward - where: - - variable: ObsType/windEastward - is_in: 250 - test variables: - - name: MetaData/pressure - maxvalue: 39900. - action: - name: reject - - # JMA IR (252) reject when pressure between 499 and 801 mb. - # PERFORM ACTION: minvalue/maxvalue are >=/<=, not >/<, so editing range by 1 Pa - - filter: Perform Action - filter variables: - - name: windEastward - - name: windNorthward - where: - - variable: MetaData/pressure - minvalue: 49901. - maxvalue: 80099. - - variable: ObsType/windEastward - is_in: 252 - action: - name: reject - - # 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. - # Need to check if troposphere pressure was implemented correctly in fv3-jed - - filter: Difference Check - filter variables: - - name: windEastward - - name: windNorthward - reference: GeoVaLs/tropopause_pressure - value: MetaData/pressure - minvalue: -5000. # 50 hPa above tropopause level, negative p-diff - action: - name: reject - - # All satwinds must adjust errors based on ObsErrorFactorPressureCheck - # prior to the SPDB check (i.e. the gross-error check). The gross-error - # check uses the adjusted errors for error-bound tightening and rejection, - # so this check has to come first. This check will inflate errors for obs - # that are too close to either the model top or bottom. - # Notes (eliu): GMAO added a required parameter: adjusted_error_name. - - filter: Perform Action - filter variables: - - name: windEastward - where: - - variable: - name: ObsType/windEastward - is_in: 240-260 - action: - name: inflate error - inflation variable: - name: ObsFunction/ObsErrorFactorPressureCheck - options: - surface_obs: false - variable: windEastward - inflation factor: 4.0 - - - filter: Perform Action - filter variables: - - name: windNorthward - where: - - variable: - name: ObsType/windNorthward - is_in: 240-260 - action: - name: inflate error - inflation variable: - name: ObsFunction/ObsErrorFactorPressureCheck - options: - variable: windNorthward - inflation factor: 4.0 - - # All satwinds subject to a gross-error check that contains significant - # modifiers for satwinds with a negative speed-bias. ALL wind gross-error - # checks are currently being done by the SatWindsSPDBCheck. - # CLEARED - - filter: Background Check - filter variables: - - name: windEastward - function absolute threshold: - - name: ObsFunction/WindsSPDBCheck - options: - wndtype: [ 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260] - cgross: [ 2.5, 2.5, 2.5, 1.5, 2.5, 1.3, 1.3, 2.5, 2.5, 2.5, 2.5, 1.3, 2.5, 1.5, 1.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5] - error_min: [1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4] - error_max: [6.1, 6.1, 15.0, 15.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.1, 20.1, 20.1, 20.1, 20.1, 20.1] - variable: windEastward - action: - name: reject - - - filter: Background Check - filter variables: - - name: windNorthward - function absolute threshold: - - name: ObsFunction/WindsSPDBCheck - options: - wndtype: [ 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260] - cgross: [ 2.5, 2.5, 2.5, 1.5, 2.5, 1.3, 1.3, 2.5, 2.5, 2.5, 2.5, 1.3, 2.5, 1.5, 1.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5] - error_min: [1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4] - error_max: [6.1, 6.1, 15.0, 15.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.1, 20.1, 20.1, 20.1, 20.1, 20.1] - variable: windNorthward - action: - name: reject - - # The last error inflation check is for duplicate observations. This one needs - # to come last, because we don't want to inflate errors for duplication if one - # of the duplicates should be rejected. - # Notes (eliu): ObsErrorFactorDuplicateCheck obsfunction requires PreUseFlag (usage parameter from read_satwnd.f90). - # : Turn off duplicate check for now. - #- filter: Perform Action - # filter variables: - # - name: windEastward - # action: - # name: inflate error - # inflation variable: - # name: ObsErrorFactorDuplicateCheck/windEastward - - #- filter: Perform Action - # filter variables: - # - name: windNorthward - # action: - # name: inflate error - # inflation variable: - # name: ObsErrorFactorDuplicateCheck/windNorthward - - # We are extending this to an additional filter that inflates final ob-errors across-the-board by - # 1/0.8 = 1.25. This is caused by the GSI value of nvqc being set to .true. in the global operational - # 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 - # filter variables: - # - name: windEastward - # where: - # - variable: ObsType/windEastward - # is_in: 240-260 - # action: - # name: inflate error - # inflation factor: 1.25 - - #- filter: Perform Action - # filter variables: - # - name: windNorthward - # where: - # - variable: ObsType/windNorthward - # is_in: 240-260 - # action: - # name: inflate error - # inflation factor: 1.25 - - # End of Filters diff --git a/parm/atm/obs/config/satwind_avhrr_n15.yaml.j2 b/parm/atm/obs/config/satwind_avhrr_n15.yaml.j2 deleted file mode 100644 index 65410b780..000000000 --- a/parm/atm/obs/config/satwind_avhrr_n15.yaml.j2 +++ /dev/null @@ -1,289 +0,0 @@ -- obs space: - name: satwind_avhrr_n15 - obsdatain: - engine: - type: H5File - obsfile: '{{ DATA }}/obs/{{ OPREFIX }}satwnd.avhrr_n15.tm00.nc' - obsdataout: - engine: - type: H5File - obsfile: '{{ DATA }}/diags/diag_satwind_avhrr_n15_{{ current_cycle | to_YMDH }}.nc' - io pool: - max pool size: 1 - simulated variables: [windEastward, windNorthward] - - obs operator: - name: VertInterp - hofx scaling field: SurfaceWindScalingPressure - hofx scaling field group: DerivedVariables - - linear obs operator: - name: VertInterp - - # NOTE: Tests using the Gaussian Thinning filter (below) to duplicate GSI's thinning of AHI/Himawari-8 satwinds - # results in more JEDI satwinds in the diag file than in GSI, but far fewer JEDI satwinds assimilated than - # GSI. JEDI under-counts assimilated winds by roughly 25-40%, relative to GSI, and this under-count is not - # even including the temporal thinning which is applied in GSI but not JEDI (by this filter below). See - # GDASApp Issue #741 for details: https://github.com/NOAA-EMC/GDASApp/issues/741 - #obs pre filters: - #- filter: Gaussian Thinning - # horizontal_mesh: 200 - # vertical_mesh: 10000 - # use_reduced_horizontal_grid: true - # round_horizontal_bin_count_to_nearest: true - # partition_longitude_bins_using_mesh: true - - obs prior filters: - # Apply variable changes needed for wind scaling - # For wind observations with pressure provided - - filter: Variable Transforms - Transform: SurfaceWindScalingPressure - SkipWhenNoObs: False - - # Calculate error inflation factor for duplicate observations - #- filter: Variable Assignment - # assignments: - # - name: ObsErrorFactorDuplicateCheck/windEastward - # type: float - # function: - # name: ObsFunction/ObsErrorFactorDuplicateCheck - # options: - # use_air_pressure: true - # variable: windEastward - - #- filter: Variable Assignment - # assignments: - # - name: ObsErrorFactorDuplicateCheck/windNorthward - # type: float - # function: - # name: ObsFunction/ObsErrorFactorDuplicateCheck - # options: - # use_air_pressure: true - # variable: windNorthward - - obs post filters: - # Assign the initial observation error, based on height/pressure - # Hard-wiring to prepobs_errtable.global by Type - # ObsError is currently not updating in diag file, but passes directly to EffectiveError when no inflation is specified in YAML - - # Type 244 (AVHRR LWIR) - - filter: Perform Action - filter variables: - - name: windEastward - - name: windNorthward - where: - - variable: ObsType/windEastward - is_in: 244 - action: - name: assign error - error function: - name: ObsFunction/ObsErrorModelStepwiseLinear - options: - xvar: - name: MetaData/pressure - xvals: [110000.,105000.,100000.,95000.,90000.,85000.,80000.,75000.,70000.,65000.,60000.,55000.,50000.,45000.,40000.,35000.,30000.,25000.,20000.,15000.,10000.,7500.,5000.,4000.,3000.,2000.,1000.,500.,400.,300.,200.,100.,0.] #Pressure (Pa) - errors: [3.8,3.8,3.8,3.8,3.8,3.8,3.8,3.8,3.9,3.9,4.,4.,4.1,5.,6.,6.3,6.6,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.] - - # sanity-check criteria - # Observation Range Sanity Check - # NOT EXPLICITLY CLEARED: No obs in this range in file, so 0 Bounds Check rejects (which is correct) but essentially untested - - filter: Bounds Check - filter variables: - - name: windEastward - - name: windNorthward - minvalue: -130. - maxvalue: 130. - action: - name: reject - - # Velocity Sanity Check - # NOT EXPLICITLY CLEARED: No obs in this range in file, so 0 Bounds Check rejects (which is correct) but essentially untested - - filter: Bounds Check - filter variables: - - name: windEastward - - name: windNorthward - test variables: - - name: ObsFunction/Velocity - maxvalue: 130. - action: - name: reject - - # Reject any observation with a /=0 surface type (non-water surface) within - # 200 hPa of the surface pressure (as part of the LNVD check). - # CLEARED: maxvalue is rejecting >, not >= as per a Perform Action, so threshold is unchanged - - filter: Difference Check - filter variables: - - name: windEastward - - name: windNorthward - where: - - variable: - name: GeoVaLs/water_area_fraction - maxvalue: 0.99 - reference: GeoVaLs/surface_pressure - value: MetaData/pressure - maxvalue: -20000. # within 200 hPa above surface pressure, negative p-diff - action: - name: reject - - # LNVD check - # CLEARED: maxvalue is rejecting >, not >= as per a Perform Action, so threshold is unchanged - - filter: Bounds Check - filter variables: - - name: windEastward - - name: windNorthward - test variables: - - name: ObsFunction/SatWindsLNVDCheck - maxvalue: 3. - action: - name: reject - - # 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 - - filter: Bounds Check - filter variables: - - name: windEastward - - name: windNorthward - where: - - variable: ObsType/windEastward - is_in: 240-260 - test variables: - - name: MetaData/pressure - maxvalue: 95001. - action: - name: reject - - # 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. - # Need to check if troposphere pressure was implemented correctly in fv3-jed - - filter: Difference Check - filter variables: - - name: windEastward - - name: windNorthward - reference: GeoVaLs/tropopause_pressure - value: MetaData/pressure - minvalue: -5000. # 50 hPa above tropopause level, negative p-diff - action: - name: reject - - # All satwinds must adjust errors based on ObsErrorFactorPressureCheck - # prior to the SPDB check (i.e. the gross-error check). The gross-error - # check uses the adjusted errors for error-bound tightening and rejection, - # so this check has to come first. This check will inflate errors for obs - # that are too close to either the model top or bottom. - # Notes (eliu): GMAO added a required parameter: adjusted_error_name. - - filter: Perform Action - filter variables: - - name: windEastward - where: - - variable: - name: ObsType/windEastward - is_in: 240-260 - action: - name: inflate error - inflation variable: - name: ObsFunction/ObsErrorFactorPressureCheck - options: - surface_obs: false - variable: windEastward - inflation factor: 4.0 - - - filter: Perform Action - filter variables: - - name: windNorthward - where: - - variable: - name: ObsType/windNorthward - is_in: 240-260 - action: - name: inflate error - inflation variable: - name: ObsFunction/ObsErrorFactorPressureCheck - options: - variable: windNorthward - inflation factor: 4.0 - - # All satwinds subject to a gross-error check that contains significant - # modifiers for satwinds with a negative speed-bias. ALL wind gross-error - # checks are currently being done by the SatWindsSPDBCheck. - # CLEARED - - filter: Background Check - filter variables: - - name: windEastward - function absolute threshold: - - name: ObsFunction/WindsSPDBCheck - options: - wndtype: [ 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260] - cgross: [ 2.5, 2.5, 2.5, 1.5, 2.5, 1.3, 1.3, 2.5, 2.5, 2.5, 2.5, 1.3, 2.5, 1.5, 1.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5] - error_min: [1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4] - error_max: [6.1, 6.1, 15.0, 15.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.1, 20.1, 20.1, 20.1, 20.1, 20.1] - variable: windEastward - action: - name: reject - - - filter: Background Check - filter variables: - - name: windNorthward - function absolute threshold: - - name: ObsFunction/WindsSPDBCheck - options: - wndtype: [ 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260] - cgross: [ 2.5, 2.5, 2.5, 1.5, 2.5, 1.3, 1.3, 2.5, 2.5, 2.5, 2.5, 1.3, 2.5, 1.5, 1.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5] - error_min: [1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4] - error_max: [6.1, 6.1, 15.0, 15.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.1, 20.1, 20.1, 20.1, 20.1, 20.1] - variable: windNorthward - action: - name: reject - - # The last error inflation check is for duplicate observations. This one needs - # to come last, because we don't want to inflate errors for duplication if one - # of the duplicates should be rejected. - # Notes (eliu): ObsErrorFactorDuplicateCheck obsfunction requires PreUseFlag (usage parameter from read_satwnd.f90). - # : Turn off duplicate check for now. - #- filter: Perform Action - # filter variables: - # - name: windEastward - # action: - # name: inflate error - # inflation variable: - # name: ObsErrorFactorDuplicateCheck/windEastward - - #- filter: Perform Action - # filter variables: - # - name: windNorthward - # action: - # name: inflate error - # inflation variable: - # name: ObsErrorFactorDuplicateCheck/windNorthward - - # We are extending this to an additional filter that inflates final ob-errors across-the-board by - # 1/0.8 = 1.25. This is caused by the GSI value of nvqc being set to .true. in the global operational - # 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 - # filter variables: - # - name: windEastward - # where: - # - variable: ObsType/windEastward - # is_in: 240-260 - # action: - # name: inflate error - # inflation factor: 1.25 - - #- filter: Perform Action - # filter variables: - # - name: windNorthward - # where: - # - variable: ObsType/windNorthward - # is_in: 240-260 - # action: - # name: inflate error - # inflation factor: 1.25 - - # End of Filters diff --git a/parm/atm/obs/config/satwind_avhrr_n18.yaml.j2 b/parm/atm/obs/config/satwind_avhrr_n18.yaml.j2 deleted file mode 100644 index e409b8301..000000000 --- a/parm/atm/obs/config/satwind_avhrr_n18.yaml.j2 +++ /dev/null @@ -1,289 +0,0 @@ -- obs space: - name: satwind_avhrr_n18 - obsdatain: - engine: - type: H5File - obsfile: '{{ DATA }}/obs/{{ OPREFIX }}satwnd.avhrr_n18.tm00.nc' - obsdataout: - engine: - type: H5File - obsfile: '{{ DATA }}/diags/diag_satwind_avhrr_n18_{{ current_cycle | to_YMDH }}.nc' - io pool: - max pool size: 1 - simulated variables: [windEastward, windNorthward] - - obs operator: - name: VertInterp - hofx scaling field: SurfaceWindScalingPressure - hofx scaling field group: DerivedVariables - - linear obs operator: - name: VertInterp - - # NOTE: Tests using the Gaussian Thinning filter (below) to duplicate GSI's thinning of AHI/Himawari-8 satwinds - # results in more JEDI satwinds in the diag file than in GSI, but far fewer JEDI satwinds assimilated than - # GSI. JEDI under-counts assimilated winds by roughly 25-40%, relative to GSI, and this under-count is not - # even including the temporal thinning which is applied in GSI but not JEDI (by this filter below). See - # GDASApp Issue #741 for details: https://github.com/NOAA-EMC/GDASApp/issues/741 - #obs pre filters: - #- filter: Gaussian Thinning - # horizontal_mesh: 200 - # vertical_mesh: 10000 - # use_reduced_horizontal_grid: true - # round_horizontal_bin_count_to_nearest: true - # partition_longitude_bins_using_mesh: true - - obs prior filters: - # Apply variable changes needed for wind scaling - # For wind observations with pressure provided - - filter: Variable Transforms - Transform: SurfaceWindScalingPressure - SkipWhenNoObs: False - - # Calculate error inflation factor for duplicate observations - #- filter: Variable Assignment - # assignments: - # - name: ObsErrorFactorDuplicateCheck/windEastward - # type: float - # function: - # name: ObsFunction/ObsErrorFactorDuplicateCheck - # options: - # use_air_pressure: true - # variable: windEastward - - #- filter: Variable Assignment - # assignments: - # - name: ObsErrorFactorDuplicateCheck/windNorthward - # type: float - # function: - # name: ObsFunction/ObsErrorFactorDuplicateCheck - # options: - # use_air_pressure: true - # variable: windNorthward - - obs post filters: - # Assign the initial observation error, based on height/pressure - # Hard-wiring to prepobs_errtable.global by Type - # ObsError is currently not updating in diag file, but passes directly to EffectiveError when no inflation is specified in YAML - - # Type 244 (AVHRR LWIR) - - filter: Perform Action - filter variables: - - name: windEastward - - name: windNorthward - where: - - variable: ObsType/windEastward - is_in: 244 - action: - name: assign error - error function: - name: ObsFunction/ObsErrorModelStepwiseLinear - options: - xvar: - name: MetaData/pressure - xvals: [110000.,105000.,100000.,95000.,90000.,85000.,80000.,75000.,70000.,65000.,60000.,55000.,50000.,45000.,40000.,35000.,30000.,25000.,20000.,15000.,10000.,7500.,5000.,4000.,3000.,2000.,1000.,500.,400.,300.,200.,100.,0.] #Pressure (Pa) - errors: [3.8,3.8,3.8,3.8,3.8,3.8,3.8,3.8,3.9,3.9,4.,4.,4.1,5.,6.,6.3,6.6,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.] - - # sanity-check criteria - # Observation Range Sanity Check - # NOT EXPLICITLY CLEARED: No obs in this range in file, so 0 Bounds Check rejects (which is correct) but essentially untested - - filter: Bounds Check - filter variables: - - name: windEastward - - name: windNorthward - minvalue: -130. - maxvalue: 130. - action: - name: reject - - # Velocity Sanity Check - # NOT EXPLICITLY CLEARED: No obs in this range in file, so 0 Bounds Check rejects (which is correct) but essentially untested - - filter: Bounds Check - filter variables: - - name: windEastward - - name: windNorthward - test variables: - - name: ObsFunction/Velocity - maxvalue: 130. - action: - name: reject - - # Reject any observation with a /=0 surface type (non-water surface) within - # 200 hPa of the surface pressure (as part of the LNVD check). - # CLEARED: maxvalue is rejecting >, not >= as per a Perform Action, so threshold is unchanged - - filter: Difference Check - filter variables: - - name: windEastward - - name: windNorthward - where: - - variable: - name: GeoVaLs/water_area_fraction - maxvalue: 0.99 - reference: GeoVaLs/surface_pressure - value: MetaData/pressure - maxvalue: -20000. # within 200 hPa above surface pressure, negative p-diff - action: - name: reject - - # LNVD check - # CLEARED: maxvalue is rejecting >, not >= as per a Perform Action, so threshold is unchanged - - filter: Bounds Check - filter variables: - - name: windEastward - - name: windNorthward - test variables: - - name: ObsFunction/SatWindsLNVDCheck - maxvalue: 3. - action: - name: reject - - # 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 - - filter: Bounds Check - filter variables: - - name: windEastward - - name: windNorthward - where: - - variable: ObsType/windEastward - is_in: 240-260 - test variables: - - name: MetaData/pressure - maxvalue: 95001. - action: - name: reject - - # 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. - # Need to check if troposphere pressure was implemented correctly in fv3-jed - - filter: Difference Check - filter variables: - - name: windEastward - - name: windNorthward - reference: GeoVaLs/tropopause_pressure - value: MetaData/pressure - minvalue: -5000. # 50 hPa above tropopause level, negative p-diff - action: - name: reject - - # All satwinds must adjust errors based on ObsErrorFactorPressureCheck - # prior to the SPDB check (i.e. the gross-error check). The gross-error - # check uses the adjusted errors for error-bound tightening and rejection, - # so this check has to come first. This check will inflate errors for obs - # that are too close to either the model top or bottom. - # Notes (eliu): GMAO added a required parameter: adjusted_error_name. - - filter: Perform Action - filter variables: - - name: windEastward - where: - - variable: - name: ObsType/windEastward - is_in: 240-260 - action: - name: inflate error - inflation variable: - name: ObsFunction/ObsErrorFactorPressureCheck - options: - surface_obs: false - variable: windEastward - inflation factor: 4.0 - - - filter: Perform Action - filter variables: - - name: windNorthward - where: - - variable: - name: ObsType/windNorthward - is_in: 240-260 - action: - name: inflate error - inflation variable: - name: ObsFunction/ObsErrorFactorPressureCheck - options: - variable: windNorthward - inflation factor: 4.0 - - # All satwinds subject to a gross-error check that contains significant - # modifiers for satwinds with a negative speed-bias. ALL wind gross-error - # checks are currently being done by the SatWindsSPDBCheck. - # CLEARED - - filter: Background Check - filter variables: - - name: windEastward - function absolute threshold: - - name: ObsFunction/WindsSPDBCheck - options: - wndtype: [ 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260] - cgross: [ 2.5, 2.5, 2.5, 1.5, 2.5, 1.3, 1.3, 2.5, 2.5, 2.5, 2.5, 1.3, 2.5, 1.5, 1.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5] - error_min: [1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4] - error_max: [6.1, 6.1, 15.0, 15.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.1, 20.1, 20.1, 20.1, 20.1, 20.1] - variable: windEastward - action: - name: reject - - - filter: Background Check - filter variables: - - name: windNorthward - function absolute threshold: - - name: ObsFunction/WindsSPDBCheck - options: - wndtype: [ 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260] - cgross: [ 2.5, 2.5, 2.5, 1.5, 2.5, 1.3, 1.3, 2.5, 2.5, 2.5, 2.5, 1.3, 2.5, 1.5, 1.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5] - error_min: [1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4] - error_max: [6.1, 6.1, 15.0, 15.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.1, 20.1, 20.1, 20.1, 20.1, 20.1] - variable: windNorthward - action: - name: reject - - # The last error inflation check is for duplicate observations. This one needs - # to come last, because we don't want to inflate errors for duplication if one - # of the duplicates should be rejected. - # Notes (eliu): ObsErrorFactorDuplicateCheck obsfunction requires PreUseFlag (usage parameter from read_satwnd.f90). - # : Turn off duplicate check for now. - #- filter: Perform Action - # filter variables: - # - name: windEastward - # action: - # name: inflate error - # inflation variable: - # name: ObsErrorFactorDuplicateCheck/windEastward - - #- filter: Perform Action - # filter variables: - # - name: windNorthward - # action: - # name: inflate error - # inflation variable: - # name: ObsErrorFactorDuplicateCheck/windNorthward - - # We are extending this to an additional filter that inflates final ob-errors across-the-board by - # 1/0.8 = 1.25. This is caused by the GSI value of nvqc being set to .true. in the global operational - # 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 - # filter variables: - # - name: windEastward - # where: - # - variable: ObsType/windEastward - # is_in: 240-260 - # action: - # name: inflate error - # inflation factor: 1.25 - - #- filter: Perform Action - # filter variables: - # - name: windNorthward - # where: - # - variable: ObsType/windNorthward - # is_in: 240-260 - # action: - # name: inflate error - # inflation factor: 1.25 - - # End of Filters diff --git a/parm/atm/obs/config/satwind_avhrr_n19.yaml.j2 b/parm/atm/obs/config/satwind_avhrr_n19.yaml.j2 deleted file mode 100644 index bad688e05..000000000 --- a/parm/atm/obs/config/satwind_avhrr_n19.yaml.j2 +++ /dev/null @@ -1,289 +0,0 @@ -- obs space: - name: satwind_avhrr_n19 - obsdatain: - engine: - type: H5File - obsfile: '{{ DATA }}/obs/{{ OPREFIX }}satwnd.avhrr_n19.tm00.nc' - obsdataout: - engine: - type: H5File - obsfile: '{{ DATA }}/diags/diag_satwind_avhrr_n19_{{ current_cycle | to_YMDH }}.nc' - io pool: - max pool size: 1 - simulated variables: [windEastward, windNorthward] - - obs operator: - name: VertInterp - hofx scaling field: SurfaceWindScalingPressure - hofx scaling field group: DerivedVariables - - linear obs operator: - name: VertInterp - - # NOTE: Tests using the Gaussian Thinning filter (below) to duplicate GSI's thinning of AHI/Himawari-8 satwinds - # results in more JEDI satwinds in the diag file than in GSI, but far fewer JEDI satwinds assimilated than - # GSI. JEDI under-counts assimilated winds by roughly 25-40%, relative to GSI, and this under-count is not - # even including the temporal thinning which is applied in GSI but not JEDI (by this filter below). See - # GDASApp Issue #741 for details: https://github.com/NOAA-EMC/GDASApp/issues/741 - #obs pre filters: - #- filter: Gaussian Thinning - # horizontal_mesh: 200 - # vertical_mesh: 10000 - # use_reduced_horizontal_grid: true - # round_horizontal_bin_count_to_nearest: true - # partition_longitude_bins_using_mesh: true - - obs prior filters: - # Apply variable changes needed for wind scaling - # For wind observations with pressure provided - - filter: Variable Transforms - Transform: SurfaceWindScalingPressure - SkipWhenNoObs: False - - # Calculate error inflation factor for duplicate observations - #- filter: Variable Assignment - # assignments: - # - name: ObsErrorFactorDuplicateCheck/windEastward - # type: float - # function: - # name: ObsFunction/ObsErrorFactorDuplicateCheck - # options: - # use_air_pressure: true - # variable: windEastward - - #- filter: Variable Assignment - # assignments: - # - name: ObsErrorFactorDuplicateCheck/windNorthward - # type: float - # function: - # name: ObsFunction/ObsErrorFactorDuplicateCheck - # options: - # use_air_pressure: true - # variable: windNorthward - - obs post filters: - # Assign the initial observation error, based on height/pressure - # Hard-wiring to prepobs_errtable.global by Type - # ObsError is currently not updating in diag file, but passes directly to EffectiveError when no inflation is specified in YAML - - # Type 244 (AVHRR LWIR) - - filter: Perform Action - filter variables: - - name: windEastward - - name: windNorthward - where: - - variable: ObsType/windEastward - is_in: 244 - action: - name: assign error - error function: - name: ObsFunction/ObsErrorModelStepwiseLinear - options: - xvar: - name: MetaData/pressure - xvals: [110000.,105000.,100000.,95000.,90000.,85000.,80000.,75000.,70000.,65000.,60000.,55000.,50000.,45000.,40000.,35000.,30000.,25000.,20000.,15000.,10000.,7500.,5000.,4000.,3000.,2000.,1000.,500.,400.,300.,200.,100.,0.] #Pressure (Pa) - errors: [3.8,3.8,3.8,3.8,3.8,3.8,3.8,3.8,3.9,3.9,4.,4.,4.1,5.,6.,6.3,6.6,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.] - - # sanity-check criteria - # Observation Range Sanity Check - # NOT EXPLICITLY CLEARED: No obs in this range in file, so 0 Bounds Check rejects (which is correct) but essentially untested - - filter: Bounds Check - filter variables: - - name: windEastward - - name: windNorthward - minvalue: -130. - maxvalue: 130. - action: - name: reject - - # Velocity Sanity Check - # NOT EXPLICITLY CLEARED: No obs in this range in file, so 0 Bounds Check rejects (which is correct) but essentially untested - - filter: Bounds Check - filter variables: - - name: windEastward - - name: windNorthward - test variables: - - name: ObsFunction/Velocity - maxvalue: 130. - action: - name: reject - - # Reject any observation with a /=0 surface type (non-water surface) within - # 200 hPa of the surface pressure (as part of the LNVD check). - # CLEARED: maxvalue is rejecting >, not >= as per a Perform Action, so threshold is unchanged - - filter: Difference Check - filter variables: - - name: windEastward - - name: windNorthward - where: - - variable: - name: GeoVaLs/water_area_fraction - maxvalue: 0.99 - reference: GeoVaLs/surface_pressure - value: MetaData/pressure - maxvalue: -20000. # within 200 hPa above surface pressure, negative p-diff - action: - name: reject - - # LNVD check - # CLEARED: maxvalue is rejecting >, not >= as per a Perform Action, so threshold is unchanged - - filter: Bounds Check - filter variables: - - name: windEastward - - name: windNorthward - test variables: - - name: ObsFunction/SatWindsLNVDCheck - maxvalue: 3. - action: - name: reject - - # 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 - - filter: Bounds Check - filter variables: - - name: windEastward - - name: windNorthward - where: - - variable: ObsType/windEastward - is_in: 240-260 - test variables: - - name: MetaData/pressure - maxvalue: 95001. - action: - name: reject - - # 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. - # Need to check if troposphere pressure was implemented correctly in fv3-jed - - filter: Difference Check - filter variables: - - name: windEastward - - name: windNorthward - reference: GeoVaLs/tropopause_pressure - value: MetaData/pressure - minvalue: -5000. # 50 hPa above tropopause level, negative p-diff - action: - name: reject - - # All satwinds must adjust errors based on ObsErrorFactorPressureCheck - # prior to the SPDB check (i.e. the gross-error check). The gross-error - # check uses the adjusted errors for error-bound tightening and rejection, - # so this check has to come first. This check will inflate errors for obs - # that are too close to either the model top or bottom. - # Notes (eliu): GMAO added a required parameter: adjusted_error_name. - - filter: Perform Action - filter variables: - - name: windEastward - where: - - variable: - name: ObsType/windEastward - is_in: 240-260 - action: - name: inflate error - inflation variable: - name: ObsFunction/ObsErrorFactorPressureCheck - options: - surface_obs: false - variable: windEastward - inflation factor: 4.0 - - - filter: Perform Action - filter variables: - - name: windNorthward - where: - - variable: - name: ObsType/windNorthward - is_in: 240-260 - action: - name: inflate error - inflation variable: - name: ObsFunction/ObsErrorFactorPressureCheck - options: - variable: windNorthward - inflation factor: 4.0 - - # All satwinds subject to a gross-error check that contains significant - # modifiers for satwinds with a negative speed-bias. ALL wind gross-error - # checks are currently being done by the SatWindsSPDBCheck. - # CLEARED - - filter: Background Check - filter variables: - - name: windEastward - function absolute threshold: - - name: ObsFunction/WindsSPDBCheck - options: - wndtype: [ 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260] - cgross: [ 2.5, 2.5, 2.5, 1.5, 2.5, 1.3, 1.3, 2.5, 2.5, 2.5, 2.5, 1.3, 2.5, 1.5, 1.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5] - error_min: [1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4] - error_max: [6.1, 6.1, 15.0, 15.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.1, 20.1, 20.1, 20.1, 20.1, 20.1] - variable: windEastward - action: - name: reject - - - filter: Background Check - filter variables: - - name: windNorthward - function absolute threshold: - - name: ObsFunction/WindsSPDBCheck - options: - wndtype: [ 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260] - cgross: [ 2.5, 2.5, 2.5, 1.5, 2.5, 1.3, 1.3, 2.5, 2.5, 2.5, 2.5, 1.3, 2.5, 1.5, 1.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5] - error_min: [1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4] - error_max: [6.1, 6.1, 15.0, 15.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.1, 20.1, 20.1, 20.1, 20.1, 20.1] - variable: windNorthward - action: - name: reject - - # The last error inflation check is for duplicate observations. This one needs - # to come last, because we don't want to inflate errors for duplication if one - # of the duplicates should be rejected. - # Notes (eliu): ObsErrorFactorDuplicateCheck obsfunction requires PreUseFlag (usage parameter from read_satwnd.f90). - # : Turn off duplicate check for now. - #- filter: Perform Action - # filter variables: - # - name: windEastward - # action: - # name: inflate error - # inflation variable: - # name: ObsErrorFactorDuplicateCheck/windEastward - - #- filter: Perform Action - # filter variables: - # - name: windNorthward - # action: - # name: inflate error - # inflation variable: - # name: ObsErrorFactorDuplicateCheck/windNorthward - - # We are extending this to an additional filter that inflates final ob-errors across-the-board by - # 1/0.8 = 1.25. This is caused by the GSI value of nvqc being set to .true. in the global operational - # 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 - # filter variables: - # - name: windEastward - # where: - # - variable: ObsType/windEastward - # is_in: 240-260 - # action: - # name: inflate error - # inflation factor: 1.25 - - #- filter: Perform Action - # filter variables: - # - name: windNorthward - # where: - # - variable: ObsType/windNorthward - # is_in: 240-260 - # action: - # name: inflate error - # inflation factor: 1.25 - - # End of Filters diff --git a/parm/atm/obs/config/satwind_seviri_m11.yaml.j2 b/parm/atm/obs/config/satwind_seviri_m11.yaml.j2 deleted file mode 100644 index 63eb01308..000000000 --- a/parm/atm/obs/config/satwind_seviri_m11.yaml.j2 +++ /dev/null @@ -1,405 +0,0 @@ -- obs space: - name: satwind_seviri_m11 - obsdatain: - engine: - type: H5File - obsfile: '{{ DATA }}/obs/{{ OPREFIX }}satwnd.seviri_m11.tm00.nc' - obsdataout: - engine: - type: H5File - obsfile: '{{ DATA }}/diags/diag_satwind_seviri_m11_{{ current_cycle | to_YMDH }}.nc' - io pool: - max pool size: 1 - simulated variables: [windEastward, windNorthward] - - obs operator: - name: VertInterp - hofx scaling field: SurfaceWindScalingPressure - hofx scaling field group: DerivedVariables - - linear obs operator: - name: VertInterp - - # NOTE: Tests using the Gaussian Thinning filter (below) to duplicate GSI's thinning of SEVIRI/METEOSAT-8 satwinds - # results in more JEDI satwinds in the diag file than in GSI, but far fewer JEDI satwinds assimilated than - # GSI. JEDI under-counts assimilated winds by roughly 25-40%, relative to GSI, and this under-count is not - # even including the temporal thinning which is applied in GSI but not JEDI (by this filter below). See - # GDASApp Issue #758 for details: https://github.com/NOAA-EMC/GDASApp/issues/758 - #obs pre filters: - #- filter: Gaussian Thinning - # where: - # - variable: ObsType/windEastward - # is_in: 243, 253 - # horizontal_mesh: 200 - # vertical_mesh: 10000 - # use_reduced_horizontal_grid: true - # round_horizontal_bin_count_to_nearest: true - # partition_longitude_bins_using_mesh: true - - obs prior filters: - # Apply variable changes needed for wind scaling - # For wind observations with pressure provided - - filter: Variable Transforms - Transform: SurfaceWindScalingPressure - SkipWhenNoObs: False - - # Calculate error inflation factor for duplicate observations - #- filter: Variable Assignment - # assignments: - # - name: ObsErrorFactorDuplicateCheck/windEastward - # type: float - # function: - # name: ObsFunction/ObsErrorFactorDuplicateCheck - # options: - # use_air_pressure: true - # variable: windEastward - - #- filter: Variable Assignment - # assignments: - # - name: ObsErrorFactorDuplicateCheck/windNorthward - # type: float - # function: - # name: ObsFunction/ObsErrorFactorDuplicateCheck - # options: - # use_air_pressure: true - # variable: windNorthward - - obs post filters: - # Assign the initial observation error, based on height/pressure - # Hard-wiring to prepobs_errtable.global by Type - # ObsError is currently not updating in diag file, but passes directly to EffectiveError when no inflation is specified in YAML - - # Type 243 (MVIRI/SEVIRI VIS) - - filter: Perform Action - filter variables: - - name: windEastward - - name: windNorthward - where: - - variable: ObsType/windEastward - is_in: 243 - minvalue: -135. - maxvalue: 135. - action: - name: assign error - error function: - name: ObsFunction/ObsErrorModelStepwiseLinear - options: - xvar: - name: MetaData/pressure - xvals: [110000.,105000.,100000.,95000.,90000.,85000.,80000.,75000.,70000.,65000.,60000.,55000.,50000.,45000.,40000.,35000.,30000.,25000.,20000.,15000.,10000.,7500.,5000.,4000.,3000.,2000.,1000.,500.,400.,300.,200.,100.,0.] #Pressure (Pa) - errors: [3.8,3.8,3.8,3.8,3.8,3.8,3.8,3.8,3.9,3.9,4.,4.,4.1,5.,6.,6.3,6.6,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.] - - # Type 253 (MVIRI/SEVERI LWIR) - - filter: Perform Action - filter variables: - - name: windEastward - - name: windNorthward - where: - - variable: ObsType/windEastward - is_in: 253 - minvalue: -135. - maxvalue: 135. - action: - name: assign error - error function: - name: ObsFunction/ObsErrorModelStepwiseLinear - options: - xvar: - name: MetaData/pressure - xvals: [110000.,105000.,100000.,95000.,90000.,85000.,80000.,75000.,70000.,65000.,60000.,55000.,50000.,45000.,40000.,35000.,30000.,25000.,20000.,15000.,10000.,7500.,5000.,4000.,3000.,2000.,1000.,500.,400.,300.,200.,100.,0.] #Pressure (Pa) - errors: [3.8,3.8,3.8,3.8,3.8,3.8,3.8,3.8,3.9,3.9,4.,4.,4.1,5.,6.,6.3,6.6,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.] - - # Type 254 (MVIRI/SEVIRI WV, both cloud-top and clear-sky) - - filter: Perform Action - filter variables: - - name: windEastward - - name: windNorthward - where: - - variable: ObsType/windEastward - is_in: 254 - minvalue: -135. - maxvalue: 135. - action: - name: assign error - error function: - name: ObsFunction/ObsErrorModelStepwiseLinear - options: - xvar: - name: MetaData/pressure - xvals: [110000.,105000.,100000.,95000.,90000.,85000.,80000.,75000.,70000.,65000.,60000.,55000.,50000.,45000.,40000.,35000.,30000.,25000.,20000.,15000.,10000.,7500.,5000.,4000.,3000.,2000.,1000.,500.,400.,300.,200.,100.,0.] #Pressure (Pa) - errors: [3.8,3.8,3.8,3.8,3.8,3.8,3.8,3.8,3.9,3.9,4.,4.5,6.1,6.,6.5,7.3,7.6,7.,7.5,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.] - - - # sanity-check criteria - # Observation Range Sanity Check - # NOT EXPLICITLY CLEARED: No obs in this range in file, so 0 Bounds Check rejects (which is correct) but essentially untested - - filter: Bounds Check - filter variables: - - name: windEastward - - name: windNorthward - minvalue: -130. - maxvalue: 130. - action: - name: reject - - # Velocity Sanity Check - # NOT EXPLICITLY CLEARED: No obs in this range in file, so 0 Bounds Check rejects (which is correct) but essentially untested - - filter: Bounds Check - filter variables: - - name: windEastward - - name: windNorthward - test variables: - - name: ObsFunction/Velocity - maxvalue: 130. - action: - name: reject - - # GSI read routine QC (part-1) - # Exclude Type 254 with windComputationMethod==5 (clear-sky WV) --- obs tossed without passing to setup routine - - filter: Perform Action - filter variables: - - name: windEastward - - name: windNorthward - where: - - variable: ObsType/windNorthward - is_in: 254 - - variable: MetaData/windComputationMethod - is_in: 5 - action: - name: reject - - # Exclude data with satellite zenith angle > 68 for all types --- obs tossed without passing to setup routine - - filter: Bounds Check - filter variables: - - name: windEastward - - name: windNorthward - test variables: - - name: MetaData/satelliteZenithAngle - maxvalue: 68. - action: - name: reject - - - # Exclude data over non-water surface type where latitude > 20N for Type 253 (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 - filter variables: - - name: windEastward - - name: windNorthward - where: - - variable: ObsType/windEastward - is_in: 253 - - variable: MetaData/latitude - minvalue: 20. - test variables: - - name: GeoVaLs/water_area_fraction - minvalue: 0.99 - action: - name: reject - - # GSI read routine QC (part-2) - # Reject obs with qualityInformationWithoutForecast < 85. OR > 100. - - filter: Bounds Check - filter variables: - - name: windEastward - - name: windNorthward - test variables: - - name: MetaData/qualityInformationWithoutForecast - minvalue: 85. - maxvalue: 100. - action: - name: reject - - # 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 - - filter: Bounds Check - filter variables: - - name: windEastward - - name: windNorthward - where: - - variable: ObsType/windEastward - is_in: 240-260 - test variables: - - name: MetaData/pressure - maxvalue: 95001. - action: - name: reject - - # EUMETSAT IR (253) reject when pressure between 401 and 801 mb. - - filter: Perform Action - filter variables: - - name: windEastward - - name: windNorthward - where: - - variable: MetaData/pressure - minvalue: 40101. - maxvalue: 80099. - - variable: ObsType/windEastward - is_in: 253 - action: - name: reject - - # EUMET VIS (243) reject when pressure less than 700 mb. - - filter: Bounds Check - filter variables: - - name: windEastward - - name: windNorthward - where: - - variable: ObsType/windEastward - is_in: 243 - test variables: - - name: MetaData/pressure - minvalue: 70000. - action: - name: reject - - # EUMET WV (254) reject when pressure greater than 399 mb. - - filter: Bounds Check - filter variables: - - name: windEastward - - name: windNorthward - where: - - variable: ObsType/windEastward - is_in: 254 - test variables: - - name: MetaData/pressure - maxvalue: 39900. - action: - name: reject - - # 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. - # Need to check if troposphere pressure was implemented correctly in fv3-jed - - filter: Difference Check - filter variables: - - name: windEastward - - name: windNorthward - reference: GeoVaLs/tropopause_pressure - value: MetaData/pressure - minvalue: -5000. # 50 hPa above tropopause level, negative p-diff - action: - name: reject - - # All satwinds must adjust errors based on ObsErrorFactorPressureCheck - # prior to the SPDB check (i.e. the gross-error check). The gross-error - # check uses the adjusted errors for error-bound tightening and rejection, - # so this check has to come first. This check will inflate errors for obs - # that are too close to either the model top or bottom. - # Notes (eliu): GMAO added a required parameter: adjusted_error_name. - - filter: Perform Action - filter variables: - - name: windEastward - where: - - variable: - name: ObsType/windEastward - is_in: 240-260 - action: - name: inflate error - inflation variable: - name: ObsFunction/ObsErrorFactorPressureCheck - options: - surface_obs: false - variable: windEastward - inflation factor: 4.0 - - - filter: Perform Action - filter variables: - - name: windNorthward - where: - - variable: - name: ObsType/windNorthward - is_in: 240-260 - action: - name: inflate error - inflation variable: - name: ObsFunction/ObsErrorFactorPressureCheck - options: - variable: windNorthward - inflation factor: 4.0 - - # All satwinds subject to a gross-error check that contains significant - # modifiers for satwinds with a negative speed-bias. ALL wind gross-error - # checks are currently being done by the SatWindsSPDBCheck. - # CLEARED - - filter: Background Check - filter variables: - - name: windEastward - function absolute threshold: - - name: ObsFunction/WindsSPDBCheck - options: - wndtype: [ 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260] - cgross: [ 2.5, 2.5, 2.5, 1.5, 2.5, 1.3, 1.3, 2.5, 2.5, 2.5, 2.5, 1.3, 2.5, 1.5, 1.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5] - error_min: [1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4] - error_max: [6.1, 6.1, 15.0, 15.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.1, 20.1, 20.1, 20.1, 20.1, 20.1] - variable: windEastward - action: - name: reject - - - filter: Background Check - filter variables: - - name: windNorthward - function absolute threshold: - - name: ObsFunction/WindsSPDBCheck - options: - wndtype: [ 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260] - cgross: [ 2.5, 2.5, 2.5, 1.5, 2.5, 1.3, 1.3, 2.5, 2.5, 2.5, 2.5, 1.3, 2.5, 1.5, 1.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5] - error_min: [1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4] - error_max: [6.1, 6.1, 15.0, 15.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.1, 20.1, 20.1, 20.1, 20.1, 20.1] - variable: windNorthward - action: - name: reject - - # The last error inflation check is for duplicate observations. This one needs - # to come last, because we don't want to inflate errors for duplication if one - # of the duplicates should be rejected. - # Notes (eliu): ObsErrorFactorDuplicateCheck obsfunction requires PreUseFlag (usage parameter from read_satwnd.f90). - # : Turn off duplicate check for now. - #- filter: Perform Action - # filter variables: - # - name: windEastward - # action: - # name: inflate error - # inflation variable: - # name: ObsErrorFactorDuplicateCheck/windEastward - - #- filter: Perform Action - # filter variables: - # - name: windNorthward - # action: - # name: inflate error - # inflation variable: - # name: ObsErrorFactorDuplicateCheck/windNorthward - - # We are extending this to an additional filter that inflates final ob-errors across-the-board by - # 1/0.8 = 1.25. This is caused by the GSI value of nvqc being set to .true. in the global operational - # 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 - # filter variables: - # - name: windEastward - # where: - # - variable: ObsType/windEastward - # is_in: 240-260 - # action: - # name: inflate error - # inflation factor: 1.25 - - #- filter: Perform Action - # filter variables: - # - name: windNorthward - # where: - # - variable: ObsType/windNorthward - # is_in: 240-260 - # action: - # name: inflate error - # inflation factor: 1.25 - - # End of Filters diff --git a/parm/atm/obs/config/satwind_seviri_m8.yaml.j2 b/parm/atm/obs/config/satwind_seviri_m8.yaml.j2 deleted file mode 100644 index 7306e6d09..000000000 --- a/parm/atm/obs/config/satwind_seviri_m8.yaml.j2 +++ /dev/null @@ -1,405 +0,0 @@ -- obs space: - name: satwind_seviri_m8 - obsdatain: - engine: - type: H5File - obsfile: '{{ DATA }}/obs/{{ OPREFIX }}satwnd.seviri_m8.tm00.nc' - obsdataout: - engine: - type: H5File - obsfile: '{{ DATA }}/diags/diag_satwind_seviri_m8_{{ current_cycle | to_YMDH }}.nc' - io pool: - max pool size: 1 - simulated variables: [windEastward, windNorthward] - - obs operator: - name: VertInterp - hofx scaling field: SurfaceWindScalingPressure - hofx scaling field group: DerivedVariables - - linear obs operator: - name: VertInterp - - # NOTE: Tests using the Gaussian Thinning filter (below) to duplicate GSI's thinning of SEVIRI/METEOSAT-8 satwinds - # results in more JEDI satwinds in the diag file than in GSI, but far fewer JEDI satwinds assimilated than - # GSI. JEDI under-counts assimilated winds by roughly 25-40%, relative to GSI, and this under-count is not - # even including the temporal thinning which is applied in GSI but not JEDI (by this filter below). See - # GDASApp Issue #758 for details: https://github.com/NOAA-EMC/GDASApp/issues/758 - #obs pre filters: - #- filter: Gaussian Thinning - # where: - # - variable: ObsType/windEastward - # is_in: 243, 253 - # horizontal_mesh: 200 - # vertical_mesh: 10000 - # use_reduced_horizontal_grid: true - # round_horizontal_bin_count_to_nearest: true - # partition_longitude_bins_using_mesh: true - - obs prior filters: - # Apply variable changes needed for wind scaling - # For wind observations with pressure provided - - filter: Variable Transforms - Transform: SurfaceWindScalingPressure - SkipWhenNoObs: False - - # Calculate error inflation factor for duplicate observations - #- filter: Variable Assignment - # assignments: - # - name: ObsErrorFactorDuplicateCheck/windEastward - # type: float - # function: - # name: ObsFunction/ObsErrorFactorDuplicateCheck - # options: - # use_air_pressure: true - # variable: windEastward - - #- filter: Variable Assignment - # assignments: - # - name: ObsErrorFactorDuplicateCheck/windNorthward - # type: float - # function: - # name: ObsFunction/ObsErrorFactorDuplicateCheck - # options: - # use_air_pressure: true - # variable: windNorthward - - obs post filters: - # Assign the initial observation error, based on height/pressure - # Hard-wiring to prepobs_errtable.global by Type - # ObsError is currently not updating in diag file, but passes directly to EffectiveError when no inflation is specified in YAML - - # Type 243 (MVIRI/SEVIRI VIS) - - filter: Perform Action - filter variables: - - name: windEastward - - name: windNorthward - where: - - variable: ObsType/windEastward - is_in: 243 - minvalue: -135. - maxvalue: 135. - action: - name: assign error - error function: - name: ObsFunction/ObsErrorModelStepwiseLinear - options: - xvar: - name: MetaData/pressure - xvals: [110000.,105000.,100000.,95000.,90000.,85000.,80000.,75000.,70000.,65000.,60000.,55000.,50000.,45000.,40000.,35000.,30000.,25000.,20000.,15000.,10000.,7500.,5000.,4000.,3000.,2000.,1000.,500.,400.,300.,200.,100.,0.] #Pressure (Pa) - errors: [3.8,3.8,3.8,3.8,3.8,3.8,3.8,3.8,3.9,3.9,4.,4.,4.1,5.,6.,6.3,6.6,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.] - - # Type 253 (MVIRI/SEVERI LWIR) - - filter: Perform Action - filter variables: - - name: windEastward - - name: windNorthward - where: - - variable: ObsType/windEastward - is_in: 253 - minvalue: -135. - maxvalue: 135. - action: - name: assign error - error function: - name: ObsFunction/ObsErrorModelStepwiseLinear - options: - xvar: - name: MetaData/pressure - xvals: [110000.,105000.,100000.,95000.,90000.,85000.,80000.,75000.,70000.,65000.,60000.,55000.,50000.,45000.,40000.,35000.,30000.,25000.,20000.,15000.,10000.,7500.,5000.,4000.,3000.,2000.,1000.,500.,400.,300.,200.,100.,0.] #Pressure (Pa) - errors: [3.8,3.8,3.8,3.8,3.8,3.8,3.8,3.8,3.9,3.9,4.,4.,4.1,5.,6.,6.3,6.6,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.] - - # Type 254 (MVIRI/SEVIRI WV, both cloud-top and clear-sky) - - filter: Perform Action - filter variables: - - name: windEastward - - name: windNorthward - where: - - variable: ObsType/windEastward - is_in: 254 - minvalue: -135. - maxvalue: 135. - action: - name: assign error - error function: - name: ObsFunction/ObsErrorModelStepwiseLinear - options: - xvar: - name: MetaData/pressure - xvals: [110000.,105000.,100000.,95000.,90000.,85000.,80000.,75000.,70000.,65000.,60000.,55000.,50000.,45000.,40000.,35000.,30000.,25000.,20000.,15000.,10000.,7500.,5000.,4000.,3000.,2000.,1000.,500.,400.,300.,200.,100.,0.] #Pressure (Pa) - errors: [3.8,3.8,3.8,3.8,3.8,3.8,3.8,3.8,3.9,3.9,4.,4.5,6.1,6.,6.5,7.3,7.6,7.,7.5,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.] - - - # sanity-check criteria - # Observation Range Sanity Check - # NOT EXPLICITLY CLEARED: No obs in this range in file, so 0 Bounds Check rejects (which is correct) but essentially untested - - filter: Bounds Check - filter variables: - - name: windEastward - - name: windNorthward - minvalue: -130. - maxvalue: 130. - action: - name: reject - - # Velocity Sanity Check - # NOT EXPLICITLY CLEARED: No obs in this range in file, so 0 Bounds Check rejects (which is correct) but essentially untested - - filter: Bounds Check - filter variables: - - name: windEastward - - name: windNorthward - test variables: - - name: ObsFunction/Velocity - maxvalue: 130. - action: - name: reject - - # GSI read routine QC (part-1) - # Exclude Type 254 with windComputationMethod==5 (clear-sky WV) --- obs tossed without passing to setup routine - - filter: Perform Action - filter variables: - - name: windEastward - - name: windNorthward - where: - - variable: ObsType/windNorthward - is_in: 254 - - variable: MetaData/windComputationMethod - is_in: 5 - action: - name: reject - - # Exclude data with satellite zenith angle > 68 for all types --- obs tossed without passing to setup routine - - filter: Bounds Check - filter variables: - - name: windEastward - - name: windNorthward - test variables: - - name: MetaData/satelliteZenithAngle - maxvalue: 68. - action: - name: reject - - - # Exclude data over non-water surface type where latitude > 20N for Type 253 (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 - filter variables: - - name: windEastward - - name: windNorthward - where: - - variable: ObsType/windEastward - is_in: 253 - - variable: MetaData/latitude - minvalue: 20. - test variables: - - name: GeoVaLs/water_area_fraction - minvalue: 0.99 - action: - name: reject - - # GSI read routine QC (part-2) - # Reject obs with qualityInformationWithoutForecast < 85. OR > 100. - - filter: Bounds Check - filter variables: - - name: windEastward - - name: windNorthward - test variables: - - name: MetaData/qualityInformationWithoutForecast - minvalue: 85. - maxvalue: 100. - action: - name: reject - - # 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 - - filter: Bounds Check - filter variables: - - name: windEastward - - name: windNorthward - where: - - variable: ObsType/windEastward - is_in: 240-260 - test variables: - - name: MetaData/pressure - maxvalue: 95001. - action: - name: reject - - # EUMETSAT IR (253) reject when pressure between 401 and 801 mb. - - filter: Perform Action - filter variables: - - name: windEastward - - name: windNorthward - where: - - variable: MetaData/pressure - minvalue: 40101. - maxvalue: 80099. - - variable: ObsType/windEastward - is_in: 253 - action: - name: reject - - # EUMET VIS (243) reject when pressure less than 700 mb. - - filter: Bounds Check - filter variables: - - name: windEastward - - name: windNorthward - where: - - variable: ObsType/windEastward - is_in: 243 - test variables: - - name: MetaData/pressure - minvalue: 70000. - action: - name: reject - - # EUMET WV (254) reject when pressure greater than 399 mb. - - filter: Bounds Check - filter variables: - - name: windEastward - - name: windNorthward - where: - - variable: ObsType/windEastward - is_in: 254 - test variables: - - name: MetaData/pressure - maxvalue: 39900. - action: - name: reject - - # 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. - # Need to check if troposphere pressure was implemented correctly in fv3-jed - - filter: Difference Check - filter variables: - - name: windEastward - - name: windNorthward - reference: GeoVaLs/tropopause_pressure - value: MetaData/pressure - minvalue: -5000. # 50 hPa above tropopause level, negative p-diff - action: - name: reject - - # All satwinds must adjust errors based on ObsErrorFactorPressureCheck - # prior to the SPDB check (i.e. the gross-error check). The gross-error - # check uses the adjusted errors for error-bound tightening and rejection, - # so this check has to come first. This check will inflate errors for obs - # that are too close to either the model top or bottom. - # Notes (eliu): GMAO added a required parameter: adjusted_error_name. - - filter: Perform Action - filter variables: - - name: windEastward - where: - - variable: - name: ObsType/windEastward - is_in: 240-260 - action: - name: inflate error - inflation variable: - name: ObsFunction/ObsErrorFactorPressureCheck - options: - surface_obs: false - variable: windEastward - inflation factor: 4.0 - - - filter: Perform Action - filter variables: - - name: windNorthward - where: - - variable: - name: ObsType/windNorthward - is_in: 240-260 - action: - name: inflate error - inflation variable: - name: ObsFunction/ObsErrorFactorPressureCheck - options: - variable: windNorthward - inflation factor: 4.0 - - # All satwinds subject to a gross-error check that contains significant - # modifiers for satwinds with a negative speed-bias. ALL wind gross-error - # checks are currently being done by the SatWindsSPDBCheck. - # CLEARED - - filter: Background Check - filter variables: - - name: windEastward - function absolute threshold: - - name: ObsFunction/WindsSPDBCheck - options: - wndtype: [ 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260] - cgross: [ 2.5, 2.5, 2.5, 1.5, 2.5, 1.3, 1.3, 2.5, 2.5, 2.5, 2.5, 1.3, 2.5, 1.5, 1.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5] - error_min: [1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4] - error_max: [6.1, 6.1, 15.0, 15.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.1, 20.1, 20.1, 20.1, 20.1, 20.1] - variable: windEastward - action: - name: reject - - - filter: Background Check - filter variables: - - name: windNorthward - function absolute threshold: - - name: ObsFunction/WindsSPDBCheck - options: - wndtype: [ 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260] - cgross: [ 2.5, 2.5, 2.5, 1.5, 2.5, 1.3, 1.3, 2.5, 2.5, 2.5, 2.5, 1.3, 2.5, 1.5, 1.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5] - error_min: [1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4] - error_max: [6.1, 6.1, 15.0, 15.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.1, 20.1, 20.1, 20.1, 20.1, 20.1] - variable: windNorthward - action: - name: reject - - # The last error inflation check is for duplicate observations. This one needs - # to come last, because we don't want to inflate errors for duplication if one - # of the duplicates should be rejected. - # Notes (eliu): ObsErrorFactorDuplicateCheck obsfunction requires PreUseFlag (usage parameter from read_satwnd.f90). - # : Turn off duplicate check for now. - #- filter: Perform Action - # filter variables: - # - name: windEastward - # action: - # name: inflate error - # inflation variable: - # name: ObsErrorFactorDuplicateCheck/windEastward - - #- filter: Perform Action - # filter variables: - # - name: windNorthward - # action: - # name: inflate error - # inflation variable: - # name: ObsErrorFactorDuplicateCheck/windNorthward - - # We are extending this to an additional filter that inflates final ob-errors across-the-board by - # 1/0.8 = 1.25. This is caused by the GSI value of nvqc being set to .true. in the global operational - # 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 - # filter variables: - # - name: windEastward - # where: - # - variable: ObsType/windEastward - # is_in: 240-260 - # action: - # name: inflate error - # inflation factor: 1.25 - - #- filter: Perform Action - # filter variables: - # - name: windNorthward - # where: - # - variable: ObsType/windNorthward - # is_in: 240-260 - # action: - # name: inflate error - # inflation factor: 1.25 - - # End of Filters diff --git a/parm/atm/obs/config/scatwind_ascat_metop-a.yaml.j2 b/parm/atm/obs/config/scatwind_ascat_metop-a.yaml.j2 deleted file mode 100644 index 1e8138dde..000000000 --- a/parm/atm/obs/config/scatwind_ascat_metop-a.yaml.j2 +++ /dev/null @@ -1,294 +0,0 @@ -- obs space: - name: ascatw_ascat_metop-a - obsdatain: - engine: - type: H5File - obsfile: '{{ DATA }}/obs/{{ OPREFIX }}ascatw.ascat_metop-a.tm00.nc' - obsdataout: - engine: - type: H5File - obsfile: '{{ DATA }}/diags/diag_ascatw_ascat_metop-a_{{ current_cycle | to_YMDH }}.nc' - io pool: - max pool size: 1 - simulated variables: [windEastward, windNorthward] - - obs operator: - name: VertInterp - # Use height vertical coordinate first - # vertical coordinate: geometric_height - vertical coordinate: geopotential_height - observation vertical coordinate group: DerivedVariables - observation vertical coordinate: adjustedHeight - interpolation method: linear - hofx scaling field: SurfaceWindScalingHeight - hofx scaling field group: DerivedVariables - - linear obs operator: - name: VertInterp - vertical coordinate: geopotential_height - observation vertical coordinate group: DerivedVariables - observation vertical coordinate: adjustedHeight - interpolation method: linear - - obs pre filters: - - filter: Gaussian Thinning - horizontal_mesh: 75 - use_reduced_horizontal_grid: true - round_horizontal_bin_count_to_nearest: true - partition_longitude_bins_using_mesh: true - - obs prior filters: - # Apply variable changes needed for rescaled height coordinate - - filter: Variable Transforms - Transform: AdjustedHeightCoordinate - SkipWhenNoObs: False - - # Apply variable changes needed for wind scaling - - filter: Variable Transforms - Transform: SurfaceWindScalingHeight - SkipWhenNoObs: False - - # Assign the initial observation error (constant value, 1.5 m/s right now). - - filter: Perform Action - filter variables: - - name: windEastward - - name: windNorthward - action: - name: assign error - error parameter: 1.5 - - # Calculate error inflation factor for duplicate observations - #- filter: Variable Assignment - # assignments: - # - name: ObsErrorFactorDuplicateCheck/windEastward - # type: float - # function: - # name: ObsFunction/ObsErrorFactorDuplicateCheck - # options: - # use_air_pressure: true - # variable: windEastward - - #- filter: Variable Assignment - # assignments: - # - name: ObsErrorFactorDuplicateCheck/windNorthward - # type: float - # function: - # name: ObsFunction/ObsErrorFactorDuplicateCheck - # options: - # use_air_pressure: true - # variable: windNorthward - - # Reject all obs with PreQC mark already set above 3 - # NOTE: All scatwinds have an automatic PreQC mark of 2 (hard-wired default from GSI) - # - filter: PreQC - # maxvalue: 3 - # action: - # name: reject - - obs post filters: - # Reject all ASCAT (Type 290) winds with tsavg <= 273.0 (surface temperature) - - filter: Perform Action - filter variables: - - name: windEastward - - name: windNorthward - where: - - variable: ObsType/windEastward - is_in: 290 - # - variable: GeoVaLs/surface_temperature - - variable: GeoVaLs/surface_temperature_where_land - maxvalue: 273. - action: - name: reject - - # Reject all ASCAT (Type 290) winds with isflg /= 0 (non-water surface) - - filter: Perform Action - filter variables: - - name: windEastward - - name: windNorthward - where: - - variable: ObsType/windEastward - is_in: 290 - - variable: GeoVaLs/water_area_fraction - maxvalue: 0.99 - action: - name: reject - - # Reject ASCAT (Type 290) when observed component deviates from background by more than 5.0 m/s - # NOTE: This check can reject a u- or v-component of the same observation independently, which - # is fundamentally different from how GSI rejects obs (both components are rejected if - # either component fails a check). - - filter: Bounds Check - filter variables: - - name: windEastward - - name: windNorthward - test variables: - - name: ObsFunction/Arithmetic - options: - variables: - - name: ObsValue/windEastward - - name: HofX/windEastward - coefs: [1.0, -1.0] - minvalue: -5.0 - maxvalue: 5.0 - - - filter: Bounds Check - filter variables: - - name: windEastward - - name: windNorthward - test variables: - - name: ObsFunction/Arithmetic - options: - variables: - - name: ObsValue/windNorthward - - name: HofX/windNorthward - coefs: [1.0, -1.0] - minvalue: -5.0 - maxvalue: 5.0 - - # Reject OSCAT (Type 291) when observed component deviates from background by more than 6.0 m/s - # NOTE: This check can reject a u- or v-component of the same observation independently, which - # is fundamentally different from how GSI rejects obs (both components are rejected if - # either component fails a check). - - filter: Background Check - filter variables: - - name: windEastward - - name: windNorthward - threshold: 6. - absolute threshold: 6. - where: - - variable: ObsType/windEastward - is_in: 291 - action: - name: reject - - # Reject ASCAT (Type 290) when ambiguity check fails (returned value is negative) - - filter: Bounds Check - filter variables: - - name: windEastward - - name: windNorthward - where: - - variable: ObsType/windEastward - is_in: 290 - test variables: - - name: ObsFunction/ScatWindsAmbiguityCheck - options: - minimum_uv: 0.0001 # hard-coding a minimum-uv for transparancy, want this to basically be zero - maxvalue: 0. - action: - name: reject - - # All scatwinds must adjust errors based on ObsErrorFactorPressureCheck. - # This check will inflate errors for obs that are too close to either - # the model top or bottom. - - filter: Perform Action - filter variables: - - name: windEastward - where: - - variable: - name: ObsType/windEastward - is_in: 290-291 - action: - name: inflate error - inflation variable: - name: ObsFunction/ObsErrorFactorPressureCheck - options: - variable: windEastward - inflation factor: 4.0 - - - filter: Perform Action - filter variables: - - name: windNorthward - where: - - variable: - name: ObsType/windNorthward - is_in: 290-291 - action: - name: inflate error - inflation variable: - name: ObsFunction/ObsErrorFactorPressureCheck - options: - variable: windNorthward - inflation factor: 4.0 - - # All scatwinds subject to a gross error check. This is contained within - # the WindsSPDBCheck, although it is not exclusive to satwinds. - - filter: Background Check - filter variables: - - name: windEastward - function absolute threshold: - - name: ObsFunction/WindsSPDBCheck - options: - wndtype: [ 290, 291] - cgross: [ 5.0, 5.0] - error_min: [1.4, 1.4] - error_max: [6.1, 6.1] - variable: windEastward - action: - name: reject - - - filter: Background Check - filter variables: - - name: windNorthward - function absolute threshold: - - name: ObsFunction/WindsSPDBCheck - options: - wndtype: [ 290, 291] - cgross: [ 5.0, 5.0] - error_min: [1.4, 1.4] - error_max: [6.1, 6.1] - variable: windNorthward - action: - name: reject - - # The last error inflation check is for duplicate observations. This one needs - # to come last, because we don't want to inflate errors for duplication if one - # of the duplicates should be rejected. - #- filter: Perform Action - # filter variables: - # - name: windEastward - # action: - # name: inflate error - # inflation variable: - # name: ObsErrorFactorDuplicateCheck/windEastward - - #- filter: Perform Action - # filter variables: - # - name: windNorthward - # action: - # name: inflate error - # inflation variable: - # name: ObsErrorFactorDuplicateCheck/windNorthward - - # There is no across-the-board inflation for nvqc=.true. for scatwinds, presumably because for - # 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: - # 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 functionality were to be activated for scatwinds, you would want to include this last inflation filter. - #- filter: Perform Action - # filter variables: - # - name: windEastward - # where: - # - variable: ObsType/windEastward - # is_in: 290-291 - # action: - # name: inflate error - # inflation factor: 1.25 - #- filter: Perform Action - # filter variables: - # - name: windNorthward - # where: - # - variable: ObsType/windNorthward - # is_in: 290-291 - # action: - # name: inflate error - # inflation factor: 1.25 - - # END OF FILTERS# diff --git a/parm/atm/obs/config/scatwind_ascat_metop-b.yaml.j2 b/parm/atm/obs/config/scatwind_ascat_metop-b.yaml.j2 deleted file mode 100644 index c73995214..000000000 --- a/parm/atm/obs/config/scatwind_ascat_metop-b.yaml.j2 +++ /dev/null @@ -1,294 +0,0 @@ -- obs space: - name: ascatw_ascat_metop-b - obsdatain: - engine: - type: H5File - obsfile: '{{ DATA }}/obs/{{ OPREFIX }}ascatw.ascat_metop-b.tm00.nc' - obsdataout: - engine: - type: H5File - obsfile: '{{ DATA }}/diags/diag_ascatw_ascat_metop-b_{{ current_cycle | to_YMDH }}.nc' - io pool: - max pool size: 1 - simulated variables: [windEastward, windNorthward] - - obs operator: - name: VertInterp - # Use height vertical coordinate first - # vertical coordinate: geometric_height - vertical coordinate: geopotential_height - observation vertical coordinate group: DerivedVariables - observation vertical coordinate: adjustedHeight - interpolation method: linear - hofx scaling field: SurfaceWindScalingHeight - hofx scaling field group: DerivedVariables - - linear obs operator: - name: VertInterp - vertical coordinate: geopotential_height - observation vertical coordinate group: DerivedVariables - observation vertical coordinate: adjustedHeight - interpolation method: linear - - obs pre filters: - - filter: Gaussian Thinning - horizontal_mesh: 75 - use_reduced_horizontal_grid: true - round_horizontal_bin_count_to_nearest: true - partition_longitude_bins_using_mesh: true - - obs prior filters: - # Apply variable changes needed for rescaled height coordinate - - filter: Variable Transforms - Transform: AdjustedHeightCoordinate - SkipWhenNoObs: False - - # Apply variable changes needed for wind scaling - - filter: Variable Transforms - Transform: SurfaceWindScalingHeight - SkipWhenNoObs: False - - # Assign the initial observation error (constant value, 1.5 m/s right now). - - filter: Perform Action - filter variables: - - name: windEastward - - name: windNorthward - action: - name: assign error - error parameter: 1.5 - - # Calculate error inflation factor for duplicate observations - #- filter: Variable Assignment - # assignments: - # - name: ObsErrorFactorDuplicateCheck/windEastward - # type: float - # function: - # name: ObsFunction/ObsErrorFactorDuplicateCheck - # options: - # use_air_pressure: true - # variable: windEastward - - #- filter: Variable Assignment - # assignments: - # - name: ObsErrorFactorDuplicateCheck/windNorthward - # type: float - # function: - # name: ObsFunction/ObsErrorFactorDuplicateCheck - # options: - # use_air_pressure: true - # variable: windNorthward - - # Reject all obs with PreQC mark already set above 3 - # NOTE: All scatwinds have an automatic PreQC mark of 2 (hard-wired default from GSI) - # - filter: PreQC - # maxvalue: 3 - # action: - # name: reject - - obs post filters: - # Reject all ASCAT (Type 290) winds with tsavg <= 273.0 (surface temperature) - - filter: Perform Action - filter variables: - - name: windEastward - - name: windNorthward - where: - - variable: ObsType/windEastward - is_in: 290 - # - variable: GeoVaLs/surface_temperature - - variable: GeoVaLs/surface_temperature_where_land - maxvalue: 273. - action: - name: reject - - # Reject all ASCAT (Type 290) winds with isflg /= 0 (non-water surface) - - filter: Perform Action - filter variables: - - name: windEastward - - name: windNorthward - where: - - variable: ObsType/windEastward - is_in: 290 - - variable: GeoVaLs/water_area_fraction - maxvalue: 0.99 - action: - name: reject - - # Reject ASCAT (Type 290) when observed component deviates from background by more than 5.0 m/s - # NOTE: This check can reject a u- or v-component of the same observation independently, which - # is fundamentally different from how GSI rejects obs (both components are rejected if - # either component fails a check). - - filter: Bounds Check - filter variables: - - name: windEastward - - name: windNorthward - test variables: - - name: ObsFunction/Arithmetic - options: - variables: - - name: ObsValue/windEastward - - name: HofX/windEastward - coefs: [1.0, -1.0] - minvalue: -5.0 - maxvalue: 5.0 - - - filter: Bounds Check - filter variables: - - name: windEastward - - name: windNorthward - test variables: - - name: ObsFunction/Arithmetic - options: - variables: - - name: ObsValue/windNorthward - - name: HofX/windNorthward - coefs: [1.0, -1.0] - minvalue: -5.0 - maxvalue: 5.0 - - # Reject OSCAT (Type 291) when observed component deviates from background by more than 6.0 m/s - # NOTE: This check can reject a u- or v-component of the same observation independently, which - # is fundamentally different from how GSI rejects obs (both components are rejected if - # either component fails a check). - - filter: Background Check - filter variables: - - name: windEastward - - name: windNorthward - threshold: 6. - absolute threshold: 6. - where: - - variable: ObsType/windEastward - is_in: 291 - action: - name: reject - - # Reject ASCAT (Type 290) when ambiguity check fails (returned value is negative) - - filter: Bounds Check - filter variables: - - name: windEastward - - name: windNorthward - where: - - variable: ObsType/windEastward - is_in: 290 - test variables: - - name: ObsFunction/ScatWindsAmbiguityCheck - options: - minimum_uv: 0.0001 # hard-coding a minimum-uv for transparancy, want this to basically be zero - maxvalue: 0. - action: - name: reject - - # All scatwinds must adjust errors based on ObsErrorFactorPressureCheck. - # This check will inflate errors for obs that are too close to either - # the model top or bottom. - - filter: Perform Action - filter variables: - - name: windEastward - where: - - variable: - name: ObsType/windEastward - is_in: 290-291 - action: - name: inflate error - inflation variable: - name: ObsFunction/ObsErrorFactorPressureCheck - options: - variable: windEastward - inflation factor: 4.0 - - - filter: Perform Action - filter variables: - - name: windNorthward - where: - - variable: - name: ObsType/windNorthward - is_in: 290-291 - action: - name: inflate error - inflation variable: - name: ObsFunction/ObsErrorFactorPressureCheck - options: - variable: windNorthward - inflation factor: 4.0 - - # All scatwinds subject to a gross error check. This is contained within - # the WindsSPDBCheck, although it is not exclusive to satwinds. - - filter: Background Check - filter variables: - - name: windEastward - function absolute threshold: - - name: ObsFunction/WindsSPDBCheck - options: - wndtype: [ 290, 291] - cgross: [ 5.0, 5.0] - error_min: [1.4, 1.4] - error_max: [6.1, 6.1] - variable: windEastward - action: - name: reject - - - filter: Background Check - filter variables: - - name: windNorthward - function absolute threshold: - - name: ObsFunction/WindsSPDBCheck - options: - wndtype: [ 290, 291] - cgross: [ 5.0, 5.0] - error_min: [1.4, 1.4] - error_max: [6.1, 6.1] - variable: windNorthward - action: - name: reject - - # The last error inflation check is for duplicate observations. This one needs - # to come last, because we don't want to inflate errors for duplication if one - # of the duplicates should be rejected. - #- filter: Perform Action - # filter variables: - # - name: windEastward - # action: - # name: inflate error - # inflation variable: - # name: ObsErrorFactorDuplicateCheck/windEastward - - #- filter: Perform Action - # filter variables: - # - name: windNorthward - # action: - # name: inflate error - # inflation variable: - # name: ObsErrorFactorDuplicateCheck/windNorthward - - # There is no across-the-board inflation for nvqc=.true. for scatwinds, presumably because for - # 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: - # 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 functionality were to be activated for scatwinds, you would want to include this last inflation filter. - #- filter: Perform Action - # filter variables: - # - name: windEastward - # where: - # - variable: ObsType/windEastward - # is_in: 290-291 - # action: - # name: inflate error - # inflation factor: 1.25 - #- filter: Perform Action - # filter variables: - # - name: windNorthward - # where: - # - variable: ObsType/windNorthward - # is_in: 290-291 - # action: - # name: inflate error - # inflation factor: 1.25 - - # END OF FILTERS# diff --git a/parm/atm/obs/config/seviri_m08.yaml.j2 b/parm/atm/obs/config/seviri_m08.yaml.j2 deleted file mode 100644 index e92277d66..000000000 --- a/parm/atm/obs/config/seviri_m08.yaml.j2 +++ /dev/null @@ -1,488 +0,0 @@ -- obs space: - name: seviri_m08 - obsdatain: - engine: - type: H5File - obsfile: '{{DATA}}/obs/{{OPREFIX}}seviri_m08.tm00.nc' - obsdataout: - engine: - type: H5File - obsfile: '{{DATA}}/diags/diag_seviri_m08_{{ current_cycle | to_YMDH }}.nc' - simulated variables: [brightnessTemperature] - channels: &seviri_m08_channels 4-11 - - obs operator: - name: CRTM - Absorbers: [H2O,O3,CO2] - obs options: - Sensor_ID: seviri_m08 - EndianType: little_endian - CoefficientPath: {{DATA}}/crtm/ - linear obs operator: - Absorbers: [H2O, O3] - - obs bias: - input file: '{{DATA}}/obs/{{GPREFIX}}seviri_m08.satbias.nc' - output file: '{{DATA}}/bc/{{APREFIX}}seviri_m08.satbias.nc' - variational bc: - predictors: - - name: constant - - name: lapse_rate - order: 2 - tlapse: &seviri_m08_tlapse '{{DATA}}/obs/{{GPREFIX}}seviri_m08.tlapse.txt' - - name: lapse_rate - tlapse: *seviri_m08_tlapse - - name: emissivity - - name: scan_angle - var_name: sensorScanPosition - order: 4 - - name: scan_angle - var_name: sensorScanPosition - order: 3 - - name: scan_angle - var_name: sensorScanPosition - order: 2 - - name: scan_angle - var_name: sensorScanPosition - - covariance: - minimal required obs number: 20 - variance range: [1.0e-6, 10.0] - step size: 1.0e-4 - largest analysis variance: 10000.0 - prior: - input file: '{{DATA}}/obs/{{GPREFIX}}seviri_m08.satbias_cov.nc' - inflation: - ratio: 1.1 - ratio for small dataset: 2.0 - output file: '{{DATA}}/bc/{{APREFIX}}seviri_m08.satbias_cov.nc' - - obs prior filters: - # Step 0: Assign obs error for each channel - - filter: Perform Action - filter variables: - - name: brightnessTemperature - channels: *seviri_m08_channels - action: - name: assign error - error parameter vector: [1.80, 2.50, 2.25, 1.25, 1.25, 1.25, 1.45, 1.25] - - - filter: Variable Assignment - assignments: - - name: DerivedMetaData/surfaceFlag - type: int - function: - name: IntObsFunction/Conditional - options: - defaultvalue: 4 - firstmatchingcase: true - cases: - - where: - - variable: - name: GeoVaLs/water_area_fraction - minvalue: 0.99 - value: 0 - - where: - - variable: - name: GeoVaLs/land_area_fraction - minvalue: 0.99 - value: 1 - - where: - - variable: - name: GeoVaLs/ice_area_fraction - minvalue: 0.99 - value: 2 - - where: - - variable: - name: GeoVaLs/surface_snow_area_fraction - minvalue: 0.99 - value: 3 - - - filter: Variable Assignment - assignments: - - name: DerivedMetaData/surfaceParam - type: int - function: - name: IntObsFunction/Conditional - options: - defaultvalue: 0 - firstmatchingcase: true - cases: - - where: - - variable: - name: GeoVaLs/water_area_fraction - minvalue: 0.99 - value: 30 - - where: - - variable: - name: GeoVaLs/land_area_fraction - minvalue: 0.99 - value: 15 - - where: - - variable: - name: GeoVaLs/ice_area_fraction - minvalue: 0.99 - value: 20 - - where: - - variable: - name: GeoVaLs/surface_snow_area_fraction - minvalue: 0.99 - value: 15 - - - filter: Variable Assignment - assignments: - - name: DerivedMetaData/thinningCriteria - type: int - function: - name: IntObsFunction/Arithmetic - options: - variables: - - name: DerivedMetaData/surfaceParam - # - name: MetaData/fractionOfClearPixelsInFOV - coefs: [1] - # intercept: 300 - - obs post filters: - # Step 1: Satellite Zenith Angle Check - - filter: Bounds Check - filter variables: - - name: brightnessTemperature - channels: *seviri_m08_channels - test variables: - - name: MetaData/sensorZenithAngle - maxvalue: 65. - action: - name: reject - - # Step 2: Clear-sky fraction check - - filter: Bounds Check - filter variables: - - name: brightnessTemperature - channels: *seviri_m08_channels - test variables: - - name: MetaData/cloudAmount - maxvalue: 30. - action: - name: reject - - # Step 3: Scene homogeneous check - - filter: Domain Check - filter variables: - - name: brightnessTemperature - channels: *seviri_m08_channels - where: - - variable: - name: ClearSkyStdDev/brightnessTemperature - channels: 5 - is_defined: - where: - - variable: - name: ClearSkyStdDev/brightnessTemperature - channels: 6 - is_defined: - where operator: and - - - filter: Domain Check - filter variables: - - name: brightnessTemperature - channels: *seviri_m08_channels - where: - - variable: - name: ClearSkyStdDev/brightnessTemperature - channels: 5 - maxvalue: 1.3 - - variable: - name: ClearSkyStdDev/brightnessTemperature - channels: 6 - maxvalue: 1.3 - where operator: and - - # Step 4: Thinning - - filter: Gaussian Thinning - filter variables: - - name: brightnessTemperature - channels: *seviri_m08_channels - horizontal_mesh: 145 - use_reduced_horizontal_grid: true - distance_norm: maximum - time_mesh: 'PT06H' - time_min: '2021-07-31T21:00:00Z' - time_max: '2021-08-01T03:00:00Z' - priority_variable: DerivedMetaData/thinningCriteria - action: - name: reject - - - # Step 5: Surface type check - # Reject channels 5-6 over land-dominant area - - filter: RejectList - filter variables: - - name: brightnessTemperature - channels: 4, 7-11 - where: - - variable: - name: GeoVaLs/land_area_fraction - minvalue: 0.99 - - # Reject all channels over snow-dominant area - - filter: RejectList - filter variables: - - name: brightnessTemperature - channels: *seviri_m08_channels - where: - - variable: - name: GeoVaLs/surface_snow_area_fraction - minvalue: 0.99 - - # Reject all channels over ice-dominant area - - filter: RejectList - filter variables: - - name: brightnessTemperature - channels: *seviri_m08_channels - where: - - variable: - name: GeoVaLs/ice_area_fraction - minvalue: 0.99 - - # Reject all channelsover mixed surface - - filter: RejectList - filter variables: - - name: brightnessTemperature - channels: *seviri_m08_channels - where: - - variable: - name: GeoVaLs/land_area_fraction - maxvalue: 0.99 - max_exclusive: true - - variable: - name: GeoVaLs/water_area_fraction - maxvalue: 0.99 - max_exclusive: true - - variable: - name: GeoVaLs/ice_area_fraction - maxvalue: 0.99 - max_exclusive: true - - variable: - name: GeoVaLs/surface_snow_area_fraction - maxvalue: 0.99 - max_exclusive: true - - # Step 6: Terrain Check: Do not use when height > 1km - - filter: Domain Check - filter variables: - - name: brightnessTemperature - channels: *seviri_m08_channels - where: - - variable: - name: GeoVaLs/surface_geopotential_height - maxvalue: 1000.0 - - # Step 7: Observation Range Sanity Check - - filter: Bounds Check - filter variables: - - name: brightnessTemperature - channels: *seviri_m08_channels - minvalue: 0.0000 - maxvalue: 1000.0 - action: - name: reject - - # Step 8: Error Inflation based on topography - - filter: Variable Assignment - assignments: - - name: DerivedMetaData/ObsErrorFactorTopo - channels: *seviri_m08_channels - type: float - function: - name: ObsFunction/ObsErrorFactorTopoRad - channels: *seviri_m08_channels - options: - sensor: seviri_m08 - channels: *seviri_m08_channels - - - filter: Perform Action - filter variables: - - name: brightnessTemperature - channels: *seviri_m08_channels - action: - name: inflate error - inflation variable: - name: DerivedMetaData/ObsErrorFactorTopo - channels: *seviri_m08_channels - - # Step 9: Error Inflation based on TOA transmittance - - filter: Perform Action - filter variables: - - name: brightnessTemperature - channels: *seviri_m08_channels - action: - name: inflate error - inflation variable: - name: ObsFunction/ObsErrorFactorTransmitTopRad - channels: *seviri_m08_channels - options: - channels: *seviri_m08_channels - - # Step 10: Cloud detection check - - filter: Bounds Check - filter variables: - - name: brightnessTemperature - channels: *seviri_m08_channels - test variables: - - name: ObsFunction/CloudDetectMinResidualIR - channels: *seviri_m08_channels - options: - channels: *seviri_m08_channels - use_flag: [ -1, 1, 1, -1, -1, -1, -1, -1 ] - use_flag_clddet: [ -2, -2, -2, -2, -2, -2, -2, -2 ] - obserr_dtempf: [0.50, 2.00, 4.00, 2.00, 4.00] - error parameter vector: [1.80, 2.50, 2.25, 1.25, 1.25, 1.25, 1.45, 1.25] - maxvalue: 1.0e-12 - action: - name: reject - - # Step 11: Scene consistency check using channel 9 - # Reject channels 4, 6-11 if channel 9 if scene consistency is greated than 0.5 - - filter: Domain Check - filter variables: - - name: brightnessTemperature - channels: 4, 6-11 - where: - - variable: - name: ClearSkyStdDev/brightnessTemperature - channels: 9 - maxvalue: 0.5 - max_exclusive: true - - # Step 12: Gross check - # Reject channels 4, 6-11 if omf > 2 - - filter: Background Check - filter variables: - - name: brightnessTemperature - channels: 4, 6-11 - absolute threshold: 2.0 - action: - name: reject - - # Step 13: Error inflation for channels 3-4 based on scene consistency from channel 5 - - filter: Perform Action - filter variables: - - name: brightnessTemperature - channels: 6-7 - where: - - variable: - name: ClearSkyStdDev/brightnessTemperature_5 - maxvalue: 0.5 - minvalue: 0.4 - min_exclusive: true - action: - name: inflate error - inflation factor: 1.14891 - - - filter: Perform Action - filter variables: - - name: brightnessTemperature - channels: 6-7 - where: - - variable: - name: ClearSkyStdDev/brightnessTemperature_5 - maxvalue: 0.6 - max_exclusive: true - minvalue: 0.5 - min_exclusive: true - action: - name: inflate error - inflation factor: 1.29228 - - - filter: Perform Action - filter variables: - - name: brightnessTemperature - channels: 6-7 - where: - - variable: - name: ClearSkyStdDev/brightnessTemperature_5 - maxvalue: 0.7 - max_exclusive: true - minvalue: 0.6 - action: - name: inflate error - inflation factor: 1.49666 - - - filter: Perform Action - filter variables: - - name: brightnessTemperature - channels: 6-7 - where: - - variable: - name: ClearSkyStdDev/brightnessTemperature_5 - minvalue: 0.7 - action: - name: inflate error - inflation factor: 1.51987 - - # Step 14: - - filter: Bounds Check - filter variables: - - name: brightnessTemperature - channels: *seviri_m08_channels - test variables: - - name: ObsFunction/NearSSTRetCheckIR - channels: *seviri_m08_channels - options: - channels: *seviri_m08_channels - use_flag: [ -1, 1, 1, -1, -1, -1, -1, -1 ] - maxvalue: 1.0e-12 - action: - name: reject - - # Step 15: Error inflation based on surface jacobian check - - filter: Perform Action - filter variables: - - name: brightnessTemperature - channels: *seviri_m08_channels - action: - name: inflate error - inflation variable: - name: ObsFunction/ObsErrorFactorSurfJacobianRad - channels: *seviri_m08_channels - options: - channels: *seviri_m08_channels - sensor: seviri_m08 - obserr_demisf: [0.01, 0.02, 0.03, 0.02, 0.03] - obserr_dtempf: [0.50, 2.00, 4.00, 2.00, 4.00] - - # Step 16: Cloud fraction cehck - # Reject channels 4, 6-11 if Cloud fraction (percent) > 2 - - filter: Domain Check - filter variables: - - name: brightnessTemperature - channels: 4, 6-11 - where: - - variable: - name: MetaData/cloudAmount - maxvalue: 2 - - # Step 17: Final gross check - - filter: Background Check - filter variables: - - name: brightnessTemperature - channels: *seviri_m08_channels - function absolute threshold: - - name: ObsFunction/ObsErrorBoundIR - channels: *seviri_m08_channels - options: - sensor: seviri_m08 - channels: *seviri_m08_channels - obserr_bound_latitude: - name: ObsFunction/ObsErrorFactorLatRad - options: - latitude_parameters: [0.0, 0.0, 0.0, 0.0] - obserr_bound_transmittop: - name: ObsFunction/ObsErrorFactorTransmitTopRad - channels: *seviri_m08_channels - options: - channels: *seviri_m08_channels - obserr_bound_max: [ 2.0, 4.0, 3.5, 2.0, 2.0, 2.0, 2.0, 3.0 ] - error parameter vector: [1.80, 2.50, 2.25, 1.25, 1.25, 1.25, 1.45, 1.25] - action: - name: reject diff --git a/parm/atm/obs/config/seviri_m11.yaml.j2 b/parm/atm/obs/config/seviri_m11.yaml.j2 deleted file mode 100644 index 3b215613e..000000000 --- a/parm/atm/obs/config/seviri_m11.yaml.j2 +++ /dev/null @@ -1,486 +0,0 @@ -- obs space: - name: seviri_m11 - obsdatain: - engine: - type: H5File - obsfile: '{{DATA}}/obs/{{OPREFIX}}seviri_m11.tm00.nc' - obsdataout: - engine: - type: H5File - obsfile: '{{DATA}}/diags/diag_seviri_m11_{{ current_cycle | to_YMDH }}.nc' - simulated variables: [brightnessTemperature] - channels: &seviri_m11_channels 4-11 - - obs operator: - name: CRTM - Absorbers: [H2O,O3,CO2] - obs options: - Sensor_ID: seviri_m11 - EndianType: little_endian - CoefficientPath: {{DATA}}/crtm/ - linear obs operator: - Absorbers: [H2O, O3] - - obs bias: - input file: '{{DATA}}/obs/{{GPREFIX}}seviri_m11.satbias.nc' - output file: '{{DATA}}/bc/{{APREFIX}}seviri_m11.satbias.nc' - variational bc: - predictors: - - name: constant - - name: lapse_rate - order: 2 - tlapse: &seviri_m11_tlapse '{{DATA}}/obs/{{GPREFIX}}seviri_m11.tlapse.txt' - - name: lapse_rate - tlapse: *seviri_m11_tlapse - - name: emissivity - - name: scan_angle - var_name: sensorScanPosition - order: 4 - - name: scan_angle - var_name: sensorScanPosition - order: 3 - - name: scan_angle - var_name: sensorScanPosition - order: 2 - - name: scan_angle - var_name: sensorScanPosition - - covariance: - minimal required obs number: 20 - variance range: [1.0e-6, 10.0] - step size: 1.0e-4 - largest analysis variance: 10000.0 - prior: - input file: '{{DATA}}/obs/{{GPREFIX}}seviri_m11.satbias_cov.nc' - inflation: - ratio: 1.1 - ratio for small dataset: 2.0 - output file: '{{DATA}}/bc/{{APREFIX}}seviri_m11.satbias_cov.nc' - - obs prior filters: - # Step 0: Assign obs error for each channel - - filter: Perform Action - filter variables: - - name: brightnessTemperature - channels: *seviri_m11_channels - action: - name: assign error - error parameter vector: [0.75, 2.50, 2.25, 1.25, 1.25, 0.75, 0.80, 1.25] - - - filter: Variable Assignment - assignments: - - name: DerivedMetaData/surfaceFlag - type: int - function: - name: IntObsFunction/Conditional - options: - defaultvalue: 4 - firstmatchingcase: true - cases: - - where: - - variable: - name: GeoVaLs/water_area_fraction - minvalue: 0.99 - value: 0 - - where: - - variable: - name: GeoVaLs/land_area_fraction - minvalue: 0.99 - value: 1 - - where: - - variable: - name: GeoVaLs/ice_area_fraction - minvalue: 0.99 - value: 2 - - where: - - variable: - name: GeoVaLs/surface_snow_area_fraction - minvalue: 0.99 - value: 3 - - - filter: Variable Assignment - assignments: - - name: DerivedMetaData/surfaceParam - type: int - function: - name: IntObsFunction/Conditional - options: - defaultvalue: 0 - firstmatchingcase: true - cases: - - where: - - variable: - name: GeoVaLs/water_area_fraction - minvalue: 0.99 - value: 30 - - where: - - variable: - name: GeoVaLs/land_area_fraction - minvalue: 0.99 - value: 15 - - where: - - variable: - name: GeoVaLs/ice_area_fraction - minvalue: 0.99 - value: 20 - - where: - - variable: - name: GeoVaLs/surface_snow_area_fraction - minvalue: 0.99 - value: 15 - - - filter: Variable Assignment - assignments: - - name: DerivedMetaData/thinningCriteria - type: int - function: - name: IntObsFunction/Arithmetic - options: - variables: - - name: DerivedMetaData/surfaceParam - # - name: MetaData/fractionOfClearPixelsInFOV - coefs: [1] - # intercept: 300 - - obs post filters: - # Step 1: Satellite Zenith Angle Check - - filter: Bounds Check - filter variables: - - name: brightnessTemperature - channels: *seviri_m11_channels - test variables: - - name: MetaData/sensorZenithAngle - maxvalue: 65. - action: - name: reject - - # Step 2: Clear-sky fraction check - - filter: Bounds Check - filter variables: - - name: brightnessTemperature - channels: *seviri_m11_channels - test variables: - - name: MetaData/cloudAmount - maxvalue: 30. - action: - name: reject - - # Step 3: Scene homogeneous check - - filter: Domain Check - filter variables: - - name: brightnessTemperature - channels: *seviri_m11_channels - where: - - variable: - name: ClearSkyStdDev/brightnessTemperature - channels: 5 - is_defined: - where: - - variable: - name: ClearSkyStdDev/brightnessTemperature - channels: 6 - is_defined: - where operator: and - - - filter: Domain Check - filter variables: - - name: brightnessTemperature - channels: *seviri_m11_channels - where: - - variable: - name: ClearSkyStdDev/brightnessTemperature - channels: 5 - maxvalue: 1.3 - - variable: - name: ClearSkyStdDev/brightnessTemperature - channels: 6 - maxvalue: 1.3 - where operator: and - - ## Step 4: Thinning - - filter: Gaussian Thinning - filter variables: - - name: brightnessTemperature - channels: *seviri_m11_channels - horizontal_mesh: 145 - use_reduced_horizontal_grid: true - distance_norm: maximum - time_mesh: 'PT06H' - time_min: '2021-07-31T21:00:00Z' - time_max: '2021-08-01T03:00:00Z' - action: - name: reject - - # Step 5: Surface type check - # Reject channels 5-6 over land-dominant area - - filter: RejectList - filter variables: - - name: brightnessTemperature - channels: 4, 7-11 - where: - - variable: - name: GeoVaLs/land_area_fraction - minvalue: 0.99 - - # Reject all channels over snow-dominant area - - filter: RejectList - filter variables: - - name: brightnessTemperature - channels: *seviri_m11_channels - where: - - variable: - name: GeoVaLs/surface_snow_area_fraction - minvalue: 0.99 - - # Reject all channels over ice-dominant area - - filter: RejectList - filter variables: - - name: brightnessTemperature - channels: *seviri_m11_channels - where: - - variable: - name: GeoVaLs/ice_area_fraction - minvalue: 0.99 - - # Reject all channelsover mixed surface - - filter: RejectList - filter variables: - - name: brightnessTemperature - channels: *seviri_m11_channels - where: - - variable: - name: GeoVaLs/land_area_fraction - maxvalue: 0.99 - max_exclusive: true - - variable: - name: GeoVaLs/water_area_fraction - maxvalue: 0.99 - max_exclusive: true - - variable: - name: GeoVaLs/ice_area_fraction - maxvalue: 0.99 - max_exclusive: true - - variable: - name: GeoVaLs/surface_snow_area_fraction - maxvalue: 0.99 - max_exclusive: true - - # Step 6: Terrain Check: Do not use when height > 1km - - filter: Domain Check - filter variables: - - name: brightnessTemperature - channels: *seviri_m11_channels - where: - - variable: - name: GeoVaLs/surface_geopotential_height - maxvalue: 1000.0 - - # Step 7: Observation Range Sanity Check - - filter: Bounds Check - filter variables: - - name: brightnessTemperature - channels: *seviri_m11_channels - minvalue: 0.0000 - maxvalue: 1000.0 - action: - name: reject - - # Step 8: Error Inflation based on topography - - filter: Variable Assignment - assignments: - - name: DerivedMetaData/ObsErrorFactorTopo - channels: *seviri_m11_channels - type: float - function: - name: ObsFunction/ObsErrorFactorTopoRad - channels: *seviri_m11_channels - options: - sensor: seviri_m08 - channels: *seviri_m11_channels - - - filter: Perform Action - filter variables: - - name: brightnessTemperature - channels: *seviri_m11_channels - action: - name: inflate error - inflation variable: - name: DerivedMetaData/ObsErrorFactorTopo - channels: *seviri_m11_channels - - # Step 9: Error Inflation based on TOA transmittance - - filter: Perform Action - filter variables: - - name: brightnessTemperature - channels: *seviri_m11_channels - action: - name: inflate error - inflation variable: - name: ObsFunction/ObsErrorFactorTransmitTopRad - channels: *seviri_m11_channels - options: - channels: *seviri_m11_channels - - # Step 10: Cloud detection check - - filter: Bounds Check - filter variables: - - name: brightnessTemperature - channels: *seviri_m11_channels - test variables: - - name: ObsFunction/CloudDetectMinResidualIR - channels: *seviri_m11_channels - options: - channels: *seviri_m11_channels - use_flag: [ -1, 1, 1, -1, -1, -1, -1, -1 ] - use_flag_clddet: [ -2, -2, -2, -2, -2, -2, -2, -2 ] - obserr_dtempf: [0.50, 2.00, 4.00, 2.00, 4.00] - error parameter vector: [0.75, 2.50, 2.25, 1.25, 1.25, 0.75, 0.80, 1.25] - maxvalue: 1.0e-12 - action: - name: reject - - # Step 11: Scene consistency check using channel 9 - # Reject channels 4, 6-11 if channel 9 if scene consistency is greated than 0.5 - - filter: Domain Check - filter variables: - - name: brightnessTemperature - channels: 4, 6-11 - where: - - variable: - name: ClearSkyStdDev/brightnessTemperature - channels: 9 - maxvalue: 0.5 - max_exclusive: true - - # Step 12: Gross check - # Reject channels 4, 6-11 if omf > 2 - - filter: Background Check - filter variables: - - name: brightnessTemperature - channels: 4, 6-11 - absolute threshold: 2.0 - action: - name: reject - - # Step 13: Error inflation for channels 3-4 based on scene consistency from channel 5 - - filter: Perform Action - filter variables: - - name: brightnessTemperature - channels: 6-7 - where: - - variable: - name: ClearSkyStdDev/brightnessTemperature_5 - maxvalue: 0.5 - minvalue: 0.4 - min_exclusive: true - action: - name: inflate error - inflation factor: 1.14891 - - - filter: Perform Action - filter variables: - - name: brightnessTemperature - channels: 6-7 - where: - - variable: - name: ClearSkyStdDev/brightnessTemperature_5 - maxvalue: 0.6 - max_exclusive: true - minvalue: 0.5 - min_exclusive: true - action: - name: inflate error - inflation factor: 1.29228 - - - filter: Perform Action - filter variables: - - name: brightnessTemperature - channels: 6-7 - where: - - variable: - name: ClearSkyStdDev/brightnessTemperature_5 - maxvalue: 0.7 - max_exclusive: true - minvalue: 0.6 - action: - name: inflate error - inflation factor: 1.49666 - - - filter: Perform Action - filter variables: - - name: brightnessTemperature - channels: 6-7 - where: - - variable: - name: ClearSkyStdDev/brightnessTemperature_5 - minvalue: 0.7 - action: - name: inflate error - inflation factor: 1.51987 - - # Step 14: - - filter: Bounds Check - filter variables: - - name: brightnessTemperature - channels: *seviri_m11_channels - test variables: - - name: ObsFunction/NearSSTRetCheckIR - channels: *seviri_m11_channels - options: - channels: *seviri_m11_channels - use_flag: [ -1, 1, 1, -1, -1, -1, -1, -1 ] - maxvalue: 1.0e-12 - action: - name: reject - - # Step 15: Error inflation based on surface jacobian check - - filter: Perform Action - filter variables: - - name: brightnessTemperature - channels: *seviri_m11_channels - action: - name: inflate error - inflation variable: - name: ObsFunction/ObsErrorFactorSurfJacobianRad - channels: *seviri_m11_channels - options: - channels: *seviri_m11_channels - sensor: seviri_m11 - obserr_demisf: [0.01, 0.02, 0.03, 0.02, 0.03] - obserr_dtempf: [0.50, 2.00, 4.00, 2.00, 4.00] - - # Step 16: Cloud fraction cehck - # Reject channels 4, 6-11 if Cloud fraction (percent) > 2 - - filter: Domain Check - filter variables: - - name: brightnessTemperature - channels: 4, 6-11 - where: - - variable: - name: MetaData/cloudAmount - maxvalue: 2 - - # Step 17: Final gross check - - filter: Background Check - filter variables: - - name: brightnessTemperature - channels: *seviri_m11_channels - function absolute threshold: - - name: ObsFunction/ObsErrorBoundIR - channels: *seviri_m11_channels - options: - sensor: seviri_m08 - channels: *seviri_m11_channels - obserr_bound_latitude: - name: ObsFunction/ObsErrorFactorLatRad - options: - latitude_parameters: [0.0, 0.0, 0.0, 0.0] - obserr_bound_transmittop: - name: ObsFunction/ObsErrorFactorTransmitTopRad - channels: *seviri_m11_channels - options: - channels: *seviri_m11_channels - obserr_bound_max: [ 2.0, 4.0, 3.5, 2.0, 2.0, 2.0, 2.0, 3.0 ] - error parameter vector: [0.75, 2.50, 2.25, 1.25, 1.25, 0.75, 0.80, 1.25] - action: - name: reject diff --git a/parm/atm/obs/config/sfc.yaml.j2 b/parm/atm/obs/config/sfc.yaml.j2 deleted file mode 100644 index 97371fbdf..000000000 --- a/parm/atm/obs/config/sfc.yaml.j2 +++ /dev/null @@ -1,20 +0,0 @@ -- obs space: - name: sfc - obsdatain: - engine: - type: H5File - obsfile: '{{ DATA }}/obs/{{ OPREFIX }}sfc.{{ current_cycle | to_YMDH }}.nc' - obsdataout: - engine: - type: H5File - obsfile: '{{ DATA }}/diags/diag_sfc_{{ current_cycle | to_YMDH }}.nc' - io pool: - max pool size: 1 - simulated variables: [stationPressure] - obs operator: - name: SfcPCorrected - da_psfc_scheme: GSI - geovar_sfc_geomz: surface_geometric_height - geovar_geomz: geopotential_height - linear obs operator: - name: Identity diff --git a/parm/atm/obs/config/sfcship.yaml.j2 b/parm/atm/obs/config/sfcship.yaml.j2 deleted file mode 100644 index 6a7a21ab1..000000000 --- a/parm/atm/obs/config/sfcship.yaml.j2 +++ /dev/null @@ -1,75 +0,0 @@ -- obs space: - name: sfcship - obsdatain: - engine: - type: H5File - obsfile: '{{ DATA }}/obs/{{ OPREFIX }}sfcship.{{ current_cycle | to_YMDH }}.nc' - obsdataout: - engine: - type: H5File - overwrite: true - obsfile: '{{ DATA }}/diags/diag_sfcship_{{ current_cycle | to_YMDH }}.nc' - io pool: - max pool size: 1 - simulated variables: [stationPressure, airTemperature, specificHumidity] - obs operator: - name: Composite - components: - - name: VertInterp - variables: - - name: airTemperature - - name: specificHumidity - - name: SfcPCorrected - variables: - - name: stationPressure - da_psfc_scheme: GSI - geovar_sfc_geomz: surface_geometric_height - geovar_geomz: geopotential_height - linear obs operator: - name: Identity - - obs filters: - # Observation range sanity check - - filter: Bounds Check - filter variables: - - name: stationPressure - minvalue: 37499.0 - maxvalue: 106999.0 - action: - name: reject - filter variables: - - name: airTemperature - minvalue: 195.0 - maxvalue: 327.0 - action: - name: reject - filter variables: - - name: specificHumidity - minvalue: 0.0 - maxvalue: 0.03499 - action: - name: reject - - # Gross error check with (O - B) / ObsError greater than threshold. - - filter: Background Check - filter variables: - - name: stationPressure - threshold: 3.6 - absolute threshold: 990.0 - action: - name: reject - defer to post: true - filter variables: - - name: airTemperature - threshold: 7.0 - absolute threshold: 9.0 - action: - name: reject - defer to post: true - - # Reject all ObsType 183 - - filter: BlackList - where: - - variable: - name: ObsType/stationPressure - is_in: 183 diff --git a/parm/atm/obs/config/sondes.yaml.j2 b/parm/atm/obs/config/sondes.yaml.j2 deleted file mode 100644 index 0ea056d96..000000000 --- a/parm/atm/obs/config/sondes.yaml.j2 +++ /dev/null @@ -1,104 +0,0 @@ -- obs space: - name: sondes - obsdatain: - engine: - type: H5File - obsfile: '{{ DATA }}/obs/{{ OPREFIX }}sondes.{{ current_cycle | to_YMDH }}.nc' - obsgrouping: - group variables: ["stationIdentification"] - sort variable: "pressure" - sort order: "descending" - obsdataout: - engine: - type: H5File - obsfile: '{{ DATA }}/diags/diag_sondes_{{ current_cycle | to_YMDH }}.nc' - io pool: - max pool size: 1 - simulated variables: [stationPressure, airTemperature, windEastward, windNorthward, specificHumidity] - obs operator: - name: Composite - components: - - name: VertInterp - variables: - - name: airTemperature - - name: windEastward - - name: windNorthward - - name: specificHumidity - - name: SfcPCorrected - da_psfc_scheme: GSI - geovar_sfc_geomz: surface_geopotential_height - geovar_geomz: geopotential_height - variables: - - name: stationPressure - linear obs operator: - name: Composite - components: - - name: VertInterp - variables: - - name: airTemperature - - name: windEastward - - name: windNorthward - - name: specificHumidity - - name: Identity - variables: - - name: stationPressure - obs filters: - # - # Reject all obs with PreQC mark already set above 3 - - filter: PreQC - maxvalue: 3.0 - action: - name: reject - # - # Observation Range Sanity Check - - filter: Bounds Check - filter variables: - - name: stationPressure - minvalue: 37499.0 - maxvalue: 106999.0 - action: - name: reject - # - # Assign obsError - - filter: Perform Action - filter variables: - - name: stationPressure - action: - name: assign error - error parameter: 100.0 # 1.0 hPa - # - # Assign the initial observation error, based on height/pressure - - filter: Perform Action - filter variables: - - name: stationPressure - action: - name: assign error - error function: - name: ObsErrorModelStepwiseLinear@ObsFunction - options: - xvar: - name: ObsValue/stationPressure - xvals: [80000.0, 75000.0] - errors: [110.0, 120.0] # 1.1 mb below 800 mb and 1.2 mb agove 750 mb - # - - filter: Perform Action - filter variables: - - name: stationPressure - action: - name: inflate error - inflation variable: - name: ObsErrorFactorSfcPressure@ObsFunction - options: - error_min: 100.0 # 1 mb - error_max: 300.0 # 3 mb - geovar_geomz: geopotential_height - geovar_sfc_geomz: surface_geopotential_height - # - # Gross error check with (O - B) / ObsError greater than threshold - - filter: Background Check - filter variables: - - name: stationPressure - threshold: 3.6 - absolute threshold: 990.0 - action: - name: reject diff --git a/parm/atm/obs/config/ssmis_f17.yaml.j2 b/parm/atm/obs/config/ssmis_f17.yaml.j2 deleted file mode 100644 index 1f2f83c40..000000000 --- a/parm/atm/obs/config/ssmis_f17.yaml.j2 +++ /dev/null @@ -1,152 +0,0 @@ -- obs space: - name: ssmis_f17 - obsdatain: - engine: - type: H5File - obsfile: '{{ DATA }}/obs/{{ OPREFIX }}ssmis_f17.{{ current_cycle | to_YMDH }}.nc' - obsdataout: - engine: - type: H5File - obsfile: '{{ DATA }}/diags/diag_ssmis_f17_{{ current_cycle | to_YMDH }}.nc' - simulated variables: [brightness_temperature] - channels: 1-24 - obs operator: - name: CRTM - Absorbers: [H2O,O3,CO2] - obs options: - Sensor_ID: ssmis_f17 - EndianType: little_endian - CoefficientPath: '{{ DATA }}/crtm/' - obs bias: - input file: '{{ DATA }}/obs/{{ GPREFIX }}ssmis_f17.satbias.nc' - output file: '{{ DATA }}/bc/{{ APREFIX }}ssmis_f17.satbias.nc' - variational bc: - predictors: - - name: constant - - name: cloud_liquid_water - sensor: SSMIS - ch19h: 12 - ch19v: 13 - ch22v: 14 - ch37h: 15 - ch37v: 16 - ch91v: 17 - ch91h: 18 - - name: cosine_of_latitude_times_orbit_node - - name: sine_of_latitude - - name: lapse_rate - order: 2 - tlapse: &ssmis_f17_tlapse '{{ DATA }}/obs/{{ GPREFIX }}ssmis_f17.tlapse.txt' - - name: lapse_rate - tlapse: *ssmis_f17_tlapse - - name: emissivity - - name: scan_angle - var_name: scan_position - order: 4 - - name: scan_angle - var_name: scan_position - order: 3 - - name: scan_angle - var_name: scan_position - order: 2 - - name: scan_angle - var_name: scan_position - - obs prior filters: - - filter: Perform Action - filter variables: - - name: brightness_temperature - channels: 1-24 - action: - name: assign error - error parameter vector: [ 1.5, 0.5, 0.5, 0.5, 0.5, 1, 1, 3, 3, 3, 3, 2.4, 1.27, 1.44, 3, - 1.34, 1.74, 3.75, 3, 3, 2, 6.4, 1, 1] - - obs post filters: - #step1: Gross check (setuprad) - - filter: Background Check - filter variables: - - name: brightness_temperature - channels: 1-24 - threshold: 1.5 - action: - name: reject - #step1: Gross check(qcmod) - - filter: Background Check - filter variables: - - name: brightness_temperature - channels: 1-24 - absolute threshold: 3.5 - remove bias correction: true - action: - name: reject - - - filter: Difference Check - filter variables: - - name: brightness_temperature - channels: 1-2,12-16 - reference: brightness_temperature_2@ObsValue - value: brightness_temperature_2@HofX - minvalue: -1.5 - maxvalue: 1.5 - where: - - variable: - name: water_area_fraction@GeoVaLs - maxvalue: 0.99 - #QC_terrain: If seviri and terrain height > 2km. do not use - - filter: Domain Check - filter variables: - - name: brightness_temperature - channels: 1-24 - where: - - variable: - name: height_above_mean_sea_level@MetaData - maxvalue: 2000.0 - #do not use over mixed surface - - filter: BlackList - filter variables: - - name: brightness_temperature - channels: 1-3,8-18 - where: - - variable: - name: land_area_fraction@GeoVaLs - maxvalue: 0.99 - - variable: - name: water_area_fraction@GeoVaLs - maxvalue: 0.99 - - variable: - name: ice_area_fraction@GeoVaLs - maxvalue: 0.99 - - variable: - name: surface_snow_area_fraction@GeoVaLs - maxvalue: 0.99 - #step4: Generate q.c. bounds and modified variances - - filter: BlackList - filter variables: - - name: brightness_temperature - channels: 1-24 - action: - name: inflate error - inflation variable: - # Surface Jacobian check - name: ObsErrorFactorSurfJacobianRad@ObsFunction - channels: 1-24 - options: - channels: 1-24 - sensor: ssmis_f17 - obserr_demisf: [0.010, 0.010, 0.010, 0.010, 0.010] - obserr_dtempf: [0.500, 0.500, 0.500, 0.500, 0.500] - # Useflag Check - - filter: Bounds Check - filter variables: - - name: brightness_temperature - channels: 1-24 - test variables: - - name: ChannelUseflagCheckRad@ObsFunction - channels: 1-24 - options: - channels: 1-24 - use_flag: [ 1, -1, -1, -1, 1, 1, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1] - minvalue: 1.0e-12 - action: - name: reject diff --git a/parm/atm/obs/config/ssmis_f18.yaml.j2 b/parm/atm/obs/config/ssmis_f18.yaml.j2 deleted file mode 100644 index fd1cd4b4c..000000000 --- a/parm/atm/obs/config/ssmis_f18.yaml.j2 +++ /dev/null @@ -1,152 +0,0 @@ -- obs space: - name: ssmis_f18 - obsdatain: - engine: - type: H5File - obsfile: '{{ DATA }}/obs/{{ OPREFIX }}ssmis_f18.{{ current_cycle | to_YMDH }}.nc' - obsdataout: - engine: - type: H5File - obsfile: '{{ DATA }}/diags/diag_ssmis_f18_{{ current_cycle | to_YMDH }}.nc' - simulated variables: [brightness_temperature] - channels: 1-24 - obs operator: - name: CRTM - Absorbers: [H2O,O3,CO2] - obs options: - Sensor_ID: ssmis_f18 - EndianType: little_endian - CoefficientPath: '{{ DATA }}/crtm/' - obs bias: - input file: '{{ DATA }}/obs/{{ GPREFIX }}ssmis_f18.satbias.nc' - output file: '{{ DATA }}/bc/{{ APREFIX }}ssmis_f18.satbias.nc' - variational bc: - predictors: - - name: constant - - name: cloud_liquid_water - sensor: SSMIS - ch19h: 12 - ch19v: 13 - ch22v: 14 - ch37h: 15 - ch37v: 16 - ch91v: 17 - ch91h: 18 - - name: cosine_of_latitude_times_orbit_node - - name: sine_of_latitude - - name: lapse_rate - order: 2 - tlapse: &ssmis_f18_tlapse '{{ DATA }}/obs/{{ GPREFIX }}ssmis_f18.tlapse.txt' - - name: lapse_rate - tlapse: *ssmis_f18_tlapse - - name: emissivity - - name: scan_angle - var_name: scan_position - order: 4 - - name: scan_angle - var_name: scan_position - order: 3 - - name: scan_angle - var_name: scan_position - order: 2 - - name: scan_angle - var_name: scan_position - - obs prior filters: - - filter: Perform Action - filter variables: - - name: brightness_temperature - channels: 1-24 - action: - name: assign error - error parameter vector: [ 1.5, 0.5, 0.5, 0.5, 0.5, 1, 1, 3, 3, 3, 3, 2.4, 1.27, 1.44, 3, - 1.34, 1.74, 3.75, 3, 3, 2, 6.4, 1, 1] - - obs post filters: - #step1: Gross check (setuprad) - - filter: Background Check - filter variables: - - name: brightness_temperature - channels: 1-24 - threshold: 1.5 - action: - name: reject - #step1: Gross check(qcmod) - - filter: Background Check - filter variables: - - name: brightness_temperature - channels: 1-24 - absolute threshold: 3.5 - remove bias correction: true - action: - name: reject - - - filter: Difference Check - filter variables: - - name: brightness_temperature - channels: 1-2,12-16 - reference: brightness_temperature_2@ObsValue - value: brightness_temperature_2@HofX - minvalue: -1.5 - maxvalue: 1.5 - where: - - variable: - name: water_area_fraction@GeoVaLs - maxvalue: 0.99 - #QC_terrain: If seviri and terrain height > 2km. do not use - - filter: Domain Check - filter variables: - - name: brightness_temperature - channels: 1-24 - where: - - variable: - name: height_above_mean_sea_level@MetaData - maxvalue: 2000.0 - #do not use over mixed surface - - filter: BlackList - filter variables: - - name: brightness_temperature - channels: 1-3,8-18 - where: - - variable: - name: land_area_fraction@GeoVaLs - maxvalue: 0.99 - - variable: - name: water_area_fraction@GeoVaLs - maxvalue: 0.99 - - variable: - name: ice_area_fraction@GeoVaLs - maxvalue: 0.99 - - variable: - name: surface_snow_area_fraction@GeoVaLs - maxvalue: 0.99 - #step4: Generate q.c. bounds and modified variances - - filter: BlackList - filter variables: - - name: brightness_temperature - channels: 1-24 - action: - name: inflate error - inflation variable: - # Surface Jacobian check - name: ObsErrorFactorSurfJacobianRad@ObsFunction - channels: 1-24 - options: - channels: 1-24 - sensor: ssmis_f18 - obserr_demisf: [0.010, 0.010, 0.010, 0.010, 0.010] - obserr_dtempf: [0.500, 0.500, 0.500, 0.500, 0.500] - # Useflag Check - - filter: Bounds Check - filter variables: - - name: brightness_temperature - channels: 1-24 - test variables: - - name: ChannelUseflagCheckRad@ObsFunction - channels: 1-24 - options: - channels: 1-24 - use_flag: [ 1, -1, -1, -1, 1, 1, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1] - minvalue: 1.0e-12 - action: - name: reject diff --git a/parm/atm/obs/lists/gdas_prototype.yaml.j2 b/parm/atm/obs/lists/gdas_prototype.yaml.j2 deleted file mode 100644 index 704133576..000000000 --- a/parm/atm/obs/lists/gdas_prototype.yaml.j2 +++ /dev/null @@ -1,15 +0,0 @@ -observers: -{% filter indent(width=2) %} -{% include 'atm/obs/config/amsua_n19.yaml.j2' %} -{% include 'atm/obs/config/sondes.yaml.j2' %} -{% include 'atm/obs/config/atms_n20.yaml.j2' %} -{% include 'atm/obs/config/aircraft.yaml.j2' %} -{% include 'atm/obs/config/satwind.yaml.j2' %} -{% include 'atm/obs/config/omi_aura.yaml.j2' %} -{% include 'atm/obs/config/ompsnp_npp.yaml.j2' %} -{% include 'atm/obs/config/ompstc8_npp.yaml.j2' %} -{% include 'atm/obs/config/cris-fsr_n20.yaml.j2' %} -{% include 'atm/obs/config/cris-fsr_npp.yaml.j2' %} -{% include 'atm/obs/config/sfc.yaml.j2' %} -{% include 'atm/obs/config/sfcship.yaml.j2' %} -{% endfilter %} diff --git a/parm/atm/obs/lists/gdas_prototype_3d.yaml.j2 b/parm/atm/obs/lists/gdas_prototype_3d.yaml.j2 deleted file mode 100644 index f576fc25e..000000000 --- a/parm/atm/obs/lists/gdas_prototype_3d.yaml.j2 +++ /dev/null @@ -1,10 +0,0 @@ -observers: -{% filter indent(width=2) %} -{% include 'atm/obs/config/satwind_abi_goes-16.yaml.j2' %} -{% include 'atm/obs/config/scatwind_ascat_metop-b.yaml.j2' %} -{% include 'atm/obs/config/conv_ps.yaml.j2' %} -{% include 'atm/obs/config/gnssro.yaml.j2' %} -{% include 'atm/obs/config/ompsnp_npp.yaml.j2' %} -{% include 'atm/obs/config/ompstc_npp.yaml.j2' %} -{% include 'atm/obs/config/omi_aura.yaml.j2' %} -{% endfilter %} diff --git a/parm/atm/obs/lists/gdas_prototype_4d.yaml.j2 b/parm/atm/obs/lists/gdas_prototype_4d.yaml.j2 deleted file mode 100644 index 704133576..000000000 --- a/parm/atm/obs/lists/gdas_prototype_4d.yaml.j2 +++ /dev/null @@ -1,15 +0,0 @@ -observers: -{% filter indent(width=2) %} -{% include 'atm/obs/config/amsua_n19.yaml.j2' %} -{% include 'atm/obs/config/sondes.yaml.j2' %} -{% include 'atm/obs/config/atms_n20.yaml.j2' %} -{% include 'atm/obs/config/aircraft.yaml.j2' %} -{% include 'atm/obs/config/satwind.yaml.j2' %} -{% include 'atm/obs/config/omi_aura.yaml.j2' %} -{% include 'atm/obs/config/ompsnp_npp.yaml.j2' %} -{% include 'atm/obs/config/ompstc8_npp.yaml.j2' %} -{% include 'atm/obs/config/cris-fsr_n20.yaml.j2' %} -{% include 'atm/obs/config/cris-fsr_npp.yaml.j2' %} -{% include 'atm/obs/config/sfc.yaml.j2' %} -{% include 'atm/obs/config/sfcship.yaml.j2' %} -{% endfilter %} diff --git a/parm/atm/obs/lists/lgetkf_prototype.yaml.j2 b/parm/atm/obs/lists/lgetkf_prototype.yaml.j2 deleted file mode 100644 index 6151234e6..000000000 --- a/parm/atm/obs/lists/lgetkf_prototype.yaml.j2 +++ /dev/null @@ -1,7 +0,0 @@ -observers: -{% filter indent(width=2) %} -{% include 'atm/obs/config/lgetkf_satwind_abi_goes-16.yaml.j2' %} -{% include 'atm/obs/config/lgetkf_scatwind_ascat_metop-b.yaml.j2' %} -{% include 'atm/obs/config/lgetkf_conv_ps.yaml.j2' %} -{% include 'atm/obs/config/lgetkf_gnssro.yaml.j2' %} -{% endfilter %} diff --git a/parm/atm/obs/testing/aircraft.yaml b/parm/atm/obs/testing/aircraft.yaml deleted file mode 100644 index e6c5b953e..000000000 --- a/parm/atm/obs/testing/aircraft.yaml +++ /dev/null @@ -1,334 +0,0 @@ -obs space: - name: Aircraft - obsdatain: - engine: - type: H5File -# obsfile: !ENV ${DATA}/obs/${OPREFIX}aircraft.${CDATE}.nc4 - obsfile: !ENV aircraft_obs_${CDATE}.nc4 - obsgrouping: - group variables: ["stationIdentification"] - sort variable: "pressure" - sort order: "descending" - obsdataout: - engine: - type: H5File -# obsfile: !ENV ${DATA}/diags/diag_aircraft_${CDATE}.nc4 - obsfile: !ENV diag_aircraft_${CDATE}.nc4 - io pool: - max pool size: 1 - simulated variables: [windEastward, windNorthward, airTemperature, specificHumidity] -geovals: - filename: !ENV aircraft_geoval_${CDATE}.nc4 -# -obs operator: - name: VertInterp -# -obs filters: - # Observation Range Sanity Check - - filter: Bounds Check - filter variables: - - name: airTemperature - minvalue: 195 - maxvalue: 327 - action: - name: reject - # - - filter: Bounds Check - filter variables: - - name: specificHumidity - minvalue: 1.0E-7 - maxvalue: 0.034999999 - action: - name: reject - # - - filter: Bounds Check - filter variables: - - name: windEastward - - name: windNorthward - minvalue: -130 - maxvalue: 130 - action: - name: reject - # - - filter: Bounds Check - filter variables: - - name: windEastward - - name: windNorthward - test variables: - - name: ObsFunction/Velocity - maxvalue: 130.0 - action: - name: reject - # Reject when pressure is less than 126 mb. - - filter: Bounds Check - filter variables: - - name: windEastward - - name: windNorthward - test variables: - - name: MetaData/pressure - minvalue: 12600 - action: - name: reject - # - # Reject all obs with PreQC mark already set above 3 - # - filter: PreQC - # maxvalue: 3 - # action: - # name: reject - # - #-------------------------------------------------------------------------------------------------------------------- - # Wind - #-------------------------------------------------------------------------------------------------------------------- - # - # Begin by assigning all ObsError to a constant value. These will get overwritten (as needed) for specific types. - - filter: Perform Action - filter variables: - - name: windEastward - - name: windNorthward - action: - name: assign error - error parameter: 2.0 # 2.0 m/s - # Assign intial ObsError specific to AIREP/ACARS - - filter: Perform Action - filter variables: - - name: windEastward - - name: windNorthward - action: - name: assign error - error parameter: 3.6 # 3.6 m/s - where: - - variable: - name: ObsType/windEastward - is_in: 230 - # Assign intial ObsError specific to AMDAR - - filter: Perform Action - filter variables: - - name: windEastward - - name: windNorthward - action: - name: assign error - error parameter: 3.0 # 3.0 m/s - where: - - variable: - name: ObsType/windEastward - is_in: 231 - # Assign intial ObsError specific to MDCRS - - filter: Perform Action - filter variables: - - name: windEastward - - name: windNorthward - action: - name: assign error - error parameter: 2.5 # 2.5 m/s - where: - - variable: - name: ObsType/windEastward - is_in: 233 - # - - filter: Perform Action - filter variables: - - name: windEastward - - name: windNorthward - action: - name: assign error - error function: - name: ObsFunction/ObsErrorModelStepwiseLinear - options: - xvar: - name: MetaData/pressure - xvals: [100000, 95000, 80000, 65000, 60000, 55000, 50000, 45000, 40000, 35000, 30000, 25000, 20000, 15000, 10000] #Pressure (Pa) - errors: [1.4, 1.5, 1.6, 1.8, 1.9, 2.0, 2.1, 2.3, 2.6, 2.8, 3.0, 3.2, 2.7, 2.4, 2.1] - # Assign the initial ObsError, based on height/pressure for RECON aircraft - - filter: Perform Action - filter variables: - - name: windEastward - - name: windNorthward - action: - name: assign error - error function: - name: ObsFunction/ObsErrorModelStepwiseLinear - options: - xvar: - name: MetaData/pressure - xvals: [70000, 65000, 60000, 55000, 50000, 45000, 40000, 35000, 30000, 25000, 20000, 15000, 10000, 7500, 5000] - errors: [2.4, 2.5, 2.6, 2.7, 2.8, 2.95, 3.1, 3.25, 3.4, 3.175, 2.95, 2.725, 2.5, 2.6, 2.7] - where: - - variable: - name: ObsType/windEastward - is_in: 232 - # Reject when difference of wind direction is more than 50 degrees. - - filter: Bounds Check - filter variables: - - name: windEastward - - name: windNorthward - test variables: - - name: ObsFunction/WindDirAngleDiff - options: - minimum_uv: 3.5 - maxvalue: 50.0 - action: - name: reject - defer to post: true - # When multiple obs exist within a single vertical model level, inflate ObsError -# - filter: Perform Action -# filter variables: -# - name: windEastward -# action: -# name: inflate error -# inflation variable: -# name: ObsFunction/ObsErrorFactorConventional -# options: -# test QCflag: PreQC -# inflate variables: [windEastward] -# defer to post: true - # -# - filter: Perform Action -# filter variables: -# - name: windNorthward -# action: -# name: inflate error -# inflation variable: -# name: ObsFunction/ObsErrorFactorConventional -# options: -# test QCflag: PreQC -# inflate variables: [windNorthward] -# defer to post: true - # - # Gross error check with (O - B) / ObsError greater than threshold. - - filter: Background Check - filter variables: - - name: windEastward - - name: windNorthward - threshold: 6.0 - absolute threshold: 19.0 - action: - name: reject - # - #-------------------------------------------------------------------------------------------------------------------- - # Temperature - #-------------------------------------------------------------------------------------------------------------------- - # - # Begin by assigning all ObsError to a constant value. These will get overwritten for specific types. - - filter: Perform Action - filter variables: - - name: airTemperature - action: - name: assign error - error parameter: 2.0 # 2.0 K - # Assign the initial observation error, based on pressure (for AIREP/ACARS; itype=130) - - filter: Perform Action - filter variables: - - name: airTemperature - action: - name: assign error - error function: - name: ObsFunction/ObsErrorModelStepwiseLinear - options: - xvar: - name: MetaData/pressure - xvals: [100000, 95000, 90000, 85000, 80000] - errors: [2.5, 2.3, 2.1, 1.9, 1.7] - where: - - variable: - name: ObsType/airTemperature - is_in: 130 - # Assign the initial observation error, based on pressure (for AMDAR and MDCRS; itype=131,133) - - filter: Perform Action - filter variables: - - name: airTemperature - action: - name: assign error - error function: - name: ObsFunction/ObsErrorModelStepwiseLinear - options: - xvar: - name: MetaData/pressure - xvals: [100000, 95000, 90000, 85000, 80000] - errors: [1.4706, 1.3529, 1.2353, 1.1176, 1.0] - where: - - variable: - name: ObsType/airTemperature - is_in: 131,133 - # Assign the initial observation error, based on pressure (for RECON aircraft; itype=132) - - filter: Perform Action - filter variables: - - name: airTemperature - action: - name: assign error - error function: - name: ObsFunction/ObsErrorModelStepwiseLinear - options: - xvar: - name: MetaData/pressure - xvals: [100000, 95000, 90000, 85000, 35000, 30000, 25000, 20000, 15000, 10000, 7500, 5000, 4000, 3200, 2000, 1000] - errors: [1.2, 1.1, 0.9, 0.8, 0.8, 0.9, 1.2, 1.2, 1.0, 0.8, 0.8, 0.9, 0.95, 1.0, 1.25, 1.5] - where: - - variable: - name: ObsType/airTemperature - is_in: 132 - # When multiple obs exist within a single vertical model level, inflate ObsError -# - filter: Perform Action -# filter variables: -# - name: airTemperature -# action: -# name: inflate error -# inflation variable: -# name: ObsFunction/ObsErrorFactorConventional -# options: -# test QCflag: PreQC -# inflate variables: [airTemperature] -# defer to post: true - - # Gross error check with (O - B) / ObsError greater than threshold. - - filter: Background Check - filter variables: - - name: airTemperature - threshold: 7.0 - absolute threshold: 8.0 - action: - name: reject - # - #-------------------------------------------------------------------------------------------------------------------- - # Moisture - #-------------------------------------------------------------------------------------------------------------------- - # - # Assign the initial observation error, based on height/pressure ONLY MDCRS - - filter: Perform Action - filter variables: - - name: specificHumidity - action: - name: assign error - error function: - name: ObsFunction/ObsErrorModelStepwiseLinear - options: - xvar: - name: MetaData/pressure - xvals: [110000, 105000, 100000, 95000, 90000, 85000, 80000, 75000, 70000, 65000, 60000, 55000, - 50000, 45000, 40000, 35000, 30000, 25000, 20000, 15000, 10000, 7500, 5000, 4000, 3000] - errors: [.19455, .19062, .18488, .17877, .17342, .16976, .16777, .16696, .16605, .16522, .16637, .17086, - .17791, .18492, .18996, .19294, .19447, .19597, .19748, .19866, .19941, .19979, .19994, .19999, .2] - scale_factor_var: ObsValue/specificHumidity - where: - - variable: - name: ObsType/specificHumidity - is_in: 133 - # When multiple obs exist within a single vertical model level, inflate ObsError -# - filter: Perform Action -# filter variables: -# - name: specificHumidity -# action: -# name: inflate error -# inflation variable: -# name: ObsFunction/ObsErrorFactorConventional -# options: -# test QCflag: PreQC -# inflate variables: [specificHumidity] -# defer to post: true - - # Gross error check with (O - B) / ObsError greater than threshold. - - filter: Background Check - filter variables: - - name: specificHumidity - threshold: 8.0 - action: - name: reject diff --git a/parm/atm/obs/testing/amsua_metop-a.yaml b/parm/atm/obs/testing/amsua_metop-a.yaml deleted file mode 100644 index d2951e032..000000000 --- a/parm/atm/obs/testing/amsua_metop-a.yaml +++ /dev/null @@ -1,471 +0,0 @@ -obs operator: - name: CRTM - Absorbers: [H2O,O3] - Clouds: [Water, Ice] - Cloud_Fraction: 1.0 - obs options: - Sensor_ID: &Sensor_ID amsua_metop-a - EndianType: little_endian - CoefficientPath: crtm/ -obs space: - name: amsua_metop-a - obsdatain: - engine: - type: H5File - obsfile: !ENV amsua_metop-a_obs_${CDATE}.nc4 - obsdataout: - engine: - type: H5File - obsfile: !ENV amsua_metop-a_diag_${CDATE}.nc4 - simulated variables: [brightnessTemperature] - channels: &all_channels 1-15 -geovals: - filename: !ENV amsua_metop-a_geoval_${CDATE}.nc4 -obs bias: - input file: !ENV amsua_metop-a_satbias_${GDATE}.nc4 - variational bc: - predictors: - - name: constant - - name: lapse_rate - order: 2 - tlapse: &amsua_metop-a_tlap !ENV amsua_metop-a_tlapmean_${GDATE}.txt - - name: lapse_rate - tlapse: *amsua_metop-a_tlap - - name: emissivity - - name: scan_angle - order: 4 - - name: scan_angle - order: 3 - - name: scan_angle - order: 2 - - name: scan_angle - -obs post filters: -# Step 0-A: Create Diagnostic Flags -# Diagnostic flag for CLW retrieval -- filter: Create Diagnostic Flags - filter variables: - - name: brightnessTemperature - channels: *all_channels - flags: - - name: CLWRetrievalReject - initial value: false - force reinitialization: true - -# Diagnostic flag for hydrometeor check -- filter: Create Diagnostic Flags - filter variables: - - name: brightnessTemperature - channels: *all_channels - flags: - - name: HydrometeorCheckReject - initial value: false - force reinitialization: true - -# Diagnostic flag for gross check -- filter: Create Diagnostic Flags - filter variables: - - name: brightnessTemperature - channels: *all_channels - flags: - - name: GrossCheckReject - initial value: false - force reinitialization: true - -# Diagnostic flag for inter-channel consistency check -- filter: Create Diagnostic Flags - filter variables: - - name: brightnessTemperature - channels: *all_channels - flags: - - name: InterChannelCheckReject - initial value: false - force reinitialization: true - -# Step 0-B: Calculate derived variables -# Calculate CLW retrieved from observation -- filter: Variable Assignment - assignments: - - name: DerivedMetaData/CLWRetFromObs - type: float - function: - name: ObsFunction/CLWRetMW - options: - clwret_ch238: 1 - clwret_ch314: 2 - clwret_types: [ObsValue] - -# Calculate CLW retrieved from background -- filter: Variable Assignment - assignments: - - name: DerivedMetaData/CLWRetFromBkg - type: float - function: - name: ObsFunction/CLWRetMW - options: - clwret_ch238: 1 - clwret_ch314: 2 - clwret_types: [HofX] - -# Calculate symmetric retrieved CLW -- filter: Variable Assignment - assignments: - - name: DerivedMetaData/CLWRetSymmetric - type: float - value: 1000.0 - -- filter: Variable Assignment - where: - - variable: - name: DerivedMetaData/CLWRetFromObs - minvalue: 0. - maxvalue: 999. - - variable: - name: DerivedMetaData/CLWRetFromBkg - minvalue: 0. - maxvalue: 999. - where operator: and - assignments: - - name: DerivedMetaData/CLWRetSymmetric - type: float - function: - name: ObsFunction/Arithmetic - options: - variables: - - name: DerivedMetaData/CLWRetFromObs - - name: DerivedMetaData/CLWRetFromBkg - total coefficient: 0.5 - -# Calculate scattering index from observation -- filter: Variable Assignment - assignments: - - name: DerivedMetaData/SIRetFromObs - type: float - function: - name: ObsFunction/SCATRetMW - options: - scatret_ch238: 1 - scatret_ch314: 2 - scatret_ch890: 15 - scatret_types: [ObsValue] - -# Calculate CLW obs/bkg match index -- filter: Variable Assignment - assignments: - - name: DerivedMetaData/CLWMatchIndex - channels: *all_channels - type: float - function: - name: ObsFunction/CLWMatchIndexMW - channels: *all_channels - options: - channels: *all_channels - clwobs_function: - name: DerivedMetaData/CLWRetFromObs - clwbkg_function: - name: DerivedMetaData/CLWRetFromBkg - clwret_clearsky: [0.050, 0.030, 0.030, 0.020, 0.000, - 0.100, 0.000, 0.000, 0.000, 0.000, - 0.000, 0.000, 0.000, 0.000, 0.030] - -# Calculate symmetric observation error -- filter: Variable Assignment - assignments: - - name: DerivedMetaData/InitialObsError - channels: *all_channels - type: float - function: - name: ObsFunction/ObsErrorModelRamp - channels: *all_channels - options: - channels: *all_channels - xvar: - name: DerivedMetaData/CLWRetSymmetric - x0: [ 0.050, 0.030, 0.030, 0.020, 0.000, - 0.100, 0.000, 0.000, 0.000, 0.000, - 0.000, 0.000, 0.000, 0.000, 0.030] - x1: [ 0.600, 0.450, 0.400, 0.450, 1.000, - 1.500, 0.000, 0.000, 0.000, 0.000, - 0.000, 0.000, 0.000, 0.000, 0.200] - err0: [ 2.500, 2.200, 2.000, 0.550, 0.300, - 0.230, 0.230, 0.250, 0.250, 0.350, - 0.400, 0.550, 0.800, 4.000, 3.500] - err1: [20.000, 18.000, 12.000, 3.000, 0.500, - 0.300, 0.230, 0.250, 0.250, 0.350, - 0.400, 0.550, 0.800, 4.000, 18.000] - -# Calculate Innovation -- filter: Variable Assignment - assignments: - - name: DerivedMetaData/Innovation - channels: *all_channels - type: float - function: - name: ObsFunction/Arithmetic - channels: *all_channels - options: - variables: - - name: ObsValue/brightnessTemperature - channels: *all_channels - - name: HofX/brightnessTemperature - channels: *all_channels - coefs: [1, -1] - -# Step 1: Assign initial all-sky observation error -- filter: Perform Action - filter variables: - - name: brightnessTemperature - channels: *all_channels - action: - name: assign error - error function: - name: DerivedMetaData/InitialObsError - channels: *all_channels - -# Step 2: CLW Retrieval Check (observation_based) -- filter: Bounds Check - filter variables: - - name: brightnessTemperature - channels: 1-6, 15 - test variables: - - name: DerivedMetaData/CLWRetFromObs - maxvalue: 999.0 - actions: - - name: set - flag: CLWRetrievalReject - - name: reject - -# Step 3: CLW Retrieval Check (background_based) -- filter: Bounds Check - filter variables: - - name: brightnessTemperature - channels: 1-6, 15 - test variables: - - name: DerivedMetaData/CLWRetFromBkg - maxvalue: 999.0 - actions: - - name: set - flag: CLWRetrievalReject - - name: reject - -# Step 4: Window channel sanity check -- filter: Bounds Check - filter variables: - - name: brightnessTemperature - channels: 1-6, 15 - test variables: - - name: DerivedMetaData/Innovation - channels: 1, 2, 4-6, 15 - maxvalue: 200.0 - minvalue: -200.0 - flag all filter variables if any test variable is out of bounds: true - -# Step 5: Hydrometeor Check (cloud/precipitation affected chanels) -- filter: Bounds Check - filter variables: - - name: brightnessTemperature - channels: *all_channels - test variables: - - name: ObsFunction/HydrometeorCheckAMSUA - channels: *all_channels - options: - channels: *all_channels - obserr_clearsky: [ 2.500, 2.200, 2.000, 0.550, 0.300, - 0.230, 0.230, 0.250, 0.250, 0.350, - 0.400, 0.550, 0.800, 4.000, 3.500] - clwret_function: - name: DerivedMetaData/CLWRetFromObs - obserr_function: - name: DerivedMetaData/InitialObsError - channels: *all_channels - maxvalue: 0.0 - actions: - - name: set - flag: HydrometeorCheckReject - ignore: rejected observations - - name: reject - -# Step 6: Observation error inflation based on topography check -- filter: Variable Assignment - assignments: - - name: DerivedMetaData/ObsErrorFactorTopo - channels: *all_channels - type: float - function: - name: ObsFunction/ObsErrorFactorTopoRad - channels: *all_channels - options: - sensor: *Sensor_ID - channels: *all_channels - -- filter: Perform Action - filter variables: - - name: brightnessTemperature - channels: *all_channels - action: - name: inflate error - inflation variable: - name: DerivedMetaData/ObsErrorFactorTopo - channels: *all_channels - -# Step 7: Obs error inflation based on TOA transmittancec check -- filter: Variable Assignment - assignments: - - name: DerivedMetaData/ObsErrorFactorTransmitTop - channels: *all_channels - type: float - function: - name: ObsFunction/ObsErrorFactorTransmitTopRad - channels: *all_channels - options: - channels: *all_channels - -- filter: Perform Action - filter variables: - - name: brightnessTemperature - channels: *all_channels - action: - name: inflate error - inflation variable: - name: DerivedMetaData/ObsErrorFactorTransmitTop - channels: *all_channels - -# Step 8: Observation error inflation based on surface jacobian check -- filter: Variable Assignment - assignments: - - name: DerivedMetaData/ObsErrorFactorSurfJacobian - channels: *all_channels - type: float - function: - name: ObsFunction/ObsErrorFactorSurfJacobianRad - channels: *all_channels - options: - sensor: *Sensor_ID - channels: *all_channels - obserr_demisf: [0.010, 0.020, 0.015, 0.020, 0.200] - obserr_dtempf: [0.500, 2.000, 1.000, 2.000, 4.500] - -- filter: Perform Action - filter variables: - - name: brightnessTemperature - channels: *all_channels - action: - name: inflate error - inflation variable: - name: DerivedMetaData/ObsErrorFactorSurfJacobian - channels: *all_channels - -# Step 9: Situation dependent check -- filter: Variable Assignment - assignments: - - name: DerivedMetaData/ObsErrorFactorSituDepend - channels: *all_channels - type: float - function: - name: ObsFunction/ObsErrorFactorSituDependMW - channels: *all_channels - options: - sensor: *Sensor_ID - channels: *all_channels - clwbkg_function: - name: DerivedMetaData/CLWRetFromBkg - clwobs_function: - name: DerivedMetaData/CLWRetFromObs - scatobs_function: - name: DerivedMetaData/SIRetFromObs - clwmatchidx_function: - name: DerivedMetaData/CLWMatchIndex - channels: *all_channels - obserr_function: - name: DerivedMetaData/InitialObsError - channels: *all_channels - obserr_clearsky: [2.500, 2.200, 2.000, 0.550, 0.300, - 0.230, 0.230, 0.250, 0.250, 0.350, - 0.400, 0.550, 0.800, 4.000, 3.500] - -- filter: Perform Action - filter variables: - - name: brightnessTemperature - channels: *all_channels - action: - name: inflate error - inflation variable: - name: DerivedMetaData/ObsErrorFactorSituDepend - channels: *all_channels - -# Step 10: Gross check -# Remove data if abs(Obs-HofX) > absolute threhold -- filter: Variable Assignment - assignments: - - name: DerivedMetaData/ObsErrorFactorLat - type: float - function: - name: ObsFunction/ObsErrorFactorLatRad - options: - latitude_parameters: [25.0, 0.25, 0.04, 3.0] - -- filter: Variable Assignment - assignments: - - name: DerivedMetaData/ObsErrorBound - channels: *all_channels - type: float - function: - name: ObsFunction/ObsErrorBoundMW - channels: *all_channels - options: - sensor: *Sensor_ID - channels: *all_channels - obserr_bound_latitude: - name: DerivedMetaData/ObsErrorFactorLat - obserr_bound_transmittop: - name: DerivedMetaData/ObsErrorFactorTransmitTop - channels: *all_channels - options: - channels: *all_channels - obserr_bound_topo: - name: DerivedMetaData/ObsErrorFactorTopo - channels: *all_channels - obserr_function: - name: DerivedMetaData/InitialObsError - channels: *all_channels - threhold: 3 - obserr_bound_max: [4.5, 4.5, 4.5, 2.5, 2.0, - 2.0, 2.0, 2.0, 2.0, 2.0, - 2.5, 3.5, 4.5, 4.5, 4.5] - -- filter: Background Check - filter variables: - - name: brightnessTemperature - channels: *all_channels - function absolute threshold: - - name: DerivedMetaData/ObsErrorBound - channels: *all_channels - actions: - - name: set - flag: GrossCheckReject - ignore: rejected observations - - name: reject - -# Step 11: Inter-channel check -- filter: Bounds Check - filter variables: - - name: brightnessTemperature - channels: *all_channels - test variables: - - name: ObsFunction/InterChannelConsistencyCheck - channels: *all_channels - options: - channels: *all_channels - use passive_bc: true - sensor: *Sensor_ID - use_flag: [ 1, 1, 1, 1, 1, - 1, -1, -1, 1, 1, - 1, 1, 1, 1, 1 ] - maxvalue: 1.0e-12 - actions: - - name: set - flag: InterChannelCheckReject - ignore: rejected observations - - name: reject -passedBenchmark: 93421 - diff --git a/parm/atm/obs/testing/amsua_metop-b.yaml b/parm/atm/obs/testing/amsua_metop-b.yaml deleted file mode 100644 index 3c666d8e9..000000000 --- a/parm/atm/obs/testing/amsua_metop-b.yaml +++ /dev/null @@ -1,471 +0,0 @@ -obs operator: - name: CRTM - Absorbers: [H2O,O3] - Clouds: [Water, Ice] - Cloud_Fraction: 1.0 - obs options: - Sensor_ID: &Sensor_ID amsua_metop-b - EndianType: little_endian - CoefficientPath: crtm/ -obs space: - name: amsua_metop-b - obsdatain: - engine: - type: H5File - obsfile: !ENV amsua_metop-b_obs_${CDATE}.nc4 - obsdataout: - engine: - type: H5File - obsfile: !ENV amsua_metop-b_diag_${CDATE}.nc4 - simulated variables: [brightnessTemperature] - channels: &all_channels 1-15 -geovals: - filename: !ENV amsua_metop-b_geoval_${CDATE}.nc4 -obs bias: - input file: !ENV amsua_metop-b_satbias_${GDATE}.nc4 - variational bc: - predictors: - - name: constant - - name: lapse_rate - order: 2 - tlapse: &amsua_metop-b_tlap !ENV amsua_metop-b_tlapmean_${GDATE}.txt - - name: lapse_rate - tlapse: *amsua_metop-b_tlap - - name: emissivity - - name: scan_angle - order: 4 - - name: scan_angle - order: 3 - - name: scan_angle - order: 2 - - name: scan_angle - -obs post filters: -# Step 0-A: Create Diagnostic Flags -# Diagnostic flag for CLW retrieval -- filter: Create Diagnostic Flags - filter variables: - - name: brightnessTemperature - channels: *all_channels - flags: - - name: CLWRetrievalReject - initial value: false - force reinitialization: true - -# Diagnostic flag for hydrometeor check -- filter: Create Diagnostic Flags - filter variables: - - name: brightnessTemperature - channels: *all_channels - flags: - - name: HydrometeorCheckReject - initial value: false - force reinitialization: true - -# Diagnostic flag for gross check -- filter: Create Diagnostic Flags - filter variables: - - name: brightnessTemperature - channels: *all_channels - flags: - - name: GrossCheckReject - initial value: false - force reinitialization: true - -# Diagnostic flag for inter-channel consistency check -- filter: Create Diagnostic Flags - filter variables: - - name: brightnessTemperature - channels: *all_channels - flags: - - name: InterChannelCheckReject - initial value: false - force reinitialization: true - -# Step 0-B: Calculate derived variables -# Calculate CLW retrieved from observation -- filter: Variable Assignment - assignments: - - name: DerivedMetaData/CLWRetFromObs - type: float - function: - name: ObsFunction/CLWRetMW - options: - clwret_ch238: 1 - clwret_ch314: 2 - clwret_types: [ObsValue] - -# Calculate CLW retrieved from background -- filter: Variable Assignment - assignments: - - name: DerivedMetaData/CLWRetFromBkg - type: float - function: - name: ObsFunction/CLWRetMW - options: - clwret_ch238: 1 - clwret_ch314: 2 - clwret_types: [HofX] - -# Calculate symmetric retrieved CLW -- filter: Variable Assignment - assignments: - - name: DerivedMetaData/CLWRetSymmetric - type: float - value: 1000.0 - -- filter: Variable Assignment - where: - - variable: - name: DerivedMetaData/CLWRetFromObs - minvalue: 0. - maxvalue: 999. - - variable: - name: DerivedMetaData/CLWRetFromBkg - minvalue: 0. - maxvalue: 999. - where operator: and - assignments: - - name: DerivedMetaData/CLWRetSymmetric - type: float - function: - name: ObsFunction/Arithmetic - options: - variables: - - name: DerivedMetaData/CLWRetFromObs - - name: DerivedMetaData/CLWRetFromBkg - total coefficient: 0.5 - -# Calculate scattering index from observation -- filter: Variable Assignment - assignments: - - name: DerivedMetaData/SIRetFromObs - type: float - function: - name: ObsFunction/SCATRetMW - options: - scatret_ch238: 1 - scatret_ch314: 2 - scatret_ch890: 15 - scatret_types: [ObsValue] - -# Calculate CLW obs/bkg match index -- filter: Variable Assignment - assignments: - - name: DerivedMetaData/CLWMatchIndex - channels: *all_channels - type: float - function: - name: ObsFunction/CLWMatchIndexMW - channels: *all_channels - options: - channels: *all_channels - clwobs_function: - name: DerivedMetaData/CLWRetFromObs - clwbkg_function: - name: DerivedMetaData/CLWRetFromBkg - clwret_clearsky: [0.050, 0.030, 0.030, 0.020, 0.000, - 0.100, 0.000, 0.000, 0.000, 0.000, - 0.000, 0.000, 0.000, 0.000, 0.030] - -# Calculate symmetric observation error -- filter: Variable Assignment - assignments: - - name: DerivedMetaData/InitialObsError - channels: *all_channels - type: float - function: - name: ObsFunction/ObsErrorModelRamp - channels: *all_channels - options: - channels: *all_channels - xvar: - name: DerivedMetaData/CLWRetSymmetric - x0: [ 0.050, 0.030, 0.030, 0.020, 0.000, - 0.100, 0.000, 0.000, 0.000, 0.000, - 0.000, 0.000, 0.000, 0.000, 0.030] - x1: [ 0.600, 0.450, 0.400, 0.450, 1.000, - 1.500, 0.000, 0.000, 0.000, 0.000, - 0.000, 0.000, 0.000, 0.000, 0.200] - err0: [ 2.500, 2.200, 2.000, 0.550, 0.300, - 0.230, 0.230, 0.250, 0.250, 0.350, - 0.400, 0.550, 0.800, 4.000, 3.500] - err1: [20.000, 18.000, 12.000, 3.000, 0.500, - 0.300, 0.230, 0.250, 0.250, 0.350, - 0.400, 0.550, 0.800, 4.000, 18.000] - -# Calculate Innovation -- filter: Variable Assignment - assignments: - - name: DerivedMetaData/Innovation - channels: *all_channels - type: float - function: - name: ObsFunction/Arithmetic - channels: *all_channels - options: - variables: - - name: ObsValue/brightnessTemperature - channels: *all_channels - - name: HofX/brightnessTemperature - channels: *all_channels - coefs: [1, -1] - -# Step 1: Assign initial all-sky observation error -- filter: Perform Action - filter variables: - - name: brightnessTemperature - channels: *all_channels - action: - name: assign error - error function: - name: DerivedMetaData/InitialObsError - channels: *all_channels - -# Step 2: CLW Retrieval Check (observation_based) -- filter: Bounds Check - filter variables: - - name: brightnessTemperature - channels: 1-6, 15 - test variables: - - name: DerivedMetaData/CLWRetFromObs - maxvalue: 999.0 - actions: - - name: set - flag: CLWRetrievalReject - - name: reject - -# Step 3: CLW Retrieval Check (background_based) -- filter: Bounds Check - filter variables: - - name: brightnessTemperature - channels: 1-6, 15 - test variables: - - name: DerivedMetaData/CLWRetFromBkg - maxvalue: 999.0 - actions: - - name: set - flag: CLWRetrievalReject - - name: reject - -# Step 4: Window channel sanity check -- filter: Bounds Check - filter variables: - - name: brightnessTemperature - channels: 1-6, 15 - test variables: - - name: DerivedMetaData/Innovation - channels: 1, 2, 4-6, 15 - maxvalue: 200.0 - minvalue: -200.0 - flag all filter variables if any test variable is out of bounds: true - -# Step 5: Hydrometeor Check (cloud/precipitation affected chanels) -- filter: Bounds Check - filter variables: - - name: brightnessTemperature - channels: *all_channels - test variables: - - name: ObsFunction/HydrometeorCheckAMSUA - channels: *all_channels - options: - channels: *all_channels - obserr_clearsky: [ 2.500, 2.200, 2.000, 0.550, 0.300, - 0.230, 0.230, 0.250, 0.250, 0.350, - 0.400, 0.550, 0.800, 4.000, 3.500] - clwret_function: - name: DerivedMetaData/CLWRetFromObs - obserr_function: - name: DerivedMetaData/InitialObsError - channels: *all_channels - maxvalue: 0.0 - actions: - - name: set - flag: HydrometeorCheckReject - ignore: rejected observations - - name: reject - -# Step 6: Observation error inflation based on topography check -- filter: Variable Assignment - assignments: - - name: DerivedMetaData/ObsErrorFactorTopo - channels: *all_channels - type: float - function: - name: ObsFunction/ObsErrorFactorTopoRad - channels: *all_channels - options: - sensor: *Sensor_ID - channels: *all_channels - -- filter: Perform Action - filter variables: - - name: brightnessTemperature - channels: *all_channels - action: - name: inflate error - inflation variable: - name: DerivedMetaData/ObsErrorFactorTopo - channels: *all_channels - -# Step 7: Obs error inflation based on TOA transmittancec check -- filter: Variable Assignment - assignments: - - name: DerivedMetaData/ObsErrorFactorTransmitTop - channels: *all_channels - type: float - function: - name: ObsFunction/ObsErrorFactorTransmitTopRad - channels: *all_channels - options: - channels: *all_channels - -- filter: Perform Action - filter variables: - - name: brightnessTemperature - channels: *all_channels - action: - name: inflate error - inflation variable: - name: DerivedMetaData/ObsErrorFactorTransmitTop - channels: *all_channels - -# Step 8: Observation error inflation based on surface jacobian check -- filter: Variable Assignment - assignments: - - name: DerivedMetaData/ObsErrorFactorSurfJacobian - channels: *all_channels - type: float - function: - name: ObsFunction/ObsErrorFactorSurfJacobianRad - channels: *all_channels - options: - sensor: *Sensor_ID - channels: *all_channels - obserr_demisf: [0.010, 0.020, 0.015, 0.020, 0.200] - obserr_dtempf: [0.500, 2.000, 1.000, 2.000, 4.500] - -- filter: Perform Action - filter variables: - - name: brightnessTemperature - channels: *all_channels - action: - name: inflate error - inflation variable: - name: DerivedMetaData/ObsErrorFactorSurfJacobian - channels: *all_channels - -# Step 9: Situation dependent check -- filter: Variable Assignment - assignments: - - name: DerivedMetaData/ObsErrorFactorSituDepend - channels: *all_channels - type: float - function: - name: ObsFunction/ObsErrorFactorSituDependMW - channels: *all_channels - options: - sensor: *Sensor_ID - channels: *all_channels - clwbkg_function: - name: DerivedMetaData/CLWRetFromBkg - clwobs_function: - name: DerivedMetaData/CLWRetFromObs - scatobs_function: - name: DerivedMetaData/SIRetFromObs - clwmatchidx_function: - name: DerivedMetaData/CLWMatchIndex - channels: *all_channels - obserr_function: - name: DerivedMetaData/InitialObsError - channels: *all_channels - obserr_clearsky: [2.500, 2.200, 2.000, 0.550, 0.300, - 0.230, 0.230, 0.250, 0.250, 0.350, - 0.400, 0.550, 0.800, 4.000, 3.500] - -- filter: Perform Action - filter variables: - - name: brightnessTemperature - channels: *all_channels - action: - name: inflate error - inflation variable: - name: DerivedMetaData/ObsErrorFactorSituDepend - channels: *all_channels - -# Step 10: Gross check -# Remove data if abs(Obs-HofX) > absolute threhold -- filter: Variable Assignment - assignments: - - name: DerivedMetaData/ObsErrorFactorLat - type: float - function: - name: ObsFunction/ObsErrorFactorLatRad - options: - latitude_parameters: [25.0, 0.25, 0.04, 3.0] - -- filter: Variable Assignment - assignments: - - name: DerivedMetaData/ObsErrorBound - channels: *all_channels - type: float - function: - name: ObsFunction/ObsErrorBoundMW - channels: *all_channels - options: - sensor: *Sensor_ID - channels: *all_channels - obserr_bound_latitude: - name: DerivedMetaData/ObsErrorFactorLat - obserr_bound_transmittop: - name: DerivedMetaData/ObsErrorFactorTransmitTop - channels: *all_channels - options: - channels: *all_channels - obserr_bound_topo: - name: DerivedMetaData/ObsErrorFactorTopo - channels: *all_channels - obserr_function: - name: DerivedMetaData/InitialObsError - channels: *all_channels - threhold: 3 - obserr_bound_max: [4.5, 4.5, 4.5, 2.5, 2.0, - 2.0, 2.0, 2.0, 2.0, 2.0, - 2.5, 3.5, 4.5, 4.5, 4.5] - -- filter: Background Check - filter variables: - - name: brightnessTemperature - channels: *all_channels - function absolute threshold: - - name: DerivedMetaData/ObsErrorBound - channels: *all_channels - actions: - - name: set - flag: GrossCheckReject - ignore: rejected observations - - name: reject - -# Step 11: Inter-channel check -- filter: Bounds Check - filter variables: - - name: brightnessTemperature - channels: *all_channels - test variables: - - name: ObsFunction/InterChannelConsistencyCheck - channels: *all_channels - options: - channels: *all_channels - use passive_bc: true - sensor: *Sensor_ID - use_flag: [ -1, -1, -1, -1, -1, - -1, -1, 1, 1, 1, - 1, 1, 1, 1, -1 ] - maxvalue: 1.0e-12 - actions: - - name: set - flag: InterChannelCheckReject - ignore: rejected observations - - name: reject -passedBenchmark: 71068 - diff --git a/parm/atm/obs/testing/amsua_metop-c.yaml b/parm/atm/obs/testing/amsua_metop-c.yaml deleted file mode 100644 index 0e9e82795..000000000 --- a/parm/atm/obs/testing/amsua_metop-c.yaml +++ /dev/null @@ -1,470 +0,0 @@ -obs operator: - name: CRTM - Absorbers: [H2O,O3] - Clouds: [Water, Ice] - Cloud_Fraction: 1.0 - obs options: - Sensor_ID: &Sensor_ID amsua_metop-c - EndianType: little_endian - CoefficientPath: crtm/ -obs space: - name: amsua_metop-c - obsdatain: - engine: - type: H5File - obsfile: !ENV amsua_metop-c_obs_${CDATE}.nc4 - obsdataout: - engine: - type: H5File - obsfile: !ENV amsua_metop-c_diag_${CDATE}.nc4 - simulated variables: [brightnessTemperature] - channels: &all_channels 1-15 -geovals: - filename: !ENV amsua_metop-c_geoval_${CDATE}.nc4 -obs bias: - input file: !ENV amsua_metop-c_satbias_${GDATE}.nc4 - variational bc: - predictors: - - name: constant - - name: lapse_rate - order: 2 - tlapse: &amsua_metop-c_tlap !ENV amsua_metop-c_tlapmean_${GDATE}.txt - - name: lapse_rate - tlapse: *amsua_metop-c_tlap - - name: emissivity - - name: scan_angle - order: 4 - - name: scan_angle - order: 3 - - name: scan_angle - order: 2 - - name: scan_angle - -obs post filters: -# Step 0-A: Create Diagnostic Flags -# Diagnostic flag for CLW retrieval -- filter: Create Diagnostic Flags - filter variables: - - name: brightnessTemperature - channels: *all_channels - flags: - - name: CLWRetrievalReject - initial value: false - force reinitialization: true - -# Diagnostic flag for hydrometeor check -- filter: Create Diagnostic Flags - filter variables: - - name: brightnessTemperature - channels: *all_channels - flags: - - name: HydrometeorCheckReject - initial value: false - force reinitialization: true - -# Diagnostic flag for gross check -- filter: Create Diagnostic Flags - filter variables: - - name: brightnessTemperature - channels: *all_channels - flags: - - name: GrossCheckReject - initial value: false - force reinitialization: true - -# Diagnostic flag for inter-channel consistency check -- filter: Create Diagnostic Flags - filter variables: - - name: brightnessTemperature - channels: *all_channels - flags: - - name: InterChannelCheckReject - initial value: false - force reinitialization: true - -# Step 0-B: Calculate derived variables -# Calculate CLW retrieved from observation -- filter: Variable Assignment - assignments: - - name: DerivedMetaData/CLWRetFromObs - type: float - function: - name: ObsFunction/CLWRetMW - options: - clwret_ch238: 1 - clwret_ch314: 2 - clwret_types: [ObsValue] - -# Calculate CLW retrieved from background -- filter: Variable Assignment - assignments: - - name: DerivedMetaData/CLWRetFromBkg - type: float - function: - name: ObsFunction/CLWRetMW - options: - clwret_ch238: 1 - clwret_ch314: 2 - clwret_types: [HofX] - -# Calculate symmetric retrieved CLW -- filter: Variable Assignment - assignments: - - name: DerivedMetaData/CLWRetSymmetric - type: float - value: 1000.0 - -- filter: Variable Assignment - where: - - variable: - name: DerivedMetaData/CLWRetFromObs - minvalue: 0. - maxvalue: 999. - - variable: - name: DerivedMetaData/CLWRetFromBkg - minvalue: 0. - maxvalue: 999. - where operator: and - assignments: - - name: DerivedMetaData/CLWRetSymmetric - type: float - function: - name: ObsFunction/Arithmetic - options: - variables: - - name: DerivedMetaData/CLWRetFromObs - - name: DerivedMetaData/CLWRetFromBkg - total coefficient: 0.5 - -# Calculate scattering index from observation -- filter: Variable Assignment - assignments: - - name: DerivedMetaData/SIRetFromObs - type: float - function: - name: ObsFunction/SCATRetMW - options: - scatret_ch238: 1 - scatret_ch314: 2 - scatret_ch890: 15 - scatret_types: [ObsValue] - -# Calculate CLW obs/bkg match index -- filter: Variable Assignment - assignments: - - name: DerivedMetaData/CLWMatchIndex - channels: *all_channels - type: float - function: - name: ObsFunction/CLWMatchIndexMW - channels: *all_channels - options: - channels: *all_channels - clwobs_function: - name: DerivedMetaData/CLWRetFromObs - clwbkg_function: - name: DerivedMetaData/CLWRetFromBkg - clwret_clearsky: [0.050, 0.030, 0.030, 0.020, 0.000, - 0.100, 0.000, 0.000, 0.000, 0.000, - 0.000, 0.000, 0.000, 0.000, 0.030] - -# Calculate symmetric observation error -- filter: Variable Assignment - assignments: - - name: DerivedMetaData/InitialObsError - channels: *all_channels - type: float - function: - name: ObsFunction/ObsErrorModelRamp - channels: *all_channels - options: - channels: *all_channels - xvar: - name: DerivedMetaData/CLWRetSymmetric - x0: [ 0.050, 0.030, 0.030, 0.020, 0.000, - 0.100, 0.000, 0.000, 0.000, 0.000, - 0.000, 0.000, 0.000, 0.000, 0.030] - x1: [ 0.600, 0.450, 0.400, 0.450, 1.000, - 1.500, 0.000, 0.000, 0.000, 0.000, - 0.000, 0.000, 0.000, 0.000, 0.200] - err0: [ 2.500, 2.200, 2.000, 0.550, 0.300, - 0.230, 0.230, 0.250, 0.250, 0.350, - 0.400, 0.550, 0.800, 4.000, 3.500] - err1: [20.000, 18.000, 12.000, 3.000, 0.500, - 0.300, 0.230, 0.250, 0.250, 0.350, - 0.400, 0.550, 0.800, 4.000, 18.000] - -# Calculate Innovation -- filter: Variable Assignment - assignments: - - name: DerivedMetaData/Innovation - channels: *all_channels - type: float - function: - name: ObsFunction/Arithmetic - channels: *all_channels - options: - variables: - - name: ObsValue/brightnessTemperature - channels: *all_channels - - name: HofX/brightnessTemperature - channels: *all_channels - coefs: [1, -1] - -# Step 1: Assign initial all-sky observation error -- filter: Perform Action - filter variables: - - name: brightnessTemperature - channels: *all_channels - action: - name: assign error - error function: - name: DerivedMetaData/InitialObsError - channels: *all_channels - -# Step 2: CLW Retrieval Check (observation_based) -- filter: Bounds Check - filter variables: - - name: brightnessTemperature - channels: 1-6, 15 - test variables: - - name: DerivedMetaData/CLWRetFromObs - maxvalue: 999.0 - actions: - - name: set - flag: CLWRetrievalReject - - name: reject - -# Step 3: CLW Retrieval Check (background_based) -- filter: Bounds Check - filter variables: - - name: brightnessTemperature - channels: 1-6, 15 - test variables: - - name: DerivedMetaData/CLWRetFromBkg - maxvalue: 999.0 - actions: - - name: set - flag: CLWRetrievalReject - - name: reject - -# Step 4: Window channel sanity check -- filter: Bounds Check - filter variables: - - name: brightnessTemperature - channels: 1-6, 15 - test variables: - - name: DerivedMetaData/Innovation - channels: 1, 2, 4-6, 15 - maxvalue: 200.0 - minvalue: -200.0 - flag all filter variables if any test variable is out of bounds: true - -# Step 5: Hydrometeor Check (cloud/precipitation affected chanels) -- filter: Bounds Check - filter variables: - - name: brightnessTemperature - channels: *all_channels - test variables: - - name: ObsFunction/HydrometeorCheckAMSUA - channels: *all_channels - options: - channels: *all_channels - obserr_clearsky: [ 2.500, 2.200, 2.000, 0.550, 0.300, - 0.230, 0.230, 0.250, 0.250, 0.350, - 0.400, 0.550, 0.800, 4.000, 3.500] - clwret_function: - name: DerivedMetaData/CLWRetFromObs - obserr_function: - name: DerivedMetaData/InitialObsError - channels: *all_channels - maxvalue: 0.0 - actions: - - name: set - flag: HydrometeorCheckReject - ignore: rejected observations - - name: reject - -# Step 6: Observation error inflation based on topography check -- filter: Variable Assignment - assignments: - - name: DerivedMetaData/ObsErrorFactorTopo - channels: *all_channels - type: float - function: - name: ObsFunction/ObsErrorFactorTopoRad - channels: *all_channels - options: - sensor: *Sensor_ID - channels: *all_channels - -- filter: Perform Action - filter variables: - - name: brightnessTemperature - channels: *all_channels - action: - name: inflate error - inflation variable: - name: DerivedMetaData/ObsErrorFactorTopo - channels: *all_channels - -# Step 7: Obs error inflation based on TOA transmittancec check -- filter: Variable Assignment - assignments: - - name: DerivedMetaData/ObsErrorFactorTransmitTop - channels: *all_channels - type: float - function: - name: ObsFunction/ObsErrorFactorTransmitTopRad - channels: *all_channels - options: - channels: *all_channels - -- filter: Perform Action - filter variables: - - name: brightnessTemperature - channels: *all_channels - action: - name: inflate error - inflation variable: - name: DerivedMetaData/ObsErrorFactorTransmitTop - channels: *all_channels - -# Step 8: Observation error inflation based on surface jacobian check -- filter: Variable Assignment - assignments: - - name: DerivedMetaData/ObsErrorFactorSurfJacobian - channels: *all_channels - type: float - function: - name: ObsFunction/ObsErrorFactorSurfJacobianRad - channels: *all_channels - options: - sensor: *Sensor_ID - channels: *all_channels - obserr_demisf: [0.010, 0.020, 0.015, 0.020, 0.200] - obserr_dtempf: [0.500, 2.000, 1.000, 2.000, 4.500] - -- filter: Perform Action - filter variables: - - name: brightnessTemperature - channels: *all_channels - action: - name: inflate error - inflation variable: - name: DerivedMetaData/ObsErrorFactorSurfJacobian - channels: *all_channels - -# Step 9: Situation dependent check -- filter: Variable Assignment - assignments: - - name: DerivedMetaData/ObsErrorFactorSituDepend - channels: *all_channels - type: float - function: - name: ObsFunction/ObsErrorFactorSituDependMW - channels: *all_channels - options: - sensor: *Sensor_ID - channels: *all_channels - clwbkg_function: - name: DerivedMetaData/CLWRetFromBkg - clwobs_function: - name: DerivedMetaData/CLWRetFromObs - scatobs_function: - name: DerivedMetaData/SIRetFromObs - clwmatchidx_function: - name: DerivedMetaData/CLWMatchIndex - channels: *all_channels - obserr_function: - name: DerivedMetaData/InitialObsError - channels: *all_channels - obserr_clearsky: [2.500, 2.200, 2.000, 0.550, 0.300, - 0.230, 0.230, 0.250, 0.250, 0.350, - 0.400, 0.550, 0.800, 4.000, 3.500] - -- filter: Perform Action - filter variables: - - name: brightnessTemperature - channels: *all_channels - action: - name: inflate error - inflation variable: - name: DerivedMetaData/ObsErrorFactorSituDepend - channels: *all_channels - -# Step 10: Gross check -# Remove data if abs(Obs-HofX) > absolute threhold -- filter: Variable Assignment - assignments: - - name: DerivedMetaData/ObsErrorFactorLat - type: float - function: - name: ObsFunction/ObsErrorFactorLatRad - options: - latitude_parameters: [25.0, 0.25, 0.04, 3.0] - -- filter: Variable Assignment - assignments: - - name: DerivedMetaData/ObsErrorBound - channels: *all_channels - type: float - function: - name: ObsFunction/ObsErrorBoundMW - channels: *all_channels - options: - sensor: *Sensor_ID - channels: *all_channels - obserr_bound_latitude: - name: DerivedMetaData/ObsErrorFactorLat - obserr_bound_transmittop: - name: DerivedMetaData/ObsErrorFactorTransmitTop - channels: *all_channels - options: - channels: *all_channels - obserr_bound_topo: - name: DerivedMetaData/ObsErrorFactorTopo - channels: *all_channels - obserr_function: - name: DerivedMetaData/InitialObsError - channels: *all_channels - threhold: 3 - obserr_bound_max: [4.5, 4.5, 4.5, 2.5, 2.0, - 2.0, 2.0, 2.0, 2.0, 2.0, - 2.5, 3.5, 4.5, 4.5, 4.5] - -- filter: Background Check - filter variables: - - name: brightnessTemperature - channels: *all_channels - function absolute threshold: - - name: DerivedMetaData/ObsErrorBound - channels: *all_channels - actions: - - name: set - flag: GrossCheckReject - ignore: rejected observations - - name: reject - -# Step 11: Inter-channel check -- filter: Bounds Check - filter variables: - - name: brightnessTemperature - channels: *all_channels - test variables: - - name: ObsFunction/InterChannelConsistencyCheck - channels: *all_channels - options: - channels: *all_channels - use passive_bc: true - sensor: *Sensor_ID - use_flag: [ 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1 ] - maxvalue: 1.0e-12 - actions: - - name: set - flag: InterChannelCheckReject - ignore: rejected observations - - name: reject -passedBenchmark: 113345 diff --git a/parm/atm/obs/testing/amsua_n15.yaml b/parm/atm/obs/testing/amsua_n15.yaml deleted file mode 100644 index 973a2f26a..000000000 --- a/parm/atm/obs/testing/amsua_n15.yaml +++ /dev/null @@ -1,470 +0,0 @@ -obs operator: - name: CRTM - Absorbers: [H2O,O3] - Clouds: [Water, Ice] - Cloud_Fraction: 1.0 - obs options: - Sensor_ID: &Sensor_ID amsua_n15 - EndianType: little_endian - CoefficientPath: crtm/ -obs space: - name: amsua_n15 - obsdatain: - engine: - type: H5File - obsfile: !ENV amsua_n15_obs_${CDATE}.nc4 - obsdataout: - engine: - type: H5File - obsfile: !ENV amsua_n15_diag_${CDATE}.nc4 - simulated variables: [brightnessTemperature] - channels: &all_channels 1-15 -geovals: - filename: !ENV amsua_n15_geoval_${CDATE}.nc4 -obs bias: - input file: !ENV amsua_n15_satbias_${GDATE}.nc4 - variational bc: - predictors: - - name: constant - - name: lapse_rate - order: 2 - tlapse: &amsua_n15_tlap !ENV amsua_n15_tlapmean_${GDATE}.txt - - name: lapse_rate - tlapse: *amsua_n15_tlap - - name: emissivity - - name: scan_angle - order: 4 - - name: scan_angle - order: 3 - - name: scan_angle - order: 2 - - name: scan_angle - -obs post filters: -# Step 0-A: Create Diagnostic Flags -# Diagnostic flag for CLW retrieval -- filter: Create Diagnostic Flags - filter variables: - - name: brightnessTemperature - channels: *all_channels - flags: - - name: CLWRetrievalReject - initial value: false - force reinitialization: true - -# Diagnostic flag for hydrometeor check -- filter: Create Diagnostic Flags - filter variables: - - name: brightnessTemperature - channels: *all_channels - flags: - - name: HydrometeorCheckReject - initial value: false - force reinitialization: true - -# Diagnostic flag for gross check -- filter: Create Diagnostic Flags - filter variables: - - name: brightnessTemperature - channels: *all_channels - flags: - - name: GrossCheckReject - initial value: false - force reinitialization: true - -# Diagnostic flag for inter-channel consistency check -- filter: Create Diagnostic Flags - filter variables: - - name: brightnessTemperature - channels: *all_channels - flags: - - name: InterChannelCheckReject - initial value: false - force reinitialization: true - -# Step 0-B: Calculate derived variables -# Calculate CLW retrieved from observation -- filter: Variable Assignment - assignments: - - name: DerivedMetaData/CLWRetFromObs - type: float - function: - name: ObsFunction/CLWRetMW - options: - clwret_ch238: 1 - clwret_ch314: 2 - clwret_types: [ObsValue] - -# Calculate CLW retrieved from background -- filter: Variable Assignment - assignments: - - name: DerivedMetaData/CLWRetFromBkg - type: float - function: - name: ObsFunction/CLWRetMW - options: - clwret_ch238: 1 - clwret_ch314: 2 - clwret_types: [HofX] - -# Calculate symmetric retrieved CLW -- filter: Variable Assignment - assignments: - - name: DerivedMetaData/CLWRetSymmetric - type: float - value: 1000.0 - -- filter: Variable Assignment - where: - - variable: - name: DerivedMetaData/CLWRetFromObs - minvalue: 0. - maxvalue: 999. - - variable: - name: DerivedMetaData/CLWRetFromBkg - minvalue: 0. - maxvalue: 999. - where operator: and - assignments: - - name: DerivedMetaData/CLWRetSymmetric - type: float - function: - name: ObsFunction/Arithmetic - options: - variables: - - name: DerivedMetaData/CLWRetFromObs - - name: DerivedMetaData/CLWRetFromBkg - total coefficient: 0.5 - -# Calculate scattering index from observation -- filter: Variable Assignment - assignments: - - name: DerivedMetaData/SIRetFromObs - type: float - function: - name: ObsFunction/SCATRetMW - options: - scatret_ch238: 1 - scatret_ch314: 2 - scatret_ch890: 15 - scatret_types: [ObsValue] - -# Calculate CLW obs/bkg match index -- filter: Variable Assignment - assignments: - - name: DerivedMetaData/CLWMatchIndex - channels: *all_channels - type: float - function: - name: ObsFunction/CLWMatchIndexMW - channels: *all_channels - options: - channels: *all_channels - clwobs_function: - name: DerivedMetaData/CLWRetFromObs - clwbkg_function: - name: DerivedMetaData/CLWRetFromBkg - clwret_clearsky: [0.050, 0.030, 0.030, 0.020, 0.000, - 0.100, 0.000, 0.000, 0.000, 0.000, - 0.000, 0.000, 0.000, 0.000, 0.030] - -# Calculate symmetric observation error -- filter: Variable Assignment - assignments: - - name: DerivedMetaData/InitialObsError - channels: *all_channels - type: float - function: - name: ObsFunction/ObsErrorModelRamp - channels: *all_channels - options: - channels: *all_channels - xvar: - name: DerivedMetaData/CLWRetSymmetric - x0: [ 0.050, 0.030, 0.030, 0.020, 0.000, - 0.100, 0.000, 0.000, 0.000, 0.000, - 0.000, 0.000, 0.000, 0.000, 0.030] - x1: [ 0.600, 0.450, 0.400, 0.450, 1.000, - 1.500, 0.000, 0.000, 0.000, 0.000, - 0.000, 0.000, 0.000, 0.000, 0.200] - err0: [ 3.000, 2.200, 2.000, 0.600, 0.300, - 0.230, 0.250, 0.275, 0.340, 0.400, - 0.600, 1.000, 1.500, 4.000, 3.500] - err1: [20.000, 18.000, 12.000, 3.000, 0.500, - 0.300, 0.250, 0.275, 0.340, 0.400, - 0.600, 1.000, 1.500, 4.000, 18.000] - -# Calculate Innovation -- filter: Variable Assignment - assignments: - - name: DerivedMetaData/Innovation - channels: *all_channels - type: float - function: - name: ObsFunction/Arithmetic - channels: *all_channels - options: - variables: - - name: ObsValue/brightnessTemperature - channels: *all_channels - - name: HofX/brightnessTemperature - channels: *all_channels - coefs: [1, -1] - -# Step 1: Assign initial all-sky observation error -- filter: Perform Action - filter variables: - - name: brightnessTemperature - channels: *all_channels - action: - name: assign error - error function: - name: DerivedMetaData/InitialObsError - channels: *all_channels - -# Step 2: CLW Retrieval Check (observation_based) -- filter: Bounds Check - filter variables: - - name: brightnessTemperature - channels: 1-6, 15 - test variables: - - name: DerivedMetaData/CLWRetFromObs - maxvalue: 999.0 - actions: - - name: set - flag: CLWRetrievalReject - - name: reject - -# Step 3: CLW Retrieval Check (background_based) -- filter: Bounds Check - filter variables: - - name: brightnessTemperature - channels: 1-6, 15 - test variables: - - name: DerivedMetaData/CLWRetFromBkg - maxvalue: 999.0 - actions: - - name: set - flag: CLWRetrievalReject - - name: reject - -# Step 4: Window channel sanity check -- filter: Bounds Check - filter variables: - - name: brightnessTemperature - channels: 1-6, 15 - test variables: - - name: DerivedMetaData/Innovation - channels: 1, 2, 4-6, 15 - maxvalue: 200.0 - minvalue: -200.0 - flag all filter variables if any test variable is out of bounds: true - -# Step 5: Hydrometeor Check (cloud/precipitation affected chanels) -- filter: Bounds Check - filter variables: - - name: brightnessTemperature - channels: *all_channels - test variables: - - name: ObsFunction/HydrometeorCheckAMSUA - channels: *all_channels - options: - channels: *all_channels - obserr_clearsky: [ 3.000, 2.200, 2.000, 0.600, 0.300, - 0.230, 0.250, 0.275, 0.340, 0.400, - 0.600, 1.000, 1.500, 4.000, 3.500] - clwret_function: - name: DerivedMetaData/CLWRetFromObs - obserr_function: - name: DerivedMetaData/InitialObsError - channels: *all_channels - maxvalue: 0.0 - actions: - - name: set - flag: HydrometeorCheckReject - ignore: rejected observations - - name: reject - -# Step 6: Observation error inflation based on topography check -- filter: Variable Assignment - assignments: - - name: DerivedMetaData/ObsErrorFactorTopo - channels: *all_channels - type: float - function: - name: ObsFunction/ObsErrorFactorTopoRad - channels: *all_channels - options: - sensor: *Sensor_ID - channels: *all_channels - -- filter: Perform Action - filter variables: - - name: brightnessTemperature - channels: *all_channels - action: - name: inflate error - inflation variable: - name: DerivedMetaData/ObsErrorFactorTopo - channels: *all_channels - -# Step 7: Obs error inflation based on TOA transmittancec check -- filter: Variable Assignment - assignments: - - name: DerivedMetaData/ObsErrorFactorTransmitTop - channels: *all_channels - type: float - function: - name: ObsFunction/ObsErrorFactorTransmitTopRad - channels: *all_channels - options: - channels: *all_channels - -- filter: Perform Action - filter variables: - - name: brightnessTemperature - channels: *all_channels - action: - name: inflate error - inflation variable: - name: DerivedMetaData/ObsErrorFactorTransmitTop - channels: *all_channels - -# Step 8: Observation error inflation based on surface jacobian check -- filter: Variable Assignment - assignments: - - name: DerivedMetaData/ObsErrorFactorSurfJacobian - channels: *all_channels - type: float - function: - name: ObsFunction/ObsErrorFactorSurfJacobianRad - channels: *all_channels - options: - sensor: *Sensor_ID - channels: *all_channels - obserr_demisf: [0.010, 0.020, 0.015, 0.020, 0.200] - obserr_dtempf: [0.500, 2.000, 1.000, 2.000, 4.500] - -- filter: Perform Action - filter variables: - - name: brightnessTemperature - channels: *all_channels - action: - name: inflate error - inflation variable: - name: DerivedMetaData/ObsErrorFactorSurfJacobian - channels: *all_channels - -# Step 9: Situation dependent check -- filter: Variable Assignment - assignments: - - name: DerivedMetaData/ObsErrorFactorSituDepend - channels: *all_channels - type: float - function: - name: ObsFunction/ObsErrorFactorSituDependMW - channels: *all_channels - options: - sensor: *Sensor_ID - channels: *all_channels - clwbkg_function: - name: DerivedMetaData/CLWRetFromBkg - clwobs_function: - name: DerivedMetaData/CLWRetFromObs - scatobs_function: - name: DerivedMetaData/SIRetFromObs - clwmatchidx_function: - name: DerivedMetaData/CLWMatchIndex - channels: *all_channels - obserr_function: - name: DerivedMetaData/InitialObsError - channels: *all_channels - obserr_clearsky: [ 3.000, 2.200, 2.000, 0.600, 0.300, - 0.230, 0.250, 0.275, 0.340, 0.400, - 0.600, 1.000, 1.500, 4.000, 3.500] - -- filter: Perform Action - filter variables: - - name: brightnessTemperature - channels: *all_channels - action: - name: inflate error - inflation variable: - name: DerivedMetaData/ObsErrorFactorSituDepend - channels: *all_channels - -# Step 10: Gross check -# Remove data if abs(Obs-HofX) > absolute threhold -- filter: Variable Assignment - assignments: - - name: DerivedMetaData/ObsErrorFactorLat - type: float - function: - name: ObsFunction/ObsErrorFactorLatRad - options: - latitude_parameters: [25.0, 0.25, 0.04, 3.0] - -- filter: Variable Assignment - assignments: - - name: DerivedMetaData/ObsErrorBound - channels: *all_channels - type: float - function: - name: ObsFunction/ObsErrorBoundMW - channels: *all_channels - options: - sensor: *Sensor_ID - channels: *all_channels - obserr_bound_latitude: - name: DerivedMetaData/ObsErrorFactorLat - obserr_bound_transmittop: - name: DerivedMetaData/ObsErrorFactorTransmitTop - channels: *all_channels - options: - channels: *all_channels - obserr_bound_topo: - name: DerivedMetaData/ObsErrorFactorTopo - channels: *all_channels - obserr_function: - name: DerivedMetaData/InitialObsError - channels: *all_channels - threhold: 3 - obserr_bound_max: [4.5, 4.5, 4.5, 2.5, 2.0, - 2.0, 2.0, 2.0, 2.0, 2.0, - 2.5, 3.5, 4.5, 4.5, 4.5] - -- filter: Background Check - filter variables: - - name: brightnessTemperature - channels: *all_channels - function absolute threshold: - - name: DerivedMetaData/ObsErrorBound - channels: *all_channels - actions: - - name: set - flag: GrossCheckReject - ignore: rejected observations - - name: reject - -# Step 11: Inter-channel check -- filter: Bounds Check - filter variables: - - name: brightnessTemperature - channels: *all_channels - test variables: - - name: ObsFunction/InterChannelConsistencyCheck - channels: *all_channels - options: - channels: *all_channels - use passive_bc: true - sensor: *Sensor_ID - use_flag: [ 1, 1, 1, 1, 1, - -1, 1, 1, 1, 1, - -1, 1, 1, -1, 1 ] - maxvalue: 1.0e-12 - actions: - - name: set - flag: InterChannelCheckReject - ignore: rejected observations - - name: reject -passedBenchmark: 91792 diff --git a/parm/atm/obs/testing/amsua_n18.yaml b/parm/atm/obs/testing/amsua_n18.yaml deleted file mode 100644 index d11eba99b..000000000 --- a/parm/atm/obs/testing/amsua_n18.yaml +++ /dev/null @@ -1,471 +0,0 @@ -obs operator: - name: CRTM - Absorbers: [H2O,O3] - Clouds: [Water, Ice] - Cloud_Fraction: 1.0 - obs options: - Sensor_ID: &Sensor_ID amsua_n18 - EndianType: little_endian - CoefficientPath: crtm/ -obs space: - name: amsua_n18 - obsdatain: - engine: - type: H5File - obsfile: !ENV amsua_n18_obs_${CDATE}.nc4 - obsdataout: - engine: - type: H5File - obsfile: !ENV amsua_n18_diag_${CDATE}.nc4 - simulated variables: [brightnessTemperature] - channels: &all_channels 1-15 -geovals: - filename: !ENV amsua_n18_geoval_${CDATE}.nc4 -obs bias: - input file: !ENV amsua_n18_satbias_${GDATE}.nc4 - variational bc: - predictors: - - name: constant - - name: lapse_rate - order: 2 - tlapse: &amsua_n18_tlap !ENV amsua_n18_tlapmean_${GDATE}.txt - - name: lapse_rate - tlapse: *amsua_n18_tlap - - name: emissivity - - name: scan_angle - order: 4 - - name: scan_angle - order: 3 - - name: scan_angle - order: 2 - - name: scan_angle - -obs post filters: -# Step 0-A: Create Diagnostic Flags -# Diagnostic flag for CLW retrieval -- filter: Create Diagnostic Flags - filter variables: - - name: brightnessTemperature - channels: *all_channels - flags: - - name: CLWRetrievalReject - initial value: false - force reinitialization: true - -# Diagnostic flag for hydrometeor check -- filter: Create Diagnostic Flags - filter variables: - - name: brightnessTemperature - channels: *all_channels - flags: - - name: HydrometeorCheckReject - initial value: false - force reinitialization: true - -# Diagnostic flag for gross check -- filter: Create Diagnostic Flags - filter variables: - - name: brightnessTemperature - channels: *all_channels - flags: - - name: GrossCheckReject - initial value: false - force reinitialization: true - -# Diagnostic flag for inter-channel consistency check -- filter: Create Diagnostic Flags - filter variables: - - name: brightnessTemperature - channels: *all_channels - flags: - - name: InterChannelCheckReject - initial value: false - force reinitialization: true - -# Step 0-B: Calculate derived variables -# Calculate CLW retrieved from observation -- filter: Variable Assignment - assignments: - - name: DerivedMetaData/CLWRetFromObs - type: float - function: - name: ObsFunction/CLWRetMW - options: - clwret_ch238: 1 - clwret_ch314: 2 - clwret_types: [ObsValue] - -# Calculate CLW retrieved from background -- filter: Variable Assignment - assignments: - - name: DerivedMetaData/CLWRetFromBkg - type: float - function: - name: ObsFunction/CLWRetMW - options: - clwret_ch238: 1 - clwret_ch314: 2 - clwret_types: [HofX] - -# Calculate symmetric retrieved CLW -- filter: Variable Assignment - assignments: - - name: DerivedMetaData/CLWRetSymmetric - type: float - value: 1000.0 - -- filter: Variable Assignment - where: - - variable: - name: DerivedMetaData/CLWRetFromObs - minvalue: 0. - maxvalue: 999. - - variable: - name: DerivedMetaData/CLWRetFromBkg - minvalue: 0. - maxvalue: 999. - where operator: and - assignments: - - name: DerivedMetaData/CLWRetSymmetric - type: float - function: - name: ObsFunction/Arithmetic - options: - variables: - - name: DerivedMetaData/CLWRetFromObs - - name: DerivedMetaData/CLWRetFromBkg - total coefficient: 0.5 - -# Calculate scattering index from observation -- filter: Variable Assignment - assignments: - - name: DerivedMetaData/SIRetFromObs - type: float - function: - name: ObsFunction/SCATRetMW - options: - scatret_ch238: 1 - scatret_ch314: 2 - scatret_ch890: 15 - scatret_types: [ObsValue] - -# Calculate CLW obs/bkg match index -- filter: Variable Assignment - assignments: - - name: DerivedMetaData/CLWMatchIndex - channels: *all_channels - type: float - function: - name: ObsFunction/CLWMatchIndexMW - channels: *all_channels - options: - channels: *all_channels - clwobs_function: - name: DerivedMetaData/CLWRetFromObs - clwbkg_function: - name: DerivedMetaData/CLWRetFromBkg - clwret_clearsky: [0.050, 0.030, 0.030, 0.020, 0.000, - 0.100, 0.000, 0.000, 0.000, 0.000, - 0.000, 0.000, 0.000, 0.000, 0.030] - -# Calculate symmetric observation error -- filter: Variable Assignment - assignments: - - name: DerivedMetaData/InitialObsError - channels: *all_channels - type: float - function: - name: ObsFunction/ObsErrorModelRamp - channels: *all_channels - options: - channels: *all_channels - xvar: - name: DerivedMetaData/CLWRetSymmetric - x0: [ 0.050, 0.030, 0.030, 0.020, 0.000, - 0.100, 0.000, 0.000, 0.000, 0.000, - 0.000, 0.000, 0.000, 0.000, 0.030] - x1: [ 0.600, 0.450, 0.400, 0.450, 1.000, - 1.500, 0.000, 0.000, 0.000, 0.000, - 0.000, 0.000, 0.000, 0.000, 0.200] - err0: [ 2.500, 2.200, 2.000, 0.550, 0.300, - 0.230, 0.230, 0.250, 0.250, 0.350, - 0.400, 0.550, 0.800, 4.000, 3.500] - err1: [20.000, 18.000, 12.000, 3.000, 0.500, - 0.300, 0.230, 0.250, 0.250, 0.350, - 0.400, 0.550, 0.800, 4.000, 18.000] - -# Calculate Innovation -- filter: Variable Assignment - assignments: - - name: DerivedMetaData/Innovation - channels: *all_channels - type: float - function: - name: ObsFunction/Arithmetic - channels: *all_channels - options: - variables: - - name: ObsValue/brightnessTemperature - channels: *all_channels - - name: HofX/brightnessTemperature - channels: *all_channels - coefs: [1, -1] - -# Step 1: Assign initial all-sky observation error -- filter: Perform Action - filter variables: - - name: brightnessTemperature - channels: *all_channels - action: - name: assign error - error function: - name: DerivedMetaData/InitialObsError - channels: *all_channels - -# Step 2: CLW Retrieval Check (observation_based) -- filter: Bounds Check - filter variables: - - name: brightnessTemperature - channels: 1-6, 15 - test variables: - - name: DerivedMetaData/CLWRetFromObs - maxvalue: 999.0 - actions: - - name: set - flag: CLWRetrievalReject - - name: reject - -# Step 3: CLW Retrieval Check (background_based) -- filter: Bounds Check - filter variables: - - name: brightnessTemperature - channels: 1-6, 15 - test variables: - - name: DerivedMetaData/CLWRetFromBkg - maxvalue: 999.0 - actions: - - name: set - flag: CLWRetrievalReject - - name: reject - -# Step 4: Window channel sanity check -- filter: Bounds Check - filter variables: - - name: brightnessTemperature - channels: 1-6, 15 - test variables: - - name: DerivedMetaData/Innovation - channels: 1, 2, 4-6, 15 - maxvalue: 200.0 - minvalue: -200.0 - flag all filter variables if any test variable is out of bounds: true - -# Step 5: Hydrometeor Check (cloud/precipitation affected chanels) -- filter: Bounds Check - filter variables: - - name: brightnessTemperature - channels: *all_channels - test variables: - - name: ObsFunction/HydrometeorCheckAMSUA - channels: *all_channels - options: - channels: *all_channels - obserr_clearsky: [ 2.500, 2.200, 2.000, 0.550, 0.300, - 0.230, 0.230, 0.250, 0.250, 0.350, - 0.400, 0.550, 0.800, 4.000, 3.500] - clwret_function: - name: DerivedMetaData/CLWRetFromObs - obserr_function: - name: DerivedMetaData/InitialObsError - channels: *all_channels - maxvalue: 0.0 - actions: - - name: set - flag: HydrometeorCheckReject - ignore: rejected observations - - name: reject - -# Step 6: Observation error inflation based on topography check -- filter: Variable Assignment - assignments: - - name: DerivedMetaData/ObsErrorFactorTopo - channels: *all_channels - type: float - function: - name: ObsFunction/ObsErrorFactorTopoRad - channels: *all_channels - options: - sensor: *Sensor_ID - channels: *all_channels - -- filter: Perform Action - filter variables: - - name: brightnessTemperature - channels: *all_channels - action: - name: inflate error - inflation variable: - name: DerivedMetaData/ObsErrorFactorTopo - channels: *all_channels - -# Step 7: Obs error inflation based on TOA transmittancec check -- filter: Variable Assignment - assignments: - - name: DerivedMetaData/ObsErrorFactorTransmitTop - channels: *all_channels - type: float - function: - name: ObsFunction/ObsErrorFactorTransmitTopRad - channels: *all_channels - options: - channels: *all_channels - -- filter: Perform Action - filter variables: - - name: brightnessTemperature - channels: *all_channels - action: - name: inflate error - inflation variable: - name: DerivedMetaData/ObsErrorFactorTransmitTop - channels: *all_channels - -# Step 8: Observation error inflation based on surface jacobian check -- filter: Variable Assignment - assignments: - - name: DerivedMetaData/ObsErrorFactorSurfJacobian - channels: *all_channels - type: float - function: - name: ObsFunction/ObsErrorFactorSurfJacobianRad - channels: *all_channels - options: - sensor: *Sensor_ID - channels: *all_channels - obserr_demisf: [0.010, 0.020, 0.015, 0.020, 0.200] - obserr_dtempf: [0.500, 2.000, 1.000, 2.000, 4.500] - -- filter: Perform Action - filter variables: - - name: brightnessTemperature - channels: *all_channels - action: - name: inflate error - inflation variable: - name: DerivedMetaData/ObsErrorFactorSurfJacobian - channels: *all_channels - -# Step 9: Situation dependent check -- filter: Variable Assignment - assignments: - - name: DerivedMetaData/ObsErrorFactorSituDepend - channels: *all_channels - type: float - function: - name: ObsFunction/ObsErrorFactorSituDependMW - channels: *all_channels - options: - sensor: *Sensor_ID - channels: *all_channels - clwbkg_function: - name: DerivedMetaData/CLWRetFromBkg - clwobs_function: - name: DerivedMetaData/CLWRetFromObs - scatobs_function: - name: DerivedMetaData/SIRetFromObs - clwmatchidx_function: - name: DerivedMetaData/CLWMatchIndex - channels: *all_channels - obserr_function: - name: DerivedMetaData/InitialObsError - channels: *all_channels - obserr_clearsky: [2.500, 2.200, 2.000, 0.550, 0.300, - 0.230, 0.230, 0.250, 0.250, 0.350, - 0.400, 0.550, 0.800, 4.000, 3.500] - -- filter: Perform Action - filter variables: - - name: brightnessTemperature - channels: *all_channels - action: - name: inflate error - inflation variable: - name: DerivedMetaData/ObsErrorFactorSituDepend - channels: *all_channels - -# Step 10: Gross check -# Remove data if abs(Obs-HofX) > absolute threhold -- filter: Variable Assignment - assignments: - - name: DerivedMetaData/ObsErrorFactorLat - type: float - function: - name: ObsFunction/ObsErrorFactorLatRad - options: - latitude_parameters: [25.0, 0.25, 0.04, 3.0] - -- filter: Variable Assignment - assignments: - - name: DerivedMetaData/ObsErrorBound - channels: *all_channels - type: float - function: - name: ObsFunction/ObsErrorBoundMW - channels: *all_channels - options: - sensor: *Sensor_ID - channels: *all_channels - obserr_bound_latitude: - name: DerivedMetaData/ObsErrorFactorLat - obserr_bound_transmittop: - name: DerivedMetaData/ObsErrorFactorTransmitTop - channels: *all_channels - options: - channels: *all_channels - obserr_bound_topo: - name: DerivedMetaData/ObsErrorFactorTopo - channels: *all_channels - obserr_function: - name: DerivedMetaData/InitialObsError - channels: *all_channels - threhold: 3 - obserr_bound_max: [4.5, 4.5, 4.5, 2.5, 2.0, - 2.0, 2.0, 2.0, 2.0, 2.0, - 2.5, 3.5, 4.5, 4.5, 4.5] - -- filter: Background Check - filter variables: - - name: brightnessTemperature - channels: *all_channels - function absolute threshold: - - name: DerivedMetaData/ObsErrorBound - channels: *all_channels - actions: - - name: set - flag: GrossCheckReject - ignore: rejected observations - - name: reject - -# Step 11: Inter-channel check -- filter: Bounds Check - filter variables: - - name: brightnessTemperature - channels: *all_channels - test variables: - - name: ObsFunction/InterChannelConsistencyCheck - channels: *all_channels - options: - channels: *all_channels - use passive_bc: true - sensor: *Sensor_ID - use_flag: [ 1, 1, 1, 1, -1, - 1, 1, -1, -1, 1, - 1, 1, 1, 1, 1 ] - maxvalue: 1.0e-12 - actions: - - name: set - flag: InterChannelCheckReject - ignore: rejected observations - - name: reject -passedBenchmark: 116999 - diff --git a/parm/atm/obs/testing/amsua_n19.yaml b/parm/atm/obs/testing/amsua_n19.yaml deleted file mode 100644 index f91b045c1..000000000 --- a/parm/atm/obs/testing/amsua_n19.yaml +++ /dev/null @@ -1,470 +0,0 @@ -obs operator: - name: CRTM - Absorbers: [H2O,O3] - Clouds: [Water, Ice] - Cloud_Fraction: 1.0 - obs options: - Sensor_ID: &Sensor_ID amsua_n19 - EndianType: little_endian - CoefficientPath: crtm/ -obs space: - name: amsua_n19 - obsdatain: - engine: - type: H5File - obsfile: !ENV amsua_n19_obs_${CDATE}.nc4 - obsdataout: - engine: - type: H5File - obsfile: !ENV amsua_n19_diag_${CDATE}.nc4 - simulated variables: [brightnessTemperature] - channels: &all_channels 1-15 -geovals: - filename: !ENV amsua_n19_geoval_${CDATE}.nc4 -obs bias: - input file: !ENV amsua_n19_satbias_${GDATE}.nc4 - variational bc: - predictors: - - name: constant - - name: lapse_rate - order: 2 - tlapse: &amsua_n19_tlap !ENV amsua_n19_tlapmean_${GDATE}.txt - - name: lapse_rate - tlapse: *amsua_n19_tlap - - name: emissivity - - name: scan_angle - order: 4 - - name: scan_angle - order: 3 - - name: scan_angle - order: 2 - - name: scan_angle - -obs post filters: -# Step 0-A: Create Diagnostic Flags -# Diagnostic flag for CLW retrieval -- filter: Create Diagnostic Flags - filter variables: - - name: brightnessTemperature - channels: *all_channels - flags: - - name: CLWRetrievalReject - initial value: false - force reinitialization: true - -# Diagnostic flag for hydrometeor check -- filter: Create Diagnostic Flags - filter variables: - - name: brightnessTemperature - channels: *all_channels - flags: - - name: HydrometeorCheckReject - initial value: false - force reinitialization: true - -# Diagnostic flag for gross check -- filter: Create Diagnostic Flags - filter variables: - - name: brightnessTemperature - channels: *all_channels - flags: - - name: GrossCheckReject - initial value: false - force reinitialization: true - -# Diagnostic flag for inter-channel consistency check -- filter: Create Diagnostic Flags - filter variables: - - name: brightnessTemperature - channels: *all_channels - flags: - - name: InterChannelCheckReject - initial value: false - force reinitialization: true - -# Step 0-B: Calculate derived variables -# Calculate CLW retrieved from observation -- filter: Variable Assignment - assignments: - - name: DerivedMetaData/CLWRetFromObs - type: float - function: - name: ObsFunction/CLWRetMW - options: - clwret_ch238: 1 - clwret_ch314: 2 - clwret_types: [ObsValue] - -# Calculate CLW retrieved from background -- filter: Variable Assignment - assignments: - - name: DerivedMetaData/CLWRetFromBkg - type: float - function: - name: ObsFunction/CLWRetMW - options: - clwret_ch238: 1 - clwret_ch314: 2 - clwret_types: [HofX] - -# Calculate symmetric retrieved CLW -- filter: Variable Assignment - assignments: - - name: DerivedMetaData/CLWRetSymmetric - type: float - value: 1000.0 - -- filter: Variable Assignment - where: - - variable: - name: DerivedMetaData/CLWRetFromObs - minvalue: 0. - maxvalue: 999. - - variable: - name: DerivedMetaData/CLWRetFromBkg - minvalue: 0. - maxvalue: 999. - where operator: and - assignments: - - name: DerivedMetaData/CLWRetSymmetric - type: float - function: - name: ObsFunction/Arithmetic - options: - variables: - - name: DerivedMetaData/CLWRetFromObs - - name: DerivedMetaData/CLWRetFromBkg - total coefficient: 0.5 - -# Calculate scattering index from observation -- filter: Variable Assignment - assignments: - - name: DerivedMetaData/SIRetFromObs - type: float - function: - name: ObsFunction/SCATRetMW - options: - scatret_ch238: 1 - scatret_ch314: 2 - scatret_ch890: 15 - scatret_types: [ObsValue] - -# Calculate CLW obs/bkg match index -- filter: Variable Assignment - assignments: - - name: DerivedMetaData/CLWMatchIndex - channels: *all_channels - type: float - function: - name: ObsFunction/CLWMatchIndexMW - channels: *all_channels - options: - channels: *all_channels - clwobs_function: - name: DerivedMetaData/CLWRetFromObs - clwbkg_function: - name: DerivedMetaData/CLWRetFromBkg - clwret_clearsky: [0.050, 0.030, 0.030, 0.020, 0.000, - 0.100, 0.000, 0.000, 0.000, 0.000, - 0.000, 0.000, 0.000, 0.000, 0.030] - -# Calculate symmetric observation error -- filter: Variable Assignment - assignments: - - name: DerivedMetaData/InitialObsError - channels: *all_channels - type: float - function: - name: ObsFunction/ObsErrorModelRamp - channels: *all_channels - options: - channels: *all_channels - xvar: - name: DerivedMetaData/CLWRetSymmetric - x0: [ 0.050, 0.030, 0.030, 0.020, 0.000, - 0.100, 0.000, 0.000, 0.000, 0.000, - 0.000, 0.000, 0.000, 0.000, 0.030] - x1: [ 0.600, 0.450, 0.400, 0.450, 1.000, - 1.500, 0.000, 0.000, 0.000, 0.000, - 0.000, 0.000, 0.000, 0.000, 0.200] - err0: [ 2.500, 2.200, 2.000, 0.550, 0.300, - 0.230, 0.230, 0.250, 0.250, 0.350, - 0.400, 0.550, 0.800, 4.000, 3.500] - err1: [20.000, 18.000, 12.000, 3.000, 0.500, - 0.300, 0.230, 0.250, 0.250, 0.350, - 0.400, 0.550, 0.800, 4.000, 18.000] - -# Calculate Innovation -- filter: Variable Assignment - assignments: - - name: DerivedMetaData/Innovation - channels: *all_channels - type: float - function: - name: ObsFunction/Arithmetic - channels: *all_channels - options: - variables: - - name: ObsValue/brightnessTemperature - channels: *all_channels - - name: HofX/brightnessTemperature - channels: *all_channels - coefs: [1, -1] - -# Step 1: Assign initial all-sky observation error -- filter: Perform Action - filter variables: - - name: brightnessTemperature - channels: *all_channels - action: - name: assign error - error function: - name: DerivedMetaData/InitialObsError - channels: *all_channels - -# Step 2: CLW Retrieval Check (observation_based) -- filter: Bounds Check - filter variables: - - name: brightnessTemperature - channels: 1-6, 15 - test variables: - - name: DerivedMetaData/CLWRetFromObs - maxvalue: 999.0 - actions: - - name: set - flag: CLWRetrievalReject - - name: reject - -# Step 3: CLW Retrieval Check (background_based) -- filter: Bounds Check - filter variables: - - name: brightnessTemperature - channels: 1-6, 15 - test variables: - - name: DerivedMetaData/CLWRetFromBkg - maxvalue: 999.0 - actions: - - name: set - flag: CLWRetrievalReject - - name: reject - -# Step 4: Window channel sanity check -- filter: Bounds Check - filter variables: - - name: brightnessTemperature - channels: 1-6, 15 - test variables: - - name: DerivedMetaData/Innovation - channels: 1, 2 4-6, 15 - maxvalue: 200.0 - minvalue: -200.0 - flag all filter variables if any test variable is out of bounds: true - -# Step 5: Hydrometeor Check (cloud/precipitation affected chanels) -- filter: Bounds Check - filter variables: - - name: brightnessTemperature - channels: *all_channels - test variables: - - name: ObsFunction/HydrometeorCheckAMSUA - channels: *all_channels - options: - channels: *all_channels - obserr_clearsky: [ 2.500, 2.200, 2.000, 0.550, 0.300, - 0.230, 0.230, 0.250, 0.250, 0.350, - 0.400, 0.550, 0.800, 4.000, 3.500] - clwret_function: - name: DerivedMetaData/CLWRetFromObs - obserr_function: - name: DerivedMetaData/InitialObsError - channels: *all_channels - maxvalue: 0.0 - actions: - - name: set - flag: HydrometeorCheckReject - ignore: rejected observations - - name: reject - -# Step 6: Observation error inflation based on topography check -- filter: Variable Assignment - assignments: - - name: DerivedMetaData/ObsErrorFactorTopo - channels: *all_channels - type: float - function: - name: ObsFunction/ObsErrorFactorTopoRad - channels: *all_channels - options: - sensor: *Sensor_ID - channels: *all_channels - -- filter: Perform Action - filter variables: - - name: brightnessTemperature - channels: *all_channels - action: - name: inflate error - inflation variable: - name: DerivedMetaData/ObsErrorFactorTopo - channels: *all_channels - -# Step 7: Obs error inflation based on TOA transmittancec check -- filter: Variable Assignment - assignments: - - name: DerivedMetaData/ObsErrorFactorTransmitTop - channels: *all_channels - type: float - function: - name: ObsFunction/ObsErrorFactorTransmitTopRad - channels: *all_channels - options: - channels: *all_channels - -- filter: Perform Action - filter variables: - - name: brightnessTemperature - channels: *all_channels - action: - name: inflate error - inflation variable: - name: DerivedMetaData/ObsErrorFactorTransmitTop - channels: *all_channels - -# Step 8: Observation error inflation based on surface jacobian check -- filter: Variable Assignment - assignments: - - name: DerivedMetaData/ObsErrorFactorSurfJacobian - channels: *all_channels - type: float - function: - name: ObsFunction/ObsErrorFactorSurfJacobianRad - channels: *all_channels - options: - sensor: *Sensor_ID - channels: *all_channels - obserr_demisf: [0.010, 0.020, 0.015, 0.020, 0.200] - obserr_dtempf: [0.500, 2.000, 1.000, 2.000, 4.500] - -- filter: Perform Action - filter variables: - - name: brightnessTemperature - channels: *all_channels - action: - name: inflate error - inflation variable: - name: DerivedMetaData/ObsErrorFactorSurfJacobian - channels: *all_channels - -# Step 9: Situation dependent check -- filter: Variable Assignment - assignments: - - name: DerivedMetaData/ObsErrorFactorSituDepend - channels: *all_channels - type: float - function: - name: ObsFunction/ObsErrorFactorSituDependMW - channels: *all_channels - options: - sensor: *Sensor_ID - channels: *all_channels - clwbkg_function: - name: DerivedMetaData/CLWRetFromBkg - clwobs_function: - name: DerivedMetaData/CLWRetFromObs - scatobs_function: - name: DerivedMetaData/SIRetFromObs - clwmatchidx_function: - name: DerivedMetaData/CLWMatchIndex - channels: *all_channels - obserr_function: - name: DerivedMetaData/InitialObsError - channels: *all_channels - obserr_clearsky: [2.500, 2.200, 2.000, 0.550, 0.300, - 0.230, 0.230, 0.250, 0.250, 0.350, - 0.400, 0.550, 0.800, 4.000, 3.500] - -- filter: Perform Action - filter variables: - - name: brightnessTemperature - channels: *all_channels - action: - name: inflate error - inflation variable: - name: DerivedMetaData/ObsErrorFactorSituDepend - channels: *all_channels - -# Step 10: Gross check -# Remove data if abs(Obs-HofX) > absolute threhold -- filter: Variable Assignment - assignments: - - name: DerivedMetaData/ObsErrorFactorLat - type: float - function: - name: ObsFunction/ObsErrorFactorLatRad - options: - latitude_parameters: [25.0, 0.25, 0.04, 3.0] - -- filter: Variable Assignment - assignments: - - name: DerivedMetaData/ObsErrorBound - channels: *all_channels - type: float - function: - name: ObsFunction/ObsErrorBoundMW - channels: *all_channels - options: - sensor: *Sensor_ID - channels: *all_channels - obserr_bound_latitude: - name: DerivedMetaData/ObsErrorFactorLat - obserr_bound_transmittop: - name: DerivedMetaData/ObsErrorFactorTransmitTop - channels: *all_channels - options: - channels: *all_channels - obserr_bound_topo: - name: DerivedMetaData/ObsErrorFactorTopo - channels: *all_channels - obserr_function: - name: DerivedMetaData/InitialObsError - channels: *all_channels - threhold: 3 - obserr_bound_max: [4.5, 4.5, 4.5, 2.5, 2.0, - 2.0, 2.0, 2.0, 2.0, 2.0, - 2.5, 3.5, 4.5, 4.5, 4.5] - -- filter: Background Check - filter variables: - - name: brightnessTemperature - channels: *all_channels - function absolute threshold: - - name: DerivedMetaData/ObsErrorBound - channels: *all_channels - actions: - - name: set - flag: GrossCheckReject - ignore: rejected observations - - name: reject - -# Step 11: Inter-channel check -- filter: Bounds Check - filter variables: - - name: brightnessTemperature - channels: *all_channels - test variables: - - name: ObsFunction/InterChannelConsistencyCheck - channels: *all_channels - options: - channels: *all_channels - use passive_bc: true - sensor: *Sensor_ID - use_flag: [ 1, 1, 1, 1, 1, - 1, -1, -1, 1, 1, - 1, 1, 1, 1, 1 ] - maxvalue: 1.0e-12 - actions: - - name: set - flag: InterChannelCheckReject - ignore: rejected observations - - name: reject -passedBenchmark: 107747 diff --git a/parm/atm/obs/testing/atms_n20.yaml b/parm/atm/obs/testing/atms_n20.yaml deleted file mode 100644 index 006a452f3..000000000 --- a/parm/atm/obs/testing/atms_n20.yaml +++ /dev/null @@ -1,518 +0,0 @@ -obs space: - name: atms_n20 - obsdatain: - engine: - type: H5File - obsfile: !ENV atms_n20_obs_${CDATE}.nc4 - obsdataout: - engine: - type: H5File - obsfile: !ENV atms_n20_diag_${CDATE}.nc4 - simulated variables: [brightnessTemperature] - channels: &atms_n20_channels 1-22 - -geovals: - filename: !ENV atms_n20_geoval_${CDATE}.nc4 - -obs operator: - name: CRTM - Absorbers: [H2O,O3] - Clouds: [Water, Ice] - Cloud_Fraction: 1.0 - obs options: - Sensor_ID: &Sensor_ID atms_n20 - EndianType: little_endian - CoefficientPath: crtm/ - -obs bias: - input file: !ENV atms_n20_satbias_${GDATE}.nc4 - variational bc: - predictors: - - name: constant - - name: lapse_rate - order: 2 - tlapse: &atms_n20_tlap !ENV atms_n20_tlapmean_${GDATE}.txt - - name: lapse_rate - tlapse: *atms_n20_tlap - - name: emissivity - - name: scan_angle - order: 4 - - name: scan_angle - order: 3 - - name: scan_angle - order: 2 - - name: scan_angle - -obs post filters: -# Step 0-A: Create Diagnostic Flags -- filter: Create Diagnostic Flags - filter variables: - - name: brightnessTemperature - channels: *atms_n20_channels - flags: - - name: ScanEdgeRemoval - initial value: false - force reinitialization: false - - name: Thinning - initial value: false - force reinitialization: false - - name: CLWRetrievalCheck - initial value: false - force reinitialization: false - - name: WindowChannelExtremeResidual - initial value: false - force reinitialization: false - - name: HydrometeorCheck - initial value: false - force reinitialization: false - - name: GrossCheck - initial value: false - force reinitialization: false - - name: InterChannelConsistency - initial value: false - force reinitialization: false - - name: UseflagCheck - initial value: false - force reinitialization: false - -# Step 0-B: Calculate derived variables -# Calculate CLW retrieved from observation -- filter: Variable Assignment - assignments: - - name: CLWRetFromObs@DerivedMetaData - type: float - function: - name: CLWRetMW@ObsFunction - options: - clwret_ch238: 1 - clwret_ch314: 2 - clwret_types: [ObsValue] - -# Calculate CLW retrieved from observation -- filter: Variable Assignment - assignments: - - name: CLWRetFromBkg@DerivedMetaData - type: float - function: - name: CLWRetMW@ObsFunction - options: - clwret_ch238: 1 - clwret_ch314: 2 - clwret_types: [HofX] - -# Calculate symmetric retrieved CLW -- filter: Variable Assignment - assignments: - - name: CLWRetSymmetric@DerivedMetaData - type: float - value: 1000.0 - -- filter: Variable Assignment - where: - - variable: - name: CLWRetFromObs@DerivedMetaData - minvalue: 0. - maxvalue: 999. - - variable: - name: CLWRetFromBkg@DerivedMetaData - minvalue: 0. - maxvalue: 999. - where operator: and - assignments: - - name: CLWRetSymmetric@DerivedMetaData - type: float - function: - name: Arithmetic@ObsFunction - options: - variables: - - name: CLWRetFromObs@DerivedMetaData - - name: CLWRetFromBkg@DerivedMetaData - total coefficient: 0.5 - -# Calculate scattering index from observation -- filter: Variable Assignment - assignments: - - name: SIRetFromObs@DerivedMetaData - type: float - function: - name: SCATRetMW@ObsFunction - options: - scatret_ch238: 1 - scatret_ch314: 2 - scatret_ch890: 16 - scatret_types: [ObsValue] - -# Calculate CLW obs/bkg match index -- filter: Variable Assignment - assignments: - - name: CLWMatchIndex@DerivedMetaData - channels: *atms_n20_channels - type: float - function: - name: CLWMatchIndexMW@ObsFunction - channels: *atms_n20_channels - options: - channels: *atms_n20_channels - clwobs_function: - name: CLWRetFromObs@DerivedMetaData - clwbkg_function: - name: CLWRetFromBkg@DerivedMetaData - clwret_clearsky: [ 0.030, 0.030, 0.030, 0.020, 0.030, - 0.080, 0.150, 0.000, 0.000, 0.000, - 0.000, 0.000, 0.000, 0.000, 0.000, - 0.020, 0.030, 0.030, 0.030, 0.030, - 0.050, 0.100] - -# Calculate symmetric observation error -- filter: Variable Assignment - assignments: - - name: InitialObsError@DerivedMetaData - channels: *atms_n20_channels - type: float - function: - name: ObsErrorModelRamp@ObsFunction - channels: *atms_n20_channels - options: - channels: *atms_n20_channels - xvar: - name: CLWRetSymmetric@DerivedMetaData - x0: [ 0.030, 0.030, 0.030, 0.020, 0.030, - 0.080, 0.150, 0.000, 0.000, 0.000, - 0.000, 0.000, 0.000, 0.000, 0.000, - 0.020, 0.030, 0.030, 0.030, 0.030, - 0.050, 0.100] - x1: [ 0.350, 0.380, 0.400, 0.450, 0.500, - 1.000, 1.000, 0.000, 0.000, 0.000, - 0.000, 0.000, 0.000, 0.000, 0.000, - 0.350, 0.500, 0.500, 0.500, 0.500, - 0.500, 0.500] - err0: [ 4.500, 4.500, 4.500, 2.500, 0.550, - 0.300, 0.300, 0.400, 0.400, 0.400, - 0.450, 0.450, 0.550, 0.800, 4.000, - 4.000, 4.000, 3.500, 3.000, 3.000, - 3.000, 3.000] - err1: [20.000, 25.000, 12.000, 7.000, 3.500, - 3.000, 0.800, 0.400, 0.400, 0.400, - 0.450, 0.450, 0.550, 0.800, 4.000, - 19.000, 30.000, 25.000, 16.500, 12.000, - 9.000, 6.500] - -# Calculate Innovation@DerivedMetaData -- filter: Variable Assignment - assignments: - - name: Innovation@DerivedMetaData - channels: *atms_n20_channels - type: float - function: - name: ObsFunction/Arithmetic - channels: *atms_n20_channels - options: - variables: - - name: brightnessTemperature@ObsValue - channels: *atms_n20_channels - - name: brightnessTemperature@HofX - channels: *atms_n20_channels - coefs: [1, -1] - -# Step 1: Assign initial all-sky observation error -- filter: Perform Action - filter variables: - - name: brightnessTemperature - channels: *atms_n20_channels - action: - name: assign error - error function: - name: InitialObsError@DerivedMetaData - channels: *atms_n20_channels - -# Step 2: CLW Retrieval Check (observation_based) -- filter: Bounds Check - filter variables: - - name: brightnessTemperature - channels: 1-7, 16-22 - test variables: - - name: CLWRetFromObs@DerivedMetaData - maxvalue: 999.0 - actions: - - name: set - flag: CLWRetrievalCheck - - name: reject - -# Step 3: CLW Retrieval Check (background_based) -- filter: Bounds Check - filter variables: - - name: brightnessTemperature - channels: 1-7, 16-22 - test variables: - - name: CLWRetFromBkg@DerivedMetaData - maxvalue: 999.0 - actions: - - name: set - flag: CLWRetrievalCheck - - name: reject - -# Step 4: Window channel sanity check -- filter: Bounds Check - filter variables: - - name: brightnessTemperature - channels: 1-7, 16, 17-22 - test variables: - - name: Innovation@DerivedMetaData - channels: 1, 2, 5-7, 16 - maxvalue: 200.0 - minvalue: -200.0 - flag all filter variables if any test variable is out of bounds: true - actions: - - name: set - flag: WindowChannelExtremeResidual - - name: reject - -# Step 5: Hydrometeor Check (cloud/precipitation affected chanels) -- filter: Variable Assignment - assignments: - - name: DerivedMetaData/HydrometeorCheckATMS - channels: *atms_n20_channels - type: float - function: - name: HydrometeorCheckATMS@ObsFunction - channels: *atms_n20_channels - options: - channels: *atms_n20_channels - obserr_clearsky: [ 4.500, 4.500, 4.500, 2.500, 0.550, - 0.300, 0.300, 0.400, 0.400, 0.400, - 0.450, 0.450, 0.550, 0.800, 4.000, - 4.000, 4.000, 3.500, 3.000, 3.000, - 3.000, 3.000] - clwret_function: - name: CLWRetFromObs@DerivedMetaData - obserr_function: - name: InitialObsError@DerivedMetaData - channels: *atms_n20_channels - -- filter: Bounds Check - filter variables: - - name: brightnessTemperature - channels: *atms_n20_channels - test variables: - - name: DerivedMetaData/HydrometeorCheckATMS - channels: *atms_n20_channels - maxvalue: 0.0 - actions: - - name: set - flag: HydrometeorCheck - ignore: rejected observations - - name: reject - -# Step 6: Observation error inflation based on topography check -- filter: Variable Assignment - assignments: - - name: ObsErrorFactorTopo@DerivedMetaData - channels: *atms_n20_channels - type: float - function: - name: ObsErrorFactorTopoRad@ObsFunction - channels: *atms_n20_channels - options: - sensor: *Sensor_ID - channels: *atms_n20_channels - -- filter: Perform Action - filter variables: - - name: brightnessTemperature - channels: *atms_n20_channels - action: - name: inflate error - inflation variable: - name: ObsErrorFactorTopo@DerivedMetaData - channels: *atms_n20_channels - -# Step 7: Obs error inflation based on TOA transmittancec check -- filter: Variable Assignment - assignments: - - name: ObsErrorFactorTransmitTop@DerivedMetaData - channels: *atms_n20_channels - type: float - function: - name: ObsErrorFactorTransmitTopRad@ObsFunction - channels: *atms_n20_channels - options: - channels: *atms_n20_channels - -- filter: Perform Action - filter variables: - - name: brightnessTemperature - channels: *atms_n20_channels - action: - name: inflate error - inflation variable: - name: ObsErrorFactorTransmitTop@DerivedMetaData - channels: *atms_n20_channels - -# Step 8: Observation error inflation based on surface jacobian check -- filter: Variable Assignment - assignments: - - name: ObsErrorFactorSurfJacobian@DerivedMetaData - channels: *atms_n20_channels - type: float - function: - name: ObsErrorFactorSurfJacobianRad@ObsFunction - channels: *atms_n20_channels - options: - sensor: *Sensor_ID - channels: *atms_n20_channels - obserr_demisf: [0.010, 0.020, 0.015, 0.020, 0.200] - obserr_dtempf: [0.500, 2.000, 1.000, 2.000, 4.500] - - -- filter: Perform Action - filter variables: - - name: brightnessTemperature - channels: *atms_n20_channels - action: - name: inflate error - inflation variable: - name: ObsErrorFactorSurfJacobian@DerivedMetaData - channels: *atms_n20_channels - -# Step 9: Situation dependent check -- filter: Variable Assignment - assignments: - - name: ObsErrorFactorSituDepend@DerivedMetaData - channels: *atms_n20_channels - type: float - function: - name: ObsErrorFactorSituDependMW@ObsFunction - channels: *atms_n20_channels - options: - sensor: *Sensor_ID - channels: *atms_n20_channels - clwbkg_function: - name: CLWRetFromBkg@DerivedMetaData - clwobs_function: - name: CLWRetFromObs@DerivedMetaData - scatobs_function: - name: SIRetFromObs@DerivedMetaData - clwmatchidx_function: - name: CLWMatchIndex@DerivedMetaData - channels: *atms_n20_channels - obserr_function: - name: InitialObsError@DerivedMetaData - channels: *atms_n20_channels - obserr_clearsky: [ 4.500, 4.500, 4.500, 2.500, 0.550, - 0.300, 0.300, 0.400, 0.400, 0.400, - 0.450, 0.450, 0.550, 0.800, 4.000, - 4.000, 4.000, 3.500, 3.000, 3.000, - 3.000, 3.000] - -- filter: Perform Action - filter variables: - - name: brightnessTemperature - channels: *atms_n20_channels - action: - name: inflate error - inflation variable: - name: ObsErrorFactorSituDepend@DerivedMetaData - channels: *atms_n20_channels - -# Step 10: Gross check -# Remove data if abs(Obs-HofX) > absolute threhold -- filter: Variable Assignment - assignments: - - name: ObsErrorFactorLat@DerivedMetaData - type: float - function: - name: ObsErrorFactorLatRad@ObsFunction - options: - latitude_parameters: [25.0, 0.25, 0.04, 3.0] - -- filter: Variable Assignment - assignments: - - name: ObsErrorBound@DerivedMetaData - channels: *atms_n20_channels - type: float - function: - name: ObsErrorBoundMW@ObsFunction - channels: *atms_n20_channels - options: - sensor: *Sensor_ID - channels: *atms_n20_channels - obserr_bound_latitude: - name: ObsErrorFactorLat@DerivedMetaData - obserr_bound_transmittop: - name: ObsErrorFactorTransmitTop@DerivedMetaData - channels: *atms_n20_channels - options: - channels: *atms_n20_channels - obserr_bound_topo: - name: ObsErrorFactorTopo@DerivedMetaData - channels: *atms_n20_channels - obserr_function: - name: InitialObsError@DerivedMetaData - channels: *atms_n20_channels - threhold: 3 - obserr_bound_max: [4.5, 4.5, 3.0, 3.0, 1.0, - 1.0, 1.0, 1.0, 1.0, 1.0, - 1.0, 1.0, 1.0, 2.0, 4.5, - 4.5, 2.0, 2.0, 2.0, 2.0, - 2.0, 2.0] -- filter: Background Check - filter variables: - - name: brightnessTemperature - channels: *atms_n20_channels - function absolute threshold: - - name: ObsErrorBound@DerivedMetaData - channels: *atms_n20_channels - actions: - - name: set - flag: GrossCheck - ignore: rejected observations - - name: reject - -# Step 11: Inter-channel check -- filter: Bounds Check - filter variables: - - name: brightnessTemperature - channels: *atms_n20_channels - test variables: - - name: InterChannelConsistencyCheck@ObsFunction - channels: *atms_n20_channels - options: - channels: *atms_n20_channels - use passive_bc: true - sensor: *Sensor_ID - use_flag: [ 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, - 1, 1, 1, 1, 4, - 1, 1, 1, 1, 1, - 1, 1] - maxvalue: 1.0e-12 - actions: - - name: set - flag: InterChannelConsistency - ignore: rejected observations - - name: reject - -# Step 12: Useflag Check -- filter: Bounds Check - filter variables: - - name: brightnessTemperature - channels: *atms_n20_channels - test variables: - - name: ObsFunction/ChannelUseflagCheckRad - channels: *atms_n20_channels - options: - channels: *atms_n20_channels - use_flag: [ 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, - 1, 1, 1, 1, 4, - 1, 1, 1, 1, 1, - 1, 1] - minvalue: 1.0e-12 - actions: - - name: set - flag: UseflagCheck - ignore: rejected observations - - name: reject - -passedBenchmark: 181401 # GSI: 181403 (difference is in channel 7) - diff --git a/parm/atm/obs/testing/atms_n20_noqc.yaml b/parm/atm/obs/testing/atms_n20_noqc.yaml deleted file mode 100644 index 95c2463a9..000000000 --- a/parm/atm/obs/testing/atms_n20_noqc.yaml +++ /dev/null @@ -1,148 +0,0 @@ -obs space: - name: atms_n20 - obsdatain: - engine: - type: H5File - obsfile: !ENV atms_n20_obs_${CDATE}.nc4 - obsdataout: - engine: - type: H5File - obsfile: !ENV atms_n20_diag_${CDATE}.nc4 - simulated variables: [brightnessTemperature] - channels: &atms_n20_channels 1-22 - -geovals: - filename: !ENV atms_n20_geoval_${CDATE}.nc4 - -obs operator: - name: CRTM - Absorbers: [H2O,O3] - Clouds: [Water, Ice] - Cloud_Fraction: 1.0 - obs options: - Sensor_ID: &Sensor_ID atms_n20 - EndianType: little_endian - CoefficientPath: crtm/ - -obs bias: - input file: !ENV atms_n20_satbias_${GDATE}.nc4 - variational bc: - predictors: - - name: constant - - name: lapse_rate - order: 2 - tlapse: &atms_n20_tlap !ENV atms_n20_tlapmean_${GDATE}.txt - - name: lapse_rate - tlapse: *atms_n20_tlap - - name: emissivity - - name: scan_angle - order: 4 - - name: scan_angle - order: 3 - - name: scan_angle - order: 2 - - name: scan_angle - -obs post filters: -# Step 0-B: Calculate derived variables -# Calculate CLW retrieved from observation -- filter: Variable Assignment - assignments: - - name: CLWRetFromObs@DerivedMetaData - type: float - function: - name: CLWRetMW@ObsFunction - options: - clwret_ch238: 1 - clwret_ch314: 2 - clwret_types: [ObsValue] - -# Calculate CLW retrieved from observation -- filter: Variable Assignment - assignments: - - name: CLWRetFromBkg@DerivedMetaData - type: float - function: - name: CLWRetMW@ObsFunction - options: - clwret_ch238: 1 - clwret_ch314: 2 - clwret_types: [HofX] - -# Calculate symmetric retrieved CLW -- filter: Variable Assignment - assignments: - - name: CLWRetSymmetric@DerivedMetaData - type: float - value: 1000.0 - -- filter: Variable Assignment - where: - - variable: - name: CLWRetFromObs@DerivedMetaData - minvalue: 0. - maxvalue: 999. - - variable: - name: CLWRetFromBkg@DerivedMetaData - minvalue: 0. - maxvalue: 999. - where operator: and - assignments: - - name: CLWRetSymmetric@DerivedMetaData - type: float - function: - name: Arithmetic@ObsFunction - options: - variables: - - name: CLWRetFromObs@DerivedMetaData - - name: CLWRetFromBkg@DerivedMetaData - total coefficient: 0.5 - -# Calculate symmetric observation error -- filter: Variable Assignment - assignments: - - name: InitialObsError@DerivedMetaData - channels: *atms_n20_channels - type: float - function: - name: ObsErrorModelRamp@ObsFunction - channels: *atms_n20_channels - options: - channels: *atms_n20_channels - xvar: - name: CLWRetSymmetric@DerivedMetaData - x0: [ 0.030, 0.030, 0.030, 0.020, 0.030, - 0.080, 0.150, 0.000, 0.000, 0.000, - 0.000, 0.000, 0.000, 0.000, 0.000, - 0.020, 0.030, 0.030, 0.030, 0.030, - 0.050, 0.100] - x1: [ 0.350, 0.380, 0.400, 0.450, 0.500, - 1.000, 1.000, 0.000, 0.000, 0.000, - 0.000, 0.000, 0.000, 0.000, 0.000, - 0.350, 0.500, 0.500, 0.500, 0.500, - 0.500, 0.500] - err0: [ 4.500, 4.500, 4.500, 2.500, 0.550, - 0.300, 0.300, 0.400, 0.400, 0.400, - 0.450, 0.450, 0.550, 0.800, 4.000, - 4.000, 4.000, 3.500, 3.000, 3.000, - 3.000, 3.000] - err1: [20.000, 25.000, 12.000, 7.000, 3.500, - 3.000, 0.800, 0.400, 0.400, 0.400, - 0.450, 0.450, 0.550, 0.800, 4.000, - 19.000, 30.000, 25.000, 16.500, 12.000, - 9.000, 6.500] - -# Step 1: Assign initial all-sky observation error -- filter: Perform Action - filter variables: - - name: brightnessTemperature - channels: *atms_n20_channels - action: - name: assign error - error function: - name: InitialObsError@DerivedMetaData - channels: *atms_n20_channels - -passedBenchmark: 249449 -#vector ref: GsiHofXBc -#tolerance: 1.e-7 diff --git a/parm/atm/obs/testing/atms_npp.yaml b/parm/atm/obs/testing/atms_npp.yaml deleted file mode 100644 index c83fc7b8f..000000000 --- a/parm/atm/obs/testing/atms_npp.yaml +++ /dev/null @@ -1,518 +0,0 @@ -obs space: - name: atms_npp - obsdatain: - engine: - type: H5File - obsfile: !ENV atms_npp_obs_${CDATE}.nc4 - obsdataout: - engine: - type: H5File - obsfile: !ENV atms_npp_diag_${CDATE}.nc4 - simulated variables: [brightnessTemperature] - channels: &atms_npp_channels 1-22 - -geovals: - filename: !ENV atms_npp_geoval_${CDATE}.nc4 - -obs operator: - name: CRTM - Absorbers: [H2O,O3] - Clouds: [Water, Ice] - Cloud_Fraction: 1.0 - obs options: - Sensor_ID: &Sensor_ID atms_npp - EndianType: little_endian - CoefficientPath: crtm/ - -obs bias: - input file: !ENV atms_npp_satbias_${GDATE}.nc4 - variational bc: - predictors: - - name: constant - - name: lapse_rate - order: 2 - tlapse: &atms_npp_tlap !ENV atms_npp_tlapmean_${GDATE}.txt - - name: lapse_rate - tlapse: *atms_npp_tlap - - name: emissivity - - name: scan_angle - order: 4 - - name: scan_angle - order: 3 - - name: scan_angle - order: 2 - - name: scan_angle - -obs post filters: -# Step 0-A: Create Diagnostic Flags -- filter: Create Diagnostic Flags - filter variables: - - name: brightnessTemperature - channels: *atms_npp_channels - flags: - - name: ScanEdgeRemoval - initial value: false - force reinitialization: false - - name: Thinning - initial value: false - force reinitialization: false - - name: CLWRetrievalCheck - initial value: false - force reinitialization: false - - name: WindowChannelExtremeResidual - initial value: false - force reinitialization: false - - name: HydrometeorCheck - initial value: false - force reinitialization: false - - name: GrossCheck - initial value: false - force reinitialization: false - - name: InterChannelConsistency - initial value: false - force reinitialization: false - - name: UseflagCheck - initial value: false - force reinitialization: false - -# Step 0-B: Calculate derived variables -# Calculate CLW retrieved from observation -- filter: Variable Assignment - assignments: - - name: CLWRetFromObs@DerivedMetaData - type: float - function: - name: CLWRetMW@ObsFunction - options: - clwret_ch238: 1 - clwret_ch314: 2 - clwret_types: [ObsValue] - -# Calculate CLW retrieved from observation -- filter: Variable Assignment - assignments: - - name: CLWRetFromBkg@DerivedMetaData - type: float - function: - name: CLWRetMW@ObsFunction - options: - clwret_ch238: 1 - clwret_ch314: 2 - clwret_types: [HofX] - -# Calculate symmetric retrieved CLW -- filter: Variable Assignment - assignments: - - name: CLWRetSymmetric@DerivedMetaData - type: float - value: 1000.0 - -- filter: Variable Assignment - where: - - variable: - name: CLWRetFromObs@DerivedMetaData - minvalue: 0. - maxvalue: 999. - - variable: - name: CLWRetFromBkg@DerivedMetaData - minvalue: 0. - maxvalue: 999. - where operator: and - assignments: - - name: CLWRetSymmetric@DerivedMetaData - type: float - function: - name: Arithmetic@ObsFunction - options: - variables: - - name: CLWRetFromObs@DerivedMetaData - - name: CLWRetFromBkg@DerivedMetaData - total coefficient: 0.5 - -# Calculate scattering index from observation -- filter: Variable Assignment - assignments: - - name: SIRetFromObs@DerivedMetaData - type: float - function: - name: SCATRetMW@ObsFunction - options: - scatret_ch238: 1 - scatret_ch314: 2 - scatret_ch890: 16 - scatret_types: [ObsValue] - -# Calculate CLW obs/bkg match index -- filter: Variable Assignment - assignments: - - name: CLWMatchIndex@DerivedMetaData - channels: *atms_npp_channels - type: float - function: - name: CLWMatchIndexMW@ObsFunction - channels: *atms_npp_channels - options: - channels: *atms_npp_channels - clwobs_function: - name: CLWRetFromObs@DerivedMetaData - clwbkg_function: - name: CLWRetFromBkg@DerivedMetaData - clwret_clearsky: [ 0.030, 0.030, 0.030, 0.020, 0.030, - 0.080, 0.150, 0.000, 0.000, 0.000, - 0.000, 0.000, 0.000, 0.000, 0.000, - 0.020, 0.030, 0.030, 0.030, 0.030, - 0.050, 0.100] - -# Calculate symmetric observation error -- filter: Variable Assignment - assignments: - - name: InitialObsError@DerivedMetaData - channels: *atms_npp_channels - type: float - function: - name: ObsErrorModelRamp@ObsFunction - channels: *atms_npp_channels - options: - channels: *atms_npp_channels - xvar: - name: CLWRetSymmetric@DerivedMetaData - x0: [ 0.030, 0.030, 0.030, 0.020, 0.030, - 0.080, 0.150, 0.000, 0.000, 0.000, - 0.000, 0.000, 0.000, 0.000, 0.000, - 0.020, 0.030, 0.030, 0.030, 0.030, - 0.050, 0.100] - x1: [ 0.350, 0.380, 0.400, 0.450, 0.500, - 1.000, 1.000, 0.000, 0.000, 0.000, - 0.000, 0.000, 0.000, 0.000, 0.000, - 0.350, 0.500, 0.500, 0.500, 0.500, - 0.500, 0.500] - err0: [ 4.500, 4.500, 4.500, 2.500, 0.550, - 0.300, 0.300, 0.400, 0.400, 0.400, - 0.450, 0.450, 0.550, 0.800, 4.000, - 4.000, 4.000, 3.500, 3.000, 3.000, - 3.000, 3.000] - err1: [20.000, 25.000, 12.000, 7.000, 3.500, - 3.000, 0.800, 0.400, 0.400, 0.400, - 0.450, 0.450, 0.550, 0.800, 4.000, - 19.000, 30.000, 25.000, 16.500, 12.000, - 9.000, 6.500] - -# Calculate Innovation@DerivedMetaData -- filter: Variable Assignment - assignments: - - name: Innovation@DerivedMetaData - channels: *atms_npp_channels - type: float - function: - name: ObsFunction/Arithmetic - channels: *atms_npp_channels - options: - variables: - - name: brightnessTemperature@ObsValue - channels: *atms_npp_channels - - name: brightnessTemperature@HofX - channels: *atms_npp_channels - coefs: [1, -1] - -# Step 1: Assign initial all-sky observation error -- filter: Perform Action - filter variables: - - name: brightnessTemperature - channels: *atms_npp_channels - action: - name: assign error - error function: - name: InitialObsError@DerivedMetaData - channels: *atms_npp_channels - -# Step 2: CLW Retrieval Check (observation_based) -- filter: Bounds Check - filter variables: - - name: brightnessTemperature - channels: 1-7, 16-22 - test variables: - - name: CLWRetFromObs@DerivedMetaData - maxvalue: 999.0 - actions: - - name: set - flag: CLWRetrievalCheck - - name: reject - -# Step 3: CLW Retrieval Check (background_based) -- filter: Bounds Check - filter variables: - - name: brightnessTemperature - channels: 1-7, 16-22 - test variables: - - name: CLWRetFromBkg@DerivedMetaData - maxvalue: 999.0 - actions: - - name: set - flag: CLWRetrievalCheck - - name: reject - -# Step 4: Window channel sanity check -- filter: Bounds Check - filter variables: - - name: brightnessTemperature - channels: 1-7, 16, 17-22 - test variables: - - name: Innovation@DerivedMetaData - channels: 1, 2, 5-7, 16 - maxvalue: 200.0 - minvalue: -200.0 - flag all filter variables if any test variable is out of bounds: true - actions: - - name: set - flag: WindowChannelExtremeResidual - - name: reject - -# Step 5: Hydrometeor Check (cloud/precipitation affected chanels) -- filter: Variable Assignment - assignments: - - name: DerivedMetaData/HydrometeorCheckATMS - channels: *atms_npp_channels - type: float - function: - name: HydrometeorCheckATMS@ObsFunction - channels: *atms_npp_channels - options: - channels: *atms_npp_channels - obserr_clearsky: [ 4.500, 4.500, 4.500, 2.500, 0.550, - 0.300, 0.300, 0.400, 0.400, 0.400, - 0.450, 0.450, 0.550, 0.800, 4.000, - 4.000, 4.000, 3.500, 3.000, 3.000, - 3.000, 3.000] - clwret_function: - name: CLWRetFromObs@DerivedMetaData - obserr_function: - name: InitialObsError@DerivedMetaData - channels: *atms_npp_channels - -- filter: Bounds Check - filter variables: - - name: brightnessTemperature - channels: *atms_npp_channels - test variables: - - name: DerivedMetaData/HydrometeorCheckATMS - channels: *atms_npp_channels - maxvalue: 0.0 - actions: - - name: set - flag: HydrometeorCheck - ignore: rejected observations - - name: reject - -# Step 6: Observation error inflation based on topography check -- filter: Variable Assignment - assignments: - - name: ObsErrorFactorTopo@DerivedMetaData - channels: *atms_npp_channels - type: float - function: - name: ObsErrorFactorTopoRad@ObsFunction - channels: *atms_npp_channels - options: - sensor: *Sensor_ID - channels: *atms_npp_channels - -- filter: Perform Action - filter variables: - - name: brightnessTemperature - channels: *atms_npp_channels - action: - name: inflate error - inflation variable: - name: ObsErrorFactorTopo@DerivedMetaData - channels: *atms_npp_channels - -# Step 7: Obs error inflation based on TOA transmittancec check -- filter: Variable Assignment - assignments: - - name: ObsErrorFactorTransmitTop@DerivedMetaData - channels: *atms_npp_channels - type: float - function: - name: ObsErrorFactorTransmitTopRad@ObsFunction - channels: *atms_npp_channels - options: - channels: *atms_npp_channels - -- filter: Perform Action - filter variables: - - name: brightnessTemperature - channels: *atms_npp_channels - action: - name: inflate error - inflation variable: - name: ObsErrorFactorTransmitTop@DerivedMetaData - channels: *atms_npp_channels - -# Step 8: Observation error inflation based on surface jacobian check -- filter: Variable Assignment - assignments: - - name: ObsErrorFactorSurfJacobian@DerivedMetaData - channels: *atms_npp_channels - type: float - function: - name: ObsErrorFactorSurfJacobianRad@ObsFunction - channels: *atms_npp_channels - options: - sensor: *Sensor_ID - channels: *atms_npp_channels - obserr_demisf: [0.010, 0.020, 0.015, 0.020, 0.200] - obserr_dtempf: [0.500, 2.000, 1.000, 2.000, 4.500] - - -- filter: Perform Action - filter variables: - - name: brightnessTemperature - channels: *atms_npp_channels - action: - name: inflate error - inflation variable: - name: ObsErrorFactorSurfJacobian@DerivedMetaData - channels: *atms_npp_channels - -# Step 9: Situation dependent check -- filter: Variable Assignment - assignments: - - name: ObsErrorFactorSituDepend@DerivedMetaData - channels: *atms_npp_channels - type: float - function: - name: ObsErrorFactorSituDependMW@ObsFunction - channels: *atms_npp_channels - options: - sensor: *Sensor_ID - channels: *atms_npp_channels - clwbkg_function: - name: CLWRetFromBkg@DerivedMetaData - clwobs_function: - name: CLWRetFromObs@DerivedMetaData - scatobs_function: - name: SIRetFromObs@DerivedMetaData - clwmatchidx_function: - name: CLWMatchIndex@DerivedMetaData - channels: *atms_npp_channels - obserr_function: - name: InitialObsError@DerivedMetaData - channels: *atms_npp_channels - obserr_clearsky: [ 4.500, 4.500, 4.500, 2.500, 0.550, - 0.300, 0.300, 0.400, 0.400, 0.400, - 0.450, 0.450, 0.550, 0.800, 4.000, - 4.000, 4.000, 3.500, 3.000, 3.000, - 3.000, 3.000] - -- filter: Perform Action - filter variables: - - name: brightnessTemperature - channels: *atms_npp_channels - action: - name: inflate error - inflation variable: - name: ObsErrorFactorSituDepend@DerivedMetaData - channels: *atms_npp_channels - -# Step 10: Gross check -# Remove data if abs(Obs-HofX) > absolute threhold -- filter: Variable Assignment - assignments: - - name: ObsErrorFactorLat@DerivedMetaData - type: float - function: - name: ObsErrorFactorLatRad@ObsFunction - options: - latitude_parameters: [25.0, 0.25, 0.04, 3.0] - -- filter: Variable Assignment - assignments: - - name: ObsErrorBound@DerivedMetaData - channels: *atms_npp_channels - type: float - function: - name: ObsErrorBoundMW@ObsFunction - channels: *atms_npp_channels - options: - sensor: *Sensor_ID - channels: *atms_npp_channels - obserr_bound_latitude: - name: ObsErrorFactorLat@DerivedMetaData - obserr_bound_transmittop: - name: ObsErrorFactorTransmitTop@DerivedMetaData - channels: *atms_npp_channels - options: - channels: *atms_npp_channels - obserr_bound_topo: - name: ObsErrorFactorTopo@DerivedMetaData - channels: *atms_npp_channels - obserr_function: - name: InitialObsError@DerivedMetaData - channels: *atms_npp_channels - threhold: 3 - obserr_bound_max: [4.5, 4.5, 3.0, 3.0, 1.0, - 1.0, 1.0, 1.0, 1.0, 1.0, - 1.0, 1.0, 1.0, 2.0, 4.5, - 4.5, 2.0, 2.0, 2.0, 2.0, - 2.0, 2.0] -- filter: Background Check - filter variables: - - name: brightnessTemperature - channels: *atms_npp_channels - function absolute threshold: - - name: ObsErrorBound@DerivedMetaData - channels: *atms_npp_channels - actions: - - name: set - flag: GrossCheck - ignore: rejected observations - - name: reject - -# Step 11: Inter-channel check -- filter: Bounds Check - filter variables: - - name: brightnessTemperature - channels: *atms_npp_channels - test variables: - - name: InterChannelConsistencyCheck@ObsFunction - channels: *atms_npp_channels - options: - channels: *atms_npp_channels - use passive_bc: true - sensor: *Sensor_ID - use_flag: [ 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, - 1, 1, 1, 1, 4, - 1, 1, 1, 1, 1, - 1, 1] - maxvalue: 1.0e-12 - actions: - - name: set - flag: InterChannelConsistency - ignore: rejected observations - - name: reject - -# Step 12: Useflag Check -- filter: Bounds Check - filter variables: - - name: brightnessTemperature - channels: *atms_npp_channels - test variables: - - name: ObsFunction/ChannelUseflagCheckRad - channels: *atms_npp_channels - options: - channels: *atms_npp_channels - use_flag: [ 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, - 1, 1, 1, 1, 4, - 1, 1, 1, 1, 1, - 1, 1] - minvalue: 1.0e-12 - actions: - - name: set - flag: UseflagCheck - ignore: rejected observations - - name: reject - -passedBenchmark: 182751 # GSI: 182751 - diff --git a/parm/atm/obs/testing/atms_npp_noqc.yaml b/parm/atm/obs/testing/atms_npp_noqc.yaml deleted file mode 100644 index 5bbf45307..000000000 --- a/parm/atm/obs/testing/atms_npp_noqc.yaml +++ /dev/null @@ -1,148 +0,0 @@ -obs space: - name: atms_npp - obsdatain: - engine: - type: H5File - obsfile: !ENV atms_npp_obs_${CDATE}.nc4 - obsdataout: - engine: - type: H5File - obsfile: !ENV atms_npp_diag_${CDATE}.nc4 - simulated variables: [brightnessTemperature] - channels: &atms_npp_channels 1-22 - -geovals: - filename: !ENV atms_npp_geoval_${CDATE}.nc4 - -obs operator: - name: CRTM - Absorbers: [H2O,O3] - Clouds: [Water, Ice] - Cloud_Fraction: 1.0 - obs options: - Sensor_ID: &Sensor_ID atms_npp - EndianType: little_endian - CoefficientPath: crtm/ - -obs bias: - input file: !ENV atms_npp_satbias_${GDATE}.nc4 - variational bc: - predictors: - - name: constant - - name: lapse_rate - order: 2 - tlapse: &atms_npp_tlap !ENV atms_npp_tlapmean_${GDATE}.txt - - name: lapse_rate - tlapse: *atms_npp_tlap - - name: emissivity - - name: scan_angle - order: 4 - - name: scan_angle - order: 3 - - name: scan_angle - order: 2 - - name: scan_angle - -obs post filters: -# Step 0-B: Calculate derived variables -# Calculate CLW retrieved from observation -- filter: Variable Assignment - assignments: - - name: CLWRetFromObs@DerivedMetaData - type: float - function: - name: CLWRetMW@ObsFunction - options: - clwret_ch238: 1 - clwret_ch314: 2 - clwret_types: [ObsValue] - -# Calculate CLW retrieved from observation -- filter: Variable Assignment - assignments: - - name: CLWRetFromBkg@DerivedMetaData - type: float - function: - name: CLWRetMW@ObsFunction - options: - clwret_ch238: 1 - clwret_ch314: 2 - clwret_types: [HofX] - -# Calculate symmetric retrieved CLW -- filter: Variable Assignment - assignments: - - name: CLWRetSymmetric@DerivedMetaData - type: float - value: 1000.0 - -- filter: Variable Assignment - where: - - variable: - name: CLWRetFromObs@DerivedMetaData - minvalue: 0. - maxvalue: 999. - - variable: - name: CLWRetFromBkg@DerivedMetaData - minvalue: 0. - maxvalue: 999. - where operator: and - assignments: - - name: CLWRetSymmetric@DerivedMetaData - type: float - function: - name: Arithmetic@ObsFunction - options: - variables: - - name: CLWRetFromObs@DerivedMetaData - - name: CLWRetFromBkg@DerivedMetaData - total coefficient: 0.5 - -# Calculate symmetric observation error -- filter: Variable Assignment - assignments: - - name: InitialObsError@DerivedMetaData - channels: *atms_npp_channels - type: float - function: - name: ObsErrorModelRamp@ObsFunction - channels: *atms_npp_channels - options: - channels: *atms_npp_channels - xvar: - name: CLWRetSymmetric@DerivedMetaData - x0: [ 0.030, 0.030, 0.030, 0.020, 0.030, - 0.080, 0.150, 0.000, 0.000, 0.000, - 0.000, 0.000, 0.000, 0.000, 0.000, - 0.020, 0.030, 0.030, 0.030, 0.030, - 0.050, 0.100] - x1: [ 0.350, 0.380, 0.400, 0.450, 0.500, - 1.000, 1.000, 0.000, 0.000, 0.000, - 0.000, 0.000, 0.000, 0.000, 0.000, - 0.350, 0.500, 0.500, 0.500, 0.500, - 0.500, 0.500] - err0: [ 4.500, 4.500, 4.500, 2.500, 0.550, - 0.300, 0.300, 0.400, 0.400, 0.400, - 0.450, 0.450, 0.550, 0.800, 4.000, - 4.000, 4.000, 3.500, 3.000, 3.000, - 3.000, 3.000] - err1: [20.000, 25.000, 12.000, 7.000, 3.500, - 3.000, 0.800, 0.400, 0.400, 0.400, - 0.450, 0.450, 0.550, 0.800, 4.000, - 19.000, 30.000, 25.000, 16.500, 12.000, - 9.000, 6.500] - -# Step 1: Assign initial all-sky observation error -- filter: Perform Action - filter variables: - - name: brightnessTemperature - channels: *atms_npp_channels - action: - name: assign error - error function: - name: InitialObsError@DerivedMetaData - channels: *atms_npp_channels - -passedBenchmark: 247947 -#vector ref: GsiHofXBc -##tolerance: 1.e-7 diff --git a/parm/atm/obs/testing/avhrr3_metop-a.yaml b/parm/atm/obs/testing/avhrr3_metop-a.yaml deleted file mode 100644 index da5b5689c..000000000 --- a/parm/atm/obs/testing/avhrr3_metop-a.yaml +++ /dev/null @@ -1,191 +0,0 @@ -obs operator: - name: CRTM - Absorbers: [H2O,O3,CO2] - obs options: - Sensor_ID: &Sensor_ID avhrr3_metop-a - EndianType: little_endian - CoefficientPath: crtm/ -obs space: - name: avhrr3_metop-a - obsdatain: - engine: - type: H5File - obsfile: !ENV avhrr3_metop-a_obs_${CDATE}.nc4 - obsdataout: - engine: - type: H5File - obsfile: !ENV avhrr3_metop-a_diag_${CDATE}.nc4 - simulated variables: [brightnessTemperature] - channels: &all_channels 3-5 -geovals: - filename: !ENV avhrr3_metop-a_geoval_${CDATE}.nc4 -obs bias: - input file: !ENV avhrr3_metop-a_satbias_${GDATE}.nc4 - variational bc: - predictors: - - name: constant - - name: lapse_rate - order: 2 - tlapse: &avhrr3_metop-a_tlap !ENV avhrr3_metop-a_tlapmean_${GDATE}.txt - - name: lapse_rate - tlapse: *avhrr3_metop-a_tlap - - name: emissivity - - name: scan_angle - order: 4 - - name: scan_angle - order: 3 - - name: scan_angle - order: 2 - - name: scan_angle - -obs post filters: -# Step 1: Assign initial observation error -- filter: Perform Action - filter variables: - - name: brightnessTemperature - channels: *all_channels - action: - name: assign error - error parameter vector: [0.600, 0.680, 0.720] - -# Step 2: Wavenumber Check -- filter: RejectList - filter variables: - - name: brightnessTemperature - channels: 3 - where: - - variable: - name: MetaData/solarZenithAngle - maxvalue: 89.0 - - variable: - name: GeoVaLs/water_area_fraction - minvalue: 1.0e-12 - -# Step 3: Observation error inflation based on wavenumber -- filter: Perform Action - filter variables: - - name: brightnessTemperature - channels: *all_channels - action: - name: inflate error - inflation variable: - name: ObsFunction/ObsErrorFactorWavenumIR - channels: *all_channels - options: - channels: *all_channels - -# Step 4: Observation error inflation based on topography check -- filter: Perform Action - filter variables: - - name: brightnessTemperature - channels: *all_channels - action: - name: inflate error - inflation variable: - name: ObsFunction/ObsErrorFactorTopoRad - channels: *all_channels - options: - channels: *all_channels - sensor: *Sensor_ID - -# Step 5: Observation Range Sanity Check -- filter: Bounds Check - filter variables: - - name: brightnessTemperature - channels: *all_channels - minvalue: 0.00001 - maxvalue: 1000.0 - action: - name: reject - -# Step 6: Transmittance Top Check -- filter: Perform Action - filter variables: - - name: brightnessTemperature - channels: *all_channels - action: - name: inflate error - inflation variable: - name: ObsFunction/ObsErrorFactorTransmitTopRad - channels: *all_channels - options: - channels: *all_channels - -# Step 7: Cloud Detection Check -- filter: Bounds Check - filter variables: - - name: brightnessTemperature - channels: *all_channels - test variables: - - name: ObsFunction/CloudDetectMinResidualAVHRR - channels: *all_channels - options: - channels: *all_channels - use_flag: [ 1, 1, 1 ] - use_flag_clddet: [ 1, 1, 1 ] - obserr_dtempf: [0.50, 2.00, 4.00, 2.00, 4.00] - error parameter vector: [0.600, 0.680, 0.720] - maxvalue: 1.0e-12 - action: - name: reject - -# Step 8: NSST Retrieval Check -- filter: Bounds Check - filter variables: - - name: brightnessTemperature - channels: *all_channels - test variables: - - name: ObsFunction/NearSSTRetCheckIR - channels: *all_channels - options: - channels: *all_channels - use_flag: [ 1, 1, 1 ] - error parameter vector: [0.600, 0.680, 0.720] - maxvalue: 1.0e-12 - action: - name: reject - -# Step 9: Surface Jacobians Check -- filter: Perform Action - filter variables: - - name: brightnessTemperature - channels: *all_channels - action: - name: inflate error - inflation variable: - name: ObsFunction/ObsErrorFactorSurfJacobianRad - channels: *all_channels - options: - channels: *all_channels - sensor: *Sensor_ID - obserr_demisf: [0.01, 0.02, 0.03, 0.02, 0.03] - obserr_dtempf: [0.50, 2.00, 4.00, 2.00, 4.00] - -# Step 10: Gross check -- filter: Background Check - filter variables: - - name: brightnessTemperature - channels: *all_channels - function absolute threshold: - - name: ObsFunction/ObsErrorBoundIR - channels: *all_channels - options: - sensor: *Sensor_ID - channels: *all_channels - obserr_bound_latitude: - name: ObsFunction/ObsErrorFactorLatRad - options: - latitude_parameters: [25.0, 0.5, 0.04, 1.0] - obserr_bound_transmittop: - name: ObsFunction/ObsErrorFactorTransmitTopRad - channels: *all_channels - options: - channels: *all_channels - obserr_bound_max: [ 6.0, 6.0, 6.0 ] - error parameter vector: [0.600, 0.680, 0.720] - action: - name: reject -passedBenchmark: 8774 - - - diff --git a/parm/atm/obs/testing/avhrr3_metop-b.yaml b/parm/atm/obs/testing/avhrr3_metop-b.yaml deleted file mode 100644 index dae03740e..000000000 --- a/parm/atm/obs/testing/avhrr3_metop-b.yaml +++ /dev/null @@ -1,191 +0,0 @@ -obs operator: - name: CRTM - Absorbers: [H2O,O3,CO2] - obs options: - Sensor_ID: &Sensor_ID avhrr3_metop-b - EndianType: little_endian - CoefficientPath: crtm/ -obs space: - name: avhrr3_metop-b - obsdatain: - engine: - type: H5File - obsfile: !ENV avhrr3_metop-b_obs_${CDATE}.nc4 - obsdataout: - engine: - type: H5File - obsfile: !ENV avhrr3_metop-b_diag_${CDATE}.nc4 - simulated variables: [brightnessTemperature] - channels: &all_channels 3-5 -geovals: - filename: !ENV avhrr3_metop-b_geoval_${CDATE}.nc4 -obs bias: - input file: !ENV avhrr3_metop-b_satbias_${GDATE}.nc4 - variational bc: - predictors: - - name: constant - - name: lapse_rate - order: 2 - tlapse: &avhrr3_metop-b_tlap !ENV avhrr3_metop-b_tlapmean_${GDATE}.txt - - name: lapse_rate - tlapse: *avhrr3_metop-b_tlap - - name: emissivity - - name: scan_angle - order: 4 - - name: scan_angle - order: 3 - - name: scan_angle - order: 2 - - name: scan_angle - -obs post filters: -# Step 1: Assign initial observation error -- filter: Perform Action - filter variables: - - name: brightnessTemperature - channels: *all_channels - action: - name: assign error - error parameter vector: [0.450, 0.550, 0.600] - -# Step 2: Wavenumber Check -- filter: RejectList - filter variables: - - name: brightnessTemperature - channels: 3 - where: - - variable: - name: MetaData/solarZenithAngle - maxvalue: 89.0 - - variable: - name: GeoVaLs/water_area_fraction - minvalue: 1.0e-12 - -# Step 3: Observation error inflation based on wavenumber -- filter: Perform Action - filter variables: - - name: brightnessTemperature - channels: *all_channels - action: - name: inflate error - inflation variable: - name: ObsFunction/ObsErrorFactorWavenumIR - channels: *all_channels - options: - channels: *all_channels - -# Step 4: Observation error inflation based on topography check -- filter: Perform Action - filter variables: - - name: brightnessTemperature - channels: *all_channels - action: - name: inflate error - inflation variable: - name: ObsFunction/ObsErrorFactorTopoRad - channels: *all_channels - options: - channels: *all_channels - sensor: *Sensor_ID - -# Step 5: Observation Range Sanity Check -- filter: Bounds Check - filter variables: - - name: brightnessTemperature - channels: *all_channels - minvalue: 0.00001 - maxvalue: 1000.0 - action: - name: reject - -# Step 6: Transmittance Top Check -- filter: Perform Action - filter variables: - - name: brightnessTemperature - channels: *all_channels - action: - name: inflate error - inflation variable: - name: ObsFunction/ObsErrorFactorTransmitTopRad - channels: *all_channels - options: - channels: *all_channels - -# Step 7: Cloud Detection Check -- filter: Bounds Check - filter variables: - - name: brightnessTemperature - channels: *all_channels - test variables: - - name: ObsFunction/CloudDetectMinResidualAVHRR - channels: *all_channels - options: - channels: *all_channels - use_flag: [ 1, 1, 1 ] - use_flag_clddet: [ 1, 1, 1 ] - obserr_dtempf: [0.50, 2.00, 4.00, 2.00, 4.00] - error parameter vector: [0.450, 0.550, 0.600] - maxvalue: 1.0e-12 - action: - name: reject - -# Step 8: NSST Retrieval Check -- filter: Bounds Check - filter variables: - - name: brightnessTemperature - channels: *all_channels - test variables: - - name: ObsFunction/NearSSTRetCheckIR - channels: *all_channels - options: - channels: *all_channels - use_flag: [ 1, 1, 1 ] - error parameter vector: [0.450, 0.550, 0.600] - maxvalue: 1.0e-12 - action: - name: reject - -# Step 9: Surface Jacobians Check -- filter: Perform Action - filter variables: - - name: brightnessTemperature - channels: *all_channels - action: - name: inflate error - inflation variable: - name: ObsFunction/ObsErrorFactorSurfJacobianRad - channels: *all_channels - options: - channels: *all_channels - sensor: *Sensor_ID - obserr_demisf: [0.01, 0.02, 0.03, 0.02, 0.03] - obserr_dtempf: [0.50, 2.00, 4.00, 2.00, 4.00] - -# Step 10: Gross check -- filter: Background Check - filter variables: - - name: brightnessTemperature - channels: *all_channels - function absolute threshold: - - name: ObsFunction/ObsErrorBoundIR - channels: *all_channels - options: - sensor: *Sensor_ID - channels: *all_channels - obserr_bound_latitude: - name: ObsFunction/ObsErrorFactorLatRad - options: - latitude_parameters: [25.0, 0.5, 0.04, 1.0] - obserr_bound_transmittop: - name: ObsFunction/ObsErrorFactorTransmitTopRad - channels: *all_channels - options: - channels: *all_channels - obserr_bound_max: [ 6.0, 6.0, 6.0 ] - error parameter vector: [0.450, 0.550, 0.600] - action: - name: reject -passedBenchmark: 9150 - - - diff --git a/parm/atm/obs/testing/avhrr3_n18.yaml b/parm/atm/obs/testing/avhrr3_n18.yaml deleted file mode 100644 index f07e2aba4..000000000 --- a/parm/atm/obs/testing/avhrr3_n18.yaml +++ /dev/null @@ -1,191 +0,0 @@ -obs operator: - name: CRTM - Absorbers: [H2O,O3,CO2] - obs options: - Sensor_ID: &Sensor_ID avhrr3_n18 - EndianType: little_endian - CoefficientPath: crtm/ -obs space: - name: avhrr3_n18 - obsdatain: - engine: - type: H5File - obsfile: !ENV avhrr3_n18_obs_${CDATE}.nc4 - obsdataout: - engine: - type: H5File - obsfile: !ENV avhrr3_n18_diag_${CDATE}.nc4 - simulated variables: [brightnessTemperature] - channels: &all_channels 3-5 -geovals: - filename: !ENV avhrr3_n18_geoval_${CDATE}.nc4 -obs bias: - input file: !ENV avhrr3_n18_satbias_${GDATE}.nc4 - variational bc: - predictors: - - name: constant - - name: lapse_rate - order: 2 - tlapse: &avhrr3_n18_tlap !ENV avhrr3_n18_tlapmean_${GDATE}.txt - - name: lapse_rate - tlapse: *avhrr3_n18_tlap - - name: emissivity - - name: scan_angle - order: 4 - - name: scan_angle - order: 3 - - name: scan_angle - order: 2 - - name: scan_angle - -obs post filters: -# Step 1: Assign initial observation error -- filter: Perform Action - filter variables: - - name: brightnessTemperature - channels: *all_channels - action: - name: assign error - error parameter vector: [0.600, 0.680, 0.720] - -# Step 2: Wavenumber Check -- filter: RejectList - filter variables: - - name: brightnessTemperature - channels: 3 - where: - - variable: - name: MetaData/solarZenithAngle - maxvalue: 89.0 - - variable: - name: GeoVaLs/water_area_fraction - minvalue: 1.0e-12 - -# Step 3: Observation error inflation based on wavenumber -- filter: Perform Action - filter variables: - - name: brightnessTemperature - channels: *all_channels - action: - name: inflate error - inflation variable: - name: ObsFunction/ObsErrorFactorWavenumIR - channels: *all_channels - options: - channels: *all_channels - -# Step 4: Observation error inflation based on topography check -- filter: Perform Action - filter variables: - - name: brightnessTemperature - channels: *all_channels - action: - name: inflate error - inflation variable: - name: ObsFunction/ObsErrorFactorTopoRad - channels: *all_channels - options: - channels: *all_channels - sensor: *Sensor_ID - -# Step 5: Observation Range Sanity Check -- filter: Bounds Check - filter variables: - - name: brightnessTemperature - channels: *all_channels - minvalue: 0.00001 - maxvalue: 1000.0 - action: - name: reject - -# Step 6: Transmittance Top Check -- filter: Perform Action - filter variables: - - name: brightnessTemperature - channels: *all_channels - action: - name: inflate error - inflation variable: - name: ObsFunction/ObsErrorFactorTransmitTopRad - channels: *all_channels - options: - channels: *all_channels - -# Step 7: Cloud Detection Check -- filter: Bounds Check - filter variables: - - name: brightnessTemperature - channels: *all_channels - test variables: - - name: ObsFunction/CloudDetectMinResidualAVHRR - channels: *all_channels - options: - channels: *all_channels - use_flag: [ 1, 1, 1 ] - use_flag_clddet: [ 1, 1, 1 ] - obserr_dtempf: [0.50, 2.00, 4.00, 2.00, 4.00] - error parameter vector: [0.600, 0.680, 0.720] - maxvalue: 1.0e-12 - action: - name: reject - -# Step 8: NSST Retrieval Check -- filter: Bounds Check - filter variables: - - name: brightnessTemperature - channels: *all_channels - test variables: - - name: ObsFunction/NearSSTRetCheckIR - channels: *all_channels - options: - channels: *all_channels - use_flag: [ 1, 1, 1 ] - error parameter vector: [0.600, 0.680, 0.720] - maxvalue: 1.0e-12 - action: - name: reject - -# Step 9: Surface Jacobians Check -- filter: Perform Action - filter variables: - - name: brightnessTemperature - channels: *all_channels - action: - name: inflate error - inflation variable: - name: ObsFunction/ObsErrorFactorSurfJacobianRad - channels: *all_channels - options: - channels: *all_channels - sensor: *Sensor_ID - obserr_demisf: [0.01, 0.02, 0.03, 0.02, 0.03] - obserr_dtempf: [0.50, 2.00, 4.00, 2.00, 4.00] - -# Step 10: Gross check -- filter: Background Check - filter variables: - - name: brightnessTemperature - channels: *all_channels - function absolute threshold: - - name: ObsFunction/ObsErrorBoundIR - channels: *all_channels - options: - sensor: *Sensor_ID - channels: *all_channels - obserr_bound_latitude: - name: ObsFunction/ObsErrorFactorLatRad - options: - latitude_parameters: [25.0, 0.5, 0.04, 1.0] - obserr_bound_transmittop: - name: ObsFunction/ObsErrorFactorTransmitTopRad - channels: *all_channels - options: - channels: *all_channels - obserr_bound_max: [ 6.0, 6.0, 6.0 ] - error parameter vector: [0.600, 0.680, 0.720] - action: - name: reject -passedBenchmark: 10523 - - - diff --git a/parm/atm/obs/testing/avhrr3_n19.yaml b/parm/atm/obs/testing/avhrr3_n19.yaml deleted file mode 100644 index 6a4c2eee5..000000000 --- a/parm/atm/obs/testing/avhrr3_n19.yaml +++ /dev/null @@ -1,191 +0,0 @@ -obs operator: - name: CRTM - Absorbers: [H2O,O3,CO2] - obs options: - Sensor_ID: &Sensor_ID avhrr3_n19 - EndianType: little_endian - CoefficientPath: crtm/ -obs space: - name: avhrr3_n19 - obsdatain: - engine: - type: H5File - obsfile: !ENV avhrr3_n19_obs_${CDATE}.nc4 - obsdataout: - engine: - type: H5File - obsfile: !ENV avhrr3_n19_diag_${CDATE}.nc4 - simulated variables: [brightnessTemperature] - channels: &all_channels 3-5 -geovals: - filename: !ENV avhrr3_n19_geoval_${CDATE}.nc4 -obs bias: - input file: !ENV avhrr3_n19_satbias_${GDATE}.nc4 - variational bc: - predictors: - - name: constant - - name: lapse_rate - order: 2 - tlapse: &avhrr3_n19_tlap !ENV avhrr3_n19_tlapmean_${GDATE}.txt - - name: lapse_rate - tlapse: *avhrr3_n19_tlap - - name: emissivity - - name: scan_angle - order: 4 - - name: scan_angle - order: 3 - - name: scan_angle - order: 2 - - name: scan_angle - -obs post filters: -# Step 1: Assign initial observation error -- filter: Perform Action - filter variables: - - name: brightnessTemperature - channels: *all_channels - action: - name: assign error - error parameter vector: [0.600, 0.680, 0.720] - -# Step 2: Wavenumber Check -- filter: RejectList - filter variables: - - name: brightnessTemperature - channels: 3 - where: - - variable: - name: MetaData/solarZenithAngle - maxvalue: 89.0 - - variable: - name: GeoVaLs/water_area_fraction - minvalue: 1.0e-12 - -# Step 3: Observation error inflation based on wavenumber -- filter: Perform Action - filter variables: - - name: brightnessTemperature - channels: *all_channels - action: - name: inflate error - inflation variable: - name: ObsFunction/ObsErrorFactorWavenumIR - channels: *all_channels - options: - channels: *all_channels - -# Step 4: Observation error inflation based on topography check -- filter: Perform Action - filter variables: - - name: brightnessTemperature - channels: *all_channels - action: - name: inflate error - inflation variable: - name: ObsFunction/ObsErrorFactorTopoRad - channels: *all_channels - options: - channels: *all_channels - sensor: *Sensor_ID - -# Step 5: Observation Range Sanity Check -- filter: Bounds Check - filter variables: - - name: brightnessTemperature - channels: *all_channels - minvalue: 0.00001 - maxvalue: 1000.0 - action: - name: reject - -# Step 6: Transmittance Top Check -- filter: Perform Action - filter variables: - - name: brightnessTemperature - channels: *all_channels - action: - name: inflate error - inflation variable: - name: ObsFunction/ObsErrorFactorTransmitTopRad - channels: *all_channels - options: - channels: *all_channels - -# Step 7: Cloud Detection Check -- filter: Bounds Check - filter variables: - - name: brightnessTemperature - channels: *all_channels - test variables: - - name: ObsFunction/CloudDetectMinResidualAVHRR - channels: *all_channels - options: - channels: *all_channels - use_flag: [ 1, 1, 1 ] - use_flag_clddet: [ 1, 1, 1 ] - obserr_dtempf: [0.50, 2.00, 4.00, 2.00, 4.00] - error parameter vector: [0.600, 0.680, 0.720] - maxvalue: 1.0e-12 - action: - name: reject - -# Step 8: NSST Retrieval Check -- filter: Bounds Check - filter variables: - - name: brightnessTemperature - channels: *all_channels - test variables: - - name: ObsFunction/NearSSTRetCheckIR - channels: *all_channels - options: - channels: *all_channels - use_flag: [ 1, 1, 1 ] - error parameter vector: [0.600, 0.680, 0.720] - maxvalue: 1.0e-12 - action: - name: reject - -# Step 9: Surface Jacobians Check -- filter: Perform Action - filter variables: - - name: brightnessTemperature - channels: *all_channels - action: - name: inflate error - inflation variable: - name: ObsFunction/ObsErrorFactorSurfJacobianRad - channels: *all_channels - options: - channels: *all_channels - sensor: *Sensor_ID - obserr_demisf: [0.01, 0.02, 0.03, 0.02, 0.03] - obserr_dtempf: [0.50, 2.00, 4.00, 2.00, 4.00] - -# Step 10: Gross check -- filter: Background Check - filter variables: - - name: brightnessTemperature - channels: *all_channels - function absolute threshold: - - name: ObsFunction/ObsErrorBoundIR - channels: *all_channels - options: - sensor: *Sensor_ID - channels: *all_channels - obserr_bound_latitude: - name: ObsFunction/ObsErrorFactorLatRad - options: - latitude_parameters: [25.0, 0.5, 0.04, 1.0] - obserr_bound_transmittop: - name: ObsFunction/ObsErrorFactorTransmitTopRad - channels: *all_channels - options: - channels: *all_channels - obserr_bound_max: [ 6.0, 6.0, 6.0 ] - error parameter vector: [0.600, 0.680, 0.720] - action: - name: reject -passedBenchmark: 9566 # GSI: 9567 - - - diff --git a/parm/atm/obs/testing/conv_ps.yaml b/parm/atm/obs/testing/conv_ps.yaml deleted file mode 100644 index 6c795e6c5..000000000 --- a/parm/atm/obs/testing/conv_ps.yaml +++ /dev/null @@ -1,277 +0,0 @@ -obs space: - name: surface_ps - obsdatain: - engine: - type: H5File - obsfile: !ENV conv_ps_obs_${CDATE}.nc4 - obsdataout: - engine: - type: H5File - obsfile: !ENV conv_ps_diag_${CDATE}.nc4 - simulated variables: [stationPressure] - -geovals: - filename: !ENV conv_ps_geoval_${CDATE}.nc4 - -obs operator: - name: SfcPCorrected - variables: - - name: stationPressure - da_psfc_scheme: GSI - station_altitude: height - geovar_sfc_geomz: surface_altitude - geovar_geomz: geopotential_height - -obs prior filters: -# Initial Error Assignments for SFC Observations -- filter: Perform Action - filter variables: - - name: stationPressure - where: - - variable: ObsType/stationPressure - is_in: [181] - action: - name: assign error - error function: - name: ObsFunction/ObsErrorModelStepwiseLinear - options: - round_to_the_nearest_integer: true - xvar: - name: ObsValue/stationPressure - xvals: [80000, 75000, 70000, 65000, 60000, 55000 ] - errors: [110, 120, 120, 120, 120, 1.0e+11] - -- filter: Perform Action - filter variables: - - name: stationPressure - where: - - variable: ObsType/stationPressure - is_in: [187] - action: - name: assign error - error function: - name: ObsFunction/ObsErrorModelStepwiseLinear - options: - round_to_the_nearest_integer: true - xvar: - 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 -- filter: Perform Action - filter variables: - - name: stationPressure - where: - - variable: ObsType/stationPressure - is_in: [180] - action: - name: assign error - error function: - name: ObsFunction/ObsErrorModelStepwiseLinear - options: - round_to_the_nearest_integer: true - xvar: - name: ObsValue/stationPressure - xvals: [60000, 55000 ] - errors: [ 130, 1.0e+11] - -- filter: Perform Action - filter variables: - - name: stationPressure - where: - - variable: ObsType/stationPressure - is_in: [183] - action: - name: assign error - error parameter: 1.0e+11 - -# Initial Error Assignments for Radiosonde -- filter: Perform Action - filter variables: - - name: stationPressure - where: - - variable: ObsType/stationPressure - is_in: [120] - action: - name: assign error - error function: - name: ObsFunction/ObsErrorModelStepwiseLinear - options: - round_to_the_nearest_integer: true - xvar: - name: ObsValue/stationPressure - xvals: [80000, 75000, 70000, 65000, 60000, 55000 ] - errors: [ 110, 120, 120, 120, 120, 1.0e+11] - -## Observation range sanity check -#- filter: Bounds Check -# filter variables: -# - name: stationPressure -# minvalue: 37499.0 -# maxvalue: 106999.0 -# action: -# name: reject - -# Reject all ObsType 183 -- filter: RejectList - where: - - variable: - name: ObsType/stationPressure - is_in: 183 - -## Reject surface pressure below 500 hPa -#- filter: Bounds Check -# filter variables: -# - name: stationPressure -# minvalue: 50000.00 -# action: -# name: reject - -#- filter: RejectList -# where: -# - variable: -# name: PreQC/stationPressure -# is_in: 4-15 - -# Inflate obs error based on obs type -- filter: Perform Action - filter variables: - - name: stationPressure - where: - - variable: PreQC/stationPressure - is_in: 3, 7 - action: - name: inflate error - inflation factor: 1.2 - -obs post filters: -# Calculate obs error inflation factors for duplicated observations at the same location -- filter: Variable Assignment - assignments: - - name: ObsErrorFactorDuplicateCheck/stationPressure - type: float - function: - name: ObsFunction/ObsErrorFactorDuplicateCheck - options: - use_air_pressure: false - variable: stationPressure - -# Reduce effective observation error based on obs type and subtype -# In this case: reduce effective obs error for buoy -- filter: Perform Action - filter variables: - - name: stationPressure - where: - - variable: - name: ObsType/stationPressure - is_in: 180 - - variable: - name: ObsSubType/stationPressure - is_in: 0 - action: - name: inflate error - inflation factor: 0.7 - -# Calculate obs error inflation factors for large discrepancies between model and observations -- filter: Variable Assignment - assignments: - - name: ObsErrorFactorSfcPressure/stationPressure - type: float - function: - name: ObsFunction/ObsErrorFactorSfcPressure - options: - geovar_sfc_geomz: surface_altitude - geovar_geomz: geopotential_height - station_altitude: height - -# Inflate surface pressure observation based on discrepancies between -# model and observations due to terrian -- filter: Perform Action - filter variables: - - name: stationPressure - action: - name: inflate error - inflation variable: - name: ObsErrorFactorSfcPressure/stationPressure - -- filter: Variable Assignment - assignments: - - name: DerivedMetaData/Innovation - type: float - function: - name: ObsFunction/Arithmetic - options: - variables: - - name: ObsValue/stationPressure - - name: HofX/stationPressure - coefs: [1, -1] - -- filter: Variable Assignment - assignments: - - name: DerivedMetaData/ObsErrorBoundSfcPressure1 - type: float - function: - name: ObsFunction/ObsErrorBoundConventional - options: - obsvar: stationPressure - obserr_bound_min: 100 - obserr_bound_max: 300 - obserr_bound_factor: 5.0 - -- filter: Background Check - filter variables: - - name: stationPressure - where: - - variable: PreQC/stationPressure - is_not_in: 3 - function absolute threshold: - - name: DerivedMetaData/ObsErrorBoundSfcPressure1 - action: - name: reject - -- filter: Variable Assignment - assignments: - - name: DerivedMetaData/ObsErrorBoundSfcPressure2 - type: float - function: - name: ObsFunction/ObsErrorBoundConventional - options: - obsvar: stationPressure - obserr_bound_min: 100 - obserr_bound_max: 300 - obserr_bound_factor: 3.5 - -- filter: Background Check - filter variables: - - name: stationPressure - where: - - variable: PreQC/stationPressure - is_in: 3 - function absolute threshold: - - name: DerivedMetaData/ObsErrorBoundSfcPressure2 - action: - name: reject - -# Inflate obs error based on duplicate check -- filter: Perform Action - filter variables: - - name: stationPressure - action: - name: inflate error - inflation variable: - name: ObsErrorFactorDuplicateCheck/stationPressure - -# Reject data based on PreUseFlag (usage in GSI) -- filter: Perform Action - filter variables: - - name: stationPressure - where: - - variable: PreUseFlag/stationPressure - is_not_in: 0, 1 - action: - name: reject - -# End of Filters -passedBenchmark: 85378 - diff --git a/parm/atm/obs/testing/conv_ps_noqc.yaml b/parm/atm/obs/testing/conv_ps_noqc.yaml deleted file mode 100644 index 8d469729f..000000000 --- a/parm/atm/obs/testing/conv_ps_noqc.yaml +++ /dev/null @@ -1,110 +0,0 @@ -obs space: - name: surface_ps - obsdatain: - engine: - type: H5File - obsfile: !ENV conv_ps_obs_${CDATE}.nc4 - obsdataout: - engine: - type: H5File - obsfile: !ENV conv_ps_diag_${CDATE}.nc4 - simulated variables: [stationPressure] - -geovals: - filename: !ENV conv_ps_geoval_${CDATE}.nc4 - -obs operator: - name: SfcPCorrected - variables: - - name: stationPressure - da_psfc_scheme: GSI - station_altitude: height - geovar_sfc_geomz: surface_altitude - geovar_geomz: geopotential_height - -obs prior filters: -# Initial Error Assignments for SFC Observations -- filter: Perform Action - filter variables: - - name: stationPressure - where: - - variable: ObsType/stationPressure - is_in: [181] - action: - name: assign error - error function: - name: ObsFunction/ObsErrorModelStepwiseLinear - options: - round_to_the_nearest_integer: true - xvar: - name: ObsValue/stationPressure - xvals: [80000, 75000, 70000, 65000, 60000, 55000 ] - errors: [110, 120, 120, 120, 120, 1.0e+11] - -- filter: Perform Action - filter variables: - - name: stationPressure - where: - - variable: ObsType/stationPressure - is_in: [187] - action: - name: assign error - error function: - name: ObsFunction/ObsErrorModelStepwiseLinear - options: - round_to_the_nearest_integer: true - xvar: - 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 -- filter: Perform Action - filter variables: - - name: stationPressure - where: - - variable: ObsType/stationPressure - is_in: [180] - action: - name: assign error - error function: - name: ObsFunction/ObsErrorModelStepwiseLinear - options: - round_to_the_nearest_integer: true - xvar: - name: ObsValue/stationPressure - xvals: [60000, 55000 ] - errors: [ 130, 1.0e+11] - -- filter: Perform Action - filter variables: - - name: stationPressure - where: - - variable: ObsType/stationPressure - is_in: [183] - action: - name: assign error - error parameter: 1.0e+11 - - # Initial Error Assignments for Radiosonde -- filter: Perform Action - filter variables: - - name: stationPressure - where: - - variable: ObsType/stationPressure - is_in: [120] - action: - name: assign error - error function: - name: ObsFunction/ObsErrorModelStepwiseLinear - options: - round_to_the_nearest_integer: true - xvar: - name: ObsValue/stationPressure - xvals: [80000, 75000, 70000, 65000, 60000, 55000 ] - errors: [ 110, 120, 120, 120, 120, 1.0e+11] - -passedBenchmark: 92824 # total: 92842; missing: 18 -#vector ref: GsiHofXBc -#tolerance: 1.e-4 - diff --git a/parm/atm/obs/testing/cris-fsr_n20.yaml b/parm/atm/obs/testing/cris-fsr_n20.yaml deleted file mode 100644 index da3339f6a..000000000 --- a/parm/atm/obs/testing/cris-fsr_n20.yaml +++ /dev/null @@ -1,489 +0,0 @@ -obs space: - name: cris-fsr_n20 - obsdatain: - engine: - type: H5File - obsfile: cris-fsr_n20_obs_${CDATE}_subset.nc4 - _source: gdas - obsdataout: - engine: - type: H5File - obsfile: cris-fsr_n20_diag_${CDATE}.nc4 - simulated variables: [brightnessTemperature] - channels: &cris-fsr_n20_channels 19, 24, 26, 27, 28, 31, 32, 33, 37, 39, 42, 44, 47, 49, 50, - 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, - 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, - 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, - 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, - 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, - 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, - 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, - 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, - 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, - 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 208, - 211, 216, 224, 234, 236, 238, 239, 242, 246, 248, 255, 264, 266, 268, - 275, 279, 283, 285, 291, 295, 301, 305, 311, 332, 342, 389, 400, 402, - 404, 406, 410, 427, 439, 440, 441, 445, 449, 455, 458, 461, 464, 467, - 470, 473, 475, 482, 486, 487, 490, 493, 496, 499, 501, 503, 505, 511, - 513, 514, 518, 519, 520, 522, 529, 534, 563, 568, 575, 592, 594, 596, - 598, 600, 602, 604, 611, 614, 616, 618, 620, 622, 626, 631, 638, 646, - 648, 652, 659, 673, 675, 678, 684, 688, 694, 700, 707, 710, 713, 714, - 718, 720, 722, 725, 728, 735, 742, 748, 753, 762, 780, 784, 798, 849, - 860, 862, 866, 874, 882, 890, 898, 906, 907, 908, 914, 937, 972, 973, - 978, 980, 981, 988, 995, 998, 1000, 1003, 1008, 1009, 1010, 1014, 1017, - 1018, 1020, 1022, 1024, 1026, 1029, 1030, 1032, 1034, 1037, 1038, 1041, - 1042, 1044, 1046, 1049, 1050, 1053, 1054, 1058, 1060, 1062, 1064, 1066, - 1069, 1076, 1077, 1080, 1086, 1091, 1095, 1101, 1109, 1112, 1121, 1128, - 1133, 1163, 1172, 1187, 1189, 1205, 1211, 1219, 1231, 1245, 1271, 1289, - 1300, 1313, 1316, 1325, 1329, 1346, 1347, 1473, 1474, 1491, 1499, 1553, - 1570, 1596, 1602, 1619, 1624, 1635, 1939, 1940, 1941, 1942, 1943, 1944, - 1945, 1946, 1947, 1948, 1949, 1950, 1951, 1952, 1953, 1954, 1955, 1956, - 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, - 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, - 1981, 1982, 1983, 1984, 1985, 1986, 1987, 2119, 2140, 2143, 2147, 2153, - 2158, 2161, 2168, 2171, 2175, 2182 -geovals: - filename: cris-fsr_n20_geoval_${CDATE}_subset.nc4 -obs operator: - name: CRTM - Absorbers: [H2O,O3,CO2] - obs options: - Sensor_ID: cris-fsr_n20 - EndianType: little_endian - CoefficientPath: crtm/ -obs bias: - input file: cris-fsr_n20_satbias_${GDATE}.nc4 - variational bc: - predictors: - - name: constant - - name: lapse_rate - order: 2 - tlapse: &cris-fsr_n20_tlap cris-fsr_n20_tlapmean_${GDATE}.txt - - name: lapse_rate - tlapse: *cris-fsr_n20_tlap - - name: emissivity - - name: scan_angle - order: 4 - - name: scan_angle - order: 3 - - name: scan_angle - order: 2 - - name: scan_angle -# covariance: -# minimal required obs number: 20 -# variance range: [1.0e-6, 10.0] -# step size: 1.0e-4 -# largest analysis variance: 10000.0 -# prior: -# inflation: -# ratio: 1.1 -# ratio for small dataset: 2.0 - -obs prior filters: -- filter: Perform Action - filter variables: - - name: brightnessTemperature - channels: *cris-fsr_n20_channels - action: - name: assign error - error parameter vector: &cris-fsr_n20_oberr [ - 1, 0.7, 0.7, 0.7, 0.7, 1.359, 0.6, 0.6, 0.6, 0.6, 0.6, 0.6, 0.6, 0.6, 1, - 0.6, 1, 0.6, 1, 0.5, 1, 0.5, 1, 0.6, 1, 0.5, 1, 0.5, 0.756, 0.5, 1, - 0.5, 1, 0.5, 1, 0.5, 1, 0.5, 1, 0.5, 1, 0.5, 1, 0.5, 0.6, 0.5, 1, 0.5, - 1, 0.5, 1, 0.5, 0.6, 0.5, 1, 0.45, 1, 0.45, 1, 0.45, 0.635, 0.45, 1, - 0.45, 1, 0.45, 0.735, 0.45, 0.878, 0.45, 0.696, 0.4, 2, 0.4, 1, 0.4, 1, - 0.4, 1, 0.4, 0.6, 0.35, 1, 0.35, 0.701, 0.35, 1, 0.35, 0.6, 0.35, - 0.663, 0.35, 1, 0.35, 1.083, 0.35, 0.6, 0.35, 1, 0.35, 0.6, 0.35, 0.6, - 0.35, 1, 0.3, 0.6, 0.3, 0.6, 0.3, 1, 0.3, 0.6, 0.3, 0.6, 0.3, 1, 0.3, - 0.6, 0.3, 1, 0.3, 0.773, 0.3, 0.6, 0.6, 0.6, 0.3, 0.813, 0.907, 0.802, - 0.3, 1.493, 1, 0.856, 0.3, 1, 0.6, 1, 0.3, 1, 1, 1, 0.3, 1, 1, 1, 0.3, - 1, 1, 1, 0.3, 1, 1, 0.3, 1, 1, 1, 0.3, 1, 1, 0.3, 2, 1, 0.3, 1, 0.3, 1, - 0.3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.3, 1, 1, 0.3, 1, 1, 1, 0.3, - 0.3, 0.3, 0.5, 1, 1, 2, 1, 0.5, 0.5, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 0.5, 1, 1, 1, 1, 1, 1, 0.5, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.5, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 0.5, 0.5, 1, 1, 1, 1, 1, 1, 1, 0.5, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1.5, 1.5, 1, 1, 1, 1, 1, 1.5, 1, 1, 1, 1, 1, 1, 1.5, 1, - 1, 1, 1.5, 1, 1, 1, 1, 1, 1, 1.5, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1.5, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ] - -obs post filters: -# Wavenumber Check -- filter: BlackList - filter variables: - - name: brightnessTemperature - channels: 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, - 1982, 1983, 1984, 1985, 1986, 1987, 2119, 2140, 2143, 2147, - 2153, 2158, 2161, 2168, 2171, 2175, 2182 - where: - - variable: - name: MetaData/solarZenithAngle - maxvalue: 88.9999 - - variable: - name: GeoVaLs/water_area_fraction - minvalue: 1.0e-12 - action: - name: reject -- filter: BlackList - filter variables: - - name: brightnessTemperature - channels: *cris-fsr_n20_channels - action: - name: inflate error - inflation variable: - name: ObsFunction/ObsErrorFactorWavenumIR - channels: *cris-fsr_n20_channels - options: - channels: *cris-fsr_n20_channels -# Observation Range Sanity Check -- filter: Bounds Check - filter variables: - - name: brightnessTemperature - channels: *cris-fsr_n20_channels - minvalue: 50.00001 - maxvalue: 449.99999 - action: - name: reject -# Topography Check -- filter: BlackList - filter variables: - - name: brightnessTemperature - channels: *cris-fsr_n20_channels - action: - name: inflate error - inflation variable: - name: ObsFunction/ObsErrorFactorTopoRad - channels: *cris-fsr_n20_channels - options: - channels: *cris-fsr_n20_channels - sensor: cris-fsr_n20 -# Transmittance Top Check -- filter: BlackList - filter variables: - - name: brightnessTemperature - channels: *cris-fsr_n20_channels - action: - name: inflate error - inflation variable: - name: ObsFunction/ObsErrorFactorTransmitTopRad - channels: *cris-fsr_n20_channels - options: - channels: *cris-fsr_n20_channels -# Cloud Detection Check -- filter: Bounds Check - filter variables: - - name: brightnessTemperature - channels: *cris-fsr_n20_channels - test variables: - - name: ObsFunction/CloudDetectMinResidualIR - channels: *cris-fsr_n20_channels - options: - channels: *cris-fsr_n20_channels - use_flag: [ -1, 1, 1, -1, 1, -1, 1, -1, 1, 1, - 1, 1, 1, 1, -1, 1, -1, 1, -1, 1, - -1, 1, -1, 1, -1, 1, -1, 1, -1, 1, - -1, 1, -1, 1, -1, 1, -1, 1, -1, 1, - -1, 1, -1, 1, -1, 1, -1, 1, -1, 1, - -1, 1, -1, 1, -1, 1, -1, 1, -1, 1, - -1, 1, -1, 1, -1, -1, -1, 1, -1, 1, - -1, 1, -1, 1, -1, 1, -1, 1, -1, 1, - -1, 1, -1, 1, -1, 1, -1, 1, -1, 1, - -1, 1, -1, 1, -1, 1, -1, 1, -1, 1, - -1, 1, -1, 1, -1, 1, -1, 1, -1, 1, - -1, 1, -1, 1, -1, 1, -1, 1, -1, 1, - -1, 1, -1, 1, -1, -1, -1, 1, -1, -1, - -1, 1, -1, -1, -1, 1, -1, -1, -1, 1, - -1, -1, -1, 1, -1, -1, -1, 1, -1, -1, - -1, 1, -1, -1, 1, -1, -1, -1, 1, -1, - -1, 1, -1, -1, 1, -1, 1, -1, 1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 1, 1, -1, -1, 1, -1, -1, -1, 1, 1, - 1, 1, -1, -1, -1, -1, 1, 1, -1, -1, - -1, -1, -1, -1, -1, -1, 1, -1, -1, -1, - -1, 1, -1, -1, -1, -1, -1, -1, 1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 1, 1, -1, -1, -1, -1, -1, -1, -1, - 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 1, 1, -1, -1, -1, -1, -1, 1, - -1, -1, -1, -1, -1, -1, 1, -1, -1, -1, - 1, -1, -1, -1, -1, -1, -1, 1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1] - use_flag_clddet: [ -1, 1, -1, -1, -1, -1, 1, -1, 1, -1, - 1, -1, 1, -1, -1, 1, -1, -1, -1, 1, - -1, -1, -1, 1, -1, -1, -1, 1, -1, -1, - -1, 1, -1, -1, -1, 1, -1, -1, -1, 1, - -1, -1, -1, 1, -1, -1, -1, 1, -1, -1, - -1, 1, -1, -1, -1, 1, -1, -1, -1, 1, - -1, -1, -1, 1, -1, -1, -1, 1, -1, -1, - -1, 1, -1, -1, -1, 1, -1, -1, -1, 1, - -1, -1, -1, 1, -1, -1, -1, 1, -1, -1, - -1, 1, -1, -1, -1, 1, -1, -1, -1, 1, - -1, -1, -1, 1, -1, -1, -1, 1, -1, -1, - -1, 1, -1, -1, -1, 1, -1, -1, -1, 1, - -1, -1, -1, 1, -1, -1, -1, 1, -1, -1, - -1, 1, -1, -1, -1, 1, -1, -1, -1, 1, - -1, -1, -1, 1, -1, -1, -1, 1, -1, -1, - -1, 1, -1, -1, 1, -1, -1, -1, 1, -1, - -1, 1, -1, -1, 1, -1, 1, -1, 1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 1, -1, -1, -1, -1, -1, -1, 1, -1, - 1, 1, -1, -1, -1, -1, 1, 1, -1, -1, - -1, -1, -1, -1, -1, -1, 1, -1, -1, -1, - -1, 1, -1, -1, -1, -1, -1, -1, 1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 1, 1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1] - obserr_dtempf: [0.50,2.00,4.00,2.00,4.00] - error parameter vector: *cris-fsr_n20_oberr - maxvalue: 1.0e-12 - action: - name: reject -# Surface Temperature Jacobian Check over Land -- filter: Bounds Check - filter variables: - - name: brightnessTemperature - channels: *cris-fsr_n20_channels - where: - - variable: - name: GeoVaLs/water_area_fraction - maxvalue: 0.99 - test variables: - - name: ObsDiag/brightness_temperature_jacobian_surface_temperature - channels: *cris-fsr_n20_channels - maxvalue: 0.2 -# NSST Retrieval Check -- filter: Bounds Check - filter variables: - - name: brightnessTemperature - channels: *cris-fsr_n20_channels - test variables: - - name: ObsFunction/NearSSTRetCheckIR - channels: *cris-fsr_n20_channels - options: - channels: *cris-fsr_n20_channels - use_flag: [ -1, 1, 1, -1, 1, -1, 1, -1, 1, 1, - 1, 1, 1, 1, -1, 1, -1, 1, -1, 1, - -1, 1, -1, 1, -1, 1, -1, 1, -1, 1, - -1, 1, -1, 1, -1, 1, -1, 1, -1, 1, - -1, 1, -1, 1, -1, 1, -1, 1, -1, 1, - -1, 1, -1, 1, -1, 1, -1, 1, -1, 1, - -1, 1, -1, 1, -1, -1, -1, 1, -1, 1, - -1, 1, -1, 1, -1, 1, -1, 1, -1, 1, - -1, 1, -1, 1, -1, 1, -1, 1, -1, 1, - -1, 1, -1, 1, -1, 1, -1, 1, -1, 1, - -1, 1, -1, 1, -1, 1, -1, 1, -1, 1, - -1, 1, -1, 1, -1, 1, -1, 1, -1, 1, - -1, 1, -1, 1, -1, -1, -1, 1, -1, -1, - -1, 1, -1, -1, -1, 1, -1, -1, -1, 1, - -1, -1, -1, 1, -1, -1, -1, 1, -1, -1, - -1, 1, -1, -1, 1, -1, -1, -1, 1, -1, - -1, 1, -1, -1, 1, -1, 1, -1, 1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 1, 1, -1, -1, 1, -1, -1, -1, 1, 1, - 1, 1, -1, -1, -1, -1, 1, 1, -1, -1, - -1, -1, -1, -1, -1, -1, 1, -1, -1, -1, - -1, 1, -1, -1, -1, -1, -1, -1, 1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 1, 1, -1, -1, -1, -1, -1, -1, -1, - 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 1, 1, -1, -1, -1, -1, -1, 1, - -1, -1, -1, -1, -1, -1, 1, -1, -1, -1, - 1, -1, -1, -1, -1, -1, -1, 1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1 ] - obserr_demisf: [0.01,0.02,0.03,0.02,0.03] - obserr_dtempf: [0.50,2.00,4.00,2.00,4.00] - maxvalue: 1.0e-12 - action: - name: reject -# Surface Jacobians Check -- filter: BlackList - filter variables: - - name: brightnessTemperature - channels: *cris-fsr_n20_channels - action: - name: inflate error - inflation variable: - name: ObsFunction/ObsErrorFactorSurfJacobianRad - channels: *cris-fsr_n20_channels - options: - channels: *cris-fsr_n20_channels - sensor: cris-fsr_n20 - obserr_demisf: [0.01, 0.02, 0.03, 0.02, 0.03] - obserr_dtempf: [0.50, 2.00, 4.00, 2.00, 4.00] -# Gross check -- filter: Background Check - filter variables: - - name: brightnessTemperature - channels: *cris-fsr_n20_channels - function absolute threshold: - - name: ObsFunction/ObsErrorBoundIR - channels: *cris-fsr_n20_channels - options: - channels: *cris-fsr_n20_channels - obserr_bound_latitude: - name: ObsFunction/ObsErrorFactorLatRad - options: - latitude_parameters: [25.0, 0.5, 0.04, 1.0] - obserr_bound_transmittop: - name: ObsFunction/ObsErrorFactorTransmitTopRad - channels: *cris-fsr_n20_channels - options: - channels: *cris-fsr_n20_channels - obserr_bound_max: [ 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, - 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, - 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, - 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, - 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, - 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, - 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, - 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, - 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, - 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, - 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, - 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, - 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, - 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, - 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, - 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, - 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, - 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, - 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, - 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, - 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, - 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, - 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, - 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, - 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, - 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, - 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, - 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, - 2.0, 2.0, 0.9, 0.9, 2.0, 2.0, 2.0, 2.0, 2.0, 0.9, - 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 0.9, 2.0, 2.0, 2.0, - 0.9, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 0.9, 2.0, 2.0, - 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, - 2.0, 2.0, 2.0, 2.0, 0.9, 2.0, 2.0, 2.0, 2.0, 2.0, - 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, - 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, - 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, - 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, - 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, - 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, - 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, - 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, - 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, - 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, - 2.0 ] - error parameter vector: *cris-fsr_n20_oberr - action: - name: reject -# Useflag Check -- filter: Bounds Check - filter variables: - - name: brightnessTemperature - channels: *cris-fsr_n20_channels - test variables: - - name: ObsFunction/ChannelUseflagCheckRad - channels: *cris-fsr_n20_channels - options: - channels: *cris-fsr_n20_channels - use_flag: [ -1, 1, 1, -1, 1, -1, 1, -1, 1, 1, - 1, 1, 1, 1, -1, 1, -1, 1, -1, 1, - -1, 1, -1, 1, -1, 1, -1, 1, -1, 1, - -1, 1, -1, 1, -1, 1, -1, 1, -1, 1, - -1, 1, -1, 1, -1, 1, -1, 1, -1, 1, - -1, 1, -1, 1, -1, 1, -1, 1, -1, 1, - -1, 1, -1, 1, -1, -1, -1, 1, -1, 1, - -1, 1, -1, 1, -1, 1, -1, 1, -1, 1, - -1, 1, -1, 1, -1, 1, -1, 1, -1, 1, - -1, 1, -1, 1, -1, 1, -1, 1, -1, 1, - -1, 1, -1, 1, -1, 1, -1, 1, -1, 1, - -1, 1, -1, 1, -1, 1, -1, 1, -1, 1, - -1, 1, -1, 1, -1, -1, -1, 1, -1, -1, - -1, 1, -1, -1, -1, 1, -1, -1, -1, 1, - -1, -1, -1, 1, -1, -1, -1, 1, -1, -1, - -1, 1, -1, -1, 1, -1, -1, -1, 1, -1, - -1, 1, -1, -1, 1, -1, 1, -1, 1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 1, 1, -1, -1, 1, -1, -1, -1, 1, 1, - 1, 1, -1, -1, -1, -1, 1, 1, -1, -1, - -1, -1, -1, -1, -1, -1, 1, -1, -1, -1, - -1, 1, -1, -1, -1, -1, -1, -1, 1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 1, 1, -1, -1, -1, -1, -1, -1, -1, - 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 1, 1, -1, -1, -1, -1, -1, 1, - -1, -1, -1, -1, -1, -1, 1, -1, -1, -1, - 1, -1, -1, -1, -1, -1, -1, 1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1 ] - minvalue: 1.0e-12 - action: - name: reject -passedBenchmark: 60671 diff --git a/parm/atm/obs/testing/cris-fsr_npp.yaml b/parm/atm/obs/testing/cris-fsr_npp.yaml deleted file mode 100644 index 43f52ac1e..000000000 --- a/parm/atm/obs/testing/cris-fsr_npp.yaml +++ /dev/null @@ -1,489 +0,0 @@ -obs space: - name: cris-fsr_npp - obsdatain: - engine: - type: H5File - obsfile: cris-fsr_npp_obs_${CDATE}_subset.nc4 - _source: gdas - obsdataout: - engine: - type: H5File - obsfile: cris-fsr_npp_diag_${CDATE}.nc4 - simulated variables: [brightnessTemperature] - channels: &cris-fsr_npp_channels 19, 24, 26, 27, 28, 31, 32, 33, 37, 39, 42, 44, 47, 49, 50, - 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, - 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, - 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, - 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, - 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, - 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, - 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, - 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, - 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, - 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 208, - 211, 216, 224, 234, 236, 238, 239, 242, 246, 248, 255, 264, 266, 268, - 275, 279, 283, 285, 291, 295, 301, 305, 311, 332, 342, 389, 400, 402, - 404, 406, 410, 427, 439, 440, 441, 445, 449, 455, 458, 461, 464, 467, - 470, 473, 475, 482, 486, 487, 490, 493, 496, 499, 501, 503, 505, 511, - 513, 514, 518, 519, 520, 522, 529, 534, 563, 568, 575, 592, 594, 596, - 598, 600, 602, 604, 611, 614, 616, 618, 620, 622, 626, 631, 638, 646, - 648, 652, 659, 673, 675, 678, 684, 688, 694, 700, 707, 710, 713, 714, - 718, 720, 722, 725, 728, 735, 742, 748, 753, 762, 780, 784, 798, 849, - 860, 862, 866, 874, 882, 890, 898, 906, 907, 908, 914, 937, 972, 973, - 978, 980, 981, 988, 995, 998, 1000, 1003, 1008, 1009, 1010, 1014, 1017, - 1018, 1020, 1022, 1024, 1026, 1029, 1030, 1032, 1034, 1037, 1038, 1041, - 1042, 1044, 1046, 1049, 1050, 1053, 1054, 1058, 1060, 1062, 1064, 1066, - 1069, 1076, 1077, 1080, 1086, 1091, 1095, 1101, 1109, 1112, 1121, 1128, - 1133, 1163, 1172, 1187, 1189, 1205, 1211, 1219, 1231, 1245, 1271, 1289, - 1300, 1313, 1316, 1325, 1329, 1346, 1347, 1473, 1474, 1491, 1499, 1553, - 1570, 1596, 1602, 1619, 1624, 1635, 1939, 1940, 1941, 1942, 1943, 1944, - 1945, 1946, 1947, 1948, 1949, 1950, 1951, 1952, 1953, 1954, 1955, 1956, - 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, - 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, - 1981, 1982, 1983, 1984, 1985, 1986, 1987, 2119, 2140, 2143, 2147, 2153, - 2158, 2161, 2168, 2171, 2175, 2182 -geovals: - filename: cris-fsr_npp_geoval_${CDATE}_subset.nc4 -obs operator: - name: CRTM - Absorbers: [H2O,O3,CO2] - obs options: - Sensor_ID: cris-fsr_npp - EndianType: little_endian - CoefficientPath: crtm/ -obs bias: - input file: cris-fsr_npp_satbias_${GDATE}.nc4 - variational bc: - predictors: - - name: constant - - name: lapse_rate - order: 2 - tlapse: &cris-fsr_npp_tlap cris-fsr_npp_tlapmean_${GDATE}.txt - - name: lapse_rate - tlapse: *cris-fsr_npp_tlap - - name: emissivity - - name: scan_angle - order: 4 - - name: scan_angle - order: 3 - - name: scan_angle - order: 2 - - name: scan_angle -# covariance: -# minimal required obs number: 20 -# variance range: [1.0e-6, 10.0] -# step size: 1.0e-4 -# largest analysis variance: 10000.0 -# prior: -# inflation: -# ratio: 1.1 -# ratio for small dataset: 2.0 - -obs prior filters: -- filter: Perform Action - filter variables: - - name: brightnessTemperature - channels: *cris-fsr_npp_channels - action: - name: assign error - error parameter vector: &cris-fsr_npp_oberr [ - 1, 0.7, 0.7, 0.7, 0.7, 1.359, 0.6, 0.6, 0.6, 0.6, 0.6, 0.6, 0.6, 0.6, 1, - 0.6, 1, 0.6, 1, 0.5, 1, 0.5, 1, 0.6, 1, 0.5, 1, 0.5, 0.756, 0.5, 1, - 0.5, 1, 0.5, 1, 0.5, 1, 0.5, 1, 0.5, 1, 0.5, 1, 0.5, 0.6, 0.5, 1, 0.5, - 1, 0.5, 1, 0.5, 0.6, 0.5, 1, 0.45, 1, 0.45, 1, 0.45, 0.635, 0.45, 1, - 0.45, 1, 0.45, 0.735, 0.45, 0.878, 0.45, 0.696, 0.4, 2, 0.4, 1, 0.4, 1, - 0.4, 1, 0.4, 0.6, 0.35, 1, 0.35, 0.701, 0.35, 1, 0.35, 0.6, 0.35, - 0.663, 0.35, 1, 0.35, 1.083, 0.35, 0.6, 0.35, 1, 0.35, 0.6, 0.35, 0.6, - 0.35, 1, 0.3, 0.6, 0.3, 0.6, 0.3, 1, 0.3, 0.6, 0.3, 0.6, 0.3, 1, 0.3, - 0.6, 0.3, 1, 0.3, 0.773, 0.3, 0.6, 0.6, 0.6, 0.3, 0.813, 0.907, 0.802, - 0.3, 1.493, 1, 0.856, 0.3, 1, 0.6, 1, 0.3, 1, 1, 1, 0.3, 1, 1, 1, 0.3, - 1, 1, 1, 0.3, 1, 1, 0.3, 1, 1, 1, 0.3, 1, 1, 0.3, 2, 1, 0.3, 1, 0.3, 1, - 0.3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.3, 1, 1, 0.3, 1, 1, 1, 0.3, - 0.3, 0.3, 0.5, 1, 1, 2, 1, 0.5, 0.5, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 0.5, 1, 1, 1, 1, 1, 1, 0.5, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.5, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 0.5, 0.5, 1, 1, 1, 1, 1, 1, 1, 0.5, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1.5, 1.5, 1, 1, 1, 1, 1, 1.5, 1, 1, 1, 1, 1, 1, 1.5, 1, - 1, 1, 1.5, 1, 1, 1, 1, 1, 1, 1.5, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1.5, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ] - -obs post filters: -# Wavenumber Check -- filter: BlackList - filter variables: - - name: brightnessTemperature - channels: 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, - 1982, 1983, 1984, 1985, 1986, 1987, 2119, 2140, 2143, 2147, - 2153, 2158, 2161, 2168, 2171, 2175, 2182 - where: - - variable: - name: MetaData/solarZenithAngle - maxvalue: 88.9999 - - variable: - name: GeoVaLs/water_area_fraction - minvalue: 1.0e-12 - action: - name: reject -- filter: BlackList - filter variables: - - name: brightnessTemperature - channels: *cris-fsr_npp_channels - action: - name: inflate error - inflation variable: - name: ObsFunction/ObsErrorFactorWavenumIR - channels: *cris-fsr_npp_channels - options: - channels: *cris-fsr_npp_channels -# Observation Range Sanity Check -- filter: Bounds Check - filter variables: - - name: brightnessTemperature - channels: *cris-fsr_npp_channels - minvalue: 50.00001 - maxvalue: 449.99999 - action: - name: reject -# Topography Check -- filter: BlackList - filter variables: - - name: brightnessTemperature - channels: *cris-fsr_npp_channels - action: - name: inflate error - inflation variable: - name: ObsFunction/ObsErrorFactorTopoRad - channels: *cris-fsr_npp_channels - options: - channels: *cris-fsr_npp_channels - sensor: cris-fsr_npp -# Transmittance Top Check -- filter: BlackList - filter variables: - - name: brightnessTemperature - channels: *cris-fsr_npp_channels - action: - name: inflate error - inflation variable: - name: ObsFunction/ObsErrorFactorTransmitTopRad - channels: *cris-fsr_npp_channels - options: - channels: *cris-fsr_npp_channels -# Cloud Detection Check -- filter: Bounds Check - filter variables: - - name: brightnessTemperature - channels: *cris-fsr_npp_channels - test variables: - - name: ObsFunction/CloudDetectMinResidualIR - channels: *cris-fsr_npp_channels - options: - channels: *cris-fsr_npp_channels - use_flag: [ -1, 1, 1, -1, 1, -1, 1, -1, 1, 1, - 1, 1, 1, 1, -1, 1, -1, 1, -1, 1, - -1, 1, -1, 1, -1, 1, -1, 1, -1, 1, - -1, 1, -1, 1, -1, 1, -1, 1, -1, 1, - -1, 1, -1, 1, -1, 1, -1, 1, -1, 1, - -1, 1, -1, 1, -1, 1, -1, 1, -1, 1, - -1, 1, -1, 1, -1, -1, -1, 1, -1, 1, - -1, 1, -1, 1, -1, 1, -1, 1, -1, 1, - -1, 1, -1, 1, -1, 1, -1, 1, -1, 1, - -1, 1, -1, 1, -1, 1, -1, 1, -1, 1, - -1, 1, -1, 1, -1, 1, -1, 1, -1, 1, - -1, 1, -1, 1, -1, 1, -1, 1, -1, 1, - -1, 1, -1, 1, -1, -1, -1, 1, -1, -1, - -1, 1, -1, -1, -1, 1, -1, -1, -1, 1, - -1, -1, -1, 1, -1, -1, -1, 1, -1, -1, - -1, 1, -1, -1, 1, -1, -1, -1, 1, -1, - -1, 1, -1, -1, 1, -1, 1, -1, 1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 1, 1, -1, -1, 1, -1, -1, -1, 1, 1, - 1, 1, -1, -1, -1, -1, 1, 1, -1, -1, - -1, -1, -1, -1, -1, -1, 1, -1, -1, -1, - -1, 1, -1, -1, -1, -1, -1, -1, 1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 1, 1, -1, -1, -1, -1, -1, -1, -1, - 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 1, 1, -1, -1, -1, -1, -1, 1, - -1, -1, -1, -1, -1, -1, 1, -1, -1, -1, - 1, -1, -1, -1, -1, -1, -1, 1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1] - use_flag_clddet: [ -1, 1, -1, -1, -1, -1, 1, -1, 1, -1, - 1, -1, 1, -1, -1, 1, -1, -1, -1, 1, - -1, -1, -1, 1, -1, -1, -1, 1, -1, -1, - -1, 1, -1, -1, -1, 1, -1, -1, -1, 1, - -1, -1, -1, 1, -1, -1, -1, 1, -1, -1, - -1, 1, -1, -1, -1, 1, -1, -1, -1, 1, - -1, -1, -1, 1, -1, -1, -1, 1, -1, -1, - -1, 1, -1, -1, -1, 1, -1, -1, -1, 1, - -1, -1, -1, 1, -1, -1, -1, 1, -1, -1, - -1, 1, -1, -1, -1, 1, -1, -1, -1, 1, - -1, -1, -1, 1, -1, -1, -1, 1, -1, -1, - -1, 1, -1, -1, -1, 1, -1, -1, -1, 1, - -1, -1, -1, 1, -1, -1, -1, 1, -1, -1, - -1, 1, -1, -1, -1, 1, -1, -1, -1, 1, - -1, -1, -1, 1, -1, -1, -1, 1, -1, -1, - -1, 1, -1, -1, 1, -1, -1, -1, 1, -1, - -1, 1, -1, -1, 1, -1, 1, -1, 1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 1, -1, -1, -1, -1, -1, -1, 1, -1, - 1, 1, -1, -1, -1, -1, 1, 1, -1, -1, - -1, -1, -1, -1, -1, -1, 1, -1, -1, -1, - -1, 1, -1, -1, -1, -1, -1, -1, 1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 1, 1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1] - obserr_dtempf: [0.50,2.00,4.00,2.00,4.00] - error parameter vector: *cris-fsr_npp_oberr - maxvalue: 1.0e-12 - action: - name: reject -# Surface Temperature Jacobian Check over Land -- filter: Bounds Check - filter variables: - - name: brightnessTemperature - channels: *cris-fsr_npp_channels - where: - - variable: - name: GeoVaLs/water_area_fraction - maxvalue: 0.99 - test variables: - - name: ObsDiag/brightness_temperature_jacobian_surface_temperature - channels: *cris-fsr_npp_channels - maxvalue: 0.2 -# NSST Retrieval Check -- filter: Bounds Check - filter variables: - - name: brightnessTemperature - channels: *cris-fsr_npp_channels - test variables: - - name: ObsFunction/NearSSTRetCheckIR - channels: *cris-fsr_npp_channels - options: - channels: *cris-fsr_npp_channels - use_flag: [ -1, 1, 1, -1, 1, -1, 1, -1, 1, 1, - 1, 1, 1, 1, -1, 1, -1, 1, -1, 1, - -1, 1, -1, 1, -1, 1, -1, 1, -1, 1, - -1, 1, -1, 1, -1, 1, -1, 1, -1, 1, - -1, 1, -1, 1, -1, 1, -1, 1, -1, 1, - -1, 1, -1, 1, -1, 1, -1, 1, -1, 1, - -1, 1, -1, 1, -1, -1, -1, 1, -1, 1, - -1, 1, -1, 1, -1, 1, -1, 1, -1, 1, - -1, 1, -1, 1, -1, 1, -1, 1, -1, 1, - -1, 1, -1, 1, -1, 1, -1, 1, -1, 1, - -1, 1, -1, 1, -1, 1, -1, 1, -1, 1, - -1, 1, -1, 1, -1, 1, -1, 1, -1, 1, - -1, 1, -1, 1, -1, -1, -1, 1, -1, -1, - -1, 1, -1, -1, -1, 1, -1, -1, -1, 1, - -1, -1, -1, 1, -1, -1, -1, 1, -1, -1, - -1, 1, -1, -1, 1, -1, -1, -1, 1, -1, - -1, 1, -1, -1, 1, -1, 1, -1, 1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 1, 1, -1, -1, 1, -1, -1, -1, 1, 1, - 1, 1, -1, -1, -1, -1, 1, 1, -1, -1, - -1, -1, -1, -1, -1, -1, 1, -1, -1, -1, - -1, 1, -1, -1, -1, -1, -1, -1, 1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 1, 1, -1, -1, -1, -1, -1, -1, -1, - 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 1, 1, -1, -1, -1, -1, -1, 1, - -1, -1, -1, -1, -1, -1, 1, -1, -1, -1, - 1, -1, -1, -1, -1, -1, -1, 1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1 ] - obserr_demisf: [0.01,0.02,0.03,0.02,0.03] - obserr_dtempf: [0.50,2.00,4.00,2.00,4.00] - maxvalue: 1.0e-12 - action: - name: reject -# Surface Jacobians Check -- filter: BlackList - filter variables: - - name: brightnessTemperature - channels: *cris-fsr_npp_channels - action: - name: inflate error - inflation variable: - name: ObsFunction/ObsErrorFactorSurfJacobianRad - channels: *cris-fsr_npp_channels - options: - channels: *cris-fsr_npp_channels - sensor: cris-fsr_npp - obserr_demisf: [0.01, 0.02, 0.03, 0.02, 0.03] - obserr_dtempf: [0.50, 2.00, 4.00, 2.00, 4.00] -# Gross check -- filter: Background Check - filter variables: - - name: brightnessTemperature - channels: *cris-fsr_npp_channels - function absolute threshold: - - name: ObsFunction/ObsErrorBoundIR - channels: *cris-fsr_npp_channels - options: - channels: *cris-fsr_npp_channels - obserr_bound_latitude: - name: ObsFunction/ObsErrorFactorLatRad - options: - latitude_parameters: [25.0, 0.5, 0.04, 1.0] - obserr_bound_transmittop: - name: ObsFunction/ObsErrorFactorTransmitTopRad - channels: *cris-fsr_npp_channels - options: - channels: *cris-fsr_npp_channels - obserr_bound_max: [ 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, - 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, - 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, - 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, - 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, - 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, - 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, - 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, - 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, - 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, - 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, - 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, - 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, - 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, - 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, - 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, - 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, - 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, - 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, - 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, - 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, - 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, - 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, - 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, - 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, - 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, - 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, - 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, - 2.0, 2.0, 0.9, 0.9, 2.0, 2.0, 2.0, 2.0, 2.0, 0.9, - 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 0.9, 2.0, 2.0, 2.0, - 0.9, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 0.9, 2.0, 2.0, - 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, - 2.0, 2.0, 2.0, 2.0, 0.9, 2.0, 2.0, 2.0, 2.0, 2.0, - 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, - 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, - 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, - 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, - 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, - 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, - 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, - 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, - 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, - 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, - 2.0 ] - error parameter vector: *cris-fsr_npp_oberr - action: - name: reject -# Useflag Check -- filter: Bounds Check - filter variables: - - name: brightnessTemperature - channels: *cris-fsr_npp_channels - test variables: - - name: ObsFunction/ChannelUseflagCheckRad - channels: *cris-fsr_npp_channels - options: - channels: *cris-fsr_npp_channels - use_flag: [ -1, 1, 1, -1, 1, -1, 1, -1, 1, 1, - 1, 1, 1, 1, -1, 1, -1, 1, -1, 1, - -1, 1, -1, 1, -1, 1, -1, 1, -1, 1, - -1, 1, -1, 1, -1, 1, -1, 1, -1, 1, - -1, 1, -1, 1, -1, 1, -1, 1, -1, 1, - -1, 1, -1, 1, -1, 1, -1, 1, -1, 1, - -1, 1, -1, 1, -1, -1, -1, 1, -1, 1, - -1, 1, -1, 1, -1, 1, -1, 1, -1, 1, - -1, 1, -1, 1, -1, 1, -1, 1, -1, 1, - -1, 1, -1, 1, -1, 1, -1, 1, -1, 1, - -1, 1, -1, 1, -1, 1, -1, 1, -1, 1, - -1, 1, -1, 1, -1, 1, -1, 1, -1, 1, - -1, 1, -1, 1, -1, -1, -1, 1, -1, -1, - -1, 1, -1, -1, -1, 1, -1, -1, -1, 1, - -1, -1, -1, 1, -1, -1, -1, 1, -1, -1, - -1, 1, -1, -1, 1, -1, -1, -1, 1, -1, - -1, 1, -1, -1, 1, -1, 1, -1, 1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 1, 1, -1, -1, 1, -1, -1, -1, 1, 1, - 1, 1, -1, -1, -1, -1, 1, 1, -1, -1, - -1, -1, -1, -1, -1, -1, 1, -1, -1, -1, - -1, 1, -1, -1, -1, -1, -1, -1, 1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 1, 1, -1, -1, -1, -1, -1, -1, -1, - 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 1, 1, -1, -1, -1, -1, -1, 1, - -1, -1, -1, -1, -1, -1, 1, -1, -1, -1, - 1, -1, -1, -1, -1, -1, -1, 1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1 ] - minvalue: 1.0e-12 - action: - name: reject -passedBenchmark: 55416 diff --git a/parm/atm/obs/testing/gps_bend.yaml b/parm/atm/obs/testing/gps_bend.yaml deleted file mode 100644 index 5cf29c7e8..000000000 --- a/parm/atm/obs/testing/gps_bend.yaml +++ /dev/null @@ -1,86 +0,0 @@ -obs space: - name: gnssrobndnbam - obsdatain: - engine: - type: H5File - obsfile: !ENV gps_bend_obs_${CDATE}.nc4 - obsgrouping: - group variables: [ 'sequenceNumber' ] - sort variable: 'impactHeightRO' - sort order: 'ascending' - obsdataout: - engine: - type: H5File - obsfile: !ENV gps_bend_diag_${CDATE}.nc4 - simulated variables: [bendingAngle] -geovals: - filename: !ENV gps_bend_geoval_${CDATE}.nc4 -obs operator: - name: GnssroBndNBAM - obs options: - use_compress: 1 - sr_steps: 2 - vertlayer: full - super_ref_qc: NBAM -obs filters: -#1. gpstop -- filter: Domain Check - filter variables: - - name: bendingAngle - where: - - variable: - name: MetaData/impactHeightRO - minvalue: 0 - maxvalue: 55000.1 - action: - name: reject -#2. commgpstop -- filter: Bounds Check - filter variables: - - name: bendingAngle - where: - - variable: - name: MetaData/satelliteIdentifier - is_in: 265,266,267,268,269 - test variables: - - name: MetaData/impactHeightRO - maxvalue: 45000.1 - action: - name: reject -#3. metop below 8 km -- filter: Bounds Check - filter variables: - - name: bendingAngle - where: - - variable: - name: MetaData/satelliteIdentifier - is_in: 3-5 - test variables: - - name: MetaData/impactHeightRO - minvalue: 8000.1 - action: - name: reject -#4. assign obs error -- filter: ROobserror - filter variables: - - name: bendingAngle - errmodel: NBAM -#5. RONBAM cut off check -- filter: Background Check RONBAM - filter variables: - - name: bendingAngle -#6. Obs error inflate -- filter: Background Check RONBAM - filter variables: - - name: bendingAngle - action: - name: RONBAMErrInflate -#7. Background check -#- filter: Background Check -# filter variables: -# - name: bendingAngle -# threshold: 10 -# action: -# name: reject - -passedBenchmark: 393457 diff --git a/parm/atm/obs/testing/iasi_metop-a.yaml b/parm/atm/obs/testing/iasi_metop-a.yaml deleted file mode 100644 index 477c1c871..000000000 --- a/parm/atm/obs/testing/iasi_metop-a.yaml +++ /dev/null @@ -1,624 +0,0 @@ -obs space: - name: iasi_metop-a - obsdatain: - engine: - type: H5File - obsfile: iasi_metop-a_obs_${CDATE}_subset.nc4 - _source: gdas - obsdataout: - engine: - type: H5File - obsfile: iasi_metop-a_diag_${CDATE}.nc4 - simulated variables: [brightnessTemperature] - channels: &iasi_metop-a_channels 16, 29, 32, 35, 38, 41, 44, 47, 49, 50, 51, 53, - 55, 56, 57, 59, 61, 62, 63, 66, 68, 70, 72, 74, 76, 78, 79, 81, 82, 83, - 84, 85, 86, 87, 89, 92, 93, 95, 97, 99, 101, 103, 104, 106, 109, 110, - 111, 113, 116, 119, 122, 125, 128, 131, 133, 135, 138, 141, 144, 146, - 148, 150, 151, 154, 157, 159, 160, 161, 163, 167, 170, 173, 176, 179, - 180, 185, 187, 191, 193, 197, 199, 200, 202, 203, 205, 207, 210, 212, - 213, 214, 217, 218, 219, 222, 224, 225, 226, 228, 230, 231, 232, 236, - 237, 239, 243, 246, 249, 252, 254, 259, 260, 262, 265, 267, 269, 275, - 279, 282, 285, 294, 296, 299, 300, 303, 306, 309, 313, 320, 323, 326, - 327, 329, 332, 335, 345, 347, 350, 354, 356, 360, 363, 366, 371, 372, - 373, 375, 377, 379, 381, 383, 386, 389, 398, 401, 404, 405, 407, 408, - 410, 411, 414, 416, 418, 423, 426, 428, 432, 433, 434, 439, 442, 445, - 450, 457, 459, 472, 477, 483, 509, 515, 546, 552, 559, 566, 571, 573, - 578, 584, 594, 625, 646, 662, 668, 705, 739, 756, 797, 867, 906, 921, - 1027, 1046, 1090, 1098, 1121, 1133, 1173, 1191, 1194, 1222, 1271, 1283, - 1338, 1409, 1414, 1420, 1424, 1427, 1430, 1434, 1440, 1442, 1445, 1450, - 1454, 1460, 1463, 1469, 1474, 1479, 1483, 1487, 1494, 1496, 1502, 1505, - 1509, 1510, 1513, 1518, 1521, 1526, 1529, 1532, 1536, 1537, 1541, 1545, - 1548, 1553, 1560, 1568, 1574, 1579, 1583, 1585, 1587, 1606, 1626, 1639, - 1643, 1652, 1658, 1659, 1666, 1671, 1675, 1681, 1694, 1697, 1710, 1786, - 1791, 1805, 1839, 1884, 1913, 1946, 1947, 1991, 2019, 2094, 2119, 2213, - 2239, 2271, 2289, 2321, 2333, 2346, 2349, 2352, 2359, 2367, 2374, 2398, - 2426, 2562, 2701, 2741, 2745, 2760, 2819, 2889, 2907, 2910, 2919, 2921, - 2939, 2944, 2945, 2948, 2951, 2958, 2971, 2977, 2985, 2988, 2990, 2991, - 2993, 3002, 3008, 3014, 3027, 3029, 3030, 3036, 3047, 3049, 3052, 3053, - 3055, 3058, 3064, 3069, 3087, 3093, 3098, 3105, 3107, 3110, 3116, 3127, - 3129, 3136, 3146, 3151, 3160, 3165, 3168, 3175, 3178, 3189, 3207, 3228, - 3244, 3248, 3252, 3256, 3263, 3281, 3295, 3303, 3309, 3312, 3322, 3326, - 3354, 3366, 3375, 3378, 3411, 3416, 3432, 3438, 3440, 3442, 3444, 3446, - 3448, 3450, 3452, 3454, 3458, 3467, 3476, 3484, 3491, 3497, 3499, 3504, - 3506, 3509, 3518, 3527, 3555, 3575, 3577, 3580, 3582, 3586, 3589, 3599, - 3610, 3626, 3638, 3646, 3653, 3658, 3661, 3673, 3689, 3700, 3710, 3726, - 3763, 3814, 3841, 3888, 4032, 4059, 4068, 4082, 4095, 4160, 4234, 4257, - 4411, 4498, 4520, 4552, 4567, 4608, 4646, 4698, 4808, 4849, 4920, 4939, - 4947, 4967, 4991, 4996, 5015, 5028, 5056, 5128, 5130, 5144, 5170, 5178, - 5183, 5188, 5191, 5368, 5371, 5379, 5381, 5383, 5397, 5399, 5401, 5403, - 5405, 5446, 5455, 5472, 5480, 5483, 5485, 5492, 5497, 5502, 5507, 5509, - 5517, 5528, 5558, 5697, 5714, 5749, 5766, 5785, 5798, 5799, 5801, 5817, - 5833, 5834, 5836, 5849, 5851, 5852, 5865, 5869, 5881, 5884, 5897, 5900, - 5916, 5932, 5948, 5963, 5968, 5978, 5988, 5992, 5994, 5997, 6003, 6008, - 6023, 6026, 6039, 6053, 6056, 6067, 6071, 6082, 6085, 6098, 6112, 6126, - 6135, 6140, 6149, 6154, 6158, 6161, 6168, 6174, 6182, 6187, 6205, 6209, - 6213, 6317, 6339, 6342, 6366, 6381, 6391, 6489, 6962, 6966, 6970, 6975, - 6977, 6982, 6985, 6987, 6989, 6991, 6993, 6995, 6997, 6999, 7000, 7004, - 7008, 7013, 7016, 7021, 7024, 7027, 7029, 7032, 7038, 7043, 7046, 7049, - 7069, 7072, 7076, 7081, 7084, 7089, 7099, 7209, 7222, 7231, 7235, 7247, - 7267, 7269, 7284, 7389, 7419, 7423, 7424, 7426, 7428, 7431, 7436, 7444, - 7475, 7549, 7584, 7665, 7666, 7831, 7836, 7853, 7865, 7885, 7888, 7912, - 7950, 7972, 7980, 7995, 8007, 8015, 8055, 8078 -geovals: - filename: iasi_metop-a_geoval_${CDATE}_subset.nc4 -obs operator: - name: CRTM - Absorbers: [H2O,O3,CO2] - obs options: - Sensor_ID: iasi_metop-a - EndianType: little_endian - CoefficientPath: crtm/ -obs bias: - input file: iasi_metop-a_satbias_${GDATE}.nc4 - variational bc: - predictors: - - name: constant - - name: lapse_rate - order: 2 - tlapse: &iasi_metop-a_tlap iasi_metop-a_tlapmean_${GDATE}.txt - - name: lapse_rate - tlapse: *iasi_metop-a_tlap - - name: emissivity - - name: scan_angle - order: 4 - - name: scan_angle - order: 3 - - name: scan_angle - order: 2 - - name: scan_angle -# covariance: -# minimal required obs number: 20 -# variance range: [1.0e-6, 10.0] -# step size: 1.0e-4 -# largest analysis variance: 10000.0 -# prior: -# inflation: -# ratio: 1.1 -# ratio for small dataset: 2.0 - -obs prior filters: -- filter: Perform Action - filter variables: - - name: brightnessTemperature - channels: *iasi_metop-a_channels - action: - name: assign error - error parameter vector: &iasi_metop-a_oberr [ 1.38, 0.81, 0.75, 0.79, 0.72, 0.74, 0.68, 0.72, 0.65, 0.65, - 0.65, 0.69, 0.64, 0.64, 0.65, 0.67, 0.62, 0.61, 0.62, 0.64, 0.59, 0.76, - 1.22, 0.78, 0.64, 0.62, 0.61, 0.69, 0.65, 0.59, 0.61, 0.59, 0.68, 0.62, - 0.68, 4.38, 3.05, 2.31, 1.56, 1.33, 1.58, 0.93, 1.67, 0.72, 0.57, 0.58, - 0.55, 0.68, 0.59, 0.68, 0.59, 0.65, 0.58, 0.62, 0.64, 0.58, 0.64, 0.55, - 0.64, 0.5, 0.82, 0.59, 0.62, 0.51, 0.64, 0.52, 0.51, 0.51, 0.76, 0.52, - 0.57, 0.55, 0.69, 0.58, 0.65, 0.61, 0.59, 0.64, 0.76, 0.72, 1.05, 0.75, - 0.51, 0.65, 1.3, 0.69, 0.93, 1.49, 1.12, 0.68, 0.66, 0.67, 0.59, 0.59, - 0.69, 0.67, 0.64, 0.62, 0.72, 0.69, 0.66, 0.79, 0.78, 0.74, 0.88, 0.77, - 0.88, 0.86, 1, 0.87, 0.85, 0.88, 0.84, 0.84, 0.84, 0.8, 0.8, 0.87, - 0.98, 0.52, 0.65, 0.69, 0.61, 0.6, 0.67, 0.79, 0.62, 0.66, 0.7, 0.65, - 0.62, 0.61, 0.62, 0.53, 0.6, 0.68, 0.95, 0.63, 0.97, 0.65, 0.98, 0.58, - 0.73, 0.65, 0.85, 0.99, 0.76, 0.85, 0.97, 0.77, 0.62, 0.63, 1.21, 1.41, - 1.55, 1.78, 1.35, 1.14, 1.69, 1.79, 1.46, 1.63, 1.94, 2.01, 1.24, 1.76, - 1.26, 1.47, 1.9, 1.66, 2.13, 1.49, 1.52, 1.55, 1.96, 2.31, 2.33, 2.32, - 2.31, 2.33, 2.23, 2.33, 1.84, 2.29, 2.28, 2.28, 2.28, 2.26, 2.26, 2.26, - 2.27, 2.24, 2.23, 2.24, 2.26, 2.28, 2.28, 2.3, 2.15, 2.31, 2.37, 2.27, - 2.29, 2.29, 2.23, 2.28, 2.32, 2.32, 2.31, 2.32, 2.32, 2.31, 2.31, 2.28, - 2.29, 2.28, 2.26, 2.29, 2.27, 2.26, 2.25, 2.27, 2.24, 2.21, 2.24, 2.17, - 2.18, 2.17, 2.21, 1.99, 2.16, 2.2, 2.13, 2.12, 2.13, 2.1, 2.12, 2.11, - 2.09, 2.09, 2.08, 2.09, 2.04, 2.04, 2.1, 2.01, 2.05, 2.03, 2.06, 1.98, - 1.95, 1.94, 1.91, 1.7, 1.76, 1.77, 1.83, 2.04, 1.91, 1.99, 1.99, 2.07, - 2.02, 2.04, 2.1, 2.06, 2.18, 2.21, 2.24, 2.23, 2.23, 1.98, 2.2, 2.18, - 2.18, 2.21, 2.23, 2.24, 2.24, 2.25, 1.8, 2.24, 1.73, 1.73, 2.27, 1.67, - 2.21, 1.72, 2.23, 2.23, 2.23, 2.24, 2.23, 2.12, 2.17, 1.74, 2.02, 1.88, - 1.67, 1.73, 1.83, 1.82, 1.73, 1.83, 2.19, 1.84, 1.89, 1.6, 1.71, 1.86, - 1.85, 1.84, 1.87, 1.91, 1.52, 1.95, 1.87, 1.89, 1.91, 1.91, 1.93, 1.9, - 1.91, 1.9, 1.89, 1.89, 1.91, 1.9, 1.91, 1.91, 1.91, 1.93, 1.94, 1.91, - 1.92, 1.77, 1.91, 1.95, 1.19, 1.96, 1.98, 1.94, 1.55, 1.91, 1.92, 1.92, - 1.97, 1.93, 1.99, 1.86, 1.12, 1.93, 1.92, 1.95, 1.85, 1.84, 1.91, 1.12, - 1.82, 1.82, 1.95, 1.24, 1.94, 1.96, 1.21, 1.83, 1.96, 1.36, 1.96, 1.82, - 1.92, 1.68, 1.93, 1.23, 1.96, 1.93, 1.86, 1.41, 1.16, 1.6, 1.25, 1.2, - 1.65, 1.66, 1.87, 1.94, 1.96, 1.91, 1.25, 1.93, 1.91, 1.7, 0.99, 1.81, - 1.92, 1.95, 1.5, 1.47, 1.15, 1.58, 1.18, 1.82, 1.13, 1.83, 1.91, 1.26, - 1.27, 1.91, 1.45, 1.6, 1.29, 1.94, 1.94, 1.23, 1.95, 1.21, 1.94, 1.86, - 1.9, 1.33, 1.75, 2.02, 1.98, 2.03, 1.83, 1.5, 2.04, 2.02, 1.9, 2, 2.02, - 1.95, 1.93, 1.95, 1.95, 1.99, 2, 1.94, 1.96, 1.86, 1.92, 1.88, 1.86, - 1.84, 1.87, 1.77, 1.89, 1.89, 1.88, 1.94, 1.82, 1.79, 1.86, 2.06, 2.33, - 1.88, 1.86, 1.81, 1.8, 1.8, 1.86, 1.9, 2, 2.06, 2.1, 2.2, 2, 2.16, - 1.98, 1.8, 1.8, 1.85, 1.75, 2.04, 2.19, 2.14, 2.19, 1.86, 2.1, 2.11, - 2.18, 2.03, 2.28, 2.19, 2.26, 2.26, 2.21, 2.21, 2.26, 2.33, 2.27, 2.21, - 2.12, 2.23, 2.26, 2.25, 1.88, 2.26, 2.24, 2.36, 2.29, 2.35, 2.3, 2.27, - 2.08, 2.05, 2.27, 2.28, 2.27, 2.28, 1.97, 2.25, 2.25, 2.25, 2.31, 2.28, - 2.27, 2.13, 2.24, 2.28, 2.28, 2.41, 2.34, 9.32, 2.28, 2.38, 2.27, 2.27, - 2.39, 2.11, 2.09, 2.1, 2.06, 2.12, 2.08, 2, 1.93, 2.02, 2.55, 1.54, - 1.64, 1.51, 1.55, 2.82, 2.92, 2.55, 2.37, 1.85, 1.6, 1.72, 1.74, 1.79, - 1.9, 1.94, 2, 2.04, 2.08, 2.12, 2.13, 2.16, 2.18, 2.18, 2.2, 2.2, 2.41, - 2.39, 2.38, 2.4, 2.42, 2.41, 2.43, 2.45, 2.43, 2.45, 2.43, 2.4, 2.44, - 2.4, 2.42, 2.43, 2.45, 2.45, 2.45, 2.46, 2.45, 2.45, 2.43, 2.51, 2.48, - 2.48, 2.53, 2.46, 2.49, 2.5, 2.5, 2.5, 2.52, 2.52, 2.54, 2.5, 2.48, - 2.5, 2.55, 2.5, 2.48, 2.5, 2.5, 2.52, 2.52, 2.48, 2.5, 2.5, 2.52, 2.46, - 2.53, 9 ] - -obs post filters: -# Wavenumber Check -- filter: Perform Action - filter variables: - - name: brightnessTemperature - channels: 7024, 7027, 7029, 7032, 7038, 7043, 7046, 7049, 7069, 7072, - 7076, 7081, 7084, 7089, 7099, 7209, 7222, 7231, 7235, 7247, - 7267, 7269, 7284, 7389, 7419, 7423, 7424, 7426, 7428, 7431, - 7436, 7444, 7475, 7549, 7584, 7665, 7666, 7831, 7836, 7853, - 7865, 7885, 7888, 7912, 7950, 7972, 7980, 7995, 8007, 8015, - 8055, 8078 - where: - - variable: - name: MetaData/solarZenithAngle - maxvalue: 88.9999 - - variable: - name: water_area_fraction@GeoVaLs - minvalue: 1.0e-12 - action: - name: reject - -- filter: Perform Action - filter variables: - - name: brightnessTemperature - channels: *iasi_metop-a_channels - action: - name: inflate error - inflation variable: - name: ObsErrorFactorWavenumIR@ObsFunction - channels: *iasi_metop-a_channels - options: - channels: *iasi_metop-a_channels - -# Observation Range Sanity Check -- filter: Bounds Check - filter variables: - - name: brightnessTemperature - channels: *iasi_metop-a_channels - minvalue: 50.00001 - maxvalue: 449.99999 -# maxvalue: 100.00000 - action: - name: reject - -# Topography Check -- filter: Perform Action - filter variables: - - name: brightnessTemperature - channels: *iasi_metop-a_channels - action: - name: inflate error - inflation variable: - name: ObsFunction/ObsErrorFactorTopoRad - channels: *iasi_metop-a_channels - options: - channels: *iasi_metop-a_channels - sensor: iasi_metop-a - -# Transmittance Top Check -- filter: Perform Action - filter variables: - - name: brightnessTemperature - channels: *iasi_metop-a_channels - action: - name: inflate error - inflation variable: - name: ObsFunction/ObsErrorFactorTransmitTopRad - channels: *iasi_metop-a_channels - options: - channels: *iasi_metop-a_channels - -# Cloud Detection Check -- filter: Bounds Check - filter variables: - - name: brightnessTemperature - channels: *iasi_metop-a_channels - test variables: - - name: ObsFunction/CloudDetectMinResidualIR - channels: *iasi_metop-a_channels - options: - channels: *iasi_metop-a_channels - use_flag: [ 1, -1, -1, -1, 1, -1, -1, -1, 1, -1, - 1, -1, 1, -1, 1, 1, 1, -1, 1, 1, - -1, 1, 1, 1, -1, -1, 1, 1, -1, 1, - -1, 1, -1, 1, -1, -1, -1, -1, -1, -1, - -1, -1, 1, 1, 1, -1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, -1, 1, 1, 1, 1, -1, 1, 1, 1, - 1, 1, 1, -1, 1, 1, 1, -1, 1, -1, - 1, -1, -1, -1, 1, 1, 1, 1, -1, 1, - 1, -1, 1, 1, 1, -1, 1, -1, 1, -1, - 1, 1, -1, 1, 1, 1, 1, 1, 1, -1, - 1, 1, 1, 1, -1, 1, -1, 1, -1, 1, - 1, 1, -1, 1, 1, -1, -1, -1, 1, -1, - 1, 1, -1, 1, 1, 1, 1, 1, 1, 1, - -1, 1, 1, -1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, -1, 1, -1, 1, -1, - 1, 1, -1, -1, 1, 1, 1, -1, 1, 1, - -1, 1, -1, 1, -1, -1, -1, -1, -1, 1, - 1, 1, 1, 1, 1, 1, -1, -1, -1, -1, - 1, 1, 1, -1, -1, 1, -1, 1, 1, 1, - 1, 1, -1, -1, 1, 1, -1, 1, 1, -1, - 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 1, - -1, -1, -1, -1, -1, -1, 1, -1, 1, -1, - 1, -1, -1, -1, 1, -1, -1, -1, -1, -1, - -1, -1, 1, 1, -1, 1, 1, -1, 1, 1, - 1, 1, 1, -1, -1, 1, -1, -1, -1, -1, - -1, 1, -1, 1, -1, 1, -1, -1, -1, 1, - 1, 1, 1, 1, 1, 1, -1, 1, -1, -1, - -1, -1, -1, -1, -1, 1, -1, -1, 1, -1, - -1, -1, -1, 1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 1, -1, -1, -1, -1, -1, -1, - 1, 1, -1, -1, -1, -1, -1, -1, -1, 1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 1, - -1, 1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 1, -1, - -1, 1, -1, -1, -1, -1, -1, -1, 1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1] - use_flag_clddet: [ 1, -1, -1, -1, 1, -1, -1, -1, 1, -1, - 1, -1, 1, -1, 1, 1, 1, -1, 1, 1, - -1, 1, 1, 1, -1, -1, 1, 1, -1, 1, - -1, 1, -1, 1, -1, -1, -1, -1, -1, -1, - -1, -1, 1, 1, 1, -1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, -1, 1, 1, 1, 1, -1, 1, 1, 1, - 1, 1, 1, -1, 1, 1, 1, -1, 1, -1, - 1, -1, -1, -1, 1, 1, 1, 1, -1, 1, - 1, -1, 1, 1, 1, -1, 1, -1, 1, -1, - 1, 1, -1, 1, 1, 1, 1, 1, 1, -1, - 1, 1, 1, 1, -1, 1, -1, 1, -1, 1, - 1, 1, -1, 1, 1, -1, -1, -1, 1, -1, - 1, 1, -1, 1, 1, 1, 1, 1, 1, 1, - -1, 1, 1, -1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, -1, 1, -1, 1, -1, - 1, 1, -1, -1, 1, 1, 1, -1, 1, 1, - -1, 1, -1, 1, -1, -1, -1, -1, -1, 1, - 1, 1, 1, 1, 1, 1, -1, -1, -1, -1, - 1, 1, 1, -1, -1, 1, -1, 1, 1, 1, - 1, 1, -1, -1, 1, 1, -1, 1, 1, -1, - 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 1, -1, 1, -1, 1, -1, -1, -1, 1, - 1, 1, 1, 1, 1, 1, -1, 1, -1, -1, - -1, -1, -1, -1, -1, 1, -1, -1, 1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1] - obserr_dtempf: [0.50,2.00,4.00,2.00,4.00] - error parameter vector: *iasi_metop-a_oberr - maxvalue: 1.0e-12 - action: - name: reject - -# NSST Retrieval Check -- filter: Bounds Check - filter variables: - - name: brightnessTemperature - channels: *iasi_metop-a_channels - test variables: - - name: NearSSTRetCheckIR@ObsFunction - channels: *iasi_metop-a_channels - options: - channels: *iasi_metop-a_channels - use_flag: [ 1, -1, -1, -1, 1, -1, -1, -1, 1, -1, - 1, -1, 1, -1, 1, 1, 1, -1, 1, 1, - -1, 1, 1, 1, -1, -1, 1, 1, -1, 1, - -1, 1, -1, 1, -1, -1, -1, -1, -1, -1, - -1, -1, 1, 1, 1, -1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, -1, 1, 1, 1, 1, -1, 1, 1, 1, - 1, 1, 1, -1, 1, 1, 1, -1, 1, -1, - 1, -1, -1, -1, 1, 1, 1, 1, -1, 1, - 1, -1, 1, 1, 1, -1, 1, -1, 1, -1, - 1, 1, -1, 1, 1, 1, 1, 1, 1, -1, - 1, 1, 1, 1, -1, 1, -1, 1, -1, 1, - 1, 1, -1, 1, 1, -1, -1, -1, 1, -1, - 1, 1, -1, 1, 1, 1, 1, 1, 1, 1, - -1, 1, 1, -1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, -1, 1, -1, 1, -1, - 1, 1, -1, -1, 1, 1, 1, -1, 1, 1, - -1, 1, -1, 1, -1, -1, -1, -1, -1, 1, - 1, 1, 1, 1, 1, 1, -1, -1, -1, -1, - 1, 1, 1, -1, -1, 1, -1, 1, 1, 1, - 1, 1, -1, -1, 1, 1, -1, 1, 1, -1, - 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 1, - -1, -1, -1, -1, -1, -1, 1, -1, 1, -1, - 1, -1, -1, -1, 1, -1, -1, -1, -1, -1, - -1, -1, 1, 1, -1, 1, 1, -1, 1, 1, - 1, 1, 1, -1, -1, 1, -1, -1, -1, -1, - -1, 1, -1, 1, -1, 1, -1, -1, -1, 1, - 1, 1, 1, 1, 1, 1, -1, 1, -1, -1, - -1, -1, -1, -1, -1, 1, -1, -1, 1, -1, - -1, -1, -1, 1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 1, -1, -1, -1, -1, -1, -1, - 1, 1, -1, -1, -1, -1, -1, -1, -1, 1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 1, - -1, 1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 1, -1, - -1, 1, -1, -1, -1, -1, -1, -1, 1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1] - obserr_demisf: [0.01,0.02,0.03,0.02,0.03] - obserr_dtempf: [0.50,2.00,4.00,2.00,4.00] - maxvalue: 1.0e-12 - action: - name: reject - -# Surface Jacobians Check -- filter: Perform Action - filter variables: - - name: brightnessTemperature - channels: *iasi_metop-a_channels - action: - name: inflate error - inflation variable: - name: ObsFunction/ObsErrorFactorSurfJacobianRad - channels: *iasi_metop-a_channels - options: - channels: *iasi_metop-a_channels - obserr_demisf: [0.01, 0.02, 0.03, 0.02, 0.03] - obserr_dtempf: [0.50, 2.00, 4.00, 2.00, 4.00] - sensor: iasi_metop-a - -# Gross check -- filter: Background Check - filter variables: - - name: brightnessTemperature - channels: *iasi_metop-a_channels - function absolute threshold: - - name: ObsFunction/ObsErrorBoundIR - channels: *iasi_metop-a_channels - options: - channels: *iasi_metop-a_channels - obserr_bound_latitude: - name: ObsFunction/ObsErrorFactorLatRad - options: - latitude_parameters: [25.0, 0.5, 0.04, 1.0] - obserr_bound_transmittop: - name: ObsFunction/ObsErrorFactorTransmitTopRad - channels: *iasi_metop-a_channels - options: - channels: *iasi_metop-a_channels - obserr_bound_max: [ 3.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, - 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, - 2.0, 2.0, 4.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, - 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 4.0, 4.0, - 3.5, 2.5, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, - 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, - 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, - 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, - 3.5, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 3.0, 2.0, 2.0, - 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, - 2.0, 2.0, 2.0, 2.0, 2.5, 2.0, 2.5, 2.5, 3.0, 2.5, - 2.5, 2.5, 2.5, 3.5, 2.5, 2.5, 3.0, 3.5, 3.0, 4.0, - 4.0, 4.0, 4.0, 4.0, 4.0, 4.5, 4.5, 4.5, 4.5, 4.5, - 4.0, 4.5, 4.0, 4.0, 4.5, 2.5, 3.0, 2.5, 3.0, 2.5, - 3.0, 2.0, 2.5, 2.5, 3.0, 3.0, 2.5, 3.0, 3.0, 3.0, - 2.5, 2.5, 4.0, 4.5, 4.5, 5.0, 4.0, 4.0, 5.0, 5.0, - 5.0, 5.0, 5.5, 5.5, 4.0, 5.0, 4.0, 4.5, 5.5, 5.5, - 6.0, 4.5, 4.5, 4.0, 5.0, 5.0, 6.0, 6.0, 6.0, 6.0, - 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, - 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, - 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, - 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, - 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, - 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, - 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, - 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, - 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, - 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, - 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, - 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, - 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, - 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, - 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, - 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, - 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, - 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, - 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, - 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 5.5, 4.5, 6.0, - 5.0, 5.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 5.0, 6.0, - 6.0, 6.0, 4.0, 6.0, 6.0, 6.0, 6.0, 4.5, 6.0, 6.0, - 4.5, 6.0, 6.0, 6.0, 6.0, 6.0, 5.0, 6.0, 6.0, 6.0, - 5.0, 6.0, 6.0, 5.0, 6.0, 5.0, 6.0, 6.0, 6.0, 5.0, - 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, - 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, - 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, - 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, - 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, - 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, - 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, - 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, - 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, - 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, - 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, - 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, - 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, - 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, - 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, - 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, - 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, - 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, - 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, - 6.0, 6.0, 6.0, 6.0, 6.0, 6.0] - error parameter vector: *iasi_metop-a_oberr - action: - name: reject - -# Useflag Check -- filter: Bounds Check - filter variables: - - name: brightnessTemperature - channels: *iasi_metop-a_channels - test variables: - - name: ObsFunction/ChannelUseflagCheckRad - channels: *iasi_metop-a_channels - options: - channels: *iasi_metop-a_channels - use_flag: [ 1, -1, -1, -1, 1, -1, -1, -1, 1, -1, - 1, -1, 1, -1, 1, 1, 1, -1, 1, 1, - -1, 1, 1, 1, -1, -1, 1, 1, -1, 1, - -1, 1, -1, 1, -1, -1, -1, -1, -1, -1, - -1, -1, 1, 1, 1, -1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, -1, 1, 1, 1, 1, -1, 1, 1, 1, - 1, 1, 1, -1, 1, 1, 1, -1, 1, -1, - 1, -1, -1, -1, 1, 1, 1, 1, -1, 1, - 1, -1, 1, 1, 1, -1, 1, -1, 1, -1, - 1, 1, -1, 1, 1, 1, 1, 1, 1, -1, - 1, 1, 1, 1, -1, 1, -1, 1, -1, 1, - 1, 1, -1, 1, 1, -1, -1, -1, 1, -1, - 1, 1, -1, 1, 1, 1, 1, 1, 1, 1, - -1, 1, 1, -1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, -1, 1, -1, 1, -1, - 1, 1, -1, -1, 1, 1, 1, -1, 1, 1, - -1, 1, -1, 1, -1, -1, -1, -1, -1, 1, - 1, 1, 1, 1, 1, 1, -1, -1, -1, -1, - 1, 1, 1, -1, -1, 1, -1, 1, 1, 1, - 1, 1, -1, -1, 1, 1, -1, 1, 1, -1, - 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 1, - -1, -1, -1, -1, -1, -1, 1, -1, 1, -1, - 1, -1, -1, -1, 1, -1, -1, -1, -1, -1, - -1, -1, 1, 1, -1, 1, 1, -1, 1, 1, - 1, 1, 1, -1, -1, 1, -1, -1, -1, -1, - -1, 1, -1, 1, -1, 1, -1, -1, -1, 1, - 1, 1, 1, 1, 1, 1, -1, 1, -1, -1, - -1, -1, -1, -1, -1, 1, -1, -1, 1, -1, - -1, -1, -1, 1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 1, -1, -1, -1, -1, -1, -1, - 1, 1, -1, -1, -1, -1, -1, -1, -1, 1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 1, - -1, 1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 1, -1, - -1, 1, -1, -1, -1, -1, -1, -1, 1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1] - minvalue: 1.0e-12 - action: - name: reject -passedBenchmark: 144704 #127348 diff --git a/parm/atm/obs/testing/iasi_metop-a_noqc.yaml b/parm/atm/obs/testing/iasi_metop-a_noqc.yaml deleted file mode 100644 index c9ee251a4..000000000 --- a/parm/atm/obs/testing/iasi_metop-a_noqc.yaml +++ /dev/null @@ -1,158 +0,0 @@ -obs space: - name: iasi_metop-a - obsdatain: - engine: - type: H5File - obsfile: iasi_metop-a_obs_${CDATE}_subset.nc4 - _source: gdas - obsdataout: - engine: - type: H5File - obsfile: iasi_metop-a_diag_${CDATE}.nc4 - simulated variables: [brightnessTemperature] - channels: &iasi_metop-a_channels 16, 29, 32, 35, 38, 41, 44, 47, 49, 50, 51, 53, - 55, 56, 57, 59, 61, 62, 63, 66, 68, 70, 72, 74, 76, 78, 79, 81, 82, 83, - 84, 85, 86, 87, 89, 92, 93, 95, 97, 99, 101, 103, 104, 106, 109, 110, - 111, 113, 116, 119, 122, 125, 128, 131, 133, 135, 138, 141, 144, 146, - 148, 150, 151, 154, 157, 159, 160, 161, 163, 167, 170, 173, 176, 179, - 180, 185, 187, 191, 193, 197, 199, 200, 202, 203, 205, 207, 210, 212, - 213, 214, 217, 218, 219, 222, 224, 225, 226, 228, 230, 231, 232, 236, - 237, 239, 243, 246, 249, 252, 254, 259, 260, 262, 265, 267, 269, 275, - 279, 282, 285, 294, 296, 299, 300, 303, 306, 309, 313, 320, 323, 326, - 327, 329, 332, 335, 345, 347, 350, 354, 356, 360, 363, 366, 371, 372, - 373, 375, 377, 379, 381, 383, 386, 389, 398, 401, 404, 405, 407, 408, - 410, 411, 414, 416, 418, 423, 426, 428, 432, 433, 434, 439, 442, 445, - 450, 457, 459, 472, 477, 483, 509, 515, 546, 552, 559, 566, 571, 573, - 578, 584, 594, 625, 646, 662, 668, 705, 739, 756, 797, 867, 906, 921, - 1027, 1046, 1090, 1098, 1121, 1133, 1173, 1191, 1194, 1222, 1271, 1283, - 1338, 1409, 1414, 1420, 1424, 1427, 1430, 1434, 1440, 1442, 1445, 1450, - 1454, 1460, 1463, 1469, 1474, 1479, 1483, 1487, 1494, 1496, 1502, 1505, - 1509, 1510, 1513, 1518, 1521, 1526, 1529, 1532, 1536, 1537, 1541, 1545, - 1548, 1553, 1560, 1568, 1574, 1579, 1583, 1585, 1587, 1606, 1626, 1639, - 1643, 1652, 1658, 1659, 1666, 1671, 1675, 1681, 1694, 1697, 1710, 1786, - 1791, 1805, 1839, 1884, 1913, 1946, 1947, 1991, 2019, 2094, 2119, 2213, - 2239, 2271, 2289, 2321, 2333, 2346, 2349, 2352, 2359, 2367, 2374, 2398, - 2426, 2562, 2701, 2741, 2745, 2760, 2819, 2889, 2907, 2910, 2919, 2921, - 2939, 2944, 2945, 2948, 2951, 2958, 2971, 2977, 2985, 2988, 2990, 2991, - 2993, 3002, 3008, 3014, 3027, 3029, 3030, 3036, 3047, 3049, 3052, 3053, - 3055, 3058, 3064, 3069, 3087, 3093, 3098, 3105, 3107, 3110, 3116, 3127, - 3129, 3136, 3146, 3151, 3160, 3165, 3168, 3175, 3178, 3189, 3207, 3228, - 3244, 3248, 3252, 3256, 3263, 3281, 3295, 3303, 3309, 3312, 3322, 3326, - 3354, 3366, 3375, 3378, 3411, 3416, 3432, 3438, 3440, 3442, 3444, 3446, - 3448, 3450, 3452, 3454, 3458, 3467, 3476, 3484, 3491, 3497, 3499, 3504, - 3506, 3509, 3518, 3527, 3555, 3575, 3577, 3580, 3582, 3586, 3589, 3599, - 3610, 3626, 3638, 3646, 3653, 3658, 3661, 3673, 3689, 3700, 3710, 3726, - 3763, 3814, 3841, 3888, 4032, 4059, 4068, 4082, 4095, 4160, 4234, 4257, - 4411, 4498, 4520, 4552, 4567, 4608, 4646, 4698, 4808, 4849, 4920, 4939, - 4947, 4967, 4991, 4996, 5015, 5028, 5056, 5128, 5130, 5144, 5170, 5178, - 5183, 5188, 5191, 5368, 5371, 5379, 5381, 5383, 5397, 5399, 5401, 5403, - 5405, 5446, 5455, 5472, 5480, 5483, 5485, 5492, 5497, 5502, 5507, 5509, - 5517, 5528, 5558, 5697, 5714, 5749, 5766, 5785, 5798, 5799, 5801, 5817, - 5833, 5834, 5836, 5849, 5851, 5852, 5865, 5869, 5881, 5884, 5897, 5900, - 5916, 5932, 5948, 5963, 5968, 5978, 5988, 5992, 5994, 5997, 6003, 6008, - 6023, 6026, 6039, 6053, 6056, 6067, 6071, 6082, 6085, 6098, 6112, 6126, - 6135, 6140, 6149, 6154, 6158, 6161, 6168, 6174, 6182, 6187, 6205, 6209, - 6213, 6317, 6339, 6342, 6366, 6381, 6391, 6489, 6962, 6966, 6970, 6975, - 6977, 6982, 6985, 6987, 6989, 6991, 6993, 6995, 6997, 6999, 7000, 7004, - 7008, 7013, 7016, 7021, 7024, 7027, 7029, 7032, 7038, 7043, 7046, 7049, - 7069, 7072, 7076, 7081, 7084, 7089, 7099, 7209, 7222, 7231, 7235, 7247, - 7267, 7269, 7284, 7389, 7419, 7423, 7424, 7426, 7428, 7431, 7436, 7444, - 7475, 7549, 7584, 7665, 7666, 7831, 7836, 7853, 7865, 7885, 7888, 7912, - 7950, 7972, 7980, 7995, 8007, 8015, 8055, 8078 -geovals: - filename: iasi_metop-a_geoval_${CDATE}_subset.nc4 -obs operator: - name: CRTM - Absorbers: [H2O,O3,CO2] - obs options: - Sensor_ID: iasi_metop-a - EndianType: little_endian - CoefficientPath: crtm/ -obs bias: - input file: iasi_metop-a_satbias_${GDATE}.nc4 - variational bc: - predictors: - - name: constant - - name: lapse_rate - order: 2 - tlapse: &iasi_metop-a_tlap iasi_metop-a_tlapmean_${GDATE}.txt - - name: lapse_rate - tlapse: *iasi_metop-a_tlap - - name: emissivity - - name: scan_angle - order: 4 - - name: scan_angle - order: 3 - - name: scan_angle - order: 2 - - name: scan_angle -# covariance: -# minimal required obs number: 20 -# variance range: [1.0e-6, 10.0] -# step size: 1.0e-4 -# largest analysis variance: 10000.0 -# prior: -# inflation: -# ratio: 1.1 -# ratio for small dataset: 2.0 - -obs prior filters: -- filter: Perform Action - filter variables: - - name: brightnessTemperature - channels: *iasi_metop-a_channels - action: - name: assign error - error parameter vector: &iasi_metop-a_oberr [ 1.38, 0.81, 0.75, 0.79, 0.72, 0.74, 0.68, 0.72, 0.65, 0.65, - 0.65, 0.69, 0.64, 0.64, 0.65, 0.67, 0.62, 0.61, 0.62, 0.64, 0.59, 0.76, - 1.22, 0.78, 0.64, 0.62, 0.61, 0.69, 0.65, 0.59, 0.61, 0.59, 0.68, 0.62, - 0.68, 4.38, 3.05, 2.31, 1.56, 1.33, 1.58, 0.93, 1.67, 0.72, 0.57, 0.58, - 0.55, 0.68, 0.59, 0.68, 0.59, 0.65, 0.58, 0.62, 0.64, 0.58, 0.64, 0.55, - 0.64, 0.5, 0.82, 0.59, 0.62, 0.51, 0.64, 0.52, 0.51, 0.51, 0.76, 0.52, - 0.57, 0.55, 0.69, 0.58, 0.65, 0.61, 0.59, 0.64, 0.76, 0.72, 1.05, 0.75, - 0.51, 0.65, 1.3, 0.69, 0.93, 1.49, 1.12, 0.68, 0.66, 0.67, 0.59, 0.59, - 0.69, 0.67, 0.64, 0.62, 0.72, 0.69, 0.66, 0.79, 0.78, 0.74, 0.88, 0.77, - 0.88, 0.86, 1, 0.87, 0.85, 0.88, 0.84, 0.84, 0.84, 0.8, 0.8, 0.87, - 0.98, 0.52, 0.65, 0.69, 0.61, 0.6, 0.67, 0.79, 0.62, 0.66, 0.7, 0.65, - 0.62, 0.61, 0.62, 0.53, 0.6, 0.68, 0.95, 0.63, 0.97, 0.65, 0.98, 0.58, - 0.73, 0.65, 0.85, 0.99, 0.76, 0.85, 0.97, 0.77, 0.62, 0.63, 1.21, 1.41, - 1.55, 1.78, 1.35, 1.14, 1.69, 1.79, 1.46, 1.63, 1.94, 2.01, 1.24, 1.76, - 1.26, 1.47, 1.9, 1.66, 2.13, 1.49, 1.52, 1.55, 1.96, 2.31, 2.33, 2.32, - 2.31, 2.33, 2.23, 2.33, 1.84, 2.29, 2.28, 2.28, 2.28, 2.26, 2.26, 2.26, - 2.27, 2.24, 2.23, 2.24, 2.26, 2.28, 2.28, 2.3, 2.15, 2.31, 2.37, 2.27, - 2.29, 2.29, 2.23, 2.28, 2.32, 2.32, 2.31, 2.32, 2.32, 2.31, 2.31, 2.28, - 2.29, 2.28, 2.26, 2.29, 2.27, 2.26, 2.25, 2.27, 2.24, 2.21, 2.24, 2.17, - 2.18, 2.17, 2.21, 1.99, 2.16, 2.2, 2.13, 2.12, 2.13, 2.1, 2.12, 2.11, - 2.09, 2.09, 2.08, 2.09, 2.04, 2.04, 2.1, 2.01, 2.05, 2.03, 2.06, 1.98, - 1.95, 1.94, 1.91, 1.7, 1.76, 1.77, 1.83, 2.04, 1.91, 1.99, 1.99, 2.07, - 2.02, 2.04, 2.1, 2.06, 2.18, 2.21, 2.24, 2.23, 2.23, 1.98, 2.2, 2.18, - 2.18, 2.21, 2.23, 2.24, 2.24, 2.25, 1.8, 2.24, 1.73, 1.73, 2.27, 1.67, - 2.21, 1.72, 2.23, 2.23, 2.23, 2.24, 2.23, 2.12, 2.17, 1.74, 2.02, 1.88, - 1.67, 1.73, 1.83, 1.82, 1.73, 1.83, 2.19, 1.84, 1.89, 1.6, 1.71, 1.86, - 1.85, 1.84, 1.87, 1.91, 1.52, 1.95, 1.87, 1.89, 1.91, 1.91, 1.93, 1.9, - 1.91, 1.9, 1.89, 1.89, 1.91, 1.9, 1.91, 1.91, 1.91, 1.93, 1.94, 1.91, - 1.92, 1.77, 1.91, 1.95, 1.19, 1.96, 1.98, 1.94, 1.55, 1.91, 1.92, 1.92, - 1.97, 1.93, 1.99, 1.86, 1.12, 1.93, 1.92, 1.95, 1.85, 1.84, 1.91, 1.12, - 1.82, 1.82, 1.95, 1.24, 1.94, 1.96, 1.21, 1.83, 1.96, 1.36, 1.96, 1.82, - 1.92, 1.68, 1.93, 1.23, 1.96, 1.93, 1.86, 1.41, 1.16, 1.6, 1.25, 1.2, - 1.65, 1.66, 1.87, 1.94, 1.96, 1.91, 1.25, 1.93, 1.91, 1.7, 0.99, 1.81, - 1.92, 1.95, 1.5, 1.47, 1.15, 1.58, 1.18, 1.82, 1.13, 1.83, 1.91, 1.26, - 1.27, 1.91, 1.45, 1.6, 1.29, 1.94, 1.94, 1.23, 1.95, 1.21, 1.94, 1.86, - 1.9, 1.33, 1.75, 2.02, 1.98, 2.03, 1.83, 1.5, 2.04, 2.02, 1.9, 2, 2.02, - 1.95, 1.93, 1.95, 1.95, 1.99, 2, 1.94, 1.96, 1.86, 1.92, 1.88, 1.86, - 1.84, 1.87, 1.77, 1.89, 1.89, 1.88, 1.94, 1.82, 1.79, 1.86, 2.06, 2.33, - 1.88, 1.86, 1.81, 1.8, 1.8, 1.86, 1.9, 2, 2.06, 2.1, 2.2, 2, 2.16, - 1.98, 1.8, 1.8, 1.85, 1.75, 2.04, 2.19, 2.14, 2.19, 1.86, 2.1, 2.11, - 2.18, 2.03, 2.28, 2.19, 2.26, 2.26, 2.21, 2.21, 2.26, 2.33, 2.27, 2.21, - 2.12, 2.23, 2.26, 2.25, 1.88, 2.26, 2.24, 2.36, 2.29, 2.35, 2.3, 2.27, - 2.08, 2.05, 2.27, 2.28, 2.27, 2.28, 1.97, 2.25, 2.25, 2.25, 2.31, 2.28, - 2.27, 2.13, 2.24, 2.28, 2.28, 2.41, 2.34, 9.32, 2.28, 2.38, 2.27, 2.27, - 2.39, 2.11, 2.09, 2.1, 2.06, 2.12, 2.08, 2, 1.93, 2.02, 2.55, 1.54, - 1.64, 1.51, 1.55, 2.82, 2.92, 2.55, 2.37, 1.85, 1.6, 1.72, 1.74, 1.79, - 1.9, 1.94, 2, 2.04, 2.08, 2.12, 2.13, 2.16, 2.18, 2.18, 2.2, 2.2, 2.41, - 2.39, 2.38, 2.4, 2.42, 2.41, 2.43, 2.45, 2.43, 2.45, 2.43, 2.4, 2.44, - 2.4, 2.42, 2.43, 2.45, 2.45, 2.45, 2.46, 2.45, 2.45, 2.43, 2.51, 2.48, - 2.48, 2.53, 2.46, 2.49, 2.5, 2.5, 2.5, 2.52, 2.52, 2.54, 2.5, 2.48, - 2.5, 2.55, 2.5, 2.48, 2.5, 2.5, 2.52, 2.52, 2.48, 2.5, 2.5, 2.52, 2.46, - 2.53, 9 ] -passedBenchmark: 801416 diff --git a/parm/atm/obs/testing/iasi_metop-b.yaml b/parm/atm/obs/testing/iasi_metop-b.yaml deleted file mode 100644 index 660aae464..000000000 --- a/parm/atm/obs/testing/iasi_metop-b.yaml +++ /dev/null @@ -1,624 +0,0 @@ -obs space: - name: iasi_metop-b - obsdatain: - engine: - type: H5File - obsfile: iasi_metop-b_obs_${CDATE}_subset.nc4 - _source: gdas - obsdataout: - engine: - type: H5File - obsfile: iasi_metop-b_diag_${CDATE}.nc4 - simulated variables: [brightnessTemperature] - channels: &iasi_metop-b_channels 16, 29, 32, 35, 38, 41, 44, 47, 49, 50, 51, 53, - 55, 56, 57, 59, 61, 62, 63, 66, 68, 70, 72, 74, 76, 78, 79, 81, 82, 83, - 84, 85, 86, 87, 89, 92, 93, 95, 97, 99, 101, 103, 104, 106, 109, 110, - 111, 113, 116, 119, 122, 125, 128, 131, 133, 135, 138, 141, 144, 146, - 148, 150, 151, 154, 157, 159, 160, 161, 163, 167, 170, 173, 176, 179, - 180, 185, 187, 191, 193, 197, 199, 200, 202, 203, 205, 207, 210, 212, - 213, 214, 217, 218, 219, 222, 224, 225, 226, 228, 230, 231, 232, 236, - 237, 239, 243, 246, 249, 252, 254, 259, 260, 262, 265, 267, 269, 275, - 279, 282, 285, 294, 296, 299, 300, 303, 306, 309, 313, 320, 323, 326, - 327, 329, 332, 335, 345, 347, 350, 354, 356, 360, 363, 366, 371, 372, - 373, 375, 377, 379, 381, 383, 386, 389, 398, 401, 404, 405, 407, 408, - 410, 411, 414, 416, 418, 423, 426, 428, 432, 433, 434, 439, 442, 445, - 450, 457, 459, 472, 477, 483, 509, 515, 546, 552, 559, 566, 571, 573, - 578, 584, 594, 625, 646, 662, 668, 705, 739, 756, 797, 867, 906, 921, - 1027, 1046, 1090, 1098, 1121, 1133, 1173, 1191, 1194, 1222, 1271, 1283, - 1338, 1409, 1414, 1420, 1424, 1427, 1430, 1434, 1440, 1442, 1445, 1450, - 1454, 1460, 1463, 1469, 1474, 1479, 1483, 1487, 1494, 1496, 1502, 1505, - 1509, 1510, 1513, 1518, 1521, 1526, 1529, 1532, 1536, 1537, 1541, 1545, - 1548, 1553, 1560, 1568, 1574, 1579, 1583, 1585, 1587, 1606, 1626, 1639, - 1643, 1652, 1658, 1659, 1666, 1671, 1675, 1681, 1694, 1697, 1710, 1786, - 1791, 1805, 1839, 1884, 1913, 1946, 1947, 1991, 2019, 2094, 2119, 2213, - 2239, 2271, 2289, 2321, 2333, 2346, 2349, 2352, 2359, 2367, 2374, 2398, - 2426, 2562, 2701, 2741, 2745, 2760, 2819, 2889, 2907, 2910, 2919, 2921, - 2939, 2944, 2945, 2948, 2951, 2958, 2971, 2977, 2985, 2988, 2990, 2991, - 2993, 3002, 3008, 3014, 3027, 3029, 3030, 3036, 3047, 3049, 3052, 3053, - 3055, 3058, 3064, 3069, 3087, 3093, 3098, 3105, 3107, 3110, 3116, 3127, - 3129, 3136, 3146, 3151, 3160, 3165, 3168, 3175, 3178, 3189, 3207, 3228, - 3244, 3248, 3252, 3256, 3263, 3281, 3295, 3303, 3309, 3312, 3322, 3326, - 3354, 3366, 3375, 3378, 3411, 3416, 3432, 3438, 3440, 3442, 3444, 3446, - 3448, 3450, 3452, 3454, 3458, 3467, 3476, 3484, 3491, 3497, 3499, 3504, - 3506, 3509, 3518, 3527, 3555, 3575, 3577, 3580, 3582, 3586, 3589, 3599, - 3610, 3626, 3638, 3646, 3653, 3658, 3661, 3673, 3689, 3700, 3710, 3726, - 3763, 3814, 3841, 3888, 4032, 4059, 4068, 4082, 4095, 4160, 4234, 4257, - 4411, 4498, 4520, 4552, 4567, 4608, 4646, 4698, 4808, 4849, 4920, 4939, - 4947, 4967, 4991, 4996, 5015, 5028, 5056, 5128, 5130, 5144, 5170, 5178, - 5183, 5188, 5191, 5368, 5371, 5379, 5381, 5383, 5397, 5399, 5401, 5403, - 5405, 5446, 5455, 5472, 5480, 5483, 5485, 5492, 5497, 5502, 5507, 5509, - 5517, 5528, 5558, 5697, 5714, 5749, 5766, 5785, 5798, 5799, 5801, 5817, - 5833, 5834, 5836, 5849, 5851, 5852, 5865, 5869, 5881, 5884, 5897, 5900, - 5916, 5932, 5948, 5963, 5968, 5978, 5988, 5992, 5994, 5997, 6003, 6008, - 6023, 6026, 6039, 6053, 6056, 6067, 6071, 6082, 6085, 6098, 6112, 6126, - 6135, 6140, 6149, 6154, 6158, 6161, 6168, 6174, 6182, 6187, 6205, 6209, - 6213, 6317, 6339, 6342, 6366, 6381, 6391, 6489, 6962, 6966, 6970, 6975, - 6977, 6982, 6985, 6987, 6989, 6991, 6993, 6995, 6997, 6999, 7000, 7004, - 7008, 7013, 7016, 7021, 7024, 7027, 7029, 7032, 7038, 7043, 7046, 7049, - 7069, 7072, 7076, 7081, 7084, 7089, 7099, 7209, 7222, 7231, 7235, 7247, - 7267, 7269, 7284, 7389, 7419, 7423, 7424, 7426, 7428, 7431, 7436, 7444, - 7475, 7549, 7584, 7665, 7666, 7831, 7836, 7853, 7865, 7885, 7888, 7912, - 7950, 7972, 7980, 7995, 8007, 8015, 8055, 8078 -geovals: - filename: iasi_metop-b_geoval_${CDATE}_subset.nc4 -obs operator: - name: CRTM - Absorbers: [H2O,O3,CO2] - obs options: - Sensor_ID: iasi_metop-b - EndianType: little_endian - CoefficientPath: crtm/ -obs bias: - input file: iasi_metop-b_satbias_${GDATE}.nc4 - variational bc: - predictors: - - name: constant - - name: lapse_rate - order: 2 - tlapse: &iasi_metop-b_tlap iasi_metop-b_tlapmean_${GDATE}.txt - - name: lapse_rate - tlapse: *iasi_metop-b_tlap - - name: emissivity - - name: scan_angle - order: 4 - - name: scan_angle - order: 3 - - name: scan_angle - order: 2 - - name: scan_angle -# covariance: -# minimal required obs number: 20 -# variance range: [1.0e-6, 10.0] -# step size: 1.0e-4 -# largest analysis variance: 10000.0 -# prior: -# inflation: -# ratio: 1.1 -# ratio for small dataset: 2.0 - -obs prior filters: -- filter: Perform Action - filter variables: - - name: brightnessTemperature - channels: *iasi_metop-b_channels - action: - name: assign error - error parameter vector: &iasi_metop-b_oberr [ 1.38, 0.81, 0.75, 0.79, 0.72, 0.74, 0.68, 0.72, 0.65, 0.65, - 0.65, 0.69, 0.64, 0.64, 0.65, 0.67, 0.62, 0.61, 0.62, 0.64, 0.59, 0.76, - 1.22, 0.78, 0.64, 0.62, 0.61, 0.69, 0.65, 0.59, 0.61, 0.59, 0.68, 0.62, - 0.68, 4.38, 3.05, 2.31, 1.56, 1.33, 1.58, 0.93, 1.67, 0.72, 0.57, 0.58, - 0.55, 0.68, 0.59, 0.68, 0.59, 0.65, 0.58, 0.62, 0.64, 0.58, 0.64, 0.55, - 0.64, 0.5, 0.82, 0.59, 0.62, 0.51, 0.64, 0.52, 0.51, 0.51, 0.76, 0.52, - 0.57, 0.55, 0.69, 0.58, 0.65, 0.61, 0.59, 0.64, 0.76, 0.72, 1.05, 0.75, - 0.51, 0.65, 1.3, 0.69, 0.93, 1.49, 1.12, 0.68, 0.66, 0.67, 0.59, 0.59, - 0.69, 0.67, 0.64, 0.62, 0.72, 0.69, 0.66, 0.79, 0.78, 0.74, 0.88, 0.77, - 0.88, 0.86, 1, 0.87, 0.85, 0.88, 0.84, 0.84, 0.84, 0.8, 0.8, 0.87, - 0.98, 0.52, 0.65, 0.69, 0.61, 0.6, 0.67, 0.79, 0.62, 0.66, 0.7, 0.65, - 0.62, 0.61, 0.62, 0.53, 0.6, 0.68, 0.95, 0.63, 0.97, 0.65, 0.98, 0.58, - 0.73, 0.65, 0.85, 0.99, 0.76, 0.85, 0.97, 0.77, 0.62, 0.63, 1.21, 1.41, - 1.55, 1.78, 1.35, 1.14, 1.69, 1.79, 1.46, 1.63, 1.94, 2.01, 1.24, 1.76, - 1.26, 1.47, 1.9, 1.66, 2.13, 1.49, 1.52, 1.55, 1.96, 2.31, 2.33, 2.32, - 2.31, 2.33, 2.23, 2.33, 1.84, 2.29, 2.28, 2.28, 2.28, 2.26, 2.26, 2.26, - 2.27, 2.24, 2.23, 2.24, 2.26, 2.28, 2.28, 2.3, 2.15, 2.31, 2.37, 2.27, - 2.29, 2.29, 2.23, 2.28, 2.32, 2.32, 2.31, 2.32, 2.32, 2.31, 2.31, 2.28, - 2.29, 2.28, 2.26, 2.29, 2.27, 2.26, 2.25, 2.27, 2.24, 2.21, 2.24, 2.17, - 2.18, 2.17, 2.21, 1.99, 2.16, 2.2, 2.13, 2.12, 2.13, 2.1, 2.12, 2.11, - 2.09, 2.09, 2.08, 2.09, 2.04, 2.04, 2.1, 2.01, 2.05, 2.03, 2.06, 1.98, - 1.95, 1.94, 1.91, 1.7, 1.76, 1.77, 1.83, 2.04, 1.91, 1.99, 1.99, 2.07, - 2.02, 2.04, 2.1, 2.06, 2.18, 2.21, 2.24, 2.23, 2.23, 1.98, 2.2, 2.18, - 2.18, 2.21, 2.23, 2.24, 2.24, 2.25, 1.8, 2.24, 1.73, 1.73, 2.27, 1.67, - 2.21, 1.72, 2.23, 2.23, 2.23, 2.24, 2.23, 2.12, 2.17, 1.74, 2.02, 1.88, - 1.67, 1.73, 1.83, 1.82, 1.73, 1.83, 2.19, 1.84, 1.89, 1.6, 1.71, 1.86, - 1.85, 1.84, 1.87, 1.91, 1.52, 1.95, 1.87, 1.89, 1.91, 1.91, 1.93, 1.9, - 1.91, 1.9, 1.89, 1.89, 1.91, 1.9, 1.91, 1.91, 1.91, 1.93, 1.94, 1.91, - 1.92, 1.77, 1.91, 1.95, 1.19, 1.96, 1.98, 1.94, 1.55, 1.91, 1.92, 1.92, - 1.97, 1.93, 1.99, 1.86, 1.12, 1.93, 1.92, 1.95, 1.85, 1.84, 1.91, 1.12, - 1.82, 1.82, 1.95, 1.24, 1.94, 1.96, 1.21, 1.83, 1.96, 1.36, 1.96, 1.82, - 1.92, 1.68, 1.93, 1.23, 1.96, 1.93, 1.86, 1.41, 1.16, 1.6, 1.25, 1.2, - 1.65, 1.66, 1.87, 1.94, 1.96, 1.91, 1.25, 1.93, 1.91, 1.7, 0.99, 1.81, - 1.92, 1.95, 1.5, 1.47, 1.15, 1.58, 1.18, 1.82, 1.13, 1.83, 1.91, 1.26, - 1.27, 1.91, 1.45, 1.6, 1.29, 1.94, 1.94, 1.23, 1.95, 1.21, 1.94, 1.86, - 1.9, 1.33, 1.75, 2.02, 1.98, 2.03, 1.83, 1.5, 2.04, 2.02, 1.9, 2, 2.02, - 1.95, 1.93, 1.95, 1.95, 1.99, 2, 1.94, 1.96, 1.86, 1.92, 1.88, 1.86, - 1.84, 1.87, 1.77, 1.89, 1.89, 1.88, 1.94, 1.82, 1.79, 1.86, 2.06, 2.33, - 1.88, 1.86, 1.81, 1.8, 1.8, 1.86, 1.9, 2, 2.06, 2.1, 2.2, 2, 2.16, - 1.98, 1.8, 1.8, 1.85, 1.75, 2.04, 2.19, 2.14, 2.19, 1.86, 2.1, 2.11, - 2.18, 2.03, 2.28, 2.19, 2.26, 2.26, 2.21, 2.21, 2.26, 2.33, 2.27, 2.21, - 2.12, 2.23, 2.26, 2.25, 1.88, 2.26, 2.24, 2.36, 2.29, 2.35, 2.3, 2.27, - 2.08, 2.05, 2.27, 2.28, 2.27, 2.28, 1.97, 2.25, 2.25, 2.25, 2.31, 2.28, - 2.27, 2.13, 2.24, 2.28, 2.28, 2.41, 2.34, 9.32, 2.28, 2.38, 2.27, 2.27, - 2.39, 2.11, 2.09, 2.1, 2.06, 2.12, 2.08, 2, 1.93, 2.02, 2.55, 1.54, - 1.64, 1.51, 1.55, 2.82, 2.92, 2.55, 2.37, 1.85, 1.6, 1.72, 1.74, 1.79, - 1.9, 1.94, 2, 2.04, 2.08, 2.12, 2.13, 2.16, 2.18, 2.18, 2.2, 2.2, 2.41, - 2.39, 2.38, 2.4, 2.42, 2.41, 2.43, 2.45, 2.43, 2.45, 2.43, 2.4, 2.44, - 2.4, 2.42, 2.43, 2.45, 2.45, 2.45, 2.46, 2.45, 2.45, 2.43, 2.51, 2.48, - 2.48, 2.53, 2.46, 2.49, 2.5, 2.5, 2.5, 2.52, 2.52, 2.54, 2.5, 2.48, - 2.5, 2.55, 2.5, 2.48, 2.5, 2.5, 2.52, 2.52, 2.48, 2.5, 2.5, 2.52, 2.46, - 2.53, 9 ] - -obs post filters: -# Wavenumber Check -- filter: Perform Action - filter variables: - - name: brightnessTemperature - channels: 7024, 7027, 7029, 7032, 7038, 7043, 7046, 7049, 7069, 7072, - 7076, 7081, 7084, 7089, 7099, 7209, 7222, 7231, 7235, 7247, - 7267, 7269, 7284, 7389, 7419, 7423, 7424, 7426, 7428, 7431, - 7436, 7444, 7475, 7549, 7584, 7665, 7666, 7831, 7836, 7853, - 7865, 7885, 7888, 7912, 7950, 7972, 7980, 7995, 8007, 8015, - 8055, 8078 - where: - - variable: - name: MetaData/solarZenithAngle - maxvalue: 88.9999 - - variable: - name: water_area_fraction@GeoVaLs - minvalue: 1.0e-12 - action: - name: reject - -- filter: Perform Action - filter variables: - - name: brightnessTemperature - channels: *iasi_metop-b_channels - action: - name: inflate error - inflation variable: - name: ObsErrorFactorWavenumIR@ObsFunction - channels: *iasi_metop-b_channels - options: - channels: *iasi_metop-b_channels - -# Observation Range Sanity Check -- filter: Bounds Check - filter variables: - - name: brightnessTemperature - channels: *iasi_metop-b_channels - minvalue: 50.00001 - maxvalue: 449.99999 -# maxvalue: 100.00000 - action: - name: reject - -# Topography Check -- filter: Perform Action - filter variables: - - name: brightnessTemperature - channels: *iasi_metop-b_channels - action: - name: inflate error - inflation variable: - name: ObsFunction/ObsErrorFactorTopoRad - channels: *iasi_metop-b_channels - options: - channels: *iasi_metop-b_channels - sensor: iasi_metop-b - -# Transmittance Top Check -- filter: Perform Action - filter variables: - - name: brightnessTemperature - channels: *iasi_metop-b_channels - action: - name: inflate error - inflation variable: - name: ObsFunction/ObsErrorFactorTransmitTopRad - channels: *iasi_metop-b_channels - options: - channels: *iasi_metop-b_channels - -# Cloud Detection Check -- filter: Bounds Check - filter variables: - - name: brightnessTemperature - channels: *iasi_metop-b_channels - test variables: - - name: ObsFunction/CloudDetectMinResidualIR - channels: *iasi_metop-b_channels - options: - channels: *iasi_metop-b_channels - use_flag: [ 1, -1, -1, -1, 1, -1, -1, -1, 1, -1, - 1, -1, 1, -1, 1, 1, 1, -1, 1, 1, - -1, 1, 1, 1, -1, -1, 1, 1, -1, 1, - -1, 1, -1, 1, -1, -1, -1, -1, -1, -1, - -1, -1, 1, 1, 1, -1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, -1, 1, 1, 1, 1, -1, 1, 1, 1, - 1, 1, 1, -1, 1, 1, 1, -1, 1, -1, - 1, -1, -1, -1, 1, 1, 1, 1, -1, 1, - 1, -1, 1, 1, 1, -1, 1, -1, 1, -1, - 1, 1, -1, 1, 1, 1, 1, 1, 1, -1, - 1, 1, 1, 1, -1, 1, -1, 1, -1, 1, - 1, 1, -1, 1, 1, -1, -1, -1, 1, -1, - 1, 1, -1, 1, 1, 1, 1, 1, 1, 1, - -1, 1, 1, -1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, -1, 1, -1, 1, -1, - 1, 1, -1, -1, 1, 1, 1, -1, 1, 1, - -1, 1, -1, 1, -1, -1, -1, -1, -1, 1, - 1, 1, 1, 1, 1, 1, -1, -1, -1, -1, - 1, 1, 1, -1, -1, 1, -1, 1, 1, 1, - 1, 1, -1, -1, 1, 1, -1, 1, 1, -1, - 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 1, - -1, -1, -1, -1, -1, -1, 1, -1, 1, -1, - 1, -1, -1, -1, 1, -1, -1, -1, -1, -1, - -1, -1, 1, 1, -1, 1, 1, -1, 1, 1, - 1, 1, 1, -1, -1, 1, -1, -1, -1, -1, - -1, 1, -1, 1, -1, 1, -1, -1, -1, 1, - 1, 1, 1, 1, 1, 1, -1, 1, -1, -1, - -1, -1, -1, -1, -1, 1, -1, -1, 1, -1, - -1, -1, -1, 1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 1, -1, -1, -1, -1, -1, -1, - 1, 1, -1, -1, -1, -1, -1, -1, -1, 1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 1, - -1, 1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 1, -1, - -1, 1, -1, -1, -1, -1, -1, -1, 1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1] - use_flag_clddet: [ 1, -1, -1, -1, 1, -1, -1, -1, 1, -1, - 1, -1, 1, -1, 1, 1, 1, -1, 1, 1, - -1, 1, 1, 1, -1, -1, 1, 1, -1, 1, - -1, 1, -1, 1, -1, -1, -1, -1, -1, -1, - -1, -1, 1, 1, 1, -1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, -1, 1, 1, 1, 1, -1, 1, 1, 1, - 1, 1, 1, -1, 1, 1, 1, -1, 1, -1, - 1, -1, -1, -1, 1, 1, 1, 1, -1, 1, - 1, -1, 1, 1, 1, -1, 1, -1, 1, -1, - 1, 1, -1, 1, 1, 1, 1, 1, 1, -1, - 1, 1, 1, 1, -1, 1, -1, 1, -1, 1, - 1, 1, -1, 1, 1, -1, -1, -1, 1, -1, - 1, 1, -1, 1, 1, 1, 1, 1, 1, 1, - -1, 1, 1, -1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, -1, 1, -1, 1, -1, - 1, 1, -1, -1, 1, 1, 1, -1, 1, 1, - -1, 1, -1, 1, -1, -1, -1, -1, -1, 1, - 1, 1, 1, 1, 1, 1, -1, -1, -1, -1, - 1, 1, 1, -1, -1, 1, -1, 1, 1, 1, - 1, 1, -1, -1, 1, 1, -1, 1, 1, -1, - 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 1, -1, 1, -1, 1, -1, -1, -1, 1, - 1, 1, 1, 1, 1, 1, -1, 1, -1, -1, - -1, -1, -1, -1, -1, 1, -1, -1, 1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1] - obserr_dtempf: [0.50,2.00,4.00,2.00,4.00] - error parameter vector: *iasi_metop-b_oberr - maxvalue: 1.0e-12 - action: - name: reject - -# NSST Retrieval Check -- filter: Bounds Check - filter variables: - - name: brightnessTemperature - channels: *iasi_metop-b_channels - test variables: - - name: NearSSTRetCheckIR@ObsFunction - channels: *iasi_metop-b_channels - options: - channels: *iasi_metop-b_channels - use_flag: [ 1, -1, -1, -1, 1, -1, -1, -1, 1, -1, - 1, -1, 1, -1, 1, 1, 1, -1, 1, 1, - -1, 1, 1, 1, -1, -1, 1, 1, -1, 1, - -1, 1, -1, 1, -1, -1, -1, -1, -1, -1, - -1, -1, 1, 1, 1, -1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, -1, 1, 1, 1, 1, -1, 1, 1, 1, - 1, 1, 1, -1, 1, 1, 1, -1, 1, -1, - 1, -1, -1, -1, 1, 1, 1, 1, -1, 1, - 1, -1, 1, 1, 1, -1, 1, -1, 1, -1, - 1, 1, -1, 1, 1, 1, 1, 1, 1, -1, - 1, 1, 1, 1, -1, 1, -1, 1, -1, 1, - 1, 1, -1, 1, 1, -1, -1, -1, 1, -1, - 1, 1, -1, 1, 1, 1, 1, 1, 1, 1, - -1, 1, 1, -1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, -1, 1, -1, 1, -1, - 1, 1, -1, -1, 1, 1, 1, -1, 1, 1, - -1, 1, -1, 1, -1, -1, -1, -1, -1, 1, - 1, 1, 1, 1, 1, 1, -1, -1, -1, -1, - 1, 1, 1, -1, -1, 1, -1, 1, 1, 1, - 1, 1, -1, -1, 1, 1, -1, 1, 1, -1, - 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 1, - -1, -1, -1, -1, -1, -1, 1, -1, 1, -1, - 1, -1, -1, -1, 1, -1, -1, -1, -1, -1, - -1, -1, 1, 1, -1, 1, 1, -1, 1, 1, - 1, 1, 1, -1, -1, 1, -1, -1, -1, -1, - -1, 1, -1, 1, -1, 1, -1, -1, -1, 1, - 1, 1, 1, 1, 1, 1, -1, 1, -1, -1, - -1, -1, -1, -1, -1, 1, -1, -1, 1, -1, - -1, -1, -1, 1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 1, -1, -1, -1, -1, -1, -1, - 1, 1, -1, -1, -1, -1, -1, -1, -1, 1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 1, - -1, 1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 1, -1, - -1, 1, -1, -1, -1, -1, -1, -1, 1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1] - obserr_demisf: [0.01,0.02,0.03,0.02,0.03] - obserr_dtempf: [0.50,2.00,4.00,2.00,4.00] - maxvalue: 1.0e-12 - action: - name: reject - -# Surface Jacobians Check -- filter: Perform Action - filter variables: - - name: brightnessTemperature - channels: *iasi_metop-b_channels - action: - name: inflate error - inflation variable: - name: ObsFunction/ObsErrorFactorSurfJacobianRad - channels: *iasi_metop-b_channels - options: - channels: *iasi_metop-b_channels - obserr_demisf: [0.01, 0.02, 0.03, 0.02, 0.03] - obserr_dtempf: [0.50, 2.00, 4.00, 2.00, 4.00] - sensor: iasi_metop-b - -# Gross check -- filter: Background Check - filter variables: - - name: brightnessTemperature - channels: *iasi_metop-b_channels - function absolute threshold: - - name: ObsFunction/ObsErrorBoundIR - channels: *iasi_metop-b_channels - options: - channels: *iasi_metop-b_channels - obserr_bound_latitude: - name: ObsFunction/ObsErrorFactorLatRad - options: - latitude_parameters: [25.0, 0.5, 0.04, 1.0] - obserr_bound_transmittop: - name: ObsFunction/ObsErrorFactorTransmitTopRad - channels: *iasi_metop-b_channels - options: - channels: *iasi_metop-b_channels - obserr_bound_max: [ 3.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, - 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, - 2.0, 2.0, 4.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, - 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 4.0, 4.0, - 3.5, 2.5, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, - 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, - 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, - 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, - 3.5, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 3.0, 2.0, 2.0, - 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, - 2.0, 2.0, 2.0, 2.0, 2.5, 2.0, 2.5, 2.5, 3.0, 2.5, - 2.5, 2.5, 2.5, 3.5, 2.5, 2.5, 3.0, 3.5, 3.0, 4.0, - 4.0, 4.0, 4.0, 4.0, 4.0, 4.5, 4.5, 4.5, 4.5, 4.5, - 4.0, 4.5, 4.0, 4.0, 4.5, 2.5, 3.0, 2.5, 3.0, 2.5, - 3.0, 2.0, 2.5, 2.5, 3.0, 3.0, 2.5, 3.0, 3.0, 3.0, - 2.5, 2.5, 4.0, 4.5, 4.5, 5.0, 4.0, 4.0, 5.0, 5.0, - 5.0, 5.0, 5.5, 5.5, 4.0, 5.0, 4.0, 4.5, 5.5, 5.5, - 6.0, 4.5, 4.5, 4.0, 5.0, 5.0, 6.0, 6.0, 6.0, 6.0, - 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, - 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, - 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, - 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, - 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, - 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, - 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, - 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, - 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, - 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, - 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, - 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, - 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, - 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, - 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, - 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, - 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, - 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, - 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, - 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 5.5, 4.5, 6.0, - 5.0, 5.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 5.0, 6.0, - 6.0, 6.0, 4.0, 6.0, 6.0, 6.0, 6.0, 4.5, 6.0, 6.0, - 4.5, 6.0, 6.0, 6.0, 6.0, 6.0, 5.0, 6.0, 6.0, 6.0, - 5.0, 6.0, 6.0, 5.0, 6.0, 5.0, 6.0, 6.0, 6.0, 5.0, - 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, - 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, - 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, - 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, - 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, - 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, - 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, - 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, - 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, - 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, - 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, - 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, - 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, - 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, - 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, - 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, - 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, - 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, - 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, - 6.0, 6.0, 6.0, 6.0, 6.0, 6.0] - error parameter vector: *iasi_metop-b_oberr - action: - name: reject - -# Useflag Check -- filter: Bounds Check - filter variables: - - name: brightnessTemperature - channels: *iasi_metop-b_channels - test variables: - - name: ObsFunction/ChannelUseflagCheckRad - channels: *iasi_metop-b_channels - options: - channels: *iasi_metop-b_channels - use_flag: [ 1, -1, -1, -1, 1, -1, -1, -1, 1, -1, - 1, -1, 1, -1, 1, 1, 1, -1, 1, 1, - -1, 1, 1, 1, -1, -1, 1, 1, -1, 1, - -1, 1, -1, 1, -1, -1, -1, -1, -1, -1, - -1, -1, 1, 1, 1, -1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, -1, 1, 1, 1, 1, -1, 1, 1, 1, - 1, 1, 1, -1, 1, 1, 1, -1, 1, -1, - 1, -1, -1, -1, 1, 1, 1, 1, -1, 1, - 1, -1, 1, 1, 1, -1, 1, -1, 1, -1, - 1, 1, -1, 1, 1, 1, 1, 1, 1, -1, - 1, 1, 1, 1, -1, 1, -1, 1, -1, 1, - 1, 1, -1, 1, 1, -1, -1, -1, 1, -1, - 1, 1, -1, 1, 1, 1, 1, 1, 1, 1, - -1, 1, 1, -1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, -1, 1, -1, 1, -1, - 1, 1, -1, -1, 1, 1, 1, -1, 1, 1, - -1, 1, -1, 1, -1, -1, -1, -1, -1, 1, - 1, 1, 1, 1, 1, 1, -1, -1, -1, -1, - 1, 1, 1, -1, -1, 1, -1, 1, 1, 1, - 1, 1, -1, -1, 1, 1, -1, 1, 1, -1, - 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 1, - -1, -1, -1, -1, -1, -1, 1, -1, 1, -1, - 1, -1, -1, -1, 1, -1, -1, -1, -1, -1, - -1, -1, 1, 1, -1, 1, 1, -1, 1, 1, - 1, 1, 1, -1, -1, 1, -1, -1, -1, -1, - -1, 1, -1, 1, -1, 1, -1, -1, -1, 1, - 1, 1, 1, 1, 1, 1, -1, 1, -1, -1, - -1, -1, -1, -1, -1, 1, -1, -1, 1, -1, - -1, -1, -1, 1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 1, -1, -1, -1, -1, -1, -1, - 1, 1, -1, -1, -1, -1, -1, -1, -1, 1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 1, - -1, 1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 1, -1, - -1, 1, -1, -1, -1, -1, -1, -1, 1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1] - minvalue: 1.0e-12 - action: - name: reject -passedBenchmark: 142616 # 124731 diff --git a/parm/atm/obs/testing/iasi_metop-b_noqc.yaml b/parm/atm/obs/testing/iasi_metop-b_noqc.yaml deleted file mode 100644 index 700c46cd2..000000000 --- a/parm/atm/obs/testing/iasi_metop-b_noqc.yaml +++ /dev/null @@ -1,158 +0,0 @@ -obs space: - name: iasi_metop-b - obsdatain: - engine: - type: H5File - obsfile: iasi_metop-b_obs_${CDATE}_subset.nc4 - _source: gdas - obsdataout: - engine: - type: H5File - obsfile: iasi_metop-b_diag_${CDATE}.nc4 - simulated variables: [brightnessTemperature] - channels: &iasi_metop-b_channels 16, 29, 32, 35, 38, 41, 44, 47, 49, 50, 51, 53, - 55, 56, 57, 59, 61, 62, 63, 66, 68, 70, 72, 74, 76, 78, 79, 81, 82, 83, - 84, 85, 86, 87, 89, 92, 93, 95, 97, 99, 101, 103, 104, 106, 109, 110, - 111, 113, 116, 119, 122, 125, 128, 131, 133, 135, 138, 141, 144, 146, - 148, 150, 151, 154, 157, 159, 160, 161, 163, 167, 170, 173, 176, 179, - 180, 185, 187, 191, 193, 197, 199, 200, 202, 203, 205, 207, 210, 212, - 213, 214, 217, 218, 219, 222, 224, 225, 226, 228, 230, 231, 232, 236, - 237, 239, 243, 246, 249, 252, 254, 259, 260, 262, 265, 267, 269, 275, - 279, 282, 285, 294, 296, 299, 300, 303, 306, 309, 313, 320, 323, 326, - 327, 329, 332, 335, 345, 347, 350, 354, 356, 360, 363, 366, 371, 372, - 373, 375, 377, 379, 381, 383, 386, 389, 398, 401, 404, 405, 407, 408, - 410, 411, 414, 416, 418, 423, 426, 428, 432, 433, 434, 439, 442, 445, - 450, 457, 459, 472, 477, 483, 509, 515, 546, 552, 559, 566, 571, 573, - 578, 584, 594, 625, 646, 662, 668, 705, 739, 756, 797, 867, 906, 921, - 1027, 1046, 1090, 1098, 1121, 1133, 1173, 1191, 1194, 1222, 1271, 1283, - 1338, 1409, 1414, 1420, 1424, 1427, 1430, 1434, 1440, 1442, 1445, 1450, - 1454, 1460, 1463, 1469, 1474, 1479, 1483, 1487, 1494, 1496, 1502, 1505, - 1509, 1510, 1513, 1518, 1521, 1526, 1529, 1532, 1536, 1537, 1541, 1545, - 1548, 1553, 1560, 1568, 1574, 1579, 1583, 1585, 1587, 1606, 1626, 1639, - 1643, 1652, 1658, 1659, 1666, 1671, 1675, 1681, 1694, 1697, 1710, 1786, - 1791, 1805, 1839, 1884, 1913, 1946, 1947, 1991, 2019, 2094, 2119, 2213, - 2239, 2271, 2289, 2321, 2333, 2346, 2349, 2352, 2359, 2367, 2374, 2398, - 2426, 2562, 2701, 2741, 2745, 2760, 2819, 2889, 2907, 2910, 2919, 2921, - 2939, 2944, 2945, 2948, 2951, 2958, 2971, 2977, 2985, 2988, 2990, 2991, - 2993, 3002, 3008, 3014, 3027, 3029, 3030, 3036, 3047, 3049, 3052, 3053, - 3055, 3058, 3064, 3069, 3087, 3093, 3098, 3105, 3107, 3110, 3116, 3127, - 3129, 3136, 3146, 3151, 3160, 3165, 3168, 3175, 3178, 3189, 3207, 3228, - 3244, 3248, 3252, 3256, 3263, 3281, 3295, 3303, 3309, 3312, 3322, 3326, - 3354, 3366, 3375, 3378, 3411, 3416, 3432, 3438, 3440, 3442, 3444, 3446, - 3448, 3450, 3452, 3454, 3458, 3467, 3476, 3484, 3491, 3497, 3499, 3504, - 3506, 3509, 3518, 3527, 3555, 3575, 3577, 3580, 3582, 3586, 3589, 3599, - 3610, 3626, 3638, 3646, 3653, 3658, 3661, 3673, 3689, 3700, 3710, 3726, - 3763, 3814, 3841, 3888, 4032, 4059, 4068, 4082, 4095, 4160, 4234, 4257, - 4411, 4498, 4520, 4552, 4567, 4608, 4646, 4698, 4808, 4849, 4920, 4939, - 4947, 4967, 4991, 4996, 5015, 5028, 5056, 5128, 5130, 5144, 5170, 5178, - 5183, 5188, 5191, 5368, 5371, 5379, 5381, 5383, 5397, 5399, 5401, 5403, - 5405, 5446, 5455, 5472, 5480, 5483, 5485, 5492, 5497, 5502, 5507, 5509, - 5517, 5528, 5558, 5697, 5714, 5749, 5766, 5785, 5798, 5799, 5801, 5817, - 5833, 5834, 5836, 5849, 5851, 5852, 5865, 5869, 5881, 5884, 5897, 5900, - 5916, 5932, 5948, 5963, 5968, 5978, 5988, 5992, 5994, 5997, 6003, 6008, - 6023, 6026, 6039, 6053, 6056, 6067, 6071, 6082, 6085, 6098, 6112, 6126, - 6135, 6140, 6149, 6154, 6158, 6161, 6168, 6174, 6182, 6187, 6205, 6209, - 6213, 6317, 6339, 6342, 6366, 6381, 6391, 6489, 6962, 6966, 6970, 6975, - 6977, 6982, 6985, 6987, 6989, 6991, 6993, 6995, 6997, 6999, 7000, 7004, - 7008, 7013, 7016, 7021, 7024, 7027, 7029, 7032, 7038, 7043, 7046, 7049, - 7069, 7072, 7076, 7081, 7084, 7089, 7099, 7209, 7222, 7231, 7235, 7247, - 7267, 7269, 7284, 7389, 7419, 7423, 7424, 7426, 7428, 7431, 7436, 7444, - 7475, 7549, 7584, 7665, 7666, 7831, 7836, 7853, 7865, 7885, 7888, 7912, - 7950, 7972, 7980, 7995, 8007, 8015, 8055, 8078 -geovals: - filename: iasi_metop-b_geoval_${CDATE}_subset.nc4 -obs operator: - name: CRTM - Absorbers: [H2O,O3,CO2] - obs options: - Sensor_ID: iasi_metop-b - EndianType: little_endian - CoefficientPath: crtm/ -obs bias: - input file: iasi_metop-b_satbias_${GDATE}.nc4 - variational bc: - predictors: - - name: constant - - name: lapse_rate - order: 2 - tlapse: &iasi_metop-b_tlap iasi_metop-b_tlapmean_${GDATE}.txt - - name: lapse_rate - tlapse: *iasi_metop-b_tlap - - name: emissivity - - name: scan_angle - order: 4 - - name: scan_angle - order: 3 - - name: scan_angle - order: 2 - - name: scan_angle -# covariance: -# minimal required obs number: 20 -# variance range: [1.0e-6, 10.0] -# step size: 1.0e-4 -# largest analysis variance: 10000.0 -# prior: -# inflation: -# ratio: 1.1 -# ratio for small dataset: 2.0 - -obs prior filters: -- filter: Perform Action - filter variables: - - name: brightnessTemperature - channels: *iasi_metop-b_channels - action: - name: assign error - error parameter vector: &iasi_metop-b_oberr [ 1.38, 0.81, 0.75, 0.79, 0.72, 0.74, 0.68, 0.72, 0.65, 0.65, - 0.65, 0.69, 0.64, 0.64, 0.65, 0.67, 0.62, 0.61, 0.62, 0.64, 0.59, 0.76, - 1.22, 0.78, 0.64, 0.62, 0.61, 0.69, 0.65, 0.59, 0.61, 0.59, 0.68, 0.62, - 0.68, 4.38, 3.05, 2.31, 1.56, 1.33, 1.58, 0.93, 1.67, 0.72, 0.57, 0.58, - 0.55, 0.68, 0.59, 0.68, 0.59, 0.65, 0.58, 0.62, 0.64, 0.58, 0.64, 0.55, - 0.64, 0.5, 0.82, 0.59, 0.62, 0.51, 0.64, 0.52, 0.51, 0.51, 0.76, 0.52, - 0.57, 0.55, 0.69, 0.58, 0.65, 0.61, 0.59, 0.64, 0.76, 0.72, 1.05, 0.75, - 0.51, 0.65, 1.3, 0.69, 0.93, 1.49, 1.12, 0.68, 0.66, 0.67, 0.59, 0.59, - 0.69, 0.67, 0.64, 0.62, 0.72, 0.69, 0.66, 0.79, 0.78, 0.74, 0.88, 0.77, - 0.88, 0.86, 1, 0.87, 0.85, 0.88, 0.84, 0.84, 0.84, 0.8, 0.8, 0.87, - 0.98, 0.52, 0.65, 0.69, 0.61, 0.6, 0.67, 0.79, 0.62, 0.66, 0.7, 0.65, - 0.62, 0.61, 0.62, 0.53, 0.6, 0.68, 0.95, 0.63, 0.97, 0.65, 0.98, 0.58, - 0.73, 0.65, 0.85, 0.99, 0.76, 0.85, 0.97, 0.77, 0.62, 0.63, 1.21, 1.41, - 1.55, 1.78, 1.35, 1.14, 1.69, 1.79, 1.46, 1.63, 1.94, 2.01, 1.24, 1.76, - 1.26, 1.47, 1.9, 1.66, 2.13, 1.49, 1.52, 1.55, 1.96, 2.31, 2.33, 2.32, - 2.31, 2.33, 2.23, 2.33, 1.84, 2.29, 2.28, 2.28, 2.28, 2.26, 2.26, 2.26, - 2.27, 2.24, 2.23, 2.24, 2.26, 2.28, 2.28, 2.3, 2.15, 2.31, 2.37, 2.27, - 2.29, 2.29, 2.23, 2.28, 2.32, 2.32, 2.31, 2.32, 2.32, 2.31, 2.31, 2.28, - 2.29, 2.28, 2.26, 2.29, 2.27, 2.26, 2.25, 2.27, 2.24, 2.21, 2.24, 2.17, - 2.18, 2.17, 2.21, 1.99, 2.16, 2.2, 2.13, 2.12, 2.13, 2.1, 2.12, 2.11, - 2.09, 2.09, 2.08, 2.09, 2.04, 2.04, 2.1, 2.01, 2.05, 2.03, 2.06, 1.98, - 1.95, 1.94, 1.91, 1.7, 1.76, 1.77, 1.83, 2.04, 1.91, 1.99, 1.99, 2.07, - 2.02, 2.04, 2.1, 2.06, 2.18, 2.21, 2.24, 2.23, 2.23, 1.98, 2.2, 2.18, - 2.18, 2.21, 2.23, 2.24, 2.24, 2.25, 1.8, 2.24, 1.73, 1.73, 2.27, 1.67, - 2.21, 1.72, 2.23, 2.23, 2.23, 2.24, 2.23, 2.12, 2.17, 1.74, 2.02, 1.88, - 1.67, 1.73, 1.83, 1.82, 1.73, 1.83, 2.19, 1.84, 1.89, 1.6, 1.71, 1.86, - 1.85, 1.84, 1.87, 1.91, 1.52, 1.95, 1.87, 1.89, 1.91, 1.91, 1.93, 1.9, - 1.91, 1.9, 1.89, 1.89, 1.91, 1.9, 1.91, 1.91, 1.91, 1.93, 1.94, 1.91, - 1.92, 1.77, 1.91, 1.95, 1.19, 1.96, 1.98, 1.94, 1.55, 1.91, 1.92, 1.92, - 1.97, 1.93, 1.99, 1.86, 1.12, 1.93, 1.92, 1.95, 1.85, 1.84, 1.91, 1.12, - 1.82, 1.82, 1.95, 1.24, 1.94, 1.96, 1.21, 1.83, 1.96, 1.36, 1.96, 1.82, - 1.92, 1.68, 1.93, 1.23, 1.96, 1.93, 1.86, 1.41, 1.16, 1.6, 1.25, 1.2, - 1.65, 1.66, 1.87, 1.94, 1.96, 1.91, 1.25, 1.93, 1.91, 1.7, 0.99, 1.81, - 1.92, 1.95, 1.5, 1.47, 1.15, 1.58, 1.18, 1.82, 1.13, 1.83, 1.91, 1.26, - 1.27, 1.91, 1.45, 1.6, 1.29, 1.94, 1.94, 1.23, 1.95, 1.21, 1.94, 1.86, - 1.9, 1.33, 1.75, 2.02, 1.98, 2.03, 1.83, 1.5, 2.04, 2.02, 1.9, 2, 2.02, - 1.95, 1.93, 1.95, 1.95, 1.99, 2, 1.94, 1.96, 1.86, 1.92, 1.88, 1.86, - 1.84, 1.87, 1.77, 1.89, 1.89, 1.88, 1.94, 1.82, 1.79, 1.86, 2.06, 2.33, - 1.88, 1.86, 1.81, 1.8, 1.8, 1.86, 1.9, 2, 2.06, 2.1, 2.2, 2, 2.16, - 1.98, 1.8, 1.8, 1.85, 1.75, 2.04, 2.19, 2.14, 2.19, 1.86, 2.1, 2.11, - 2.18, 2.03, 2.28, 2.19, 2.26, 2.26, 2.21, 2.21, 2.26, 2.33, 2.27, 2.21, - 2.12, 2.23, 2.26, 2.25, 1.88, 2.26, 2.24, 2.36, 2.29, 2.35, 2.3, 2.27, - 2.08, 2.05, 2.27, 2.28, 2.27, 2.28, 1.97, 2.25, 2.25, 2.25, 2.31, 2.28, - 2.27, 2.13, 2.24, 2.28, 2.28, 2.41, 2.34, 9.32, 2.28, 2.38, 2.27, 2.27, - 2.39, 2.11, 2.09, 2.1, 2.06, 2.12, 2.08, 2, 1.93, 2.02, 2.55, 1.54, - 1.64, 1.51, 1.55, 2.82, 2.92, 2.55, 2.37, 1.85, 1.6, 1.72, 1.74, 1.79, - 1.9, 1.94, 2, 2.04, 2.08, 2.12, 2.13, 2.16, 2.18, 2.18, 2.2, 2.2, 2.41, - 2.39, 2.38, 2.4, 2.42, 2.41, 2.43, 2.45, 2.43, 2.45, 2.43, 2.4, 2.44, - 2.4, 2.42, 2.43, 2.45, 2.45, 2.45, 2.46, 2.45, 2.45, 2.43, 2.51, 2.48, - 2.48, 2.53, 2.46, 2.49, 2.5, 2.5, 2.5, 2.52, 2.52, 2.54, 2.5, 2.48, - 2.5, 2.55, 2.5, 2.48, 2.5, 2.5, 2.52, 2.52, 2.48, 2.5, 2.5, 2.52, 2.46, - 2.53, 9 ] -passedBenchmark: 790328 diff --git a/parm/atm/obs/testing/mhs_metop-b.yaml b/parm/atm/obs/testing/mhs_metop-b.yaml deleted file mode 100644 index 326b98eb8..000000000 --- a/parm/atm/obs/testing/mhs_metop-b.yaml +++ /dev/null @@ -1,177 +0,0 @@ -obs operator: - name: CRTM - Absorbers: [H2O,O3,CO2] - obs options: - Sensor_ID: &Sensor_ID mhs_metop-b - EndianType: little_endian - CoefficientPath: crtm/ -obs space: - name: mhs_metop-b - obsdatain: - engine: - type: H5File - obsfile: !ENV mhs_metop-b_obs_${CDATE}.nc4 - obsdataout: - engine: - type: H5File - obsfile: !ENV mhs_metop-b_diag_${CDATE}.nc4 - simulated variables: [brightnessTemperature] - channels: &all_channels 1-5 -geovals: - filename: !ENV mhs_metop-b_geoval_${CDATE}.nc4 - -obs bias: - input file: !ENV mhs_metop-b_satbias_${GDATE}.nc4 - variational bc: - predictors: - - name: constant - - name: lapse_rate - order: 2 - tlapse: &mhs_metop-b_tlap !ENV mhs_metop-b_tlapmean_${GDATE}.txt - - name: lapse_rate - tlapse: *mhs_metop-b_tlap - - name: emissivity - - name: scan_angle - order: 4 - - name: scan_angle - order: 3 - - name: scan_angle - order: 2 - - name: scan_angle - -obs prior filters: -# Assign obs error for each channel -- filter: Perform Action - filter variables: - - name: brightnessTemperature - channels: *all_channels - action: - name: assign error - error parameter vector: [2.50, 2.50, 2.50, 2.00, 2.00] - - -obs post filters: -# Error inflation based on surface jacobian -- filter: Variable Assignment - assignments: - - name: DerivedMetaData/ObsErrorFactorSurfJacobian - channels: *all_channels - type: float - function: - name: ObsFunction/ObsErrorFactorSurfJacobianRad - channels: *all_channels - options: - sensor: *Sensor_ID - channels: *all_channels - use_flag: [ 1, 1, -1, 1, 1 ] - obserr_demisf: [0.015, 0.090, 0.060, 0.060, 0.750] - obserr_dtempf: [0.500, 6.000, 3.000, 6.000, 15.000] - -- filter: RejectList - filter variables: - - name: brightnessTemperature - channels: 1-2 - where: - - variable: - name: GeoVaLs/water_area_fraction - maxvalue: 0.99 - - -# BennartzScatIndex check -- filter: Bounds Check - filter variables: - - name: brightnessTemperature - channels: *all_channels - test variables: - - name: ObsFunction/BennartzScatIndex - options: - channel_89ghz: 1 # MHS 89.00 GHz channel - channel_150ghz: 2 # MHS 157.00 GHz channel - bennartz_coeff_1: 0.158 - bennartz_coeff_2: 0.0163 - apply_bias: ObsBiasData - maxvalue: -1.0 - action: - name: reject - - -# Observation error inflation based on topography check -- filter: Perform Action - filter variables: - - name: brightnessTemperature - channels: *all_channels - action: - name: inflate error - inflation variable: - name: ObsFunction/ObsErrorFactorTopoRad - channels: *all_channels - options: - sensor: *Sensor_ID - channels: *all_channels - -# Transmittance Top Check -- filter: Perform Action - filter variables: - - name: brightnessTemperature - channels: *all_channels - action: - name: inflate error - inflation variable: - name: ObsFunction/ObsErrorFactorTransmitTopRad - channels: *all_channels - options: - channels: *all_channels - -# Error inflation based on surface jacobian -- filter: Variable Assignment - assignments: - - name: DerivedMetaData/ObsErrorFactorSurfJacobian - channels: *all_channels - type: float - function: - name: ObsFunction/ObsErrorFactorSurfJacobianRad - channels: *all_channels - options: - sensor: *Sensor_ID - channels: *all_channels - use_flag: [ 1, 1, -1, 1, 1 ] - obserr_demisf: [0.015, 0.090, 0.060, 0.060, 0.750] - obserr_dtempf: [0.500, 6.000, 3.000, 6.000, 15.000] - -# Gross check wv sounding channels in GSI -- filter: Background Check - filter variables: - - name: brightnessTemperature - channels: 3-5 - absolute threshold: 2.0 - action: - name: reject - -# Gross check -- filter: Background Check - filter variables: - - name: brightnessTemperature - channels: *all_channels - threshold: 3.0 - action: - name: reject - - -# Inter-channel check -- filter: Bounds Check - filter variables: - - name: brightnessTemperature - channels: *all_channels - test variables: - - name: ObsFunction/InterChannelConsistencyCheck - channels: *all_channels - options: - channels: *all_channels - use passive_bc: true - sensor: *Sensor_ID - use_flag: [ 1, 1, 1, 1, 1] - maxvalue: 1.0e-12 - actions: - - name: reject - -passedBenchmark: 18125 diff --git a/parm/atm/obs/testing/mhs_n19.yaml b/parm/atm/obs/testing/mhs_n19.yaml deleted file mode 100644 index cd8de0b39..000000000 --- a/parm/atm/obs/testing/mhs_n19.yaml +++ /dev/null @@ -1,161 +0,0 @@ -obs operator: - name: CRTM - Absorbers: [H2O,O3,CO2] - obs options: - Sensor_ID: &Sensor_ID mhs_n19 - EndianType: little_endian - CoefficientPath: crtm/ -obs space: - name: mhs_n19 - obsdatain: - engine: - type: H5File - obsfile: !ENV mhs_n19_obs_${CDATE}.nc4 - obsdataout: - engine: - type: H5File - obsfile: !ENV mhs_n19_diag_${CDATE}.nc4 - simulated variables: [brightnessTemperature] - channels: &all_channels 1-5 -geovals: - filename: !ENV mhs_n19_geoval_${CDATE}.nc4 - -obs bias: - input file: !ENV mhs_n19_satbias_${GDATE}.nc4 - variational bc: - predictors: - - name: constant - - name: lapse_rate - order: 2 - tlapse: &mhs_n19_tlap !ENV mhs_n19_tlapmean_${GDATE}.txt - - name: lapse_rate - tlapse: *mhs_n19_tlap - - name: emissivity - - name: scan_angle - order: 4 - - name: scan_angle - order: 3 - - name: scan_angle - order: 2 - - name: scan_angle - -obs prior filters: -# Assign obs error for each channel -- filter: Perform Action - filter variables: - - name: brightnessTemperature - channels: *all_channels - action: - name: assign error - error parameter vector: [2.50, 2.50, 2.50, 2.00, 2.00] - -obs post filters: - -# Error inflation based on surface jacobian -- filter: Variable Assignment - assignments: - - name: DerivedMetaData/ObsErrorFactorSurfJacobian - channels: *all_channels - type: float - function: - name: ObsFunction/ObsErrorFactorSurfJacobianRad - channels: *all_channels - options: - sensor: *Sensor_ID - channels: *all_channels - use_flag: [ 1, 1, -1, 1, 1 ] - obserr_demisf: [0.015, 0.090, 0.060, 0.060, 0.750] - obserr_dtempf: [0.500, 6.000, 3.000, 6.000, 15.000] - -- filter: RejectList - filter variables: - - name: brightnessTemperature - channels: 1-2 - where: - - variable: - name: GeoVaLs/water_area_fraction - maxvalue: 0.99 - -# BennartzScatIndex check -- filter: Bounds Check - filter variables: - - name: brightnessTemperature - channels: *all_channels - test variables: - - name: ObsFunction/BennartzScatIndex - options: - channel_89ghz: 1 # MHS 89.00 GHz channel - channel_150ghz: 2 # MHS 157.00 GHz channel - bennartz_coeff_1: 0.158 - bennartz_coeff_2: 0.0163 - apply_bias: ObsBiasData - maxvalue: -1.0 - action: - name: reject - - -# Observation error inflation based on topography check -- filter: Perform Action - filter variables: - - name: brightnessTemperature - channels: *all_channels - action: - name: inflate error - inflation variable: - name: ObsFunction/ObsErrorFactorTopoRad - channels: *all_channels - options: - sensor: *Sensor_ID - channels: *all_channels - -# Transmittance Top Check -- filter: Perform Action - filter variables: - - name: brightnessTemperature - channels: *all_channels - action: - name: inflate error - inflation variable: - name: ObsFunction/ObsErrorFactorTransmitTopRad - channels: *all_channels - options: - channels: *all_channels - - -# Gross check wv sounding channels in GSI -- filter: Background Check - filter variables: - - name: brightnessTemperature - channels: 3-5 - absolute threshold: 2.0 - action: - name: reject - -# Gross check -- filter: Background Check - filter variables: - - name: brightnessTemperature - channels: *all_channels - threshold: 3.0 - action: - name: reject - - -# Inter-channel check -- filter: Bounds Check - filter variables: - - name: brightnessTemperature - channels: *all_channels - test variables: - - name: ObsFunction/InterChannelConsistencyCheck - channels: *all_channels - options: - channels: *all_channels - use passive_bc: true - sensor: *Sensor_ID - use_flag: [ 1, 1, 1, 1, 1] - maxvalue: 1.0e-12 - actions: - - name: reject - -passedBenchmark: 7714 diff --git a/parm/atm/obs/testing/omi_aura.yaml b/parm/atm/obs/testing/omi_aura.yaml deleted file mode 100644 index b409700ad..000000000 --- a/parm/atm/obs/testing/omi_aura.yaml +++ /dev/null @@ -1,93 +0,0 @@ -obs space: - name: omi_aura - obsdatain: - engine: - type: H5File - obsfile: !ENV omi_aura_obs_${CDATE}.nc4 - obsdataout: - engine: - type: H5File - obsfile: !ENV omi_aura_diag_${CDATE}.nc4 - io pool: - max pool size: 1 - simulated variables: [ozoneTotal] - -geovals: - filename: !ENV omi_aura_geoval_${CDATE}.nc4 - -obs operator: - name: AtmVertInterpLay - geovals: [mole_fraction_of_ozone_in_air] - coefficients: [0.007886131] # convert from ppmv to DU - nlevels: [1] - -obs pre filters: -- filter: Perform Action - filter variables: - - name: ozoneTotal - action: - name: assign error - error parameter: 6.0 - -obs prior filters: -# GSI read routine QC -# range sanity check -- filter: Bounds Check - filter variables: - - name: ozoneTotal - minvalue: 0 - maxvalue: 10000 - action: - name: reject - -# Do not use the data if row anomaly (bit 10)is 1 -- filter: RejectList - filter variables: - - name: ozoneTotal - where: - - variable: - name: MetaData/totalOzoneQualityFlag - any_bit_set_of: 9 - -# Scan position check: reject scan position >= 25 -- filter: RejectList - filter variables: - - name: ozoneTotal - where: - - variable: - name: MetaData/sensorScanPosition - minvalue: 25 - -# Accept total_ozone_error_flag values of 0 and 1, but not any others. -- filter: RejectList - filter variables: - - name: ozoneTotal - where: - - variable: - name: MetaData/totalOzoneQualityCode - is_not_in: 0, 1 - -# Use data with best ozone algorighm -- filter: RejectList - filter variables: - - name: ozoneTotal - where: - - variable: - name: MetaData/bestOzoneAlgorithmFlag - is_in: 3, 13 - -obs post filters: -# GSI setup routine QC -# Gross check -- filter: Background Check - filter variables: - - name: ozoneTotal - threshold: 10.0 - absolute threshold: 300.0 - action: - name: reject - -# End of Filters -passedBenchmark: 1182 # GSI modified : keep bad data and then thinned ----- this is to check QC in the read routine - # GSI original: remove bad data and then thinned - # original: thinned: 2402; unthinned: 53768 diff --git a/parm/atm/obs/testing/omi_aura_noqc.yaml b/parm/atm/obs/testing/omi_aura_noqc.yaml deleted file mode 100644 index 0cabf0c9a..000000000 --- a/parm/atm/obs/testing/omi_aura_noqc.yaml +++ /dev/null @@ -1,35 +0,0 @@ -obs space: - name: omi_aura - obsdatain: - engine: - type: H5File - obsfile: !ENV omi_aura_obs_${CDATE}.nc4 - obsdataout: - engine: - type: H5File - obsfile: !ENV omi_aura_diag_${CDATE}.nc4 - io pool: - max pool size: 1 - simulated variables: [ozoneTotal] - -geovals: - filename: !ENV omi_aura_geoval_${CDATE}.nc4 - -obs operator: - name: AtmVertInterpLay - geovals: [mole_fraction_of_ozone_in_air] - coefficients: [0.007886131] # convert from ppmv to DU -# coefficients: [0.0078976797] # convert from ppmv to DU - nlevels: [1] - -obs pre filters: -- filter: Perform Action - filter variables: - - name: ozoneTotal - action: - name: assign error - error parameter: 6.0 - -passedBenchmark: 4980 # total:6140; missing:1180 -#vector ref: GsiHofXBc -#tolerance: 1.e-5 diff --git a/parm/atm/obs/testing/ompsnp_npp.yaml b/parm/atm/obs/testing/ompsnp_npp.yaml deleted file mode 100644 index 0071d3284..000000000 --- a/parm/atm/obs/testing/ompsnp_npp.yaml +++ /dev/null @@ -1,291 +0,0 @@ -obs space: - name: ompsnp_npp - obsdatain: - engine: - type: H5File - obsfile: !ENV ompsnp_npp_obs_${CDATE}.nc4 - obsgrouping: - group variables: ["latitude"] - sort variable: "pressure" - sort order: "ascending" - obsdataout: - engine: - type: H5File - obsfile: !ENV ompsnp_npp_diag_${CDATE}.nc4 - io pool: - max pool size: 1 - simulated variables: [ozoneLayer] - -geovals: - filename: !ENV ompsnp_npp_geoval_${CDATE}.nc4 - -obs operator: - name: AtmVertInterpLay - geovals: [mole_fraction_of_ozone_in_air] - coefficients: [0.007886131] # convert from ppmv to DU - nlevels: [22] - -obs pre filters: -# Observation error assignment -- filter: Perform Action - filter variables: - - name: ozoneLayer - action: - name: assign error - error function: - name: ObsFunction/ObsErrorModelStepwiseLinear - options: - xvar: - name: MetaData/pressure - xvals: [0.001, 10.1325, 16.00935, 25.43258, 40.32735, 63.93607, 101.325, 160.0935, 254.3257, 403.2735, 639.3608, 1013.25, 1600.935, 2543.258, 4032.735, 6393.607, 10132.5, 16009.35, 25432.57, 40327.35, 63936.07, 101325] - errors: [7.7236, 0.020, 0.020, 0.025, 0.080, 0.150, 0.056, 0.125, 0.200, 0.299, 0.587, 0.864, 1.547, 2.718, 3.893, 4.353, 3.971, 4.407, 4.428, 3.312, 2.198, 2.285] -# errors: [7.7236, 0.020, 0.020, 0.025, 0.040, 0.080, 0.156, 0.245, 0.510, 1.098, 3.917, 6.124, 6.347, 5.798, 6.843, 9.253, 10.091, 10.967, 8.478, 5.572, 2.638, 3.525] # operational from gfs.v16.3.9 (late 2023) -obs prior filters: -# Do not assimilation where pressure is zero -# Zero pressure indicates the data is total column ozone -- filter: RejectList - filter variables: - - name: ozoneLayer - where: - - variable: - name: MetaData/pressure - maxvalue: 0.0001 - -# Sanity check on observaton values -- filter: Bounds Check - filter variables: - - name: ozoneLayer - minvalue: 0 - maxvalue: 1000 - action: - name: reject - -# Total Ozone Quality Check (keeps 0, 2) -# 0 indentifies good data -# 2 identifies good data with a solar zenith angle > 84 degrees -- filter: RejectList - filter variables: - - name: ozoneLayer - where: - - variable: - name: MetaData/totalOzoneQuality - is_not_in: 0, 2 - -# Profile Ozone Quality Check (keeps 0, 1, 7) -# 0 : good data -# 1 : good data with a solar zenith angle > 84 degrees -# 7 : profile for which stray light correction applied -- filter: RejectList - filter variables: - - name: ozoneLayer - where: - - variable: - name: MetaData/profileOzoneQuality - is_not_in: 0, 1, 7 - -obs post filters: -# Gross error check -- filter: Background Check - filter variables: - - name: ozoneLayer - absolute threshold: 120 - action: - name: reject - where: - - variable: - name: MetaData/pressure - maxvalue: 0.001 - -- filter: Background Check - filter variables: - - name: ozoneLayer - absolute threshold: 30 - action: - name: reject - where: - - variable: - name: MetaData/pressure - minvalue: 30000.0 - maxvalue: 110000.0 - -- filter: Background Check - filter variables: - - name: ozoneLayer - absolute threshold: 40 - action: - name: reject - where: - - variable: - name: MetaData/pressure - minvalue: 20000.0 - maxvalue: 30000.0 - -- filter: Background Check - filter variables: - - name: ozoneLayer - absolute threshold: 44.42 - action: - name: reject - where: - - variable: - name: MetaData/pressure - minvalue: 10100.0 - maxvalue: 20000.0 - -- filter: Background Check - filter variables: - - name: ozoneLayer - absolute threshold: 57.52 - action: - name: reject - where: - - variable: - name: MetaData/pressure - minvalue: 6400.0 - maxvalue: 10100.0 - -- filter: Background Check - filter variables: - - name: ozoneLayer - absolute threshold: 69.4 - action: - name: reject - where: - - variable: - name: MetaData/pressure - minvalue: 4000.0 - maxvalue: 6400.0 - -- filter: Background Check - filter variables: - - name: ozoneLayer - absolute threshold: 70 - action: - name: reject - where: - - variable: - name: MetaData/pressure - minvalue: 2600.0 - maxvalue: 4000.0 - -- filter: Background Check - filter variables: - - name: ozoneLayer - absolute threshold: 62.73 - action: - name: reject - where: - - variable: - name: MetaData/pressure - minvalue: 1600.0 - maxvalue: 2600.0 - -- filter: Background Check - filter variables: - - name: ozoneLayer - absolute threshold: 50.52 - action: - name: reject - where: - - variable: - name: MetaData/pressure - minvalue: 1100.0 - maxvalue: 1600.0 - -- filter: Background Check - filter variables: - - name: ozoneLayer - absolute threshold: 35.9 - action: - name: reject - where: - - variable: - name: MetaData/pressure - minvalue: 700.0 - maxvalue: 1100.0 - -- filter: Background Check - filter variables: - - name: ozoneLayer - absolute threshold: 26.41 - action: - name: reject - where: - - variable: - name: MetaData/pressure - minvalue: 400.0 - maxvalue: 700.0 - -- filter: Background Check - filter variables: - - name: ozoneLayer - absolute threshold: 20.51 - action: - name: reject - where: - - variable: - name: MetaData/pressure - minvalue: 300.0 - maxvalue: 400.0 - -- filter: Background Check - filter variables: - - name: ozoneLayer - absolute threshold: 12.82 - action: - name: reject - where: - - variable: - name: MetaData/pressure - minvalue: 200.0 - maxvalue: 300.0 - -- filter: Background Check - filter variables: - - name: ozoneLayer - absolute threshold: 10 - action: - name: reject - where: - - variable: - name: MetaData/pressure - maxvalue: 70.0 - maxvalue: 200.0 - -- filter: Background Check - filter variables: - - name: ozoneLayer - absolute threshold: 5 - action: - name: reject - where: - - variable: - name: MetaData/pressure - minvalue: 40.0 - maxvalue: 70.0 - -- filter: Background Check - filter variables: - - name: ozoneLayer - absolute threshold: 2 - action: - name: reject - where: - - variable: - name: MetaData/pressure - minvalue: 30.0 - maxvalue: 40.0 - -- filter: Background Check - filter variables: - - name: ozoneLayer - absolute threshold: 1 - action: - name: reject - where: - - variable: - name: MetaData/pressure - maxvalue: 30.0 - -# End of Filters -passedBenchmark: 4914 diff --git a/parm/atm/obs/testing/ompsnp_npp_noqc.yaml b/parm/atm/obs/testing/ompsnp_npp_noqc.yaml deleted file mode 100644 index 9a2d6c6b4..000000000 --- a/parm/atm/obs/testing/ompsnp_npp_noqc.yaml +++ /dev/null @@ -1,47 +0,0 @@ -obs space: - name: ompsnp_npp - obsdatain: - engine: - type: H5File - obsfile: !ENV ompsnp_npp_obs_${CDATE}.nc4 - obsgrouping: - group variables: ["latitude"] - sort variable: "pressure" - sort order: "ascending" - obsdataout: - engine: - type: H5File - obsfile: !ENV ompsnp_npp_diag_${CDATE}.nc4 - io pool: - max pool size: 1 - simulated variables: [ozoneLayer] - -geovals: - filename: !ENV ompsnp_npp_geoval_${CDATE}.nc4 - -obs operator: - name: AtmVertInterpLay - geovals: [mole_fraction_of_ozone_in_air] - coefficients: [0.007886131] # convert from ppmv to DU - nlevels: [22] - -# Observation Error Assignment -obs pre filters: -- filter: Perform Action - filter variables: - - name: ozoneLayer - action: - name: assign error - error function: - name: ObsFunction/ObsErrorModelStepwiseLinear - options: - xvar: - name: MetaData/pressure - xvals: [0.001, 10.1325, 16.00935, 25.43258, 40.32735, 63.93607, 101.325, 160.0935, 254.3257, 403.2735, 639.3608, 1013.25, 1600.935, 2543.258, 4032.735, 6393.607, 10132.5, 16009.35, 25432.57, 40327.35, 63936.07, 101325] - errors: [7.7236, 0.020, 0.020, 0.025, 0.080, 0.150, 0.056, 0.125, 0.200, 0.299, 0.587, 0.864, 1.547, 2.718, 3.893, 4.353, 3.971, 4.407, 4.428, 3.312, 2.198, 2.285] -# errors: [7.7236, 0.020, 0.020, 0.025, 0.040, 0.080, 0.156, 0.245, 0.510, 1.098, 3.917, 6.124, 6.347, 5.798, 6.843, 9.253, 10.091, 10.967, 8.478, 5.572, 2.638, 3.525] # operational from gfs.v16.3.9 (late 2023) - -passedBenchmark: 6314 # total:6314; missing:0 -#vector ref: GsiHofXBc -#tolerance: 1.e-5 - diff --git a/parm/atm/obs/testing/ompstc_npp.yaml b/parm/atm/obs/testing/ompstc_npp.yaml deleted file mode 100644 index 8f10bb5d2..000000000 --- a/parm/atm/obs/testing/ompstc_npp.yaml +++ /dev/null @@ -1,95 +0,0 @@ -obs space: - name: ompstc_npp - obsdatain: - engine: - type: H5File - obsfile: !ENV ompstc_npp_obs_${CDATE}.nc4 - obsdataout: - engine: - type: H5File - obsfile: !ENV ompstc_npp_diag_${CDATE}.nc4 - io pool: - max pool size: 1 - simulated variables: [ozoneTotal] - -geovals: - filename: !ENV ompstc_npp_geoval_${CDATE}.nc4 - -obs operator: - name: AtmVertInterpLay - geovals: [mole_fraction_of_ozone_in_air] - coefficients: [0.007886131] # convert from ppmv to DU - nlevels: [1] - -obs pre filters: -- filter: Perform Action - filter variables: - - name: ozoneTotal - action: - name: assign error - error parameter: 6.0 - -obs prior filters: -# GSI read routine QC -# range sanity check -- filter: Bounds Check - filter variables: - - name: ozoneTotal - minvalue: 0 - maxvalue: 1000 - action: - name: reject - -# Accept total_ozone_error_flag values of 0 and 1, but not any others. -- filter: RejectList - filter variables: - - name: ozoneTotal - where: - - variable: - name: MetaData/totalOzoneQualityCode - is_not_in: 0, 1 - -- filter: RejectList - filter variables: - - name: ozoneTotal - where: - - variable: - name: MetaData/bestOzoneAlgorithmFlag - is_in: 3, 13 - -# GSI setup routine QC -- filter: RejectList - filter variables: - - name: ozoneTotal - where: - - variable: - name: MetaData/sensorScanPosition - is_in: 1, 2, 3, 4, 35 - - variable: - name: MetaData/latitude - minvalue: 50.0 - -- filter: RejectList - filter variables: - - name: ozoneTotal - where: - - variable: - name: MetaData/sensorScanPosition - is_in: 1, 2, 3, 4, 35 - - variable: - name: MetaData/latitude - maxvalue: -50.0 - -obs post filters: -- filter: Background Check - filter variables: - - name: ozoneTotal - threshold: 10.0 - absolute threshold: 300.0 - action: - name: reject - -# End of Filters -passedBenchmark: 6130 # GSI modified : keep bad data and then thinned ----- this is to check QC in the read routine - # GSI original: remove bad data and then thinned - # original: thinned: 6214; unthinned: 44899 diff --git a/parm/atm/obs/testing/ompstc_npp_noqc.yaml b/parm/atm/obs/testing/ompstc_npp_noqc.yaml deleted file mode 100644 index 98fa0062f..000000000 --- a/parm/atm/obs/testing/ompstc_npp_noqc.yaml +++ /dev/null @@ -1,35 +0,0 @@ -obs space: - name: ompstc_npp - obsdatain: - engine: - type: H5File - obsfile: !ENV ompstc_npp_obs_${CDATE}.nc4 - obsdataout: - engine: - type: H5File - obsfile: !ENV ompstc_npp_diag_${CDATE}.nc4 - io pool: - max pool size: 1 - simulated variables: [ozoneTotal] - -geovals: - filename: !ENV ompstc_npp_geoval_${CDATE}.nc4 - -obs operator: - name: AtmVertInterpLay - geovals: [mole_fraction_of_ozone_in_air] - coefficients: [0.007886131] # convert from ppmv to DU - nlevels: [1] - -obs pre filters: -- filter: Perform Action - filter variables: - - name: ozoneTotal - action: - name: assign error - error parameter: 6.0 - -passedBenchmark: 6693 # total:6870; missing:177 -#vector ref: GsiHofXBc -#tolerance: 1.e-5 - diff --git a/parm/atm/obs/testing/satwind.yaml b/parm/atm/obs/testing/satwind.yaml deleted file mode 100644 index a43d107a4..000000000 --- a/parm/atm/obs/testing/satwind.yaml +++ /dev/null @@ -1,1045 +0,0 @@ -obs space: - name: satwind - obsdatain: - engine: - type: H5File - obsfile: !ENV satwind_obs_${CDATE}.nc4 - obsdataout: - engine: - type: H5File - obsfile: !ENV satwind_diag_${CDATE}.nc4 - simulated variables: [windEastward, windNorthward] - -geovals: - filename: !ENV satwind_geoval_${CDATE}.nc4 - -obs operator: - name: VertInterp - hofx scaling field: SurfaceWindScalingPressure - hofx scaling field group: DerivedVariables - -obs prior filters: -# Apply variable changes needed for wind scaling -# For wind observations with pressure provided -- filter: Variable Transforms - Transform: SurfaceWindScalingPressure - SkipWhenNoObs: False - -# Calculate obs error inflation factors for duplicated observations at the same location -#- filter: Variable Assignment -# assignments: -# - name: ObsErrorFactorDuplicateCheck/windEastward -# type: float -# function: -# name: ObsFunction/ObsErrorFactorDuplicateCheck -# options: -# use_air_pressure: true -# variable: windEastward - -#- filter: Variable Assignment -# assignments: -# - name: ObsErrorFactorDuplicateCheck/windNorthward -# type: float -# function: -# name: ObsFunction/ObsErrorFactorDuplicateCheck -# options: -# use_air_pressure: true -# variable: windNorthward - -obs post filters: -# Assign the initial observation error, based on height/pressure -# Hard-wiring to prepobs_errtable.global by Type -# ObsError is currently not updating in diag file, but passes directly to EffectiveError when no inflation is specified in YAML -# Type 240 (GOES SWIR): Assigned all dummy values in prepobs_errtable.global -- filter: Perform Action - filter variables: - - name: windEastward - - name: windNorthward - where: - - variable: ObsType/windEastward - is_in: 240 - action: - name: assign error - error function: - name: ObsFunction/ObsErrorModelStepwiseLinear - options: - xvar: - name: MetaData/pressure - xvals: [110000.,0.] #Pressure (Pa) - errors: [1000000000.,1000000000.] - -# Type 241 (Multi Spec. Imager LWIR): Assigned all dummy values -- filter: Perform Action - filter variables: - - name: windEastward - - name: windNorthward - where: - - variable: ObsType/windEastward - is_in: 241 - action: - name: assign error - error function: - name: ObsFunction/ObsErrorModelStepwiseLinear - options: - xvar: - name: MetaData/pressure - xvals: [110000.,0.] #Pressure (Pa) - errors: [1000000000.,1000000000.] - -# Type 242 (Himawari VIS) -- filter: Perform Action - filter variables: - - name: windEastward - - name: windNorthward - where: - - variable: ObsType/windEastward - is_in: 242 - action: - name: assign error - error function: - name: ObsFunction/ObsErrorModelStepwiseLinear - options: - xvar: - name: MetaData/pressure - xvals: [110000.,105000.,100000.,95000.,90000.,85000.,80000.,75000.,70000.,65000.,60000.,55000.,50000.,45000.,40000.,35000.,30000.,25000.,20000.,15000.,10000.,7500.,5000.,4000.,3000.,2000.,1000.,500.,400.,300.,200.,100.,0.] #Pressure (Pa) - errors: [3.8,3.8,3.8,3.8,3.8,3.8,3.8,3.8,3.9,3.9,4.,4.,4.1,5.,6.,6.3,6.6,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.] - -# Type 243 (MVIRI/SEVIRI VIS) -- filter: Perform Action - filter variables: - - name: windEastward - - name: windNorthward - where: - - variable: ObsType/windEastward - is_in: 243 - action: - name: assign error - error function: - name: ObsFunction/ObsErrorModelStepwiseLinear - options: - xvar: - name: MetaData/pressure - xvals: [110000.,105000.,100000.,95000.,90000.,85000.,80000.,75000.,70000.,65000.,60000.,55000.,50000.,45000.,40000.,35000.,30000.,25000.,20000.,15000.,10000.,7500.,5000.,4000.,3000.,2000.,1000.,500.,400.,300.,200.,100.,0.] #Pressure (Pa) - errors: [3.8,3.8,3.8,3.8,3.8,3.8,3.8,3.8,3.9,3.9,4.,4.,4.1,5.,6.,6.3,6.6,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.] - -# Type 244 (AVHRR LWIR) -- filter: Perform Action - filter variables: - - name: windEastward - - name: windNorthward - where: - - variable: ObsType/windEastward - is_in: 244 - action: - name: assign error - error function: - name: ObsFunction/ObsErrorModelStepwiseLinear - options: - xvar: - name: MetaData/pressure - xvals: [110000.,105000.,100000.,95000.,90000.,85000.,80000.,75000.,70000.,65000.,60000.,55000.,50000.,45000.,40000.,35000.,30000.,25000.,20000.,15000.,10000.,7500.,5000.,4000.,3000.,2000.,1000.,500.,400.,300.,200.,100.,0.] #Pressure (Pa) - errors: [3.8,3.8,3.8,3.8,3.8,3.8,3.8,3.8,3.9,3.9,4.,4.,4.1,5.,6.,6.3,6.6,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.] - -# Type 245 (GOES LWIR): I am assuming these are halved relative to prepobs_errtable.global, based on read_satwnd.f90: L1410–1416 -- filter: Perform Action - filter variables: - - name: windEastward - - name: windNorthward - where: - - variable: ObsType/windEastward - is_in: 245 - action: - name: assign error - error function: - name: ObsFunction/ObsErrorModelStepwiseLinear - options: - xvar: - name: MetaData/pressure - xvals: [110000.,105000.,100000.,95000.,90000.,85000.,80000.,75000.,70000.,65000.,60000.,55000.,50000.,45000.,40000.,35000.,30000.,25000.,20000.,15000.,10000.,7500.,5000.,4000.,3000.,2000.,1000.,500.,400.,300.,200.,100.,0.] #Pressure (Pa) - errors: [7.6,7.6,7.6,7.6,7.6,7.6,7.6,7.6,7.8,7.8,8.,8.,8.2,10.,12.,12.6,13.2,14.,14.,14.,14.,14.,14.,14.,14.,14.,14.,14.,14.,14.,14.,14.,14.] - -# Type 246 (GOES cloud-top WV): I am assuming these are halved relative to prepobs_errtable.global, based on read_satwnd.f90: L1410–1416 -- filter: Perform Action - filter variables: - - name: windEastward - - name: windNorthward - where: - - variable: ObsType/windEastward - is_in: 246 - action: - name: assign error - error function: - name: ObsFunction/ObsErrorModelStepwiseLinear - options: - xvar: - name: MetaData/pressure - xvals: [110000.,105000.,100000.,95000.,90000.,85000.,80000.,75000.,70000.,65000.,60000.,55000.,50000.,45000.,40000.,35000.,30000.,25000.,20000.,15000.,10000.,7500.,5000.,4000.,3000.,2000.,1000.,500.,400.,300.,200.,100.,0.] #Pressure (Pa) - errors: [7.6,7.6,7.6,7.6,7.6,7.6,7.6,7.6,7.8,7.8,8.,8.,8.2,10.,12.,12.6,13.2,14.,14.,14.,14.,14.,14.,14.,14.,14.,14.,14.,14.,14.,14.,14.,14.] - -# Type 247 (GOES clear-sky WV): I am assuming these are halved relative to prepobs_errtable.global, based on read_satwnd.f90: L1410–1416 -- filter: Perform Action - filter variables: - - name: windEastward - - name: windNorthward - where: - - variable: ObsType/windEastward - is_in: 247 - action: - name: assign error - error function: - name: ObsFunction/ObsErrorModelStepwiseLinear - options: - xvar: - name: MetaData/pressure - xvals: [110000.,105000.,100000.,95000.,90000.,85000.,80000.,75000.,70000.,65000.,60000.,55000.,50000.,45000.,40000.,35000.,30000.,25000.,20000.,15000.,10000.,7500.,5000.,4000.,3000.,2000.,1000.,500.,400.,300.,200.,100.,0.] #Pressure (Pa) - errors: [7.6,7.6,7.6,7.6,7.6,7.6,7.6,7.6,7.8,7.8,8.,8.,8.2,10.,12.,12.6,13.2,14.,14.,14.,14.,14.,14.,14.,14.,14.,14.,14.,14.,14.,14.,14.,14.] - -# Type 248 (GOES Sounder cloud-top WV): Assigned all dummy values -- filter: Perform Action - filter variables: - - name: windEastward - - name: windNorthward - where: - - variable: ObsType/windEastward - is_in: 248 - action: - name: assign error - error function: - name: ObsFunction/ObsErrorModelStepwiseLinear - options: - xvar: - name: MetaData/pressure - xvals: [110000.,0.] #Pressure (Pa) - errors: [1000000000.,1000000000.] - -# Type 249 (GOES Sounder clear-sky WV): Assigned all dummy values -- filter: Perform Action - filter variables: - - name: windEastward - - name: windNorthward - where: - - variable: ObsType/windEastward - is_in: 249 - action: - name: assign error - error function: - name: ObsFunction/ObsErrorModelStepwiseLinear - options: - xvar: - name: MetaData/pressure - xvals: [110000.,0.] #Pressure (Pa) - errors: [1000000000.,1000000000.] - -# Type 250 (Himawari AHI WV, cloud-top or clear-sky) -- filter: Perform Action - filter variables: - - name: windEastward - - name: windNorthward - where: - - variable: ObsType/windEastward - is_in: 250 - action: - name: assign error - error function: - name: ObsFunction/ObsErrorModelStepwiseLinear - options: - xvar: - name: MetaData/pressure - xvals: [110000.,105000.,100000.,95000.,90000.,85000.,80000.,75000.,70000.,65000.,60000.,55000.,50000.,45000.,40000.,35000.,30000.,25000.,20000.,15000.,10000.,7500.,5000.,4000.,3000.,2000.,1000.,500.,400.,300.,200.,100.,0.] #Pressure (Pa) - errors: [3.8,3.8,3.8,3.8,3.8,3.8,3.8,3.8,3.9,3.9,4.,4.,4.1,5.,7.,7.3,7.6,8.,8.,8.,8.,8.,8.,8.,8.,8.,8.,8.,8.,8.,8.,8.,8.] - -# Type 251 (GOES VIS): Assigned all dummy values -- filter: Perform Action - filter variables: - - name: windEastward - - name: windNorthward - where: - - variable: ObsType/windEastward - is_in: 251 - action: - name: assign error - error function: - name: ObsFunction/ObsErrorModelStepwiseLinear - options: - xvar: - name: MetaData/pressure - xvals: [110000.,0.] #Pressure (Pa) - errors: [1000000000.,1000000000.] - -# Type 252 (Himawari AHI LWIR) -- filter: Perform Action - filter variables: - - name: windEastward - - name: windNorthward - where: - - variable: ObsType/windEastward - is_in: 252 - action: - name: assign error - error function: - name: ObsFunction/ObsErrorModelStepwiseLinear - options: - xvar: - name: MetaData/pressure - xvals: [110000.,105000.,100000.,95000.,90000.,85000.,80000.,75000.,70000.,65000.,60000.,55000.,50000.,45000.,40000.,35000.,30000.,25000.,20000.,15000.,10000.,7500.,5000.,4000.,3000.,2000.,1000.,500.,400.,300.,200.,100.,0.] #Pressure (Pa) - errors: [3.8,3.8,3.8,3.8,3.8,3.8,3.8,3.8,3.9,3.9,4.,4.,4.1,5.,6.,6.3,6.6,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.] - -# Type 253 (MVIRI/SEVERI LWIR) -- filter: Perform Action - filter variables: - - name: windEastward - - name: windNorthward - where: - - variable: ObsType/windEastward - is_in: 253 - action: - name: assign error - error function: - name: ObsFunction/ObsErrorModelStepwiseLinear - options: - xvar: - name: MetaData/pressure - xvals: [110000.,105000.,100000.,95000.,90000.,85000.,80000.,75000.,70000.,65000.,60000.,55000.,50000.,45000.,40000.,35000.,30000.,25000.,20000.,15000.,10000.,7500.,5000.,4000.,3000.,2000.,1000.,500.,400.,300.,200.,100.,0.] #Pressure (Pa) - errors: [3.8,3.8,3.8,3.8,3.8,3.8,3.8,3.8,3.9,3.9,4.,4.,4.1,5.,6.,6.3,6.6,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.] - -# Type 254 (MVIRI/SEVIRI WV, both cloud-top and clear-sky) -- filter: Perform Action - filter variables: - - name: windEastward - - name: windNorthward - where: - - variable: ObsType/windEastward - is_in: 254 - action: - name: assign error - error function: - name: ObsFunction/ObsErrorModelStepwiseLinear - options: - xvar: - name: MetaData/pressure - xvals: [110000.,105000.,100000.,95000.,90000.,85000.,80000.,75000.,70000.,65000.,60000.,55000.,50000.,45000.,40000.,35000.,30000.,25000.,20000.,15000.,10000.,7500.,5000.,4000.,3000.,2000.,1000.,500.,400.,300.,200.,100.,0.] #Pressure (Pa) - errors: [3.8,3.8,3.8,3.8,3.8,3.8,3.8,3.8,3.9,3.9,4.,4.5,6.1,6.,6.5,7.3,7.6,7.,7.5,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.] - -# Type 255 (LEOGEO): -- filter: Perform Action - filter variables: - - name: windEastward - - name: windNorthward - where: - - variable: ObsType/windEastward - is_in: 255 - action: - name: assign error - error function: - name: ObsFunction/ObsErrorModelStepwiseLinear - options: - xvar: - name: MetaData/pressure - xvals: [110000.,105000.,100000.,95000.,90000.,85000.,80000.,75000.,70000.,65000.,60000.,55000.,50000.,45000.,40000.,35000.,30000.,25000.,20000.,15000.,10000.,7500.,5000.,4000.,3000.,2000.,1000.,500.,400.,300.,200.,100.,0.] #Pressure (Pa) - errors: [3.8,3.8,3.8,3.8,3.8,3.8,3.8,3.8,3.9,3.9,4.,4.,4.1,5.,6.,6.3,6.6,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.] - -# Type 256 (Multi Spec. Imager WV, both clear-sky and cloud-top): Assigned all dummy values -- filter: Perform Action - filter variables: - - name: windEastward - - name: windNorthward - where: - - variable: ObsType/windEastward - is_in: 256 - action: - name: assign error - error function: - name: ObsFunction/ObsErrorModelStepwiseLinear - options: - xvar: - name: MetaData/pressure - xvals: [110000.,0.] #Pressure (Pa) - errors: [1000000000.,1000000000.] - -# Type 257 (MODIS LWIR) -- filter: Perform Action - filter variables: - - name: windEastward - - name: windNorthward - where: - - variable: ObsType/windEastward - is_in: 257 - action: - name: assign error - error function: - name: ObsFunction/ObsErrorModelStepwiseLinear - options: - xvar: - name: MetaData/pressure - xvals: [110000.,105000.,100000.,95000.,90000.,85000.,80000.,75000.,70000.,65000.,60000.,55000.,50000.,45000.,40000.,35000.,30000.,25000.,20000.,15000.,10000.,7500.,5000.,4000.,3000.,2000.,1000.,500.,400.,300.,200.,100.,0.] #Pressure (Pa) - errors: [3.8,3.8,3.8,3.8,3.8,3.8,3.8,3.8,3.9,3.9,4.,4.,4.1,5.,6.,6.3,6.6,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.] - -# Type 258 (MODIS cloud-top WV): Some levels assigned dummy values -- filter: Perform Action - filter variables: - - name: windEastward - - name: windNorthward - where: - - variable: ObsType/windEastward - is_in: 258 - action: - name: assign error - error function: - name: ObsFunction/ObsErrorModelStepwiseLinear - options: - xvar: - name: MetaData/pressure - xvals: [110000.,60000.,55000.,50000.,45000.,40000.,35000.,30000.,25000.,20000.,15000.,10000.,7500.,5000.,4000.,3000.,2000.,1000.,500.,400.,300.,200.,100.,0.] #Pressure (Pa) - errors: [1000000000.,1000000000.,4.,4.1,5.,6.,6.3,6.6,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.] - -# Type 259 (MODIS clear-sky WV): Some levels assigned dummy values -- filter: Perform Action - filter variables: - - name: windEastward - - name: windNorthward - where: - - variable: ObsType/windEastward - is_in: 259 - action: - name: assign error - error function: - name: ObsFunction/ObsErrorModelStepwiseLinear - options: - xvar: - name: MetaData/pressure - xvals: [110000.,60000.,55000.,50000.,45000.,40000.,35000.,30000.,25000.,20000.,15000.,10000.,7500.,5000.,4000.,3000.,2000.,1000.,500.,400.,300.,200.,100.,0.] #Pressure (Pa) - errors: [1000000000.,1000000000.,4.,4.1,5.,6.,6.3,6.6,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.] - -# Type 260 (VIIRS LWIR): All levels assigned dummy values in prepobs_errtable.global, HOWEVER the GSI values appear -# to be a standard profile (borrowed from e.g., Type=244). Using the standard profile here. -# It's possibly that my prepobs_errtable.global file is out-of-date. -- filter: Perform Action - filter variables: - - name: windEastward - - name: windNorthward - where: - - variable: ObsType/windEastward - is_in: 260 - action: - name: assign error - error function: - name: ObsFunction/ObsErrorModelStepwiseLinear - options: - xvar: - name: MetaData/pressure - xvals: [110000.,105000.,100000.,95000.,90000.,85000.,80000.,75000.,70000.,65000.,60000.,55000.,50000.,45000.,40000.,35000.,30000.,25000.,20000.,15000.,10000.,7500.,5000.,4000.,3000.,2000.,1000.,500.,400.,300.,200.,100.,0.] #Pressure (Pa) - errors: [3.8,3.8,3.8,3.8,3.8,3.8,3.8,3.8,3.9,3.9,4.,4.,4.1,5.,6.,6.3,6.6,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.] - -# sanity-check criteria -# Observation Range Sanity Check -# NOT EXPLICITLY CLEARED: No obs in this range in file, so 0 Bounds Check rejects (which is correct) but essentially untested -- filter: Bounds Check - filter variables: - - name: windEastward - - name: windNorthward - minvalue: -130. - maxvalue: 130. - action: - name: reject - -# Velocity Sanity Check -# NOT EXPLICITLY CLEARED: No obs in this range in file, so 0 Bounds Check rejects (which is correct) but essentially untested -- filter: Bounds Check - filter variables: - - name: windEastward - - name: windNorthward - test variables: - - name: ObsFunction/Velocity - maxvalue: 130. - action: - name: reject - -# preQC (read_satwnd) criteria -# EUMETSAT winds: satelliteIdentifer [50–79] (>49, <80) -# Reject obs with satelliteZenithAngle > 68 deg -# NOT EXPLICITLY CLEARED: No obs in this range in file, so 0 Bounds Check rejects (which is correct) but essentially untested -- filter: Bounds Check - filter variables: - - name: windEastward - - name: windNorthward - where: - - variable: MetaData/satelliteIdentifier - is_in: 50-79 - test variables: - - name: MetaData/satelliteZenithAngle - maxvalue: 68. - action: - name: reject - -# Reject obs with windComputationMethod = 5 (clear-sky WV AMV) -# CLEARED -- filter: Perform Action - filter variables: - - name: windEastward - - name: windNorthward - where: - - variable: MetaData/satelliteIdentifier - is_in: 50-79 - - variable: MetaData/windComputationMethod - is_in: 5 - action: - name: reject - -# Reject obs with qualityInformationWithoutForecast < 85 -# CLEARED -- filter: Bounds Check - filter variables: - - name: windEastward - - name: windNorthward - where: - - variable: MetaData/satelliteIdentifier - is_in: 50-79 - test variables: - - name: MetaData/qualityInformationWithoutForecast - minvalue: 85. - maxvalue: 100. - action: - name: reject - -# JMA: satelliteIdentifier [100–199] (>99, <200) -# Reject obs with satelliteZenithAngle > 68 deg -# NOT EXPLICITLY CLEARED: No obs in this range in file, so 0 Bounds Check rejects (which is correct) but essentially untested -- filter: Bounds Check - filter variables: - - name: windEastward - - name: windNorthward - where: - - variable: MetaData/satelliteIdentifier - is_in: 100-199 - test variables: - - name: MetaData/satelliteZenithAngle - maxvalue: 68. - action: - name: reject - -# Reject obs with windComputationMethod = 5 (clear-sky WV AMV) -# NOT EXPLICITLY CLEARED: No obs in this range in file, so 0 Bounds Check rejects (which is correct) but essentially untested -- filter: Perform Action - filter variables: - - name: windEastward - - name: windNorthward - where: - - variable: MetaData/satelliteIdentifier - is_in: 100-199 - - variable: MetaData/windComputationMethod - is_in: 5 - action: - name: reject - -# Reject obs with qualityInformationWithoutForecast < 85. -# CLEARED -- filter: Bounds Check - filter variables: - - name: windEastward - - name: windNorthward - where: - - variable: MetaData/satelliteIdentifier - is_in: 100-199 - test variables: - - name: MetaData/qualityInformationWithoutForecast - minvalue: 85. - maxvalue: 100. - action: - name: reject - -# NESDIS: satelliteIdentifier [250–299] (>249, <300) -# Reject obs with satelliteZenithAngle > 68 deg -# NOT EXPLICITLY CLEARED: No obs in this range in file, so 0 Bounds Check rejects (which is correct) but essentially untested -- filter: Bounds Check - filter variables: - - name: windEastward - - name: windNorthward - where: - - variable: MetaData/satelliteIdentifier - is_in: 250-299 - test variables: - - name: MetaData/satelliteZenithAngle - maxvalue: 68. - action: - name: reject - -# Reject obs with qualityInformationWithoutForecast < 90. OR > 100. -# CLEARED -- filter: Bounds Check - filter variables: - - name: windEastward - - name: windNorthward - where: - - variable: MetaData/satelliteIdentifier - is_in: 250-299 - test variables: - - name: MetaData/qualityInformationWithoutForecast - minvalue: 90. - maxvalue: 100. - action: - name: reject - -# Reject obs with pressure < 15000. -# CLEARED -- filter: Bounds Check - filter variables: - - name: windEastward - - name: windNorthward - where: - - variable: MetaData/satelliteIdentifier - is_in: 250-299 - test variables: - - name: MetaData/pressure - minvalue: 15000. - action: - name: reject - -# Reject obs with pressure < 70000. when Type=251 -# NOT EXPLICITLY CLEARED: No obs in this range in file, so 0 Bounds Check rejects (which is correct) but essentially untested -- filter: Bounds Check - filter variables: - - name: windEastward - - name: windNorthward - where: - - variable: MetaData/satelliteIdentifier - is_in: 250-299 - - variable: ObsType/windEastward - is_in: 251 - test variables: - - name: MetaData/pressure - minvalue: 70000. - action: - name: reject - -# Reject obs with pressure > 30000. when Type=246 -# CLEARED -- filter: Bounds Check - filter variables: - - name: windEastward - - name: windNorthward - where: - - variable: MetaData/satelliteIdentifier - is_in: 250-299 - - variable: ObsType/windEastward - is_in: 246 - test variables: - - name: MetaData/pressure - maxvalue: 30000. - action: - name: reject - -# Reject obs with pressure > 85000. when isli=1 (land surface) -# CLEARED -- filter: Bounds Check - filter variables: - - name: windEastward - - name: windNorthward - where: - - variable: MetaData/satelliteIdentifier - is_in: 250-299 - - variable: GeoVaLs/land_area_fraction - minvalue: 0.99 -# - variable: GeoVaLs/dominant_surface_type -# maxvalue: 1.0001 -# minvalue: 0.9999 - test variables: - - name: MetaData/pressure - maxvalue: 85000. - action: - name: reject - -# Reject obs with pct1 (Coeff. of Var.) outside of 0.04–0.5, Type [240,245,246,251] ONLY -# CLEARED -- filter: Bounds Check - filter variables: - - name: windEastward - - name: windNorthward - where: - - variable: MetaData/satelliteIdentifier - is_in: 250-299 - - variable: ObsType/windEastward - is_in: 240,245,246,251 - test variables: - - name: MetaData/coefficientOfVariation - minvalue: 0.04 - maxvalue: 0.5 - action: - name: reject - -# NESDIS obs are also subject to the experr_norm test defined as: -# -# if (10. - 0.1*(expectedError))/(ob_speed)>0.9, or ob_speed<0.1, reject, applies to NESDIS winds -# -# CLEARED: With caveat that float precision/handling differences can generate different acceptance criteria -# between UFO and GSO for observations with an experr_norm value right around the maxvalue. -- filter: Bounds Check - filter variables: - - name: windEastward - - name: windNorthward - where: - - variable: MetaData/satelliteIdentifier - is_in: 250-299 - test variables: - - name: ObsFunction/SatWindsErrnormCheck - maxvalue: 0.9 - action: - name: reject - -# Reject all Type=240 (GOES SWIR) AMVs: These are not currently assimilated in GSI and they have missing-values -# assigned to ob-errors -- filter: Perform Action - filter variables: - - name: windEastward - - name: windNorthward - where: - - variable: ObsType/windEastward - is_in: 240 - action: - name: reject -# -# setupw criteria -# -# Reject any ob Type [240–260] when pressure greater than 950 mb. -# CLEARED: minvalue/maxvalue are >=/<=, not >/<, so editing range by 1 Pa -- filter: Bounds Check - filter variables: - - name: windEastward - - name: windNorthward - where: - - variable: ObsType/windEastward - is_in: 240-260 - test variables: - - name: MetaData/pressure - maxvalue: 95001. - action: - name: reject - -# GOES IR (245) reject when pressure between 399 and 801 mb. -# CLEARED: minvalue/maxvalue are >=/<=, not >/<, so editing range by 1 Pa -- filter: Perform Action - filter variables: - - name: windEastward - - name: windNorthward - where: - - variable: MetaData/pressure - minvalue: 39901. - maxvalue: 80099. - - variable: ObsType/windEastward - is_in: 245 - action: - name: reject - -# JMA IR (252) reject when pressure between 499 and 801 mb. -# CLEARED: minvalue/maxvalue are >=/<=, not >/<, so editing range by 1 Pa -- filter: Perform Action - filter variables: - - name: windEastward - - name: windNorthward - where: - - variable: MetaData/pressure - minvalue: 49901. - maxvalue: 80099. - - variable: ObsType/windEastward - is_in: 252 - action: - name: reject - -# EUMETSAT IR (253) reject when pressure between 401 and 801 mb. -# CLEARED: minvalue/maxvalue are >=/<=, not >/<, so editing range by 1 Pa -- filter: Perform Action - filter variables: - - name: windEastward - - name: windNorthward - where: - - variable: MetaData/pressure - minvalue: 40101. - maxvalue: 80099. - - variable: ObsType/windEastward - is_in: 253 - action: - name: reject - -# GOES WV (246, 250, 254), reject when pressure greater than 399 mb. -# CLEARED: maxvalue is rejecting >, not >= as per a Perform Action, so threshold is unchanged -- filter: Bounds Check - filter variables: - - name: windEastward - - name: windNorthward - where: - - variable: ObsType/windEastward - is_in: 246, 250, 254 - test variables: - - name: MetaData/pressure - maxvalue: 39900. - action: - name: reject - -# EUMET (242) and JMA (243) vis, reject when pressure less than 700 mb. -# CLEARED: minvalue is rejecting <, not <= as per a Perform Action, so threshold is unchanged -- filter: Bounds Check - filter variables: - - name: windEastward - - name: windNorthward - where: - - variable: ObsType/windEastward - is_in: 242, 243 - test variables: - - name: MetaData/pressure - minvalue: 70000. - action: - name: reject - -# MODIS-Aqua/Terra (257) and (259), reject when pressure less than 249 mb. -# CLEARED: minvalue is rejecting <, not <= as per a Perform Action, so threshold is unchanged -- filter: Bounds Check - filter variables: - - name: windEastward - - name: windNorthward - where: - - variable: ObsType/windEastward - is_in: 257,259 - test variables: - - name: MetaData/pressure - minvalue: 24900. - action: - name: reject - -# MODIS-Aqua/Terra (258) and (259), reject when pressure greater than 600 mb. -# NOT EXPLICITLY CLEARED: No obs in this range in file, so 0 Bounds Check rejects (which is correct) but essentially untested -# maxvalue is rejecting >, not >= as per a Perform Action, so threshold is unchanged -- filter: Bounds Check - filter variables: - - name: windEastward - - name: windNorthward - where: - - variable: ObsType/windEastward - is_in: 258, 259 - test variables: - - name: MetaData/pressure - maxvalue: 60000. - action: - name: reject - -# 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 -- filter: Difference Check - filter variables: - - name: windEastward - - name: windNorthward - reference: GeoVaLs/tropopause_pressure - value: MetaData/pressure - minvalue: -5000. # 50 hPa above tropopause level, negative p-diff - action: - name: reject - -# 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 -- filter: Difference Check - filter variables: - - name: windEastward - - name: windNorthward - where: - - variable: - name: GeoVaLs/water_area_fraction - maxvalue: 0.99 -# name: GeoVaLs/dominant_surface_type -# minvalue: 0.001 - - variable: - name: ObsType/windEastward - is_in: 247 - reference: GeoVaLs/surface_pressure - value: MetaData/pressure - maxvalue: -11000. # within 110 hPa above surface pressure, negative p-diff - action: - name: reject - -# AVHRR (244), MODIS (257,258,259), and VIIRS (260) reject any -# observation with a /=0 surface type (non-water surface) within -# 200 hPa of the surface pressure (as part of the LNVD check). -# CLEARED: maxvalue is rejecting >, not >= as per a Perform Action, so threshold is unchanged -- filter: Difference Check - filter variables: - - name: windEastward - - name: windNorthward - where: - - variable: - name: GeoVaLs/water_area_fraction - maxvalue: 0.99 -# name: GeoVaLs/dominant_surface_type -# minvalue: 0.001 - - variable: - name: ObsType/windEastward - is_in: 244, 257-260 - reference: GeoVaLs/surface_pressure - value: MetaData/pressure - maxvalue: -20000. # within 200 hPa above surface pressure, negative p-diff - action: - name: reject - -# Reject GOES (247) when difference of wind direction is more than 50 degrees. -# CLEARED: maxvalue is rejecting >, not >= as per a Perform Action, so threshold is unchanged -- filter: Bounds Check - filter variables: - - name: windEastward - - name: windNorthward - where: - - variable: ObsType/windEastward - is_in: 247 - test variables: - - name: ObsFunction/WindDirAngleDiff - maxvalue: 50. - action: - name: reject - -# AVHRR (244), MODIS (257,258,259), VIIRS (260), GOES (247) use a LNVD check. -# CLEARED: maxvalue is rejecting >, not >= as per a Perform Action, so threshold is unchanged -- filter: Bounds Check - filter variables: - - name: windEastward - - name: windNorthward - where: - - variable: ObsType/windEastward - is_in: 244, 247, 257-260 - test variables: - - name: ObsFunction/SatWindsLNVDCheck - maxvalue: 3. - action: - name: reject - -# All satwinds must adjust errors based on ObsErrorFactorPressureCheck -# prior to the SPDB check (i.e. the gross-error check). The gross-error -# check uses the adjusted errors for error-bound tightening and rejection, -# so this check has to come first. This check will inflate errors for obs -# that are too close to either the model top or bottom. -- filter: Perform Action - filter variables: - - name: windEastward - where: - - variable: - name: ObsType/windEastward - is_in: 240-260 - action: - name: inflate error - inflation variable: - name: ObsFunction/ObsErrorFactorPressureCheck - options: - variable: windEastward - inflation factor: 4.0 - -- filter: Perform Action - filter variables: - - name: windNorthward - where: - - variable: - name: ObsType/windNorthward - is_in: 240-260 - action: - name: inflate error - inflation variable: - name: ObsFunction/ObsErrorFactorPressureCheck - options: - variable: windNorthward - inflation factor: 4.0 - -# All satwinds subject to a gross-error check that contains significant -# modifiers for satwinds with a negative speed-bias. ALL wind gross-error -# checks are currently being done by the SatWindsSPDBCheck. -# CLEARED -- filter: Background Check - filter variables: - - name: windEastward - function absolute threshold: - - name: ObsFunction/WindsSPDBCheck - options: - wndtype: [ 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260] - cgross: [ 2.5, 2.5, 2.5, 1.5, 2.5, 1.3, 1.3, 2.5, 2.5, 2.5, 2.5, 1.3, 2.5, 1.5, 1.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5] - error_min: [1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4] - error_max: [6.1, 6.1, 15.0, 15.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.1, 20.1, 20.1, 20.1, 20.1, 20.1] - variable: windEastward - action: - name: reject - -- filter: Background Check - filter variables: - - name: windNorthward - function absolute threshold: - - name: ObsFunction/WindsSPDBCheck - options: - wndtype: [ 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260] - cgross: [ 2.5, 2.5, 2.5, 1.5, 2.5, 1.3, 1.3, 2.5, 2.5, 2.5, 2.5, 1.3, 2.5, 1.5, 1.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5] - error_min: [1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4] - error_max: [6.1, 6.1, 15.0, 15.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.1, 20.1, 20.1, 20.1, 20.1, 20.1] - variable: windNorthward - action: - name: reject - -# The last error inflation check is for duplicate observations. This one needs -# to come last, because we don't want to inflate errors for duplication if one -# of the duplicates should be rejected. -# Inflate obs error for duplicated observations at the same location -#- filter: Perform Action -# filter variables: -# - name: windEastward -# action: -# name: inflate error -# inflation variable: -# name: ObsErrorFactorDuplicateCheck/windEastward - -# Inflate obs error for duplicated observations at the same location -#- filter: Perform Action -# filter variables: -# - name: windNorthward -# action: -# name: inflate error -# inflation variable: -# name: ObsErrorFactorDuplicateCheck/windNorthward - -# We are extending this to an additional filter that inflates final ob-errors across-the-board by -# 1/0.8 = 1.25. This is caused by the GSI value of nvqc being set to .true. in the global operational -# 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 -# filter variables: -# - name: windEastward -# where: -# - variable: ObsType/windEastward -# is_in: 240-260 -# action: -# name: inflate error -# inflation factor: 1.25 - -#- filter: Perform Action -# filter variables: -# - name: windNorthward -# where: -# - variable: ObsType/windNorthward -# is_in: 240-260 -# action: -# name: inflate error -# inflation factor: 1.25 - -# End of Filters -#passedBenchmark: 1150870 # 2 variables (u,v), both passing 575435 obs, including 575435 GSI/UFO agreements, and: -passedBenchmark: 1025814 # 2 variables (u,v), both passing 512907 obs, including 512907 GSI/UFO agreements, and: - # 16 GOES AMVs (6 u-obs, 6 v-obs) that are rejected by the SatWindsErrnormCheck in UFO - # but are retained in GSI's equivalent experr_norm check. All 6 of these disagreements - # have error norm values at almost exactly 0.9, indicating a float precision/handling - # difference between UFO and GSI generating the disagreement. - # - # NOTE: This benchmark is specifically for a test with assim_freq=6, which based on - # JEDI convention, cuts off data from the front-end of the time-window that is - # retained in GSI. This can generate some problems with the assigned ob-errors, - # particularly the UFO assigning lower ob-errors because the reduced number of - # observations being assimilated will allow for fewer duplicate-ob matches than - # found in GSI, which will cause GSI to downweight observations within the UFO's - # truncated time-window that UFO will not downweight. This is happening on 3 of - # the satwinds in this dataset. Setting the assim_freq=12, which expands the - # UFO time-window wide enough to capture all of the observations that are being - # assimilated in GSI from this test-data, results in these ob-error differences - # disappearing. diff --git a/parm/atm/obs/testing/satwind_noqc.yaml b/parm/atm/obs/testing/satwind_noqc.yaml deleted file mode 100644 index b2535470d..000000000 --- a/parm/atm/obs/testing/satwind_noqc.yaml +++ /dev/null @@ -1,412 +0,0 @@ -obs space: - name: satwind - obsdatain: - engine: - type: H5File - obsfile: !ENV satwind_obs_${CDATE}.nc4 - obsdataout: - engine: - type: H5File - obsfile: !ENV satwind_diag_${CDATE}.nc4 - simulated variables: [windEastward, windNorthward] - -geovals: - filename: !ENV satwind_geoval_${CDATE}.nc4 - -obs operator: - name: VertInterp - hofx scaling field: SurfaceWindScalingPressure - hofx scaling field group: DerivedVariables - -obs prior filters: -# Apply variable changes needed wind scaling -- filter: Variable Transforms - Transform: SurfaceWindScalingPressure - SkipWhenNoObs: False - -obs post filters: -# Assign the initial observation error, based on height/pressure -# Hard-wiring to prepobs_errtable.global by Type -# ObsError is currently not updating in diag file, but passes directly to EffectiveError when no inflation is specified in YAML -# Type 240 (GOES SWIR): Assigned all dummy values in prepobs_errtable.global -- filter: Perform Action - filter variables: - - name: windEastward - - name: windNorthward - where: - - variable: ObsType/windEastward - is_in: 240 - action: - name: assign error - error function: - name: ObsFunction/ObsErrorModelStepwiseLinear - options: - xvar: - name: MetaData/pressure - xvals: [110000.,0.] #Pressure (Pa) - errors: [1000000000.,1000000000.] - -# Type 241 (Multi Spec. Imager LWIR): Assigned all dummy values -- filter: Perform Action - filter variables: - - name: windEastward - - name: windNorthward - where: - - variable: ObsType/windEastward - is_in: 241 - action: - name: assign error - error function: - name: ObsFunction/ObsErrorModelStepwiseLinear - options: - xvar: - name: MetaData/pressure - xvals: [110000.,0.] #Pressure (Pa) - errors: [1000000000.,1000000000.] - -# Type 242 (Himawari VIS) -- filter: Perform Action - filter variables: - - name: windEastward - - name: windNorthward - where: - - variable: ObsType/windEastward - is_in: 242 - action: - name: assign error - error function: - name: ObsFunction/ObsErrorModelStepwiseLinear - options: - xvar: - name: MetaData/pressure - xvals: [110000.,105000.,100000.,95000.,90000.,85000.,80000.,75000.,70000.,65000.,60000.,55000.,50000.,45000.,40000.,35000.,30000.,25000.,20000.,15000.,10000.,7500.,5000.,4000.,3000.,2000.,1000.,500.,400.,300.,200.,100.,0.] #Pressure (Pa) - errors: [3.8,3.8,3.8,3.8,3.8,3.8,3.8,3.8,3.9,3.9,4.,4.,4.1,5.,6.,6.3,6.6,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.] - -# Type 243 (MVIRI/SEVIRI VIS) -- filter: Perform Action - filter variables: - - name: windEastward - - name: windNorthward - where: - - variable: ObsType/windEastward - is_in: 243 - action: - name: assign error - error function: - name: ObsFunction/ObsErrorModelStepwiseLinear - options: - xvar: - name: MetaData/pressure - xvals: [110000.,105000.,100000.,95000.,90000.,85000.,80000.,75000.,70000.,65000.,60000.,55000.,50000.,45000.,40000.,35000.,30000.,25000.,20000.,15000.,10000.,7500.,5000.,4000.,3000.,2000.,1000.,500.,400.,300.,200.,100.,0.] #Pressure (Pa) - errors: [3.8,3.8,3.8,3.8,3.8,3.8,3.8,3.8,3.9,3.9,4.,4.,4.1,5.,6.,6.3,6.6,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.] - -# Type 244 (AVHRR LWIR) -- filter: Perform Action - filter variables: - - name: windEastward - - name: windNorthward - where: - - variable: ObsType/windEastward - is_in: 244 - action: - name: assign error - error function: - name: ObsFunction/ObsErrorModelStepwiseLinear - options: - xvar: - name: MetaData/pressure - xvals: [110000.,105000.,100000.,95000.,90000.,85000.,80000.,75000.,70000.,65000.,60000.,55000.,50000.,45000.,40000.,35000.,30000.,25000.,20000.,15000.,10000.,7500.,5000.,4000.,3000.,2000.,1000.,500.,400.,300.,200.,100.,0.] #Pressure (Pa) - errors: [3.8,3.8,3.8,3.8,3.8,3.8,3.8,3.8,3.9,3.9,4.,4.,4.1,5.,6.,6.3,6.6,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.] - -# Type 245 (GOES LWIR): I am assuming these are halved relative to prepobs_errtable.global, based on read_satwnd.f90: L1410–1416 -- filter: Perform Action - filter variables: - - name: windEastward - - name: windNorthward - where: - - variable: ObsType/windEastward - is_in: 245 - action: - name: assign error - error function: - name: ObsFunction/ObsErrorModelStepwiseLinear - options: - xvar: - name: MetaData/pressure - xvals: [110000.,105000.,100000.,95000.,90000.,85000.,80000.,75000.,70000.,65000.,60000.,55000.,50000.,45000.,40000.,35000.,30000.,25000.,20000.,15000.,10000.,7500.,5000.,4000.,3000.,2000.,1000.,500.,400.,300.,200.,100.,0.] #Pressure (Pa) - errors: [7.6,7.6,7.6,7.6,7.6,7.6,7.6,7.6,7.8,7.8,8.,8.,8.2,10.,12.,12.6,13.2,14.,14.,14.,14.,14.,14.,14.,14.,14.,14.,14.,14.,14.,14.,14.,14.] - -# Type 246 (GOES cloud-top WV): I am assuming these are halved relative to prepobs_errtable.global, based on read_satwnd.f90: L1410–1416 -- filter: Perform Action - filter variables: - - name: windEastward - - name: windNorthward - where: - - variable: ObsType/windEastward - is_in: 246 - action: - name: assign error - error function: - name: ObsFunction/ObsErrorModelStepwiseLinear - options: - xvar: - name: MetaData/pressure - xvals: [110000.,105000.,100000.,95000.,90000.,85000.,80000.,75000.,70000.,65000.,60000.,55000.,50000.,45000.,40000.,35000.,30000.,25000.,20000.,15000.,10000.,7500.,5000.,4000.,3000.,2000.,1000.,500.,400.,300.,200.,100.,0.] #Pressure (Pa) - errors: [7.6,7.6,7.6,7.6,7.6,7.6,7.6,7.6,7.8,7.8,8.,8.,8.2,10.,12.,12.6,13.2,14.,14.,14.,14.,14.,14.,14.,14.,14.,14.,14.,14.,14.,14.,14.,14.] - -# Type 247 (GOES clear-sky WV): I am assuming these are halved relative to prepobs_errtable.global, based on read_satwnd.f90: L1410–1416 -- filter: Perform Action - filter variables: - - name: windEastward - - name: windNorthward - where: - - variable: ObsType/windEastward - is_in: 247 - action: - name: assign error - error function: - name: ObsFunction/ObsErrorModelStepwiseLinear - options: - xvar: - name: MetaData/pressure - xvals: [110000.,105000.,100000.,95000.,90000.,85000.,80000.,75000.,70000.,65000.,60000.,55000.,50000.,45000.,40000.,35000.,30000.,25000.,20000.,15000.,10000.,7500.,5000.,4000.,3000.,2000.,1000.,500.,400.,300.,200.,100.,0.] #Pressure (Pa) - errors: [7.6,7.6,7.6,7.6,7.6,7.6,7.6,7.6,7.8,7.8,8.,8.,8.2,10.,12.,12.6,13.2,14.,14.,14.,14.,14.,14.,14.,14.,14.,14.,14.,14.,14.,14.,14.,14.] - -# Type 248 (GOES Sounder cloud-top WV): Assigned all dummy values -- filter: Perform Action - filter variables: - - name: windEastward - - name: windNorthward - where: - - variable: ObsType/windEastward - is_in: 248 - action: - name: assign error - error function: - name: ObsFunction/ObsErrorModelStepwiseLinear - options: - xvar: - name: MetaData/pressure - xvals: [110000.,0.] #Pressure (Pa) - errors: [1000000000.,1000000000.] - -# Type 249 (GOES Sounder clear-sky WV): Assigned all dummy values -- filter: Perform Action - filter variables: - - name: windEastward - - name: windNorthward - where: - - variable: ObsType/windEastward - is_in: 249 - action: - name: assign error - error function: - name: ObsFunction/ObsErrorModelStepwiseLinear - options: - xvar: - name: MetaData/pressure - xvals: [110000.,0.] #Pressure (Pa) - errors: [1000000000.,1000000000.] - -# Type 250 (Himawari AHI WV, cloud-top or clear-sky) -- filter: Perform Action - filter variables: - - name: windEastward - - name: windNorthward - where: - - variable: ObsType/windEastward - is_in: 250 - action: - name: assign error - error function: - name: ObsFunction/ObsErrorModelStepwiseLinear - options: - xvar: - name: MetaData/pressure - xvals: [110000.,105000.,100000.,95000.,90000.,85000.,80000.,75000.,70000.,65000.,60000.,55000.,50000.,45000.,40000.,35000.,30000.,25000.,20000.,15000.,10000.,7500.,5000.,4000.,3000.,2000.,1000.,500.,400.,300.,200.,100.,0.] #Pressure (Pa) - errors: [3.8,3.8,3.8,3.8,3.8,3.8,3.8,3.8,3.9,3.9,4.,4.,4.1,5.,7.,7.3,7.6,8.,8.,8.,8.,8.,8.,8.,8.,8.,8.,8.,8.,8.,8.,8.,8.] - -# Type 251 (GOES VIS): Assigned all dummy values -- filter: Perform Action - filter variables: - - name: windEastward - - name: windNorthward - where: - - variable: ObsType/windEastward - is_in: 251 - action: - name: assign error - error function: - name: ObsFunction/ObsErrorModelStepwiseLinear - options: - xvar: - name: MetaData/pressure - xvals: [110000.,0.] #Pressure (Pa) - errors: [1000000000.,1000000000.] - -# Type 252 (Himawari AHI LWIR) -- filter: Perform Action - filter variables: - - name: windEastward - - name: windNorthward - where: - - variable: ObsType/windEastward - is_in: 252 - action: - name: assign error - error function: - name: ObsFunction/ObsErrorModelStepwiseLinear - options: - xvar: - name: MetaData/pressure - xvals: [110000.,105000.,100000.,95000.,90000.,85000.,80000.,75000.,70000.,65000.,60000.,55000.,50000.,45000.,40000.,35000.,30000.,25000.,20000.,15000.,10000.,7500.,5000.,4000.,3000.,2000.,1000.,500.,400.,300.,200.,100.,0.] #Pressure (Pa) - errors: [3.8,3.8,3.8,3.8,3.8,3.8,3.8,3.8,3.9,3.9,4.,4.,4.1,5.,6.,6.3,6.6,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.] - -# Type 253 (MVIRI/SEVERI LWIR) -- filter: Perform Action - filter variables: - - name: windEastward - - name: windNorthward - where: - - variable: ObsType/windEastward - is_in: 253 - action: - name: assign error - error function: - name: ObsFunction/ObsErrorModelStepwiseLinear - options: - xvar: - name: MetaData/pressure - xvals: [110000.,105000.,100000.,95000.,90000.,85000.,80000.,75000.,70000.,65000.,60000.,55000.,50000.,45000.,40000.,35000.,30000.,25000.,20000.,15000.,10000.,7500.,5000.,4000.,3000.,2000.,1000.,500.,400.,300.,200.,100.,0.] #Pressure (Pa) - errors: [3.8,3.8,3.8,3.8,3.8,3.8,3.8,3.8,3.9,3.9,4.,4.,4.1,5.,6.,6.3,6.6,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.] - -# Type 254 (MVIRI/SEVIRI WV, both cloud-top and clear-sky) -- filter: Perform Action - filter variables: - - name: windEastward - - name: windNorthward - where: - - variable: ObsType/windEastward - is_in: 254 - action: - name: assign error - error function: - name: ObsFunction/ObsErrorModelStepwiseLinear - options: - xvar: - name: MetaData/pressure - xvals: [110000.,105000.,100000.,95000.,90000.,85000.,80000.,75000.,70000.,65000.,60000.,55000.,50000.,45000.,40000.,35000.,30000.,25000.,20000.,15000.,10000.,7500.,5000.,4000.,3000.,2000.,1000.,500.,400.,300.,200.,100.,0.] #Pressure (Pa) - errors: [3.8,3.8,3.8,3.8,3.8,3.8,3.8,3.8,3.9,3.9,4.,4.5,6.1,6.,6.5,7.3,7.6,7.,7.5,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.] - -# Type 255 (LEOGEO): -- filter: Perform Action - filter variables: - - name: windEastward - - name: windNorthward - where: - - variable: ObsType/windEastward - is_in: 255 - action: - name: assign error - error function: - name: ObsFunction/ObsErrorModelStepwiseLinear - options: - xvar: - name: MetaData/pressure - xvals: [110000.,105000.,100000.,95000.,90000.,85000.,80000.,75000.,70000.,65000.,60000.,55000.,50000.,45000.,40000.,35000.,30000.,25000.,20000.,15000.,10000.,7500.,5000.,4000.,3000.,2000.,1000.,500.,400.,300.,200.,100.,0.] #Pressure (Pa) - errors: [3.8,3.8,3.8,3.8,3.8,3.8,3.8,3.8,3.9,3.9,4.,4.,4.1,5.,6.,6.3,6.6,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.] - -# Type 256 (Multi Spec. Imager WV, both clear-sky and cloud-top): Assigned all dummy values -- filter: Perform Action - filter variables: - - name: windEastward - - name: windNorthward - where: - - variable: ObsType/windEastward - is_in: 256 - action: - name: assign error - error function: - name: ObsFunction/ObsErrorModelStepwiseLinear - options: - xvar: - name: MetaData/pressure - xvals: [110000.,0.] #Pressure (Pa) - errors: [1000000000.,1000000000.] - -# Type 257 (MODIS LWIR) -- filter: Perform Action - filter variables: - - name: windEastward - - name: windNorthward - where: - - variable: ObsType/windEastward - is_in: 257 - action: - name: assign error - error function: - name: ObsFunction/ObsErrorModelStepwiseLinear - options: - xvar: - name: MetaData/pressure - xvals: [110000.,105000.,100000.,95000.,90000.,85000.,80000.,75000.,70000.,65000.,60000.,55000.,50000.,45000.,40000.,35000.,30000.,25000.,20000.,15000.,10000.,7500.,5000.,4000.,3000.,2000.,1000.,500.,400.,300.,200.,100.,0.] #Pressure (Pa) - errors: [3.8,3.8,3.8,3.8,3.8,3.8,3.8,3.8,3.9,3.9,4.,4.,4.1,5.,6.,6.3,6.6,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.] - -# Type 258 (MODIS cloud-top WV): Some levels assigned dummy values -- filter: Perform Action - filter variables: - - name: windEastward - - name: windNorthward - where: - - variable: ObsType/windEastward - is_in: 258 - action: - name: assign error - error function: - name: ObsFunction/ObsErrorModelStepwiseLinear - options: - xvar: - name: MetaData/pressure - xvals: [110000.,60000.,55000.,50000.,45000.,40000.,35000.,30000.,25000.,20000.,15000.,10000.,7500.,5000.,4000.,3000.,2000.,1000.,500.,400.,300.,200.,100.,0.] #Pressure (Pa) - errors: [1000000000.,1000000000.,4.,4.1,5.,6.,6.3,6.6,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.] - -# Type 259 (MODIS clear-sky WV): Some levels assigned dummy values -- filter: Perform Action - filter variables: - - name: windEastward - - name: windNorthward - where: - - variable: ObsType/windEastward - is_in: 259 - action: - name: assign error - error function: - name: ObsFunction/ObsErrorModelStepwiseLinear - options: - xvar: - name: MetaData/pressure - xvals: [110000.,60000.,55000.,50000.,45000.,40000.,35000.,30000.,25000.,20000.,15000.,10000.,7500.,5000.,4000.,3000.,2000.,1000.,500.,400.,300.,200.,100.,0.] #Pressure (Pa) - errors: [1000000000.,1000000000.,4.,4.1,5.,6.,6.3,6.6,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.] - -# Type 260 (VIIRS LWIR): All levels assigned dummy values in prepobs_errtable.global, HOWEVER the GSI values appear -# to be a standard profile (borrowed from e.g., Type=244). Using the standard profile here. -# It's possibly that my prepobs_errtable.global file is out-of-date. -- filter: Perform Action - filter variables: - - name: windEastward - - name: windNorthward - where: - - variable: ObsType/windEastward - is_in: 260 - action: - name: assign error - error function: - name: ObsFunction/ObsErrorModelStepwiseLinear - options: - xvar: - name: MetaData/pressure - xvals: [110000.,105000.,100000.,95000.,90000.,85000.,80000.,75000.,70000.,65000.,60000.,55000.,50000.,45000.,40000.,35000.,30000.,25000.,20000.,15000.,10000.,7500.,5000.,4000.,3000.,2000.,1000.,500.,400.,300.,200.,100.,0.] #Pressure (Pa) - errors: [3.8,3.8,3.8,3.8,3.8,3.8,3.8,3.8,3.9,3.9,4.,4.,4.1,5.,6.,6.3,6.6,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.,7.] - -passedBenchmark: 2459862 # with enforced time window -#passedBenchmark: 2752378 # without enforcing time window diff --git a/parm/atm/obs/testing/scatwind.yaml b/parm/atm/obs/testing/scatwind.yaml deleted file mode 100644 index 9befdda81..000000000 --- a/parm/atm/obs/testing/scatwind.yaml +++ /dev/null @@ -1,298 +0,0 @@ -obs space: - name: scatwind - obsdatain: - engine: - type: H5File - obsfile: !ENV scatwind_obs_${CDATE}.nc4 - obsdataout: - engine: - type: H5File - obsfile: !ENV scatwind_diag_${CDATE}.nc4 - simulated variables: [windEastward, windNorthward] - -geovals: - filename: !ENV scatwind_geoval_${CDATE}.nc4 - -obs operator: - name: VertInterp - # Use height vertical coordinate first -# vertical coordinate: geometric_height - vertical coordinate: geopotential_height - observation vertical coordinate group: DerivedVariables - observation vertical coordinate: adjustedHeight - interpolation method: linear - hofx scaling field: SurfaceWindScalingHeight - hofx scaling field group: DerivedVariables - -obs prior filters: -# Apply variable changes needed for rescaled height coordinate -- filter: Variable Transforms - Transform: AdjustedHeightCoordinate - SkipWhenNoObs: False - -# Apply variable changes needed for wind scaling -- filter: Variable Transforms - Transform: SurfaceWindScalingHeight - SkipWhenNoObs: False - -# Assign the initial observation error (constant value, 1.5 m/s right now). -- filter: Perform Action - filter variables: - - name: windEastward - - name: windNorthward - action: - name: assign error - error parameter: 1.5 - -# Calculate error inflation factor for duplicate observations -#- filter: Variable Assignment -# assignments: -# - name: ObsErrorFactorDuplicateCheck/windEastward -# type: float -# function: -# name: ObsFunction/ObsErrorFactorDuplicateCheck -# options: -# use_air_pressure: true -# variable: windEastward - -#- filter: Variable Assignment -# assignments: -# - name: ObsErrorFactorDuplicateCheck/windNorthward -# type: float -# function: -# name: ObsFunction/ObsErrorFactorDuplicateCheck -# options: -# use_air_pressure: true -# variable: windNorthward - -# Reject all obs with PreQC mark already set above 3 -# NOTE: All scatwinds have an automatic PreQC mark of 2 (hard-wired default from GSI) -# - filter: PreQC -# maxvalue: 3 -# action: -# name: reject - -obs post filters: -# Reject all ASCAT (Type 290) winds with tsavg <= 273.0 (surface temperature) -- filter: Perform Action - filter variables: - - name: windEastward - - name: windNorthward - where: - - variable: ObsType/windEastward - is_in: 290 -# - variable: GeoVaLs/surface_temperature - - variable: GeoVaLs/surface_temperature_where_land - maxvalue: 273. - action: - name: reject - -# Reject all ASCAT (Type 290) winds with isflg /= 0 (non-water surface) -- filter: Perform Action - filter variables: - - name: windEastward - - name: windNorthward - where: - - variable: ObsType/windEastward - is_in: 290 - - variable: GeoVaLs/water_area_fraction - maxvalue: 0.99 -# - variable: GeoVaLs/surface_type -# minvalue: 0.001 - action: - name: reject -#passedBenchmark: 53558 # 2 variables (u,v), u=26779 passing, v=26779 passing - -# Reject ASCAT (Type 290) when observed component deviates from background by more than 5.0 m/s -# NOTE: This check can reject a u- or v-component of the same observation independently, which -# is fundamentally different from how GSI rejects obs (both components are rejected if -# either component fails a check). -- filter: Bounds Check - filter variables: - - name: windEastward - - name: windNorthward - test variables: - - name: ObsFunction/Arithmetic - options: - variables: - - name: ObsValue/windEastward - - name: HofX/windEastward - coefs: [1.0, -1.0] - minvalue: -5.0 - maxvalue: 5.0 - -- filter: Bounds Check - filter variables: - - name: windEastward - - name: windNorthward - test variables: - - name: ObsFunction/Arithmetic - options: - variables: - - name: ObsValue/windNorthward - - name: HofX/windNorthward - coefs: [1.0, -1.0] - minvalue: -5.0 - maxvalue: 5.0 -#passedBenchmark: 52362 # 2 variables (u,v), u=26181 passing, v=26181 passing - -# Reject OSCAT (Type 291) when observed component deviates from background by more than 6.0 m/s -# NOTE: This check can reject a u- or v-component of the same observation independently, which -# is fundamentally different from how GSI rejects obs (both components are rejected if -# either component fails a check). -- filter: Background Check - filter variables: - - name: windEastward - - name: windNorthward - threshold: 6. - absolute threshold: 6. - where: - - variable: ObsType/windEastward - is_in: 291 - action: - name: reject - -# Reject ASCAT (Type 290) when ambiguity check fails (returned value is negative) -- filter: Bounds Check - filter variables: - - name: windEastward - - name: windNorthward - where: - - variable: ObsType/windEastward - is_in: 290 - test variables: - - name: ObsFunction/ScatWindsAmbiguityCheck - options: -# test_hofx: GsiHofX - minimum_uv: 0.0001 # hard-coding a minimum-uv for transparancy, want this to basically be zero - maxvalue: 0. - action: - name: reject -#passedBenchmark: 51776 # 2 variables (u,v), u=25888 passing, v=25888 passing - -# All scatwinds must adjust errors based on ObsErrorFactorPressureCheck. -# This check will inflate errors for obs that are too close to either -# the model top or bottom. -- filter: Perform Action - filter variables: - - name: windEastward - where: - - variable: - name: ObsType/windEastward - is_in: 290-291 - action: - name: inflate error - inflation variable: - name: ObsFunction/ObsErrorFactorPressureCheck - options: - variable: windEastward - inflation factor: 4.0 - -- filter: Perform Action - filter variables: - - name: windNorthward - where: - - variable: - name: ObsType/windNorthward - is_in: 290-291 - action: - name: inflate error - inflation variable: - name: ObsFunction/ObsErrorFactorPressureCheck - options: - variable: windNorthward - inflation factor: 4.0 -#passedBenchmark: 51776 # 2 variables (u,v), u=25888 passing, v=25888 passing - -# All scatwinds subject to a gross error check. This is contained within -# the WindsSPDBCheck, although it is not exclusive to satwinds. -- filter: Background Check - filter variables: - - name: windEastward - function absolute threshold: - - name: ObsFunction/WindsSPDBCheck - options: - wndtype: [ 290, 291] - cgross: [ 5.0, 5.0] - error_min: [1.4, 1.4] - error_max: [6.1, 6.1] - variable: windEastward - action: - name: reject - -- filter: Background Check - filter variables: - - name: windNorthward - function absolute threshold: - - name: ObsFunction/WindsSPDBCheck - options: - wndtype: [ 290, 291] - cgross: [ 5.0, 5.0] - error_min: [1.4, 1.4] - error_max: [6.1, 6.1] - variable: windNorthward - action: - name: reject -#passedBenchmark: 51776 # 2 variables (u,v), u=25888 passing, v=25888 passing - -# The last error inflation check is for duplicate observations. This one needs -# to come last, because we don't want to inflate errors for duplication if one -# of the duplicates should be rejected. -#- filter: Perform Action -# filter variables: -# - name: windEastward -# action: -# name: inflate error -# inflation variable: -# name: ObsErrorFactorDuplicateCheck/windEastward - -#- filter: Perform Action -# filter variables: -# - name: windNorthward -# action: -# name: inflate error -# inflation variable: -# name: ObsErrorFactorDuplicateCheck/windNorthward - -# There is no across-the-board inflation for nvqc=.true. for scatwinds, presumably because for -# 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: -# 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 functionality were to be activated for scatwinds, you would want to include this last inflation filter. -#- filter: Perform Action -# filter variables: -# - name: windEastward -# where: -# - variable: ObsType/windEastward -# is_in: 290-291 -# action: -# name: inflate error -# inflation factor: 1.25 -#- filter: Perform Action -# filter variables: -# - name: windNorthward -# where: -# - variable: ObsType/windNorthward -# is_in: 290-291 -# action: -# name: inflate error -# inflation factor: 1.25 -passedBenchmark: 51764 # 2 variables (u,v), u=25882 passing, v=25882 passing - # GSI rejects both u- and v-component in first-guess check, UFO does not, but when UFO rej is reconciled btwn u and v these match GSI rej - # u: 207 obs pass with corresponding v being rejected, 25880 obs in UFO/GSI agreement - # v: 130 obs pass with corresponding u being rejected, 25880 obs in UFO/GSI agreement - # 2 u- and 2 v-component obs pass in UFO that fail in GSI, only due to differences in assumed land-surface type (GSI=0, UFO=3) - # - # NOTE: These benchmark numbersare for a 6-hour time-window using the JEDI time-window convention only. The JEDI time-window convention - # differs from GSI and is less inclusive for observations at the beginning of the window. This can affect how the two systems - # employ ob-error inflation from duplicate observations, as the GSI has more observations at the beginning of the time-window to - # find duplicates. This can result in UFO ob-errors being smaller for some obs at the beginning of the UFO's JEDI-convention - # time-window. diff --git a/parm/atm/obs/testing/scatwind_noqc.yaml b/parm/atm/obs/testing/scatwind_noqc.yaml deleted file mode 100644 index ec4aef452..000000000 --- a/parm/atm/obs/testing/scatwind_noqc.yaml +++ /dev/null @@ -1,50 +0,0 @@ -obs space: - name: scatwind - obsdatain: - engine: - type: H5File - obsfile: !ENV scatwind_obs_${CDATE}.nc4 - obsdataout: - engine: - type: H5File - obsfile: !ENV scatwind_diag_${CDATE}.nc4 - simulated variables: [windEastward, windNorthward] - -geovals: - filename: !ENV scatwind_geoval_${CDATE}.nc4 - -obs operator: - name: VertInterp - # Use height vertical coordinate first -# vertical coordinate: geometric_height - vertical coordinate: geopotential_height - observation vertical coordinate group: DerivedVariables - observation vertical coordinate: adjustedHeight - interpolation method: linear - hofx scaling field: SurfaceWindScalingHeight - hofx scaling field group: DerivedVariables - -obs prior filters: -# Apply variable changes needed for rescaled height coordinate -- filter: Variable Transforms - Transform: AdjustedHeightCoordinate - SkipWhenNoObs: False - -# Apply variable changes needed for wind scaling -- filter: Variable Transforms - Transform: SurfaceWindScalingHeight - SkipWhenNoObs: False - -# Assign the initial observation error (constant value, 1.5 m/s) -- filter: Perform Action - filter variables: - - name: windEastward - - name: windNorthward - action: - name: assign error - error parameter: 1.5 - -passedBenchmark: 53546 -#passedBenchmark: 53558 -#vector ref: GsiHofXBc -#tolerance: 1.e-5 diff --git a/parm/atm/obs/testing/seviri_m08.yaml b/parm/atm/obs/testing/seviri_m08.yaml deleted file mode 100644 index f09fccabc..000000000 --- a/parm/atm/obs/testing/seviri_m08.yaml +++ /dev/null @@ -1,329 +0,0 @@ -obs operator: - name: CRTM - Absorbers: [H2O,O3,CO2] - obs options: - Sensor_ID: &Sensor_ID seviri_m08 - EndianType: little_endian - CoefficientPath: crtm/ -obs space: - name: seviri_m08 - obsdatain: - engine: - type: H5File - obsfile: !ENV seviri_m08_obs_${CDATE}.nc4 - obsdataout: - engine: - type: H5File - obsfile: !ENV seviri_m08_diag_${CDATE}.nc4 - simulated variables: [brightnessTemperature] - channels: &seviri_m08_channels 4-11 -geovals: - filename: !ENV seviri_m08_geoval_${CDATE}.nc4 -obs bias: - input file: !ENV seviri_m08_satbias_${GDATE}.nc4 - variational bc: - predictors: - - name: constant - - name: lapse_rate - order: 2 - tlapse: !ENV &seviri_m08_tlap seviri_m08_tlapmean_${GDATE}.txt - - name: lapse_rate - tlapse: *seviri_m08_tlap - - name: emissivity - - name: scan_angle - var_name: sensorScanPosition - order: 4 - - name: scan_angle - var_name: sensorScanPosition - order: 3 - - name: scan_angle - var_name: sensorScanPosition - order: 2 - - name: scan_angle - var_name: sensorScanPosition - -obs prior filters: -# Step 1: Assign obs error for each channel -- filter: Perform Action - filter variables: - - name: brightnessTemperature - channels: *seviri_m08_channels - action: - name: assign error - error parameter vector: [1.80, 2.50, 2.25, 1.25, 1.25, 1.25, 1.45, 1.25] - -obs post filters: -# Step 2: Surface type check -# Reject channels 5-6 over land-dominant area -- filter: RejectList - filter variables: - - name: brightnessTemperature - channels: 4, 7-11 - where: - - variable: - name: GeoVaLs/land_area_fraction - minvalue: 0.99 - -# Reject all channels over snow-dominant area -- filter: RejectList - filter variables: - - name: brightnessTemperature - channels: *seviri_m08_channels - where: - - variable: - name: GeoVaLs/surface_snow_area_fraction - minvalue: 0.99 - -# Reject all channels over ice-dominant area -- filter: RejectList - filter variables: - - name: brightnessTemperature - channels: *seviri_m08_channels - where: - - variable: - name: GeoVaLs/ice_area_fraction - minvalue: 0.99 - -# Reject all channelsover mixed surface -- filter: RejectList - filter variables: - - name: brightnessTemperature - channels: *seviri_m08_channels - where: - - variable: - name: GeoVaLs/land_area_fraction - maxvalue: 0.99 - max_exclusive: true - - variable: - name: GeoVaLs/water_area_fraction - maxvalue: 0.99 - max_exclusive: true - - variable: - name: GeoVaLs/ice_area_fraction - maxvalue: 0.99 - max_exclusive: true - - variable: - name: GeoVaLs/surface_snow_area_fraction - maxvalue: 0.99 - max_exclusive: true - -# Step 3: Terrain Check: Do not use when height > 1km -- filter: Domain Check - filter variables: - - name: brightnessTemperature - channels: *seviri_m08_channels - where: - - variable: - name: GeoVaLs/surface_geopotential_height - maxvalue: 1000.0 - -# Step 4: Observation Range Sanity Check -- filter: Bounds Check - filter variables: - - name: brightnessTemperature - channels: *seviri_m08_channels - minvalue: 0.0000 - maxvalue: 1000.0 - action: - name: reject - -# Step 5: Error Inflation based on topography -- filter: Variable Assignment - assignments: - - name: DerivedMetaData/ObsErrorFactorTopo - channels: *seviri_m08_channels - type: float - function: - name: ObsFunction/ObsErrorFactorTopoRad - channels: *seviri_m08_channels - options: - sensor: *Sensor_ID - channels: *seviri_m08_channels - -- filter: Perform Action - filter variables: - - name: brightnessTemperature - channels: *seviri_m08_channels - action: - name: inflate error - inflation variable: - name: DerivedMetaData/ObsErrorFactorTopo - channels: *seviri_m08_channels - -# Step 6: Error Inflation based on TOA transmittance -- filter: Perform Action - filter variables: - - name: brightnessTemperature - channels: *seviri_m08_channels - action: - name: inflate error - inflation variable: - name: ObsFunction/ObsErrorFactorTransmitTopRad - channels: *seviri_m08_channels - options: - channels: *seviri_m08_channels - -# Step 7: Cloud detection check -- filter: Bounds Check - filter variables: - - name: brightnessTemperature - channels: *seviri_m08_channels - test variables: - - name: ObsFunction/CloudDetectMinResidualIR - channels: *seviri_m08_channels - options: - channels: *seviri_m08_channels - use_flag: [ -1, 1, 1, -1, -1, -1, -1, -1 ] - use_flag_clddet: [ -2, -2, -2, -2, -2, -2, -2, -2 ] - obserr_dtempf: [0.50, 2.00, 4.00, 2.00, 4.00] - error parameter vector: [1.80, 2.50, 2.25, 1.25, 1.25, 1.25, 1.45, 1.25] - maxvalue: 1.0e-12 - action: - name: reject - -# Step 8: Scene consistency check using channel 9 -# Reject channels 4, 6-11 if channel 9 if scene consistency is greated than 0.5 -- filter: Domain Check - filter variables: - - name: brightnessTemperature - channels: 4, 6-11 - where: - - variable: - name: ClearSkyStdDev/brightnessTemperature - channels: 9 - maxvalue: 0.5 - max_exclusive: true - -# Step 9: Gross check -# Reject channels 4, 6-11 if omf > 2 -- filter: Background Check - filter variables: - - name: brightnessTemperature - channels: 4, 6-11 - absolute threshold: 2.0 - action: - name: reject - -# Step 10: Error inflation for channels 3-4 based on scene consistency from channel 5 -- filter: Perform Action - filter variables: - - name: brightnessTemperature - channels: 6-7 - where: - - variable: - name: ClearSkyStdDev/brightnessTemperature_5 - maxvalue: 0.5 - minvalue: 0.4 - min_exclusive: true - action: - name: inflate error - inflation factor: 1.14891 - -- filter: Perform Action - filter variables: - - name: brightnessTemperature - channels: 6-7 - where: - - variable: - name: ClearSkyStdDev/brightnessTemperature_5 - maxvalue: 0.6 - max_exclusive: true - minvalue: 0.5 - min_exclusive: true - action: - name: inflate error - inflation factor: 1.29228 - -- filter: Perform Action - filter variables: - - name: brightnessTemperature - channels: 6-7 - where: - - variable: - name: ClearSkyStdDev/brightnessTemperature_5 - maxvalue: 0.7 - max_exclusive: true - minvalue: 0.6 - action: - name: inflate error - inflation factor: 1.49666 - -- filter: Perform Action - filter variables: - - name: brightnessTemperature - channels: 6-7 - where: - - variable: - name: ClearSkyStdDev/brightnessTemperature_5 - minvalue: 0.7 - action: - name: inflate error - inflation factor: 1.51987 - -# Step 11: -- filter: Bounds Check - filter variables: - - name: brightnessTemperature - channels: *seviri_m08_channels - test variables: - - name: ObsFunction/NearSSTRetCheckIR - channels: *seviri_m08_channels - options: - channels: *seviri_m08_channels - use_flag: [ -1, 1, 1, -1, -1, -1, -1, -1 ] - maxvalue: 1.0e-12 - action: - name: reject - -# Step 12: Error inflation based on surface jacobian check -- filter: Perform Action - filter variables: - - name: brightnessTemperature - channels: *seviri_m08_channels - action: - name: inflate error - inflation variable: - name: ObsFunction/ObsErrorFactorSurfJacobianRad - channels: *seviri_m08_channels - options: - channels: *seviri_m08_channels - sensor: seviri_m08 - obserr_demisf: [0.01, 0.02, 0.03, 0.02, 0.03] - obserr_dtempf: [0.50, 2.00, 4.00, 2.00, 4.00] - -# Step 13: Cloud fraction cehck -# Reject channels 4, 6-11 if Cloud fraction (percent) > 2 -- filter: Domain Check - filter variables: - - name: brightnessTemperature - channels: 4, 6-11 - where: - - variable: - name: MetaData/cloudAmount - maxvalue: 2 - -# Step14: Final gross check -- filter: Background Check - filter variables: - - name: brightnessTemperature - channels: *seviri_m08_channels - function absolute threshold: - - name: ObsFunction/ObsErrorBoundIR - channels: *seviri_m08_channels - options: - sensor: *Sensor_ID - channels: *seviri_m08_channels - obserr_bound_latitude: - name: ObsFunction/ObsErrorFactorLatRad - options: - latitude_parameters: [0.0, 0.0, 0.0, 0.0] - obserr_bound_transmittop: - name: ObsFunction/ObsErrorFactorTransmitTopRad - channels: *seviri_m08_channels - options: - channels: *seviri_m08_channels - obserr_bound_max: [ 2.0, 4.0, 3.5, 2.0, 2.0, 2.0, 2.0, 3.0 ] - error parameter vector: [1.80, 2.50, 2.25, 1.25, 1.25, 1.25, 1.45, 1.25] - action: - name: reject -passedBenchmark: 8792 diff --git a/parm/atm/obs/testing/seviri_m11.yaml b/parm/atm/obs/testing/seviri_m11.yaml deleted file mode 100644 index 51527b72c..000000000 --- a/parm/atm/obs/testing/seviri_m11.yaml +++ /dev/null @@ -1,329 +0,0 @@ -obs operator: - name: CRTM - Absorbers: [H2O,O3,CO2] - obs options: - Sensor_ID: &Sensor_ID seviri_m11 - EndianType: little_endian - CoefficientPath: crtm/ -obs space: - name: seviri_m11 - obsdatain: - engine: - type: H5File - obsfile: !ENV seviri_m11_obs_${CDATE}.nc4 - obsdataout: - engine: - type: H5File - obsfile: !ENV seviri_m11_diag_${CDATE}.nc4 - simulated variables: [brightnessTemperature] - channels: &seviri_m11_channels 4-11 -geovals: - filename: !ENV seviri_m11_geoval_${CDATE}.nc4 -obs bias: - input file: !ENV seviri_m11_satbias_${GDATE}.nc4 - variational bc: - predictors: - - name: constant - - name: lapse_rate - order: 2 - tlapse: !ENV &seviri_m11_tlap seviri_m11_tlapmean_${GDATE}.txt - - name: lapse_rate - tlapse: *seviri_m11_tlap - - name: emissivity - - name: scan_angle - var_name: sensorScanPosition - order: 4 - - name: scan_angle - var_name: sensorScanPosition - order: 3 - - name: scan_angle - var_name: sensorScanPosition - order: 2 - - name: scan_angle - var_name: sensorScanPosition - -obs prior filters: -# Step 1: Assign obs error for each channel -- filter: Perform Action - filter variables: - - name: brightnessTemperature - channels: *seviri_m11_channels - action: - name: assign error - error parameter vector: [0.75, 2.50, 2.25, 1.25, 1.25, 0.75, 0.80, 1.25] - -obs post filters: -# Step 2: Surface type check -# Reject channels 5-6 over land-dominant area -- filter: RejectList - filter variables: - - name: brightnessTemperature - channels: 4, 7-11 - where: - - variable: - name: GeoVaLs/land_area_fraction - minvalue: 0.99 - -# Reject all channels over snow-dominant area -- filter: RejectList - filter variables: - - name: brightnessTemperature - channels: *seviri_m11_channels - where: - - variable: - name: GeoVaLs/surface_snow_area_fraction - minvalue: 0.99 - -# Reject all channels over ice-dominant area -- filter: RejectList - filter variables: - - name: brightnessTemperature - channels: *seviri_m11_channels - where: - - variable: - name: GeoVaLs/ice_area_fraction - minvalue: 0.99 - -# Reject all channelsover mixed surface -- filter: RejectList - filter variables: - - name: brightnessTemperature - channels: *seviri_m11_channels - where: - - variable: - name: GeoVaLs/land_area_fraction - maxvalue: 0.99 - max_exclusive: true - - variable: - name: GeoVaLs/water_area_fraction - maxvalue: 0.99 - max_exclusive: true - - variable: - name: GeoVaLs/ice_area_fraction - maxvalue: 0.99 - max_exclusive: true - - variable: - name: GeoVaLs/surface_snow_area_fraction - maxvalue: 0.99 - max_exclusive: true - -# Step 3: Terrain Check: Do not use when height > 1km -- filter: Domain Check - filter variables: - - name: brightnessTemperature - channels: *seviri_m11_channels - where: - - variable: - name: GeoVaLs/surface_geopotential_height - maxvalue: 1000.0 - -# Step 4: Observation Range Sanity Check -- filter: Bounds Check - filter variables: - - name: brightnessTemperature - channels: *seviri_m11_channels - minvalue: 0.0000 - maxvalue: 1000.0 - action: - name: reject - -# Step 5: Error Inflation based on topography -- filter: Variable Assignment - assignments: - - name: DerivedMetaData/ObsErrorFactorTopo - channels: *seviri_m11_channels - type: float - function: - name: ObsFunction/ObsErrorFactorTopoRad - channels: *seviri_m11_channels - options: - sensor: *Sensor_ID - channels: *seviri_m11_channels - -- filter: Perform Action - filter variables: - - name: brightnessTemperature - channels: *seviri_m11_channels - action: - name: inflate error - inflation variable: - name: DerivedMetaData/ObsErrorFactorTopo - channels: *seviri_m11_channels - -# Step 6: Error Inflation based on TOA transmittance -- filter: Perform Action - filter variables: - - name: brightnessTemperature - channels: *seviri_m11_channels - action: - name: inflate error - inflation variable: - name: ObsFunction/ObsErrorFactorTransmitTopRad - channels: *seviri_m11_channels - options: - channels: *seviri_m11_channels - -# Step 7: Cloud detection check -- filter: Bounds Check - filter variables: - - name: brightnessTemperature - channels: *seviri_m11_channels - test variables: - - name: ObsFunction/CloudDetectMinResidualIR - channels: *seviri_m11_channels - options: - channels: *seviri_m11_channels - use_flag: [ -1, 1, 1, -1, -1, -1, -1, -1 ] - use_flag_clddet: [ -1, -2, -2, -2, -2, -2, -2, -2 ] - obserr_dtempf: [0.50, 2.00, 4.00, 2.00, 4.00] - error parameter vector: [0.75, 2.50, 2.25, 1.25, 1.25, 0.75, 0.80, 1.25] - maxvalue: 1.0e-12 - action: - name: reject - -# Step 8: Scene consistency check using channel 9 -# Reject channels 4, 6-11 if channel 9 if scene consistency is greated than 0.5 -- filter: Domain Check - filter variables: - - name: brightnessTemperature - channels: 4, 6-11 - where: - - variable: - name: ClearSkyStdDev/brightnessTemperature - channels: 9 - maxvalue: 0.5 - max_exclusive: true - -# Step 9: Gross check -# Reject channels 4, 6-11 if omf > 2 -- filter: Background Check - filter variables: - - name: brightnessTemperature - channels: 4, 6-11 - absolute threshold: 2.0 - action: - name: reject - -# Step 10: Error inflation for channels 3-4 based on scene consistency from channel 5 -- filter: Perform Action - filter variables: - - name: brightnessTemperature - channels: 6-7 - where: - - variable: - name: ClearSkyStdDev/brightnessTemperature_5 - maxvalue: 0.5 - minvalue: 0.4 - min_exclusive: true - action: - name: inflate error - inflation factor: 1.14891 - -- filter: Perform Action - filter variables: - - name: brightnessTemperature - channels: 6-7 - where: - - variable: - name: ClearSkyStdDev/brightnessTemperature_5 - maxvalue: 0.6 - max_exclusive: true - minvalue: 0.5 - min_exclusive: true - action: - name: inflate error - inflation factor: 1.29228 - -- filter: Perform Action - filter variables: - - name: brightnessTemperature - channels: 6-7 - where: - - variable: - name: ClearSkyStdDev/brightnessTemperature_5 - maxvalue: 0.7 - max_exclusive: true - minvalue: 0.6 - action: - name: inflate error - inflation factor: 1.49666 - -- filter: Perform Action - filter variables: - - name: brightnessTemperature - channels: 6-7 - where: - - variable: - name: ClearSkyStdDev/brightnessTemperature_5 - minvalue: 0.7 - action: - name: inflate error - inflation factor: 1.51987 - -# Step 11: -- filter: Bounds Check - filter variables: - - name: brightnessTemperature - channels: *seviri_m11_channels - test variables: - - name: ObsFunction/NearSSTRetCheckIR - channels: *seviri_m11_channels - options: - channels: *seviri_m11_channels - use_flag: [ -1, 1, 1, -1, -1, -1, -1, -1 ] - maxvalue: 1.0e-12 - action: - name: reject - -# Step 12: Error inflation based on surface jacobian check -- filter: Perform Action - filter variables: - - name: brightnessTemperature - channels: *seviri_m11_channels - action: - name: inflate error - inflation variable: - name: ObsFunction/ObsErrorFactorSurfJacobianRad - channels: *seviri_m11_channels - options: - channels: *seviri_m11_channels - sensor: seviri_m11 - obserr_demisf: [0.01, 0.02, 0.03, 0.02, 0.03] - obserr_dtempf: [0.50, 2.00, 4.00, 2.00, 4.00] - -# Step 13: Cloud fraction cehck -# Reject channels 4, 6-11 if Cloud fraction (percent) > 2 -- filter: Domain Check - filter variables: - - name: brightnessTemperature - channels: 4, 6-11 - where: - - variable: - name: MetaData/cloudAmount - maxvalue: 2 - -# Step14: Final gross check -- filter: Background Check - filter variables: - - name: brightnessTemperature - channels: *seviri_m11_channels - function absolute threshold: - - name: ObsFunction/ObsErrorBoundIR - channels: *seviri_m11_channels - options: - sensor: *Sensor_ID - channels: *seviri_m11_channels - obserr_bound_latitude: - name: ObsFunction/ObsErrorFactorLatRad - options: - latitude_parameters: [0.0, 0.0, 0.0, 0.0] - obserr_bound_transmittop: - name: ObsFunction/ObsErrorFactorTransmitTopRad - channels: *seviri_m11_channels - options: - channels: *seviri_m11_channels - obserr_bound_max: [ 2.0, 4.0, 3.5, 2.0, 2.0, 2.0, 2.0, 3.0 ] - error parameter vector: [0.75, 2.50, 2.25, 1.25, 1.25, 0.75, 0.80, 1.25] - action: - name: reject -passedBenchmark: 10714 diff --git a/parm/atm/obs/testing/sfc.yaml b/parm/atm/obs/testing/sfc.yaml deleted file mode 100644 index 0c255a128..000000000 --- a/parm/atm/obs/testing/sfc.yaml +++ /dev/null @@ -1,22 +0,0 @@ -obs space: - name: sfc - obsdatain: - engine: - type: H5File - obsfile: !ENV sfc_obs_${CDATE}.nc4 - obsdataout: - engine: - type: H5File - obsfile: !ENV sfc_diag_${CDATE}.nc4 - simulated variables: [stationPressure, airTemperature, virtualTemperature] -geovals: - filename: !ENV sfc_geoval_${CDATE}.nc4 -vector ref: GsiHofXBc -tolerance: 0.01 -obs operator: - name: SfcPCorrected - da_psfc_scheme: GSI - geovar_sfc_geomz: surface_geometric_height - geovar_geomz: geopotential_height -linear obs operator: - name: Identity diff --git a/parm/atm/obs/testing/sfcship.yaml b/parm/atm/obs/testing/sfcship.yaml deleted file mode 100644 index 5aff2d9ee..000000000 --- a/parm/atm/obs/testing/sfcship.yaml +++ /dev/null @@ -1,73 +0,0 @@ -obs space: - name: sfcship - obsdatain: - engine: - type: H5File - obsfile: !ENV sfcship_obs_${CDATE}.nc4 - obsdataout: - engine: - type: H5File - obsfile: !ENV sfcship_diag_${CDATE}.nc4 - overwrite: true - simulated variables: [stationPressure, airTemperature, specificHumidity] -geovals: - filename: !ENV sfcship_geoval_${CDATE}.nc4 -obs operator: - name: Composite - components: - - name: VertInterp - variables: - - name: airTemperature - - name: specificHumidity - - name: SfcPCorrected - variables: - - name: stationPressure - da_psfc_scheme: GSI - geovar_sfc_geomz: surface_geometric_height - geovar_geomz: geopotential_height - -obs filters: - # Observation range sanity check - - filter: Bounds Check - filter variables: - - name: stationPressure - minvalue: 37499.0 - maxvalue: 106999.0 - action: - name: reject - filter variables: - - name: airTemperature - minvalue: 195.0 - maxvalue: 327.0 - action: - name: reject - filter variables: - - name: specificHumidity - minvalue: 0.0 - maxvalue: 0.03499 - action: - name: reject - - # Gross error check with (O - B) / ObsError greater than threshold. - - filter: Background Check - filter variables: - - name: stationPressure - threshold: 3.6 - absolute threshold: 990.0 - action: - name: reject - defer to post: true - filter variables: - - name: airTemperature - threshold: 7.0 - absolute threshold: 9.0 - action: - name: reject - defer to post: true - - # Reject all ObsType 183 - - filter: BlackList - where: - - variable: - name: ObsType/stationPressure - is_in: 183 diff --git a/parm/atm/obs/testing/sondes.yaml b/parm/atm/obs/testing/sondes.yaml deleted file mode 100644 index 2adc70301..000000000 --- a/parm/atm/obs/testing/sondes.yaml +++ /dev/null @@ -1,106 +0,0 @@ -obs space: - name: sondes - obsdatain: - engine: - type: H5File - obsfile: !ENV sondes_obs_${CDATE}.nc4 - obsgrouping: - group variables: ["stationIdentification"] - sort variable: "pressure" - sort order: "descending" - obsdataout: - engine: - type: H5File - obsfile: !ENV sondes_diag_${CDATE}.nc4 - simulated variables: [stationPressure, airTemperature, windEastward, windNorthward, specificHumidity] -geovals: - filename: !ENV sondes_geoval_${CDATE}.nc4 -vector ref: GsiHofXBc -tolerance: 0.01 -obs operator: - name: Composite - components: - - name: VertInterp - variables: - - name: airTemperature - - name: windEastward - - name: windNorthward - - name: specificHumidity - - name: SfcPCorrected - da_psfc_scheme: GSI - geovar_sfc_geomz: surface_geometric_height - geovar_geomz: geopotential_height - variables: - - name: stationPressure -linear obs operator: - name: Composite - components: - - name: VertInterp - variables: - - name: airTemperature - - name: windEastward - - name: windNorthward - - name: specificHumidity - - name: Identity - variables: - - name: stationPressure -obs filters: - # - # Reject all obs with PreQC mark already set above 3 - - filter: PreQC - maxvalue: 3.0 - action: - name: reject - # - # Observation Range Sanity Check - - filter: Bounds Check - filter variables: - - name: stationPressure - minvalue: 37499.0 - maxvalue: 106999.0 - action: - name: reject - # - # Assign obsError - - filter: Perform Action - filter variables: - - name: stationPressure - action: - name: assign error - error parameter: 100.0 # 1.0 hPa - # - # Assign the initial observation error, based on height/pressure - - filter: Perform Action - filter variables: - - name: stationPressure - action: - name: assign error - error function: - name: ObsErrorModelStepwiseLinear@ObsFunction - options: - xvar: - name: ObsValue/stationPressure - xvals: [80000.0, 75000.0] - errors: [110.0, 120.0] # 1.1 mb below 800 mb and 1.2 mb agove 750 mb - # - - filter: Perform Action - filter variables: - - name: stationPressure - action: - name: inflate error - inflation variable: - name: ObsErrorFactorSfcPressure@ObsFunction - options: - error_min: 100.0 # 1 mb - error_max: 300.0 # 3 mb - geovar_geomz: geopotential_height - geovar_sfc_geomz: surface_geometric_height - # - # Gross error check with (O - B) / ObsError greater than threshold - - filter: Background Check - filter variables: - - name: stationPressure - threshold: 3.6 - absolute threshold: 990.0 - action: - name: reject diff --git a/parm/atm/obs/testing/sondes_ps.yaml b/parm/atm/obs/testing/sondes_ps.yaml deleted file mode 100644 index 152fa2ace..000000000 --- a/parm/atm/obs/testing/sondes_ps.yaml +++ /dev/null @@ -1,23 +0,0 @@ -obs space: - name: sondes_ps - obsdatain: - engine: - type: H5File - obsfile: !ENV sondes_ps_obs_${CDATE}.nc4 - obsdataout: - engine: - type: H5File - obsfile: !ENV sondes_ps_diag_${CDATE}.nc4 - simulated variables: [stationPressure] -geovals: - filename: !ENV sondes_ps_geoval_${CDATE}.nc4 -vector ref: GsiHofXBc -tolerance: 0.01 -obs operator: - name: SfcPCorrected - da_psfc_scheme: GSI - geovar_sfc_geomz: surface_geometric_height - #geovar_sfc_geomz: surface_geopotential_height - geovar_geomz: geopotential_height -linear obs operator: - name: Identity diff --git a/parm/atm/obs/testing/ssmis_f17.yaml b/parm/atm/obs/testing/ssmis_f17.yaml deleted file mode 100644 index bfab30c20..000000000 --- a/parm/atm/obs/testing/ssmis_f17.yaml +++ /dev/null @@ -1,770 +0,0 @@ -obs operator: - name: CRTM - Absorbers: [H2O,O3,CO2] - obs options: - Sensor_ID: &Sensor_ID ssmis_f17 - EndianType: little_endian - CoefficientPath: crtm/ -obs space: - name: ssmis_f17 - obsdatain: - engine: - type: H5File - obsfile: !ENV ssmis_f17_obs_${CDATE}.nc4 - obsdataout: - engine: - type: H5File - obsfile: !ENV ssmis_f17_diag_${CDATE}.nc4 - simulated variables: [brightnessTemperature] - channels: &all_channels 1-24 -geovals: - filename: !ENV ssmis_f17_geoval_${CDATE}.nc4 -obs bias: - input file: !ENV ssmis_f17_satbias_${GDATE}.nc4 - variational bc: - predictors: - - name: constant - - name: cloud_liquid_water - sensor: SSMIS - ch19h: 12 - ch19v: 13 - ch22v: 14 - ch37h: 15 - ch37v: 16 - ch91v: 17 - ch91h: 18 - - name: cosine_of_latitude_times_orbit_node - - name: sine_of_latitude - - name: lapse_rate - order: 2 - tlapse: !ENV &ssmis_f17_tlap ssmis_f17_tlapmean_${GDATE}.txt - - name: lapse_rate - tlapse: *ssmis_f17_tlap - - name: emissivity - - name: scan_angle - var_name: sensorScanPosition - order: 4 - - name: scan_angle - var_name: sensorScanPosition - order: 3 - - name: scan_angle - var_name: sensorScanPosition - order: 2 - - name: scan_angle - var_name: sensorScanPosition - -obs prior filters: -# Step 1: Initial Observation Error Assignment -- filter: Perform Action - filter variables: - - name: brightnessTemperature - channels: *all_channels - action: - name: assign error - error parameter vector: [ 1.50, 0.50, 0.50, 0.50, 0.50, 1.00, 1.00, 3.00, 3.00, 3.00, - 3.00, 2.40, 1.27, 1.44, 3.00, 1.34, 1.74, 3.75, 3.00, 3.00, - 2.00, 6.40, 1.00, 1.00] -obs post filters: -# Step 2: Gross check over water-dominant area -- filter: Background Check - filter variables: - - name: brightnessTemperature - channels: *all_channels - absolute threshold: 3.5 - remove bias correction: true - where: - - variable: - name: GeoVaLs/water_area_fraction - minvalue: 0.99 - action: - name: reject - -# Step 3: Reject all channels if surface height is greater than 2km -- filter: RejectList - filter variables: - - name: brightnessTemperature - channels: *all_channels - where: - - variable: - name: GeoVaLs/surface_geopotential_height - minvalue: 2000.0 - min_exclusive: true - - variable: - name: GeoVaLs/water_area_fraction - maxvalue: 0.99 - max_exclusive: true - -# Step 4: Reject data over mixed surface type -- filter: RejectList - filter variables: - - name: brightnessTemperature - channels: 1-3,8-18 - where: - - variable: - name: GeoVaLs/land_area_fraction - maxvalue: 0.99 - max_exclusive: true - - variable: - name: GeoVaLs/water_area_fraction - maxvalue: 0.99 - max_exclusive: true - - variable: - name: GeoVaLs/ice_area_fraction - maxvalue: 0.99 - max_exclusive: true - - variable: - name: GeoVaLs/surface_snow_area_fraction - maxvalue: 0.99 - max_exclusive: true - -# Step 5: Channel 2 O-F check over non-water dominant area -- filter: Difference Check - filter variables: - - name: brightnessTemperature - channels: 1-2, 12-16 - reference: ObsValue/brightnessTemperature_2 - value: HofX/brightnessTemperature_2 - minvalue: -1.5 - maxvalue: 1.5 - where: - - variable: - name: GeoVaLs/water_area_fraction - maxvalue: 0.99 - max_exclusive: true - -# Step 6: Gross check over non-water dominant area -- filter: Background Check - filter variables: - - name: brightnessTemperature - channels: *all_channels - absolute threshold: 3.5 - remove bias correction: true - where: - - variable: - name: GeoVaLs/water_area_fraction - maxvalue: 0.99 - max_exclusive: true - action: - name: reject - -# Step 7: Scattering check for channels 9-11 using channels 8 and 17 -- filter: Variable Assignment - assignments: - - name: DerivedMetaData/SSMISScatteringIndex9 - type: float - function: - name: ObsFunction/Arithmetic - options: - variables: - - name: HofX/brightnessTemperature_17 - - name: ObsBiasData/brightnessTemperature_17 - - name: HofX/brightnessTemperature_8 - - name: ObsBiasData/brightnessTemperature_8 - coefs: [-0.485934, 0.485934, 0.473806, -0.473806] - intercept: 271.252327 - -- filter: Variable Assignment - assignments: - - name: DerivedMetaData/SSMISScatteringIndex10 - type: float - function: - name: ObsFunction/Arithmetic - options: - variables: - - name: HofX/brightnessTemperature_17 - - name: ObsBiasData/brightnessTemperature_17 - - name: HofX/brightnessTemperature_8 - - name: ObsBiasData/brightnessTemperature_8 - coefs: [-0.413688, 0.413688, 0.361549, -0.361549] - intercept: 272.280341 - -- filter: Variable Assignment - assignments: - - name: DerivedMetaData/SSMISScatteringIndex11 - type: float - function: - name: ObsFunction/Arithmetic - options: - variables: - - name: HofX/brightnessTemperature_17 - - name: ObsBiasData/brightnessTemperature_17 - - name: HofX/brightnessTemperature_8 - - name: ObsBiasData/brightnessTemperature_8 - coefs: [-0.400882, 0.400882, 0.270510, -0.270510] - intercept: 278.824902 - -- filter: Difference Check - filter variables: - - name: brightnessTemperature - channels: 9 - reference: ObsValue/brightnessTemperature_9 - value: DerivedMetaData/SSMISScatteringIndex9 - maxvalue: 2 - -- filter: Difference Check - filter variables: - - name: brightnessTemperature - channels: 10 - reference: ObsValue/brightnessTemperature_10 - value: DerivedMetaData/SSMISScatteringIndex10 - maxvalue: 2 - -- filter: Difference Check - filter variables: - - name: brightnessTemperature - channels: 11 - reference: ObsValue/brightnessTemperature_11 - value: DerivedMetaData/SSMISScatteringIndex11 - maxvalue: 2 - -# Step 8: NSST retrieval check -- filter: Bounds Check - filter variables: - - name: brightnessTemperature - channels: *all_channels - test variables: - - name: ObsFunction/NearSSTRetCheckIR - channels: *all_channels - options: - channels: *all_channels - use_flag: [ -1, -1, -1, -1, 1, 1, 1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 1] - error parameter vector: [ 1.50, 0.50, 0.50, 0.50, 0.50, 1.00, 1.00, 3.00, 3.00, 3.00, - 3.00, 2.40, 1.27, 1.44, 3.00, 1.34, 1.74, 3.75, 3.00, 3.00, - 2.00, 6.40, 1.00, 1.00] - maxvalue: 1.0e-12 - action: - name: reject - -# Step 9: Error inflation based on surface jacobian -- filter: Variable Assignment - assignments: - - name: DerivedMetaData/ObsErrorFactorSurfJacobian - channels: *all_channels - type: float - function: - name: ObsFunction/ObsErrorFactorSurfJacobianRad - channels: *all_channels - options: - sensor: *Sensor_ID - channels: *all_channels - obserr_demisf: [0.010, 0.010, 0.010, 0.010, 0.010] - obserr_dtempf: [0.500, 0.500, 0.500, 0.500, 0.500] - -- filter: Perform Action - filter variables: - - name: brightnessTemperature - channels: *all_channels - action: - name: inflate error - inflation variable: - name: DerivedMetaData/ObsErrorFactorSurfJacobian - channels: *all_channels - -# Step 10: Final gross check -# Channel 1 -- filter: Variable Assignment - assignments: - - name: DerivedMetaData/errorInflationFactor1 - type: float - function: - name: ObsFunction/Arithmetic - options: - variables: - - name: ObsErrorData/brightnessTemperature_1 - coefs: [ 2.25 ] - exponents: [ -1 ] - -- filter: Background Check - filter variables: - - name: brightnessTemperature_1 - threshold: DerivedMetaData/errorInflationFactor1 - absolute threshold: 6.0 - action: - name: reject - -# Channel 2 -- filter: Variable Assignment - assignments: - - name: DerivedMetaData/errorInflationFactor2 - type: float - function: - name: ObsFunction/Arithmetic - options: - variables: - - name: ObsErrorData/brightnessTemperature_2 - coefs: [ 0.75 ] - exponents: [ -1 ] - -- filter: Background Check - filter variables: - - name: brightnessTemperature_2 - threshold: DerivedMetaData/errorInflationFactor2 - absolute threshold: 6.0 - action: - name: reject - -# Channel 3 -- filter: Variable Assignment - assignments: - - name: DerivedMetaData/errorInflationFactor3 - type: float - function: - name: ObsFunction/Arithmetic - options: - variables: - - name: ObsErrorData/brightnessTemperature_3 - coefs: [ 0.75 ] - exponents: [ -1 ] - -- filter: Background Check - filter variables: - - name: brightnessTemperature_3 - threshold: DerivedMetaData/errorInflationFactor3 - absolute threshold: 6.0 - action: - name: reject - -# Channel 4 -- filter: Variable Assignment - assignments: - - name: DerivedMetaData/errorInflationFactor4 - type: float - function: - name: ObsFunction/Arithmetic - options: - variables: - - name: ObsErrorData/brightnessTemperature_4 - coefs: [ 0.75 ] - exponents: [ -1 ] - -- filter: Background Check - filter variables: - - name: brightnessTemperature_4 - threshold: DerivedMetaData/errorInflationFactor4 - absolute threshold: 6.0 - action: - name: reject - -# Channel 5 -- filter: Variable Assignment - assignments: - - name: DerivedMetaData/errorInflationFactor5 - type: float - function: - name: ObsFunction/Arithmetic - options: - variables: - - name: ObsErrorData/brightnessTemperature_5 - coefs: [ 0.75 ] - exponents: [ -1 ] - -- filter: Background Check - filter variables: - - name: brightnessTemperature_5 - threshold: DerivedMetaData/errorInflationFactor5 - absolute threshold: 6.0 - action: - name: reject - -# Channel 6 -- filter: Variable Assignment - assignments: - - name: DerivedMetaData/errorInflationFactor6 - type: float - function: - name: ObsFunction/Arithmetic - options: - variables: - - name: ObsErrorData/brightnessTemperature_6 - coefs: [ 1.50 ] - exponents: [ -1 ] - -- filter: Background Check - filter variables: - - name: brightnessTemperature_6 - threshold: DerivedMetaData/errorInflationFactor6 - absolute threshold: 6.0 - action: - name: reject - -# Channel 7 -- filter: Variable Assignment - assignments: - - name: DerivedMetaData/errorInflationFactor7 - type: float - function: - name: ObsFunction/Arithmetic - options: - variables: - - name: ObsErrorData/brightnessTemperature_7 - coefs: [ 1.50 ] - exponents: [ -1 ] - -- filter: Background Check - filter variables: - - name: brightnessTemperature_7 - threshold: DerivedMetaData/errorInflationFactor7 - absolute threshold: 6.0 - action: - name: reject - -# Channel 8 -- filter: Variable Assignment - assignments: - - name: DerivedMetaData/errorInflationFactor8 - type: float - function: - name: ObsFunction/Arithmetic - options: - variables: - - name: ObsErrorData/brightnessTemperature_8 - coefs: [ 4.50 ] - exponents: [ -1 ] - -- filter: Background Check - filter variables: - - name: brightnessTemperature_8 - threshold: DerivedMetaData/errorInflationFactor8 - absolute threshold: 6.0 - action: - name: reject - -# Channel 9 -- filter: Variable Assignment - assignments: - - name: DerivedMetaData/errorInflationFactor9 - type: float - function: - name: ObsFunction/Arithmetic - options: - variables: - - name: ObsErrorData/brightnessTemperature_9 - coefs: [ 4.50 ] - exponents: [ -1 ] - -- filter: Background Check - filter variables: - - name: brightnessTemperature_9 - threshold: DerivedMetaData/errorInflationFactor9 - absolute threshold: 6.0 - action: - name: reject - -# Channel 10 -- filter: Variable Assignment - assignments: - - name: DerivedMetaData/errorInflationFactor10 - type: float - function: - name: ObsFunction/Arithmetic - options: - variables: - - name: ObsErrorData/brightnessTemperature_10 - coefs: [ 4.50 ] - exponents: [ -1 ] - -- filter: Background Check - filter variables: - - name: brightnessTemperature_10 - threshold: DerivedMetaData/errorInflationFactor10 - absolute threshold: 6.0 - action: - name: reject - -# Channel 11 -- filter: Variable Assignment - assignments: - - name: DerivedMetaData/errorInflationFactor11 - type: float - function: - name: ObsFunction/Arithmetic - options: - variables: - - name: ObsErrorData/brightnessTemperature_11 - coefs: [ 4.50 ] - exponents: [ -1 ] - -- filter: Background Check - filter variables: - - name: brightnessTemperature_11 - threshold: DerivedMetaData/errorInflationFactor11 - absolute threshold: 6.0 - action: - name: reject - -# Channel 12 -- filter: Variable Assignment - assignments: - - name: DerivedMetaData/errorInflationFactor12 - type: float - function: - name: ObsFunction/Arithmetic - options: - variables: - - name: ObsErrorData/brightnessTemperature_12 - coefs: [ 3.60 ] - exponents: [ -1 ] - -- filter: Background Check - filter variables: - - name: brightnessTemperature_12 - threshold: DerivedMetaData/errorInflationFactor12 - absolute threshold: 6.0 - action: - name: reject - -# Channel 13 -- filter: Variable Assignment - assignments: - - name: DerivedMetaData/errorInflationFactor13 - type: float - function: - name: ObsFunction/Arithmetic - options: - variables: - - name: ObsErrorData/brightnessTemperature_13 - coefs: [ 1.905 ] - exponents: [ -1 ] - -- filter: Background Check - filter variables: - - name: brightnessTemperature_13 - threshold: DerivedMetaData/errorInflationFactor13 - absolute threshold: 6.0 - action: - name: reject - -# Channel 14 -- filter: Variable Assignment - assignments: - - name: DerivedMetaData/errorInflationFactor14 - type: float - function: - name: ObsFunction/Arithmetic - options: - variables: - - name: ObsErrorData/brightnessTemperature_14 - coefs: [ 2.16 ] - exponents: [ -1 ] - -- filter: Background Check - filter variables: - - name: brightnessTemperature_14 - threshold: DerivedMetaData/errorInflationFactor14 - absolute threshold: 6.0 - action: - name: reject - -# Channel 15 -- filter: Variable Assignment - assignments: - - name: DerivedMetaData/errorInflationFactor15 - type: float - function: - name: ObsFunction/Arithmetic - options: - variables: - - name: ObsErrorData/brightnessTemperature_15 - coefs: [ 4.50 ] - exponents: [ -1 ] - -- filter: Background Check - filter variables: - - name: brightnessTemperature_15 - threshold: DerivedMetaData/errorInflationFactor15 - absolute threshold: 6.0 - action: - name: reject - -# Channel 16 -- filter: Variable Assignment - assignments: - - name: DerivedMetaData/errorInflationFactor16 - type: float - function: - name: ObsFunction/Arithmetic - options: - variables: - - name: ObsErrorData/brightnessTemperature_16 - coefs: [ 2.01 ] - exponents: [ -1 ] - -- filter: Background Check - filter variables: - - name: brightnessTemperature_16 - threshold: DerivedMetaData/errorInflationFactor16 - absolute threshold: 6.0 - action: - name: reject - -# Channel 17 -- filter: Variable Assignment - assignments: - - name: DerivedMetaData/errorInflationFactor17 - type: float - function: - name: ObsFunction/Arithmetic - options: - variables: - - name: ObsErrorData/brightnessTemperature_17 - coefs: [ 2.61 ] - exponents: [ -1 ] - -- filter: Background Check - filter variables: - - name: brightnessTemperature_17 - threshold: DerivedMetaData/errorInflationFactor17 - absolute threshold: 6.0 - action: - name: reject - -# Channel 18 -- filter: Variable Assignment - assignments: - - name: DerivedMetaData/errorInflationFactor18 - type: float - function: - name: ObsFunction/Arithmetic - options: - variables: - - name: ObsErrorData/brightnessTemperature_18 - coefs: [ 5.625 ] - exponents: [ -1 ] - -- filter: Background Check - filter variables: - - name: brightnessTemperature_18 - threshold: DerivedMetaData/errorInflationFactor18 - absolute threshold: 6.0 - action: - name: reject - -# Channel 19 -- filter: Variable Assignment - assignments: - - name: DerivedMetaData/errorInflationFactor19 - type: float - function: - name: ObsFunction/Arithmetic - options: - variables: - - name: ObsErrorData/brightnessTemperature_19 - coefs: [ 4.50 ] - exponents: [ -1 ] - -- filter: Background Check - filter variables: - - name: brightnessTemperature_19 - threshold: DerivedMetaData/errorInflationFactor19 - absolute threshold: 6.0 - action: - name: reject - -# Channel 20 -- filter: Variable Assignment - assignments: - - name: DerivedMetaData/errorInflationFactor20 - type: float - function: - name: ObsFunction/Arithmetic - options: - variables: - - name: ObsErrorData/brightnessTemperature_20 - coefs: [ 4.50 ] - exponents: [ -1 ] - -- filter: Background Check - filter variables: - - name: brightnessTemperature_20 - threshold: DerivedMetaData/errorInflationFactor20 - absolute threshold: 6.0 - action: - name: reject - -# Channel 21 -- filter: Variable Assignment - assignments: - - name: DerivedMetaData/errorInflationFactor21 - type: float - function: - name: ObsFunction/Arithmetic - options: - variables: - - name: ObsErrorData/brightnessTemperature_21 - coefs: [ 3.00 ] - exponents: [ -1 ] - -- filter: Background Check - filter variables: - - name: brightnessTemperature_21 - threshold: DerivedMetaData/errorInflationFactor21 - absolute threshold: 6.0 - action: - name: reject - -# Channel 22 -- filter: Variable Assignment - assignments: - - name: DerivedMetaData/errorInflationFactor22 - type: float - function: - name: ObsFunction/Arithmetic - options: - variables: - - name: ObsErrorData/brightnessTemperature_22 - coefs: [ 9.60 ] - exponents: [ -1 ] - -- filter: Background Check - filter variables: - - name: brightnessTemperature_22 - threshold: DerivedMetaData/errorInflationFactor22 - absolute threshold: 6.0 - action: - name: reject - -# Channel 23 -- filter: Variable Assignment - assignments: - - name: DerivedMetaData/errorInflationFactor23 - type: float - function: - name: ObsFunction/Arithmetic - options: - variables: - - name: ObsErrorData/brightnessTemperature_23 - coefs: [ 1.50 ] - exponents: [ -1 ] - -- filter: Background Check - filter variables: - - name: brightnessTemperature_23 - threshold: DerivedMetaData/errorInflationFactor23 - absolute threshold: 6.0 - action: - name: reject - -# Channel 24 -- filter: Variable Assignment - assignments: - - name: DerivedMetaData/errorInflationFactor24 - type: float - function: - name: ObsFunction/Arithmetic - options: - variables: - - name: ObsErrorData/brightnessTemperature_24 - coefs: [ 1.50 ] - exponents: [ -1 ] - -- filter: Background Check - filter variables: - - name: brightnessTemperature_24 - threshold: DerivedMetaData/errorInflationFactor24 - absolute threshold: 6.0 - action: - name: reject - -passedBenchmark: 126336 diff --git a/parm/atm/obs/testing/ssmis_f18.yaml b/parm/atm/obs/testing/ssmis_f18.yaml deleted file mode 100644 index 87859a26c..000000000 --- a/parm/atm/obs/testing/ssmis_f18.yaml +++ /dev/null @@ -1,770 +0,0 @@ -obs operator: - name: CRTM - Absorbers: [H2O,O3,CO2] - obs options: - Sensor_ID: &Sensor_ID ssmis_f18 - EndianType: little_endian - CoefficientPath: crtm/ -obs space: - name: ssmis_f18 - obsdatain: - engine: - type: H5File - obsfile: !ENV ssmis_f18_obs_${CDATE}.nc4 - obsdataout: - engine: - type: H5File - obsfile: !ENV ssmis_f18_diag_${CDATE}.nc4 - simulated variables: [brightnessTemperature] - channels: &all_channels 1-24 -geovals: - filename: !ENV ssmis_f18_geoval_${CDATE}.nc4 -obs bias: - input file: !ENV ssmis_f18_satbias_${GDATE}.nc4 - variational bc: - predictors: - - name: constant - - name: cloud_liquid_water - sensor: SSMIS - ch19h: 12 - ch19v: 13 - ch22v: 14 - ch37h: 15 - ch37v: 16 - ch91v: 17 - ch91h: 18 - - name: cosine_of_latitude_times_orbit_node - - name: sine_of_latitude - - name: lapse_rate - order: 2 - tlapse: !ENV &ssmis_f18_tlap ssmis_f18_tlapmean_${GDATE}.txt - - name: lapse_rate - tlapse: *ssmis_f18_tlap - - name: emissivity - - name: scan_angle - var_name: sensorScanPosition - order: 4 - - name: scan_angle - var_name: sensorScanPosition - order: 3 - - name: scan_angle - var_name: sensorScanPosition - order: 2 - - name: scan_angle - var_name: sensorScanPosition - -obs prior filters: -# Step 1: Initial Observation Error Assignment -- filter: Perform Action - filter variables: - - name: brightnessTemperature - channels: *all_channels - action: - name: assign error - error parameter vector: [ 1.50, 0.50, 0.50, 0.50, 0.50, 1.00, 1.00, 3.00, 3.00, 3.00, - 3.00, 2.40, 1.27, 1.44, 3.00, 1.34, 1.74, 3.75, 3.00, 3.00, - 2.00, 6.40, 1.00, 1.00] -obs post filters: -# Step 2: Gross check over water-dominant area -- filter: Background Check - filter variables: - - name: brightnessTemperature - channels: *all_channels - absolute threshold: 3.5 - remove bias correction: true - where: - - variable: - name: GeoVaLs/water_area_fraction - minvalue: 0.99 - action: - name: reject - -# Step 3: Reject all channels if surface height is greater than 2km -- filter: RejectList - filter variables: - - name: brightnessTemperature - channels: *all_channels - where: - - variable: - name: GeoVaLs/surface_geopotential_height - minvalue: 2000.0 - min_exclusive: true - - variable: - name: GeoVaLs/water_area_fraction - maxvalue: 0.99 - max_exclusive: true - -# Step 4: Reject data over mixed surface type -- filter: RejectList - filter variables: - - name: brightnessTemperature - channels: 1-3,8-18 - where: - - variable: - name: GeoVaLs/land_area_fraction - maxvalue: 0.99 - max_exclusive: true - - variable: - name: GeoVaLs/water_area_fraction - maxvalue: 0.99 - max_exclusive: true - - variable: - name: GeoVaLs/ice_area_fraction - maxvalue: 0.99 - max_exclusive: true - - variable: - name: GeoVaLs/surface_snow_area_fraction - maxvalue: 0.99 - max_exclusive: true - -# Step 5: Channel 2 O-F check over non-water dominant area -- filter: Difference Check - filter variables: - - name: brightnessTemperature - channels: 1-2, 12-16 - reference: ObsValue/brightnessTemperature_2 - value: HofX/brightnessTemperature_2 - minvalue: -1.5 - maxvalue: 1.5 - where: - - variable: - name: GeoVaLs/water_area_fraction - maxvalue: 0.99 - max_exclusive: true - -# Step 6: Gross check over non-water dominant area -- filter: Background Check - filter variables: - - name: brightnessTemperature - channels: *all_channels - absolute threshold: 3.5 - remove bias correction: true - where: - - variable: - name: GeoVaLs/water_area_fraction - maxvalue: 0.99 - max_exclusive: true - action: - name: reject - -# Step 7: Scattering check for channels 9-11 using channels 8 and 17 -- filter: Variable Assignment - assignments: - - name: DerivedMetaData/SSMISScatteringIndex9 - type: float - function: - name: ObsFunction/Arithmetic - options: - variables: - - name: HofX/brightnessTemperature_17 - - name: ObsBiasData/brightnessTemperature_17 - - name: HofX/brightnessTemperature_8 - - name: ObsBiasData/brightnessTemperature_8 - coefs: [-0.485934, 0.485934, 0.473806, -0.473806] - intercept: 271.252327 - -- filter: Variable Assignment - assignments: - - name: DerivedMetaData/SSMISScatteringIndex10 - type: float - function: - name: ObsFunction/Arithmetic - options: - variables: - - name: HofX/brightnessTemperature_17 - - name: ObsBiasData/brightnessTemperature_17 - - name: HofX/brightnessTemperature_8 - - name: ObsBiasData/brightnessTemperature_8 - coefs: [-0.413688, 0.413688, 0.361549, -0.361549] - intercept: 272.280341 - -- filter: Variable Assignment - assignments: - - name: DerivedMetaData/SSMISScatteringIndex11 - type: float - function: - name: ObsFunction/Arithmetic - options: - variables: - - name: HofX/brightnessTemperature_17 - - name: ObsBiasData/brightnessTemperature_17 - - name: HofX/brightnessTemperature_8 - - name: ObsBiasData/brightnessTemperature_8 - coefs: [-0.400882, 0.400882, 0.270510, -0.270510] - intercept: 278.824902 - -- filter: Difference Check - filter variables: - - name: brightnessTemperature - channels: 9 - reference: ObsValue/brightnessTemperature_9 - value: DerivedMetaData/SSMISScatteringIndex9 - maxvalue: 2 - -- filter: Difference Check - filter variables: - - name: brightnessTemperature - channels: 10 - reference: ObsValue/brightnessTemperature_10 - value: DerivedMetaData/SSMISScatteringIndex10 - maxvalue: 2 - -- filter: Difference Check - filter variables: - - name: brightnessTemperature - channels: 11 - reference: ObsValue/brightnessTemperature_11 - value: DerivedMetaData/SSMISScatteringIndex11 - maxvalue: 2 - -# Step 8: NSST retrieval check -- filter: Bounds Check - filter variables: - - name: brightnessTemperature - channels: *all_channels - test variables: - - name: ObsFunction/NearSSTRetCheckIR - channels: *all_channels - options: - channels: *all_channels - use_flag: [ -1, -1, -1, -1, 1, 1, 1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 1] - error parameter vector: [ 1.50, 0.50, 0.50, 0.50, 0.50, 1.00, 1.00, 3.00, 3.00, 3.00, - 3.00, 2.40, 1.27, 1.44, 3.00, 1.34, 1.74, 3.75, 3.00, 3.00, - 2.00, 6.40, 1.00, 1.00] - maxvalue: 1.0e-12 - action: - name: reject - -# Step 9: Error inflation based on surface jacobian -- filter: Variable Assignment - assignments: - - name: DerivedMetaData/ObsErrorFactorSurfJacobian - channels: *all_channels - type: float - function: - name: ObsFunction/ObsErrorFactorSurfJacobianRad - channels: *all_channels - options: - sensor: *Sensor_ID - channels: *all_channels - obserr_demisf: [0.010, 0.010, 0.010, 0.010, 0.010] - obserr_dtempf: [0.500, 0.500, 0.500, 0.500, 0.500] - -- filter: Perform Action - filter variables: - - name: brightnessTemperature - channels: *all_channels - action: - name: inflate error - inflation variable: - name: DerivedMetaData/ObsErrorFactorSurfJacobian - channels: *all_channels - -# Step 10: Final gross check -# Channel 1 -- filter: Variable Assignment - assignments: - - name: DerivedMetaData/errorInflationFactor1 - type: float - function: - name: ObsFunction/Arithmetic - options: - variables: - - name: ObsErrorData/brightnessTemperature_1 - coefs: [ 2.25 ] - exponents: [ -1 ] - -- filter: Background Check - filter variables: - - name: brightnessTemperature_1 - threshold: DerivedMetaData/errorInflationFactor1 - absolute threshold: 6.0 - action: - name: reject - -# Channel 2 -- filter: Variable Assignment - assignments: - - name: DerivedMetaData/errorInflationFactor2 - type: float - function: - name: ObsFunction/Arithmetic - options: - variables: - - name: ObsErrorData/brightnessTemperature_2 - coefs: [ 0.75 ] - exponents: [ -1 ] - -- filter: Background Check - filter variables: - - name: brightnessTemperature_2 - threshold: DerivedMetaData/errorInflationFactor2 - absolute threshold: 6.0 - action: - name: reject - -# Channel 3 -- filter: Variable Assignment - assignments: - - name: DerivedMetaData/errorInflationFactor3 - type: float - function: - name: ObsFunction/Arithmetic - options: - variables: - - name: ObsErrorData/brightnessTemperature_3 - coefs: [ 0.75 ] - exponents: [ -1 ] - -- filter: Background Check - filter variables: - - name: brightnessTemperature_3 - threshold: DerivedMetaData/errorInflationFactor3 - absolute threshold: 6.0 - action: - name: reject - -# Channel 4 -- filter: Variable Assignment - assignments: - - name: DerivedMetaData/errorInflationFactor4 - type: float - function: - name: ObsFunction/Arithmetic - options: - variables: - - name: ObsErrorData/brightnessTemperature_4 - coefs: [ 0.75 ] - exponents: [ -1 ] - -- filter: Background Check - filter variables: - - name: brightnessTemperature_4 - threshold: DerivedMetaData/errorInflationFactor4 - absolute threshold: 6.0 - action: - name: reject - -# Channel 5 -- filter: Variable Assignment - assignments: - - name: DerivedMetaData/errorInflationFactor5 - type: float - function: - name: ObsFunction/Arithmetic - options: - variables: - - name: ObsErrorData/brightnessTemperature_5 - coefs: [ 0.75 ] - exponents: [ -1 ] - -- filter: Background Check - filter variables: - - name: brightnessTemperature_5 - threshold: DerivedMetaData/errorInflationFactor5 - absolute threshold: 6.0 - action: - name: reject - -# Channel 6 -- filter: Variable Assignment - assignments: - - name: DerivedMetaData/errorInflationFactor6 - type: float - function: - name: ObsFunction/Arithmetic - options: - variables: - - name: ObsErrorData/brightnessTemperature_6 - coefs: [ 1.50 ] - exponents: [ -1 ] - -- filter: Background Check - filter variables: - - name: brightnessTemperature_6 - threshold: DerivedMetaData/errorInflationFactor6 - absolute threshold: 6.0 - action: - name: reject - -# Channel 7 -- filter: Variable Assignment - assignments: - - name: DerivedMetaData/errorInflationFactor7 - type: float - function: - name: ObsFunction/Arithmetic - options: - variables: - - name: ObsErrorData/brightnessTemperature_7 - coefs: [ 1.50 ] - exponents: [ -1 ] - -- filter: Background Check - filter variables: - - name: brightnessTemperature_7 - threshold: DerivedMetaData/errorInflationFactor7 - absolute threshold: 6.0 - action: - name: reject - -# Channel 8 -- filter: Variable Assignment - assignments: - - name: DerivedMetaData/errorInflationFactor8 - type: float - function: - name: ObsFunction/Arithmetic - options: - variables: - - name: ObsErrorData/brightnessTemperature_8 - coefs: [ 4.50 ] - exponents: [ -1 ] - -- filter: Background Check - filter variables: - - name: brightnessTemperature_8 - threshold: DerivedMetaData/errorInflationFactor8 - absolute threshold: 6.0 - action: - name: reject - -# Channel 9 -- filter: Variable Assignment - assignments: - - name: DerivedMetaData/errorInflationFactor9 - type: float - function: - name: ObsFunction/Arithmetic - options: - variables: - - name: ObsErrorData/brightnessTemperature_9 - coefs: [ 4.50 ] - exponents: [ -1 ] - -- filter: Background Check - filter variables: - - name: brightnessTemperature_9 - threshold: DerivedMetaData/errorInflationFactor9 - absolute threshold: 6.0 - action: - name: reject - -# Channel 10 -- filter: Variable Assignment - assignments: - - name: DerivedMetaData/errorInflationFactor10 - type: float - function: - name: ObsFunction/Arithmetic - options: - variables: - - name: ObsErrorData/brightnessTemperature_10 - coefs: [ 4.50 ] - exponents: [ -1 ] - -- filter: Background Check - filter variables: - - name: brightnessTemperature_10 - threshold: DerivedMetaData/errorInflationFactor10 - absolute threshold: 6.0 - action: - name: reject - -# Channel 11 -- filter: Variable Assignment - assignments: - - name: DerivedMetaData/errorInflationFactor11 - type: float - function: - name: ObsFunction/Arithmetic - options: - variables: - - name: ObsErrorData/brightnessTemperature_11 - coefs: [ 4.50 ] - exponents: [ -1 ] - -- filter: Background Check - filter variables: - - name: brightnessTemperature_11 - threshold: DerivedMetaData/errorInflationFactor11 - absolute threshold: 6.0 - action: - name: reject - -# Channel 12 -- filter: Variable Assignment - assignments: - - name: DerivedMetaData/errorInflationFactor12 - type: float - function: - name: ObsFunction/Arithmetic - options: - variables: - - name: ObsErrorData/brightnessTemperature_12 - coefs: [ 3.60 ] - exponents: [ -1 ] - -- filter: Background Check - filter variables: - - name: brightnessTemperature_12 - threshold: DerivedMetaData/errorInflationFactor12 - absolute threshold: 6.0 - action: - name: reject - -# Channel 13 -- filter: Variable Assignment - assignments: - - name: DerivedMetaData/errorInflationFactor13 - type: float - function: - name: ObsFunction/Arithmetic - options: - variables: - - name: ObsErrorData/brightnessTemperature_13 - coefs: [ 1.905 ] - exponents: [ -1 ] - -- filter: Background Check - filter variables: - - name: brightnessTemperature_13 - threshold: DerivedMetaData/errorInflationFactor13 - absolute threshold: 6.0 - action: - name: reject - -# Channel 14 -- filter: Variable Assignment - assignments: - - name: DerivedMetaData/errorInflationFactor14 - type: float - function: - name: ObsFunction/Arithmetic - options: - variables: - - name: ObsErrorData/brightnessTemperature_14 - coefs: [ 2.16 ] - exponents: [ -1 ] - -- filter: Background Check - filter variables: - - name: brightnessTemperature_14 - threshold: DerivedMetaData/errorInflationFactor14 - absolute threshold: 6.0 - action: - name: reject - -# Channel 15 -- filter: Variable Assignment - assignments: - - name: DerivedMetaData/errorInflationFactor15 - type: float - function: - name: ObsFunction/Arithmetic - options: - variables: - - name: ObsErrorData/brightnessTemperature_15 - coefs: [ 4.50 ] - exponents: [ -1 ] - -- filter: Background Check - filter variables: - - name: brightnessTemperature_15 - threshold: DerivedMetaData/errorInflationFactor15 - absolute threshold: 6.0 - action: - name: reject - -# Channel 16 -- filter: Variable Assignment - assignments: - - name: DerivedMetaData/errorInflationFactor16 - type: float - function: - name: ObsFunction/Arithmetic - options: - variables: - - name: ObsErrorData/brightnessTemperature_16 - coefs: [ 2.01 ] - exponents: [ -1 ] - -- filter: Background Check - filter variables: - - name: brightnessTemperature_16 - threshold: DerivedMetaData/errorInflationFactor16 - absolute threshold: 6.0 - action: - name: reject - -# Channel 17 -- filter: Variable Assignment - assignments: - - name: DerivedMetaData/errorInflationFactor17 - type: float - function: - name: ObsFunction/Arithmetic - options: - variables: - - name: ObsErrorData/brightnessTemperature_17 - coefs: [ 2.61 ] - exponents: [ -1 ] - -- filter: Background Check - filter variables: - - name: brightnessTemperature_17 - threshold: DerivedMetaData/errorInflationFactor17 - absolute threshold: 6.0 - action: - name: reject - -# Channel 18 -- filter: Variable Assignment - assignments: - - name: DerivedMetaData/errorInflationFactor18 - type: float - function: - name: ObsFunction/Arithmetic - options: - variables: - - name: ObsErrorData/brightnessTemperature_18 - coefs: [ 5.625 ] - exponents: [ -1 ] - -- filter: Background Check - filter variables: - - name: brightnessTemperature_18 - threshold: DerivedMetaData/errorInflationFactor18 - absolute threshold: 6.0 - action: - name: reject - -# Channel 19 -- filter: Variable Assignment - assignments: - - name: DerivedMetaData/errorInflationFactor19 - type: float - function: - name: ObsFunction/Arithmetic - options: - variables: - - name: ObsErrorData/brightnessTemperature_19 - coefs: [ 4.50 ] - exponents: [ -1 ] - -- filter: Background Check - filter variables: - - name: brightnessTemperature_19 - threshold: DerivedMetaData/errorInflationFactor19 - absolute threshold: 6.0 - action: - name: reject - -# Channel 20 -- filter: Variable Assignment - assignments: - - name: DerivedMetaData/errorInflationFactor20 - type: float - function: - name: ObsFunction/Arithmetic - options: - variables: - - name: ObsErrorData/brightnessTemperature_20 - coefs: [ 4.50 ] - exponents: [ -1 ] - -- filter: Background Check - filter variables: - - name: brightnessTemperature_20 - threshold: DerivedMetaData/errorInflationFactor20 - absolute threshold: 6.0 - action: - name: reject - -# Channel 21 -- filter: Variable Assignment - assignments: - - name: DerivedMetaData/errorInflationFactor21 - type: float - function: - name: ObsFunction/Arithmetic - options: - variables: - - name: ObsErrorData/brightnessTemperature_21 - coefs: [ 3.00 ] - exponents: [ -1 ] - -- filter: Background Check - filter variables: - - name: brightnessTemperature_21 - threshold: DerivedMetaData/errorInflationFactor21 - absolute threshold: 6.0 - action: - name: reject - -# Channel 22 -- filter: Variable Assignment - assignments: - - name: DerivedMetaData/errorInflationFactor22 - type: float - function: - name: ObsFunction/Arithmetic - options: - variables: - - name: ObsErrorData/brightnessTemperature_22 - coefs: [ 9.60 ] - exponents: [ -1 ] - -- filter: Background Check - filter variables: - - name: brightnessTemperature_22 - threshold: DerivedMetaData/errorInflationFactor22 - absolute threshold: 6.0 - action: - name: reject - -# Channel 23 -- filter: Variable Assignment - assignments: - - name: DerivedMetaData/errorInflationFactor23 - type: float - function: - name: ObsFunction/Arithmetic - options: - variables: - - name: ObsErrorData/brightnessTemperature_23 - coefs: [ 1.50 ] - exponents: [ -1 ] - -- filter: Background Check - filter variables: - - name: brightnessTemperature_23 - threshold: DerivedMetaData/errorInflationFactor23 - absolute threshold: 6.0 - action: - name: reject - -# Channel 24 -- filter: Variable Assignment - assignments: - - name: DerivedMetaData/errorInflationFactor24 - type: float - function: - name: ObsFunction/Arithmetic - options: - variables: - - name: ObsErrorData/brightnessTemperature_24 - coefs: [ 1.50 ] - exponents: [ -1 ] - -- filter: Background Check - filter variables: - - name: brightnessTemperature_24 - threshold: DerivedMetaData/errorInflationFactor24 - absolute threshold: 6.0 - action: - name: reject - -passedBenchmark: 72466 diff --git a/parm/atm/utils/fv3jedi_fv3inc_lgetkf.yaml.j2 b/parm/atm/utils/fv3jedi_fv3inc_lgetkf.yaml.j2 deleted file mode 100644 index 786dfd171..000000000 --- a/parm/atm/utils/fv3jedi_fv3inc_lgetkf.yaml.j2 +++ /dev/null @@ -1,62 +0,0 @@ -variable change: - variable change name: Model2GeoVaLs - input variables: &bkgvars [ua,va,t,ps,sphum,ice_wat,liq_wat,o3mr,surface_geopotential_height] - output variables: &fv3incrvars [ua,va,t,sphum,ice_wat,liq_wat,o3mr,delp,hydrostatic_delz] -jedi increment variables: [ua,va,t,ps,sphum,ice_wat,liq_wat,o3mr] -fv3 increment variables: *fv3incrvars -background geometry: - fms initialization: - namelist filename: ./fv3jedi/fmsmpp.nml - field table filename: ./fv3jedi/field_table - akbk: ./fv3jedi/akbk.nc4 - layout: - - {{ layout_x }} - - {{ layout_y }} - npx: {{ npx_ges }} - npy: {{ npy_ges }} - npz: {{ npz_ges }} - field metadata override: ./fv3jedi/fv3jedi_fieldmetadata_history.yaml -jedi increment geometry: - fms initialization: - namelist filename: ./fv3jedi/fmsmpp.nml - field table filename: ./fv3jedi/field_table - akbk: ./fv3jedi/akbk.nc4 - layout: - - {{ layout_x }} - - {{ layout_y }} - npx: {{ npx_ges }} - npy: {{ npy_ges }} - npz: {{ npz_ges }} - field metadata override: ./fv3jedi/fv3jedi_fieldmetadata_history.yaml -fv3 increment geometry: - fms initialization: - namelist filename: ./fv3jedi/fmsmpp.nml - field table filename: ./fv3jedi/field_table - akbk: ./fv3jedi/akbk.nc4 - layout: - - {{ layout_x }} - - {{ layout_y }} - npx: {{ npx_ges }} - npy: {{ npy_ges }} - npz: {{ npz_ges }} - field metadata override: ./fv3jedi/fv3jedi_fieldmetadata_fv3inc.yaml -members from template: - template: - background input: - datetime: '{{ current_cycle | to_isotime }}' - filetype: cube sphere history - provider: ufs - datapath: ./bkg/mem%mem% - filename: {{ EPREFIX }}atmf006.nc - state variables: *bkgvars - jedi increment input: - filetype: cube sphere history - filename: ./anl/mem%mem%/atminc.{{ current_cycle | to_fv3time }}.nc4 - provider: ufs - fv3 increment output: - filetype: auxgrid - gridtype: gaussian - filename: ./anl/mem%mem%/atminc. - pattern: '%mem%' - nmembers: {{ NMEM_ENS }} - zero padding: 3 diff --git a/parm/atm/utils/fv3jedi_fv3inc_variational.yaml.j2 b/parm/atm/utils/fv3jedi_fv3inc_variational.yaml.j2 deleted file mode 100644 index 9467b1526..000000000 --- a/parm/atm/utils/fv3jedi_fv3inc_variational.yaml.j2 +++ /dev/null @@ -1,62 +0,0 @@ -variable change: - variable change name: Model2GeoVaLs - input variables: &bkgvars [ua,va,t,ps,sphum,ice_wat,liq_wat,o3mr,phis] - output variables: &fv3incrvars [ua,va,t,sphum,ice_wat,liq_wat,o3mr,delp,hydrostatic_delz] -jedi increment variables: [ua,va,t,ps,sphum,ice_wat,liq_wat,o3mr] -fv3 increment variables: *fv3incrvars -background geometry: - fms initialization: - namelist filename: ./fv3jedi/fmsmpp.nml - field table filename: ./fv3jedi/field_table - akbk: ./fv3jedi/akbk.nc4 - layout: - - {{ layout_x }} - - {{ layout_y }} - npx: {{ npx_ges }} - npy: {{ npy_ges }} - npz: {{ npz_ges }} - field metadata override: ./fv3jedi/fv3jedi_fieldmetadata_restart.yaml -jedi increment geometry: - fms initialization: - namelist filename: ./fv3jedi/fmsmpp.nml - field table filename: ./fv3jedi/field_table - akbk: ./fv3jedi/akbk.nc4 - layout: - - {{ layout_x }} - - {{ layout_y }} - npx: {{ npx_anl }} - npy: {{ npy_anl }} - npz: {{ npz_anl }} - field metadata override: ./fv3jedi/fv3jedi_fieldmetadata_history.yaml -fv3 increment geometry: - fms initialization: - namelist filename: ./fv3jedi/fmsmpp.nml - field table filename: ./fv3jedi/field_table - akbk: ./fv3jedi/akbk.nc4 - layout: - - {{ layout_x }} - - {{ layout_y }} - npx: {{ npx_anl }} - npy: {{ npy_anl }} - npz: {{ npz_anl }} - field metadata override: ./fv3jedi/fv3jedi_fieldmetadata_fv3inc.yaml -members: -- background input: - datapath: ./bkg - filetype: fms restart - datetime: '{{ current_cycle | to_isotime }}' - filename_core: '{{ current_cycle | to_fv3time }}.fv_core.res.nc' - filename_trcr: '{{ current_cycle | to_fv3time }}.fv_tracer.res.nc' - filename_sfcd: '{{ current_cycle | to_fv3time }}.sfc_data.nc' - filename_sfcw: '{{ current_cycle | to_fv3time }}.fv_srf_wnd.res.nc' - filename_cplr: '{{ current_cycle | to_fv3time }}.coupler.res' - state variables: *bkgvars - jedi increment input: - filetype: cube sphere history - filename: ./anl/atminc.{{ current_cycle | to_fv3time }}.nc4 - provider: ufs - fv3 increment output: - filetype: auxgrid - gridtype: gaussian - filename: ./anl/atminc. - diff --git a/parm/atm/variational/3dvar_drpcg.yaml.j2 b/parm/atm/variational/3dvar_drpcg.yaml.j2 deleted file mode 100644 index 79eaa83d2..000000000 --- a/parm/atm/variational/3dvar_drpcg.yaml.j2 +++ /dev/null @@ -1,102 +0,0 @@ -cost function: - cost type: 3D-Var - time window: - begin: '{{ ATM_WINDOW_BEGIN | to_isotime }}' - length: '{{ ATM_WINDOW_LENGTH }}' - bound to include: begin - analysis variables: &3dvars [ua,va,t,ps,sphum,ice_wat,liq_wat,o3mr] - geometry: - fms initialization: - namelist filename: ./fv3jedi/fmsmpp.nml - field table filename: ./fv3jedi/field_table - akbk: ./fv3jedi/akbk.nc4 - layout: - - {{ layout_x }} - - {{ layout_y }} - npx: {{ npx_ges }} - npy: {{ npy_ges }} - npz: {{ npz_ges }} - field metadata override: ./fv3jedi/fv3jedi_fieldmetadata_restart.yaml - background: - datapath: ./bkg - filetype: fms restart - datetime: '{{ current_cycle | to_isotime }}' - filename_core: '{{ current_cycle | to_fv3time }}.fv_core.res.nc' - filename_trcr: '{{ current_cycle | to_fv3time }}.fv_tracer.res.nc' - filename_sfcd: '{{ current_cycle | to_fv3time }}.sfc_data.nc' - filename_sfcw: '{{ current_cycle | to_fv3time }}.fv_srf_wnd.res.nc' - filename_cplr: '{{ current_cycle | to_fv3time }}.coupler.res' - 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] - background error: -{% filter indent(width=4) %} -{% set berror_list = 'BERROR_YAML' | getenv('atm/berror/berror.yaml.j2') %} -{% include berror_list %} -{% endfilter %} - observations: -{% filter indent(width=4) %} -{% set atm_obs_list = 'OBS_LIST' | getenv('atm/obs/lists/gdas_prototype_3d.yaml.j2') %} -{% include atm_obs_list %} -{% endfilter %} - -variational: - minimizer: - algorithm: DRPCG - iterations: - - ninner: 2 - gradient norm reduction: 1e-10 - test: on - geometry: - fms initialization: - namelist filename: ./fv3jedi/fmsmpp.nml - field table filename: ./fv3jedi/field_table - akbk: ./fv3jedi/akbk.nc4 - layout: - - {{ layout_x }} - - {{ layout_y }} - npx: {{ npx_anl }} - npy: {{ npy_anl }} - npz: {{ npz_anl }} - field metadata override: ./fv3jedi/fv3jedi_fieldmetadata_restart.yaml - diagnostics: - departures: bkgmob - - ninner: 4 - gradient norm reduction: 1e-10 - test: on - geometry: - fms initialization: - namelist filename: ./fv3jedi/fmsmpp.nml - field table filename: ./fv3jedi/field_table - akbk: ./fv3jedi/akbk.nc4 - layout: - - {{ layout_x }} - - {{ layout_y }} - npx: {{ npx_anl }} - npy: {{ npy_anl }} - npz: {{ npz_anl }} - field metadata override: ./fv3jedi/fv3jedi_fieldmetadata_restart.yaml - diagnostics: - departures: bkgmob1 -final: - diagnostics: - departures: anlmob - increment: - output: - state component: - filetype: cube sphere history - filename: ./anl/atminc.{{ current_cycle | to_fv3time }}.nc4 - provider: ufs - fields to write: [ugrd,vgrd,tmp,pressfc,spfh,icmr,clwmr,o3mr] - geometry: - fms initialization: - namelist filename: ./fv3jedi/fmsmpp.nml - field table filename: ./fv3jedi/field_table - akbk: ./fv3jedi/akbk.nc4 - layout: - - {{ layout_x }} - - {{ layout_y }} - npx: {{ npx_anl }} - npy: {{ npy_anl }} - npz: {{ npz_anl }} - field metadata override: ./fv3jedi/fv3jedi_fieldmetadata_history.yaml diff --git a/parm/jcb-algorithms b/parm/jcb-algorithms new file mode 160000 index 000000000..980a14976 --- /dev/null +++ b/parm/jcb-algorithms @@ -0,0 +1 @@ +Subproject commit 980a14976e09723f73b3fc8d2a63615e79dea971 diff --git a/parm/jcb-gdas b/parm/jcb-gdas new file mode 160000 index 000000000..f0f3eef4b --- /dev/null +++ b/parm/jcb-gdas @@ -0,0 +1 @@ +Subproject commit f0f3eef4be75b66610a4d87074cceb2fde081ea3 diff --git a/test/atm/global-workflow/config.atmanl b/test/atm/global-workflow/config.atmanl index 2a0f7d6d4..7879b8b68 100755 --- a/test/atm/global-workflow/config.atmanl +++ b/test/atm/global-workflow/config.atmanl @@ -5,18 +5,20 @@ echo "BEGIN: config.atmanl" -export OBS_LIST=@OBS_LIST@ -export JEDIYAML="${PARMgfs}/gdas/atm/variational/3dvar_drpcg.yaml.j2" +export JCB_BASE_YAML="${PARMgfs}/gdas/atm/jcb-base.yaml.j2" +export JCB_ALGO_YAML=@JCB_ALGO_YAML@ + export STATICB_TYPE=@STATICB_TYPE@ +export LOCALIZATION_TYPE="bump" export INTERP_METHOD='barycentric' if [[ ${DOHYBVAR} = "YES" ]]; then # shellcheck disable=SC2153 export CASE_ANL=${CASE_ENS} - export BERROR_YAML="${PARMgfs}/gdas/atm/berror/hybvar_${STATICB_TYPE}.yaml.j2" + export BERROR_YAML="background_error_hybrid_${STATICB_TYPE}_${LOCALIZATION_TYPE}" else export CASE_ANL=${CASE} - export BERROR_YAML="${PARMgfs}/gdas/atm/berror/staticb_${STATICB_TYPE}.yaml.j2" + export BERROR_YAML="background_error_static_${STATICB_TYPE}" fi export CRTM_FIX_YAML="${PARMgfs}/gdas/atm_crtm_coeff.yaml.j2" diff --git a/test/atm/global-workflow/config.atmensanl b/test/atm/global-workflow/config.atmensanl index 1afe2e22c..c03583659 100644 --- a/test/atm/global-workflow/config.atmensanl +++ b/test/atm/global-workflow/config.atmensanl @@ -5,8 +5,9 @@ echo "BEGIN: config.atmensanl" -export OBS_LIST=@OBS_LIST@ -export JEDIYAML="${PARMgfs}/gdas/atm/lgetkf/lgetkf.yaml.j2" +export JCB_BASE_YAML="${PARMgfs}/gdas/atm/jcb-base.yaml.j2" +export JCB_ALGO_YAML=@JCB_ALGO_YAML@ + export INTERP_METHOD='barycentric' export CRTM_FIX_YAML="${PARMgfs}/gdas/atm_crtm_coeff.yaml.j2" diff --git a/test/atm/global-workflow/config.yaml b/test/atm/global-workflow/config.yaml index 2650ac570..f53712683 100644 --- a/test/atm/global-workflow/config.yaml +++ b/test/atm/global-workflow/config.yaml @@ -10,13 +10,13 @@ base: PTMP: "@bindir@/test/atm/global-workflow/testrun" atmanl: - OBS_LIST: "@srcdir@/test/atm/global-workflow/gdas_prototype.yaml.j2" + JCB_ALGO_YAML: "@srcdir@/test/atm/global-workflow/jcb-prototype_3dvar.yaml.j2" STATICB_TYPE: "identity" ATMRES_ANL: "C48" LAYOUT_X_ATMANL: 1 LAYOUT_Y_ATMANL: 1 atmensanl: - OBS_LIST: "@srcdir@/test/atm/global-workflow/lgetkf_prototype.yaml.j2" + JCB_ALGO_YAML: "@srcdir@/test/atm/global-workflow/jcb-prototype_lgetkf.yaml.j2" LAYOUT_X_ATMENSANL: 1 LAYOUT_Y_ATMENSANL: 1 diff --git a/test/atm/global-workflow/gdas_prototype.yaml.j2 b/test/atm/global-workflow/gdas_prototype.yaml.j2 deleted file mode 100644 index 906a316d1..000000000 --- a/test/atm/global-workflow/gdas_prototype.yaml.j2 +++ /dev/null @@ -1,5 +0,0 @@ -observers: -{% filter indent(width=2) %} -{% include 'atm/obs/config/amsua_n19.yaml.j2' %} -{% include 'atm/obs/config/sondes.yaml.j2' %} -{% endfilter %} diff --git a/test/atm/global-workflow/jcb-prototype_3dvar.yaml.j2 b/test/atm/global-workflow/jcb-prototype_3dvar.yaml.j2 new file mode 100644 index 000000000..6ff90f90d --- /dev/null +++ b/test/atm/global-workflow/jcb-prototype_3dvar.yaml.j2 @@ -0,0 +1,16 @@ +# Algorithm +# --------- +algorithm: 3dvar + +# Model things +# ------------ +background_ensemble_path: ./bkg/mem%mem% + +# Observation things +# ------------------ +observations: + - amsua_n19 + - sondes + +# The observation files in the testing are appended using the yyymmddhh similar to JEDI tests +atm_obsdatain_suffix: ".{{ current_cycle | to_YMDH }}.nc" diff --git a/test/atm/global-workflow/jcb-prototype_lgetkf.yaml.j2 b/test/atm/global-workflow/jcb-prototype_lgetkf.yaml.j2 new file mode 100644 index 000000000..e0ea157f0 --- /dev/null +++ b/test/atm/global-workflow/jcb-prototype_lgetkf.yaml.j2 @@ -0,0 +1,21 @@ +# Use observations for lgetkf +# --------------------------- +app_path_observations: {{PARMgfs}}/gdas/jcb-gdas/observations/atmosphere-lgetkf +app_path_observation_chronicle: {{PARMgfs}}/gdas/jcb-gdas/observation_chronicle/atmosphere-lgetkf + +# Algorithm +# --------- +algorithm: local_ensemble_da + +# Model things +# ------------ +background_ensemble_path: ./bkg/mem%mem% + +# Observation things +# ------------------ +observations: + - amsua_n19 + - sondes + +# The observation files in the testing are appended using the yyymmddhh similar to JEDI tests +atm_obsdatain_suffix: ".{{ current_cycle | to_YMDH }}.nc" diff --git a/test/atm/global-workflow/lgetkf_prototype.yaml.j2 b/test/atm/global-workflow/lgetkf_prototype.yaml.j2 deleted file mode 100644 index ec4ebf0fa..000000000 --- a/test/atm/global-workflow/lgetkf_prototype.yaml.j2 +++ /dev/null @@ -1,5 +0,0 @@ -observers: -{% filter indent(width=2) %} -{% include 'atm/obs/config/lgetkf_amsua_n19.yaml.j2' %} -{% include 'atm/obs/config/lgetkf_sondes.yaml.j2' %} -{% endfilter %}