diff --git a/do_landDA.sh b/do_landDA.sh index c2c3c95..e1489c8 100755 --- a/do_landDA.sh +++ b/do_landDA.sh @@ -155,8 +155,10 @@ for ii in "${!OBS_TYPES[@]}"; # loop through requested obs do # get the obs file name - if [ ${OBS_TYPES[$ii]} == "GTS" ]; then + if [ ${OBS_TYPES[$ii]} == "SFCSNO" ]; then obsfile=$OBSDIR/snow_depth/GTS/data_proc/${YYYY}${MM}/sfcsno_snow_${YYYY}${MM}${DD}${HH}.nc4 + elif [ ${OBS_TYPES[$ii]} == "MADIS" ]; then + obsfile=$OBSDIR/snow_depth/MADIS/data_proc/v3/${YYYY}/madis_snow_${YYYY}${MM}${DD}_${HH}00.nc elif [ ${OBS_TYPES[$ii]} == "GHCN" ]; then # GHCN are time-stamped at 18. If assimilating at 00, need to use previous day's obs, so that # obs are within DA window. diff --git a/jedi/fv3-jedi/yaml_files/2DVar/GTS.yaml b/jedi/fv3-jedi/yaml_files/2DVar/MADIS.yaml similarity index 90% rename from jedi/fv3-jedi/yaml_files/2DVar/GTS.yaml rename to jedi/fv3-jedi/yaml_files/2DVar/MADIS.yaml index 38a568e..53381a4 100644 --- a/jedi/fv3-jedi/yaml_files/2DVar/GTS.yaml +++ b/jedi/fv3-jedi/yaml_files/2DVar/MADIS.yaml @@ -1,14 +1,14 @@ - obs space: - name: SnowDepthGTS + name: SnowDepthMADIS simulated variables: [totalSnowDepth] obsdatain: engine: type: H5File - obsfile: GTS_XXYYYYXXMMXXDDXXHH.nc + obsfile: MADIS_XXYYYYXXMMXXDDXXHH.nc obsdataout: engine: type: H5File - obsfile: output/DA/hofx/var_hofx_gts_XXYYYYXXMMXXDDXXHH.nc + obsfile: output/DA/hofx/var_hofx_madis_XXYYYYXXMMXXDDXXHH.nc obs operator: name: Identity obs pre filters: @@ -33,6 +33,11 @@ minvalue: 0.0 maxvalue: 20000.0 - filter: Domain Check # missing station elevation + where: + - variable: + name: MetaData/stationElevation + value: is_valid + - filter: Domain Check # invalid station elevation where: - variable: name: MetaData/stationElevation @@ -54,12 +59,6 @@ reference: MetaData/stationElevation value: GeoVaLs/filtered_orography threshold: 200. - - 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: diff --git a/jedi/fv3-jedi/yaml_files/2DVar/SFCSNO.yaml b/jedi/fv3-jedi/yaml_files/2DVar/SFCSNO.yaml new file mode 100644 index 0000000..4680b4a --- /dev/null +++ b/jedi/fv3-jedi/yaml_files/2DVar/SFCSNO.yaml @@ -0,0 +1,102 @@ + - obs space: + name: SnowDepthSFCSNO + simulated variables: [totalSnowDepth] + obsdatain: + engine: + type: H5File + obsfile: SFCSNO_XXYYYYXXMMXXDDXXHH.nc + obsdataout: + engine: + type: H5File + obsfile: output/DA/hofx/var_hofx_sfcsno_XXYYYYXXMMXXDDXXHH.nc + obs operator: + name: Identity + 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 # negative / missing snow + filter variables: + - name: totalSnowDepth + minvalue: 0.0 + maxvalue: 20000.0 + - filter: Domain Check # missing station elevation + where: + - variable: + name: MetaData/stationElevation + value: is_valid + - filter: Domain Check # invalid station elevation + where: + - variable: + name: MetaData/stationElevation + minvalue: -200.0 + maxvalue: 9900.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: Difference Check # elevation check + reference: MetaData/stationElevation + value: GeoVaLs/filtered_orography + threshold: 200. + - 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: PT6H + seed_time: 'XXYYYY-XXMM-XXDDTXXHH:00:00Z' + 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 diff --git a/settings_DA_template b/settings_DA_template index e953b9e..3657d1b 100644 --- a/settings_DA_template +++ b/settings_DA_template @@ -21,7 +21,7 @@ LANDDADIR=${CYCLEDIR}/DA_update/ # if calling from submit_cycle.sh # options: "letkfoi_snow" , "letkf_snow" DAtype= -# JEDI input obs. options : IMS, GHCN, GTS, SYNTH +# JEDI input obs. options : IMS, GHCN, SFCSNO, SYNTH OBS_TYPES=() # format: ("OBS1" "OBS2") # JEDI call type for each obs_type above. options: DA, HOFX JEDI_TYPES=() # format ("DA" "HOFX")