Skip to content

Commit

Permalink
add the amsua_n19_qc_bc.yaml into templates (#206)
Browse files Browse the repository at this point in the history
This PR is for commit the work have been done in
[issue#180](#180)

The ctest has been passed with this new yaml file.
  • Loading branch information
xyzemc authored Oct 25, 2024
1 parent 00994bb commit 380ad1a
Show file tree
Hide file tree
Showing 2 changed files with 380 additions and 0 deletions.
5 changes: 5 additions & 0 deletions rrfs-test/validated_yamls/gen_yaml_ctest.sh
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,10 @@ msonet_obtype_configs=(
atms_obtype_configs=(
"atms_npp_qc_bc.yaml"
)
# Define AMSUA observation type configs as an array
amsua_obtype_configs=(
"amsua_n19.yaml"
)

# Function to concatenate all obtypes into one file
process_obtypes() {
Expand Down Expand Up @@ -99,6 +103,7 @@ for basic_config in "${basic_configs[@]}"; do
process_obtypes "${ctest_names[$iconfig]}" "aircft_obtype_configs[@]" "data/obs_ctest/ioda_aircft_dc.nc" "$temp_yaml"
process_obtypes "${ctest_names[$iconfig]}" "msonet_obtype_configs[@]" "data/obs_ctest/ioda_msonet_dc.nc" "$temp_yaml"
process_obtypes "${ctest_names[$iconfig]}" "atms_obtype_configs[@]" "data/obs_ctest/atms_npp_obs_2024052700.nc" "$temp_yaml"
process_obtypes "${ctest_names[$iconfig]}" "amsua_obtype_configs[@]" "data/obs_ctest/ioda_amsua_n19_dc.nc" "$temp_yaml"

# Copy the basic configuration yaml into the super yaml
cp -p templates/basic_config/$basic_config ./$conv_yaml
Expand Down
375 changes: 375 additions & 0 deletions rrfs-test/validated_yamls/templates/obtype_config/amsua_n19.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,375 @@
- obs space:
name: amsua_n19
distribution:
name: "@DISTRIBUTION@"
obsdatain:
engine:
type: H5File
obsfile: data/obs/amsua_n19_obs.2024052700.nc
obsdataout:
engine:
type: H5File
obsfile: amsua_n19_hofx.2024052700.nc4
simulated variables: [brightnessTemperature]
observed variables: [brightnessTemperature]
channels: &amsua_n19_channels 1-15
obs operator:
name: CRTM
Absorbers: [H2O,O3]
SurfaceWindGeoVars: uv
Clouds: [Water, Ice]
Cloud_Fraction: 1.0
obs options:
Sensor_ID: amsua_n19
EndianType: little_endian
CoefficientPath: data/crtm/
IRVISlandCoeff: IGBP
linear obs operator:
Absorbers: [H2O, O3]
obs localizations:
- localization method: Horizontal Gaspari-Cohn
lengthscale: 300e3 # orig
obs bias:
input file: data/obs/amsua_n19.satbias.nc4
output file: out_amsua_n19.satbias.nc4
variational bc:
predictors:
- name: constant
- name: lapseRate
order: 2
tlapse: &amsua_n19_tlapse data/obs/amsua_n19.tlapse.txt
- name: lapseRate
tlapse: *amsua_n19_tlapse
- name: emissivityJacobian
- name: sensorScanAngle
order: 4
- name: sensorScanAngle
order: 3
- name: sensorScanAngle
order: 2
- name: sensorScanAngle
covariance:
minimal required obs number: 20
variance range: [1.0e-6, 10.0]
step size: 1.0e-4
largest analysis variance: 10000.0
prior:
input file: data/obs/amsua_n19.satbias_cov.nc4
inflation:
ratio: 1.1
ratio for small dataset: 2.0
output file: out_amsua_n19.satbias_cov.nc4
obs filters:
- filter: BlackList
filter variables:
- name: brightnessTemperature
channels: *amsua_n19_channels
action:
name: assign error
error function:
name: ObsFunction/ObsErrorModelRamp
channels: *amsua_n19_channels
options:
channels: *amsua_n19_channels
xvar:
name: ObsFunction/CLWRetSymmetricMW
options:
clwret_ch238: 1
clwret_ch314: 2
clwret_types: [ObsValue, HofX]
x0: [ 0.050, 0.030, 0.030, 0.020, 0.000,
0.100, 0.000, 0.000, 0.000, 0.000,
0.000, 0.000, 0.000, 0.000, 0.030]
x1: [ 0.600, 0.450, 0.400, 0.450, 1.000,
1.500, 0.000, 0.000, 0.000, 0.000,
0.000, 0.000, 0.000, 0.000, 0.200]
err0: [ 2.500, 2.200, 2.000, 0.550, 0.300,
0.230, 0.230, 0.250, 0.250, 0.350,
0.400, 0.550, 0.800, 3.000, 3.500]
err1: [20.000, 18.000, 12.000, 3.000, 0.500,
0.300, 0.230, 0.250, 0.250, 0.350,
0.400, 0.550, 0.800, 3.000, 18.000]
# CLW Retrieval Check
- filter: Bounds Check
filter variables:
- name: brightnessTemperature
channels: 1-6, 15
test variables:
- name: ObsFunction/CLWRetMW
options:
clwret_ch238: 1
clwret_ch314: 2
clwret_types: [ObsValue]
maxvalue: 999.0
action:
name: reject
# CLW Retrieval Check
- filter: Bounds Check
filter variables:
- name: brightnessTemperature
channels: 1-6, 15
test variables:
- name: ObsFunction/CLWRetMW
options:
clwret_ch238: 1
clwret_ch314: 2
clwret_types: [HofX]
maxvalue: 999.0
action:
name: reject
# Hydrometeor Check (cloud/precipitation affected chanels)
- filter: Bounds Check
filter variables:
- name: brightnessTemperature
channels: *amsua_n19_channels
test variables:
- name: ObsFunction/HydrometeorCheckAMSUA
channels: *amsua_n19_channels
options:
channels: *amsua_n19_channels
obserr_clearsky: [ 2.500, 2.200, 2.000, 0.550, 0.300,
0.230, 0.230, 0.250, 0.250, 0.350,
0.400, 0.550, 0.800, 3.000, 3.500]
clwret_function:
name: ObsFunction/CLWRetMW
options:
clwret_ch238: 1
clwret_ch314: 2
clwret_types: [ObsValue]
obserr_function:
name: ObsFunction/ObsErrorModelRamp
channels: *amsua_n19_channels
options:
channels: *amsua_n19_channels
xvar:
name: ObsFunction/CLWRetSymmetricMW
options:
clwret_ch238: 1
clwret_ch314: 2
clwret_types: [ObsValue, HofX]
x0: [ 0.050, 0.030, 0.030, 0.020, 0.000,
0.100, 0.000, 0.000, 0.000, 0.000,
0.000, 0.000, 0.000, 0.000, 0.030]
x1: [ 0.600, 0.450, 0.400, 0.450, 1.000,
1.500, 0.000, 0.000, 0.000, 0.000,
0.000, 0.000, 0.000, 0.000, 0.200]
err0: [ 2.500, 2.200, 2.000, 0.550, 0.300,
0.230, 0.230, 0.250, 0.250, 0.350,
0.400, 0.550, 0.800, 3.000, 3.500]
err1: [20.000, 18.000, 12.000, 3.000, 0.500,
0.300, 0.230, 0.250, 0.250, 0.350,
0.400, 0.550, 0.800, 3.000, 18.000]
maxvalue: 0.0
action:
name: reject
# Topography check
- filter: BlackList
filter variables:
- name: brightnessTemperature
channels: *amsua_n19_channels
action:
name: inflate error
inflation variable:
name: ObsFunction/ObsErrorFactorTopoRad
channels: *amsua_n19_channels
options:
sensor: amsua_n19
channels: *amsua_n19_channels
# Transmittnace Top Check
- filter: BlackList
filter variables:
- name: brightnessTemperature
channels: *amsua_n19_channels
action:
name: inflate error
inflation variable:
name: ObsFunction/ObsErrorFactorTransmitTopRad
channels: *amsua_n19_channels
options:
sensor: amsua_n19
channels: *amsua_n19_channels
# Surface Jacobian check
- filter: BlackList
filter variables:
- name: brightnessTemperature
channels: *amsua_n19_channels
action:
name: inflate error
inflation variable:
name: ObsFunction/ObsErrorFactorSurfJacobianRad
channels: *amsua_n19_channels
options:
sensor: amsua_n19
channels: *amsua_n19_channels
obserr_demisf: [0.010, 0.020, 0.015, 0.020, 0.200]
obserr_dtempf: [0.500, 2.000, 1.000, 2.000, 4.500]
# Situation dependent Check
- filter: BlackList
filter variables:
- name: brightnessTemperature
channels: *amsua_n19_channels
action:
name: inflate error
inflation variable:
name: ObsFunction/ObsErrorFactorSituDependMW
channels: *amsua_n19_channels
options:
sensor: amsua_n19
channels: *amsua_n19_channels
clwobs_function:
name: ObsFunction/CLWRetMW
options:
clwret_ch238: 1
clwret_ch314: 2
clwret_types: [ObsValue]
clwbkg_function:
name: ObsFunction/CLWRetMW
options:
clwret_ch238: 1
clwret_ch314: 2
clwret_types: [HofX]
bias_application: HofX
scatobs_function:
name: ObsFunction/SCATRetMW
options:
scatret_ch238: 1
scatret_ch314: 2
scatret_ch890: 15
scatret_types: [ObsValue]
bias_application: HofX
clwmatchidx_function:
name: ObsFunction/CLWMatchIndexMW
channels: *amsua_n19_channels
options:
channels: *amsua_n19_channels
clwobs_function:
name: ObsFunction/CLWRetMW
options:
clwret_ch238: 1
clwret_ch314: 2
clwret_types: [ObsValue]
clwbkg_function:
name: ObsFunction/CLWRetMW
options:
clwret_ch238: 1
clwret_ch314: 2
clwret_types: [HofX]
bias_application: HofX
clwret_clearsky: [0.050, 0.030, 0.030, 0.020, 0.000,
0.100, 0.000, 0.000, 0.000, 0.000,
0.000, 0.000, 0.000, 0.000, 0.030]
obserr_function:
name: ObsFunction/ObsErrorModelRamp
channels: *amsua_n19_channels
options:
channels: *amsua_n19_channels
xvar:
name: ObsFunction/CLWRetSymmetricMW
options:
clwret_ch238: 1
clwret_ch314: 2
clwret_types: [ObsValue, HofX]
x0: [ 0.050, 0.030, 0.030, 0.020, 0.000,
0.100, 0.000, 0.000, 0.000, 0.000,
0.000, 0.000, 0.000, 0.000, 0.030]
x1: [ 0.600, 0.450, 0.400, 0.450, 1.000,
1.500, 0.000, 0.000, 0.000, 0.000,
0.000, 0.000, 0.000, 0.000, 0.200]
err0: [ 2.500, 2.200, 2.000, 0.550, 0.300,
0.230, 0.230, 0.250, 0.250, 0.350,
0.400, 0.550, 0.800, 3.000, 3.500]
err1: [20.000, 18.000, 12.000, 3.000, 0.500,
0.300, 0.230, 0.250, 0.250, 0.350,
0.400, 0.550, 0.800, 3.000, 18.000]
obserr_clearsky: [2.500, 2.200, 2.000, 0.550, 0.300,
0.230, 0.230, 0.250, 0.250, 0.350,
0.400, 0.550, 0.800, 3.000, 3.500]
# Gross check
- filter: Background Check
filter variables:
- name: brightnessTemperature
channels: *amsua_n19_channels
function absolute threshold:
- name: ObsFunction/ObsErrorBoundMW
channels: *amsua_n19_channels
options:
sensor: amsua_n19
channels: *amsua_n19_channels
obserr_bound_latitude:
name: ObsFunction/ObsErrorFactorLatRad
options:
latitude_parameters: [25.0, 0.25, 0.04, 3.0]
obserr_bound_transmittop:
name: ObsFunction/ObsErrorFactorTransmitTopRad
channels: *amsua_n19_channels
options:
channels: *amsua_n19_channels
obserr_bound_topo:
name: ObsFunction/ObsErrorFactorTopoRad
channels: *amsua_n19_channels
options:
channels: *amsua_n19_channels
sensor: amsua_n19
obserr_function:
name: ObsFunction/ObsErrorModelRamp
channels: *amsua_n19_channels
options:
channels: *amsua_n19_channels
xvar:
name: ObsFunction/CLWRetSymmetricMW
options:
clwret_ch238: 1
clwret_ch314: 2
clwret_types: [ObsValue, HofX]
bias_application: HofX
x0: [ 0.050, 0.030, 0.030, 0.020, 0.000,
0.100, 0.000, 0.000, 0.000, 0.000,
0.000, 0.000, 0.000, 0.000, 0.030]
x1: [ 0.600, 0.450, 0.400, 0.450, 1.000,
1.500, 0.000, 0.000, 0.000, 0.000,
0.000, 0.000, 0.000, 0.000, 0.200]
err0: [ 2.500, 2.200, 2.000, 0.550, 0.300,
0.230, 0.230, 0.250, 0.250, 0.350,
0.400, 0.550, 0.800, 3.000, 3.500]
err1: [20.000, 18.000, 12.000, 3.000, 0.500,
0.300, 0.230, 0.250, 0.250, 0.350,
0.400, 0.550, 0.800, 3.000, 18.000]
obserr_bound_max: [4.5, 4.5, 4.5, 2.5, 2.0,
2.0, 2.0, 2.0, 2.0, 2.0,
2.5, 3.5, 4.5, 4.5, 4.5]
action:
name: reject
# Inter-channel check
- filter: Bounds Check
filter variables:
- name: brightnessTemperature
channels: *amsua_n19_channels
test variables:
- name: ObsFunction/InterChannelConsistencyCheck
channels: *amsua_n19_channels
options:
channels: *amsua_n19_channels
sensor: amsua_n19
use_flag: [ 1, 1, 1, 1, 1,
1, -1, -1, 1, 1,
1, 1, 1, -1, 1 ]
maxvalue: 1.0e-12
action:
name: reject
# Useflag check
- filter: Bounds Check
filter variables:
- name: brightnessTemperature
channels: *amsua_n19_channels
test variables:
- name: ObsFunction/ChannelUseflagCheckRad
channels: *amsua_n19_channels
options:
sensor: amsua_n19
channels: *amsua_n19_channels
use_flag: [ 1, 1, 1, 1, 1,
1, -1, -1, 1, 1,
1, 1, 1, -1, 1 ]
minvalue: 1.0e-12
action:
name: reject

0 comments on commit 380ad1a

Please sign in to comment.