Add H SAF ASCAT H121/H139 soil moisture reader - #186
Draft
amfox37 wants to merge 17 commits into
Draft
Conversation
Adds read_obs_sm_ASCAT_HSAF and three new obs species (ASCAT_HSAF_META_SM, ASCAT_HSAF_METB_SM, ASCAT_HSAF_METC_SM) reading netCDF swath files from the H SAF H121 CDR and H139 ICDR products on the 12.5 km Fibonacci grid. QC uses flags embedded in the netCDF files (no external mask needed), including subsurface_scattering_probability which was not available in the prior EUMET BUFR product. N_obs_species_nml bumped from 55 to 58. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
H121/H139 files arrive from FTP in monthly directories (YYYY/MM/);
using obs_dir_hier=1 makes read_obs_fnames prepend Y{YYYY}/M{MM}/
instead of Y{YYYY}/M{MM}/D{DD}/, so data can stay in monthly dirs
without restructuring.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Point to shared land_da project directory on Discover for H121 obs files and consolidated flists directory. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
qc_model_based_for_sat_sfmc screens for snow and frozen soil using model state, so duplicating those checks with H SAF product flags is unnecessary. Retain wetland, topographic complexity, and subsurface scattering screening at read time. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Wetland, topographic complexity, and subsurface scattering probability
variables are NC_BYTE or NC_UBYTE; fill values read as negative signed
bytes. Add explicit < 0 guard so fill values are rejected rather than
silently passing the threshold check.
Update MetOp-B and MetOp-C namelist paths from H121/metop_{b,c}/ to
H121_H139/metop_{b,c}/ to reflect that CDR and ICDR files are staged
together under the same root directory.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…AT QC Fill means no subsurface scattering region detected here, not missing data. Wetland and topo fill still rejected (unknown coverage from static databases). Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…T reader Hahn et al. (2026, ESSD essd-2025-746) state surface_soil_moisture_sensitivity below 1 dB indicates unreliable retrievals, and their own validation masks subsurface_scattering_probability > 5% rather than the 10% previously used here. Add a sensitivity check and tighten thr_subsfc to match. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…ader This reader assigns every accepted obs the same fixed this_obs_param%errstd with no per-observation noise down-weighting, so noise_out_of_limits obs get the same Kalman weight as clean ones. Hard rejection on bit 4 only (not bit 2/slightly_degraded, which discards more data for no measurable benefit). Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…FAULT_inputs_ensupd.nml)
…lignment (clsm_ensupd_read_obs.F90)
Collaborator
|
@amfox37 : Thanks for putting this together, looks great. I added a few commits, mostly comments and white-space changes for cleanup. There is, however, one change that needs discussion: I think the FOV value should be 12.5 km: 3f267f3. The FOV value is a radius. SMAP Tb has ~40 km resolution, and the FOV value is 20 km. The "12.5km" ASCAT product a nominal resolution of 25 km per Hahn et al, so FOV should be 12.5 km. Not sure what the resolution of the old EUMETSAT product is. Probably the FOV value of 20 km isn't quite right, but we can leave that alone given that we're going to use the HSAF product going forward. Does this make sense to you? |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This PR adds support for reading H SAF ASCAT surface soil moisture from the H121 CDR v8 and H139 ICDR NetCDF products.
Summary:
read_obs_sm_ASCAT_HSAF()for H SAF ASCAT NetCDF swath files on the 12.5 km Fibonacci grid.ASCAT_HSAF_META_SMASCAT_HSAF_METB_SMASCAT_HSAF_METC_SMN_obs_species_nmlfrom 55 to 58.read_obs().CHANGELOG.md.Notes:
Testing:
cmake --build build-develop-20260520 --target install -j 4; the latest pushed commit is changelog/comment-only.