From 9285f5f2a40529b549fffb696167150738c70b2c Mon Sep 17 00:00:00 2001 From: RussTreadon-NOAA Date: Thu, 9 Nov 2023 13:48:27 +0000 Subject: [PATCH 1/6] update prototype_3d observation list to process satwind_goes-16, update obsfile for satwnd.abi_goes-16 --- parm/atm/obs/config/satwind_goes-16.yaml | 2 +- parm/atm/obs/lists/gdas_prototype_3d.yaml | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/parm/atm/obs/config/satwind_goes-16.yaml b/parm/atm/obs/config/satwind_goes-16.yaml index f5d7f3df6..33442b599 100644 --- a/parm/atm/obs/config/satwind_goes-16.yaml +++ b/parm/atm/obs/config/satwind_goes-16.yaml @@ -3,7 +3,7 @@ obs space: obsdatain: engine: type: H5File - obsfile: $(DATA)/obs/$(OPREFIX)satwind.abi_goes-16.{{ current_cycle | to_YMDH }}.nc4 + obsfile: $(DATA)/obs/$(OPREFIX)satwnd.abi_goes-16.tm00.nc obsdataout: engine: type: H5File diff --git a/parm/atm/obs/lists/gdas_prototype_3d.yaml b/parm/atm/obs/lists/gdas_prototype_3d.yaml index 18d64e54e..ca478da42 100644 --- a/parm/atm/obs/lists/gdas_prototype_3d.yaml +++ b/parm/atm/obs/lists/gdas_prototype_3d.yaml @@ -1,9 +1,9 @@ observers: -- !INC ${OBS_YAML_DIR}/amsua_n19.yaml -- !INC ${OBS_YAML_DIR}/sondes.yaml +##- !INC ${OBS_YAML_DIR}/amsua_n19.yaml +##- !INC ${OBS_YAML_DIR}/sondes_prepbufr.yaml ##- !INC ${OBS_YAML_DIR}/atms_n20.yaml ##- !INC ${OBS_YAML_DIR}/aircraft.yaml -##- !INC ${OBS_YAML_DIR}/satwind.yaml +- !INC ${OBS_YAML_DIR}/satwind_goes-16.yaml ##- !INC ${OBS_YAML_DIR}/omi_aura.yaml ##- !INC ${OBS_YAML_DIR}/ompsnp_npp.yaml ##- !INC ${OBS_YAML_DIR}/ompstc8_npp.yaml From f5320c82b97d19cfe5ef546abdd8ccb144c00d53 Mon Sep 17 00:00:00 2001 From: RussTreadon-NOAA Date: Thu, 9 Nov 2023 18:46:39 +0000 Subject: [PATCH 2/6] update GDAS/orion.lua to use spack-stack-1.5.1, bufr/12.0.1, and atlas/0.35.0 --- modulefiles/GDAS/orion.lua | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/modulefiles/GDAS/orion.lua b/modulefiles/GDAS/orion.lua index 8bff5b6c0..00ddecce0 100644 --- a/modulefiles/GDAS/orion.lua +++ b/modulefiles/GDAS/orion.lua @@ -6,7 +6,7 @@ local pkgName = myModuleName() local pkgVersion = myModuleVersion() local pkgNameVer = myModuleFullName() -prepend_path("MODULEPATH", '/work/noaa/epic/role-epic/spack-stack/orion/spack-stack-1.5.0/envs/unified-env/install/modulefiles/Core') +prepend_path("MODULEPATH", '/work/noaa/epic/role-epic/spack-stack/orion/spack-stack-1.5.1/envs/unified-env/install/modulefiles/Core') prepend_path("MODULEPATH", '/work2/noaa/da/python/opt/modulefiles/stack') -- below two lines get us access to the spack-stack modules @@ -27,7 +27,7 @@ load("nco/5.0.6") load("parallelio/2.5.10") load("wget/1.14") load("boost/1.78") -load("bufr/12.0.0") +load("bufr/12.0.1") load("git-lfs/2.12.0") load("ecbuild/3.7.2") load("openjpeg/2.3.1") @@ -39,7 +39,7 @@ load("fftw/3.3.10") load("fckit/0.11.0") load("fiat/1.2.0") load("ectrans/1.2.0") -load("atlas/0.34.0") +load("atlas/0.35.0") load("sp/2.3.3") load("gsl-lite/0.37.0") load("libjpeg/2.1.0") From 8c3496614f65311f1bedbd41085a4a013eab79f3 Mon Sep 17 00:00:00 2001 From: Emily Liu Date: Sat, 11 Nov 2023 16:20:17 -0600 Subject: [PATCH 3/6] Remove a double-declaired "obs post filters" in satwnd GOES YAMLs. --- parm/atm/obs/config/satwind_goes-16.yaml | 1 - parm/atm/obs/config/satwind_goes-17.yaml | 1 - 2 files changed, 2 deletions(-) diff --git a/parm/atm/obs/config/satwind_goes-16.yaml b/parm/atm/obs/config/satwind_goes-16.yaml index 33442b599..e1dbd2ff7 100644 --- a/parm/atm/obs/config/satwind_goes-16.yaml +++ b/parm/atm/obs/config/satwind_goes-16.yaml @@ -427,7 +427,6 @@ obs post filters: action: name: reject -obs post filters: # Reject GOES (247) when difference of wind direction is more than 50 degrees. # CLEARED: maxvalue is rejecting >, not >= as per a Perform Action, so threshold is unchanged - filter: Bounds Check diff --git a/parm/atm/obs/config/satwind_goes-17.yaml b/parm/atm/obs/config/satwind_goes-17.yaml index b413b969b..c363acf5d 100644 --- a/parm/atm/obs/config/satwind_goes-17.yaml +++ b/parm/atm/obs/config/satwind_goes-17.yaml @@ -427,7 +427,6 @@ obs post filters: action: name: reject -obs post filters: # Reject GOES (247) when difference of wind direction is more than 50 degrees. # CLEARED: maxvalue is rejecting >, not >= as per a Perform Action, so threshold is unchanged - filter: Bounds Check From 27d4b5c81a14bc72f09a31e9f16ecc335afc926a Mon Sep 17 00:00:00 2001 From: Emily Liu Date: Mon, 13 Nov 2023 13:45:09 -0600 Subject: [PATCH 4/6] change sensorZenithAngle to satelliteZenithAngle --- parm/atm/obs/config/satwind_goes-16.yaml | 14 +++++++------- parm/atm/obs/config/satwind_goes-17.yaml | 14 +++++++------- 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/parm/atm/obs/config/satwind_goes-16.yaml b/parm/atm/obs/config/satwind_goes-16.yaml index e1dbd2ff7..7cd4171fb 100644 --- a/parm/atm/obs/config/satwind_goes-16.yaml +++ b/parm/atm/obs/config/satwind_goes-16.yaml @@ -14,15 +14,15 @@ obs space: obs operator: name: VertInterp - hofx scaling field: SurfaceWindScalingPressure - hofx scaling field group: DerivedVariables +# hofx scaling field: SurfaceWindScalingPressure +# hofx scaling field group: DerivedVariables -obs prior filters: +#obs prior filters: # Apply variable changes needed for wind scaling # For wind observations with pressure provided -- filter: Variable Transforms - Transform: SurfaceWindScalingPressure - SkipWhenNoObs: False +#- filter: Variable Transforms +# Transform: SurfaceWindScalingPressure +# SkipWhenNoObs: False # Calculate error inflation factor for duplicate observations #- filter: Variable Assignment @@ -181,7 +181,7 @@ obs post filters: - name: windEastward - name: windNorthward test variables: - - name: MetaData/sensorZenithAngle + - name: MetaData/satelliteZenithAngle maxvalue: 68. action: name: reject diff --git a/parm/atm/obs/config/satwind_goes-17.yaml b/parm/atm/obs/config/satwind_goes-17.yaml index c363acf5d..3ac7643cc 100644 --- a/parm/atm/obs/config/satwind_goes-17.yaml +++ b/parm/atm/obs/config/satwind_goes-17.yaml @@ -14,15 +14,15 @@ obs space: obs operator: name: VertInterp - hofx scaling field: SurfaceWindScalingPressure - hofx scaling field group: DerivedVariables +# hofx scaling field: SurfaceWindScalingPressure +# hofx scaling field group: DerivedVariables -obs prior filters: +#obs prior filters: # Apply variable changes needed for wind scaling # For wind observations with pressure provided -- filter: Variable Transforms - Transform: SurfaceWindScalingPressure - SkipWhenNoObs: False +#- filter: Variable Transforms +# Transform: SurfaceWindScalingPressure +# SkipWhenNoObs: False # Calculate error inflation factor for duplicate observations #- filter: Variable Assignment @@ -181,7 +181,7 @@ obs post filters: - name: windEastward - name: windNorthward test variables: - - name: MetaData/sensorZenithAngle + - name: MetaData/satelliteZenithAngle maxvalue: 68. action: name: reject From cae13e40c058e7b5d456233bf13c85d60bf3093d Mon Sep 17 00:00:00 2001 From: Emily Liu Date: Mon, 13 Nov 2023 13:45:52 -0600 Subject: [PATCH 5/6] Remove wind direction and speed from ObsValue; change sensorZenithAngle to satelliteZenithAngle --- .../bufr2ioda/bufr2ioda_satwind_amv_goes.py | 26 +++++++++---------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/ush/ioda/bufr2ioda/bufr2ioda_satwind_amv_goes.py b/ush/ioda/bufr2ioda/bufr2ioda_satwind_amv_goes.py index 88f0d7a5b..84e7f2a5b 100755 --- a/ush/ioda/bufr2ioda/bufr2ioda_satwind_amv_goes.py +++ b/ush/ioda/bufr2ioda/bufr2ioda_satwind_amv_goes.py @@ -124,7 +124,7 @@ def bufr_to_ioda(config, logger): q.add('hour', '*/HOUR') q.add('minute', '*/MINU') q.add('second', '*/SECO') - q.add('sensorZenithAngle', '*/SAZA') + q.add('satelliteZenithAngle', '*/SAZA') q.add('sensorCentralFrequency', '*/SCCF') q.add('pressure', '*/PRLC[1]') @@ -173,7 +173,7 @@ def bufr_to_ioda(config, logger): second = r.get('second') lat = r.get('latitude') lon = r.get('longitude') - satzenang = r.get('sensorZenithAngle') + satzenang = r.get('satelliteZenithAngle') pressure = r.get('pressure', type='float') chanfreq = r.get('sensorCentralFrequency', type='float') @@ -356,11 +356,11 @@ def bufr_to_ioda(config, logger): .write_attr('long_name', 'Satellite Identifier') \ .write_data(satid2) - # Sensor Zenith Angle - obsspace.create_var('MetaData/sensorZenithAngle', dtype=satzenang2.dtype, fillval=satzenang2.fill_value) \ + # Satellite Zenith Angle + obsspace.create_var('MetaData/satelliteZenithAngle', dtype=satzenang2.dtype, fillval=satzenang2.fill_value) \ .write_attr('units', 'degree') \ .write_attr('valid_range', np.array([0, 90], dtype=np.float32)) \ - .write_attr('long_name', 'Sensor Zenith Angle') \ + .write_attr('long_name', 'Satellite Zenith Angle') \ .write_data(satzenang2) # Sensor Centrall Frequency @@ -429,16 +429,16 @@ def bufr_to_ioda(config, logger): .write_data(stnelev2) # Wind Speed - obsspace.create_var('ObsValue/windSpeed', dtype=wspd2.dtype, fillval=wspd2.fill_value) \ - .write_attr('units', 'm s-1') \ - .write_attr('long_name', 'Wind Speed') \ - .write_data(wspd2) +# obsspace.create_var('ObsValue/windSpeed', dtype=wspd2.dtype, fillval=wspd2.fill_value) \ +# .write_attr('units', 'm s-1') \ +# .write_attr('long_name', 'Wind Speed') \ +# .write_data(wspd2) # Wind Direction - obsspace.create_var('ObsValue/windDirection', dtype=wdir2.dtype, fillval=wdir2.fill_value) \ - .write_attr('units', 'degrees') \ - .write_attr('long_name', 'Wind Direction') \ - .write_data(wdir2) +# obsspace.create_var('ObsValue/windDirection', dtype=wdir2.dtype, fillval=wdir2.fill_value) \ +# .write_attr('units', 'degrees') \ +# .write_attr('long_name', 'Wind Direction') \ +# .write_data(wdir2) # U-Wind Component obsspace.create_var('ObsValue/windEastward', dtype=uob2.dtype, fillval=wspd2.fill_value) \ From fa5acc9f7d9561c7450e6086529eebf2a055267f Mon Sep 17 00:00:00 2001 From: Emily Liu Date: Tue, 14 Nov 2023 09:05:43 -0600 Subject: [PATCH 6/6] Add linear obs operation section --- parm/atm/obs/config/satwind_goes-16.yaml | 15 +++++++++------ parm/atm/obs/config/satwind_goes-17.yaml | 15 +++++++++------ 2 files changed, 18 insertions(+), 12 deletions(-) diff --git a/parm/atm/obs/config/satwind_goes-16.yaml b/parm/atm/obs/config/satwind_goes-16.yaml index 7cd4171fb..9e669e98d 100644 --- a/parm/atm/obs/config/satwind_goes-16.yaml +++ b/parm/atm/obs/config/satwind_goes-16.yaml @@ -14,15 +14,18 @@ obs space: obs operator: name: VertInterp -# hofx scaling field: SurfaceWindScalingPressure -# hofx scaling field group: DerivedVariables + hofx scaling field: SurfaceWindScalingPressure + hofx scaling field group: DerivedVariables -#obs prior filters: +linear obs operator: + name: VertInterp + +obs prior filters: # Apply variable changes needed for wind scaling # For wind observations with pressure provided -#- filter: Variable Transforms -# Transform: SurfaceWindScalingPressure -# SkipWhenNoObs: False +- filter: Variable Transforms + Transform: SurfaceWindScalingPressure + SkipWhenNoObs: False # Calculate error inflation factor for duplicate observations #- filter: Variable Assignment diff --git a/parm/atm/obs/config/satwind_goes-17.yaml b/parm/atm/obs/config/satwind_goes-17.yaml index 3ac7643cc..43f267cb8 100644 --- a/parm/atm/obs/config/satwind_goes-17.yaml +++ b/parm/atm/obs/config/satwind_goes-17.yaml @@ -14,15 +14,18 @@ obs space: obs operator: name: VertInterp -# hofx scaling field: SurfaceWindScalingPressure -# hofx scaling field group: DerivedVariables + hofx scaling field: SurfaceWindScalingPressure + hofx scaling field group: DerivedVariables -#obs prior filters: +linear obs operator: + name: VertInterp + +obs prior filters: # Apply variable changes needed for wind scaling # For wind observations with pressure provided -#- filter: Variable Transforms -# Transform: SurfaceWindScalingPressure -# SkipWhenNoObs: False +- filter: Variable Transforms + Transform: SurfaceWindScalingPressure + SkipWhenNoObs: False # Calculate error inflation factor for duplicate observations #- filter: Variable Assignment