mcdc.NeutronMultigroupData#
- class mcdc.NeutronMultigroupData(capture: ArrayLike | None = None, scatter: ArrayLike | None = None, fission: ArrayLike | None = None, nu_s: ArrayLike | None = None, nu_p: ArrayLike | None = None, nu_d: ArrayLike | None = None, chi_p: ArrayLike | None = None, chi_d: ArrayLike | None = None, speed: ArrayLike | None = None, decay_rate: ArrayLike | None = None, energy_grid: ArrayLike | None = None, energy_representation: str | int = 'midpoint')#
Groupwise macroscopic interaction data for neutron multigroup transport.
Neutron multigroup transport represents neutron energy with discrete groups and describes interactions using groupwise cross sections, production spectra, speeds, and delayed-precursor data. For a multigroup-only material,
mcdc.Material.multigroup()provides the convenient entry point. ConstructNeutronMultigroupDatadirectly when a material needs an explicit physical energy grid, including when attaching it alongside a native composition.- Parameters:
capture (array_like of float, optional) – Macroscopic capture cross section in
cm^-1for each incoming energy group, with shape(G,).scatter (array_like of float, optional) – Macroscopic scattering-production matrix in
cm^-1with shape(G, G), indexed asscatter[g_out, g_in]. Column sums define the scattering cross section for each incoming group. Columns are normalized internally to form the scattering spectrum.fission (array_like of float, optional) – Macroscopic fission cross section in
cm^-1for each incoming energy group, with shape(G,). Supplying fission requires at least one ofnu_pornu_d.nu_s (array_like of float, optional) – Mean number of neutrons produced per scattering event in each incoming group, with shape
(G,). Defaults to one.nu_p (array_like of float, optional) – Mean prompt-fission yield for each incoming group, with shape
(G,).nu_d (array_like of float, optional) – Mean delayed-fission yield with shape
(J, G), indexed asnu_d[j, g_in]. Its first dimension determines the numberJof delayed precursor groups.chi_p (array_like of float, optional) – Prompt-fission spectrum. Shape
(G,)applies one outgoing spectrum to every incoming group. Shape(G, G)is indexed aschi_p[g_out, g_in]. Required whennu_pis supplied andG > 1.chi_d (array_like of float, optional) – Delayed-fission spectrum with shape
(G, J), indexed aschi_d[g_out, j]. Required whennu_dis supplied andG > 1.speed (array_like of float, optional) – Neutron speed in cm/s for each energy group, with shape
(G,). Defaults to one.decay_rate (array_like of float, optional) – Decay constant in
s^-1for each delayed precursor group, with shape(J,). Defaults to infinity.energy_grid (array_like of float, optional) – Physical energy-group boundaries in eV with shape
(G + 1,). User-supplied boundaries must be strictly increasing, and groupgspansenergy_grid[g] <= E < energy_grid[g + 1]. The default is a zero-valued placeholder used only when physical energy mapping is not required.energy_representation (str or int, optional) – Policy used to reconstruct continuous energy from a group when a physical energy grid participates in transport.
"midpoint"uses the arithmetic midpoint,"log_midpoint"uses the geometric midpoint,"uniform"samples uniformly in energy, and"log_uniform"samples uniformly in log-energy. The default is"midpoint". Only the default"midpoint"placeholder is accepted whenenergy_gridis omitted. Logarithmic policies require positive boundaries. The correspondingNEUTRON_MULTIGROUP_ENERGY_*integer constants are also accepted.
Notes
Gis inferred fromcapture,scatter, orfission. An explicit energy grid is required whenever simulation transport needs to map continuous neutron energy to material-local groups.Examples
Construct one-group data with capture, scattering, and prompt fission:
>>> import mcdc >>> import numpy as np >>> neutron_multigroup = mcdc.NeutronMultigroupData( ... capture=np.array([1.0 / 3.0]), ... scatter=np.array([[1.0 / 3.0]]), ... fission=np.array([1.0 / 3.0]), ... nu_p=np.array([2.3]), ... energy_grid=np.array([1.0e-5, 20.0e6]), ... )
Construct data with two energy groups. Scattering is indexed by outgoing then incoming group:
>>> two_group = mcdc.NeutronMultigroupData( ... capture=np.array([0.1, 0.2]), ... scatter=np.array([ ... [1.0, 2.0], ... [3.0, 0.0], ... ]), ... nu_s=np.array([1.1, 1.2]), ... energy_grid=np.array([1.0e-5, 1.0, 20.0e6]), ... )
Construct two-group fission data with two delayed precursor groups. The delayed yield is indexed by precursor then incoming energy group, while the delayed spectrum is indexed by outgoing energy then precursor group:
>>> multiple_precursors = mcdc.NeutronMultigroupData( ... fission=np.array([0.2, 0.3]), ... nu_d=np.array([ ... [0.1, 0.2], ... [0.3, 0.4], ... ]), ... chi_d=np.array([ ... [1.0, 3.0], ... [3.0, 1.0], ... ]), ... decay_rate=np.array([0.01, 0.02]), ... )