mirror of
https://github.com/openmc-dev/openmc.git
synced 2026-07-28 14:15:42 -04:00
Merge remote-tracking branch 'upstream/develop' into diff_tally3
This commit is contained in:
commit
90e7bd8771
20 changed files with 2372 additions and 1950 deletions
1
.gitignore
vendored
1
.gitignore
vendored
|
|
@ -37,6 +37,7 @@ src/xml-fortran/xmlreader
|
|||
# Test results error file
|
||||
results_error.dat
|
||||
inputs_error.dat
|
||||
results_test.dat
|
||||
|
||||
# Test build files
|
||||
tests/build/
|
||||
|
|
|
|||
|
|
@ -1136,6 +1136,15 @@ Each ``material`` element can have the following attributes or sub-elements:
|
|||
.. note:: If one nuclide is specified in atom percent, all others must also
|
||||
be given in atom percent. The same applies for weight percentages.
|
||||
|
||||
An optional attribute/sub-element for each nuclide is ``scattering``. This
|
||||
attribute may be set to "data" to use the scattering laws specified by the
|
||||
cross section library (default). Alternatively, when set to "iso-in-lab",
|
||||
the scattering laws are used to sample the outgoing energy but an
|
||||
isotropic-in-lab distribution is used to sample the outgoing angle at each
|
||||
scattering interaction. The ``scattering`` attribute may be most useful
|
||||
when using OpenMC to compute multi-group cross-sections for deterministic
|
||||
transport codes and to quantify the effects of anisotropic scattering.
|
||||
|
||||
*Default*: None
|
||||
|
||||
:element:
|
||||
|
|
@ -1162,6 +1171,16 @@ Each ``material`` element can have the following attributes or sub-elements:
|
|||
|
||||
*Default*: None
|
||||
|
||||
An optional attribute/sub-element for each element is ``scattering``. This
|
||||
attribute may be set to "data" to use the scattering laws specified by the
|
||||
cross section library (default). Alternatively, when set to "iso-in-lab",
|
||||
the scattering laws are used to sample the outgoing energy but an
|
||||
isotropic-in-lab distribution is used to sample the outgoing angle at each
|
||||
scattering interaction. The ``scattering`` attribute may be most useful
|
||||
when using OpenMC to compute multi-group cross-sections for deterministic
|
||||
transport codes and to quantify the effects of anisotropic scattering.
|
||||
|
||||
*Default*: None
|
||||
|
||||
:sab:
|
||||
Associates an S(a,b) table with the material. This element has
|
||||
|
|
@ -1488,7 +1507,7 @@ The ``<tally>`` element accepts the following sub-elements:
|
|||
|
||||
:inverse-velocity:
|
||||
The flux-weighted inverse velocity where the velocity is in units of
|
||||
meters per second.
|
||||
centimeters per second.
|
||||
|
||||
.. note::
|
||||
The ``analog`` estimator is actually identical to the ``collision``
|
||||
|
|
|
|||
|
|
@ -24,6 +24,8 @@ class Element(object):
|
|||
Chemical symbol of the element, e.g. Pu
|
||||
xs : str
|
||||
Cross section identifier, e.g. 71c
|
||||
scattering : 'data' or 'iso-in-lab' or None
|
||||
The type of angular scattering distribution to use
|
||||
|
||||
"""
|
||||
|
||||
|
|
@ -31,6 +33,7 @@ class Element(object):
|
|||
# Initialize class attributes
|
||||
self._name = ''
|
||||
self._xs = None
|
||||
self._scattering = None
|
||||
|
||||
# Set class attributes
|
||||
self.name = name
|
||||
|
|
@ -60,6 +63,10 @@ class Element(object):
|
|||
def __repr__(self):
|
||||
string = 'Element - {0}\n'.format(self._name)
|
||||
string += '{0: <16}{1}{2}\n'.format('\tXS', '=\t', self._xs)
|
||||
if self.scattering is not None:
|
||||
string += '{0: <16}{1}{2}\n'.format('\tscattering', '=\t',
|
||||
self.scattering)
|
||||
|
||||
return string
|
||||
|
||||
@property
|
||||
|
|
@ -70,6 +77,10 @@ class Element(object):
|
|||
def name(self):
|
||||
return self._name
|
||||
|
||||
@property
|
||||
def scattering(self):
|
||||
return self._scattering
|
||||
|
||||
@xs.setter
|
||||
def xs(self, xs):
|
||||
check_type('cross section identifier', xs, basestring)
|
||||
|
|
@ -78,4 +89,14 @@ class Element(object):
|
|||
@name.setter
|
||||
def name(self, name):
|
||||
check_type('name', name, basestring)
|
||||
self._name = name
|
||||
self._name = name
|
||||
|
||||
@scattering.setter
|
||||
def scattering(self, scattering):
|
||||
|
||||
if not scattering in ['data', 'iso-in-lab']:
|
||||
msg = 'Unable to set scattering for Element to {0} ' \
|
||||
'which is not "data" or "iso-in-lab"'.format(scattering)
|
||||
raise ValueError(msg)
|
||||
|
||||
self._scattering = scattering
|
||||
|
|
|
|||
|
|
@ -33,8 +33,8 @@ NO_DENSITY = 99999.
|
|||
|
||||
|
||||
class Material(object):
|
||||
"""A material composed of a collection of nuclides/elements that can be assigned
|
||||
to a region of space.
|
||||
"""A material composed of a collection of nuclides/elements that can be
|
||||
assigned to a region of space.
|
||||
|
||||
Parameters
|
||||
----------
|
||||
|
|
@ -371,6 +371,12 @@ class Material(object):
|
|||
|
||||
self._sab.append((name, xs))
|
||||
|
||||
def make_isotropic_in_lab(self):
|
||||
for nuclide_name in self._nuclides:
|
||||
self._nuclides[nuclide_name][0].scattering = 'iso-in-lab'
|
||||
for element_name in self._elements:
|
||||
self._element[element_name][0].scattering = 'iso-in-lab'
|
||||
|
||||
def get_all_nuclides(self):
|
||||
"""Returns all nuclides in the material
|
||||
|
||||
|
|
@ -401,8 +407,11 @@ class Material(object):
|
|||
else:
|
||||
xml_element.set("wo", str(nuclide[1]))
|
||||
|
||||
if nuclide[0]._xs is not None:
|
||||
xml_element.set("xs", nuclide[0]._xs)
|
||||
if nuclide[0].xs is not None:
|
||||
xml_element.set("xs", nuclide[0].xs)
|
||||
|
||||
if not nuclide[0].scattering is None:
|
||||
xml_element.set("scattering", nuclide[0].scattering)
|
||||
|
||||
return xml_element
|
||||
|
||||
|
|
@ -416,6 +425,9 @@ class Material(object):
|
|||
else:
|
||||
xml_element.set("wo", str(element[1]))
|
||||
|
||||
if not element[0].scattering is None:
|
||||
xml_element.set("scattering", element[0].scattering)
|
||||
|
||||
return xml_element
|
||||
|
||||
def _get_nuclides_xml(self, nuclides, distrib=False):
|
||||
|
|
@ -590,6 +602,10 @@ class MaterialsFile(object):
|
|||
|
||||
self._materials.remove(material)
|
||||
|
||||
def make_isotropic_in_lab(self):
|
||||
for material in self._materials:
|
||||
material.make_isotropic_in_lab()
|
||||
|
||||
def _create_material_subelements(self):
|
||||
subelement = ET.SubElement(self._materials_file, "default_xs")
|
||||
|
||||
|
|
|
|||
|
|
@ -53,6 +53,8 @@ class Library(object):
|
|||
The types of cross sections in the library (e.g., ['total', 'scatter'])
|
||||
domain_type : {'material', 'cell', 'distribcell', 'universe'}
|
||||
Domain type for spatial homogenization
|
||||
domains : Iterable of Material, Cell or Universe
|
||||
The spatial domain(s) for which MGXS in the Library are computed
|
||||
correction : 'P0' or None
|
||||
Apply the P0 correction to scattering matrices if set to 'P0'
|
||||
energy_groups : EnergyGroups
|
||||
|
|
@ -80,6 +82,7 @@ class Library(object):
|
|||
self._by_nuclide = None
|
||||
self._mgxs_types = []
|
||||
self._domain_type = None
|
||||
self._domains = 'all'
|
||||
self._correction = 'P0'
|
||||
self._energy_groups = None
|
||||
self._tally_trigger = None
|
||||
|
|
@ -105,6 +108,7 @@ class Library(object):
|
|||
clone._by_nuclide = self.by_nuclide
|
||||
clone._mgxs_types = self.mgxs_types
|
||||
clone._domain_type = self.domain_type
|
||||
clone._domains = self.domains
|
||||
clone._correction = self.correction
|
||||
clone._energy_groups = copy.deepcopy(self.energy_groups, memo)
|
||||
clone._tally_trigger = copy.deepcopy(self.tally_trigger, memo)
|
||||
|
|
@ -153,22 +157,24 @@ class Library(object):
|
|||
def by_nuclide(self):
|
||||
return self._by_nuclide
|
||||
|
||||
@property
|
||||
def domains(self):
|
||||
if self.domain_type is None:
|
||||
raise ValueError('Unable to get all domains without a domain type')
|
||||
|
||||
if self.domain_type == 'material':
|
||||
return self.openmc_geometry.get_all_materials()
|
||||
elif self.domain_type == 'cell' or self.domain_type == 'distribcell':
|
||||
return self.openmc_geometry.get_all_material_cells()
|
||||
elif self.domain_type == 'universe':
|
||||
return self.openmc_geometry.get_all_universes()
|
||||
|
||||
@property
|
||||
def domain_type(self):
|
||||
return self._domain_type
|
||||
|
||||
@property
|
||||
def domains(self):
|
||||
if self._domains == 'all':
|
||||
if self.domain_type == 'material':
|
||||
return self.openmc_geometry.get_all_materials()
|
||||
elif self.domain_type in ['cell', 'distribcell']:
|
||||
return self.openmc_geometry.get_all_material_cells()
|
||||
elif self.domain_type == 'universe':
|
||||
return self.openmc_geometry.get_all_universes()
|
||||
else:
|
||||
raise ValueError('Unable to get domains without a domain type')
|
||||
else:
|
||||
return self._domains
|
||||
|
||||
@property
|
||||
def correction(self):
|
||||
return self._correction
|
||||
|
|
@ -223,6 +229,38 @@ class Library(object):
|
|||
cv.check_value('domain type', domain_type, tuple(openmc.mgxs.DOMAIN_TYPES))
|
||||
self._domain_type = domain_type
|
||||
|
||||
@domains.setter
|
||||
def domains(self, domains):
|
||||
|
||||
# Use all materials, cells or universes in the geometry as domains
|
||||
if domains == 'all':
|
||||
self._domains = domains
|
||||
|
||||
# User specified a list of material, cell or universe domains
|
||||
else:
|
||||
if self.domain_type == 'material':
|
||||
cv.check_iterable_type('domain', domains, openmc.Material)
|
||||
all_domains = self.openmc_geometry.get_all_materials()
|
||||
elif self.domain_type in ['cell', 'distribcell']:
|
||||
cv.check_iterable_type('domain', domains, openmc.Cell)
|
||||
all_domains = self.openmc_geometry.get_all_material_cells()
|
||||
elif self.domain_type == 'universe':
|
||||
cv.check_iterable_type('domain', domains, openmc.Universe)
|
||||
all_domains = self.openmc_geometry.get_all_universes()
|
||||
else:
|
||||
msg = 'Unable to set domains with ' \
|
||||
'domain type "{}"'.format(self.domain_type)
|
||||
raise ValueError(msg)
|
||||
|
||||
# Check that each domain can be found in the geometry
|
||||
for domain in domains:
|
||||
if domain not in all_domains:
|
||||
msg = 'Domain "{}" could not be found in the ' \
|
||||
'geometry.'.format(domain)
|
||||
raise ValueError(msg)
|
||||
|
||||
self._domains = domains
|
||||
|
||||
@correction.setter
|
||||
def correction(self, correction):
|
||||
cv.check_value('correction', correction, ('P0', None))
|
||||
|
|
|
|||
|
|
@ -824,9 +824,9 @@ class MGXS(object):
|
|||
mean = tally.get_reshaped_data(value='mean')
|
||||
std_dev = tally.get_reshaped_data(value='std_dev')
|
||||
|
||||
# Get the mean of the mean, std. dev. across requested subdomains
|
||||
mean = np.mean(mean[subdomains, ...], axis=0)
|
||||
std_dev = np.mean(std_dev[subdomains, ...]**2, axis=0)
|
||||
# Get the mean, std. dev. across requested subdomains
|
||||
mean = np.sum(mean[subdomains, ...], axis=0)
|
||||
std_dev = np.sum(std_dev[subdomains, ...]**2, axis=0)
|
||||
std_dev = np.sqrt(std_dev)
|
||||
|
||||
# If domain is distribcell, make subdomain-averaged a 'cell' domain
|
||||
|
|
@ -1224,23 +1224,31 @@ class MGXS(object):
|
|||
else:
|
||||
df = df.drop('score', axis=1)
|
||||
|
||||
# Rename energy(out) columns
|
||||
columns = []
|
||||
if 'energy [MeV]' in df:
|
||||
# Override energy groups bounds with indices
|
||||
groups = np.arange(self.num_groups, 0, -1, dtype=np.int)
|
||||
groups = np.repeat(groups, self.num_nuclides)
|
||||
if 'energy [MeV]' in df and 'energyout [MeV]' in df:
|
||||
df.rename(columns={'energy [MeV]': 'group in'}, inplace=True)
|
||||
columns.append('group in')
|
||||
if 'energyout [MeV]' in df:
|
||||
df.rename(columns={'energyout [MeV]': 'group out'}, inplace=True)
|
||||
columns.append('group out')
|
||||
in_groups = np.tile(groups, self.num_subdomains)
|
||||
in_groups = np.repeat(in_groups, self.num_groups)
|
||||
df['group in'] = in_groups
|
||||
|
||||
# Loop over all energy groups and override the bounds with indices
|
||||
template = '({0:.1e} - {1:.1e})'
|
||||
bins = self.energy_groups.group_edges
|
||||
for column in columns:
|
||||
for i in range(self.num_groups):
|
||||
group = template.format(bins[i], bins[i+1])
|
||||
row_indices = df[column] == group
|
||||
df.loc[row_indices, column] = self.num_groups - i
|
||||
df.rename(columns={'energyout [MeV]': 'group out'}, inplace=True)
|
||||
out_groups = np.tile(groups, self.num_subdomains * self.num_groups)
|
||||
df['group out'] = out_groups
|
||||
columns = ['group in', 'group out']
|
||||
|
||||
elif 'energyout [MeV]' in df:
|
||||
df.rename(columns={'energyout [MeV]': 'group out'}, inplace=True)
|
||||
in_groups = np.tile(groups, self.num_subdomains)
|
||||
df['group out'] = in_groups
|
||||
columns = ['group out']
|
||||
|
||||
elif 'energy [MeV]' in df:
|
||||
df.rename(columns={'energy [MeV]': 'group in'}, inplace=True)
|
||||
in_groups = np.tile(groups, self.num_subdomains)
|
||||
df['group in'] = in_groups
|
||||
columns = ['group in']
|
||||
|
||||
# Select out those groups the user requested
|
||||
if groups != 'all':
|
||||
|
|
|
|||
|
|
@ -26,6 +26,8 @@ class Nuclide(object):
|
|||
zaid : int
|
||||
1000*(atomic number) + mass number. As an example, the zaid of U-235
|
||||
would be 92235.
|
||||
scattering : 'data' or 'iso-in-lab' or None
|
||||
The type of angular scattering distribution to use
|
||||
|
||||
"""
|
||||
|
||||
|
|
@ -34,6 +36,7 @@ class Nuclide(object):
|
|||
self._name = ''
|
||||
self._xs = None
|
||||
self._zaid = None
|
||||
self._scattering = None
|
||||
|
||||
# Set the Material class attributes
|
||||
self.name = name
|
||||
|
|
@ -79,6 +82,10 @@ class Nuclide(object):
|
|||
def zaid(self):
|
||||
return self._zaid
|
||||
|
||||
@property
|
||||
def scattering(self):
|
||||
return self._scattering
|
||||
|
||||
@name.setter
|
||||
def name(self, name):
|
||||
check_type('name', name, basestring)
|
||||
|
|
@ -92,4 +99,24 @@ class Nuclide(object):
|
|||
@zaid.setter
|
||||
def zaid(self, zaid):
|
||||
check_type('zaid', zaid, Integral)
|
||||
self._zaid = zaid
|
||||
self._zaid = zaid
|
||||
|
||||
@scattering.setter
|
||||
def scattering(self, scattering):
|
||||
|
||||
if not scattering in ['data', 'iso-in-lab']:
|
||||
msg = 'Unable to set scattering for Nuclide to {0} ' \
|
||||
'which is not "data" or "iso-in-lab"'.format(scattering)
|
||||
raise ValueError(msg)
|
||||
|
||||
self._scattering = scattering
|
||||
|
||||
def __repr__(self):
|
||||
string = 'Nuclide - {0}\n'.format(self._name)
|
||||
string += '{0: <16}{1}{2}\n'.format('\tXS', '=\t', self.xs)
|
||||
if self.zaid is not None:
|
||||
string += '{0: <16}{1}{2}\n'.format('\tZAID', '=\t', self.zaid)
|
||||
if self.scattering is not None:
|
||||
string += '{0: <16}{1}{2}\n'.format('\tscattering', '=\t',
|
||||
self.scattering)
|
||||
return string
|
||||
|
|
|
|||
|
|
@ -486,20 +486,22 @@ def get_opencg_cell(openmc_cell):
|
|||
# works if the region is a single half-space or an intersection of
|
||||
# half-spaces, i.e., no complex cells.
|
||||
region = openmc_cell.region
|
||||
if isinstance(region, Halfspace):
|
||||
surface = region.surface
|
||||
halfspace = -1 if region.side == '-' else 1
|
||||
opencg_cell.add_surface(get_opencg_surface(surface), halfspace)
|
||||
elif isinstance(region, Intersection):
|
||||
for node in region.nodes:
|
||||
if not isinstance(node, Halfspace):
|
||||
raise NotImplementedError("Complex cells not yet supported "
|
||||
"in OpenCG.")
|
||||
surface = node.surface
|
||||
halfspace = -1 if node.side == '-' else 1
|
||||
if region is not None:
|
||||
if isinstance(region, Halfspace):
|
||||
surface = region.surface
|
||||
halfspace = -1 if region.side == '-' else 1
|
||||
opencg_cell.add_surface(get_opencg_surface(surface), halfspace)
|
||||
else:
|
||||
raise NotImplementedError("Complex cells not yet supported in OpenCG.")
|
||||
elif isinstance(region, Intersection):
|
||||
for node in region.nodes:
|
||||
if not isinstance(node, Halfspace):
|
||||
raise NotImplementedError("Complex cells not yet "
|
||||
"supported in OpenCG.")
|
||||
surface = node.surface
|
||||
halfspace = -1 if node.side == '-' else 1
|
||||
opencg_cell.add_surface(get_opencg_surface(surface), halfspace)
|
||||
else:
|
||||
raise NotImplementedError("Complex cells not yet supported "
|
||||
"in OpenCG.")
|
||||
|
||||
# Add the OpenMC Cell to the global collection of all OpenMC Cells
|
||||
OPENMC_CELLS[cell_id] = openmc_cell
|
||||
|
|
@ -877,6 +879,7 @@ def get_opencg_lattice(openmc_lattice):
|
|||
pitch = openmc_lattice.pitch
|
||||
lower_left = openmc_lattice.lower_left
|
||||
universes = openmc_lattice.universes
|
||||
outer = openmc_lattice.outer
|
||||
|
||||
if len(pitch) == 2:
|
||||
new_pitch = np.ones(3, dtype=np.float64)
|
||||
|
|
@ -909,6 +912,8 @@ def get_opencg_lattice(openmc_lattice):
|
|||
opencg_lattice.dimension = dimension
|
||||
opencg_lattice.width = pitch
|
||||
opencg_lattice.universes = universe_array
|
||||
if outer is not None:
|
||||
opencg_lattice.outside = get_opencg_universe(outer)
|
||||
|
||||
offset = np.array(lower_left, dtype=np.float64) - \
|
||||
((np.array(pitch, dtype=np.float64) *
|
||||
|
|
@ -955,6 +960,7 @@ def get_openmc_lattice(opencg_lattice):
|
|||
width = opencg_lattice.width
|
||||
offset = opencg_lattice.offset
|
||||
universes = opencg_lattice.universes
|
||||
outer = opencg_lattice.outside
|
||||
|
||||
# Initialize an empty array for the OpenMC nested Universes in this Lattice
|
||||
universe_array = np.ndarray(tuple(np.array(dimension)),
|
||||
|
|
@ -985,6 +991,8 @@ def get_openmc_lattice(opencg_lattice):
|
|||
openmc_lattice.pitch = width
|
||||
openmc_lattice.universes = universe_array
|
||||
openmc_lattice.lower_left = lower_left
|
||||
if outer is not None:
|
||||
openmc_lattice.outer = get_openmc_universe(outer)
|
||||
|
||||
# Add the OpenMC Lattice to the global collection of all OpenMC Lattices
|
||||
OPENMC_LATTICES[lattice_id] = openmc_lattice
|
||||
|
|
|
|||
196
openmc/plots.py
196
openmc/plots.py
|
|
@ -5,9 +5,9 @@ import sys
|
|||
|
||||
import numpy as np
|
||||
|
||||
import openmc
|
||||
import openmc.checkvalue as cv
|
||||
from openmc.clean_xml import *
|
||||
from openmc.checkvalue import (check_type, check_value, check_length,
|
||||
check_greater_than, check_less_than)
|
||||
|
||||
if sys.version_info[0] >= 3:
|
||||
basestring = str
|
||||
|
|
@ -143,70 +143,70 @@ class Plot(object):
|
|||
self._id = AUTO_PLOT_ID
|
||||
AUTO_PLOT_ID += 1
|
||||
else:
|
||||
check_type('plot ID', plot_id, Integral)
|
||||
check_greater_than('plot ID', plot_id, 0, equality=True)
|
||||
cv.check_type('plot ID', plot_id, Integral)
|
||||
cv.check_greater_than('plot ID', plot_id, 0, equality=True)
|
||||
self._id = plot_id
|
||||
|
||||
@name.setter
|
||||
def name(self, name):
|
||||
check_type('plot name', name, basestring)
|
||||
cv.check_type('plot name', name, basestring)
|
||||
self._name = name
|
||||
|
||||
@width.setter
|
||||
def width(self, width):
|
||||
check_type('plot width', width, Iterable, Real)
|
||||
check_length('plot width', width, 2, 3)
|
||||
cv.check_type('plot width', width, Iterable, Real)
|
||||
cv.check_length('plot width', width, 2, 3)
|
||||
self._width = width
|
||||
|
||||
@origin.setter
|
||||
def origin(self, origin):
|
||||
check_type('plot origin', origin, Iterable, Real)
|
||||
check_length('plot origin', origin, 3)
|
||||
cv.check_type('plot origin', origin, Iterable, Real)
|
||||
cv.check_length('plot origin', origin, 3)
|
||||
self._origin = origin
|
||||
|
||||
@pixels.setter
|
||||
def pixels(self, pixels):
|
||||
check_type('plot pixels', pixels, Iterable, Integral)
|
||||
check_length('plot pixels', pixels, 2, 3)
|
||||
cv.check_type('plot pixels', pixels, Iterable, Integral)
|
||||
cv.check_length('plot pixels', pixels, 2, 3)
|
||||
for dim in pixels:
|
||||
check_greater_than('plot pixels', dim, 0)
|
||||
cv.check_greater_than('plot pixels', dim, 0)
|
||||
self._pixels = pixels
|
||||
|
||||
@filename.setter
|
||||
def filename(self, filename):
|
||||
check_type('filename', filename, basestring)
|
||||
cv.check_type('filename', filename, basestring)
|
||||
self._filename = filename
|
||||
|
||||
@color.setter
|
||||
def color(self, color):
|
||||
check_type('plot color', color, basestring)
|
||||
check_value('plot color', color, ['cell', 'mat'])
|
||||
cv.check_type('plot color', color, basestring)
|
||||
cv.check_value('plot color', color, ['cell', 'mat'])
|
||||
self._color = color
|
||||
|
||||
@type.setter
|
||||
def type(self, plottype):
|
||||
check_type('plot type', plottype, basestring)
|
||||
check_value('plot type', plottype, ['slice', 'voxel'])
|
||||
cv.check_type('plot type', plottype, basestring)
|
||||
cv.check_value('plot type', plottype, ['slice', 'voxel'])
|
||||
self._type = plottype
|
||||
|
||||
@basis.setter
|
||||
def basis(self, basis):
|
||||
check_type('plot basis', basis, basestring)
|
||||
check_value('plot basis', basis, ['xy', 'xz', 'yz'])
|
||||
cv.check_type('plot basis', basis, basestring)
|
||||
cv.check_value('plot basis', basis, ['xy', 'xz', 'yz'])
|
||||
self._basis = basis
|
||||
|
||||
@background.setter
|
||||
def background(self, background):
|
||||
check_type('plot background', background, Iterable, Integral)
|
||||
check_length('plot background', background, 3)
|
||||
cv.check_type('plot background', background, Iterable, Integral)
|
||||
cv.check_length('plot background', background, 3)
|
||||
for rgb in background:
|
||||
check_greater_than('plot background',rgb, 0, True)
|
||||
check_less_than('plot background', rgb, 256)
|
||||
cv.check_greater_than('plot background',rgb, 0, True)
|
||||
cv.check_less_than('plot background', rgb, 256)
|
||||
self._background = background
|
||||
|
||||
@col_spec.setter
|
||||
def col_spec(self, col_spec):
|
||||
check_type('plot col_spec parameter', col_spec, dict, Integral)
|
||||
cv.check_type('plot col_spec parameter', col_spec, dict, Integral)
|
||||
|
||||
for key in col_spec:
|
||||
if key < 0:
|
||||
|
|
@ -229,18 +229,18 @@ class Plot(object):
|
|||
|
||||
@mask_componenets.setter
|
||||
def mask_components(self, mask_components):
|
||||
check_type('plot mask_components', mask_components, Iterable, Integral)
|
||||
cv.check_type('plot mask_components', mask_components, Iterable, Integral)
|
||||
for component in mask_components:
|
||||
check_greater_than('plot mask_components', component, 0, True)
|
||||
cv.check_greater_than('plot mask_components', component, 0, True)
|
||||
self._mask_components = mask_components
|
||||
|
||||
@mask_background.setter
|
||||
def mask_background(self, mask_background):
|
||||
check_type('plot mask background', mask_background, Iterable, Integral)
|
||||
check_length('plot mask background', mask_background, 3)
|
||||
cv.check_type('plot mask background', mask_background, Iterable, Integral)
|
||||
cv.check_length('plot mask background', mask_background, 3)
|
||||
for rgb in mask_background:
|
||||
check_greater_than('plot mask background', rgb, 0, True)
|
||||
check_less_than('plot mask background', rgb, 256)
|
||||
cv.check_greater_than('plot mask background', rgb, 0, True)
|
||||
cv.check_less_than('plot mask background', rgb, 256)
|
||||
self._mask_background = mask_background
|
||||
|
||||
def __repr__(self):
|
||||
|
|
@ -261,6 +261,97 @@ class Plot(object):
|
|||
string += '{0: <16}{1}{2}\n'.format('\tCol Spec', '=\t', self._col_spec)
|
||||
return string
|
||||
|
||||
def colorize(self, geometry, seed=1):
|
||||
"""Generate a color scheme for each domain in the plot.
|
||||
|
||||
This routine may be used to generate random, reproducible color schemes.
|
||||
The colors generated are based upon cell/material IDs in the geometry.
|
||||
|
||||
Parameters
|
||||
----------
|
||||
geometry : openmc.Geometry
|
||||
The geometry for which the plot is defined
|
||||
seed : Integral
|
||||
The random number seed used to generate the color scheme
|
||||
|
||||
"""
|
||||
|
||||
cv.check_type('geometry', geometry, openmc.Geometry)
|
||||
cv.check_type('seed', seed, Integral)
|
||||
cv.check_greater_than('seed', seed, 1, equality=True)
|
||||
|
||||
# Get collections of the domains which will be plotted
|
||||
if self.color is 'mat':
|
||||
domains = geometry.get_all_materials()
|
||||
else:
|
||||
domains = geometry.get_all_cells()
|
||||
|
||||
# Set the seed for the random number generator
|
||||
np.random.seed(seed)
|
||||
|
||||
# Generate random colors for each feature
|
||||
self.col_spec = {}
|
||||
for domain in domains:
|
||||
r = np.random.randint(0, 256)
|
||||
g = np.random.randint(0, 256)
|
||||
b = np.random.randint(0, 256)
|
||||
self.col_spec[domain] = (r, g, b)
|
||||
|
||||
def highlight_domains(self, geometry, domains, seed=1,
|
||||
alpha=0.5, background='gray'):
|
||||
"""Use alpha compositing to highlight one or more domains in the plot.
|
||||
|
||||
This routine generates a color scheme and applies alpha compositing
|
||||
to make all domains except the highlighted ones appear partially
|
||||
transparent.
|
||||
|
||||
Parameters
|
||||
----------
|
||||
geometry : openmc.Geometry
|
||||
The geometry for which the plot is defined
|
||||
domains : Iterable of Integral
|
||||
A collection of the domain IDs to highlight in the plot
|
||||
seed : Integral
|
||||
The random number seed used to generate the color scheme
|
||||
alpha : Real in [0,1]
|
||||
The value to apply in alpha compisiting
|
||||
background : 3-tuple of Integral or 'white' or 'black' or 'gray'
|
||||
The background color to apply in alpha compisiting
|
||||
|
||||
"""
|
||||
|
||||
cv.check_iterable_type('domains', domains, Integral)
|
||||
cv.check_type('alpha', alpha, Real)
|
||||
cv.check_greater_than('alpha', alpha, 0., equality=True)
|
||||
cv.check_less_than('alpha', alpha, 1., equality=True)
|
||||
|
||||
# Get a background (R,G,B) tuple to apply in alpha compositing
|
||||
if isinstance(background, basestring):
|
||||
if background == 'white':
|
||||
background = (255, 255, 255)
|
||||
elif background == 'black':
|
||||
background = (0, 0, 0)
|
||||
elif background == 'gray':
|
||||
background = (160, 160, 160)
|
||||
else:
|
||||
msg = 'The background "{}" is not defined'.format(background)
|
||||
raise ValueError(msg)
|
||||
|
||||
cv.check_iterable_type('background', background, Integral)
|
||||
|
||||
# Generate a color scheme
|
||||
self.colorize(geometry, seed)
|
||||
|
||||
# Apply alpha compositing to the colors for all domains
|
||||
# other than those the user wishes to highlight
|
||||
for domain_id in self.col_spec:
|
||||
if domain_id not in domains:
|
||||
r, g, b = self.col_spec[domain_id]
|
||||
r = int(((1-alpha) * background[0]) + (alpha * r))
|
||||
g = int(((1-alpha) * background[1]) + (alpha * g))
|
||||
b = int(((1-alpha) * background[2]) + (alpha * b))
|
||||
self._col_spec[domain_id] = (r, g, b)
|
||||
|
||||
def get_plot_xml(self):
|
||||
"""Return XML representation of the plot
|
||||
|
||||
|
|
@ -349,6 +440,51 @@ class PlotsFile(object):
|
|||
|
||||
self._plots.remove(plot)
|
||||
|
||||
def colorize(self, geometry, seed=1):
|
||||
"""Generate a consistent color scheme for each domain in each plot.
|
||||
|
||||
This routine may be used to generate random, reproducible color schemes.
|
||||
The colors generated are based upon cell/material IDs in the geometry.
|
||||
The color schemes will be consistent for all plots in "plots.xml".
|
||||
|
||||
Parameters
|
||||
----------
|
||||
geometry : openmc.Geometry
|
||||
The geometry for which the plots are defined
|
||||
seed : Integral
|
||||
The random number seed used to generate the color scheme
|
||||
|
||||
"""
|
||||
|
||||
for plot in self._plots:
|
||||
plot.colorize(geometry, seed)
|
||||
|
||||
|
||||
def highlight_domains(self, geometry, domains, seed=1,
|
||||
alpha=0.5, background='gray'):
|
||||
"""Use alpha compositing to highlight one or more domains in the plot.
|
||||
|
||||
This routine generates a color scheme and applies alpha compositing
|
||||
to make all domains except the highlighted ones partially transparent.
|
||||
|
||||
Parameters
|
||||
----------
|
||||
geometry : openmc.Geometry
|
||||
The geometry for which the plot is defined
|
||||
domains : Iterable of Integral
|
||||
A collection of the domain IDs to highlight in the plot
|
||||
seed : Integral
|
||||
The random number seed used to generate the color scheme
|
||||
alpha : Real in [0,1]
|
||||
The value to apply in alpha compisiting
|
||||
background : 3-tuple of Integral or 'white' or 'black' or 'gray'
|
||||
The background color to apply in alpha compisiting
|
||||
|
||||
"""
|
||||
|
||||
for plot in self._plots:
|
||||
plot.highlight_domains(geometry, domains, seed, alpha, background)
|
||||
|
||||
def _create_plot_subelements(self):
|
||||
for plot in self._plots:
|
||||
xml_element = plot.get_plot_xml()
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@ module input_xml
|
|||
use error, only: fatal_error, warning
|
||||
use geometry_header, only: Cell, Lattice, RectLattice, HexLattice
|
||||
use global
|
||||
use list_header, only: ListChar, ListReal
|
||||
use list_header, only: ListChar, ListInt, ListReal
|
||||
use mesh_header, only: RegularMesh
|
||||
use output, only: write_message
|
||||
use plot_header
|
||||
|
|
@ -994,7 +994,7 @@ contains
|
|||
logical :: boundary_exists
|
||||
character(MAX_LINE_LEN) :: filename
|
||||
character(MAX_WORD_LEN) :: word
|
||||
character(MAX_LINE_LEN) :: region_spec
|
||||
character(1000) :: region_spec
|
||||
type(Cell), pointer :: c
|
||||
class(Surface), pointer :: s
|
||||
class(Lattice), pointer :: lat
|
||||
|
|
@ -1759,8 +1759,10 @@ contains
|
|||
|
||||
integer :: i ! loop index for materials
|
||||
integer :: j ! loop index for nuclides
|
||||
integer :: k ! loop index for elements
|
||||
integer :: n ! number of nuclides
|
||||
integer :: n_sab ! number of sab tables for a material
|
||||
integer :: n_nuc_ele ! number of nuclides in an element
|
||||
integer :: index_list ! index in xs_listings array
|
||||
integer :: index_nuclide ! index in nuclides
|
||||
integer :: index_sab ! index in sab_tables
|
||||
|
|
@ -1775,6 +1777,7 @@ contains
|
|||
character(MAX_LINE_LEN) :: temp_str ! temporary string when reading
|
||||
type(ListChar) :: list_names ! temporary list of nuclide names
|
||||
type(ListReal) :: list_density ! temporary list of nuclide densities
|
||||
type(ListInt) :: list_iso_lab ! temporary list of isotropic lab scatterers
|
||||
type(Material), pointer :: mat => null()
|
||||
type(Node), pointer :: doc => null()
|
||||
type(Node), pointer :: node_mat => null()
|
||||
|
|
@ -1934,6 +1937,21 @@ contains
|
|||
end if
|
||||
end if
|
||||
|
||||
! Check enforced isotropic lab scattering
|
||||
if (check_for_node(node_nuc, "scattering")) then
|
||||
call get_node_value(node_nuc, "scattering", temp_str)
|
||||
if (adjustl(to_lower(temp_str)) == "iso-in-lab") then
|
||||
call list_iso_lab % append(1)
|
||||
else if (adjustl(to_lower(temp_str)) == "data") then
|
||||
call list_iso_lab % append(0)
|
||||
else
|
||||
call fatal_error("Scattering must be isotropic in lab or follow&
|
||||
& the ACE file data")
|
||||
end if
|
||||
else
|
||||
call list_iso_lab % append(0)
|
||||
end if
|
||||
|
||||
! store full name
|
||||
call get_node_value(node_nuc, "name", temp_str)
|
||||
if (check_for_node(node_nuc, "xs")) &
|
||||
|
|
@ -2005,6 +2023,9 @@ contains
|
|||
&element: " // trim(name))
|
||||
end if
|
||||
|
||||
! Get current number of nuclides
|
||||
n_nuc_ele = list_names % size()
|
||||
|
||||
! Expand element into naturally-occurring isotopes
|
||||
if (check_for_node(node_ele, "ao")) then
|
||||
call get_node_value(node_ele, "ao", temp_dble)
|
||||
|
|
@ -2014,6 +2035,29 @@ contains
|
|||
call fatal_error("The ability to expand a natural element based on &
|
||||
&weight percentage is not yet supported.")
|
||||
end if
|
||||
|
||||
! Compute number of new nuclides from the natural element expansion
|
||||
n_nuc_ele = list_names % size() - n_nuc_ele
|
||||
|
||||
! Check enforced isotropic lab scattering
|
||||
if (check_for_node(node_ele, "scattering")) then
|
||||
call get_node_value(node_ele, "scattering", temp_str)
|
||||
else
|
||||
temp_str = "data"
|
||||
end if
|
||||
|
||||
! Set ace or iso-in-lab scattering for each nuclide in element
|
||||
do k = 1, n_nuc_ele
|
||||
if (adjustl(to_lower(temp_str)) == "iso-in-lab") then
|
||||
call list_iso_lab % append(1)
|
||||
else if (adjustl(to_lower(temp_str)) == "data") then
|
||||
call list_iso_lab % append(0)
|
||||
else
|
||||
call fatal_error("Scattering must be isotropic in lab or follow&
|
||||
& the ACE file data")
|
||||
end if
|
||||
end do
|
||||
|
||||
end do NATURAL_ELEMENTS
|
||||
|
||||
! ========================================================================
|
||||
|
|
@ -2025,6 +2069,7 @@ contains
|
|||
allocate(mat % names(n))
|
||||
allocate(mat % nuclide(n))
|
||||
allocate(mat % atom_density(n))
|
||||
allocate(mat % p0(n))
|
||||
|
||||
ALL_NUCLIDES: do j = 1, mat % n_nuclides
|
||||
! Check that this nuclide is listed in the cross_sections.xml file
|
||||
|
|
@ -2061,6 +2106,14 @@ contains
|
|||
! Copy name and atom/weight percent
|
||||
mat % names(j) = name
|
||||
mat % atom_density(j) = list_density % get_item(j)
|
||||
|
||||
! Cast integer isotropic lab scattering flag to boolean
|
||||
if (list_iso_lab % get_item(j) == 1) then
|
||||
mat % p0(j) = .true.
|
||||
else
|
||||
mat % p0(j) = .false.
|
||||
end if
|
||||
|
||||
end do ALL_NUCLIDES
|
||||
|
||||
! Check to make sure either all atom percents or all weight percents are
|
||||
|
|
@ -2077,6 +2130,7 @@ contains
|
|||
! Clear lists
|
||||
call list_names % clear()
|
||||
call list_density % clear()
|
||||
call list_iso_lab % clear()
|
||||
|
||||
! =======================================================================
|
||||
! READ AND PARSE <sab> TAG FOR S(a,b) DATA
|
||||
|
|
@ -4245,7 +4299,6 @@ contains
|
|||
call list_density % append(density * 0.999885_8)
|
||||
call list_names % append('1002.' // xs)
|
||||
call list_density % append(density * 0.000115_8)
|
||||
|
||||
case ('he')
|
||||
call list_names % append('2003.' // xs)
|
||||
call list_density % append(density * 0.00000134_8)
|
||||
|
|
|
|||
|
|
@ -34,6 +34,9 @@ module material_header
|
|||
! Does this material contain fissionable nuclides?
|
||||
logical :: fissionable = .false.
|
||||
|
||||
! enforce isotropic scattering in lab
|
||||
logical, allocatable :: p0(:)
|
||||
|
||||
end type Material
|
||||
|
||||
end module material_header
|
||||
|
|
|
|||
|
|
@ -73,10 +73,11 @@ contains
|
|||
type(Particle), intent(inout) :: p
|
||||
|
||||
integer :: i_nuclide ! index in nuclides array
|
||||
integer :: i_nuc_mat ! index in material's nuclides array
|
||||
integer :: i_reaction ! index in nuc % reactions array
|
||||
type(Nuclide), pointer :: nuc
|
||||
|
||||
i_nuclide = sample_nuclide(p, 'total ')
|
||||
call sample_nuclide(p, 'total ', i_nuclide, i_nuc_mat)
|
||||
|
||||
! Get pointer to table
|
||||
nuc => nuclides(i_nuclide)
|
||||
|
|
@ -106,7 +107,7 @@ contains
|
|||
|
||||
! Sample a scattering reaction and determine the secondary energy of the
|
||||
! exiting neutron
|
||||
call scatter(p, i_nuclide)
|
||||
call scatter(p, i_nuclide, i_nuc_mat)
|
||||
|
||||
! Play russian roulette if survival biasing is turned on
|
||||
|
||||
|
|
@ -121,13 +122,13 @@ contains
|
|||
! SAMPLE_NUCLIDE
|
||||
!===============================================================================
|
||||
|
||||
function sample_nuclide(p, base) result(i_nuclide)
|
||||
subroutine sample_nuclide(p, base, i_nuclide, i_nuc_mat)
|
||||
|
||||
type(Particle), intent(in) :: p
|
||||
character(7), intent(in) :: base ! which reaction to sample based on
|
||||
integer :: i_nuclide
|
||||
integer, intent(out) :: i_nuclide
|
||||
integer, intent(out) :: i_nuc_mat
|
||||
|
||||
integer :: i
|
||||
real(8) :: prob
|
||||
real(8) :: cutoff
|
||||
real(8) :: atom_density ! atom density of nuclide in atom/b-cm
|
||||
|
|
@ -147,20 +148,20 @@ contains
|
|||
cutoff = prn() * material_xs % fission
|
||||
end select
|
||||
|
||||
i = 0
|
||||
i_nuc_mat = 0
|
||||
prob = ZERO
|
||||
do while (prob < cutoff)
|
||||
i = i + 1
|
||||
i_nuc_mat = i_nuc_mat + 1
|
||||
|
||||
! Check to make sure that a nuclide was sampled
|
||||
if (i > mat % n_nuclides) then
|
||||
if (i_nuc_mat > mat % n_nuclides) then
|
||||
call write_particle_restart(p)
|
||||
call fatal_error("Did not sample any nuclide during collision.")
|
||||
end if
|
||||
|
||||
! Find atom density
|
||||
i_nuclide = mat % nuclide(i)
|
||||
atom_density = mat % atom_density(i)
|
||||
i_nuclide = mat % nuclide(i_nuc_mat)
|
||||
atom_density = mat % atom_density(i_nuc_mat)
|
||||
|
||||
! Determine microscopic cross section
|
||||
select case (base)
|
||||
|
|
@ -177,7 +178,7 @@ contains
|
|||
prob = prob + sigma
|
||||
end do
|
||||
|
||||
end function sample_nuclide
|
||||
end subroutine sample_nuclide
|
||||
|
||||
!===============================================================================
|
||||
! SAMPLE_FISSION
|
||||
|
|
@ -300,10 +301,11 @@ contains
|
|||
! SCATTER
|
||||
!===============================================================================
|
||||
|
||||
subroutine scatter(p, i_nuclide)
|
||||
subroutine scatter(p, i_nuclide, i_nuc_mat)
|
||||
|
||||
type(Particle), intent(inout) :: p
|
||||
integer, intent(in) :: i_nuclide
|
||||
integer, intent(in) :: i_nuc_mat
|
||||
|
||||
integer :: i
|
||||
integer :: i_grid
|
||||
|
|
@ -312,6 +314,12 @@ contains
|
|||
real(8) :: cutoff
|
||||
type(Nuclide), pointer :: nuc
|
||||
type(Reaction), pointer :: rxn
|
||||
real(8) :: uvw_new(3) ! outgoing uvw for iso-in-lab scattering
|
||||
real(8) :: uvw_old(3) ! incoming uvw for iso-in-lab scattering
|
||||
real(8) :: phi ! azimuthal angle for iso-in-lab scattering
|
||||
|
||||
! copy incoming direction
|
||||
uvw_old(:) = p % coord(1) % uvw
|
||||
|
||||
! Get pointer to nuclide and grid index/interpolation factor
|
||||
nuc => nuclides(i_nuclide)
|
||||
|
|
@ -390,6 +398,20 @@ contains
|
|||
! Set event component
|
||||
p % event = EVENT_SCATTER
|
||||
|
||||
! sample new outgoing angle for isotropic in lab scattering
|
||||
if (materials(p % material) % p0(i_nuc_mat)) then
|
||||
|
||||
! sample isotropic-in-lab outgoing direction
|
||||
uvw_new(1) = TWO * prn() - ONE
|
||||
phi = TWO * PI * prn()
|
||||
uvw_new(2) = cos(phi) * sqrt(ONE - uvw_new(1)*uvw_new(1))
|
||||
uvw_new(3) = sin(phi) * sqrt(ONE - uvw_new(1)*uvw_new(1))
|
||||
p % mu = dot_product(uvw_old, uvw_new)
|
||||
|
||||
! change direction of particle
|
||||
p % coord(1) % uvw = uvw_new
|
||||
end if
|
||||
|
||||
end subroutine scatter
|
||||
|
||||
!===============================================================================
|
||||
|
|
|
|||
|
|
@ -15,6 +15,8 @@ element materials {
|
|||
attribute name { xsd:string { maxLength = "7" } }) &
|
||||
(element xs { xsd:string { maxLength = "3" } } |
|
||||
attribute xs { xsd:string { maxLength = "3" } })? &
|
||||
(element scattering { ( "data" | "iso-in-lab" ) } |
|
||||
attribute scattering { ( "data" | "iso-in-lab" ) })? &
|
||||
(
|
||||
(element ao { xsd:double } | attribute ao { xsd:double }) |
|
||||
(element wo { xsd:double } | attribute wo { xsd:double })
|
||||
|
|
@ -26,6 +28,8 @@ element materials {
|
|||
attribute name { xsd:string { maxLength = "2" } }) &
|
||||
(element xs { xsd:string { maxLength = "3" } } |
|
||||
attribute xs { xsd:string { maxLength = "3" } })? &
|
||||
(element scattering { ( "data" | "iso-in-lab" ) } |
|
||||
attribute scattering { ( "data" | "iso-in-lab" ) })? &
|
||||
(
|
||||
(element ao { xsd:double } | attribute ao { xsd:double }) |
|
||||
(element wo { xsd:double } | attribute wo { xsd:double })
|
||||
|
|
|
|||
|
|
@ -12,6 +12,20 @@
|
|||
<data type="int"/>
|
||||
</attribute>
|
||||
</choice>
|
||||
<optional>
|
||||
<choice>
|
||||
<element name="name">
|
||||
<data type="string">
|
||||
<param name="maxLength">52</param>
|
||||
</data>
|
||||
</element>
|
||||
<attribute name="name">
|
||||
<data type="string">
|
||||
<param name="maxLength">52</param>
|
||||
</data>
|
||||
</attribute>
|
||||
</choice>
|
||||
</optional>
|
||||
<element name="density">
|
||||
<interleave>
|
||||
<optional>
|
||||
|
|
@ -67,6 +81,22 @@
|
|||
</attribute>
|
||||
</choice>
|
||||
</optional>
|
||||
<optional>
|
||||
<choice>
|
||||
<element name="scattering">
|
||||
<choice>
|
||||
<value>data</value>
|
||||
<value>iso-in-lab</value>
|
||||
</choice>
|
||||
</element>
|
||||
<attribute name="scattering">
|
||||
<choice>
|
||||
<value>data</value>
|
||||
<value>iso-in-lab</value>
|
||||
</choice>
|
||||
</attribute>
|
||||
</choice>
|
||||
</optional>
|
||||
<choice>
|
||||
<choice>
|
||||
<element name="ao">
|
||||
|
|
@ -117,6 +147,22 @@
|
|||
</attribute>
|
||||
</choice>
|
||||
</optional>
|
||||
<optional>
|
||||
<choice>
|
||||
<element name="scattering">
|
||||
<choice>
|
||||
<value>data</value>
|
||||
<value>iso-in-lab</value>
|
||||
</choice>
|
||||
</element>
|
||||
<attribute name="scattering">
|
||||
<choice>
|
||||
<value>data</value>
|
||||
<value>iso-in-lab</value>
|
||||
</choice>
|
||||
</attribute>
|
||||
</choice>
|
||||
</optional>
|
||||
<choice>
|
||||
<choice>
|
||||
<element name="ao">
|
||||
|
|
|
|||
|
|
@ -65,6 +65,7 @@ contains
|
|||
real(8) :: macro_total ! material macro total xs
|
||||
real(8) :: macro_scatt ! material macro scatt xs
|
||||
real(8) :: uvw(3) ! particle direction
|
||||
real(8) :: E ! particle energy
|
||||
type(Material), pointer :: mat
|
||||
type(Reaction), pointer :: rxn
|
||||
type(Nuclide), pointer :: nuc
|
||||
|
|
@ -128,6 +129,14 @@ contains
|
|||
|
||||
|
||||
case (SCORE_INVERSE_VELOCITY)
|
||||
|
||||
! make sure the correct energy is used
|
||||
if (t % estimator == ESTIMATOR_TRACKLENGTH) then
|
||||
E = p % E
|
||||
else
|
||||
E = p % last_E
|
||||
end if
|
||||
|
||||
if (t % estimator == ESTIMATOR_ANALOG) then
|
||||
! All events score to an inverse velocity bin. We actually use a
|
||||
! collision estimator in place of an analog one since there is no way
|
||||
|
|
@ -139,12 +148,16 @@ contains
|
|||
else
|
||||
score = p % last_wgt
|
||||
end if
|
||||
|
||||
! Score the flux weighted inverse velocity with velocity in units of
|
||||
! cm/s
|
||||
score = score / material_xs % total &
|
||||
/ (sqrt(TWO * p % E / (MASS_NEUTRON_MEV)) * C_LIGHT)
|
||||
/ (sqrt(TWO * E / (MASS_NEUTRON_MEV)) * C_LIGHT * 100.0_8)
|
||||
|
||||
else
|
||||
! For inverse velocity, we need no cross section
|
||||
score = flux / (sqrt(TWO * p % E / (MASS_NEUTRON_MEV)) * C_LIGHT)
|
||||
! For inverse velocity, we don't need a cross section. The velocity is
|
||||
! in units of cm/s.
|
||||
score = flux / (sqrt(TWO * E / (MASS_NEUTRON_MEV)) * C_LIGHT * 100.0_8)
|
||||
end if
|
||||
|
||||
|
||||
|
|
@ -425,6 +438,13 @@ contains
|
|||
|
||||
case (SCORE_DELAYED_NU_FISSION)
|
||||
|
||||
! make sure the correct energy is used
|
||||
if (t % estimator == ESTIMATOR_TRACKLENGTH) then
|
||||
E = p % E
|
||||
else
|
||||
E = p % last_E
|
||||
end if
|
||||
|
||||
! Set the delayedgroup filter index and the number of delayed group bins
|
||||
dg_filter = t % find_filter(FILTER_DELAYEDGROUP)
|
||||
|
||||
|
|
@ -460,11 +480,11 @@ contains
|
|||
d = t % filters(dg_filter) % int_bins(d_bin)
|
||||
|
||||
! Compute the yield for this delayed group
|
||||
yield = yield_delayed(nuc, p % E, d)
|
||||
yield = yield_delayed(nuc, E, d)
|
||||
|
||||
! Compute the score and tally to bin
|
||||
score = p % absorb_wgt * yield * micro_xs(p % event_nuclide) &
|
||||
% fission * nu_delayed(nuc, p % E) / &
|
||||
% fission * nu_delayed(nuc, E) / &
|
||||
micro_xs(p % event_nuclide) % absorption
|
||||
call score_fission_delayed_dg(t, d_bin, score, score_index)
|
||||
end do
|
||||
|
|
@ -474,7 +494,7 @@ contains
|
|||
! by multiplying the absorbed weight by the fraction of the
|
||||
! delayed-nu-fission xs to the absorption xs
|
||||
score = p % absorb_wgt * micro_xs(p % event_nuclide) &
|
||||
% fission * nu_delayed(nuc, p % E) / &
|
||||
% fission * nu_delayed(nuc, E) / &
|
||||
micro_xs(p % event_nuclide) % absorption
|
||||
end if
|
||||
end if
|
||||
|
|
@ -528,11 +548,11 @@ contains
|
|||
d = t % filters(dg_filter) % int_bins(d_bin)
|
||||
|
||||
! Compute the yield for this delayed group
|
||||
yield = yield_delayed(nuc, p % E, d)
|
||||
yield = yield_delayed(nuc, E, d)
|
||||
|
||||
! Compute the score and tally to bin
|
||||
score = micro_xs(i_nuclide) % fission * yield &
|
||||
* nu_delayed(nuc, p % E) * atom_density * flux
|
||||
* nu_delayed(nuc, E) * atom_density * flux
|
||||
call score_fission_delayed_dg(t, d_bin, score, score_index)
|
||||
end do
|
||||
cycle SCORE_LOOP
|
||||
|
|
@ -540,7 +560,7 @@ contains
|
|||
|
||||
! If the delayed group filter is not present, compute the score
|
||||
! by multiplying the delayed-nu-fission macro xs by the flux
|
||||
score = micro_xs(i_nuclide) % fission * nu_delayed(nuc, p % E)&
|
||||
score = micro_xs(i_nuclide) % fission * nu_delayed(nuc, E)&
|
||||
* atom_density * flux
|
||||
end if
|
||||
|
||||
|
|
@ -572,11 +592,11 @@ contains
|
|||
nuc => nuclides(i_nuc)
|
||||
|
||||
! Get the yield for the desired nuclide and delayed group
|
||||
yield = yield_delayed(nuc, p % E, d)
|
||||
yield = yield_delayed(nuc, E, d)
|
||||
|
||||
! Compute the score and tally to bin
|
||||
score = micro_xs(i_nuc) % fission * yield &
|
||||
* nu_delayed(nuc, p % E) * atom_density_ * flux
|
||||
* nu_delayed(nuc, E) * atom_density_ * flux
|
||||
call score_fission_delayed_dg(t, d_bin, score, score_index)
|
||||
end do
|
||||
end do
|
||||
|
|
@ -596,7 +616,7 @@ contains
|
|||
|
||||
! Accumulate the contribution from each nuclide
|
||||
score = score + micro_xs(i_nuc) % fission &
|
||||
* nu_delayed(nuclides(i_nuc), p % E) * atom_density_ * flux
|
||||
* nu_delayed(nuclides(i_nuc), E) * atom_density_ * flux
|
||||
end do
|
||||
end if
|
||||
end if
|
||||
|
|
|
|||
|
|
@ -1,49 +1,49 @@
|
|||
material group in nuclide mean std. dev.
|
||||
0 1 1 total 0.419289 0.01638 material group in nuclide mean std. dev.
|
||||
0 1 1 total 0.07774 0.003273 material group in group out nuclide mean std. dev.
|
||||
0 1 1 1 total 0.352665 0.015654 material group out nuclide mean std. dev.
|
||||
0 1 1 total 1 0.119622 material group in nuclide mean std. dev.
|
||||
0 2 1 total 0.247316 0.009562 material group in nuclide mean std. dev.
|
||||
0 2 1 total 0 0 material group in group out nuclide mean std. dev.
|
||||
0 2 1 1 total 0.244838 0.009996 material group out nuclide mean std. dev.
|
||||
0 2 1 total 0 0 material group in nuclide mean std. dev.
|
||||
0 3 1 total 0.409938 0.042262 material group in nuclide mean std. dev.
|
||||
0 3 1 total 0 0 material group in group out nuclide mean std. dev.
|
||||
0 3 1 1 total 0.403354 0.041386 material group out nuclide mean std. dev.
|
||||
0 3 1 total 0 0 material group in nuclide mean std. dev.
|
||||
0 4 1 total 0.344007 0.05352 material group in nuclide mean std. dev.
|
||||
0 4 1 total 0 0 material group in group out nuclide mean std. dev.
|
||||
0 4 1 1 total 0.340438 0.052067 material group out nuclide mean std. dev.
|
||||
0 4 1 total 0 0 material group in nuclide mean std. dev.
|
||||
0 5 1 total 0 0 material group in nuclide mean std. dev.
|
||||
0 5 1 total 0 0 material group in group out nuclide mean std. dev.
|
||||
0 5 1 1 total 0 0 material group out nuclide mean std. dev.
|
||||
0 5 1 total 0 0 material group in nuclide mean std. dev.
|
||||
0 6 1 total 0 0 material group in nuclide mean std. dev.
|
||||
0 6 1 total 0 0 material group in group out nuclide mean std. dev.
|
||||
0 6 1 1 total 0 0 material group out nuclide mean std. dev.
|
||||
0 6 1 total 0 0 material group in nuclide mean std. dev.
|
||||
0 7 1 total 0 0 material group in nuclide mean std. dev.
|
||||
0 7 1 total 0 0 material group in group out nuclide mean std. dev.
|
||||
0 7 1 1 total 0 0 material group out nuclide mean std. dev.
|
||||
0 7 1 total 0 0 material group in nuclide mean std. dev.
|
||||
0 8 1 total 0 0 material group in nuclide mean std. dev.
|
||||
0 8 1 total 0 0 material group in group out nuclide mean std. dev.
|
||||
0 8 1 1 total 0 0 material group out nuclide mean std. dev.
|
||||
0 8 1 total 0 0 material group in nuclide mean std. dev.
|
||||
0 9 1 total 0.751873 0.559701 material group in nuclide mean std. dev.
|
||||
0 9 1 total 0 0 material group in group out nuclide mean std. dev.
|
||||
0 9 1 1 total 0.695491 0.50757 material group out nuclide mean std. dev.
|
||||
0 9 1 total 0 0 material group in nuclide mean std. dev.
|
||||
0 10 1 total 0 0 material group in nuclide mean std. dev.
|
||||
0 10 1 total 0 0 material group in group out nuclide mean std. dev.
|
||||
0 10 1 1 total 0 0 material group out nuclide mean std. dev.
|
||||
0 10 1 total 0 0 material group in nuclide mean std. dev.
|
||||
0 11 1 total 0.457329 0.403578 material group in nuclide mean std. dev.
|
||||
0 11 1 total 0 0 material group in group out nuclide mean std. dev.
|
||||
0 11 1 1 total 0.446737 0.392775 material group out nuclide mean std. dev.
|
||||
0 11 1 total 0 0 material group in nuclide mean std. dev.
|
||||
0 12 1 total 0.574978 0.38864 material group in nuclide mean std. dev.
|
||||
0 12 1 total 0 0 material group in group out nuclide mean std. dev.
|
||||
0 12 1 1 total 0.559478 0.377512 material group out nuclide mean std. dev.
|
||||
0 12 1 total 0 0
|
||||
material group in nuclide mean std. dev.
|
||||
0 1 1 total 0.419289 0.01638 material group in nuclide mean std. dev.
|
||||
0 1 1 total 0.07774 0.003273 material group in group out nuclide mean std. dev.
|
||||
0 1 1 1 total 0.352665 0.015654 material group out nuclide mean std. dev.
|
||||
0 1 1 total 1 0.119622 material group in nuclide mean std. dev.
|
||||
0 2 1 total 0.247316 0.009562 material group in nuclide mean std. dev.
|
||||
0 2 1 total 0 0 material group in group out nuclide mean std. dev.
|
||||
0 2 1 1 total 0.244838 0.009996 material group out nuclide mean std. dev.
|
||||
0 2 1 total 0 0 material group in nuclide mean std. dev.
|
||||
0 3 1 total 0.409938 0.042262 material group in nuclide mean std. dev.
|
||||
0 3 1 total 0 0 material group in group out nuclide mean std. dev.
|
||||
0 3 1 1 total 0.403354 0.041386 material group out nuclide mean std. dev.
|
||||
0 3 1 total 0 0 material group in nuclide mean std. dev.
|
||||
0 4 1 total 0.344007 0.05352 material group in nuclide mean std. dev.
|
||||
0 4 1 total 0 0 material group in group out nuclide mean std. dev.
|
||||
0 4 1 1 total 0.340438 0.052067 material group out nuclide mean std. dev.
|
||||
0 4 1 total 0 0 material group in nuclide mean std. dev.
|
||||
0 5 1 total 0 0 material group in nuclide mean std. dev.
|
||||
0 5 1 total 0 0 material group in group out nuclide mean std. dev.
|
||||
0 5 1 1 total 0 0 material group out nuclide mean std. dev.
|
||||
0 5 1 total 0 0 material group in nuclide mean std. dev.
|
||||
0 6 1 total 0 0 material group in nuclide mean std. dev.
|
||||
0 6 1 total 0 0 material group in group out nuclide mean std. dev.
|
||||
0 6 1 1 total 0 0 material group out nuclide mean std. dev.
|
||||
0 6 1 total 0 0 material group in nuclide mean std. dev.
|
||||
0 7 1 total 0 0 material group in nuclide mean std. dev.
|
||||
0 7 1 total 0 0 material group in group out nuclide mean std. dev.
|
||||
0 7 1 1 total 0 0 material group out nuclide mean std. dev.
|
||||
0 7 1 total 0 0 material group in nuclide mean std. dev.
|
||||
0 8 1 total 0 0 material group in nuclide mean std. dev.
|
||||
0 8 1 total 0 0 material group in group out nuclide mean std. dev.
|
||||
0 8 1 1 total 0 0 material group out nuclide mean std. dev.
|
||||
0 8 1 total 0 0 material group in nuclide mean std. dev.
|
||||
0 9 1 total 0.751873 0.559701 material group in nuclide mean std. dev.
|
||||
0 9 1 total 0 0 material group in group out nuclide mean std. dev.
|
||||
0 9 1 1 total 0.695491 0.50757 material group out nuclide mean std. dev.
|
||||
0 9 1 total 0 0 material group in nuclide mean std. dev.
|
||||
0 10 1 total 0 0 material group in nuclide mean std. dev.
|
||||
0 10 1 total 0 0 material group in group out nuclide mean std. dev.
|
||||
0 10 1 1 total 0 0 material group out nuclide mean std. dev.
|
||||
0 10 1 total 0 0 material group in nuclide mean std. dev.
|
||||
0 11 1 total 0.457329 0.403578 material group in nuclide mean std. dev.
|
||||
0 11 1 total 0 0 material group in group out nuclide mean std. dev.
|
||||
0 11 1 1 total 0.446737 0.392775 material group out nuclide mean std. dev.
|
||||
0 11 1 total 0 0 material group in nuclide mean std. dev.
|
||||
0 12 1 total 0.574978 0.38864 material group in nuclide mean std. dev.
|
||||
0 12 1 total 0 0 material group in group out nuclide mean std. dev.
|
||||
0 12 1 1 total 0.559478 0.377512 material group out nuclide mean std. dev.
|
||||
0 12 1 total 0 0
|
||||
|
|
@ -1,121 +1,121 @@
|
|||
material group in nuclide mean std. dev.
|
||||
1 1 1 total 0.384379 0.01649
|
||||
0 1 2 total 0.812087 0.07419 material group in nuclide mean std. dev.
|
||||
1 1 1 total 0.02127 0.000894
|
||||
0 1 2 total 0.69604 0.053458 material group in group out nuclide mean std. dev.
|
||||
3 1 1 1 total 0.349924 0.016649
|
||||
2 1 1 2 total 0.000173 0.000173
|
||||
1 1 2 1 total 0.001948 0.001952
|
||||
0 1 2 2 total 0.379607 0.040078 material group out nuclide mean std. dev.
|
||||
1 1 1 total 1 0.119622
|
||||
0 1 2 total 0 0.000000 material group in nuclide mean std. dev.
|
||||
1 2 1 total 0.245043 0.008827
|
||||
0 2 2 total 0.266458 0.052209 material group in nuclide mean std. dev.
|
||||
1 2 1 total 0 0
|
||||
0 2 2 total 0 0 material group in group out nuclide mean std. dev.
|
||||
3 2 1 1 total 0.243657 0.009083
|
||||
2 2 1 2 total 0.000000 0.000000
|
||||
1 2 2 1 total 0.000000 0.000000
|
||||
0 2 2 2 total 0.254787 0.055563 material group out nuclide mean std. dev.
|
||||
material group in nuclide mean std. dev.
|
||||
1 1 1 total 0.384379 0.01649
|
||||
0 1 2 total 0.812087 0.07419 material group in nuclide mean std. dev.
|
||||
1 1 1 total 0.02127 0.000894
|
||||
0 1 2 total 0.69604 0.053458 material group in group out nuclide mean std. dev.
|
||||
3 1 1 1 total 0.349924 0.016649
|
||||
2 1 1 2 total 0.000173 0.000173
|
||||
1 1 2 1 total 0.001948 0.001952
|
||||
0 1 2 2 total 0.379607 0.040078 material group out nuclide mean std. dev.
|
||||
1 1 1 total 1 0.119622
|
||||
0 1 2 total 0 0.000000 material group in nuclide mean std. dev.
|
||||
1 2 1 total 0.245043 0.008827
|
||||
0 2 2 total 0.266458 0.052209 material group in nuclide mean std. dev.
|
||||
1 2 1 total 0 0
|
||||
0 2 2 total 0 0 material group in nuclide mean std. dev.
|
||||
1 3 1 total 0.282277 0.037242
|
||||
0 3 2 total 1.427320 0.247127 material group in nuclide mean std. dev.
|
||||
1 3 1 total 0 0
|
||||
0 3 2 total 0 0 material group in group out nuclide mean std. dev.
|
||||
3 3 1 1 total 0.253967 0.036173
|
||||
2 3 1 2 total 0.027273 0.001807
|
||||
1 3 2 1 total 0.000000 0.000000
|
||||
0 3 2 2 total 1.376527 0.240257 material group out nuclide mean std. dev.
|
||||
0 2 2 total 0 0 material group in group out nuclide mean std. dev.
|
||||
3 2 1 1 total 0.243657 0.009083
|
||||
2 2 1 2 total 0.000000 0.000000
|
||||
1 2 2 1 total 0.000000 0.000000
|
||||
0 2 2 2 total 0.254787 0.055563 material group out nuclide mean std. dev.
|
||||
1 2 1 total 0 0
|
||||
0 2 2 total 0 0 material group in nuclide mean std. dev.
|
||||
1 3 1 total 0.282277 0.037242
|
||||
0 3 2 total 1.427320 0.247127 material group in nuclide mean std. dev.
|
||||
1 3 1 total 0 0
|
||||
0 3 2 total 0 0 material group in nuclide mean std. dev.
|
||||
1 4 1 total 0.255723 0.051917
|
||||
0 4 2 total 1.179767 0.229380 material group in nuclide mean std. dev.
|
||||
1 4 1 total 0 0
|
||||
0 4 2 total 0 0 material group in group out nuclide mean std. dev.
|
||||
3 4 1 1 total 0.232978 0.049771
|
||||
2 4 1 2 total 0.022281 0.002625
|
||||
1 4 2 1 total 0.000000 0.000000
|
||||
0 4 2 2 total 1.146809 0.222198 material group out nuclide mean std. dev.
|
||||
0 3 2 total 0 0 material group in group out nuclide mean std. dev.
|
||||
3 3 1 1 total 0.253967 0.036173
|
||||
2 3 1 2 total 0.027273 0.001807
|
||||
1 3 2 1 total 0.000000 0.000000
|
||||
0 3 2 2 total 1.376527 0.240257 material group out nuclide mean std. dev.
|
||||
1 3 1 total 0 0
|
||||
0 3 2 total 0 0 material group in nuclide mean std. dev.
|
||||
1 4 1 total 0.255723 0.051917
|
||||
0 4 2 total 1.179767 0.229380 material group in nuclide mean std. dev.
|
||||
1 4 1 total 0 0
|
||||
0 4 2 total 0 0 material group in nuclide mean std. dev.
|
||||
1 5 1 total 0 0
|
||||
0 5 2 total 0 0 material group in nuclide mean std. dev.
|
||||
1 5 1 total 0 0
|
||||
0 5 2 total 0 0 material group in group out nuclide mean std. dev.
|
||||
3 5 1 1 total 0 0
|
||||
2 5 1 2 total 0 0
|
||||
1 5 2 1 total 0 0
|
||||
0 5 2 2 total 0 0 material group out nuclide mean std. dev.
|
||||
0 4 2 total 0 0 material group in group out nuclide mean std. dev.
|
||||
3 4 1 1 total 0.232978 0.049771
|
||||
2 4 1 2 total 0.022281 0.002625
|
||||
1 4 2 1 total 0.000000 0.000000
|
||||
0 4 2 2 total 1.146809 0.222198 material group out nuclide mean std. dev.
|
||||
1 4 1 total 0 0
|
||||
0 4 2 total 0 0 material group in nuclide mean std. dev.
|
||||
1 5 1 total 0 0
|
||||
0 5 2 total 0 0 material group in nuclide mean std. dev.
|
||||
1 6 1 total 0 0
|
||||
0 6 2 total 0 0 material group in nuclide mean std. dev.
|
||||
1 6 1 total 0 0
|
||||
0 6 2 total 0 0 material group in group out nuclide mean std. dev.
|
||||
3 6 1 1 total 0 0
|
||||
2 6 1 2 total 0 0
|
||||
1 6 2 1 total 0 0
|
||||
0 6 2 2 total 0 0 material group out nuclide mean std. dev.
|
||||
0 5 2 total 0 0 material group in nuclide mean std. dev.
|
||||
1 5 1 total 0 0
|
||||
0 5 2 total 0 0 material group in group out nuclide mean std. dev.
|
||||
3 5 1 1 total 0 0
|
||||
2 5 1 2 total 0 0
|
||||
1 5 2 1 total 0 0
|
||||
0 5 2 2 total 0 0 material group out nuclide mean std. dev.
|
||||
1 5 1 total 0 0
|
||||
0 5 2 total 0 0 material group in nuclide mean std. dev.
|
||||
1 6 1 total 0 0
|
||||
0 6 2 total 0 0 material group in nuclide mean std. dev.
|
||||
1 7 1 total 0 0
|
||||
0 7 2 total 0 0 material group in nuclide mean std. dev.
|
||||
1 7 1 total 0 0
|
||||
0 7 2 total 0 0 material group in group out nuclide mean std. dev.
|
||||
3 7 1 1 total 0 0
|
||||
2 7 1 2 total 0 0
|
||||
1 7 2 1 total 0 0
|
||||
0 7 2 2 total 0 0 material group out nuclide mean std. dev.
|
||||
0 6 2 total 0 0 material group in nuclide mean std. dev.
|
||||
1 6 1 total 0 0
|
||||
0 6 2 total 0 0 material group in group out nuclide mean std. dev.
|
||||
3 6 1 1 total 0 0
|
||||
2 6 1 2 total 0 0
|
||||
1 6 2 1 total 0 0
|
||||
0 6 2 2 total 0 0 material group out nuclide mean std. dev.
|
||||
1 6 1 total 0 0
|
||||
0 6 2 total 0 0 material group in nuclide mean std. dev.
|
||||
1 7 1 total 0 0
|
||||
0 7 2 total 0 0 material group in nuclide mean std. dev.
|
||||
1 8 1 total 0 0
|
||||
0 8 2 total 0 0 material group in nuclide mean std. dev.
|
||||
1 8 1 total 0 0
|
||||
0 8 2 total 0 0 material group in group out nuclide mean std. dev.
|
||||
3 8 1 1 total 0 0
|
||||
2 8 1 2 total 0 0
|
||||
1 8 2 1 total 0 0
|
||||
0 8 2 2 total 0 0 material group out nuclide mean std. dev.
|
||||
0 7 2 total 0 0 material group in nuclide mean std. dev.
|
||||
1 7 1 total 0 0
|
||||
0 7 2 total 0 0 material group in group out nuclide mean std. dev.
|
||||
3 7 1 1 total 0 0
|
||||
2 7 1 2 total 0 0
|
||||
1 7 2 1 total 0 0
|
||||
0 7 2 2 total 0 0 material group out nuclide mean std. dev.
|
||||
1 7 1 total 0 0
|
||||
0 7 2 total 0 0 material group in nuclide mean std. dev.
|
||||
1 8 1 total 0 0
|
||||
0 8 2 total 0 0 material group in nuclide mean std. dev.
|
||||
1 9 1 total 0.504036 0.379624
|
||||
0 9 2 total 1.687095 2.536622 material group in nuclide mean std. dev.
|
||||
1 9 1 total 0 0
|
||||
0 9 2 total 0 0 material group in group out nuclide mean std. dev.
|
||||
3 9 1 1 total 0.504036 0.379624
|
||||
2 9 1 2 total 0.000000 0.000000
|
||||
1 9 2 1 total 0.000000 0.000000
|
||||
0 9 2 2 total 1.417955 2.158027 material group out nuclide mean std. dev.
|
||||
0 8 2 total 0 0 material group in nuclide mean std. dev.
|
||||
1 8 1 total 0 0
|
||||
0 8 2 total 0 0 material group in group out nuclide mean std. dev.
|
||||
3 8 1 1 total 0 0
|
||||
2 8 1 2 total 0 0
|
||||
1 8 2 1 total 0 0
|
||||
0 8 2 2 total 0 0 material group out nuclide mean std. dev.
|
||||
1 8 1 total 0 0
|
||||
0 8 2 total 0 0 material group in nuclide mean std. dev.
|
||||
1 9 1 total 0.504036 0.379624
|
||||
0 9 2 total 1.687095 2.536622 material group in nuclide mean std. dev.
|
||||
1 9 1 total 0 0
|
||||
0 9 2 total 0 0 material group in nuclide mean std. dev.
|
||||
1 10 1 total 0 0
|
||||
0 10 2 total 0 0 material group in nuclide mean std. dev.
|
||||
1 10 1 total 0 0
|
||||
0 10 2 total 0 0 material group in group out nuclide mean std. dev.
|
||||
3 10 1 1 total 0 0
|
||||
2 10 1 2 total 0 0
|
||||
1 10 2 1 total 0 0
|
||||
0 10 2 2 total 0 0 material group out nuclide mean std. dev.
|
||||
0 9 2 total 0 0 material group in group out nuclide mean std. dev.
|
||||
3 9 1 1 total 0.504036 0.379624
|
||||
2 9 1 2 total 0.000000 0.000000
|
||||
1 9 2 1 total 0.000000 0.000000
|
||||
0 9 2 2 total 1.417955 2.158027 material group out nuclide mean std. dev.
|
||||
1 9 1 total 0 0
|
||||
0 9 2 total 0 0 material group in nuclide mean std. dev.
|
||||
1 10 1 total 0 0
|
||||
0 10 2 total 0 0 material group in nuclide mean std. dev.
|
||||
1 11 1 total 0.302826 0.401311
|
||||
0 11 2 total 1.006145 1.091638 material group in nuclide mean std. dev.
|
||||
1 11 1 total 0 0
|
||||
0 11 2 total 0 0 material group in group out nuclide mean std. dev.
|
||||
3 11 1 1 total 0.275679 0.385676
|
||||
2 11 1 2 total 0.027147 0.020009
|
||||
1 11 2 1 total 0.000000 0.000000
|
||||
0 11 2 2 total 0.957929 1.051959 material group out nuclide mean std. dev.
|
||||
0 10 2 total 0 0 material group in nuclide mean std. dev.
|
||||
1 10 1 total 0 0
|
||||
0 10 2 total 0 0 material group in group out nuclide mean std. dev.
|
||||
3 10 1 1 total 0 0
|
||||
2 10 1 2 total 0 0
|
||||
1 10 2 1 total 0 0
|
||||
0 10 2 2 total 0 0 material group out nuclide mean std. dev.
|
||||
1 10 1 total 0 0
|
||||
0 10 2 total 0 0 material group in nuclide mean std. dev.
|
||||
1 11 1 total 0.302826 0.401311
|
||||
0 11 2 total 1.006145 1.091638 material group in nuclide mean std. dev.
|
||||
1 11 1 total 0 0
|
||||
0 11 2 total 0 0 material group in nuclide mean std. dev.
|
||||
1 12 1 total 0.255933 0.268426
|
||||
0 12 2 total 1.113345 0.988676 material group in nuclide mean std. dev.
|
||||
1 12 1 total 0 0
|
||||
0 12 2 total 0 0 material group in group out nuclide mean std. dev.
|
||||
3 12 1 1 total 0.226310 0.254872
|
||||
2 12 1 2 total 0.029622 0.017760
|
||||
1 12 2 1 total 0.000000 0.000000
|
||||
0 12 2 2 total 1.071690 0.958290 material group out nuclide mean std. dev.
|
||||
0 11 2 total 0 0 material group in group out nuclide mean std. dev.
|
||||
3 11 1 1 total 0.275679 0.385676
|
||||
2 11 1 2 total 0.027147 0.020009
|
||||
1 11 2 1 total 0.000000 0.000000
|
||||
0 11 2 2 total 0.957929 1.051959 material group out nuclide mean std. dev.
|
||||
1 11 1 total 0 0
|
||||
0 11 2 total 0 0 material group in nuclide mean std. dev.
|
||||
1 12 1 total 0.255933 0.268426
|
||||
0 12 2 total 1.113345 0.988676 material group in nuclide mean std. dev.
|
||||
1 12 1 total 0 0
|
||||
0 12 2 total 0 0
|
||||
0 12 2 total 0 0 material group in group out nuclide mean std. dev.
|
||||
3 12 1 1 total 0.226310 0.254872
|
||||
2 12 1 2 total 0.029622 0.017760
|
||||
1 12 2 1 total 0.000000 0.000000
|
||||
0 12 2 2 total 1.071690 0.958290 material group out nuclide mean std. dev.
|
||||
1 12 1 total 0 0
|
||||
0 12 2 total 0 0
|
||||
File diff suppressed because it is too large
Load diff
|
|
@ -19,11 +19,11 @@ tally 2:
|
|||
1.976462E-02
|
||||
1.953328E-04
|
||||
tally 3:
|
||||
1.687894E-02
|
||||
5.776176E-05
|
||||
1.686299E-02
|
||||
5.765477E-05
|
||||
0.000000E+00
|
||||
0.000000E+00
|
||||
0.000000E+00
|
||||
0.000000E+00
|
||||
1.061803E-02
|
||||
2.308636E-05
|
||||
1.061240E-02
|
||||
2.305936E-05
|
||||
|
|
|
|||
|
|
@ -1,29 +1,29 @@
|
|||
k-combined:
|
||||
9.903196E-01 4.279617E-02
|
||||
tally 1:
|
||||
1.049628E-03
|
||||
2.261930E-07
|
||||
4.056389E-04
|
||||
3.411247E-08
|
||||
2.243766E-03
|
||||
1.069671E-06
|
||||
6.354432E-04
|
||||
8.370608E-08
|
||||
1.049628E-05
|
||||
2.261930E-11
|
||||
4.056389E-06
|
||||
3.411247E-12
|
||||
2.243766E-05
|
||||
1.069671E-10
|
||||
6.354432E-06
|
||||
8.370608E-12
|
||||
tally 2:
|
||||
1.048031E-03
|
||||
2.263789E-07
|
||||
4.276093E-04
|
||||
4.136358E-08
|
||||
2.667795E-03
|
||||
1.528407E-06
|
||||
6.199140E-04
|
||||
7.840402E-08
|
||||
1.029200E-05
|
||||
2.180706E-11
|
||||
4.353200E-06
|
||||
4.363747E-12
|
||||
2.211790E-05
|
||||
1.055892E-10
|
||||
6.086777E-06
|
||||
7.589579E-12
|
||||
tally 3:
|
||||
1.048031E-03
|
||||
2.263789E-07
|
||||
4.276093E-04
|
||||
4.136358E-08
|
||||
2.667795E-03
|
||||
1.528407E-06
|
||||
6.199140E-04
|
||||
7.840402E-08
|
||||
1.029200E-05
|
||||
2.180706E-11
|
||||
4.353200E-06
|
||||
4.363747E-12
|
||||
2.211790E-05
|
||||
1.055892E-10
|
||||
6.086777E-06
|
||||
7.589579E-12
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue