An octree grid.
To initialize an Octree object, use:
>>> grid = OctreeGrid(x, y, z, dx, dy, dz, refined)
where x, y, and z are the cartesian coordinates of the center of the grid, dx, dy, and dz are the half-widths of the grid, and refined is a sequence of boolean values that indicate whether a given cell is refined.
The first value of the refined sequence indicates whether the parent cell is sub-divided. If it is, then the the second element indicates whether the first cell of the parent cell is sub-divided. If it isn’t, then the next value indicates whether the second cell of the parent cell is sub-divided. If it is, then we need to specify the booleans for all the children of that cell before we move to the third cell of the parent cell.
For example, the simplest grid is a single cell that is not sub-divided:
refined = [False]
The next simplest grid is a single grid cell that is only sub-divided once:
refined = [True, False, False, False, False, False, False, False, False]
It is easier to picture this as a hierarchy:
refined = [True,
False,
False,
False,
False,
False,
False,
False,
False,
]
If we sub-divide the third sub-cell in the parent cell into cells that are themselves not sub-divided, we get:
refined = [True,
False,
False,
True,
False,
False,
False,
False,
False,
False,
False,
False,
False,
False,
False,
False,
False,
]
and so on. The order of the sub-cells is first along x, then along y, then along z.
OctreeGrid objects may contain multiple quantities (e.g. density, specific energy). To access these, you can specify the name of the quantity as an item:
>>> grid['density']
which is no longer an OctreeGrid object, but a OctreeGridView object. When setting this for the first time, this can be set either to another OctreeGridView object, an external h5py link, or an empty list. For example, the following should work:
>>> grid['density_new'] = grid['density']
OctreeGridView objects allow the specific dust population to be selected as an index:
>>> grid['density'][0]
Which is also an OctreeGridView object.
Methods
set_walls(x, y, z, dx, dy, dz, refined) | |
read(group[, quantities]) | Read the geometry and physical quantities from an octree grid |
read_geometry(group) | Read in geometry information from a cartesian grid |
read_quantities(group[, quantities]) | Read in physical quantities from a cartesian grid |
write(group[, quantities, copy, ...]) | Write out the octree grid |
write_single_array(group, name, array[, ...]) | Write out a single quantity, checking for consistency with geometry |
add_derived_quantity(name, function) |
Methods (detail)
Read the geometry and physical quantities from an octree grid
Parameters : | group : h5py.Group
quantities : ‘all’ or list
|
---|
Read in geometry information from a cartesian grid
Parameters : | group : h5py.Group
|
---|
Read in physical quantities from a cartesian grid
Parameters : | group : h5py.Group
quantities : ‘all’ or list
|
---|
Write out the octree grid
Parameters : | group : h5py.Group
quantities : ‘all’ or list
copy : bool
absolute_paths : bool
compression : bool
wall_dtype : type
physics_dtype : type
|
---|
Write out a single quantity, checking for consistency with geometry
Parameters : | group : h5py.Group
name : str
array : np.ndarray
copy : bool
absolute_paths : bool
compression : bool
wall_dtype : type
physics_dtype : type
|
---|
Methods
append(grid) | Used to append quantities from another grid |
add(grid) | Used to add quantities from another grid |
Methods (detail)
Used to append quantities from another grid
Parameters : | grid : 1D Numpy array or OctreeGridView instance
|
---|
Used to add quantities from another grid
Parameters : | grid : 1D Numpy array or OctreeGridView instance
|
---|