Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[End-to-End Test Code Sprint] Add SEVIRI METEOSAT-8 satwinds to end-to-end testing #758

Open
BrettHoover-NOAA opened this issue Nov 20, 2023 · 3 comments

Comments

@BrettHoover-NOAA
Copy link
Collaborator

Adding satwinds from the Spinning Enhanced Visible and InfraRed Imager (SEVIRI) from METEOSAT-8 to GDASApp end-to-end testing

new files include:
parm/atm/obs/config/satwind_seviri_m8.yaml: QC filter YAML for SEVIRI METEOSAT-8 satwinds
parm/ioda/bufr2ioda/bufr2ioda_satwind_amv_seviri.json: JSON containing data format, sensor, and satellite information for SEVIRI METEOSAT-8 satwinds
ush/ioda/bufr2ioda/bufr2ioda_satwind_amv_seviri.py: bufr2ioda code for extracting SEVIRI METEOSAT-8 satwinds from BUFR

End-to-End Test Results

METEOSAT-8 satwinds consist of 3 observation-types: (LW)IR (253), VIS (243), and both clear-sky and cloud-top WV (254), which are given the same ob-type but can be differentiated by their windComputationMethod values of 3 and 5 respectively. Clear-sky WV winds from SEVIRI/METEOSAT-8 are not assimilated in GSI.

No thinning results

With horizontal and vertical thinning turned off in GSI, all SEVIRI/METEOSAT-8 satwinds are assimilated:

(LW)IR satwinds

There are 61656 IR satwinds in the JEDI dataset and 50024 in the GSI dataset - the discrepancy is almost certainly due to two sources: (1) the exclusion of IR satwinds over land north of 20 degrees latitude in the GSI, and (2): the exclusion of any satwinds with a satelliteZenithAngle value greater than 68 degrees, where these observations are removed from the dataset entirely in read_satwnd.f90 and do not carry through to the diag file. When filtering to only compare assimilated IR satwinds, JEDI assimilates 15206 observations and GSI assimilates 15192, a difference of roughly 0.01%. Some of the differences appear along coastlines and could be due to differences in whether the underlying surface-type is defined as land or water:

image

Comparisons of observations, HofX, and the difference (ob-minus-HofX) all look good:
image
image
image

VIS satwinds

There are 12664 IR satwinds in the JEDI dataset and 10986 in the GSI dataset - the discrepancy is due to the exclusion of VIS satwinds with a satelliteZenithAngle value greater than 68 degrees, where these observations are removed from the dataset entirely in read_satwnd.f90 and do not carry through to the diag file. When filtering to only compare assimilated VIS satwinds, JEDI assimilates 5092 observations and GSI assimilates 5102, a difference of roughly 0.2%.:

image

Comparisons of observations, HofX, and the difference (ob-minus-HofX) all look good:
image
image
image

cloud-top) WV satwinds

All clear-sky WV satwinds are rejected in JEDI for compliance with GSI. There are 104843 combined clear-sky/clout-top WV satwinds in JEDI and 97357 satwinds in GSI - the 7486 ob-count difference is entirely attributable to JEDI satwinds with a satelliteZenithAngle greater than 68 degrees or a pressure of less than 125 hPa, where these observations are removed from the dataset entirely in read_satwnd.90 and do not carry through to the diag file. JEDI assimilates 24514 and GSI assimilates 24435, a differences of less than 0.4%:

image

Comparisons of observations, HofX, and the difference (ob-minus-HofX) all look good:
image
image
image

@BrettHoover-NOAA
Copy link
Collaborator Author

Thinning tests

Horizontal and vertical thinning (NOTE: no JEDI time-thinning applied in this test, but GSI contains time-thinning) was applied in JEDI with the use of the following filter option in 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

This applies horizontal thinning on a 200 km mesh and vertical thinning on a 10000 Pa mesh, matching the horiz/vert thinning mesh size options chosen in GSI global_convinfo.txt. Type 254 (WV) satwinds from SEVIRI/METEOSAT-8 are not thinned in GSI, which is duplicated here. The remaining options used here were carried over from existing testing of JEDI thinning of scatterometer wind data.

Even when applying only horizontal and vertical thinning in JEDI and comparing to GSI's horizontal/vertical/time thinning, JEDI assimilates roughly 25-45% of the SEVIRI/METEOSAT-8 satwinds that are assimilated in GSI. I will show only the differences in QC'd JEDI (blue) vs GSI (orange) observations, since the ob, HofX, and OmB values were already tested without thinning applied. Total ob-counts in JEDI are not changed via thinning, since the thinned satwinds are merely rejected, but ob-counts are changed in GSI because thinned winds are not retained in the diag file.

(LW)IR satwinds
Thinning reduces the GSI ob-count from 50024 to 33484 satwinds. JEDI assimilates 1294 satwinds while GSI assimilates 4736:
image

VIS satwinds
Thinning reduces the GSI ob-count from 10986 to 4802 satwinds. JEDI assimilates 318 satwinds while GSI assimilates 697 satwinds:
image

(cloud-top only) WV satwinds
No change to WV satwind counts or assimilation, since thinning is not applied to these winds in either system.

