Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add precipitable clouds in microwave all-sky assimilations (updated) #74

Open
wants to merge 11 commits into
base: develop
Choose a base branch
from

Conversation

jianjunj
Copy link
Contributor

@jianjunj jianjunj commented Feb 12, 2025

This is an update version of the PR #63 which resolves the issue NOAA-EMC/GDASApp#1333 .
The main update is that calculations of cloud fraction and cloud particle radius by the Thompson microphysics scheme are added.

Here is the summary of other added configurations in the original PR #63:
Add rain, snow, and graupel clouds for CRTM inputs.
Add a prior filter to zero clouds over non-water surfaces.
Add an option of clouds in the Hydrometeo check.
Add gross error check threshold for precipition impacted channels.
Add cold-air-outbreak filters.
Read cloud fraction from GeoVals.
Render list of not-bias corrected channels from JCB tables.
Add configurations for atms_n21.

It depends on two UFO PRs
https://github.com/JCSDA-internal/ufo/pull/3600
https://github.com/JCSDA-internal/ufo/pull/3573

It needs the develop branch in "global-workflow/sorc/gdas.cd/sorc/jcb" in order to rend non-bias corrected channels.

These UFO PRs are being revised. I'll inform you when it is ready to be merged.

  Add a prior filter to zero clouds over non-water surfaces.
  Add an option of clouds in the Hydrometeo check.
  Add gross error check threshold for precipition impacted channels.
  Add cold-air-outbreak filters.
  Read cloud fraction from GeoVals.
  Render list of not-bias corrected channels from JCB tables.
  Add configurations for atms_n21.
…methods. Replaced the new "TotalColumnCloudGuess@ObsFunction" by "IntObsFunction/LinearCombination".
Copy link
Collaborator

@danholdaway danholdaway left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks @jianjunj !

@emilyhcliu
Copy link
Contributor

emilyhcliu commented Feb 12, 2025

Second thoughts .

  1. We should remove the diagnostic flag variables since we have decided not to use the UKMO way for qcflags.

# Step 0-A: Create Diagnostic Flags
- filter: Create Diagnostic Flags
filter variables:
- name: brightnessTemperature
channels: *{{observation_from_jcb}}_simulated_channels
flags:
- name: ScanEdgeRemoval
initial value: false
force reinitialization: false
- name: Thinning
initial value: false
force reinitialization: false
- name: CLWRetrievalCheck
initial value: false
force reinitialization: false
- name: WindowChannelExtremeResidual
initial value: false
force reinitialization: false
- name: HydrometeorCheck
initial value: false
force reinitialization: false
- name: GrossCheck
initial value: false
force reinitialization: false
- name: InterChannelConsistency
initial value: false
force reinitialization: false
- name: UseflagCheck
initial value: false
force reinitialization: false

And, the corresponding part of each action part of the filter should be changed, for example, from the following:

   actions:
    - name: set
      flag: WindowChannelExtremeResidual
    - name: reject

to

      action:
        name: reject

@emilyhcliu
Copy link
Contributor

  1. Add reduce obs space to two pre-filters (to mimic GSI)
  • Domain check to remove observations from edge of the scan (Step 1)
  • Gaussin check to thin data (Step 2)
# Step 1: Remove Observations from the Edge of the Scan
  - filter: Domain Check
    filter variables:
    - name: brightnessTemperature
      channels: 1-22
    where:
    - variable:
        name: MetaData/sensorScanPosition
      is_in: 7-90
    actions:
    - name: set
      flag: ScanEdgeRemoval
    - name: reject

  # Step 2: Data Thinning
  - filter: Gaussian Thinning
    horizontal_mesh: 145
    use_reduced_horizontal_grid: true
    distance_norm: geodesic
  #  round_horizontal_bin_count_to_nearest: true
  #  partition_longitude_bins_using_mesh: true
    actions:
    - name: set
      flag: Thinning
    - name: reject

Updated one:

# Step 1: Remove Observations from the Edge of the Scan
  - filter: Domain Check
    filter variables:
    - name: brightnessTemperature
      channels: 1-22
    where:
    - variable:
        name: MetaData/sensorScanPosition
      is_in: 7-90
    action:
      name: reject
      name: reduce obs space
   
  # Step 2: Data Thinning
  - filter: Gaussian Thinning
    horizontal_mesh: 145
    use_reduced_horizontal_grid: true
    distance_norm: geodesic
  #  round_horizontal_bin_count_to_nearest: true
  #  partition_longitude_bins_using_mesh: true
    action:
      name: reject
      name: reduce obs space

@jianjunj
Copy link
Contributor Author

jianjunj commented Feb 18, 2025

name: reduce obs space

@emilyhcliu It looks that we cannot add 'reduce obs space' in the configuration at the moment. It can only be in "obs filters". However, we need both prior or post filters, and "obs filters" cannot be added along with "obs prior fitlers" or "obs post filters".
Here is the error message:
Test "ufo/ObsFilters/testFilters" failed with unhandled eckit::Exception: Not implemented: Action 'reduce obs space' not implemented for prior or post filters yet @

…n. Brought back the total column cloud function.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
do not merge draft draft PR often used for discussion
Projects
Status: No status
Development

Successfully merging this pull request may close these issues.

3 participants