Skip to main content

SciVis Contest 2021


The dataset consists of a time series (251 steps) of 3D scalar fields on a spherical 180x201x360 grid covering 500 Myr of geological time. Each time step is 2 Myrs, and the fields are:

  • temperature [degrees K],
  • three Cartesian velocity components [m/s],
  • thermal conductivity [Watt/m/K],
  • thermal expansivity [1/K],
  • temperature anomaly [degrees K], and
  • (spin transition-induced) density anomaly [kg/m^3].

The simulation was performed in double precision, however, to reduce downloading time, we provide the data in single precision. Each file was saved in a NetCDF Climate and Forecast (CF) convention format, with each 3D scalar field being a function of latitude [degrees north], longitude [degrees east], and radius [km]. The model’s inner and outer radii are 3485 km and 6371 km, respectively.


Accessing the Dataset

The 251 steps are grouped into 25 gzipped tar files mantle{01..25}.tgz – see the table below. To start working on the project, you can download only mantle01.tgz, but for a production-quality animation you will need all 25 files.

File Timestep range Size MD5 checksum
mantle01.tgz 001..010 3.2GB 6aa435a58ac9487f48291c363eccde6e
mantle02.tgz 011..020 3.2GB dbc46f9cffb665a5bccfc95a4a864079
mantle03.tgz 021..030 3.2GB cffe250d3388bbd317a44eda88ccf0df
mantle04.tgz 031..040 3.2GB 84979f5daf4470eb81b9cbdb0c981fa6
mantle05.tgz 041..050 3.2GB 4dce2df4da2a7ef4b5b174b5a49af4d0
mantle06.tgz 051..060 3.2GB 97bd7e2ae99b49ac1732ced3b20ba77d
mantle07.tgz 061..070 3.2GB 5a4fab7180456d99fbb19175a05ea3b1
mantle08.tgz 071..080 3.2GB 4caaea5992f66e391535e079575e29f6
mantle09.tgz 081..090 3.2GB e282bbd474529a858ddddb627204f88f
mantle10.tgz 091..100 3.2GB 1899ecec0756540957f2d18094c39948
mantle11.tgz 101..110 3.2GB daaac28e6989f68bd4bff4117a2645d5
mantle12.tgz 111..120 3.2GB e335c9fed2448ca7bfc24a01a78759e6
mantle13.tgz 121..130 3.2GB 01a85d3402c89d964b9158ca6bc6665d
mantle14.tgz 131..140 3.2GB c1195cd3ba48b17874507f5f03ed0dd5
mantle15.tgz 141..150 3.2GB 8c25f1996c5eaf5ac0a50114170cd436
mantle16.tgz 151..160 3.2GB 5659e592a8dbbc7d6d3f6ebc10a1e3c0
mantle17.tgz 161..170 3.2GB e59fccb6cabb87e232f30a6c7ce2cbbb
mantle18.tgz 171..180 3.2GB 38a0007cf2676e64eac91ec9c9f3034c
mantle19.tgz 181..190 3.2GB 8ee1cf466264303d5822aede27477151
mantle20.tgz 191..200 3.2GB 9c6163d659ebac7d9d8f72b6592a3994
mantle21.tgz 201..210 3.2GB fabba593dd5274d98aa9c48d5fea701a
mantle22.tgz 211..220 3.2GB 8e4ce089409629c7f5122c1c6f19d6db
mantle23.tgz 221..230 3.2GB a78d3fd385baf8c1ec78eda7b69a2394
mantle24.tgz 231..240 3.2GB d551765802f1aa9b399763beadf8f44e
mantle25.tgz 241..251 3.5GB eff0d9d0b62522559a53a4eb11aea579

To download all files in bash command line:

urls=( edS6be3sk8oQ58N infBBW2Rc9TJwf7 76Esj3yDP9EiaGc AZmt47d48prCZZF
       9fZ4A7ENGR6sQrc B8HC3H4oqwcsWB3 t3zLJWWeirR5zmG YmkYgxM7xxrNAwj
       rMma6W9MBtQH9LX MzcZBCaxaojTZJx dfP6NXHmekQQrHR 2GnLRgPi8W2Dt5p
       MqtoESg2d9DsF2P ysGoJK6B3pLYaDB Ae32XwCpt7bHo9D AysWSPnxFS6e5B2
       4NcnJkPYWpkXrmb mBRfrnfEEEaKJ9m J63KxeCppK8ssGc NeqnHBNPWx4PRwd
       JdzZQCKiHaRfL9L DXnWtA5fymHBsxA HzgtF42Pf9AnxGm yy8FASeC8Dm54Sy
       TC8QekmjokmBkWA )
for i in $(seq 0 24); do
    wget"${urls[$i]}"/download -O mantle"$(printf "%02d\n" $((i+1)))".tgz

Loading the Data in ParaView

The dataset can be read directly in ParaView (tested in 5.5 and 5.8), both as single files and as a time series.

The 3D velocity vector can be assembled via the Calculator filter

velocity = (iHat*vx + jHat*vy + kHat*vz) * 1e9

where we recommend to change the scaling to [nm/s] to avoid dealing with very small numbers.

Loading the Data in Python

In Python you can read each time step into an xarray.Dataset containing multiple variables:

import xarray as xr
data = xr.open_dataset('')
print(data)                         # show all variables inside this dataset
print(data.temperature.values)      # this is a 180x201x360 numpy array
print(data.r)                       # radial discretization

Alternatively, you can use the traditional netCDF4 Python interface:

import netCDF4 as nc
all = nc.Dataset('', 'r')
print(all)                                   # show all variables inside this dataset
print(all.variables['temperature'][:,:,:])   # this is a 180x201x360 numpy array
print(all.variables['r'][:])                 # radial discretization


Data courtesy of the Pysklywec Lab (Russell Pysklywec and Hosein Shahnas) at the University of Toronto. The simulation was conducted using Compute Canada’s Niagara cluster.