# 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. 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_taget nuclide in percent (ao or wo). If enrichment_taget 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. clone – The clone of this material openmc.Material
classmethod from_hdf5(group)[source]

Create material from HDF5 group

Parameters: group (h5py.Group) – Group in HDF5 file Material instance openmc.Material
classmethod from_xml_element(elem)[source]

Generate material from an XML element

Parameters: elem (xml.etree.ElementTree.Element) – XML element Material generated from XML element openmc.Material
get_elements()[source]

Returns all elements in the material

New in version 0.12.

Returns: elements – List of element names 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. Mass of the nuclide/material in [g] 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. Density of the nuclide/material in [g/cm^3] 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) 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) dict
get_nuclides()[source]

Returns all nuclides in the material

Returns: nuclides – List of nuclide names 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. Mixture of the materials 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(cross_sections=None)[source]

Return XML representation of the material

Parameters: cross_sections (str) – Path to an XML cross sections listing file element – XML element containing material data xml.etree.ElementTree.Element