Skip to content

Commit

Permalink
Merge branch 'develop' into bugfix/stable_driver
Browse files Browse the repository at this point in the history
  • Loading branch information
CoryMartin-NOAA committed Jun 8, 2023
2 parents 4427a02 + b2a3f4e commit 47e31f1
Show file tree
Hide file tree
Showing 10 changed files with 361 additions and 8 deletions.
2 changes: 1 addition & 1 deletion CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -104,7 +104,7 @@ if(BUILD_GDASBUNDLE)

# Land associated repositories
ecbuild_bundle( PROJECT land-imsproc GIT "https://github.com/NOAA-PSL/land-IMS_proc.git" TAG 6373819 )
ecbuild_bundle( PROJECT land-jediincr GIT "https://github.com/NOAA-PSL/land-apply_jedi_incr.git" TAG ced6576 )
ecbuild_bundle( PROJECT land-jediincr GIT "https://github.com/NOAA-PSL/land-apply_jedi_incr.git" TAG 2923344)

# ioda, ufo, fv3-jedi, and saber test data
#---------------------------------
Expand Down
177 changes: 177 additions & 0 deletions parm/atm/obs/testing/mhs_metop-b.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,177 @@
obs operator:
name: CRTM
Absorbers: [H2O,O3,CO2]
obs options:
Sensor_ID: &Sensor_ID mhs_metop-b
EndianType: little_endian
CoefficientPath: crtm/
obs space:
name: mhs_metop-b
obsdatain:
engine:
type: H5File
obsfile: !ENV mhs_metop-b_obs_${CDATE}.nc4
obsdataout:
engine:
type: H5File
obsfile: !ENV mhs_metop-b_diag_${CDATE}.nc4
simulated variables: [brightnessTemperature]
channels: &all_channels 1-5
geovals:
filename: !ENV mhs_metop-b_geoval_${CDATE}.nc4

obs bias:
input file: !ENV mhs_metop-b_satbias_${GDATE}.nc4
variational bc:
predictors:
- name: constant
- name: lapse_rate
order: 2
tlapse: &mhs_metop-b_tlap !ENV mhs_metop-b_tlapmean_${GDATE}.txt
- name: lapse_rate
tlapse: *mhs_metop-b_tlap
- name: emissivity
- name: scan_angle
order: 4
- name: scan_angle
order: 3
- name: scan_angle
order: 2
- name: scan_angle

obs prior filters:
# Assign obs error for each channel
- filter: Perform Action
filter variables:
- name: brightnessTemperature
channels: *all_channels
action:
name: assign error
error parameter vector: [2.50, 2.50, 2.50, 2.00, 2.00]


obs post filters:
# Error inflation based on surface jacobian
- filter: Variable Assignment
assignments:
- name: DerivedMetaData/ObsErrorFactorSurfJacobian
channels: *all_channels
type: float
function:
name: ObsFunction/ObsErrorFactorSurfJacobianRad
channels: *all_channels
options:
sensor: *Sensor_ID
channels: *all_channels
use_flag: [ 1, 1, -1, 1, 1 ]
obserr_demisf: [0.015, 0.090, 0.060, 0.060, 0.750]
obserr_dtempf: [0.500, 6.000, 3.000, 6.000, 15.000]

- filter: RejectList
filter variables:
- name: brightnessTemperature
channels: 1-2
where:
- variable:
name: GeoVaLs/water_area_fraction
maxvalue: 0.99


# BennartzScatIndex check
- filter: Bounds Check
filter variables:
- name: brightnessTemperature
channels: *all_channels
test variables:
- name: ObsFunction/BennartzScatIndex
options:
channel_89ghz: 1 # MHS 89.00 GHz channel
channel_150ghz: 2 # MHS 157.00 GHz channel
bennartz_coeff_1: 0.158
bennartz_coeff_2: 0.0163
apply_bias: ObsBiasData
maxvalue: -1.0
action:
name: reject


