Astrophysics Example 1
+In this example we will use BoxKit to work with three dimensional +astrophysics data. After performing the required installation steps we +are read to import BoxKit into Python environment
+import boxkit
+Next we read and parse dataset information from a HDF5 file,
+25m_3d_32km_hdf5_plt_cnt_1000, that contains Flash-X simulation
+output
dset = boxkit.read_dataset("25m_3d_32km_hdf5_plt_cnt_1000", source="flash")
+We can probe into the information for this dataset by using a simple +print statement
+print(dset)
+Dataset:
+ - type : <class 'boxkit.library._dataset.Dataset'>
+ - file : <HDF5 file "25m_3d_32km_hdf5_plt_cnt_1000" (mode r)>
+ - keys : ['dens', 'temp', 'velx', 'vely', 'ye ', 'fe54', 'fe56', 'o16 ', 'si28', 'entr', 'enuc', 'cr48', 'cr56', 'fe52', 'ni56', 'pres', 'c12 ', 's32 ', 'gpot', 'gamc', 'dtbn', 'velz']
+ - dtype : [<class 'h5pickle.Dataset'>, <class 'h5pickle.Dataset'>, <class 'h5pickle.Dataset'>, <class 'h5pickle.Dataset'>, <class 'h5pickle.Dataset'>, <class 'h5pickle.Dataset'>, <class 'h5pickle.Dataset'>, <class 'h5pickle.Dataset'>, <class 'h5pickle.Dataset'>, <class 'h5pickle.Dataset'>, <class 'h5pickle.Dataset'>, <class 'h5pickle.Dataset'>, <class 'h5pickle.Dataset'>, <class 'h5pickle.Dataset'>, <class 'h5pickle.Dataset'>, <class 'h5pickle.Dataset'>, <class 'h5pickle.Dataset'>, <class 'h5pickle.Dataset'>, <class 'h5pickle.Dataset'>, <class 'h5pickle.Dataset'>, <class 'h5pickle.Dataset'>, <class 'h5pickle.Dataset'>]
+ - bound(z-y-x) : [-10000000000.0, 10000000000.0] x [-10000000000.0, 10000000000.0] x [-10000000000.0, 10000000000.0]
+ - shape(z-y-x) : 8 x 8 x 8
+ - guard(z-y-x) : 0 x 0 x 0
+ - nblocks : 90200
+ - dtype : {'dens': <class 'h5pickle.Dataset'>, 'temp': <class 'h5pickle.Dataset'>, 'velx': <class 'h5pickle.Dataset'>, 'vely': <class 'h5pickle.Dataset'>, 'ye ': <class 'h5pickle.Dataset'>, 'fe54': <class 'h5pickle.Dataset'>, 'fe56': <class 'h5pickle.Dataset'>, 'o16 ': <class 'h5pickle.Dataset'>, 'si28': <class 'h5pickle.Dataset'>, 'entr': <class 'h5pickle.Dataset'>, 'enuc': <class 'h5pickle.Dataset'>, 'cr48': <class 'h5pickle.Dataset'>, 'cr56': <class 'h5pickle.Dataset'>, 'fe52': <class 'h5pickle.Dataset'>, 'ni56': <class 'h5pickle.Dataset'>, 'pres': <class 'h5pickle.Dataset'>, 'c12 ': <class 'h5pickle.Dataset'>, 's32 ': <class 'h5pickle.Dataset'>, 'gpot': <class 'h5pickle.Dataset'>, 'gamc': <class 'h5pickle.Dataset'>, 'dtbn': <class 'h5pickle.Dataset'>, 'velz': <class 'h5pickle.Dataset'>}
+The dataset contains 90200 blocks each of size 8x8x8, along with
+variables listed in keys. We can now use this dataset to create a
+slice at location y = 0.1
yloc = 0.1
+dset_slice = boxkit.create_slice(dset, ymin=yloc, ymax=yloc)
+print(dset_slice)
+Region:
+ - type : <class 'boxkit.library._slice.Slice'>
+ - bound (z-y-x) : [-10000000000.0, 10000000000.0] x [0.0, 1666666624.0] x [-10000000000.0, 10000000000.0]
+Now we can loop over blocks in this slice and extract data from right +indices
+# import required libraries
+import numpy
+import matplotlib.pyplot as pyplot
+
+# create a pyplot figure object
+pyplot.figure()
+
+# Name of the contour variable
+cvar = "temp"
+
+# Initialize min/max values
+min_cval = 1e10
+max_cval = -1e10
+
+# loop over blocks for blocklist included in the slice
+for block in dset_slice.blocklist:
+
+ # Get y-index closest to the probe location
+ yindex = (numpy.abs(block.yrange("center") - yloc)).argmin()
+
+ # Create a mesh grid in x-z plane
+ xmesh, zmesh = numpy.meshgrid(block.xrange("center"), block.yrange("center"))
+
+ # plot contour
+ pyplot.contourf(xmesh,zmesh,block[cvar][:,yindex,:])
+
+ min_cval = min(numpy.min(block[cvar][:,yindex,:]), min_cval)
+ max_cval = max(numpy.max(block[cvar][:,yindex,:]), max_cval)
+
+#pyplot.colorbar()
+#pyplot.clim(min_cval,max_cval)
+
+
+
+
+
+
+
+