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

Add bufr2ioda and ens3dvar yaml for ZTD obs #242

Closed
wants to merge 10 commits into from
147 changes: 147 additions & 0 deletions rrfs-test/IODA/yaml/bufr_ncep_ztd.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,147 @@
# (C) Copyright 2025 NOAA/NWS/NCEP/EMC
#
# This software is licensed under the terms of the Apache Licence Version 2.0
# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.

observations:
- obs space:
name: bufr of gpsipw dump

obsdatain: "./2024052700.rap.t00z.gpsipw.tm00.bufr_d"

exports:
subsets:
- NC012004
variables:
# MetaData
timestamp:
datetime:
year: "*/YEAR"
month: "*/MNTH"
day: "*/DAYS"
hour: "*/HOUR"
minute: "*/MINU"
stationName:
query: "*/STSN"
latitude:
query: "*/CLATH"
longitude:
query: "*/CLONH"
stationElevation:
query: "*/SELV"
height:
query: "*/SELV"
pressure:
query: "*/PRES"
airTemperature:
query: "*/TMDBST"
pathAzimuth:
query: "*/GNSSRPSQ{1}/BEARAZ"
pathElevation:
query: "*/GNSSRPSQ{1}/ELEV"

# ObsError
zenithTotalDelayErr:
query: "*/GNSSRPSQ{1}/APDE"

# QualityMarker
zenithTotalDelayQC:
query: "*/GNSSRPSQ{1}/APDE"
transforms:
- scale: 1000.0

# ObsValue
zenithTotalDelay:
query: "*/GNSSRPSQ{1}/APDS"

ioda:
backend: netcdf
obsdataout: "./2024052700.rap.t00z.ztd.tm00.bufr_d.nc"

variables:
# MetaData
- name: "MetaData/dateTime"
coordinates: "longitude latitude"
source: variables/timestamp
longName: "Datetime"
units: "seconds since 1970-01-01T00:00:00Z"

- name: "MetaData/latitude"
coordinates: "longitude latitude"
source: variables/latitude
longName: "Latitude"
units: "degree_north"
range: [-90, 90]

- name: "MetaData/longitude"
coordinates: "longitude latitude"
source: variables/longitude
longName: "Longitude"
units: "degree_east"
range: [-180, 180]

- name: "MetaData/stationName"
coordinates: "longitude latitude"
source: variables/stationName
longName: "Station Name"

- name: "MetaData/stationElevation"
coordinates: "longitude latitude"
source: variables/stationElevation
longName: "Station Elevation/height above MSL"
units: "m"

- name: "MetaData/pressure"
coordinates: "longitude latitude"
source: variables/pressure
longName: "Pressure at Station height"
units: "Pa"

- name: "MetaData/height"
coordinates: "longitude latitude"
source: variables/height
longName: "Station height"
units: "m"

- name: "MetaData/airTemperature"
coordinates: "longitude latitude"
source: variables/airTemperature
longName: "Temperature at Station height"
units: "K"

- name: "MetaData/pathAzimuth"
coordinates: "longitude latitude"
source: variables/pathAzimuth
longName: "Signal path clockwise from True North"
units: "Degree_from_north"
range: [0, 360]

- name: "MetaData/pathElevation"
coordinates: "longitude latitude"
source: variables/pathElevation
longName: "Signal path angle above horizon"
units: "Degree_above_horizon"
range: [-90, 90]

# Observation
- name: "ObsValue/zenithTotalDelay"
coordinates: "longitude latitude"
source: variables/zenithTotalDelay
longName: "Atmospheric Path Delay in satellite Signal (APDS)"
units: "m"
range: [0.0001, 5]

- name: "ObsError/zenithTotalDelay"
coordinates: "longitude latitude"
source: variables/zenithTotalDelayErr
longName: "Estimated Error in Atmospheric Path Delay (APDE)"
units: "m"
range: [0.0, 10.0]

# QualityMarker
- name: "QualityMarker/zenithTotalDelay"
coordinates: "longitude latitude"
source: variables/zenithTotalDelayQC
longName: "Quality Flags for ZTD data"
units: "0-20"

Original file line number Diff line number Diff line change
@@ -0,0 +1,78 @@
- obs space:
name: Groundgnss
distribution:
name: "@DISTRIBUTION@"
halo size: 100e3
obsdatain:
engine:
type: H5File
obsfile: single_ztd_obs_2024052700.nc
# obsfile: ioda/2024052700.rap.t00z.ztd.tm00.bufr_d.nc
obsdataout:
engine:
type: H5File
obsfile: jdiag_gnss_zenithTotalDelay.nc4
#
# --------------------------------------
# For debugging purpose
# to be consistent with the ntask number
# io pool:
# max pool size: 120
# write multiple files: true
# --------------------------------------

simulated variables: [zenithTotalDelay]
observed variables: [zenithTotalDelay]

obs operator:
name: GroundgnssMetOffice
variables:
- name: zenithTotalDelay

linear obs operator:
name: GroundgnssMetOffice
variables:
- name: zenithTotalDelay

observation alias file: obsop_name_map.yaml
# ----------------------------------------------
# Explicitely for MPAS-JEDI only.
# vertical coordinate: height
# observation vertical coordinate: height
# interpolation method: linear
# ----------------------------------------------
obs error:
covariance model: diagonal

obs localizations:
- localization method: Horizontal Gaspari-Cohn
lengthscale: 300e3

obs filters:
# PreQC flag check
- filter: PreQC
maxvalue: 10 # (not established yet, for testing only)

# Terrain height discrenpancy check
- filter: Difference Check
reference: MetaData/stationElevation
value: GeoVaLs/surface_altitude
threshold: 300

# Gross check
# - filter: Background Check
# apply at iterations: 0,1
# threshold: 6

# Regional domain check on GeoVaLs/observable_domain_mask
- filter: Bounds Check
filter variables:
- name: zenithTotalDelay
test variables:
- name: GeoVaLs/observable_domain_mask
minvalue: 0.0
maxvalue: 0.5 # keep OBS in domain interior

# Save GeoVals output for debugging
# - filter: GOMsaver
# filename: geoval_ztd_single.nc