# Observation error inflation based on topography check
- filter: Perform Action
filter variables:
- name: brightnessTemperature
channels: *all_channels
action:
name: inflate error
inflation variable:
name: ObsFunction/ObsErrorFactorTopoRad
channels: *all_channels
options:
sensor: *Sensor_ID
channels: *all_channels

# Transmittance Top Check
- filter: Perform Action
filter variables:
- name: brightnessTemperature
channels: *all_channels
action:
name: inflate error
inflation variable:
name: ObsFunction/ObsErrorFactorTransmitTopRad
channels: *all_channels
options:
channels: *all_channels

# Error inflation based on surface jacobian
- filter: Variable Assignment
assignments:
- name: DerivedMetaData/ObsErrorFactorSurfJacobian
channels: *all_channels
type: float
function:
name: ObsFunction/ObsErrorFactorSurfJacobianRad
channels: *all_channels
options:
sensor: *Sensor_ID
channels: *all_channels
use_flag: [ 1, 1, -1, 1, 1 ]
obserr_demisf: [0.015, 0.090, 0.060, 0.060, 0.750]
obserr_dtempf: [0.500, 6.000, 3.000, 6.000, 15.000]

# Gross check wv sounding channels in GSI
- filter: Background Check
filter variables:
- name: brightnessTemperature
channels: 3-5
absolute threshold: 2.0
action:
name: reject

# Gross check
- filter: Background Check
filter variables:
- name: brightnessTemperature
channels: *all_channels
threshold: 3.0
action:
name: reject


# Inter-channel check
- filter: Bounds Check
filter variables:
- name: brightnessTemperature
channels: *all_channels
test variables:
- name: ObsFunction/InterChannelConsistencyCheck
channels: *all_channels
options:
channels: *all_channels
use passive_bc: true
sensor: *Sensor_ID
use_flag: [ 1, 1, 1, 1, 1]
maxvalue: 1.0e-12
actions:
- name: reject

passedBenchmark: 18125
161 changes: 161 additions & 0 deletions parm/atm/obs/testing/mhs_n19.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,161 @@
obs operator:
name: CRTM
Absorbers: [H2O,O3,CO2]
obs options:
Sensor_ID: &Sensor_ID mhs_n19
EndianType: little_endian
CoefficientPath: crtm/
obs space:
name: mhs_n19
obsdatain:
engine:
type: H5File
obsfile: !ENV mhs_n19_obs_${CDATE}.nc4
obsdataout:
engine:
type: H5File
obsfile: !ENV mhs_n19_diag_${CDATE}.nc4
simulated variables: [brightnessTemperature]
channels: &all_channels 1-5
geovals:
filename: !ENV mhs_n19_geoval_${CDATE}.nc4

obs bias:
input file: !ENV mhs_n19_satbias_${GDATE}.nc4
variational bc:
predictors:
- name: constant
- name: lapse_rate
order: 2
tlapse: &mhs_n19_tlap !ENV mhs_n19_tlapmean_${GDATE}.txt
- name: lapse_rate
tlapse: *mhs_n19_tlap
- name: emissivity
- name: scan_angle
order: 4
- name: scan_angle
order: 3
- name: scan_angle
order: 2
- name: scan_angle

obs prior filters:
# Assign obs error for each channel
- filter: Perform Action
filter variables:
- name: brightnessTemperature
channels: *all_channels
action:
name: assign error
error parameter vector: [2.50, 2.50, 2.50, 2.00, 2.00]

obs post filters:

# Error inflation based on surface jacobian
- filter: Variable Assignment
assignments:
- name: DerivedMetaData/ObsErrorFactorSurfJacobian
channels: *all_channels
type: float
function:
name: ObsFunction/ObsErrorFactorSurfJacobianRad
channels: *all_channels
options:
sensor: *Sensor_ID
channels: *all_channels
use_flag: [ 1, 1, -1, 1, 1 ]
obserr_demisf: [0.015, 0.090, 0.060, 0.060, 0.750]
obserr_dtempf: [0.500, 6.000, 3.000, 6.000, 15.000]

- filter: RejectList
filter variables:
- name: brightnessTemperature
channels: 1-2
where:
- variable:
name: GeoVaLs/water_area_fraction
maxvalue: 0.99

