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

Adding I/O interfaces in GSI for Analysis of Significant Wave Height (HOWV) and near-surface Wind Gust (GUST) for WRF-ARW based 3DRTMA #835

Open
wants to merge 4 commits into
base: develop
Choose a base branch
from

Conversation

GangZhao-NOAA
Copy link
Contributor

@GangZhao-NOAA GangZhao-NOAA commented Feb 7, 2025

Description

Motivation:

  • The analysis of significant wave height (HOWV) and 10-m wind gust (GUST) are listed as standard product in the operational (2D)RTMA/URMA product suites. To keep providing these two products in next generation RTMA/URMA (ie, 3DRTMA) system, the capability to directly analyze wave height and wind gust must be added into GSI 3DVar analysis.

Method:

  • The kernel part of the analysis code (such as stphowv.f90, setuphowv.f90, inthowv.f90, gsi_howvOper.f90 and m_howvNode.f90 for HOWV, and similar code for GUST) for wave height and wind gust had already been introduced into GSI through the implementation of 2DRTMA. So most of the code work for analysis of HOWV and GUST in 3DVar, are mainly focused on the I/O interfaces for the firstguess provided by various models (i.e. reading background of HOWV/GUST from firstguess file and writing the updated HOWV/GUST back to the final analysis file).
  • The I/O interfaces for FV3-LAM model based firstguess had been done in previous work (see issue Adding I/O for Analysis of Significant Wave Height for 3DRTMA #601 and issue Adding I/O for direct analysis of near-surface wind gust for RRFS-based 3DRTMA #726). Since RRFS-3DRTMAv1 has been switched to be based on HRRR model, so in this work, some efforts are made to add the I/O interfaces in GSI for WRF-ARW model based firstguess.

Related Issues:

Type of change

Please delete options that are not relevant.

  • New feature (non-breaking change which adds functionality)

How Has This Been Tested?

Checklist

  • My code follows the style guidelines of this project
  • I have performed a self-review of my own code
  • I have commented my code, particularly in hard-to-understand areas
  • New and existing tests pass with my changes
  • Any dependent changes have been merged and published
  • Regression tests on WCOSS2 (Cactus) and Hera (Rocky-8) : my updated GSI commit #47b3115) vs control/original GSI code (commit #92165a4)
    Here is the reports of the regression tests on WCOSS2 (Dogwood):
[gang.zhao@dlogin09:build] (feature/rtma3d_wavhgtwndgst_wrfarw)$ ctest -N
Test project /lfs/h2/emc/da/save/gang.zhao/WorkDir/ProdGSI_dev/gsi_dev/build
  Test #1: global_4denvar
  Test #2: rtma
  Test #3: rrfs_3denvar_rdasens
  Test #4: hafs_4denvar_glbens
  Test #5: hafs_3denvar_hybens
  Test #6: global_enkf

Total Tests: 6
[gang.zhao@dlogin09:build] (feature/rtma3d_wavhgtwndgst_wrfarw)$ ctest -j 6
Test project /lfs/h2/emc/da/save/gang.zhao/WorkDir/ProdGSI_dev/gsi_dev/build
    Start 1: global_4denvar
    Start 2: rtma
    Start 3: rrfs_3denvar_rdasens
    Start 4: hafs_4denvar_glbens
    Start 5: hafs_3denvar_hybens
    Start 6: global_enkf
1/6 Test #3: rrfs_3denvar_rdasens .............   Passed  1155.27 sec
2/6 Test #5: hafs_3denvar_hybens ..............   Passed  1586.49 sec
3/6 Test #4: hafs_4denvar_glbens ..............   Passed  1650.16 sec
4/6 Test #6: global_enkf ......................   Passed  1957.18 sec
5/6 Test #2: rtma .............................   Passed  3319.15 sec
6/6 Test #1: global_4denvar ...................   Passed  3546.50 sec

100% tests passed, 0 tests failed out of 6

Total Test time (real) = 3546.52 sec

Here is the reports of the regression tests on Hera:

(work-env2) [Gang.Zhao@hfe01:build] (feature/rtma3d_wavhgtwndgst_wrfarw)$ ctest -N
Test project /scratch1/NCEPDEV/da/Gang.Zhao/ProdGSI_dev/gsi_dev/build
  Test #1: global_4denvar
  Test #2: rtma
  Test #3: rrfs_3denvar_rdasens
  Test #4: hafs_4denvar_glbens
  Test #5: hafs_3denvar_hybens
  Test #6: global_enkf

Total Tests: 6
(work-env2) [Gang.Zhao@hfe01:build] (feature/rtma3d_wavhgtwndgst_wrfarw)$ ctest -j 6
Test project /scratch1/NCEPDEV/da/Gang.Zhao/ProdGSI_dev/gsi_dev/build
    Start 4: hafs_4denvar_glbens
    Start 1: global_4denvar
    Start 6: global_enkf
    Start 5: hafs_3denvar_hybens
    Start 2: rtma
    Start 3: rrfs_3denvar_rdasens
1/6 Test #3: rrfs_3denvar_rdasens .............***Failed  2218.19 sec
2/6 Test #5: hafs_3denvar_hybens ..............   Passed  3687.92 sec
3/6 Test #2: rtma .............................   Passed  3828.48 sec
4/6 Test #4: hafs_4denvar_glbens ..............   Passed  4112.07 sec
5/6 Test #1: global_4denvar ...................   Passed  4118.91 sec
6/6 Test #6: global_enkf ......................   Passed  4119.37 sec

83% tests passed, 1 tests failed out of 6

Total Test time (real) = 4119.38 sec

The following tests FAILED:
          3 - rrfs_3denvar_rdasens (Failed)
Errors while running CTest
Output from these tests are in: /scratch1/NCEPDEV/da/Gang.Zhao/ProdGSI_dev/gsi_dev/build/Testing/Temporary/LastTest.log
Use "--rerun-failed --output-on-failure" to re-run the failed cases verbosely.
(work-env2) [Gang.Zhao@hfe01:build] (feature/rtma3d_wavhgtwndgst_wrfarw)$ ctest -R rrfs_3denvar_rdasens
Test project /scratch1/NCEPDEV/da/Gang.Zhao/ProdGSI_dev/gsi_dev/build
    Start 3: rrfs_3denvar_rdasens
1/1 Test #3: rrfs_3denvar_rdasens .............   Passed  619.88 sec

100% tests passed, 0 tests failed out of 1

Total Test time (real) = 619.90 sec

! contribution to the total BE of howv, so the total BE of howv is actually
! just the reduced static BE of howv. If to make the analysis of howv
! in hyrbid run is as similar as the analysis of howv in pure 3dvar run,
! the static BE of howv used in hybrid run needs to be tuned (inflated actually).
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@GangZhao-NOAA Then, how can we do the inflation for static B for howv? Did I miss it?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@TingLei-NOAA
Hi Ting,

Sorry for my confusing comments in the source code.

What I mean is to give a larger background error for HOWV when running in hybrid EnVar analysis.

For example, in the pure 3dvar run of GSI the background error of HOWV is 0.30 meters. If we would like to get the similar analysis of HOWV in a hybrid EnVar run of GSI with the weight for ensemble covariances = 50%, because there is no ensemble for HOWV yet, and if we want to get the analysis of HOWV as similar as from pure 3DVar, we could NOT use 0.3 meters as the static background error, because the static background error variances is reduced by the weight (100%-50%). To compensate for this reduction in background error, we need to "inflate" 0.3 to some larger values.

My explanation comment in the source code is really misleading, I will clean off these comments before merging the code.

Thank you very much for pointing this out!

-Gang

@TingLei-NOAA
Copy link
Contributor

@GangZhao-NOAA Thanks. Your inline comments are good and I just wondered if there are already existing options for user to do the inflation. If there is no, that is ok. That comment will help users/developer understand the situation.

Copy link
Contributor

@TingLei-NOAA TingLei-NOAA left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for continual enhancements of GSI

@GangZhao-NOAA
Copy link
Contributor Author

@GangZhao-NOAA Thanks. Your inline comments are good and I just wondered if there are already existing options for user to do the inflation. If there is no, that is ok. That comment will help users/developer understand the situation.

@TingLei-NOAA Hi Ting, I realized that I should not use the word "inflat" here, since "covariance inflation" is somehow a specific term used in ensemble DA. I will change it to "increase" in my next PR. Since the process to increase the static error for HOWV and GUST are done outside of GSI code, not in GSI, so I'd better remove these comments in my next PR. Thank you again!

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

Successfully merging this pull request may close these issues.

4 participants