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

Test the UFO of SATWND in 3DEnVar #2

Open
JingCheng-NOAA opened this issue May 20, 2024 · 11 comments
Open

Test the UFO of SATWND in 3DEnVar #2

JingCheng-NOAA opened this issue May 20, 2024 · 11 comments

Comments

@JingCheng-NOAA
Copy link
Collaborator

To document the process of assimilating SATWND data in 3DEnVar.

@JingCheng-NOAA
Copy link
Collaborator Author

JingCheng-NOAA commented May 20, 2024

First step is creating an IODA nc format observation file from GDAS or GFS bufr file using iodaconv.

A json file is created for the GOES AMV data on Hera "/scratch1/NCEPDEV/hwrf/scrub/Jing.Cheng/jediwork/obs/test/bufr2ioda_satwind_amv_goes.json".
Use script "bufr2ioda_satwnd_amv_goes.py" will create two IODA nc files in out directory:

gfs.t12z.satwnd.abi_goes-16.tm00.nc
gfs.t12z.satwnd.abi_goes-17.tm00.nc

@JingCheng-NOAA
Copy link
Collaborator Author

JingCheng-NOAA commented May 22, 2024

The YAML file is prepared as /scratch1/NCEPDEV/hwrf/scrub/Jing.Cheng/jediwork/UFOtests/3denvar_jedi_satwnd.yaml.
And the bash script to run the job is /scratch1/NCEPDEV/hwrf/scrub/Jing.Cheng/jediwork/UFOtests/sat-3dvar.sh.
The executable file is changed from fv3jedi_var.x to gdas.x

Currently, the test run encountered error of YAML file parsing issue according to the log.
"Assertion failed: dynamic_cast<const YAMLItemEntry*>(advance) in value, line 362 of /scratch1/NCEPDEV/nems/role.epic/spack-stack/spack-stack-1.6.0/cache/build_stage/spack-stage-eckit-1.24.5-uo33x5dafdu4ae5fl6o5ebpdurhmv7af/spack-src/src/eckit/parser/YAMLParser.cc"

@JingCheng-NOAA
Copy link
Collaborator Author

The parsing error is fixed by modifying the background part of the YAML file.
The yaml file is readed in with no issue. However, the test stopped by complaining of missing variable:
23: Field_fail: Field wind_reduction_factor_at_10m cannot be obtained from input fields.

@JingCheng-NOAA
Copy link
Collaborator Author

The parsing error is fixed by modifying the background part of the YAML file. The yaml file is readed in with no issue. However, the test stopped by complaining of missing variable: 23: Field_fail: Field wind_reduction_factor_at_10m cannot be obtained from input fields.

Adding variable 'f10m' in state variable will avoid such error

@JingCheng-NOAA
Copy link
Collaborator Author

JingCheng-NOAA commented Jun 5, 2024

Adding filter Background Check will bring up the issue that observations fall out of model domain, and using LAMDomainCheck still have the same error.
Exception: Assertion failed: hofx[jobs] != missing in applyFilter, line 116 of /scratch1/NCEPDEV/hwrf/save/Jing.Cheng/JEDI/GDASApp/bundle/ufo/src/ufo/filters/BackgroundCheck.cc Tried to erase key "mesh[address=0x19e4a70],halo[size=0]" from cache "NodeColumnsHaloExchangeCache" but it was not found. Erased key "mesh[address=0x19e4a70],halo[size=1]" from cache "NodeColumnsHaloExchangeCache".

@JingCheng-NOAA
Copy link
Collaborator Author

JingCheng-NOAA commented Jun 5, 2024

For testing purpose only, reprocess the IODA NC file and only select a small chunk of observation within HAFS domain to test if the experiment can run through the Background Check.
Original observations
orig_obs_on_domain
Reduced Observations
reducedmore_obs_on_domain

The analysis using Background Check is able to completed with no error with this small chunk of observations

@yonghuiweng
Copy link

Here is the plot when you cut off 5deg around the boundary.
filterd_obs_domain_cut_5deg
We can see some points around the bottom sides are still out of the domain.
Here is the domain and obs by cut off 10 deg.
filterd_obs_domain

@JingCheng-NOAA
Copy link
Collaborator Author

@yonghuiweng Thanks for the plots. It explains!

@JingCheng-NOAA
Copy link
Collaborator Author

OBSValue WindEsatward
obs_windEastward
OBSValue WindNorthward
obs_windNorthward

OMB WindEastward
obsomb_windEastward
OMB WindNorthward
obsomb_windNorthward

@JingCheng-NOAA
Copy link
Collaborator Author

JingCheng-NOAA commented Jun 7, 2024

In HAFS GSI, the assimilated SATWIND ObsTypes are all from GOES satllites: 240, 241, 245, 246, 247, 251.
Besides type 241, all the types are tested in JEDI. The observation Operator YAML is recorded.
ObsType 241 are GOES CIMSS AMV, currently only available after year 2023, which is beyond the testing window (20200825).
There is no currently available json/python for converting this types of AMV into NC file, and no available of Observation Operator as well. This type of data will need revisit in the future.