@BrettHoover-NOAA
Copy link
Collaborator Author

There needs to be ongoing work to identify differences in the JEDI vs GSI thinning techniques to explain ob-count differences before and after QC. The thinning filter applied here will be included in the YAML file but commented-out with a note summarizing these results.

@BrettHoover-NOAA
Copy link
Collaborator Author

Increment print from non-thinned test:

  0: ----------------------------------------------------------------------------------------------------
  0: Increment print | number of fields = 8 | cube sphere face size: C768
  0: eastward_wind                                | Min:-4.803825e-01 Max:+4.492015e-01 RMS:+6.007858e-04
  0: northward_wind                               | Min:-3.746608e-01 Max:+3.744873e-01 RMS:+5.498480e-04
  0: air_temperature                              | Min:+0.000000e+00 Max:+0.000000e+00 RMS:+0.000000e+00
  0: surface_pressure                             | Min:+0.000000e+00 Max:+0.000000e+00 RMS:+0.000000e+00
  0: specific_humidity                            | Min:+0.000000e+00 Max:+0.000000e+00 RMS:+0.000000e+00
  0: cloud_liquid_ice                             | Min:+0.000000e+00 Max:+1.618770e-20 RMS:+1.293217e-23
  0: cloud_liquid_water                           | Min:+0.000000e+00 Max:+1.474788e-19 RMS:+2.167418e-22
  0: ozone_mass_mixing_ratio                      | Min:+0.000000e+00 Max:+0.000000e+00 RMS:+0.000000e+00
  0: ----------------------------------------------------------------------------------------------------

CoryMartin-NOAA pushed a commit that referenced this issue Nov 21, 2023
…o-end testing (#764)

Adding satwinds from the Spinning Enhanced Visible and InfraRed Imager
(SEVIRI) from METEOSAT-8 to GDASApp end-to-end testing

new files include:
parm/atm/obs/config/satwind_seviri_m8.yaml: QC filter YAML for SEVIRI
METEOSAT-8 satwinds
parm/ioda/bufr2ioda/bufr2ioda_satwind_amv_seviri.json: JSON containing
data format, sensor, and satellite information for SEVIRI METEOSAT-8
satwinds
ush/ioda/bufr2ioda/bufr2ioda_satwind_amv_seviri.py: bufr2ioda code for
extracting SEVIRI METEOSAT-8 satwinds from BUFR

End-to-end testing results are provided in #758 - Note: Thinning filter
is provided in YAML but turned off due to irreconcilable differences
with GSI in testing.

---------

Co-authored-by: Brett Hoover <bhoover@Orion-login-1.HPC.MsState.Edu>
CoryMartin-NOAA pushed a commit that referenced this issue Nov 27, 2023
Small code-change to include SEVIRI/METEOSAT-11 satwinds in end-to-end
validation. This uses the hook-ins already provided by the
SEVIRI/METEOSAT-8 satwinds code that was merged in
#764.

New file: parm/atm/obs/config/satwind_seviri_m11.yaml - this is nearly a
direct copy of parm/atm/obs/config/satwind_seviri_m8.yaml, since they
utilize the same filters. Only the header information has changed.

Modified file: parm/ioda/bufr2ioda/bufr2ioda_satwind_amv_seviri.json -
METEOSAT-11 was added to the `satellite_info` group

End-to-end testing looks very similar to what was seen for
SEVIRI/METEOSAT-8 satwinds, detailed in
#758. A brief run-down:

(LW)IR winds are in QC agreement down to a 0.02% difference
(cloud-top)WV winds are in QC agreement down to a 0.20% difference
VIS winds differ by 4.5%, but there are only 22 accepted winds in GSI
and 23 in JEDI, the difference is a single satwind

All ob, HofX, and ob-minus-HofX differences look good

Increment summary, from gdasatmanlrun.log:
```
  0: ----------------------------------------------------------------------------------------------------
  0: Increment print | number of fields = 8 | cube sphere face size: C768
  0: eastward_wind                                | Min:-3.479765e-01 Max:+3.430433e-01 RMS:+4.990993e-04
  0: northward_wind                               | Min:-4.226316e-01 Max:+3.376561e-01 RMS:+4.889429e-04
  0: air_temperature                              | Min:+0.000000e+00 Max:+0.000000e+00 RMS:+0.000000e+00
  0: surface_pressure                             | Min:+0.000000e+00 Max:+0.000000e+00 RMS:+0.000000e+00
  0: specific_humidity                            | Min:+0.000000e+00 Max:+0.000000e+00 RMS:+0.000000e+00
  0: cloud_liquid_ice                             | Min:+0.000000e+00 Max:+1.618770e-20 RMS:+1.293217e-23
  0: cloud_liquid_water                           | Min:+0.000000e+00 Max:+1.474788e-19 RMS:+2.167418e-22
  0: ozone_mass_mixing_ratio                      | Min:+0.000000e+00 Max:+0.000000e+00 RMS:+0.000000e+00
  0: ----------------------------------------------------------------------------------------------------
```

Co-authored-by: Brett Hoover <bhoover@Orion-login-1.HPC.MsState.Edu>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant