openmc.Material

class openmc.Material(material_id=None, name='', temperature=None)[source]

A material composed of a collection of nuclides/elements.

To create a material, one should create an instance of this class, add nuclides or elements with Material.add_nuclide() or Material.add_element, respectively, and set the total material density with Material.set_density(). The material can then be assigned to a cell using the Cell.fill attribute.

Parameters
  • material_id (int, optional) – Unique identifier for the material. If not specified, an identifier will automatically be assigned.

  • name (str, optional) – Name of the material. If not specified, the name will be the empty string.

  • temperature (float, optional) – Temperature of the material in Kelvin. If not specified, the material inherits the default temperature applied to the model.

Variables
  • id (int) – Unique identifier for the material

  • temperature (float) – Temperature of the material in Kelvin.

  • density (float) – Density of the material (units defined separately)

  • density_units (str) – Units used for density. Can be one of ‘g/cm3’, ‘g/cc’, ‘kg/m3’, ‘atom/b-cm’, ‘atom/cm3’, ‘sum’, or ‘macro’. The ‘macro’ unit only applies in the case of a multi-group calculation.

  • depletable (bool) – Indicate whether the material is depletable.

  • nuclides (list of namedtuple) – List in which each item is a namedtuple consisting of a nuclide string, the percent density, and the percent type (‘ao’ or ‘wo’). The namedtuple has field names name, percent, and percent_type.

  • isotropic (list of str) – Nuclides for which elastic scattering should be treated as though it were isotropic in the laboratory system.

  • average_molar_mass (float) – The average molar mass of nuclides in the material in units of grams per mol. For example, UO2 with 3 nuclides will have an average molar mass of 270 / 3 = 90 g / mol.

  • volume (float) – Volume of the material in cm^3. This can either be set manually or calculated in a stochastic volume calculation and added via the Material.add_volume_information() method.

  • paths (list of str) – The paths traversed through the CSG tree to reach each material instance. This property is initialized by calling the Geometry.determine_paths() method.

  • num_instances (int) – The number of instances of this material throughout the geometry. This property is initialized by calling the Geometry.determine_paths() method.

  • fissionable_mass (float) – Mass of fissionable nuclides in the material in [g]. Requires that the volume attribute is set.

add_element(element, percent, percent_type='ao', enrichment=None, enrichment_target=None, enrichment_type=None)[source]

Add a natural element to the material

Parameters
  • element (str) – Element to add, e.g., ‘Zr’ or ‘Zirconium’

  • percent (float) – Atom or weight percent

  • percent_type ({'ao', 'wo'}, optional) – ‘ao’ for atom percent and ‘wo’ for weight percent. Defaults to atom percent.

  • enrichment (float, optional) – Enrichment of an enrichment_target nuclide in percent (ao or wo). If enrichment_target is not supplied then it is enrichment for U235 in weight percent. For example, input 4.95 for 4.95 weight percent enriched U. Default is None (natural composition).

  • enrichment_target (str, optional) –

    Single nuclide name to enrich from a natural composition (e.g., ‘O16’)

    New in version 0.12.

  • enrichment_type ({'ao', 'wo'}, optional) –

    ‘ao’ for enrichment as atom percent and ‘wo’ for weight percent. Default is: ‘ao’ for two-isotope enrichment; ‘wo’ for U enrichment

    New in version 0.12.

Notes

General enrichment procedure is allowed only for elements composed of two isotopes. If enrichment_target is given without enrichment natural composition is added to the material.

add_elements_from_formula(formula, percent_type='ao', enrichment=None, enrichment_target=None, enrichment_type=None)[source]

Add a elements from a chemical formula to the material.

New in version 0.12.

Parameters
  • formula (str) – Formula to add, e.g., ‘C2O’, ‘C6H12O6’, or (NH4)2SO4. Note this is case sensitive, elements must start with an uppercase character. Multiplier numbers must be integers.

  • percent_type ({'ao', 'wo'}, optional) – ‘ao’ for atom percent and ‘wo’ for weight percent. Defaults to atom percent.

  • enrichment (float, optional) – Enrichment of an enrichment_target nuclide in percent (ao or wo). If enrichment_target is not supplied then it is enrichment for U235 in weight percent. For example, input 4.95 for 4.95 weight percent enriched U. Default is None (natural composition).

  • enrichment_target (str, optional) – Single nuclide name to enrich from a natural composition (e.g., ‘O16’)

  • enrichment_type ({'ao', 'wo'}, optional) – ‘ao’ for enrichment as atom percent and ‘wo’ for weight percent. Default is: ‘ao’ for two-isotope enrichment; ‘wo’ for U enrichment

Notes

