Skip to article frontmatterSkip to article content
Site not loading correctly?

This may be due to an incorrect BASE_URL configuration. See the MyST Documentation for reference.

Exploration of CSAPR-2 Z-R relationships over BNF

Project Pythia Logo

Exploration of CSAPR-2 Z-R relationships over BNF

Overview

This notebook explores the relationship between radar reflectivity (Z) and rain rate (R) CSAPR2 radar over BNF. Accuracy of ZR relationship is affected by the variability of raindrop size distributions (DSDs). Rainfall also causes attenuation of radar signals, particularly at higher frequencies. This can also be used for rainfall estimation. The LDQUANTS is a laser disdrometer based product from ARM that characterizes DSD. We want to optimized the Z-R relationship over BNF, for more accurate rainfall estimations compared to using generalized or default Z-R relationships. This notebook will demonstrate the derivation of both Z-R and k-R (attenuation-rain rate) relationships using LDQUANTS data.

Prerequisites

ConceptsImportanceNotes
Linear RegressionNecessary
Radar ReflectivityNecessary
Understanding of NetCDFHelpfulFamiliarity with metadata structure
  • Time to learn: 30 min.

  • System requirements:

    • Populate with any system, version, or non-Python software requirements if necessary

    • Otherwise use the concepts table above and the Imports section below to describe required packages as necessary

    • If no extra requirements, remove the System requirements point altogether

Z-R and k-R Relationships from LDQUANTS for BNF M1

The notebook presents an analysis to derive empirical relationships between radar reflectivity (dBZ) and rain rate (R), and also specific attenuation (k) and R using Drop Size Distribution (DSD) from LDQUANTS from NetCDF files.

imports and file reading

39

I will use xarray to read mutiple files

<xarray.Dataset> Size: 10MB
Dimensions:                                      (time: 54412)
Coordinates:
  * time                                         (time) datetime64[ns] 435kB ...
Data variables: (12/42)
    base_time                                    (time) datetime64[ns] 435kB ...
    time_offset                                  (time) datetime64[ns] 435kB dask.array<chunksize=(1440,), meta=np.ndarray>
    rain_rate                                    (time) float32 218kB dask.array<chunksize=(1440,), meta=np.ndarray>
    reflectivity_factor_sband20c                 (time) float32 218kB dask.array<chunksize=(1440,), meta=np.ndarray>
    reflectivity_factor_cband20c                 (time) float32 218kB dask.array<chunksize=(1440,), meta=np.ndarray>
    reflectivity_factor_xband20c                 (time) float32 218kB dask.array<chunksize=(1440,), meta=np.ndarray>
    ...                                           ...
    specific_differential_attenuation_cband20c   (time) float32 218kB dask.array<chunksize=(1440,), meta=np.ndarray>
    specific_differential_attenuation_kaband20c  (time) float32 218kB dask.array<chunksize=(1440,), meta=np.ndarray>
    specific_differential_attenuation_xband20c   (time) float32 218kB dask.array<chunksize=(1440,), meta=np.ndarray>
    lat                                          (time) float32 218kB 34.34 ....
    lon                                          (time) float32 218kB -87.34 ...
    alt                                          (time) float32 218kB 293.0 ....
Attributes: (12/14)
    command_line:          ldquants -s bnf -f M1 -b 20250201 -e 20250202
    Conventions:           ARM-1.3
    process_version:       vap-ldquants-1.3-1.el7
    dod_version:           ldquants-c1-1.4
    input_datastreams:     bnfldM1.b1 : 1.6 : 20250201.000000
    site_id:               bnf
    ...                    ...
    data_level:            c1
    location_description:  Southeast U.S. in Bankhead National Forest (BNF), ...
    datastream:            bnfldquantsM1.c1
    doi:                   10.5439/1432694
    pydsd_version:         1.0.6.2
    history:               created by user dsmgr on machine prod-proc3.adc.ar...

plots

We will make basic plots to get the idea of the data quality.

<Figure size 1500x500 with 2 Axes>

This looks as expected. There are some higher values of rain rates.

<Figure size 1200x800 with 2 Axes>

Some more plots. ZR plot is looking promising.

<Figure size 1500x500 with 2 Axes>

Fitting ZR relationship

To find the coefficients a and b in the power-law relationship Z = a * R^b, we do linear regression in log-log space. Take Log of both sides of the Z-R equation gives

log(Z) = log(a) + b * log(R)

Min dBZ: -4.522533893585205
Max dBZ: 56.1351432800293

Plot Log-Log relationship

No artists with labels found to put in legend.  Note that artists whose label start with an underscore are ignored when legend() is called with no argument.
<Figure size 800x600 with 1 Axes>
<Figure size 640x480 with 1 Axes>

Linear regression

coefficients_zr (raw from np.polyfit): [1.46141458 2.33188229]
Z-R Relationship for C-band (from LDQUANTS data):
Z = 214.72 * R**1.46
<Figure size 800x600 with 1 Axes>

Now this is correct!

Now we will do the same for Attenuation

Min specific_attenuation (dB/km): 3.992306665168144e-05
Max specific_attenuation (dB/km): 0.9515843391418457
No artists with labels found to put in legend.  Note that artists whose label start with an underscore are ignored when legend() is called with no argument.
<Figure size 800x600 with 1 Axes>
coefficients_kr (raw from np.polyfit): [ 0.99072717 -2.76246926]
k-R Relationship for C-band (from LDQUANTS data)
k = 0.002 * R**0.991

Let’s check it.

<Figure size 800x600 with 1 Axes>

Because the one rain event was mainly convective the attenuation relationship was looking better, however it has issues with higher rain rates.