openmc.Geometry

class openmc.Geometry(root: Optional[Union[UniverseBase, Iterable[Cell]]] = None, merge_surfaces: bool = False, surface_precision: int = 10)[source]

Geometry representing a collection of surfaces, cells, and universes.

Parameters

root (openmc.UniverseBase or Iterable of openmc.Cell, optional) – Root universe which contains all others, or an iterable of cells that should be used to create a root universe.

Variables
  • root_universe (openmc.UniverseBase) – Root universe which contains all others

  • bounding_box (openmc.BoundingBox) – Lower-left and upper-right coordinates of an axis-aligned bounding box of the universe.

  • merge_surfaces (bool) – Whether to remove redundant surfaces when the geometry is exported.

  • surface_precision (int) – Number of decimal places to round to for comparing the coefficients of surfaces for considering them topologically equivalent.

add_volume_information(volume_calc)[source]

Add volume information from a stochastic volume calculation.

Parameters

volume_calc (openmc.VolumeCalculation) – Results from a stochastic volume calculation

clone() Geometry[source]

Create a copy of this geometry with new unique IDs for all of its enclosed materials, surfaces, cells, universes and lattices.

determine_paths(instances_only=False)[source]

Determine paths through CSG tree for cells and materials.

This method recursively traverses the CSG tree to determine each unique path that reaches every cell and material. The paths are stored in the Cell.paths and Material.paths attributes.

Parameters

instances_only (bool, optional) – If true, this method will only determine the number of instances of each cell and material.

export_to_xml(path='geometry.xml', remove_surfs=False)[source]

Export geometry to an XML file.

Parameters
  • path (str) – Path to file to write. Defaults to ‘geometry.xml’.

  • remove_surfs (bool) –

    Whether or not to remove redundant surfaces from the geometry when exporting

    New in version 0.12.

find(point) list[source]

Find cells/universes/lattices which contain a given point

Parameters

point (3-tuple of float) – Cartesian coordinates of the point

Returns

Sequence of universes, cells, and lattices which are traversed to find the given point

Return type

list

classmethod from_xml(path: PathLike = 'geometry.xml', materials: PathLike | 'openmc.Materials' | None = 'materials.xml') Geometry[source]

Generate geometry from XML file

Parameters
  • path (PathLike, optional) – Path to geometry XML file

  • materials (openmc.Materials or PathLike) – Materials used to assign to cells. If PathLike, an attempt is made to generate materials from the provided xml file.

Returns

Geometry object

Return type

openmc.Geometry

classmethod from_xml_element(elem, materials=None) Geometry[source]

Generate geometry from an XML element

Parameters
  • elem (lxml.etree._Element) – XML element

  • materials (openmc.Materials or None) – Materials used to assign to cells. If None, an attempt is made to generate it from the materials.xml file.

Returns

Geometry object

Return type

openmc.Geometry

get_all_cells() dict[int, openmc.cell.Cell][source]

Return all cells in the geometry.

Returns

Dictionary mapping cell IDs to openmc.Cell instances

Return type

dict

get_all_lattices() dict[int, openmc.lattice.Lattice][source]

Return all lattices defined

Returns

Dictionary mapping lattice IDs to openmc.Lattice instances

Return type

dict

get_all_material_cells() dict[int, openmc.cell.Cell][source]

Return all cells filled by a material

Returns

Dictionary mapping cell IDs to openmc.Cell instances that are filled with materials or distributed materials.

Return type

dict

get_all_material_universes() dict[int, openmc.universe.Universe][source]

Return all universes having at least one material-filled cell.

This method can be used to find universes that have at least one cell that is filled with a material or is void.

Returns

Dictionary mapping universe IDs to openmc.Universe instances with at least one material-filled cell

Return type

dict

get_all_materials() dict[int, openmc.material.Material][source]

Return all materials within the geometry.

Returns

Dictionary mapping material IDs to openmc.Material instances

Return type

dict

get_all_nuclides() list[str][source]

Return all nuclides within the geometry.

Returns

Sorted list of all nuclides in materials appearing in the geometry

Return type

list

get_all_surfaces() dict[int, openmc.surface.Surface][source]

Return all surfaces used in the geometry

Returns

Dictionary mapping surface IDs to openmc.Surface instances

Return type

dict

get_all_universes() dict[int, openmc.universe.Universe][source]

Return all universes in the geometry.

Returns

Dictionary mapping universe IDs to openmc.Universe instances

Return type

dict

get_cells_by_fill_name(name, case_sensitive=False, matching=False) list[openmc.cell.Cell][source]

Return a list of cells with fills with matching names.

Parameters
  • name (str) – The name to match

  • case_sensitive (bool) – Whether to distinguish upper and lower case letters in each cell’s name (default is False)

  • matching (bool) – Whether the names must match completely (default is False)

Returns

Cells with fills matching the queried name

Return type

list of openmc.Cell

get_cells_by_name(name, case_sensitive=False, matching=False) list[openmc.cell.Cell][source]

Return a list of cells with matching names.

