Halloween storm over Eastern Canada
- EN
- FR
We provide simulation data for three days from October 31st to November 2nd 2019, covering the storm and some of its aftereffects. The 3D volumetric data was prepared on a spherical mesh at resolution $1060\times 1330$ (horizontal) at $16$ vertical pressure levels. For visualization purposes, the pressure levels can be treated as elevation. All variables are stored in compressed NetCDF files.
The storm atmospheric data are presented with the following three 3D time-dependent variables:
- the mass mixing ratio of cloud
MPQC(time,pres,rlat,rlon)
, - the mass mixing ratio of rain
MPQR(time,pres,rlat,rlon)
, - the mass mixing ratio of ice
QTI1(time,pres,rlat,rlon)
.
inside three files dp2015090100_2019{1031,1101,1102}d.nc
for Oct-31, Nov-01, and Nov-02, respectively. Each
NetCDF file contains 24 hourly steps.
The effect of the storm at the surface is described by two 2D time-dependent variables:
- the amount of snow (in water equivalent mm) on the ground
I5(time,rlat,rlon)
insidepm2015090100_2019{1031,1101,1102}d.nc
, - the mean sea level pressure
PN(time,rlat,rlon)
insidedm2015090100_2019{1031,1101,1102}d.nc
.
Finally, the topography is provided by the following 2D static (no time dependency) variables:
- land-sea mask
MG(rlat,rlon)
insidepm2015090100_00000000p.nc
, - elevation
ME(rlat,rlon)
(in meters) insidedm2015090100_00000000p.nc
.
You can combine the last two variables into a single variable elevation = MG*ME
with the Calculator Filter
in ParaView.
Downloading the data
You can either download individual files by following the links in the table:
File | Size | MD5 checksum |
---|---|---|
dm2015090100_00000000p.nc | 5.1M | 5a4b0af90fc3129ca6dba95942061dae |
dm2015090100_20191031d.nc | 46M | 2b202060bba4d8e3005bd2a95923202b |
dm2015090100_20191101d.nc | 44M | d17dd34b2d3db207aaace49ac97a8e34 |
dm2015090100_20191102d.nc | 43M | 69c6f8fa8afb1d626b098336729dbfb9 |
dp2015090100_20191031d.nc | 396M | 2fd61a2cba4a1638731871ab844e8e4c |
dp2015090100_20191101d.nc | 330M | d94f015edffd59bf985df223847aab98 |
dp2015090100_20191102d.nc | 246M | a7eb5e8b268002fb8708b00e69f65e7b |
pm2015090100_00000000p.nc | 4.1M | fbc4b1e1f987b7392b14a50767489fcc |
pm2015090100_20191031d.nc | 23M | 61b20877923943beedb84d2083d29b34 |
pm2015090100_20191101d.nc | 27M | 1ece29fade591f65a9aea4cb22c3c5fe |
pm2015090100_20191102d.nc | 28M | ca9dee21c598a76275357f4faa7ca1b1 |
or you can download all files at once using the following bash commands:
urls=( DpB98GLxGjsLNZt 9p4nSf8EYwA7zwk eAysq2ctkokNDx2 Pp5CtZJb2bo74Mn
WEM3JCWoMBb7BDj W3ED2qHqxrCy6WJ QCQSfzdwbg5ofdG 82r5ciD9Z7Z4gpk
n5cpjC4J3PeN9SC TAg7DL7HzNngtTR 9G7Pok7QTE6d3Xd )
names=( dm2015090100_00000000p dm2015090100_20191031d dm2015090100_20191101d dm2015090100_20191102d
dp2015090100_20191031d dp2015090100_20191101d dp2015090100_20191102d pm2015090100_00000000p
pm2015090100_20191031d pm2015090100_20191101d pm2015090100_20191102d )
for i in $(seq 0 10); do
wget https://nextcloud.computecanada.ca/index.php/s/"${urls[$i]}"/download -O "${names[$i]}".nc
done
After you download the files, you can check against the provided md5 checksum to see if the download succeeded.
Loading the data in ParaView
ParaView can read NetCDF files natively. Pay attention to the Dimension drop-down menu to navigate to the right subset of input variables.
Since all variables are on a spherical mesh, you might want to use non-default vertical scale and vertical
bias when loading data. Alternatively, you can project any spherical variable to a Cartesian mesh using the
Programmable Filter with Output Type = vtkImageData
, e.g.
ext = inputs[0].GetExtent()
var = inputs[0].PointData["inputName"]
output.SetOrigin(0., 0., 0.)
output.SetSpacing(1., 1., 1.)
output.SetDimensions(ext[1]-ext[0]+1, ext[3]-ext[2]+1, ext[5]-ext[4]+1)
output.SetExtent(ext)
output.AllocateScalars(vtk.VTK_FLOAT, 1)
vtk_data_array = vtk.util.numpy_support.numpy_to_vtk(var, deep=True, array_type=vtk.VTK_FLOAT)
vtk_data_array.SetNumberOfComponents(1)
vtk_data_array.SetName("outputName")
output.GetPointData().SetScalars(vtk_data_array)
To learn more about ParaView’s Programmable Filter, watch our January 2021 webinar.
Loading the data in Python
In Python you can read data into an xarray.Dataset
containing multiple variables, each stored as a NumPy
array:
pip install xarray netcdf4
import xarray as xr
data = xr.open_dataset("/path/to/dp2015090100_20191031d.nc")
print(data) # show all variables inside this dataset
print(data.MPQC.shape) # this is a 24x16x1060x1330 numpy array
print(data.MPQC.values) # access the values
print(data.time) # time steps
print(data.lon.values) # 2D array of longitudes
print(data.lat.values) # 2D array of latitudes
Alternatively, you can use the traditional netCDF4 Python interface:
import netCDF4 as nc
all = nc.Dataset("/path/to/dp2015090100_20191031d.nc", "r")
print(all) # show all variables inside this dataset
print(all.variables['MPQR'][:,:,:]) # this is a 24x16x1060x1330 numpy array
print(all.variables['time'][:]) # time steps
print(all.variables['lon'][:,:]) # 2D array of longitudes
Acknowledgments
Data courtesy of Alejandro Di Luca and François Roberge from l’Université du Québec à Montréal. The simulation was conducted using the Alliance’s Narval cluster.