# BennartzScatIndex check
- filter: Bounds Check
filter variables:
- name: brightnessTemperature
channels: *all_channels
test variables:
- name: ObsFunction/BennartzScatIndex
options:
channel_89ghz: 1 # MHS 89.00 GHz channel
channel_150ghz: 2 # MHS 157.00 GHz channel
bennartz_coeff_1: 0.158
bennartz_coeff_2: 0.0163
apply_bias: ObsBiasData
maxvalue: -1.0
action:
name: reject


# Observation error inflation based on topography check
- filter: Perform Action
filter variables:
- name: brightnessTemperature
channels: *all_channels
action:
name: inflate error
inflation variable:
name: ObsFunction/ObsErrorFactorTopoRad
channels: *all_channels
options:
sensor: *Sensor_ID
channels: *all_channels

# Transmittance Top Check
- filter: Perform Action
filter variables:
- name: brightnessTemperature
channels: *all_channels
action:
name: inflate error
inflation variable:
name: ObsFunction/ObsErrorFactorTransmitTopRad
channels: *all_channels
options:
channels: *all_channels


# Gross check wv sounding channels in GSI
- filter: Background Check
filter variables:
- name: brightnessTemperature
channels: 3-5
absolute threshold: 2.0
action:
name: reject

# Gross check
- filter: Background Check
filter variables:
- name: brightnessTemperature
channels: *all_channels
threshold: 3.0
action:
name: reject


# Inter-channel check
- filter: Bounds Check
filter variables:
- name: brightnessTemperature
channels: *all_channels
test variables:
- name: ObsFunction/InterChannelConsistencyCheck
channels: *all_channels
options:
channels: *all_channels
use passive_bc: true
sensor: *Sensor_ID
use_flag: [ 1, 1, 1, 1, 1]
maxvalue: 1.0e-12
actions:
- name: reject

passedBenchmark: 7714
1 change: 1 addition & 0 deletions parm/atm/obs/testing/omi_aura.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -104,3 +104,4 @@ obs filters:
action:
name: reject

passedBenchmark: 2329
2 changes: 1 addition & 1 deletion parm/atm/obs/testing/ompsnp_npp.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -271,4 +271,4 @@ obs filters:
name: MetaData/pressure
maxvalue: 200.0

passedBenchmark: 4133
passedBenchmark: 3744
2 changes: 2 additions & 0 deletions parm/atm/obs/testing/ompstc8_npp.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -91,3 +91,5 @@ obs filters:
minvalue: 50.0
action:
name: reject

passedBenchmark: 5908
10 changes: 10 additions & 0 deletions parm/land/letkfoi/apply_incr_nml.j2
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
&noahmp_snow
date_str = "{{ current_cycle | to_YMD }}",
hour_str = "{{ current_cycle | strftime('%H') }}",
res = {{ CASE[1:] }},
frac_grid = {{ FRAC_GRID | to_f90bool }},
rst_path = "{{ DATA }}/anl",
inc_path = "{{ DATA }}/anl",
orog_path = "{{ HOMEgfs }}/fix/orog/{{ CASE }}",
otype = "{{ CASE }}_oro_data"
/
4 changes: 2 additions & 2 deletions parm/land/obs/config/adpsfc_snow.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -6,11 +6,11 @@ obs space:
obsdatain:
engine:
type: H5File
obsfile: $(DATA)/obs/$(OPREFIX)adpsfc_snow_{{ current_cycle | to_YMDH }}.nc4
obsfile: $(DATA)/obs/$(OPREFIX)adpsfc_snow.nc4
obsdataout:
engine:
type: H5File
obsfile: $(DATA)/diags/diag_adpsfc_snow_{{ current_cycle | to_YMDH }}.nc4
obsfile: $(DATA)/diags/diag_adpsfc_snow.nc4
simulated variables: [totalSnowDepth]
obs operator:
name: Composite
Expand Down
Loading

0 comments on commit 47e31f1

Please sign in to comment.