BinLiu-NOAA pushed a commit that referenced this issue Jun 18, 2024
Only tested with the coupled UFS and the marine DA tasks:
```
Test project /scratch1/NCEPDEV/stmp2/Guillaume.Vernieres/runs/prs/global-workflow/sorc/gdas.cd/build/gdas/test/gw-ci
  Test  #1: C48mx500_3DVarAOWCDA
  Test  #2: C96_atmaerosnowDA
  Test  #3: C96C48_ufs_hybatmDA
  Test  #4: C48mx500_3DVarAOWCDA_gdasfcst_202103241200
  Test  #5: C48mx500_3DVarAOWCDA_gdasprepoceanobs_202103241800
  Test  #6: C48mx500_3DVarAOWCDA_gdasocnanalprep_202103241800
  Test  #7: C48mx500_3DVarAOWCDA_gdasocnanalbmat_202103241800
  Test  #8: C48mx500_3DVarAOWCDA_gdasocnanalrun_202103241800
  Test  #9: C48mx500_3DVarAOWCDA_gdasocnanalchkpt_202103241800
  Test #10: C48mx500_3DVarAOWCDA_gdasocnanalpost_202103241800

Total Tests: 10
```
BinLiu-NOAA pushed a commit that referenced this issue Jun 18, 2024
**What was done:**
- reorganization/code tidy to facilitate the addition of a GFSv17
prototype ctest
- exclude the new ctest by default, the user will have to run ```cmake
-DRUNGWCI=ON .``` on an old build to configure the new ctest

He're the current list:

```
 Test project /scratch1/NCEPDEV/stmp2/Guillaume.Vernieres/runs/prs/global-workflow/sorc/gdas.cd/build/gdas/test/gw-ci
  Test  #1: WCDA-3DVAR-C48mx500
  Test  #2: WCDA-3DVAR-C48mx500_gdasfcst_202103241200
  Test  #3: WCDA-3DVAR-C48mx500_gdasprepoceanobs_202103241800
  Test  #4: WCDA-3DVAR-C48mx500_gdasocnanalprep_202103241800
  Test  #5: WCDA-3DVAR-C48mx500_gdasocnanalbmat_202103241800
  Test  #6: WCDA-3DVAR-C48mx500_gdasocnanalrun_202103241800
  Test  #7: WCDA-3DVAR-C48mx500_gdasocnanalchkpt_202103241800
  Test  #8: WCDA-3DVAR-C48mx500_gdasocnanalpost_202103241800
  Test  #9: Aero-Snow-3DVAR-C96
  Test #10: Aero-Snow-3DVAR-C96_gdasfcst_202112201200
  Test #11: Atm-hyb-C96C48
  Test #12: Atm-hyb-C96C48_gdasfcst_202402231800
  Test #13: GFSv17-3DVAR-C384mx025
  Test #14: GFSv17-3DVAR-C384mx025_gdasfcst_202106300000
  Test #15: GFSv17-3DVAR-C384mx025_gdasprepoceanobs_202106300600
  Test #16: GFSv17-3DVAR-C384mx025_gdasocnanalprep_202106300600
  Test #17: GFSv17-3DVAR-C384mx025_gdasocnanalbmat_202106300600
  Test #18: GFSv17-3DVAR-C384mx025_gdasocnanalrun_202106300600
  Test #19: GFSv17-3DVAR-C384mx025_gdasocnanalchkpt_202106300600
  Test #20: GFSv17-3DVAR-C384mx025_gdasocnanalpost_202106300600
  Test #21: GFSv17-3DVAR-C384mx025_gdasocnanalvrfy_202106300600
  Test #22: GFSv17-3DVAR-C384mx025_gdasprep_202106300600
  Test #23: GFSv17-3DVAR-C384mx025_gdasanal_202106300600

Total Tests: 23
```

---------

Co-authored-by: Cory Martin <[email protected]>
@JingCheng-NOAA
Copy link
Collaborator Author

JingCheng-NOAA commented Dec 11, 2024

Continue the test with updated SATWND yaml file with or without domain filter. The QCflag did show adding the domain filter, removing observations due to out of domain. However, it seems like another process of QC (metadata too farm from reference) is playing an role too, thus the final observation number that passed the QC process are the same.
Without online domain filter

passed QC: 19143
monitored(calculated hx but not assimilated): 0
reject flag 10: 0
reject flag 11: 0
reject flag 12: 356907
reject flag 13: 0
reject flag 14: 552636
reject flag 15: 0
reject flag 16: 0
reject flag 17: 25360

With online domain filter

passed QC: 19143
monitored(calculated hx but not assimilated): 0
reject flag 10: 0
reject flag 11: 0
reject flag 12: 809646
reject flag 13: 0
reject flag 14: 125253
reject flag 15: 0
reject flag 16: 0
reject flag 17: 4

A plot show that even without online domain filter, the JEDI still can remove the data out of domain boundary.
diag_wind_goes16_hofxobs_on_domain

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

2 participants