mirror of
https://github.com/openmc-dev/openmc.git
synced 2026-07-28 22:26:08 -04:00
Merge pull request #771 from samuelshaner/decay-rate-tracklength
Track length estimator for decay rate tally and other fixes
This commit is contained in:
commit
580f081795
27 changed files with 644 additions and 338 deletions
|
|
@ -15,21 +15,16 @@ particles = 10000
|
|||
# Exporting to OpenMC materials.xml file
|
||||
###############################################################################
|
||||
|
||||
# Instantiate some Nuclides
|
||||
h1 = openmc.Nuclide('H1')
|
||||
o16 = openmc.Nuclide('O16')
|
||||
u235 = openmc.Nuclide('U235')
|
||||
|
||||
# Instantiate some Materials and register the appropriate Nuclides
|
||||
moderator = openmc.Material(material_id=41, name='moderator')
|
||||
moderator.set_density('g/cc', 1.0)
|
||||
moderator.add_nuclide(h1, 2.)
|
||||
moderator.add_nuclide(o16, 1.)
|
||||
moderator.add_element('H', 2.)
|
||||
moderator.add_element('O', 1.)
|
||||
moderator.add_s_alpha_beta('c_H_in_H2O')
|
||||
|
||||
fuel = openmc.Material(material_id=40, name='fuel')
|
||||
fuel.set_density('g/cc', 4.5)
|
||||
fuel.add_nuclide(u235, 1.)
|
||||
fuel.add_nuclide('U235', 1.)
|
||||
|
||||
# Instantiate a Materials collection and export to XML
|
||||
materials_file = openmc.Materials([moderator, fuel])
|
||||
|
|
|
|||
|
|
@ -15,25 +15,19 @@ particles = 10000
|
|||
# Exporting to OpenMC materials.xml File
|
||||
###############################################################################
|
||||
|
||||
# Instantiate some Nuclides
|
||||
h1 = openmc.Nuclide('H1')
|
||||
o16 = openmc.Nuclide('O16')
|
||||
u235 = openmc.Nuclide('U235')
|
||||
u238 = openmc.Nuclide('U238')
|
||||
|
||||
# Instantiate some Materials and register the appropriate Nuclides
|
||||
fuel1 = openmc.Material(material_id=1, name='fuel')
|
||||
fuel1.set_density('g/cc', 4.5)
|
||||
fuel1.add_nuclide(u235, 1.)
|
||||
fuel1.add_nuclide('U235', 1.)
|
||||
|
||||
fuel2 = openmc.Material(material_id=2, name='depleted fuel')
|
||||
fuel2.set_density('g/cc', 4.5)
|
||||
fuel2.add_nuclide(u238, 1.)
|
||||
fuel2.add_nuclide('U238', 1.)
|
||||
|
||||
moderator = openmc.Material(material_id=3, name='moderator')
|
||||
moderator.set_density('g/cc', 1.0)
|
||||
moderator.add_nuclide(h1, 2.)
|
||||
moderator.add_nuclide(o16, 1.)
|
||||
moderator.add_element('H', 2.)
|
||||
moderator.add_element('O', 1.)
|
||||
moderator.add_s_alpha_beta('c_H_in_H2O')
|
||||
|
||||
# Instantiate a Materials collection and export to XML
|
||||
|
|
|
|||
|
|
@ -14,26 +14,20 @@ particles = 10000
|
|||
# Exporting to OpenMC materials.xml File
|
||||
###############################################################################
|
||||
|
||||
# Instantiate some Nuclides
|
||||
h1 = openmc.Nuclide('H1')
|
||||
o16 = openmc.Nuclide('O16')
|
||||
u235 = openmc.Nuclide('U235')
|
||||
fe56 = openmc.Nuclide('Fe56')
|
||||
|
||||
# Instantiate some Materials and register the appropriate Nuclides
|
||||
fuel = openmc.Material(material_id=1, name='fuel')
|
||||
fuel.set_density('g/cc', 4.5)
|
||||
fuel.add_nuclide(u235, 1.)
|
||||
fuel.add_nuclide('U235', 1.)
|
||||
|
||||
moderator = openmc.Material(material_id=2, name='moderator')
|
||||
moderator.set_density('g/cc', 1.0)
|
||||
moderator.add_nuclide(h1, 2.)
|
||||
moderator.add_nuclide(o16, 1.)
|
||||
moderator.add_element('H', 2.)
|
||||
moderator.add_element('O', 1.)
|
||||
moderator.add_s_alpha_beta('c_H_in_H2O')
|
||||
|
||||
iron = openmc.Material(material_id=3, name='iron')
|
||||
iron.set_density('g/cc', 7.9)
|
||||
iron.add_nuclide(fe56, 1.)
|
||||
iron.add_element('Fe', 1.)
|
||||
|
||||
# Instantiate a Materials collection and export to XML
|
||||
materials_file = openmc.Materials([moderator, fuel, iron])
|
||||
|
|
|
|||
|
|
@ -14,20 +14,15 @@ particles = 10000
|
|||
# Exporting to OpenMC materials.xml file
|
||||
###############################################################################
|
||||
|
||||
# Instantiate some Nuclides
|
||||
h1 = openmc.Nuclide('H1')
|
||||
o16 = openmc.Nuclide('O16')
|
||||
u235 = openmc.Nuclide('U235')
|
||||
|
||||
# Instantiate some Materials and register the appropriate Nuclides
|
||||
fuel = openmc.Material(material_id=1, name='fuel')
|
||||
fuel.set_density('g/cc', 4.5)
|
||||
fuel.add_nuclide(u235, 1.)
|
||||
fuel.add_nuclide('U235', 1.)
|
||||
|
||||
moderator = openmc.Material(material_id=2, name='moderator')
|
||||
moderator.set_density('g/cc', 1.0)
|
||||
moderator.add_nuclide(h1, 2.)
|
||||
moderator.add_nuclide(o16, 1.)
|
||||
moderator.add_element('H', 2.)
|
||||
moderator.add_element('O', 1.)
|
||||
moderator.add_s_alpha_beta('c_H_in_H2O')
|
||||
|
||||
# Instantiate a Materials collection and export to XML
|
||||
|
|
|
|||
|
|
@ -14,20 +14,15 @@ particles = 10000
|
|||
# Exporting to OpenMC materials.xml file
|
||||
###############################################################################
|
||||
|
||||
# Instantiate some Nuclides
|
||||
h1 = openmc.Nuclide('H1')
|
||||
o16 = openmc.Nuclide('O16')
|
||||
u235 = openmc.Nuclide('U235')
|
||||
|
||||
# Instantiate some Materials and register the appropriate Nuclides
|
||||
fuel = openmc.Material(material_id=1, name='fuel')
|
||||
fuel.set_density('g/cc', 4.5)
|
||||
fuel.add_nuclide(u235, 1.)
|
||||
fuel.add_nuclide('U235', 1.)
|
||||
|
||||
moderator = openmc.Material(material_id=2, name='moderator')
|
||||
moderator.set_density('g/cc', 1.0)
|
||||
moderator.add_nuclide(h1, 2.)
|
||||
moderator.add_nuclide(o16, 1.)
|
||||
moderator.add_element('H', 2.)
|
||||
moderator.add_element('O', 1.)
|
||||
moderator.add_s_alpha_beta('c_H_in_H2O')
|
||||
|
||||
# Instantiate a Materials collection and export to XML
|
||||
|
|
|
|||
|
|
@ -14,86 +14,29 @@ particles = 1000
|
|||
# Exporting to OpenMC materials.xml file
|
||||
###############################################################################
|
||||
|
||||
# Instantiate some Nuclides
|
||||
h1 = openmc.Nuclide('H1')
|
||||
h2 = openmc.Nuclide('H2')
|
||||
he4 = openmc.Nuclide('He4')
|
||||
b10 = openmc.Nuclide('B10')
|
||||
b11 = openmc.Nuclide('B11')
|
||||
o16 = openmc.Nuclide('O16')
|
||||
o17 = openmc.Nuclide('O17')
|
||||
cr50 = openmc.Nuclide('Cr50')
|
||||
cr52 = openmc.Nuclide('Cr52')
|
||||
cr53 = openmc.Nuclide('Cr53')
|
||||
cr54 = openmc.Nuclide('Cr54')
|
||||
fe54 = openmc.Nuclide('Fe54')
|
||||
fe56 = openmc.Nuclide('Fe56')
|
||||
fe57 = openmc.Nuclide('Fe57')
|
||||
fe58 = openmc.Nuclide('Fe58')
|
||||
zr90 = openmc.Nuclide('Zr90')
|
||||
zr91 = openmc.Nuclide('Zr91')
|
||||
zr92 = openmc.Nuclide('Zr92')
|
||||
zr94 = openmc.Nuclide('Zr94')
|
||||
zr96 = openmc.Nuclide('Zr96')
|
||||
sn112 = openmc.Nuclide('Sn112')
|
||||
sn114 = openmc.Nuclide('Sn114')
|
||||
sn115 = openmc.Nuclide('Sn115')
|
||||
sn116 = openmc.Nuclide('Sn116')
|
||||
sn117 = openmc.Nuclide('Sn117')
|
||||
sn118 = openmc.Nuclide('Sn118')
|
||||
sn119 = openmc.Nuclide('Sn119')
|
||||
sn120 = openmc.Nuclide('Sn120')
|
||||
sn122 = openmc.Nuclide('Sn122')
|
||||
sn124 = openmc.Nuclide('Sn124')
|
||||
u = openmc.Element('U')
|
||||
o = openmc.Element('O')
|
||||
|
||||
# Instantiate some Materials and register the appropriate Nuclides
|
||||
uo2 = openmc.Material(material_id=1, name='UO2 fuel at 2.4% wt enrichment')
|
||||
uo2.set_density('g/cm3', 10.29769)
|
||||
uo2.add_element(u, 1., enrichment=2.4)
|
||||
uo2.add_element(o, 2.)
|
||||
uo2.add_element('U', 1., enrichment=2.4)
|
||||
uo2.add_element('O', 2.)
|
||||
|
||||
helium = openmc.Material(material_id=2, name='Helium for gap')
|
||||
helium.set_density('g/cm3', 0.001598)
|
||||
helium.add_nuclide(he4, 2.4044e-4)
|
||||
helium.add_element('He', 2.4044e-4)
|
||||
|
||||
zircaloy = openmc.Material(material_id=3, name='Zircaloy 4')
|
||||
zircaloy.set_density('g/cm3', 6.55)
|
||||
zircaloy.add_nuclide(o16, 3.0743e-4)
|
||||
zircaloy.add_nuclide(o17, 7.4887e-7)
|
||||
zircaloy.add_nuclide(cr50, 3.2962e-6)
|
||||
zircaloy.add_nuclide(cr52, 6.3564e-5)
|
||||
zircaloy.add_nuclide(cr53, 7.2076e-6)
|
||||
zircaloy.add_nuclide(cr54, 1.7941e-6)
|
||||
zircaloy.add_nuclide(fe54, 8.6699e-6)
|
||||
zircaloy.add_nuclide(fe56, 1.3610e-4)
|
||||
zircaloy.add_nuclide(fe57, 3.1431e-6)
|
||||
zircaloy.add_nuclide(fe58, 4.1829e-7)
|
||||
zircaloy.add_nuclide(zr90, 2.1827e-2)
|
||||
zircaloy.add_nuclide(zr91, 4.7600e-3)
|
||||
zircaloy.add_nuclide(zr92, 7.2758e-3)
|
||||
zircaloy.add_nuclide(zr94, 7.3734e-3)
|
||||
zircaloy.add_nuclide(zr96, 1.1879e-3)
|
||||
zircaloy.add_nuclide(sn112, 4.6735e-6)
|
||||
zircaloy.add_nuclide(sn114, 3.1799e-6)
|
||||
zircaloy.add_nuclide(sn115, 1.6381e-6)
|
||||
zircaloy.add_nuclide(sn116, 7.0055e-5)
|
||||
zircaloy.add_nuclide(sn117, 3.7003e-5)
|
||||
zircaloy.add_nuclide(sn118, 1.1669e-4)
|
||||
zircaloy.add_nuclide(sn119, 4.1387e-5)
|
||||
zircaloy.add_nuclide(sn120, 1.5697e-4)
|
||||
zircaloy.add_nuclide(sn122, 2.2308e-5)
|
||||
zircaloy.add_nuclide(sn124, 2.7897e-5)
|
||||
zircaloy.add_element('Sn', 0.014 , 'wo')
|
||||
zircaloy.add_element('Fe', 0.00165, 'wo')
|
||||
zircaloy.add_element('Cr', 0.001 , 'wo')
|
||||
zircaloy.add_element('Zr', 0.98335, 'wo')
|
||||
|
||||
borated_water = openmc.Material(material_id=4, name='Borated water at 975 ppm')
|
||||
borated_water = openmc.Material(material_id=4, name='Borated water')
|
||||
borated_water.set_density('g/cm3', 0.740582)
|
||||
borated_water.add_nuclide(b10, 8.0042e-6)
|
||||
borated_water.add_nuclide(b11, 3.2218e-5)
|
||||
borated_water.add_nuclide(h1, 4.9457e-2)
|
||||
borated_water.add_nuclide(h2, 7.4196e-6)
|
||||
borated_water.add_nuclide(o16, 2.4672e-2)
|
||||
borated_water.add_nuclide(o17, 6.0099e-5)
|
||||
borated_water.add_element('B', 4.0e-5)
|
||||
borated_water.add_element('H', 5.0e-2)
|
||||
borated_water.add_element('O', 2.4e-2)
|
||||
borated_water.add_s_alpha_beta('c_H_in_H2O')
|
||||
|
||||
# Instantiate a Materials collection and export to XML
|
||||
|
|
|
|||
|
|
@ -15,13 +15,10 @@ particles = 10000
|
|||
# Exporting to OpenMC materials.xml file
|
||||
###############################################################################
|
||||
|
||||
# Instantiate a Nuclides
|
||||
u235 = openmc.Nuclide('U235')
|
||||
|
||||
# Instantiate a Material and register the Nuclide
|
||||
fuel = openmc.Material(material_id=1, name='fuel')
|
||||
fuel.set_density('g/cc', 4.5)
|
||||
fuel.add_nuclide(u235, 1.)
|
||||
fuel.add_nuclide('U235', 1.)
|
||||
|
||||
# Instantiate a Materials collection and export to XML
|
||||
materials_file = openmc.Materials([fuel])
|
||||
|
|
|
|||
|
|
@ -129,7 +129,7 @@ class Material(object):
|
|||
string = 'Material\n'
|
||||
string += '{0: <16}{1}{2}\n'.format('\tID', '=\t', self._id)
|
||||
string += '{0: <16}{1}{2}\n'.format('\tName', '=\t', self._name)
|
||||
string += '{0: <16}{1}{2}\n'.format('\Temperature', '=\t',
|
||||
string += '{0: <16}{1}{2}\n'.format('\tTemperature', '=\t',
|
||||
self._temperature)
|
||||
|
||||
string += '{0: <16}{1}{2}'.format('\tDensity', '=\t', self._density)
|
||||
|
|
@ -251,7 +251,7 @@ class Material(object):
|
|||
|
||||
Parameters
|
||||
----------
|
||||
units : {'g/cm3', 'g/cc', 'km/cm3', 'atom/b-cm', 'atom/cm3', 'sum', 'macro'}
|
||||
units : {'g/cm3', 'g/cc', 'kg/cm3', '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
|
||||
|
|
@ -641,37 +641,39 @@ class Material(object):
|
|||
nucs = []
|
||||
nuc_densities = []
|
||||
nuc_density_types = []
|
||||
|
||||
for nuclide in nuclides.items():
|
||||
nuc, nuc_density, nuc_density_type = nuclide[1]
|
||||
nucs.append(nuc)
|
||||
nuc_densities.append(nuc_density)
|
||||
nuc_density_types.append(nuc_density_type)
|
||||
|
||||
nucs = np.array(nucs)
|
||||
nuc_densities = np.array(nuc_densities)
|
||||
nuc_density_types = np.array(nuc_density_types)
|
||||
|
||||
if sum_density:
|
||||
density = np.sum(nuc_densities)
|
||||
|
||||
percent_in_atom = np.all(nuc_density_types == 'ao')
|
||||
density_in_atom = density > 0.
|
||||
sum_percent = 0.
|
||||
|
||||
awrs = []
|
||||
for n, nuclide in enumerate(nuclides.items()):
|
||||
awr = openmc.data.atomic_mass(nuclide[0])
|
||||
if awr is not None:
|
||||
awrs.append(awr / openmc.data.NEUTRON_MASS)
|
||||
else:
|
||||
raise ValueError(nuclide[0] + " is invalid")
|
||||
# Convert the weight amounts to atomic amounts
|
||||
if not percent_in_atom:
|
||||
for n, nuc in enumerate(nucs):
|
||||
nuc_densities[n] *= self.average_molar_mass / \
|
||||
openmc.data.atomic_mass(nuc)
|
||||
|
||||
# Now that we have the awr, lets finish calculating densities
|
||||
# Now that we have the atomic amounts, lets finish calculating densities
|
||||
sum_percent = np.sum(nuc_densities)
|
||||
nuc_densities = nuc_densities / sum_percent
|
||||
|
||||
# Convert the mass density to an atom density
|
||||
if not density_in_atom:
|
||||
sum_percent = 0.
|
||||
for n, nuc in enumerate(nucs):
|
||||
x = nuc_densities[n]
|
||||
sum_percent += x * awrs[n]
|
||||
sum_percent = 1. / sum_percent
|
||||
density = -density * sum_percent * \
|
||||
openmc.data.AVOGADRO / openmc.data.NEUTRON_MASS * 1.E-24
|
||||
density = -density / self.average_molar_mass * 1.E-24 \
|
||||
* openmc.data.AVOGADRO
|
||||
|
||||
nuc_densities = density * nuc_densities
|
||||
|
||||
nuclides = OrderedDict()
|
||||
|
|
|
|||
|
|
@ -524,6 +524,14 @@ class Library(object):
|
|||
for domain in self.domains:
|
||||
for mgxs_type in self.mgxs_types:
|
||||
mgxs = self.get_mgxs(domain, mgxs_type)
|
||||
|
||||
if mgxs_type in openmc.mgxs.MDGXS_TYPES:
|
||||
if self.num_delayed_groups == 0:
|
||||
mgxs.delayed_groups = None
|
||||
else:
|
||||
mgxs.delayed_groups \
|
||||
= list(range(1, self.num_delayed_groups+1))
|
||||
|
||||
for tally in mgxs.tallies.values():
|
||||
tallies_file.append(tally, merge=merge)
|
||||
|
||||
|
|
|
|||
|
|
@ -923,7 +923,7 @@ class ChiDelayed(MDGXS):
|
|||
tally_keys : list of str
|
||||
The keys into the tallies dictionary for each tally used to compute
|
||||
the multi-group cross section
|
||||
estimator : {'tracklength', 'analog'}
|
||||
estimator : 'analog'
|
||||
The tally estimator used to compute the multi-group cross section
|
||||
tallies : collections.OrderedDict
|
||||
OpenMC tallies needed to compute the multi-group cross section. The keys
|
||||
|
|
@ -966,6 +966,7 @@ class ChiDelayed(MDGXS):
|
|||
super(ChiDelayed, self).__init__(domain, domain_type, energy_groups,
|
||||
delayed_groups, by_nuclide, name)
|
||||
self._rxn_type = 'chi-delayed'
|
||||
self._estimator = 'analog'
|
||||
|
||||
@property
|
||||
def scores(self):
|
||||
|
|
@ -987,10 +988,6 @@ class ChiDelayed(MDGXS):
|
|||
def tally_keys(self):
|
||||
return ['delayed-nu-fission-in', 'delayed-nu-fission-out']
|
||||
|
||||
@property
|
||||
def estimator(self):
|
||||
return 'analog'
|
||||
|
||||
@property
|
||||
def rxn_rate_tally(self):
|
||||
if self._rxn_rate_tally is None:
|
||||
|
|
@ -1018,6 +1015,34 @@ class ChiDelayed(MDGXS):
|
|||
|
||||
return self._xs_tally
|
||||
|
||||
def get_homogenized_mgxs(self, other_mgxs):
|
||||
"""Construct a homogenized MGXS with other MGXS objects.
|
||||
|
||||
This method constructs a new MGXS object that is the flux-weighted
|
||||
combination of two MGXS objects. It is equivalent to what one would
|
||||
obtain if the tally spatial domain were designed to encompass the
|
||||
individual domains for both MGXS objects.
|
||||
|
||||
Parameters
|
||||
----------
|
||||
other_mgxs : openmc.mgxs.MGXS or Iterable of openmc.mgxs.MGXS
|
||||
The MGXS to homogenize with this one.
|
||||
|
||||
Returns
|
||||
-------
|
||||
openmc.mgxs.MGXS
|
||||
A new homogenized MGXS
|
||||
|
||||
Raises
|
||||
------
|
||||
ValueError
|
||||
If the other_mgxs is of a different type.
|
||||
|
||||
"""
|
||||
|
||||
return self._get_homogenized_mgxs(other_mgxs, 'delayed-nu-fission-in')
|
||||
|
||||
|
||||
def get_slice(self, nuclides=[], groups=[], delayed_groups=[]):
|
||||
"""Build a sliced ChiDelayed for the specified nuclides and energy
|
||||
groups.
|
||||
|
|
@ -1586,6 +1611,33 @@ class Beta(MDGXS):
|
|||
|
||||
return self._xs_tally
|
||||
|
||||
def get_homogenized_mgxs(self, other_mgxs):
|
||||
"""Construct a homogenized MGXS with other MGXS objects.
|
||||
|
||||
This method constructs a new MGXS object that is the flux-weighted
|
||||
combination of two MGXS objects. It is equivalent to what one would
|
||||
obtain if the tally spatial domain were designed to encompass the
|
||||
individual domains for both MGXS objects.
|
||||
|
||||
Parameters
|
||||
----------
|
||||
other_mgxs : openmc.mgxs.MGXS or Iterable of openmc.mgxs.MGXS
|
||||
The MGXS to homogenize with this one.
|
||||
|
||||
Returns
|
||||
-------
|
||||
openmc.mgxs.MGXS
|
||||
A new homogenized MGXS
|
||||
|
||||
Raises
|
||||
------
|
||||
ValueError
|
||||
If the other_mgxs is of a different type.
|
||||
|
||||
"""
|
||||
|
||||
return self._get_homogenized_mgxs(other_mgxs, 'nu-fission')
|
||||
|
||||
|
||||
class DecayRate(MDGXS):
|
||||
r"""The decay rate for delayed neutron precursors.
|
||||
|
|
@ -1703,7 +1755,6 @@ class DecayRate(MDGXS):
|
|||
super(DecayRate, self).__init__(domain, domain_type, energy_groups,
|
||||
delayed_groups, by_nuclide, name)
|
||||
self._rxn_type = 'decay-rate'
|
||||
self._estimator = 'analog'
|
||||
|
||||
@property
|
||||
def scores(self):
|
||||
|
|
@ -1738,6 +1789,33 @@ class DecayRate(MDGXS):
|
|||
|
||||
return self._xs_tally
|
||||
|
||||
def get_homogenized_mgxs(self, other_mgxs):
|
||||
"""Construct a homogenized MGXS with other MGXS objects.
|
||||
|
||||
This method constructs a new MGXS object that is the flux-weighted
|
||||
combination of two MGXS objects. It is equivalent to what one would
|
||||
obtain if the tally spatial domain were designed to encompass the
|
||||
individual domains for both MGXS objects.
|
||||
|
||||
Parameters
|
||||
----------
|
||||
other_mgxs : openmc.mgxs.MGXS or Iterable of openmc.mgxs.MGXS
|
||||
The MGXS to homogenize with this one.
|
||||
|
||||
Returns
|
||||
-------
|
||||
openmc.mgxs.MGXS
|
||||
A new homogenized MGXS
|
||||
|
||||
Raises
|
||||
------
|
||||
ValueError
|
||||
If the other_mgxs is of a different type.
|
||||
|
||||
"""
|
||||
|
||||
return self._get_homogenized_mgxs(other_mgxs, 'delayed-nu-fission')
|
||||
|
||||
|
||||
@add_metaclass(ABCMeta)
|
||||
class MatrixMDGXS(MDGXS):
|
||||
|
|
@ -2295,7 +2373,7 @@ class DelayedNuFissionMatrixXS(MatrixMDGXS):
|
|||
tally_keys : list of str
|
||||
The keys into the tallies dictionary for each tally used to compute
|
||||
the multi-group cross section
|
||||
estimator : {'tracklength', 'analog'}
|
||||
estimator : 'analog'
|
||||
The tally estimator used to compute the multi-group cross section
|
||||
tallies : collections.OrderedDict
|
||||
OpenMC tallies needed to compute the multi-group cross section. The keys
|
||||
|
|
|
|||
|
|
@ -996,6 +996,111 @@ class MGXS(object):
|
|||
avg_xs.sparse = self.sparse
|
||||
return avg_xs
|
||||
|
||||
def _get_homogenized_mgxs(self, other_mgxs, denom_score='flux'):
|
||||
"""Construct a homogenized MGXS with other MGXS objects.
|
||||
|
||||
This method constructs a new MGXS object that is the flux-weighted
|
||||
combination of two MGXS objects. It is equivalent to what one would
|
||||
obtain if the tally spatial domain were designed to encompass the
|
||||
individual domains for both MGXS objects. This is accomplished by
|
||||
summing the rxn rate (numerator) tally and the denominator tally
|
||||
(often a tally of the flux over the spatial domain) that are used to
|
||||
compute a multi-group cross-section.
|
||||
|
||||
Parameters
|
||||
----------
|
||||
other_mgxs : openmc.mgxs.MGXS or Iterable of openmc.mgxs.MGXS
|
||||
The MGXS to homogenize with this one.
|
||||
denom_score : str
|
||||
The denominator score in the denominator of computing the MGXS.
|
||||
|
||||
Returns
|
||||
-------
|
||||
openmc.mgxs.MGXS
|
||||
A new homogenized MGXS
|
||||
|
||||
Raises
|
||||
------
|
||||
ValueError
|
||||
If the other_mgxs is of a different type.
|
||||
|
||||
"""
|
||||
|
||||
# Check type of denom score
|
||||
cv.check_type('denom_score', denom_score, str)
|
||||
|
||||
# Construct a collection of the subdomain filter bins to homogenize
|
||||
# across
|
||||
if isinstance(other_mgxs, openmc.mgxs.MGXS):
|
||||
other_mgxs = [other_mgxs]
|
||||
|
||||
cv.check_iterable_type('other_mgxs', other_mgxs, openmc.mgxs.MGXS)
|
||||
for mgxs in other_mgxs:
|
||||
if mgxs.rxn_type != self.rxn_type:
|
||||
msg = 'Not able to homogenize two MGXS with different rxn types'
|
||||
raise ValueError(msg)
|
||||
|
||||
# Clone this MGXS to initialize the homogenized version
|
||||
homogenized_mgxs = copy.deepcopy(self)
|
||||
homogenized_mgxs._derived = True
|
||||
name = 'hom({}, '.format(self.domain.name)
|
||||
|
||||
# Get the domain filter
|
||||
filter_type = _DOMAIN_TO_FILTER[self.domain_type]
|
||||
self_filter = self.rxn_rate_tally.find_filter(filter_type)
|
||||
|
||||
# Get the rxn rate and denom tallies
|
||||
rxn_rate_tally = self.rxn_rate_tally
|
||||
denom_tally = self.tallies[denom_score]
|
||||
|
||||
for mgxs in other_mgxs:
|
||||
|
||||
# Swap the domain filter bins for the other mgxs rxn rate tally
|
||||
other_rxn_rate_tally = copy.deepcopy(mgxs.rxn_rate_tally)
|
||||
other_filter = other_rxn_rate_tally.find_filter(filter_type)
|
||||
other_filter._bins = self_filter._bins
|
||||
|
||||
# Swap the domain filter bins for the denom tally
|
||||
other_denom_tally = copy.deepcopy(mgxs.tallies[denom_score])
|
||||
other_filter = other_denom_tally.find_filter(filter_type)
|
||||
other_filter._bins = self_filter._bins
|
||||
|
||||
# Add the rxn rate and denom tallies
|
||||
rxn_rate_tally += other_rxn_rate_tally
|
||||
denom_tally += other_denom_tally
|
||||
|
||||
# Update the name for the homogenzied MGXS
|
||||
name += '{}, '.format(mgxs.domain.name)
|
||||
|
||||
# Set the properties of the homogenized MGXS
|
||||
homogenized_mgxs._rxn_rate_tally = rxn_rate_tally
|
||||
homogenized_mgxs.tallies[denom_score] = denom_tally
|
||||
homogenized_mgxs._domain.name = name[:-2] + ')'
|
||||
|
||||
return homogenized_mgxs
|
||||
|
||||
def get_homogenized_mgxs(self, other_mgxs):
|
||||
"""Construct a homogenized mgxs with other MGXS objects.
|
||||
|
||||
Parameters
|
||||
----------
|
||||
other_mgxs : openmc.mgxs.MGXS or Iterable of openmc.mgxs.MGXS
|
||||
The MGXS to homogenize with this one.
|
||||
|
||||
Returns
|
||||
-------
|
||||
openmc.mgxs.MGXS
|
||||
A new homogenized MGXS
|
||||
|
||||
Raises
|
||||
------
|
||||
ValueError
|
||||
If the other_mgxs is of a different type.
|
||||
|
||||
"""
|
||||
|
||||
return self._get_homogenized_mgxs(other_mgxs, 'flux')
|
||||
|
||||
def get_slice(self, nuclides=[], groups=[]):
|
||||
"""Build a sliced MGXS for the specified nuclides and energy groups.
|
||||
|
||||
|
|
@ -3182,7 +3287,7 @@ class NuScatterXS(MGXS):
|
|||
tally_keys : list of str
|
||||
The keys into the tallies dictionary for each tally used to compute
|
||||
the multi-group cross section
|
||||
estimator : {'tracklength', 'collision', 'analog'}
|
||||
estimator : 'analog'
|
||||
The tally estimator used to compute the multi-group cross section
|
||||
tallies : collections.OrderedDict
|
||||
OpenMC tallies needed to compute the multi-group cross section. The keys
|
||||
|
|
@ -4561,6 +4666,28 @@ class Chi(MGXS):
|
|||
|
||||
return self._xs_tally
|
||||
|
||||
def get_homogenized_mgxs(self, other_mgxs):
|
||||
"""Construct a homogenized mgxs with other MGXS objects.
|
||||
|
||||
Parameters
|
||||
----------
|
||||
other_mgxs : openmc.mgxs.MGXS or Iterable of openmc.mgxs.MGXS
|
||||
The MGXS to homogenize with this one.
|
||||
|
||||
Returns
|
||||
-------
|
||||
openmc.mgxs.MGXS
|
||||
A new homogenized MGXS
|
||||
|
||||
Raises
|
||||
------
|
||||
ValueError
|
||||
If the other_mgxs is of a different type.
|
||||
|
||||
"""
|
||||
|
||||
return self._get_homogenized_mgxs(other_mgxs, 'nu-fission-in')
|
||||
|
||||
def get_slice(self, nuclides=[], groups=[]):
|
||||
"""Build a sliced Chi for the specified nuclides and energy groups.
|
||||
|
||||
|
|
@ -5338,7 +5465,7 @@ class PromptNuFissionMatrixXS(MatrixMGXS):
|
|||
tally_keys : list of str
|
||||
The keys into the tallies dictionary for each tally used to compute
|
||||
the multi-group cross section
|
||||
estimator : {'tracklength', 'collision', 'analog'}
|
||||
estimator : 'analog'
|
||||
The tally estimator used to compute the multi-group cross section
|
||||
tallies : collections.OrderedDict
|
||||
OpenMC tallies needed to compute the multi-group cross section. The keys
|
||||
|
|
|
|||
|
|
@ -15,8 +15,8 @@ from openmc.checkvalue import check_type, check_value, check_greater_than, \
|
|||
# Supported incoming particle MGXS angular treatment representations
|
||||
_REPRESENTATIONS = ['isotropic', 'angle']
|
||||
_SCATTER_TYPES = ['tabular', 'legendre', 'histogram']
|
||||
_XS_SHAPES = ["[G][G'][Order]", "[G]", "[G']", "[G][G']", "[DG]", "[G][DG]",
|
||||
"[G'][DG]", "[G][G'][DG]"]
|
||||
_XS_SHAPES = ["[G][G'][Order]", "[G]", "[G']", "[G][G']", "[DG]", "[DG][G]",
|
||||
"[DG][G']", "[DG][G][G']"]
|
||||
|
||||
|
||||
class XSdata(object):
|
||||
|
|
@ -145,11 +145,11 @@ class XSdata(object):
|
|||
|
||||
[DG]: beta, decay_rate
|
||||
|
||||
[G][DG]: delayed_nu_fission, beta, decay_rate
|
||||
[DG][G]: delayed_nu_fission, beta, decay_rate
|
||||
|
||||
[G'][DG]: chi_delayed
|
||||
[DG][G']: chi_delayed
|
||||
|
||||
[G][G'][DG]: delayed_nu_fission
|
||||
[DG][G][G']: delayed_nu_fission
|
||||
|
||||
"""
|
||||
|
||||
|
|
@ -296,13 +296,13 @@ class XSdata(object):
|
|||
self._xs_shapes["[G][G']"] = (self.energy_groups.num_groups,
|
||||
self.energy_groups.num_groups)
|
||||
self._xs_shapes["[DG]"] = (self.num_delayed_groups,)
|
||||
self._xs_shapes["[G][DG]"] = (self.energy_groups.num_groups,
|
||||
self.num_delayed_groups)
|
||||
self._xs_shapes["[G'][DG]"] = (self.energy_groups.num_groups,
|
||||
self.num_delayed_groups)
|
||||
self._xs_shapes["[G][G'][DG]"] = (self.energy_groups.num_groups,
|
||||
self._xs_shapes["[DG][G]"] = (self.num_delayed_groups,
|
||||
self.energy_groups.num_groups)
|
||||
self._xs_shapes["[DG'][G']"] = (self.num_delayed_groups,
|
||||
self.energy_groups.num_groups)
|
||||
self._xs_shapes["[DG][G][G']"] = (self.num_delayed_groups,
|
||||
self.energy_groups.num_groups,
|
||||
self.num_delayed_groups)
|
||||
self.energy_groups.num_groups)
|
||||
|
||||
self._xs_shapes["[G][G'][Order]"] \
|
||||
= (self.energy_groups.num_groups,
|
||||
|
|
@ -634,7 +634,7 @@ class XSdata(object):
|
|||
"""
|
||||
|
||||
# Get the accepted shapes for this xs
|
||||
shapes = [self.xs_shapes["[G']"], self.xs_shapes["[G'][DG]"]]
|
||||
shapes = [self.xs_shapes["[G']"], self.xs_shapes["[DG][G']"]]
|
||||
|
||||
# Convert to a numpy array so we can easily get the shape for checking
|
||||
chi_delayed = np.asarray(chi_delayed)
|
||||
|
|
@ -664,7 +664,7 @@ class XSdata(object):
|
|||
"""
|
||||
|
||||
# Get the accepted shapes for this xs
|
||||
shapes = [self.xs_shapes["[DG]"], self.xs_shapes["[G][DG]"]]
|
||||
shapes = [self.xs_shapes["[DG]"], self.xs_shapes["[DG][G]"]]
|
||||
|
||||
# Convert to a numpy array so we can easily get the shape for checking
|
||||
beta = np.asarray(beta)
|
||||
|
|
@ -694,7 +694,7 @@ class XSdata(object):
|
|||
"""
|
||||
|
||||
# Get the accepted shapes for this xs
|
||||
shapes = [self.xs_shapes["[DG]"], self.xs_shapes["[G][DG]"]]
|
||||
shapes = [self.xs_shapes["[DG]"], self.xs_shapes["[DG][G]"]]
|
||||
|
||||
# Convert to a numpy array so we can easily get the shape for checking
|
||||
decay_rate = np.asarray(decay_rate)
|
||||
|
|
@ -856,7 +856,7 @@ class XSdata(object):
|
|||
"""
|
||||
|
||||
# Get the accepted shapes for this xs
|
||||
shapes = [self.xs_shapes["[G][DG]"], self.xs_shapes["[G][G'][DG]"]]
|
||||
shapes = [self.xs_shapes["[DG][G]"], self.xs_shapes["[DG][G][G']"]]
|
||||
|
||||
# Convert to a numpy array so we can easily get the shape for checking
|
||||
delayed_nu_fission = np.asarray(delayed_nu_fission)
|
||||
|
|
@ -925,7 +925,7 @@ class XSdata(object):
|
|||
See also
|
||||
--------
|
||||
openmc.mgxs.Library.create_mg_library()
|
||||
openmc.mgxs.Library.get_xsdata
|
||||
openmc.mgxs.Library.get_xsdata()
|
||||
|
||||
"""
|
||||
|
||||
|
|
@ -970,7 +970,7 @@ class XSdata(object):
|
|||
See also
|
||||
--------
|
||||
openmc.mgxs.Library.create_mg_library()
|
||||
openmc.mgxs.Library.get_xsdata
|
||||
openmc.mgxs.Library.get_xsdata()
|
||||
|
||||
"""
|
||||
|
||||
|
|
@ -1017,7 +1017,7 @@ class XSdata(object):
|
|||
See also
|
||||
--------
|
||||
openmc.mgxs.Library.create_mg_library()
|
||||
openmc.mgxs.Library.get_xsdata
|
||||
openmc.mgxs.Library.get_xsdata()
|
||||
|
||||
"""
|
||||
|
||||
|
|
@ -1064,7 +1064,7 @@ class XSdata(object):
|
|||
See also
|
||||
--------
|
||||
openmc.mgxs.Library.create_mg_library()
|
||||
openmc.mgxs.Library.get_xsdata
|
||||
openmc.mgxs.Library.get_xsdata()
|
||||
|
||||
"""
|
||||
|
||||
|
|
@ -1119,7 +1119,7 @@ class XSdata(object):
|
|||
See also
|
||||
--------
|
||||
openmc.mgxs.Library.create_mg_library()
|
||||
openmc.mgxs.Library.get_xsdata
|
||||
openmc.mgxs.Library.get_xsdata()
|
||||
|
||||
"""
|
||||
|
||||
|
|
@ -1174,7 +1174,7 @@ class XSdata(object):
|
|||
See also
|
||||
--------
|
||||
openmc.mgxs.Library.create_mg_library()
|
||||
openmc.mgxs.Library.get_xsdata
|
||||
openmc.mgxs.Library.get_xsdata()
|
||||
|
||||
"""
|
||||
|
||||
|
|
@ -1231,7 +1231,7 @@ class XSdata(object):
|
|||
See also
|
||||
--------
|
||||
openmc.mgxs.Library.create_mg_library()
|
||||
openmc.mgxs.Library.get_xsdata
|
||||
openmc.mgxs.Library.get_xsdata()
|
||||
|
||||
"""
|
||||
|
||||
|
|
@ -1277,7 +1277,7 @@ class XSdata(object):
|
|||
See also
|
||||
--------
|
||||
openmc.mgxs.Library.create_mg_library()
|
||||
openmc.mgxs.Library.get_xsdata
|
||||
openmc.mgxs.Library.get_xsdata()
|
||||
|
||||
"""
|
||||
|
||||
|
|
@ -1320,7 +1320,7 @@ class XSdata(object):
|
|||
See also
|
||||
--------
|
||||
openmc.mgxs.Library.create_mg_library()
|
||||
openmc.mgxs.Library.get_xsdata
|
||||
openmc.mgxs.Library.get_xsdata()
|
||||
|
||||
"""
|
||||
|
||||
|
|
@ -1366,7 +1366,7 @@ class XSdata(object):
|
|||
See also
|
||||
--------
|
||||
openmc.mgxs.Library.create_mg_library()
|
||||
openmc.mgxs.Library.get_xsdata
|
||||
openmc.mgxs.Library.get_xsdata()
|
||||
|
||||
"""
|
||||
|
||||
|
|
@ -1414,7 +1414,7 @@ class XSdata(object):
|
|||
See also
|
||||
--------
|
||||
openmc.mgxs.Library.create_mg_library()
|
||||
openmc.mgxs.Library.get_xsdata
|
||||
openmc.mgxs.Library.get_xsdata()
|
||||
|
||||
"""
|
||||
|
||||
|
|
@ -1459,7 +1459,7 @@ class XSdata(object):
|
|||
See also
|
||||
--------
|
||||
openmc.mgxs.Library.create_mg_library()
|
||||
openmc.mgxs.Library.get_xsdata
|
||||
openmc.mgxs.Library.get_xsdata()
|
||||
|
||||
"""
|
||||
|
||||
|
|
@ -1509,7 +1509,7 @@ class XSdata(object):
|
|||
See also
|
||||
--------
|
||||
openmc.mgxs.Library.create_mg_library()
|
||||
openmc.mgxs.Library.get_xsdata
|
||||
openmc.mgxs.Library.get_xsdata()
|
||||
|
||||
"""
|
||||
|
||||
|
|
@ -1598,7 +1598,7 @@ class XSdata(object):
|
|||
See also
|
||||
--------
|
||||
openmc.mgxs.Library.create_mg_library()
|
||||
openmc.mgxs.Library.get_xsdata
|
||||
openmc.mgxs.Library.get_xsdata()
|
||||
|
||||
"""
|
||||
|
||||
|
|
@ -1644,6 +1644,54 @@ class XSdata(object):
|
|||
self._multiplicity_matrix[i] = \
|
||||
np.nan_to_num(self._multiplicity_matrix[i])
|
||||
|
||||
def set_inverse_velocity_mgxs(self, inverse_velocity, temperature=294.,
|
||||
nuclide='total', xs_type='macro',
|
||||
subdomain=None):
|
||||
"""This method allows for an openmc.mgxs.InverseVelocity
|
||||
to be used to set the inverse velocity for this XSdata object.
|
||||
|
||||
Parameters
|
||||
----------
|
||||
inverse_velocity : openmc.mgxs.InverseVelocity
|
||||
MGXS object containing the inverse velocity for the domain of
|
||||
interest.
|
||||
temperature : float
|
||||
Temperature (in Kelvin) of the data. Defaults to room temperature
|
||||
(294K).
|
||||
nuclide : str
|
||||
Individual nuclide (or 'total' if obtaining material-wise data)
|
||||
to gather data for. Defaults to 'total'.
|
||||
xs_type: {'macro', 'micro'}
|
||||
Provide the macro or micro cross section in units of cm^-1 or
|
||||
barns. Defaults to 'macro'.
|
||||
subdomain : iterable of int
|
||||
If the MGXS contains a mesh domain type, the subdomain parameter
|
||||
specifies which mesh cell (i.e., [i, j, k] index) to use.
|
||||
|
||||
See also
|
||||
--------
|
||||
openmc.mgxs.Library.create_mg_library()
|
||||
openmc.mgxs.Library.get_xsdata()
|
||||
|
||||
"""
|
||||
|
||||
check_type('inverse_velocity', inverse_velocity, openmc.mgxs.InverseVelocity)
|
||||
check_value('energy_groups', inverse_velocity.energy_groups,
|
||||
[self.energy_groups])
|
||||
check_value('domain_type', inverse_velocity.domain_type,
|
||||
openmc.mgxs.DOMAIN_TYPES)
|
||||
check_type('temperature', temperature, Real)
|
||||
check_value('temperature', temperature, self.temperatures)
|
||||
|
||||
i = np.where(self.temperatures == temperature)[0][0]
|
||||
if self.representation == 'isotropic':
|
||||
self._inverse_velocity[i] = inverse_velocity.get_xs\
|
||||
(nuclides=nuclide, xs_type=xs_type,
|
||||
subdomains=subdomain)
|
||||
elif self.representation == 'angle':
|
||||
msg = 'Angular-Dependent MGXS have not yet been implemented'
|
||||
raise ValueError(msg)
|
||||
|
||||
def to_hdf5(self, file):
|
||||
"""Write XSdata to an HDF5 file
|
||||
|
||||
|
|
|
|||
|
|
@ -830,7 +830,7 @@ class Settings(object):
|
|||
|
||||
def _create_keff_trigger_subelement(self, run_mode_element):
|
||||
if self._keff_trigger is not None:
|
||||
element = ET.SubElement(run_mode_subelement, "keff_trigger")
|
||||
element = ET.SubElement(run_mode_element, "keff_trigger")
|
||||
|
||||
for key in self._keff_trigger:
|
||||
subelement = ET.SubElement(element, key)
|
||||
|
|
|
|||
|
|
@ -705,7 +705,7 @@ class Tally(object):
|
|||
|
||||
"""
|
||||
|
||||
# Two tallys must have the same number of filters
|
||||
# Two tallies must have the same number of filters
|
||||
if len(self.filters) != len(other.filters):
|
||||
return False
|
||||
|
||||
|
|
@ -3486,9 +3486,14 @@ class Tallies(cv.CheckedList):
|
|||
for d in derivs:
|
||||
root_element.append(d.to_xml_element())
|
||||
|
||||
def export_to_xml(self):
|
||||
def export_to_xml(self, path='tallies.xml'):
|
||||
"""Create a tallies.xml file that can be used for a simulation.
|
||||
|
||||
Parameters
|
||||
----------
|
||||
path : str
|
||||
Path to file to write. Defaults to 'tallies.xml'.
|
||||
|
||||
"""
|
||||
|
||||
root_element = ET.Element("tallies")
|
||||
|
|
@ -3501,5 +3506,5 @@ class Tallies(cv.CheckedList):
|
|||
|
||||
# Write the XML Tree to the tallies.xml file
|
||||
tree = ET.ElementTree(root_element)
|
||||
tree.write("tallies.xml", xml_declaration=True,
|
||||
tree.write(path, xml_declaration=True,
|
||||
encoding='utf-8', method="xml")
|
||||
|
|
|
|||
|
|
@ -3668,13 +3668,6 @@ contains
|
|||
end if
|
||||
case ('decay-rate')
|
||||
t % score_bins(j) = SCORE_DECAY_RATE
|
||||
|
||||
! Set tally estimator to analog for CE mode
|
||||
! (MG mode has all data available without a collision being
|
||||
! necessary)
|
||||
if (run_CE) then
|
||||
t % estimator = ESTIMATOR_ANALOG
|
||||
end if
|
||||
case ('delayed-nu-fission')
|
||||
t % score_bins(j) = SCORE_DELAYED_NU_FISSION
|
||||
if (t % find_filter(FILTER_ENERGYOUT) > 0) then
|
||||
|
|
|
|||
|
|
@ -621,7 +621,8 @@ module nuclide_header
|
|||
|
||||
case (EMISSION_DELAYED)
|
||||
if (this % n_precursor > 0) then
|
||||
if (present(group)) then
|
||||
if (present(group) .and. group < &
|
||||
size(this % reactions(this % index_fission(1)) % products)) then
|
||||
! If delayed group specified, determine yield immediately
|
||||
associate(p => this % reactions(this % index_fission(1)) % products(1 + group))
|
||||
nu = p % yield % evaluate(E)
|
||||
|
|
|
|||
273
src/tally.F90
273
src/tally.F90
|
|
@ -679,8 +679,8 @@ contains
|
|||
end if
|
||||
end if
|
||||
|
||||
|
||||
case (SCORE_DECAY_RATE)
|
||||
|
||||
! make sure the correct energy is used
|
||||
if (t % estimator == ESTIMATOR_TRACKLENGTH) then
|
||||
E = p % E
|
||||
|
|
@ -691,12 +691,134 @@ contains
|
|||
! Set the delayedgroup filter index
|
||||
dg_filter = t % find_filter(FILTER_DELAYEDGROUP)
|
||||
|
||||
if (survival_biasing) then
|
||||
! No fission events occur if survival biasing is on -- need to
|
||||
! calculate fraction of absorptions that would have resulted in
|
||||
! delayed-nu-fission
|
||||
if (micro_xs(p % event_nuclide) % absorption > ZERO .and. &
|
||||
nuclides(p % event_nuclide) % fissionable) then
|
||||
if (t % estimator == ESTIMATOR_ANALOG) then
|
||||
if (survival_biasing) then
|
||||
! No fission events occur if survival biasing is on -- need to
|
||||
! calculate fraction of absorptions that would have resulted in
|
||||
! delayed-nu-fission
|
||||
if (micro_xs(p % event_nuclide) % absorption > ZERO .and. &
|
||||
nuclides(p % event_nuclide) % fissionable) then
|
||||
|
||||
! Check if the delayed group filter is present
|
||||
if (dg_filter > 0) then
|
||||
select type(filt => t % filters(dg_filter) % obj)
|
||||
type is (DelayedGroupFilter)
|
||||
|
||||
! Loop over all delayed group bins and tally to them
|
||||
! individually
|
||||
do d_bin = 1, filt % n_bins
|
||||
|
||||
! Get the delayed group for this bin
|
||||
d = filt % groups(d_bin)
|
||||
|
||||
! Compute the yield for this delayed group
|
||||
yield = nuclides(p % event_nuclide) &
|
||||
% nu(E, EMISSION_DELAYED, d)
|
||||
|
||||
associate (rxn => nuclides(p % event_nuclide) % &
|
||||
reactions(nuclides(p % event_nuclide) % index_fission(1)))
|
||||
|
||||
! Compute the score
|
||||
score = p % absorb_wgt * yield * &
|
||||
micro_xs(p % event_nuclide) % fission &
|
||||
/ micro_xs(p % event_nuclide) % absorption &
|
||||
* rxn % products(1 + d) % decay_rate
|
||||
end associate
|
||||
|
||||
! Tally to bin
|
||||
call score_fission_delayed_dg(t, d_bin, score, score_index)
|
||||
end do
|
||||
cycle SCORE_LOOP
|
||||
end select
|
||||
else
|
||||
|
||||
! If the delayed group filter is not present, compute the score
|
||||
! by accumulating the absorbed weight times the decay rate times
|
||||
! the fraction of the delayed-nu-fission xs to the absorption xs
|
||||
! for all delayed groups.
|
||||
score = ZERO
|
||||
|
||||
associate (rxn => nuclides(p % event_nuclide) % &
|
||||
reactions(nuclides(p % event_nuclide) % index_fission(1)))
|
||||
|
||||
! We need to be careful not to overshoot the number of delayed
|
||||
! groups since this could cause the range of the rxn % products
|
||||
! array to be exceeded. Hence, we use the size of this array
|
||||
! and not the MAX_DELAYED_GROUPS constant for this loop.
|
||||
do d = 1, size(rxn % products) - 2
|
||||
|
||||
score = score + rxn % products(1 + d) % decay_rate * &
|
||||
p % absorb_wgt * micro_xs(p % event_nuclide) % fission *&
|
||||
nuclides(p % event_nuclide) % nu(E, EMISSION_DELAYED, d)&
|
||||
/ micro_xs(p % event_nuclide) % absorption
|
||||
end do
|
||||
end associate
|
||||
end if
|
||||
end if
|
||||
else
|
||||
|
||||
! Skip any non-fission events
|
||||
if (.not. p % fission) cycle SCORE_LOOP
|
||||
! If there is no outgoing energy filter, than we only need to
|
||||
! score to one bin. For the score to be 'analog', we need to
|
||||
! score the number of particles that were banked in the fission
|
||||
! bank. Since this was weighted by 1/keff, we multiply by keff
|
||||
! to get the proper score. Loop over the neutrons produced from
|
||||
! fission and check which ones are delayed. If a delayed neutron is
|
||||
! encountered, add its contribution to the fission bank to the
|
||||
! score.
|
||||
|
||||
score = ZERO
|
||||
|
||||
! loop over number of particles banked
|
||||
do k = 1, p % n_bank
|
||||
|
||||
! get the delayed group
|
||||
g = fission_bank(n_bank - p % n_bank + k) % delayed_group
|
||||
|
||||
! Case for tallying delayed emissions
|
||||
if (g /= 0) then
|
||||
|
||||
! Accumulate the decay rate times delayed nu fission score
|
||||
associate (rxn => nuclides(p % event_nuclide) % &
|
||||
reactions(nuclides(p % event_nuclide) % index_fission(1)))
|
||||
|
||||
! determine score based on bank site weight and keff.
|
||||
score = score + keff * fission_bank(n_bank - p % n_bank + k) &
|
||||
% wgt * rxn % products(1 + g) % decay_rate
|
||||
end associate
|
||||
|
||||
! if the delayed group filter is present, tally to corresponding
|
||||
! delayed group bin if it exists
|
||||
if (dg_filter > 0) then
|
||||
|
||||
! declare the delayed group filter type
|
||||
select type(filt => t % filters(dg_filter) % obj)
|
||||
type is (DelayedGroupFilter)
|
||||
|
||||
! loop over delayed group bins until the corresponding bin is
|
||||
! found
|
||||
do d_bin = 1, filt % n_bins
|
||||
d = filt % groups(d_bin)
|
||||
|
||||
! check whether the delayed group of the particle is equal to
|
||||
! the delayed group of this bin
|
||||
if (d == g) then
|
||||
call score_fission_delayed_dg(t, d_bin, score, score_index)
|
||||
end if
|
||||
end do
|
||||
end select
|
||||
|
||||
! Reset the score to zero
|
||||
score = ZERO
|
||||
end if
|
||||
end if
|
||||
end do
|
||||
end if
|
||||
else
|
||||
|
||||
! Check if tally is on a single nuclide
|
||||
if (i_nuclide > 0) then
|
||||
|
||||
! Check if the delayed group filter is present
|
||||
if (dg_filter > 0) then
|
||||
|
|
@ -711,17 +833,14 @@ contains
|
|||
d = filt % groups(d_bin)
|
||||
|
||||
! Compute the yield for this delayed group
|
||||
yield = nuclides(p % event_nuclide) &
|
||||
% nu(E, EMISSION_DELAYED, d)
|
||||
yield = nuclides(i_nuclide) % nu(E, EMISSION_DELAYED, d)
|
||||
|
||||
associate (rxn => nuclides(p % event_nuclide) % &
|
||||
reactions(nuclides(p % event_nuclide) % index_fission(1)))
|
||||
associate (rxn => nuclides(i_nuclide) % &
|
||||
reactions(nuclides(i_nuclide) % index_fission(1)))
|
||||
|
||||
! Compute the score
|
||||
score = p % absorb_wgt * yield * &
|
||||
micro_xs(p % event_nuclide) % fission &
|
||||
/ micro_xs(p % event_nuclide) % absorption &
|
||||
* rxn % products(1 + d) % decay_rate
|
||||
! Compute the score and tally to bin
|
||||
score = micro_xs(i_nuclide) % fission * yield * flux * &
|
||||
atom_density * rxn % products(1 + d) % decay_rate
|
||||
end associate
|
||||
|
||||
! Tally to bin
|
||||
|
|
@ -746,78 +865,90 @@ contains
|
|||
! and not the MAX_DELAYED_GROUPS constant for this loop.
|
||||
do d = 1, size(rxn % products) - 2
|
||||
|
||||
score = score + rxn % products(1 + d) % decay_rate * &
|
||||
p % absorb_wgt * micro_xs(p % event_nuclide) % fission *&
|
||||
nuclides(p % event_nuclide) % nu(E, EMISSION_DELAYED, d)&
|
||||
/ micro_xs(p % event_nuclide) % absorption
|
||||
score = score + micro_xs(i_nuclide) % fission * flux * &
|
||||
nuclides(i_nuclide) % nu(E, EMISSION_DELAYED) * &
|
||||
atom_density * rxn % products(1 + d) % decay_rate
|
||||
end do
|
||||
end associate
|
||||
end if
|
||||
end if
|
||||
else
|
||||
|
||||
! Skip any non-fission events
|
||||
if (.not. p % fission) cycle SCORE_LOOP
|
||||
! If there is no outgoing energy filter, than we only need to
|
||||
! score to one bin. For the score to be 'analog', we need to
|
||||
! score the number of particles that were banked in the fission
|
||||
! bank. Since this was weighted by 1/keff, we multiply by keff
|
||||
! to get the proper score. Loop over the neutrons produced from
|
||||
! fission and check which ones are delayed. If a delayed neutron is
|
||||
! encountered, add its contribution to the fission bank to the
|
||||
! score.
|
||||
! Tally is on total nuclides
|
||||
else
|
||||
|
||||
score = ZERO
|
||||
! Check if the delayed group filter is present
|
||||
if (dg_filter > 0) then
|
||||
select type(filt => t % filters(dg_filter) % obj)
|
||||
type is (DelayedGroupFilter)
|
||||
|
||||
! loop over number of particles banked
|
||||
do k = 1, p % n_bank
|
||||
! Loop over all nuclides in the current material
|
||||
do l = 1, materials(p % material) % n_nuclides
|
||||
|
||||
! get the delayed group
|
||||
g = fission_bank(n_bank - p % n_bank + k) % delayed_group
|
||||
! Get atom density
|
||||
atom_density_ = materials(p % material) % atom_density(l)
|
||||
|
||||
! Case for tallying delayed emissions
|
||||
if (g /= 0) then
|
||||
! Get index in nuclides array
|
||||
i_nuc = materials(p % material) % nuclide(l)
|
||||
|
||||
! Accumulate the decay rate times delayed nu fission score
|
||||
associate (rxn => nuclides(p % event_nuclide) % &
|
||||
reactions(nuclides(p % event_nuclide) % index_fission(1)))
|
||||
if (nuclides(i_nuc) % fissionable) then
|
||||
|
||||
! determine score based on bank site weight and keff.
|
||||
score = score + keff * fission_bank(n_bank - p % n_bank + k) &
|
||||
% wgt * rxn % products(1 + g) % decay_rate
|
||||
end associate
|
||||
! Loop over all delayed group bins and tally to them
|
||||
! individually
|
||||
do d_bin = 1, filt % n_bins
|
||||
|
||||
! if the delayed group filter is present, tally to corresponding
|
||||
! delayed group bin if it exists
|
||||
if (dg_filter > 0) then
|
||||
! Get the delayed group for this bin
|
||||
d = filt % groups(d_bin)
|
||||
|
||||
! declare the delayed group filter type
|
||||
select type(filt => t % filters(dg_filter) % obj)
|
||||
type is (DelayedGroupFilter)
|
||||
! Get the yield for the desired nuclide and delayed group
|
||||
yield = nuclides(i_nuc) % nu(E, EMISSION_DELAYED, d)
|
||||
|
||||
! loop over delayed group bins until the corresponding bin is
|
||||
! found
|
||||
do d_bin = 1, filt % n_bins
|
||||
d = filt % groups(d_bin)
|
||||
associate (rxn => nuclides(i_nuc) % &
|
||||
reactions(nuclides(i_nuc) % index_fission(1)))
|
||||
|
||||
! check whether the delayed group of the particle is equal to
|
||||
! the delayed group of this bin
|
||||
if (d == g) then
|
||||
! Compute the score
|
||||
score = micro_xs(i_nuc) % fission * yield * flux * &
|
||||
atom_density_ * rxn % products(1 + d) % decay_rate
|
||||
end associate
|
||||
|
||||
! Tally to bin
|
||||
call score_fission_delayed_dg(t, d_bin, score, score_index)
|
||||
end if
|
||||
end do
|
||||
end select
|
||||
end do
|
||||
end if
|
||||
end do
|
||||
cycle SCORE_LOOP
|
||||
end select
|
||||
else
|
||||
|
||||
! Reset the score to zero
|
||||
score = ZERO
|
||||
end if
|
||||
score = ZERO
|
||||
|
||||
! Loop over all nuclides in the current material
|
||||
do l = 1, materials(p % material) % n_nuclides
|
||||
|
||||
! Get atom density
|
||||
atom_density_ = materials(p % material) % atom_density(l)
|
||||
|
||||
! Get index in nuclides array
|
||||
i_nuc = materials(p % material) % nuclide(l)
|
||||
|
||||
if (nuclides(i_nuc) % fissionable) then
|
||||
|
||||
associate (rxn => nuclides(i_nuc) % &
|
||||
reactions(nuclides(i_nuc) % index_fission(1)))
|
||||
|
||||
! We need to be careful not to overshoot the number of delayed
|
||||
! groups since this could cause the range of the rxn % products
|
||||
! array to be exceeded. Hence, we use the size of this array
|
||||
! and not the MAX_DELAYED_GROUPS constant for this loop.
|
||||
do d = 1, size(rxn % products) - 2
|
||||
|
||||
! Accumulate the contribution from each nuclide
|
||||
score = score + micro_xs(i_nuc) % fission * nuclides(i_nuc) %&
|
||||
nu(E, EMISSION_DELAYED) * atom_density_ * flux * &
|
||||
rxn % products(1 + d) % decay_rate
|
||||
end do
|
||||
end associate
|
||||
end if
|
||||
end do
|
||||
end if
|
||||
end do
|
||||
|
||||
! If the delayed group filter is present, cycle because the
|
||||
! score_fission_delayed_dg(...) has already tallied the score
|
||||
if (dg_filter > 0) then
|
||||
cycle SCORE_LOOP
|
||||
end if
|
||||
end if
|
||||
|
||||
|
|
|
|||
|
|
@ -396,7 +396,7 @@
|
|||
<filter bins="0.0 0.625 20000000.0" type="energy" />
|
||||
<nuclides>total</nuclides>
|
||||
<scores>delayed-nu-fission</scores>
|
||||
<estimator>analog</estimator>
|
||||
<estimator>tracklength</estimator>
|
||||
</tally>
|
||||
<tally id="10048">
|
||||
<filter bins="10000" type="material" />
|
||||
|
|
@ -404,7 +404,7 @@
|
|||
<filter bins="0.0 0.625 20000000.0" type="energy" />
|
||||
<nuclides>total</nuclides>
|
||||
<scores>decay-rate</scores>
|
||||
<estimator>analog</estimator>
|
||||
<estimator>tracklength</estimator>
|
||||
</tally>
|
||||
<tally id="10049">
|
||||
<filter bins="10000" type="material" />
|
||||
|
|
@ -767,7 +767,7 @@
|
|||
<filter bins="0.0 0.625 20000000.0" type="energy" />
|
||||
<nuclides>total</nuclides>
|
||||
<scores>delayed-nu-fission</scores>
|
||||
<estimator>analog</estimator>
|
||||
<estimator>tracklength</estimator>
|
||||
</tally>
|
||||
<tally id="10099">
|
||||
<filter bins="10001" type="material" />
|
||||
|
|
@ -775,7 +775,7 @@
|
|||
<filter bins="0.0 0.625 20000000.0" type="energy" />
|
||||
<nuclides>total</nuclides>
|
||||
<scores>decay-rate</scores>
|
||||
<estimator>analog</estimator>
|
||||
<estimator>tracklength</estimator>
|
||||
</tally>
|
||||
<tally id="10100">
|
||||
<filter bins="10001" type="material" />
|
||||
|
|
@ -1138,7 +1138,7 @@
|
|||
<filter bins="0.0 0.625 20000000.0" type="energy" />
|
||||
<nuclides>total</nuclides>
|
||||
<scores>delayed-nu-fission</scores>
|
||||
<estimator>analog</estimator>
|
||||
<estimator>tracklength</estimator>
|
||||
</tally>
|
||||
<tally id="10150">
|
||||
<filter bins="10002" type="material" />
|
||||
|
|
@ -1146,7 +1146,7 @@
|
|||
<filter bins="0.0 0.625 20000000.0" type="energy" />
|
||||
<nuclides>total</nuclides>
|
||||
<scores>decay-rate</scores>
|
||||
<estimator>analog</estimator>
|
||||
<estimator>tracklength</estimator>
|
||||
</tally>
|
||||
<tally id="10151">
|
||||
<filter bins="10002" type="material" />
|
||||
|
|
|
|||
|
|
@ -64,12 +64,12 @@
|
|||
4 10000 5 1 total 0.001231 0.000105
|
||||
5 10000 6 1 total 0.000512 0.000044
|
||||
material delayedgroup group in nuclide mean std. dev.
|
||||
0 10000 1 1 total 0.000000 0.000000
|
||||
1 10000 2 1 total 0.032739 0.028454
|
||||
2 10000 3 1 total 0.120780 0.170809
|
||||
3 10000 4 1 total 0.302780 0.109110
|
||||
4 10000 5 1 total 0.000000 0.000000
|
||||
5 10000 6 1 total 0.000000 0.000000
|
||||
0 10000 1 1 total 0.013355 0.001207
|
||||
1 10000 2 1 total 0.032600 0.002866
|
||||
2 10000 3 1 total 0.121083 0.010442
|
||||
3 10000 4 1 total 0.305910 0.025627
|
||||
4 10000 5 1 total 0.861934 0.068282
|
||||
5 10000 6 1 total 2.895065 0.230223
|
||||
material delayedgroup group in group out nuclide mean std. dev.
|
||||
0 10000 1 1 1 total 0.000000 0.000000
|
||||
1 10000 2 1 1 total 0.000384 0.000236
|
||||
|
|
|
|||
|
|
@ -423,7 +423,7 @@
|
|||
<filter bins="0.0 20000000.0" type="energy" />
|
||||
<nuclides>total</nuclides>
|
||||
<scores>delayed-nu-fission</scores>
|
||||
<estimator>analog</estimator>
|
||||
<estimator>tracklength</estimator>
|
||||
</tally>
|
||||
<tally id="10048">
|
||||
<filter bins="10000" type="distribcell" />
|
||||
|
|
@ -431,7 +431,7 @@
|
|||
<filter bins="0.0 20000000.0" type="energy" />
|
||||
<nuclides>total</nuclides>
|
||||
<scores>decay-rate</scores>
|
||||
<estimator>analog</estimator>
|
||||
<estimator>tracklength</estimator>
|
||||
</tally>
|
||||
<tally id="10049">
|
||||
<filter bins="10000" type="distribcell" />
|
||||
|
|
|
|||
|
|
@ -64,12 +64,12 @@
|
|||
4 ((0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13... 5 1 total 0.001210 0.000058
|
||||
5 ((0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13... 6 1 total 0.000504 0.000024
|
||||
sum(distribcell) delayedgroup group in nuclide mean std. dev.
|
||||
0 ((0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13... 1 1 total 0.000000 0.000000
|
||||
1 ((0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13... 2 1 total 0.032739 0.046300
|
||||
2 ((0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13... 3 1 total 0.120780 0.170809
|
||||
3 ((0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13... 4 1 total 0.000000 0.000000
|
||||
4 ((0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13... 5 1 total 0.000000 0.000000
|
||||
5 ((0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13... 6 1 total 2.853000 4.034751
|
||||
0 ((0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13... 1 1 total 0.013353 0.000686
|
||||
1 ((0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13... 2 1 total 0.032613 0.001627
|
||||
2 ((0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13... 3 1 total 0.121054 0.005911
|
||||
3 ((0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13... 4 1 total 0.305627 0.014428
|
||||
4 ((0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13... 5 1 total 0.860892 0.037879
|
||||
5 ((0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13... 6 1 total 2.891521 0.127879
|
||||
sum(distribcell) delayedgroup group in group out nuclide mean std. dev.
|
||||
0 ((0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13... 1 1 1 total 0.000000 0.000000
|
||||
1 ((0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13... 2 1 1 total 0.000175 0.000175
|
||||
|
|
|
|||
|
|
@ -396,7 +396,7 @@
|
|||
<filter bins="0.0 0.625 20000000.0" type="energy" />
|
||||
<nuclides>total</nuclides>
|
||||
<scores>delayed-nu-fission</scores>
|
||||
<estimator>analog</estimator>
|
||||
<estimator>tracklength</estimator>
|
||||
</tally>
|
||||
<tally id="10048">
|
||||
<filter bins="10000" type="material" />
|
||||
|
|
@ -404,7 +404,7 @@
|
|||
<filter bins="0.0 0.625 20000000.0" type="energy" />
|
||||
<nuclides>total</nuclides>
|
||||
<scores>decay-rate</scores>
|
||||
<estimator>analog</estimator>
|
||||
<estimator>tracklength</estimator>
|
||||
</tally>
|
||||
<tally id="10049">
|
||||
<filter bins="10000" type="material" />
|
||||
|
|
@ -767,7 +767,7 @@
|
|||
<filter bins="0.0 0.625 20000000.0" type="energy" />
|
||||
<nuclides>total</nuclides>
|
||||
<scores>delayed-nu-fission</scores>
|
||||
<estimator>analog</estimator>
|
||||
<estimator>tracklength</estimator>
|
||||
</tally>
|
||||
<tally id="10099">
|
||||
<filter bins="10001" type="material" />
|
||||
|
|
@ -775,7 +775,7 @@
|
|||
<filter bins="0.0 0.625 20000000.0" type="energy" />
|
||||
<nuclides>total</nuclides>
|
||||
<scores>decay-rate</scores>
|
||||
<estimator>analog</estimator>
|
||||
<estimator>tracklength</estimator>
|
||||
</tally>
|
||||
<tally id="10100">
|
||||
<filter bins="10001" type="material" />
|
||||
|
|
@ -1138,7 +1138,7 @@
|
|||
<filter bins="0.0 0.625 20000000.0" type="energy" />
|
||||
<nuclides>total</nuclides>
|
||||
<scores>delayed-nu-fission</scores>
|
||||
<estimator>analog</estimator>
|
||||
<estimator>tracklength</estimator>
|
||||
</tally>
|
||||
<tally id="10150">
|
||||
<filter bins="10002" type="material" />
|
||||
|
|
@ -1146,7 +1146,7 @@
|
|||
<filter bins="0.0 0.625 20000000.0" type="energy" />
|
||||
<nuclides>total</nuclides>
|
||||
<scores>decay-rate</scores>
|
||||
<estimator>analog</estimator>
|
||||
<estimator>tracklength</estimator>
|
||||
</tally>
|
||||
<tally id="10151">
|
||||
<filter bins="10002" type="material" />
|
||||
|
|
|
|||
|
|
@ -117,18 +117,18 @@ domain=10000 type=beta
|
|||
[1.82980497e-04 4.50738567e-04]
|
||||
[7.48899920e-05 1.88812772e-04]]
|
||||
domain=10000 type=decay-rate
|
||||
[[0.00000000e+00 0.00000000e+00]
|
||||
[0.00000000e+00 3.27390000e-02]
|
||||
[0.00000000e+00 1.20780000e-01]
|
||||
[0.00000000e+00 3.02780000e-01]
|
||||
[0.00000000e+00 0.00000000e+00]
|
||||
[0.00000000e+00 0.00000000e+00]]
|
||||
[[0.00000000e+00 0.00000000e+00]
|
||||
[0.00000000e+00 2.84543737e-02]
|
||||
[0.00000000e+00 1.70808714e-01]
|
||||
[0.00000000e+00 1.09109511e-01]
|
||||
[0.00000000e+00 0.00000000e+00]
|
||||
[0.00000000e+00 0.00000000e+00]]
|
||||
[[1.34450193e-02 1.33360001e-02]
|
||||
[3.20638662e-02 3.27389978e-02]
|
||||
[1.22136025e-01 1.20780007e-01]
|
||||
[3.15269337e-01 3.02780066e-01]
|
||||
[8.89232590e-01 8.49490287e-01]
|
||||
[2.98940410e+00 2.85300088e+00]]
|
||||
[[1.08439397e-03 1.44623816e-03]
|
||||
[2.65794939e-03 3.55041884e-03]
|
||||
[1.02955008e-02 1.30981285e-02]
|
||||
[2.71748525e-02 3.28353351e-02]
|
||||
[7.93682876e-02 9.21239479e-02]
|
||||
[2.66253276e-01 3.09396954e-01]]
|
||||
domain=10000 type=delayed-nu-fission matrix
|
||||
[[[0.00000000e+00 0.00000000e+00]
|
||||
[0.00000000e+00 0.00000000e+00]]
|
||||
|
|
|
|||
|
|
@ -660,7 +660,7 @@
|
|||
<filter bins="0.0 20000000.0" type="energy" />
|
||||
<nuclides>total</nuclides>
|
||||
<scores>delayed-nu-fission</scores>
|
||||
<estimator>analog</estimator>
|
||||
<estimator>tracklength</estimator>
|
||||
</tally>
|
||||
<tally id="10048">
|
||||
<filter bins="1" type="mesh" />
|
||||
|
|
@ -668,7 +668,7 @@
|
|||
<filter bins="0.0 20000000.0" type="energy" />
|
||||
<nuclides>total</nuclides>
|
||||
<scores>decay-rate</scores>
|
||||
<estimator>analog</estimator>
|
||||
<estimator>tracklength</estimator>
|
||||
</tally>
|
||||
<tally id="10049">
|
||||
<filter bins="1" type="mesh" />
|
||||
|
|
|
|||
|
|
@ -214,32 +214,32 @@
|
|||
21 2 2 1 4 1 total 0.002675 0.000783
|
||||
22 2 2 1 5 1 total 0.001199 0.000341
|
||||
23 2 2 1 6 1 total 0.000499 0.000142
|
||||
mesh 1 delayedgroup group in nuclide mean std. dev.
|
||||
x y z
|
||||
0 1 1 1 1 1 total 0.00000 0.00000
|
||||
1 1 1 1 2 1 total 0.00000 0.00000
|
||||
2 1 1 1 3 1 total 0.00000 0.00000
|
||||
3 1 1 1 4 1 total 0.00000 0.00000
|
||||
4 1 1 1 5 1 total 0.84949 1.20136
|
||||
5 1 1 1 6 1 total 0.00000 0.00000
|
||||
6 1 2 1 1 1 total 0.00000 0.00000
|
||||
7 1 2 1 2 1 total 0.00000 0.00000
|
||||
8 1 2 1 3 1 total 0.00000 0.00000
|
||||
9 1 2 1 4 1 total 0.00000 0.00000
|
||||
10 1 2 1 5 1 total 0.00000 0.00000
|
||||
11 1 2 1 6 1 total 0.00000 0.00000
|
||||
12 2 1 1 1 1 total 0.00000 0.00000
|
||||
13 2 1 1 2 1 total 0.00000 0.00000
|
||||
14 2 1 1 3 1 total 0.00000 0.00000
|
||||
15 2 1 1 4 1 total 0.00000 0.00000
|
||||
16 2 1 1 5 1 total 0.00000 0.00000
|
||||
17 2 1 1 6 1 total 0.00000 0.00000
|
||||
18 2 2 1 1 1 total 0.00000 0.00000
|
||||
19 2 2 1 2 1 total 0.00000 0.00000
|
||||
20 2 2 1 3 1 total 0.00000 0.00000
|
||||
21 2 2 1 4 1 total 0.00000 0.00000
|
||||
22 2 2 1 5 1 total 0.00000 0.00000
|
||||
23 2 2 1 6 1 total 0.00000 0.00000
|
||||
mesh 1 delayedgroup group in nuclide mean std. dev.
|
||||
x y z
|
||||
0 1 1 1 1 1 total 0.013362 0.003586
|
||||
1 1 1 1 2 1 total 0.032554 0.008644
|
||||
2 1 1 1 3 1 total 0.121179 0.031941
|
||||
3 1 1 1 4 1 total 0.306858 0.079970
|
||||
4 1 1 1 5 1 total 0.865303 0.220416
|
||||
5 1 1 1 6 1 total 2.906554 0.741587
|
||||
6 1 2 1 1 1 total 0.013362 0.004521
|
||||
7 1 2 1 2 1 total 0.032556 0.011045
|
||||
8 1 2 1 3 1 total 0.121174 0.041226
|
||||
9 1 2 1 4 1 total 0.306816 0.104995
|
||||
10 1 2 1 5 1 total 0.865155 0.301124
|
||||
11 1 2 1 6 1 total 2.906049 1.010025
|
||||
12 2 1 1 1 1 total 0.013353 0.002006
|
||||
13 2 1 1 2 1 total 0.032614 0.004677
|
||||
14 2 1 1 3 1 total 0.121052 0.016785
|
||||
15 2 1 1 4 1 total 0.305600 0.040199
|
||||
16 2 1 1 5 1 total 0.860792 0.101713
|
||||
17 2 1 1 6 1 total 2.891182 0.344217
|
||||
18 2 2 1 1 1 total 0.013356 0.004047
|
||||
19 2 2 1 2 1 total 0.032596 0.009453
|
||||
20 2 2 1 3 1 total 0.121091 0.034091
|
||||
21 2 2 1 4 1 total 0.305990 0.082530
|
||||
22 2 2 1 5 1 total 0.862223 0.216936
|
||||
23 2 2 1 6 1 total 2.896051 0.731528
|
||||
mesh 1 delayedgroup group in group out nuclide mean std. dev.
|
||||
x y z
|
||||
0 1 1 1 1 1 1 total 0.000000 0.000000
|
||||
|
|
|
|||
|
|
@ -396,7 +396,7 @@
|
|||
<filter bins="0.0 0.625 20000000.0" type="energy" />
|
||||
<nuclides>total</nuclides>
|
||||
<scores>delayed-nu-fission</scores>
|
||||
<estimator>analog</estimator>
|
||||
<estimator>tracklength</estimator>
|
||||
</tally>
|
||||
<tally id="10048">
|
||||
<filter bins="10000" type="material" />
|
||||
|
|
@ -404,7 +404,7 @@
|
|||
<filter bins="0.0 0.625 20000000.0" type="energy" />
|
||||
<nuclides>total</nuclides>
|
||||
<scores>decay-rate</scores>
|
||||
<estimator>analog</estimator>
|
||||
<estimator>tracklength</estimator>
|
||||
</tally>
|
||||
<tally id="10049">
|
||||
<filter bins="10000" type="material" />
|
||||
|
|
@ -767,7 +767,7 @@
|
|||
<filter bins="0.0 0.625 20000000.0" type="energy" />
|
||||
<nuclides>total</nuclides>
|
||||
<scores>delayed-nu-fission</scores>
|
||||
<estimator>analog</estimator>
|
||||
<estimator>tracklength</estimator>
|
||||
</tally>
|
||||
<tally id="10099">
|
||||
<filter bins="10001" type="material" />
|
||||
|
|
@ -775,7 +775,7 @@
|
|||
<filter bins="0.0 0.625 20000000.0" type="energy" />
|
||||
<nuclides>total</nuclides>
|
||||
<scores>decay-rate</scores>
|
||||
<estimator>analog</estimator>
|
||||
<estimator>tracklength</estimator>
|
||||
</tally>
|
||||
<tally id="10100">
|
||||
<filter bins="10001" type="material" />
|
||||
|
|
@ -1138,7 +1138,7 @@
|
|||
<filter bins="0.0 0.625 20000000.0" type="energy" />
|
||||
<nuclides>total</nuclides>
|
||||
<scores>delayed-nu-fission</scores>
|
||||
<estimator>analog</estimator>
|
||||
<estimator>tracklength</estimator>
|
||||
</tally>
|
||||
<tally id="10150">
|
||||
<filter bins="10002" type="material" />
|
||||
|
|
@ -1146,7 +1146,7 @@
|
|||
<filter bins="0.0 0.625 20000000.0" type="energy" />
|
||||
<nuclides>total</nuclides>
|
||||
<scores>decay-rate</scores>
|
||||
<estimator>analog</estimator>
|
||||
<estimator>tracklength</estimator>
|
||||
</tally>
|
||||
<tally id="10151">
|
||||
<filter bins="10002" type="material" />
|
||||
|
|
|
|||
|
|
@ -129,18 +129,18 @@
|
|||
8 10000 5 2 total 0.004684 0.000451
|
||||
10 10000 6 2 total 0.001962 0.000189
|
||||
material delayedgroup group in nuclide mean std. dev.
|
||||
1 10000 1 1 total 0.000000 0.000000
|
||||
3 10000 2 1 total 0.000000 0.000000
|
||||
5 10000 3 1 total 0.000000 0.000000
|
||||
7 10000 4 1 total 0.000000 0.000000
|
||||
9 10000 5 1 total 0.000000 0.000000
|
||||
11 10000 6 1 total 0.000000 0.000000
|
||||
0 10000 1 2 total 0.000000 0.000000
|
||||
2 10000 2 2 total 0.032739 0.028454
|
||||
4 10000 3 2 total 0.120780 0.170809
|
||||
6 10000 4 2 total 0.302780 0.109110
|
||||
8 10000 5 2 total 0.000000 0.000000
|
||||
10 10000 6 2 total 0.000000 0.000000
|
||||
1 10000 1 1 total 0.013445 0.001084
|
||||
3 10000 2 1 total 0.032064 0.002658
|
||||
5 10000 3 1 total 0.122136 0.010296
|
||||
7 10000 4 1 total 0.315269 0.027175
|
||||
9 10000 5 1 total 0.889233 0.079368
|
||||
11 10000 6 1 total 2.989404 0.266253
|
||||
0 10000 1 2 total 0.013336 0.001446
|
||||
2 10000 2 2 total 0.032739 0.003550
|
||||
4 10000 3 2 total 0.120780 0.013098
|
||||
6 10000 4 2 total 0.302780 0.032835
|
||||
8 10000 5 2 total 0.849490 0.092124
|
||||
10 10000 6 2 total 2.853001 0.309397
|
||||
material delayedgroup group in group out nuclide mean std. dev.
|
||||
3 10000 1 1 1 total 0.000000 0.000000
|
||||
7 10000 2 1 1 total 0.000000 0.000000
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue