Skip to content

HuSophia/mirs-hydro-3d

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

11 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

mirs-hydro-3d

Tropical cyclones are among the most complex and destructive atmospheric phenomena, characterized by intense precipitation, strong winds, and organized convective structures. Understanding the three-dimensional distribution of hydrometeors — cloud liquid water, rain, and graupel — within a TC is critical for improving our knowledge of storm dynamics, intensification processes, and microwave radiative transfer.

This project supports research into the internal structure of tropical cyclones by preparing NOAA MIRS satellite retrieval data for 3D visualization. Given a storm name, year, and a datetime cutoff, the script extracts and merges MIRS IMG and SND granule files before or after a specified time, combines them with IBTrACS storm track metadata, and outputs a single analysis-ready netCDF file. The resulting dataset is loaded into ParaView for volumetric 3D visualization of hydrometeor fields — enabling researchers to explore cloud structure and precipitation distribution within the storm at a specific point in its lifecycle.

This workflow was applied to Hurricane IDA (2021) around the time of its Gulf Coast landfall on August 29, 2021, when the storm reached Category 4 intensity.

Workflow

IBTrACS CSV + MIRS IMG/SND granules
          ↓
  Time-based filtering (before/after cutoff datetime)
          ↓
  Merge IMG + SND + IBTrACS → netCDF output
          ↓
  Load into ParaView → 3D hydrometeor visualization

Installation

git clone https://github.com/your-username/mirs-hydro-3d.git
cd mirs-hydro-3d
pip install -e .

Usage

Update the user settings at the top of the script:

storm_name   = "IDA"
storm_year   = 2021

# Datetime cutoff — format: YYYYMMDDHHmmss
# e.g. 20210829150000 = August 29 2021, 15:00 UTC
date_to_pick = 20210829150000

# "before" → files with timestamps before the cutoff
# "after"  → files with timestamps after the cutoff
before_or_after = "before"

dir_path     = "/path/to/MIRS_IDA_2021-08-29/"
ibt_file     = "/path/to/IBTrACS.ALL.v04r00.nc"
ibt_file_csv = "/path/to/ibtracs.ALL.list.v04r00.csv"

Then run:

python mirs_hydro_3d.py

Output: a netCDF file named IDA_2021_08-29_all_data_<cutoff>_<before/after>.nc

Required data files

File Description Source
ibtracs.ALL.list.v04r00.csv IBTrACS storm track CSV IBTrACS downloads
IBTrACS.ALL.v04r00.nc IBTrACS storm track netCDF IBTrACS downloads
NPR-MIRS-IMG_*.nc MIRS IMG granules NOAA MIRS
NPR-MIRS-SND_*.nc MIRS SND granules NOAA MIRS

Hydrometeor variables

The following SND variables are retained in the output for 3D visualization:

Variable Description
PClw Cloud liquid water profile
PRain Rain water profile
PGraupel Graupel profile
PTemp Temperature profile
PVapor Water vapor profile
Plevel Pressure levels
Player Layer index

Key difference from tcmirs

This script differs from tcmirs in how MIRS files are selected. Rather than matching granules spatially and temporally to each track point, files are selected by a datetime cutoff — all granules before or after a specified UTC timestamp. This approach is suited for studying a single snapshot of the storm (e.g. just before landfall) rather than the full lifecycle.

3D visualization in ParaView

The ParaView pipeline script (paraview_trace.py) can be run directly via Tools → Python Shell → Run Script, or the steps below can be followed manually. The same netCDF file is loaded three times with different dimension configurations to render the 2D rain rate surface and two separate 3D hydrometeor contour clouds simultaneously.


Step 1 — Load the netCDF three times

Open the output .nc file three times via File → Open, creating three separate readers. Each needs a different dimension assignment:

Reader Dimensions Purpose
Reader 1 (Scanline, Field_of_view) 2D rain rate slice
Reader 2 (Scanline, Field_of_view, P_Layer) 3D graupel contour
Reader 3 (Scanline, Field_of_view, P_Layer) 3D rain contour

To set dimensions: select the reader in the Pipeline Browser → Properties panel → Dimensions dropdown.


Step 2 — 2D rain rate slice (Reader 1)

  1. Select Reader 1 → change Representation to Slice
  2. Color by RR (rain rate)
  3. Click Rescale to Data Range
  4. This produces the horizontal rain rate map at the base of the visualization

Step 3 — Graupel contour cloud (Reader 2)

  1. Select Reader 2 → Filters → Common → Contour
  2. Set Contour By to PGraupel
  3. Set isosurface value to 0.05 (kg/kg)
  4. Click Apply
  5. Color the contour by PGraupel
  6. Apply the Cold and Hot color preset (Color Map Editor → Presets)
  7. Click Rescale to Data Range

Step 4 — Rain contour cloud (Reader 3)

  1. Select Reader 3 → Filters → Common → Contour
  2. Set Contour By to PRain
  3. Set isosurface value to 0.01 (kg/kg)
  4. Click Apply
  5. Color the contour by PRain
  6. Apply the Cold and Hot color preset
  7. Click Rescale to Data Range

Step 5 — Position the contour clouds

The two 3D contour clouds need to be repositioned relative to the 2D rain rate base so all three layers are visible together:

  1. Select the graupel contour → Filters → Alphabetical → Transform
  2. Set Translate to [150, 15, -50] and Rotate to [0, -90, 0]
  3. Repeat for the rain contour with the same transform values
  4. Hide the original contour objects; show only the transformed versions

Step 6 — Color bars and final layout

  1. Move color bars to non-overlapping positions using the scalar bar placement controls
  2. Hide the orientation axes if desired (View → Orientation Axes)
  3. Use View → Reset Camera to fit all objects in view
  4. Save a screenshot via File → Save Screenshot

Isosurface thresholds

The values used in this study:

Variable Isosurface value Unit
PGraupel 0.05 kg/kg
PRain 0.01 kg/kg

These can be adjusted in the Contour filter properties to show more or less of the hydrometeor structure depending on the storm and time window selected.

Notes

  • The datetime cutoff format is YYYYMMDDHHmmss as an integer, extracted from characters 24–39 of the MIRS filename
  • IBTrACS 2021 data has incomplete WMO fields; the if year != 2021 condition handles this
  • compat='override' is used in xr.merge() to resolve coordinate conflicts between IMG, SND, and IBTrACS datasets

Acknowledgements

Special thanks to the NOAA MIRS team for data access and scientific guidance.

About

3D visualization of NOAA MIRS hydrometeor retrievals for Hurricane IDA (2021) using ParaView

Topics

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors