Skip to content

Commit

Permalink
Merge branch 'develop' into feature/ensda_obs
Browse files Browse the repository at this point in the history
  • Loading branch information
RussTreadon-NOAA authored Aug 15, 2024
2 parents a3de920 + a58e705 commit 241ec2a
Show file tree
Hide file tree
Showing 7 changed files with 202 additions and 4 deletions.
4 changes: 4 additions & 0 deletions .gitmodules
Original file line number Diff line number Diff line change
Expand Up @@ -81,6 +81,10 @@
path = parm/jcb-algorithms
url = https://github.com/noaa-emc/jcb-algorithms
branch = develop
[submodule "sorc/da-utils"]
path = sorc/da-utils
url = https://github.com/noaa-emc/da-utils.git
branch = develop
[submodule "sorc/bufr-query"]
path = sorc/bufr-query
url = https://github.com/noaa-emc/bufr-query.git
Expand Down
1 change: 1 addition & 0 deletions bundle/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -120,6 +120,7 @@ if(BUILD_GDASBUNDLE)

# Build JEDI/DA or other peripherals
ecbuild_bundle( PROJECT gdas-utils SOURCE "../utils" )
ecbuild_bundle( PROJECT da-utils SOURCE "../sorc/da-utils" )

# Build IODA converters
option(BUILD_IODA_CONVERTERS "Build IODA Converters" ON)
Expand Down
109 changes: 109 additions & 0 deletions parm/snow/obs/config/sfcsno_snow.yaml.j2
Original file line number Diff line number Diff line change
@@ -0,0 +1,109 @@
- obs space:
name: sfcsno_snow
distribution:
name: Halo
halo size: 250e3
obsdatain:
engine:
type: H5File
obsfile: '{{ DATA }}/obs/{{ OPREFIX }}sfcsno_snow.nc4'
obsdataout:
engine:
type: H5File
obsfile: '{{ DATA }}/diags/diag_sfcsno_snow.nc4'
simulated variables: [totalSnowDepth]
obs operator:
name: Composite
components:
- name: Identity
- name: BackgroundErrorIdentity
obs error:
covariance model: diagonal
obs localizations:
- localization method: Horizontal SOAR
lengthscale: 250e3
soar horizontal decay: 0.000021
max nobs: 50
- localization method: Vertical Brasnett
vertical lengthscale: 700
obs pre filters:
- filter: Perform Action
filter variables:
- name: totalSnowDepth
action:
name: assign error
error parameter: 40.0
- filter: Variable Assignment
assignments:
- name: GrossErrorProbability/totalSnowDepth
type: float
value: 0.02
- name: BkgError/totalSnowDepth_background_error
type: float
value: 30.0
obs prior filters:
- filter: Bounds Check
filter variables:
- name: totalSnowDepth
minvalue: 0.0
maxvalue: 2000.0
action:
name: reject
- filter: Domain Check
where:
- variable:
name: MetaData/stationElevation
minvalue: -999.0
- filter: Domain Check # land only
where:
- variable:
name: GeoVaLs/slmsk
minvalue: 0.5
maxvalue: 1.5
- filter: RejectList # no land-ice
where:
- variable:
name: GeoVaLs/vtype
minvalue: 14.5
maxvalue: 15.5
- filter: BlackList
where:
- variable:
name: MetaData/stationIdentification
is_in: [71120,71397,71621,71727,71816]
size where true: 5
obs post filters:
- filter: Background Check # gross error check
filter variables:
- name: totalSnowDepth
threshold: 6.25
action:
name: reject
- filter: Temporal Thinning
min_spacing: '{{ SNOW_WINDOW_LENGTH }}'
seed_time: '{{ current_cycle | to_isotime }}'
category_variable:
name: MetaData/stationIdentification
- filter: Met Office Buddy Check
filter variables:
- name: totalSnowDepth
rejection_threshold: 0.5
traced_boxes: # trace all observations
min_latitude: -90
max_latitude: 90
min_longitude: -180
max_longitude: 180
search_radius: 150 # km
station_id_variable:
name: MetaData/stationIdentification
num_zonal_bands: 24
sort_by_pressure: false
max_total_num_buddies: 15
max_num_buddies_from_single_band: 10
max_num_buddies_with_same_station_id: 5
use_legacy_buddy_collector: false
horizontal_correlation_scale: { "-90": 150, "90": 150 }
temporal_correlation_scale: PT6H
damping_factor_1: 1.0
damping_factor_2: 1.0
background_error_group: BkgError
2 changes: 1 addition & 1 deletion parm/snow/obs/lists/gdas_snow.yaml.j2
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
observers:
{% filter indent(width=2) %}
{% include 'snow/obs/config/adpsfc_snow.yaml.j2' %}
{% include 'snow/obs/config/sfcsno_snow.yaml.j2' %}
{% include 'snow/obs/config/snocvr_snow.yaml.j2' %}
{% set cycle = current_cycle | strftime("t%Hz") %}
{% if cycle in ['t00z'] %}
Expand Down
6 changes: 3 additions & 3 deletions parm/snow/prep/prep_gts.yaml.j2
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,9 @@ gtsbufr:
mkdir:
- '{{ DATA }}/obs'
copy:
- ['{{ COM_OBS }}/{{ OPREFIX }}adpsfc.tm00.bufr_d', '{{ DATA }}/obs/']
- ['{{ COM_OBS }}/{{ OPREFIX }}sfcsno.tm00.bufr_d', '{{ DATA }}/obs/']
gtsioda:
copy:
- ['{{ DATA }}/{{ OPREFIX }}adpsfc_snow.nc4', '{{ COM_OBS }}/{{ OPREFIX }}adpsfc_snow.nc4']
- ['{{ DATA }}/{{ OPREFIX }}sfcsno_snow.nc4', '{{ COM_OBS }}/{{ OPREFIX }}sfcsno_snow.nc4']
bufr2ioda:
adpsfc: '{{ HOMEgfs }}/sorc/gdas.cd/test/testinput/bufr_adpsfc_snow.yaml'
sfcsno: '{{ HOMEgfs }}/sorc/gdas.cd/test/testinput/bufr_sfcsno_snow.yaml'
1 change: 1 addition & 0 deletions sorc/da-utils
Submodule da-utils added at 7e8a55
83 changes: 83 additions & 0 deletions test/testinput/bufr_sfcsno_snow.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,83 @@
# (C) Copyright 2021-2022 NOAA/NWS/NCEP/EMC
#

