# Python API¶

OpenMC includes a rich Python API that enables programmatic pre- and post-processing. The easiest way to begin using the API is to take a look at the example Jupyter notebooks provided. However, this assumes that you are already familiar with Python and common third-party packages such as NumPy. If you have never programmed in Python before, there are many good tutorials available online. We recommend going through the modules from Codecademy and/or the Scipy lectures. The full API documentation serves to provide more information on a given module or class.

## Example Jupyter Notebooks¶

`openmc`

– Basic Functionality¶

### Handling nuclear data¶

#### Classes¶

`openmc.XSdata` |
A multi-group cross section data set providing all the multi-group data necessary for a multi-group OpenMC calculation. |

`openmc.MGXSLibrary` |
Multi-Group Cross Sections file used for an OpenMC simulation. |

#### Functions¶

`openmc.ace.ascii_to_binary` |
Convert an ACE file in ASCII format (type 1) to binary format (type 2). |

### Simulation Settings¶

`openmc.Source` |
Distribution of phase space coordinates for source sites. |

`openmc.ResonanceScattering` |
Specification of the elastic scattering model for resonant isotopes |

`openmc.Settings` |
Settings file used for an OpenMC simulation. |

### Material Specification¶

`openmc.Nuclide` |
A nuclide that can be used in a material. |

`openmc.Element` |
A natural element used in a material via <element>. |

`openmc.Macroscopic` |
A Macroscopic object that can be used in a material. |

`openmc.Material` |
A material composed of a collection of nuclides/elements that can be assigned to a region of space. |

`openmc.Materials` |
Collection of Materials used for an OpenMC simulation. |

### Building geometry¶

`openmc.Plane` |
An arbitrary plane of the form \(Ax + By + Cz = D\). |

`openmc.XPlane` |
A plane perpendicular to the x axis of the form \(x - x_0 = 0\) |

`openmc.YPlane` |
A plane perpendicular to the y axis of the form \(y - y_0 = 0\) |

`openmc.ZPlane` |
A plane perpendicular to the z axis of the form \(z - z_0 = 0\) |

`openmc.XCylinder` |
An infinite cylinder whose length is parallel to the x-axis of the form \((y - y_0)^2 + (z - z_0)^2 = R^2\). |

`openmc.YCylinder` |
An infinite cylinder whose length is parallel to the y-axis of the form \((x - x_0)^2 + (z - z_0)^2 = R^2\). |

`openmc.ZCylinder` |
An infinite cylinder whose length is parallel to the z-axis of the form \((x - x_0)^2 + (y - y_0)^2 = R^2\). |

`openmc.Sphere` |
A sphere of the form \((x - x_0)^2 + (y - y_0)^2 + (z - z_0)^2 = R^2\). |

`openmc.Cone` |
A conical surface parallel to the x-, y-, or z-axis. |

`openmc.XCone` |
A cone parallel to the x-axis of the form \((y - y_0)^2 + (z - z_0)^2 = R^2 (x - x_0)^2\). |

`openmc.YCone` |
A cone parallel to the y-axis of the form \((x - x_0)^2 + (z - z_0)^2 = R^2 (y - y_0)^2\). |

`openmc.ZCone` |
A cone parallel to the x-axis of the form \((x - x_0)^2 + (y - y_0)^2 = R^2 (z - z_0)^2\). |

`openmc.Quadric` |
A surface of the form \(Ax^2 + By^2 + Cz^2 + Dxy + Eyz + Fxz + Gx + Hy + Jz + K = 0\). |

`openmc.Halfspace` |
A positive or negative half-space region. |

`openmc.Intersection` |
Intersection of two or more regions. |

`openmc.Union` |
Union of two or more regions. |

`openmc.Complement` |
Complement of a region. |

`openmc.Cell` |
A region of space defined as the intersection of half-space created by quadric surfaces. |

`openmc.Universe` |
A collection of cells that can be repeated. |

`openmc.RectLattice` |
A lattice consisting of rectangular prisms. |

`openmc.HexLattice` |
A lattice consisting of hexagonal prisms. |

`openmc.Geometry` |
Geometry representing a collection of surfaces, cells, and universes. |

Many of the above classes are derived from several abstract classes:

`openmc.Surface` |
An implicit surface with an associated boundary condition. |

`openmc.Region` |
Region of space that can be assigned to a cell. |

`openmc.Lattice` |
A repeating structure wherein each element is a universe. |

One function is also available to create a hexagonal region defined by the intersection of six surface half-spaces.

`openmc.make_hexagon_region` |
Create a hexagon region from six surface planes. |

### Constructing Tallies¶

`openmc.Filter` |
A filter used to constrain a tally to a specific criterion, e.g. |

`openmc.Mesh` |
A structured Cartesian mesh in two or three dimensions |

`openmc.Trigger` |
A criterion for when to finish a simulation based on tally uncertainties. |

`openmc.Tally` |
A tally defined by a set of scores that are accumulated for a list of nuclides given a set of filters. |

`openmc.Tallies` |
Collection of Tallies used for an OpenMC simulation. |

### Coarse Mesh Finite Difference Acceleration¶

`openmc.CMFDMesh` |
A structured Cartesian mesh used for Coarse Mesh Finite Difference (CMFD) acceleration. |