Parameters
  • name (str) – The name to search match

  • case_sensitive (bool) – Whether to distinguish upper and lower case letters in each cell’s name (default is False)

  • matching (bool) – Whether the names must match completely (default is False)

Returns

Cells matching the queried name

Return type

list of openmc.Cell

get_instances(paths) int | list[int][source]

Return the instance number(s) for a cell/material in a geometry path.

The instance numbers are used as indices into distributed material/temperature arrays and tally distribcell filter arrays.

Parameters

paths (str or iterable of str) – The path traversed through the CSG tree to reach a cell or material instance. For example, ‘u0->c10->l20(2,2,1)->u5->c5’ would indicate the cell instance whose first level is universe 0 and cell 10, second level is lattice 20 position (2,2,1), and third level is universe 5 and cell 5.

Returns

Instance number(s) for the given path(s)

Return type

int or list of int

get_lattices_by_name(name, case_sensitive=False, matching=False) list[openmc.lattice.Lattice][source]

Return a list of lattices with matching names.

Parameters
  • name (str) – The name to match

  • case_sensitive (bool) – Whether to distinguish upper and lower case letters in each lattice’s name (default is False)

  • matching (bool) – Whether the names must match completely (default is False)

Returns

Lattices matching the queried name

Return type

list of openmc.Lattice

get_materials_by_name(name, case_sensitive=False, matching=False) list[openmc.material.Material][source]

Return a list of materials with matching names.

Parameters
  • name (str) – The name to match

  • case_sensitive (bool) – Whether to distinguish upper and lower case letters in each material’s name (default is False)

  • matching (bool) – Whether the names must match completely (default is False)

Returns

Materials matching the queried name

Return type

list of openmc.Material

get_surfaces_by_name(name, case_sensitive=False, matching=False) list[openmc.surface.Surface][source]

Return a list of surfaces with matching names.

New in version 0.13.3.

Parameters
  • name (str) – The name to search match

  • case_sensitive (bool) – Whether to distinguish upper and lower case letters in each surface’s name (default is False)

  • matching (bool) – Whether the names must match completely (default is False)

Returns

Surfaces matching the queried name

Return type

list of openmc.Surface

get_universes_by_name(name, case_sensitive=False, matching=False) list[openmc.universe.Universe][source]

Return a list of universes with matching names.

Parameters
  • name (str) – The name to match

  • case_sensitive (bool) – Whether to distinguish upper and lower case letters in each universe’s name (default is False)

  • matching (bool) – Whether the names must match completely (default is False)

Returns

Universes matching the queried name

Return type

list of openmc.Universe

plot(*args, **kwargs)[source]

Display a slice plot of the geometry.

New in version 0.14.0.

Parameters
  • origin (iterable of float) – Coordinates at the origin of the plot. If left as None then the bounding box center will be used to attempt to ascertain the origin. Defaults to (0, 0, 0) if the bounding box is not finite

  • width (iterable of float) – Width of the plot in each basis direction. If left as none then the bounding box width will be used to attempt to ascertain the plot width. Defaults to (10, 10) if the bounding box is not finite

  • pixels (Iterable of int or int) – If iterable of ints provided, then this directly sets the number of pixels to use in each basis direction. If int provided, then this sets the total number of pixels in the plot and the number of pixels in each basis direction is calculated from this total and the image aspect ratio.

  • basis ({'xy', 'xz', 'yz'}) – The basis directions for the plot

  • color_by ({'cell', 'material'}) – Indicate whether the plot should be colored by cell or by material

  • colors (dict) –

    Assigns colors to specific materials or cells. Keys are instances of Cell or Material and values are RGB 3-tuples, RGBA 4-tuples, or strings indicating SVG color names. Red, green, blue, and alpha should all be floats in the range [0.0, 1.0], for example:

    # Make water blue
    water = openmc.Cell(fill=h2o)
    universe.plot(..., colors={water: (0., 0., 1.))
    

  • seed (int) – Seed for the random number generator

  • openmc_exec (str) – Path to OpenMC executable.

  • axes (matplotlib.Axes) – Axes to draw to

  • legend (bool) – Whether a legend showing material or cell names should be drawn

  • legend_kwargs (dict) – Keyword arguments passed to matplotlib.pyplot.legend().

  • outline (bool) – Whether outlines between color boundaries should be drawn

  • axis_units ({'km', 'm', 'cm', 'mm'}) – Units used on the plot axis

  • **kwargs – Keyword arguments passed to matplotlib.pyplot.imshow()

Returns

Axes containing resulting image

Return type

matplotlib.axes.Axes

remove_redundant_surfaces() dict[int, openmc.surface.Surface][source]

Remove and return all of the redundant surfaces.

Uses surface_precision attribute of Geometry instance for rounding and comparing surface coefficients.

New in version 0.12.

Returns

Dictionary whose keys are the ID of a redundant surface and whose values are the topologically equivalent openmc.Surface that should replace it.

Return type

redundant_surfaces

to_xml_element(remove_surfs=False) Element[source]

Creates a ‘geometry’ element to be written to an XML file.

Parameters

remove_surfs (bool) – Whether or not to remove redundant surfaces from the geometry when exporting