General enrichment procedure is allowed only for elements composed of two isotopes. If enrichment_target is given without enrichment natural composition is added to the material.

add_macroscopic(macroscopic)[source]

Add a macroscopic to the material. This will also set the density of the material to 1.0, unless it has been otherwise set, as a default for Macroscopic cross sections.

Parameters

macroscopic (str) – Macroscopic to add

add_nuclide(nuclide, percent, percent_type='ao')[source]

Add a nuclide to the material

Parameters
  • nuclide (str) – Nuclide to add, e.g., ‘Mo95’

  • percent (float) – Atom or weight percent

  • percent_type ({'ao', 'wo'}) – ‘ao’ for atom percent and ‘wo’ for weight percent

add_s_alpha_beta(name, fraction=1.0)[source]

Add an \(S(\alpha,\beta)\) table to the material

Parameters
  • name (str) – Name of the \(S(\alpha,\beta)\) table

  • fraction (float) – The fraction of relevant nuclei that are affected by the \(S(\alpha,\beta)\) table. For example, if the material is a block of carbon that is 60% graphite and 40% amorphous then add a graphite \(S(\alpha,\beta)\) table with fraction=0.6.

add_volume_information(volume_calc)[source]

Add volume information to a material.

Parameters

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

clone(memo=None)[source]

Create a copy of this material with a new unique ID.

Parameters

memo (dict or None) – A nested dictionary of previously cloned objects. This parameter is used internally and should not be specified by the user.

Returns

clone – The clone of this material

Return type

openmc.Material

classmethod from_hdf5(group)[source]

Create material from HDF5 group

Parameters

group (h5py.Group) – Group in HDF5 file

Returns

Material instance

Return type

openmc.Material

classmethod from_xml_element(elem)[source]

Generate material from an XML element

Parameters

elem (xml.etree.ElementTree.Element) – XML element

Returns

Material generated from XML element

Return type

openmc.Material

get_elements()[source]

Returns all elements in the material

New in version 0.12.

Returns

elements – List of element names

Return type

list of str

get_mass(nuclide=None)[source]

Return mass of one or all nuclides.

Note that this method requires that the Material.volume has already been set.

Parameters

nuclides (str, optional) – Nuclide for which mass is desired. If not specified, the density for the entire material is given.

Returns

Mass of the nuclide/material in [g]

Return type

float

get_mass_density(nuclide=None)[source]

Return mass density of one or all nuclides

Parameters

nuclides (str, optional) – Nuclide for which density is desired. If not specified, the density for the entire material is given.

Returns

Density of the nuclide/material in [g/cm^3]

Return type

float

get_nuclide_atom_densities()[source]

Returns all nuclides in the material and their atomic densities in units of atom/b-cm

Returns

nuclides – Dictionary whose keys are nuclide names and values are tuples of (nuclide, density in atom/b-cm)

Return type

dict

get_nuclide_densities()[source]

Returns all nuclides in the material and their densities

Returns

nuclides – Dictionary whose keys are nuclide names and values are 3-tuples of (nuclide, density percent, density percent type)

Return type

dict

get_nuclides()[source]

Returns all nuclides in the material

Returns

nuclides – List of nuclide names

Return type

list of str

classmethod mix_materials(materials, fracs, percent_type='ao', name=None)[source]

Mix materials together based on atom, weight, or volume fractions

New in version 0.12.

Parameters
  • materials (Iterable of openmc.Material) – Materials to combine

  • fracs (Iterable of float) – Fractions of each material to be combined

  • percent_type ({'ao', 'wo', 'vo'}) – Type of percentage, must be one of ‘ao’, ‘wo’, or ‘vo’, to signify atom percent (molar percent), weight percent, or volume percent, optional. Defaults to ‘ao’

  • name (str) – The name for the new material, optional. Defaults to concatenated names of input materials with percentages indicated inside parentheses.

Returns

Mixture of the materials

Return type

openmc.Material

remove_macroscopic(macroscopic)[source]

Remove a macroscopic from the material

Parameters

macroscopic (str) – Macroscopic to remove

remove_nuclide(nuclide)[source]

Remove a nuclide from the material

Parameters

nuclide (str) – Nuclide to remove

set_density(units, density=None)[source]

Set the density of the material

Parameters
  • units ({'g/cm3', 'g/cc', 'kg/m3', 'atom/b-cm', 'atom/cm3', 'sum', 'macro'}) – Physical units of density.

  • density (float, optional) – Value of the density. Must be specified unless units is given as ‘sum’.

to_xml_element()[source]

Return XML representation of the material

Returns

element – XML element containing material data

Return type

xml.etree.ElementTree.Element