`openmc.CMFD` |
Parameters that control the use of coarse-mesh finite difference acceleration in OpenMC. |

### Plotting¶

`openmc.Plot` |
Definition of a finite region of space to be plotted, either as a slice plot in two dimensions or as a voxel plot in three dimensions. |

`openmc.Plots` |
Collection of Plots used for an OpenMC simulation. |

### Running OpenMC¶

`openmc.run` |
Run an OpenMC simulation. |

`openmc.plot_geometry` |
Run OpenMC in plotting mode |

### Post-processing¶

`openmc.Particle` |
Information used to restart a specific particle that caused a simulation to fail. |

`openmc.StatePoint` |
State information on a simulation at a certain point in time (at the end of a given batch). |

`openmc.Summary` |
Information summarizing the geometry, materials, and tallies used in a simulation. |

Various classes may be created when performing tally slicing and/or arithmetic:

`openmc.arithmetic.CrossScore` |
A special-purpose tally score used to encapsulate all combinations of two tally’s scores as an outer product for tally arithmetic. |

`openmc.arithmetic.CrossNuclide` |
A special-purpose nuclide used to encapsulate all combinations of two tally’s nuclides as an outer product for tally arithmetic. |

`openmc.arithmetic.CrossFilter` |
A special-purpose filter used to encapsulate all combinations of two tally’s filter bins as an outer product for tally arithmetic. |

`openmc.arithmetic.AggregateScore` |
A special-purpose tally score used to encapsulate an aggregate of a subset or all of tally’s scores for tally aggregation. |

`openmc.arithmetic.AggregateNuclide` |
A special-purpose tally nuclide used to encapsulate an aggregate of a subset or all of tally’s nuclides for tally aggregation. |

`openmc.arithmetic.AggregateFilter` |
A special-purpose tally filter used to encapsulate an aggregate of a subset or all of a tally filter’s bins for tally aggregation. |

`openmc.stats`

– Statistics¶

### Univariate Probability Distributions¶

`openmc.stats.Univariate` |
Probability distribution of a single random variable. |

`openmc.stats.Discrete` |
Distribution characterized by a probability mass function. |

`openmc.stats.Uniform` |
Distribution with constant probability over a finite interval [a,b] |

`openmc.stats.Maxwell` |
Maxwellian distribution in energy. |

`openmc.stats.Watt` |
Watt fission energy spectrum. |

`openmc.stats.Tabular` |
Piecewise continuous probability distribution. |

### Angular Distributions¶

`openmc.stats.UnitSphere` |
Distribution of points on the unit sphere. |

`openmc.stats.PolarAzimuthal` |
Angular distribution represented by polar and azimuthal angles |

`openmc.stats.Isotropic` |
Isotropic angular distribution. |

`openmc.stats.Monodirectional` |
Monodirectional angular distribution. |

### Spatial Distributions¶

`openmc.stats.Spatial` |
Distribution of locations in three-dimensional Euclidean space. |

`openmc.stats.CartesianIndependent` |
Spatial distribution with independent x, y, and z distributions. |

`openmc.stats.Box` |
Uniform distribution of coordinates in a rectangular cuboid. |

`openmc.stats.Point` |
Delta function in three dimensions. |

`openmc.mgxs`

– Multi-Group Cross Section Generation¶

### Energy Groups¶

`openmc.mgxs.EnergyGroups` |
An energy groups structure used for multi-group cross-sections. |

### Multi-group Cross Sections¶

`openmc.mgxs.MGXS` |
An abstract multi-group cross section for some energy group structure within some spatial domain. |

`openmc.mgxs.AbsorptionXS` |
An absorption multi-group cross section. |

`openmc.mgxs.CaptureXS` |
A capture multi-group cross section. |

`openmc.mgxs.Chi` |
The fission spectrum. |

`openmc.mgxs.FissionXS` |
A fission multi-group cross section. |

`openmc.mgxs.KappaFissionXS` |
A recoverable fission energy production rate multi-group cross section. |

`openmc.mgxs.MultiplicityMatrixXS` |
The scattering multiplicity matrix. |

`openmc.mgxs.NuFissionXS` |
A fission neutron production multi-group cross section. |

`openmc.mgxs.NuFissionMatrixXS` |
A fission production matrix multi-group cross section. |

`openmc.mgxs.NuScatterXS` |
A scattering neutron production multi-group cross section. |

`openmc.mgxs.NuScatterMatrixXS` |
A scattering production matrix multi-group cross section for one or more Legendre moments. |

`openmc.mgxs.ScatterXS` |
A scattering multi-group cross section. |

`openmc.mgxs.ScatterMatrixXS` |
A scattering matrix multi-group cross section for one or more Legendre moments. |

`openmc.mgxs.TotalXS` |
A total multi-group cross section. |

`openmc.mgxs.TransportXS` |
A transport-corrected total multi-group cross section. |

### Multi-group Cross Section Libraries¶

`openmc.mgxs.Library` |
A multi-group cross section library for some energy group structure. |

`openmc.model`

– Model Building¶

### TRISO Fuel Modeling¶

#### Classes¶

`openmc.model.TRISO` |
Tristructural-isotopic (TRISO) micro fuel particle |

#### Functions¶

`openmc.model.create_triso_lattice` |
Create a lattice containing TRISO particles for optimized tracking. |