W-band radar example

W-band radar example#

During EUREC⁴A and ATOMIC NOAA deployed W-band (94 GHz) radars on both the P-3 aircraft and the ship Ron Brown. The airborne radar was operated with 220 30-meter range gates with a dwell time of 0.5 seconds. The minimum detectable reflectivity of -36 dBZ at a range of 1 km although accurate estimates of Doppler properties require about -30 dBZ at 1 km.

The data are available through the EUREC⁴A intake catalog.

import datetime

import matplotlib.pyplot as plt
import colorcet as cc
%matplotlib inline

import eurec4a
cat = eurec4a.get_intake_catalog(use_ipfs="QmahMN2wgPauHYkkiTGoG2TpPBmj3p5FoYJAq9uE9iXT9N")

We’ll select an hour’s worth of observations from a single flight day, and mask out any observations with signal-to-noise ratio less than -10 dB.

time_slice = slice(datetime.datetime(2020, 1, 19, hour=18),
                   datetime.datetime(2020, 1, 19, hour=19))

cloud_params = cat.P3.remote_sensing['P3-0119'].to_dask().sel(time=time_slice)

w_band         = cat.P3.w_band_radar['P3-0119'].to_dask().sel(time=time_slice, height=slice(0,3))
w_band         = w_band.where(w_band.snr > -10)
/usr/share/miniconda3/envs/how_to_eurec4a/lib/python3.12/site-packages/intake_xarray/base.py:21: FutureWarning: The return type of `Dataset.dims` will be changed to return a set of dimension names in future, in order to be more consistent with `DataArray.dims`. To access a mapping from dimension names to lengths, please use `Dataset.sizes`.
  'dims': dict(self._ds.dims),
/usr/share/miniconda3/envs/how_to_eurec4a/lib/python3.12/site-packages/intake_xarray/base.py:21: FutureWarning: The return type of `Dataset.dims` will be changed to return a set of dimension names in future, in order to be more consistent with `DataArray.dims`. To access a mapping from dimension names to lengths, please use `Dataset.sizes`.
  'dims': dict(self._ds.dims),

The three main quantities measured by the radar are the reflectivity, the Doppler velocity, and the spectral width.

fig = plt.figure(figsize = (12,10.2))

axes = fig.subplots(3, 1, sharex=True)
w_band.corrected_reflectivity.plot(x="time", y="height",
                                   ax = axes[0],
                                   vmin = -45, vmax = 20,
                                   cmap = cc.m_bgy)
w_band.corrected_doppler_velocity.plot(x="time", y="height",
                                       ax = axes[1],
                                       vmin = -3, vmax = 3,
                                       cmap = cc.m_coolwarm)

w_band.spectral_width.plot(x="time", y="height",
                          ax = axes[2],
                          vmin = 0, vmax = 2,
                          cmap = cc.m_bmy)

for ax in axes[0:2]:
    ax.tick_params(
    axis='x',          # changes apply to the x-axis
    which='both',      # both major and minor ticks are affected
    bottom=False,      # ticks along the bottom edge are off
    top=False,         # ticks along the top edge are off
    labelbottom=False) # labels along the bottom edge are off
    ax.xaxis.set_visible(False)

fig.subplots_adjust(bottom = 0)
_images/8c891f7bff16207c2c33cbbbb89bd5fd9ec9a2f6966056df564b37e5088363f9.png