NOAA-EMC / GDASApp

Global Data Assimilation System Application
GNU Lesser General Public License v2.1
14 stars 28 forks source link

[End-to-End Validation] Add JSON, YAML, Python code for GDASApp end-to-end validation of MODIS Terra/Aqua satwinds #1029

Open BrettHoover-NOAA opened 3 months ago

BrettHoover-NOAA commented 3 months ago

Adding satwinds from the Moderate Resolution Imaging Spectroradiometer (MODIS) from Terra/Aqua to GDASApp end-to-end testing

new files include: parm/atm/obs/config/satwind_modis_terra.yaml.j2: QC filter YAML for MODIS Terra satwinds (jinja2 standard) parm/atm/obs/config/satwind_modis_aqua.yaml.j2: QC filter YAML for MODIS Aqua satwinds (jinja2 standard) parm/ioda/bufr2ioda/bufr2ioda_satwind_amv_modis.json: JSON containing data format, sensor, and satellite information for MODIS Terra/Aqua satwinds ush/ioda/bufr2ioda/bufr2ioda_satwind_amv_modis.py: bufr2ioda code for extracting MODIS Terra/Aqua satwinds from BUFR

End-to-End Test Results

MODIS satwinds consist of (LW)IR (type=257), WVCT (type=258), and WVDL (type=259) from Terra and Aqua satellites that are tanked and dumped into BUFR subsets NC005070, containing LW(IR) satwinds, and NC005071, containing WVCT and WVDL satwinds. Water vapor satwinds are only assimilated from Aqua - while there appear to be no Terra WVCT or WVDL satwinds in NC005071 a YAML filter is in-place to reject these winds if they ever appear in the BUFR tank.

Thinning is turned off in both GSI and JEDI for these tests, as JEDI's thinning procedure is structurally different from GSI's and introduces large numbers of asymmetries in assimilation counts.

Terra LW(IR) Satwinds (type=257, subtype=783)

There are 2344 Terra MODIS LW(IR) satwinds in the test dataset, 1830 are assimilated in both JEDI and GSI.

Accepted observations are distributed similarly between GSI and JEDI: image

The windEastward and windNorthward values, their HofX values, and the OmB look good comparing GSI and JEDI: image image image

Overall error comparisons between JEDI and GSI look good - there are a few outstanding differences where GSI assigns a higher error to an observation than JEDI, but these are infrequent and are likely due to differences in duplicate error inflation since GSI is processing all AMVs on a single processor and can identify duplicates across types while JEDI processes types on separate processors and the cross-type duplicates are invisible.

plan map distribution: image vertical profile: image

All Terra WVCT (type=258, subtype=783) and WVDL (type=259, subtype=783) satwinds are rejected by default, although none appear in the test-dataset. A QC YAML filter is provided to reject any that may appear.

Aqua LW(IR) Satwinds (type=257, subtype=784)

There are 929 Aqua MODIS LW(IR) satwinds in the test dataset, 736 are assimilated in both JEDI and GSI.

Accepted observations are distributed similarly between GSI and JEDI: image

The windEastward and windNorthward values, their HofX values, and the OmB look good comparing GSI and JEDI: image image image

Overall error comparisons between JEDI and GSI look good - there are a few outstanding differences where GSI assigns a higher error to an observation than JEDI, but these are infrequent and are likely due to differences in duplicate error inflation since GSI is processing all AMVs on a single processor and can identify duplicates across types while JEDI processes types on separate processors and the cross-type duplicates are invisible.

plan map distribution: image vertical profile: image

Aqua WVCT Satwinds (type=258, subtype=784)

There are 244 Aqua MODIS LW(IR) satwinds in the test dataset, 155 are assimilated in both JEDI and GSI.

Accepted observations are distributed similarly between GSI and JEDI: image

The windEastward and windNorthward values, their HofX values, and the OmB look good comparing GSI and JEDI: image image image

Overall error comparisons between JEDI and GSI look good - there are a few outstanding differences where GSI assigns a higher error to an observation than JEDI, but these are infrequent and are likely due to differences in duplicate error inflation since GSI is processing all AMVs on a single processor and can identify duplicates across types while JEDI processes types on separate processors and the cross-type duplicates are invisible.

plan map distribution: image vertical profile: image

Aqua WVDL Satwinds (type=259, subtype=784)

There are 1393 Aqua MODIS LW(IR) satwinds in the test dataset, 1272 are assimilated in JEDI and 1273 are assimilated in GSI.

Accepted observations are distributed similarly between GSI and JEDI: image

The windEastward and windNorthward values, their HofX values, and the OmB look good comparing GSI and JEDI: image image image

Overall error comparisons between JEDI and GSI look good, no disagreements detected.

plan map distribution: image vertical profile: image

emilyhcliu commented 3 months ago

@BrettHoover-NOAA No thinning for MODIS and AVHRR in GSI, correct?

emilyhcliu commented 3 months ago

@BrettHoover-NOAA test results look good! :-)

BrettHoover-NOAA commented 3 months ago

@BrettHoover-NOAA No thinning for MODIS and AVHRR in GSI, correct?

Hi @emilyhcliu - correct, thinning is turned off for both GSI and JEDI in the AVHRR and MODIS satwind tests

emilyhcliu commented 3 months ago

MODIS

!otype   type  sub iuse twindow numgrp ngroup nmiter gross ermax ermin var_b    var_pg ithin rmesh  pmesh  npred  pmot  ptime   ib   ip
 uv       257  783    1     3.0      0      0      0   2.5  20.1   1.4   2.5  0.005500     0    0.     0.      0    0.     0.   15   -9
 uv       257  784    1     3.0      0      0      0   2.5  20.1   1.4   2.5  0.005500     0    0.     0.      0    0.     0.   15   -9
 uv       258    0   -1     3.0      0      0      0   2.5  20.1   1.4   2.5  0.005500     0    0.     0.      0    0.     0.    0    0
 uv       258  783    1     3.0      0      0      0   2.5  20.1   1.4   2.5  0.005500     0    0.     0.      0    0.     0.   15   -9
 uv       258  784    1     3.0      0      0      0   2.5  20.1   1.4   2.5  0.005500     0    0.     0.      0    0.     0.   15   -9
 uv       259    0   -1     3.0      0      0      0   2.5  20.1   1.4   2.5  0.005500     0    0.     0.      0    0.     0.    0    0
 uv       259  783    1     3.0      0      0      0   2.5  20.1   1.4   2.5  0.005500     0    0.     0.      0    0.     0.   15   -9
 uv       259  784    1     3.0      0      0      0   2.5  20.1   1.4   2.5  0.005500     0    0.     0.      0    0.     0.   15   -9

AVHRR

!otype   type  sub iuse twindow numgrp ngroup nmiter gross ermax ermin var_b    var_pg ithin rmesh  pmesh  npred  pmot  ptime   ib   ip
 uv       244  206    1     3.0      0      0      0   2.5  20.0   1.4   2.5  0.005000     0    0.     0.      0    0.     0.   15   -8
 uv       244  207    1     3.0      0      0      0   2.5  20.0   1.4   2.5  0.005000     0    0.     0.      0    0.     0.   15   -8
 uv       244  209    1     3.0      0      0      0   2.5  20.0   1.4   2.5  0.005000     0    0.     0.      0    0.     0.   15   -8
 uv       244  223    1     3.0      0      0      0   2.5  20.0   1.4   2.5  0.005000     0    0.     0.      0    0.     0.   15   -8

Yup! No thinning for AVHRR and MODIS AMVs.