Saving the original reported observation information if they are changed by terrain-match adjustment in subroutine setupt#868
Merged
ShunLiu-NOAA merged 3 commits intoApr 28, 2025
Conversation
changing the reported pressure from its log back and converting from cb to mb, then save it in obs-diag file.
…o show whether the surfTobs info is changed in subroutine gsd_terrain_match_surfTobs.
guoqing-noaa
approved these changes
Apr 25, 2025
hu5970
approved these changes
Apr 25, 2025
AnnetteGibbs-NOAA
approved these changes
Apr 28, 2025
MatthewMorris-NOAA
approved these changes
Apr 28, 2025
12 tasks
xyzemc
pushed a commit
to xyzemc/GSI_develop-v16-tms
that referenced
this pull request
Feb 27, 2026
…ged by terrain-match adjustment in subroutine setupt (NOAA-EMC#868) When using the function "gsd_terrain_match_surfTobs", for the surface obs-type , the original reported observation of temperature (tob), its pre-set observation error (oerr), the reported pressure (pobs) and the station elevation (stnelev) might be changed, correspondingly the observation information (tob/stnelev/pobs) saved in observation diagnostic file of temperature are not the original reported values. However, some users of (3D)RTMA (e.g. the WFO forecasters) require to keep the original reported observation information available in the obs-diag file. So there is a necessity, for 3DRTMA system, to save the original reported observation information (obs value, pressure, station elevation) before they are changed by terrain-match adjustment. Also see Issue NOAA-EMC#867 for reference. **_Methods_** In subroutine **_setupt_** (in setupt.f90), before calling subroutine "**_gsd_terrain_match_surfTobs_**", use a new array "**_data_kept_**" to save original value of preset obs error (**_oerr==>data(1,:)_**), reported pressure (**_lnpobs==>data(4,:)_**), the reported temperature obs (**_tob==>data(5,:)_**) and station elevation (**_stnelev==>data(19,:)_**), then dump these original reported data into obs-diag file (in both binary and netcdf format)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Description
Motivation
When using the function "gsd_terrain_match_surfTobs", for the surface obs-type , the original reported observation of temperature (tob), its pre-set observation error (oerr), the reported pressure (pobs) and the station elevation (stnelev) might be changed, correspondingly the observation information (tob/stnelev/pobs) saved in observation diagnostic file of temperature are not the original reported values. However, some users of (3D)RTMA (e.g. the WFO forecasters) require to keep the original reported observation information available in the obs-diag file. So there is a necessity, for 3DRTMA system, to save the original reported observation information (obs value, pressure, station elevation) before they are changed by terrain-match adjustment. Also see Issue #867 for reference.
Methods
In subroutine setupt (in setupt.f90), before calling subroutine "gsd_terrain_match_surfTobs", use a new array "data_kept" to save original value of preset obs error (oerr==>data(1,:)), reported pressure (lnpobs==>data(4,:)), the reported temperature obs (tob==>data(5,:)) and station elevation (stnelev==>data(19,:)), then dump these original reported data into obs-diag file (in both binary and netcdf format)
Resolves #867
Type of change
Please delete options that are not relevant.
How Has This Been Tested?
Tests for the Newly-added Function:
GSI CTest: the modified GSI code passed all the 6 regression tests in current GSI CTest suite on Hera and WCOSS2.
the report from CTests running on Hera: (<==click to see the reports)
(work-env2) [Gang.Zhao@hfe11:build] (feature/saving_obs4sfcT_rtma3d)$ 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@hfe11:build] (feature/saving_obs4sfcT_rtma3d)$ ctest -j 6
Test project /scratch1/NCEPDEV/da/Gang.Zhao/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 555.23 sec
2/6 Test # 6: global_enkf ...................... Passed 1180.26 sec
3/6 Test # 1: global_4denvar ................... Passed 3359.21 sec
4/6 Test # 5: hafs_3denvar_hybens .............. Passed 3578.33 sec
5/6 Test # 4: hafs_4denvar_glbens .............. Passed 3638.36 sec
6/6 Test # 2: rtma ............................. Passed 11843.52 sec
100% tests passed, 0 tests failed out of 6
Total Test time (real) = 11843.59 sec
the report from CTests running on WCOSS2 Hera:
(work-env2) [Gang.Zhao@hfe11:build] (feature/saving_obs4sfcT_rtma3d)$ 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@hfe11:build] (feature/saving_obs4sfcT_rtma3d)$ ctest -j 6
Test project /scratch1/NCEPDEV/da/Gang.Zhao/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 555.23 sec
2/6 Test # 6: global_enkf ...................... Passed 1180.26 sec
3/6 Test # 1: global_4denvar ................... Passed 3359.21 sec
4/6 Test # 5: hafs_3denvar_hybens .............. Passed 3578.33 sec
5/6 Test # 4: hafs_4denvar_glbens .............. Passed 3638.36 sec
6/6 Test # 2: rtma ............................. Passed 11843.52 sec
100% tests passed, 0 tests failed out of 6
Total Test time (real) = 11843.59 sec
Checklist