Table Of Contents

Previous topic

Extracting SEDs and Images

Next topic

Tutorials

This Page

Extracting physical quantities

As described in Radiative transfer settings, it is possible to specify which gridded physical quantities should be output after the radiative transfer. For example, by default, the values of the specific energy absorbed in each cell are output, and this can be used to determine the temperature in each cell.

To access these gridded physical quantities, first access the model output file with:

from hyperion.model import ModelOutput
m = ModelOutput('output_file.rtout')

then make use of the get_quantities method to extract a grid object:

grid = m.get_quantities()

By default, this will extract the physical quantities from the last iteration, but it is also possible to extract quantities from previous iterations, e.g.:

grid = m.get_quantities(iteration=1)

The value of iteration should be zero-based, so 1 indicates the second iteration.

The grid variable now contains both the geometrical information about the grid, and the quantities output in the iteration specified. How this information is accessed depends on the grid type, as described below.

Regular 3-d grids

For regular 3-d grids, the position of the center of the cells can be accessed with the x, y, and z attributes for cartesian grids, the w, z, and p attributes for cylindrical polar grids, and the r, t, and p attributes for spherical polar grids. These are 1-d arrays, but it is also possible to retrieve 3-d versions of these arrays by adding g in front, e.g. gx, gy, and gz. It is also possible to retrieve the original wall positions by adding the _wall suffix to the 1-d array names, e.g. x_wall, y_wall, and z_wall.

The physical quantities are stored in a dictionary called quantities, where each element in the dictionary is a quantity, and each quantity is stored as a list with as many elements as dust types. Each element is a 3-d Numpy array. Therefore, you can access for example the specific_energy values for the first dust type with:

values = g.quantities['specific_energy'][0]

However, it is also possible to access this with a more convenient notation:

values = g['specific_energy'][0].array

Although the temperature values are not ever directly present in the output file, if the specific energy values are present, get_quantities will automatically calculate and make available the temperature quantity which can be accessed as above with:

values = g['temperature'][0].array

In Visualizing physical quantities for regular 3-d grids, we show how to visualize this information.

AMR grids

When extracting an AMR grid using get_quantities(), an AMRGrid object is returned. This object contains an attribute named levels that is a list of Level objects. Each Level object contains a grids attribute that is a list of Grid objects, which in turn have attributes xmin, xmax, ymin, ymax, zmin, zmax, nx, ny, and nz which give the boundaries and number of cells in each direction in the grid (this format is described in more detail in AMR Grids).

Since this is not easy to visualize, Hyperion includes an interface to the yt package for AMR grids. If you extracted the quantities with:

amr = m.get_quantities()

you can call the following method to output a StreamStaticOutput yt object that can be directly used for plotting in yt:

pf = amr.to_yt()

where pf is a yt StaticOutput object. See Visualizing physical quantities from adaptive grids with yt for more details and a plotting tutorial.

Octree grids

When extracting an Octree grid using get_quantities(), an OctreeGrid object is returned. The format of this object is described in detail in Octree Grids.

As for AMR grids, Hyperion includes an interface to the yt package for Octree grids. If you extracted the quantities with:

oct = m.get_quantities()

you can call the following method to output a StreamStaticOutput yt object that can be directly used for plotting in yt:

pf = oct.to_yt()

where pf is a yt StaticOutput object. See Visualizing physical quantities from adaptive grids with yt for more details and a plotting tutorial.