observations:
- obs space:
name: bufr

obsdatain: '{{ DATA }}/obs/{{ OPREFIX }}sfcsno.tm00.bufr_d'

exports:
variables:
# MetaData
timestamp:
datetime:
year: "*/YEAR[1]"
month: "*/MNTH[1]"
day: "*/DAYS[1]"
hour: "*/HOUR[1]"
minute: "*/MINU[1]"
latitude:
query: "[*/CLAT, */CLATH]"
longitude:
query: "[*/CLON, */CLONH]"
stationIdentification:
query: "*/RPID"

stationElevation:
query: "[*/SELV, */HSMSL]"

# ObsValue
totalSnowDepth:
query: "[*/SNWSQ1/TOSD, */MTRMSC/TOSD, */STGDSNDM/TOSD]"
transforms:
- scale: 1000.0
filters:
- bounding:
variable: totalSnowDepth
upperBound: 10000000

ioda:
backend: netcdf
obsdataout: '{{ DATA }}/{{ OPREFIX }}sfcsno_snow.nc4'

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/stationElevation"
coordinates: "longitude latitude"
source: variables/stationElevation
longName: "Height of Station"

- name: "MetaData/stationIdentification"
coordinates: "longitude latitude"
source: variables/stationIdentification
longName: "Identification of Observing Location"
units: "m"

# ObsValue
- name: "ObsValue/totalSnowDepth"
coordinates: "longitude latitude"
source: variables/totalSnowDepth
longName: "Total Snow Depth"
units: "mm"

0 comments on commit 241ec2a

Please sign in to comment.