diff --git a/docs/source/methods/eigenvalue.rst b/docs/source/methods/eigenvalue.rst
index fe99ba22ec..41bf865492 100644
--- a/docs/source/methods/eigenvalue.rst
+++ b/docs/source/methods/eigenvalue.rst
@@ -142,7 +142,7 @@ than unity. By ensuring that the expected number of fission sites in each mesh
cell is constant, the collision density across all cells, and hence the variance
of tallies, is more uniform than it would be otherwise.
-.. _Shannon entropy: https://laws.lanl.gov/vhosts/mcnp.lanl.gov/pdf_files/la-ur-06-3737_entropy.pdf
+.. _Shannon entropy: https://laws.lanl.gov/vhosts/mcnp.lanl.gov/pdf_files/la-ur-06-3737.pdf
.. [Lieberoth] J. Lieberoth, "A Monte Carlo Technique to Solve the Static
Eigenvalue Problem of the Boltzmann Transport Equation," *Nukleonik*, **11**,
diff --git a/openmc/material.py b/openmc/material.py
index e495357b54..4f60abc676 100644
--- a/openmc/material.py
+++ b/openmc/material.py
@@ -132,9 +132,12 @@ class Material(object):
@name.setter
def name(self, name):
- check_type('name for Material ID="{0}"'.format(self._id),
- name, basestring)
- self._name = name
+ if name is not None:
+ check_type('name for Material ID="{0}"'.format(self._id),
+ name, basestring)
+ self._name = name
+ else:
+ self._name = None
def set_density(self, units, density=NO_DENSITY):
"""Set the density of the material
diff --git a/openmc/mesh.py b/openmc/mesh.py
index 2fe873d2bc..af13d984df 100644
--- a/openmc/mesh.py
+++ b/openmc/mesh.py
@@ -148,8 +148,12 @@ class Mesh(object):
@name.setter
def name(self, name):
- check_type('name for mesh ID="{0}"'.format(self._id), name, basestring)
- self._name = name
+ if name is not None:
+ check_type('name for mesh ID="{0}"'.format(self._id),
+ name, basestring)
+ self._name = name
+ else:
+ self._name = None
@type.setter
def type(self, meshtype):
diff --git a/openmc/opencg_compatible.py b/openmc/opencg_compatible.py
index 9439a6eaf4..019d2aabcf 100644
--- a/openmc/opencg_compatible.py
+++ b/openmc/opencg_compatible.py
@@ -85,14 +85,14 @@ def get_opencg_material(openmc_material):
raise ValueError(msg)
global OPENCG_MATERIALS
- material_id = openmc_material._id
+ material_id = openmc_material.id
# If this Material was already created, use it
if material_id in OPENCG_MATERIALS:
return OPENCG_MATERIALS[material_id]
# Create an OpenCG Material to represent this OpenMC Material
- name = openmc_material._name
+ name = openmc_material.name
opencg_material = opencg.Material(material_id=material_id, name=name)
# Add the OpenMC Material to the global collection of all OpenMC Materials
@@ -125,14 +125,14 @@ def get_openmc_material(opencg_material):
raise ValueError(msg)
global OPENMC_MATERIALS
- material_id = opencg_material._id
+ material_id = opencg_material.id
# If this Material was already created, use it
if material_id in OPENMC_MATERIALS:
return OPENMC_MATERIALS[material_id]
# Create an OpenMC Material to represent this OpenCG Material
- name = opencg_material._name
+ name = opencg_material.name
openmc_material = openmc.Material(material_id=material_id, name=name)
# Add the OpenMC Material to the global collection of all OpenMC Materials
@@ -170,8 +170,8 @@ def is_opencg_surface_compatible(opencg_surface):
'since "{0}" is not a Surface'.format(opencg_surface)
raise ValueError(msg)
- if opencg_surface._type in ['x-squareprism',
- 'y-squareprism', 'z-squareprism']:
+ if opencg_surface.type in ['x-squareprism',
+ 'y-squareprism', 'z-squareprism']:
return False
else:
return True
@@ -198,59 +198,59 @@ def get_opencg_surface(openmc_surface):
raise ValueError(msg)
global OPENCG_SURFACES
- surface_id = openmc_surface._id
+ surface_id = openmc_surface.id
# If this Material was already created, use it
if surface_id in OPENCG_SURFACES:
return OPENCG_SURFACES[surface_id]
# Create an OpenCG Surface to represent this OpenMC Surface
- name = openmc_surface._name
+ name = openmc_surface.name
# Correct for OpenMC's syntax for Surfaces dividing Cells
- boundary = openmc_surface._boundary_type
+ boundary = openmc_surface.boundary_type
if boundary == 'transmission':
boundary = 'interface'
opencg_surface = None
- if openmc_surface._type == 'plane':
- A = openmc_surface._coeffs['A']
- B = openmc_surface._coeffs['B']
- C = openmc_surface._coeffs['C']
- D = openmc_surface._coeffs['D']
+ if openmc_surface.type == 'plane':
+ A = openmc_surface.a
+ B = openmc_surface.b
+ C = openmc_surface.c
+ D = openmc_surface.d
opencg_surface = opencg.Plane(surface_id, name, boundary, A, B, C, D)
- elif openmc_surface._type == 'x-plane':
- x0 = openmc_surface._coeffs['x0']
+ elif openmc_surface.type == 'x-plane':
+ x0 = openmc_surface.x0
opencg_surface = opencg.XPlane(surface_id, name, boundary, x0)
- elif openmc_surface._type == 'y-plane':
- y0 = openmc_surface._coeffs['y0']
+ elif openmc_surface.type == 'y-plane':
+ y0 = openmc_surface.y0
opencg_surface = opencg.YPlane(surface_id, name, boundary, y0)
- elif openmc_surface._type == 'z-plane':
- z0 = openmc_surface._coeffs['z0']
+ elif openmc_surface.type == 'z-plane':
+ z0 = openmc_surface.z0
opencg_surface = opencg.ZPlane(surface_id, name, boundary, z0)
- elif openmc_surface._type == 'x-cylinder':
- y0 = openmc_surface._coeffs['y0']
- z0 = openmc_surface._coeffs['z0']
- R = openmc_surface._coeffs['R']
+ elif openmc_surface.type == 'x-cylinder':
+ y0 = openmc_surface.y0
+ z0 = openmc_surface.z0
+ R = openmc_surface.r
opencg_surface = opencg.XCylinder(surface_id, name,
boundary, y0, z0, R)
- elif openmc_surface._type == 'y-cylinder':
- x0 = openmc_surface._coeffs['x0']
- z0 = openmc_surface._coeffs['z0']
- R = openmc_surface._coeffs['R']
+ elif openmc_surface.type == 'y-cylinder':
+ x0 = openmc_surface.x0
+ z0 = openmc_surface.z0
+ R = openmc_surface.r
opencg_surface = opencg.YCylinder(surface_id, name,
boundary, x0, z0, R)
- elif openmc_surface._type == 'z-cylinder':
- x0 = openmc_surface._coeffs['x0']
- y0 = openmc_surface._coeffs['y0']
- R = openmc_surface._coeffs['R']
+ elif openmc_surface.type == 'z-cylinder':
+ x0 = openmc_surface.x0
+ y0 = openmc_surface.y0
+ R = openmc_surface.r
opencg_surface = opencg.ZCylinder(surface_id, name,
boundary, x0, y0, R)
@@ -284,61 +284,61 @@ def get_openmc_surface(opencg_surface):
raise ValueError(msg)
global openmc_surface
- surface_id = opencg_surface._id
+ surface_id = opencg_surface.id
# If this Surface was already created, use it
if surface_id in OPENMC_SURFACES:
return OPENMC_SURFACES[surface_id]
# Create an OpenMC Surface to represent this OpenCG Surface
- name = opencg_surface._name
+ name = opencg_surface.name
# Correct for OpenMC's syntax for Surfaces dividing Cells
- boundary = opencg_surface._boundary_type
+ boundary = opencg_surface.boundary_type
if boundary == 'interface':
boundary = 'transmission'
- if opencg_surface._type == 'plane':
- A = opencg_surface._coeffs['A']
- B = opencg_surface._coeffs['B']
- C = opencg_surface._coeffs['C']
- D = opencg_surface._coeffs['D']
+ if opencg_surface.type == 'plane':
+ A = opencg_surface.a
+ B = opencg_surface.b
+ C = opencg_surface.c
+ D = opencg_surface.d
openmc_surface = openmc.Plane(surface_id, boundary, A, B, C, D, name)
- elif opencg_surface._type == 'x-plane':
- x0 = opencg_surface._coeffs['x0']
+ elif opencg_surface.type == 'x-plane':
+ x0 = opencg_surface.x0
openmc_surface = openmc.XPlane(surface_id, boundary, x0, name)
- elif opencg_surface._type == 'y-plane':
- y0 = opencg_surface._coeffs['y0']
+ elif opencg_surface.type == 'y-plane':
+ y0 = opencg_surface.y0
openmc_surface = openmc.YPlane(surface_id, boundary, y0, name)
- elif opencg_surface._type == 'z-plane':
- z0 = opencg_surface._coeffs['z0']
+ elif opencg_surface.type == 'z-plane':
+ z0 = opencg_surface.z0
openmc_surface = openmc.ZPlane(surface_id, boundary, z0, name)
- elif opencg_surface._type == 'x-cylinder':
- y0 = opencg_surface._coeffs['y0']
- z0 = opencg_surface._coeffs['z0']
- R = opencg_surface._coeffs['R']
+ elif opencg_surface.type == 'x-cylinder':
+ y0 = opencg_surface.y0
+ z0 = opencg_surface.z0
+ R = opencg_surface.r
openmc_surface = openmc.XCylinder(surface_id, boundary, y0, z0, R, name)
- elif opencg_surface._type == 'y-cylinder':
- x0 = opencg_surface._coeffs['x0']
- z0 = opencg_surface._coeffs['z0']
- R = opencg_surface._coeffs['R']
+ elif opencg_surface.type == 'y-cylinder':
+ x0 = opencg_surface.x0
+ z0 = opencg_surface.z0
+ R = opencg_surface.r
openmc_surface = openmc.YCylinder(surface_id, boundary, x0, z0, R, name)
- elif opencg_surface._type == 'z-cylinder':
- x0 = opencg_surface._coeffs['x0']
- y0 = opencg_surface._coeffs['y0']
- R = opencg_surface._coeffs['R']
+ elif opencg_surface.type == 'z-cylinder':
+ x0 = opencg_surface.x0
+ y0 = opencg_surface.y0
+ R = opencg_surface.r
openmc_surface = openmc.ZCylinder(surface_id, boundary, x0, y0, R, name)
else:
msg = 'Unable to create an OpenMC Surface from an OpenCG ' \
'Surface of type "{0}" since it is not a compatible ' \
- 'Surface type in OpenMC'.format(opencg_surface._type)
+ 'Surface type in OpenMC'.format(opencg_surface.type)
raise ValueError(msg)
# Add the OpenMC Surface to the global collection of all OpenMC Surfaces
@@ -375,20 +375,20 @@ def get_compatible_opencg_surfaces(opencg_surface):
raise ValueError(msg)
global OPENMC_SURFACES
- surface_id = opencg_surface._id
+ surface_id = opencg_surface.id
# If this Surface was already created, use it
if surface_id in OPENMC_SURFACES:
return OPENMC_SURFACES[surface_id]
# Create an OpenMC Surface to represent this OpenCG Surface
- name = opencg_surface._name
- boundary = opencg_surface._boundary_type
+ name = opencg_surface.name
+ boundary = opencg_surface.boundary_type
- if opencg_surface._type == 'x-squareprism':
- y0 = opencg_surface._coeffs['y0']
- z0 = opencg_surface._coeffs['z0']
- R = opencg_surface._coeffs['R']
+ if opencg_surface.type == 'x-squareprism':
+ y0 = opencg_surface.y0
+ z0 = opencg_surface.z0
+ R = opencg_surface.r
# Create a list of the four planes we need
left = opencg.YPlane(name=name, boundary=boundary, y0=y0-R)
@@ -397,10 +397,10 @@ def get_compatible_opencg_surfaces(opencg_surface):
top = opencg.ZPlane(name=name, boundary=boundary, z0=z0+R)
surfaces = [left, right, bottom, top]
- elif opencg_surface._type == 'y-squareprism':
- x0 = opencg_surface._coeffs['x0']
- z0 = opencg_surface._coeffs['z0']
- R = opencg_surface._coeffs['R']
+ elif opencg_surface.type == 'y-squareprism':
+ x0 = opencg_surface.x0
+ z0 = opencg_surface.z0
+ R = opencg_surface.r
# Create a list of the four planes we need
left = opencg.XPlane(name=name, boundary=boundary, x0=x0-R)
@@ -409,10 +409,10 @@ def get_compatible_opencg_surfaces(opencg_surface):
top = opencg.ZPlane(name=name, boundary=boundary, z0=z0+R)
surfaces = [left, right, bottom, top]
- elif opencg_surface._type == 'z-squareprism':
- x0 = opencg_surface._coeffs['x0']
- y0 = opencg_surface._coeffs['y0']
- R = opencg_surface._coeffs['R']
+ elif opencg_surface.type == 'z-squareprism':
+ x0 = opencg_surface.x0['x0']
+ y0 = opencg_surface.y0['y0']
+ R = opencg_surface.r['R']
# Create a list of the four planes we need
left = opencg.XPlane(name=name, boundary=boundary, x0=x0-R)
@@ -424,7 +424,7 @@ def get_compatible_opencg_surfaces(opencg_surface):
else:
msg = 'Unable to create a compatible OpenMC Surface an OpenCG ' \
'Surface of type "{0}" since it already a compatible ' \
- 'Surface type in OpenMC'.format(opencg_surface._type)
+ 'Surface type in OpenMC'.format(opencg_surface.type)
raise ValueError(msg)
# Add the OpenMC Surface(s) to the global collection of all OpenMC Surfaces
@@ -457,30 +457,30 @@ def get_opencg_cell(openmc_cell):
raise ValueError(msg)
global OPENCG_CELLS
- cell_id = openmc_cell._id
+ cell_id = openmc_cell.id
# If this Cell was already created, use it
if cell_id in OPENCG_CELLS:
return OPENCG_CELLS[cell_id]
# Create an OpenCG Cell to represent this OpenMC Cell
- name = openmc_cell._name
+ name = openmc_cell.name
opencg_cell = opencg.Cell(cell_id, name)
- fill = openmc_cell._fill
+ fill = openmc_cell.fill
- if (openmc_cell._type == 'normal'):
- opencg_cell.setFill(get_opencg_material(fill))
- elif (openmc_cell._type == 'fill'):
- opencg_cell.setFill(get_opencg_universe(fill))
+ if (openmc_cell.fill_type == 'material'):
+ opencg_cell.fill = get_opencg_material(fill)
+ elif (openmc_cell.fill_type == 'universe'):
+ opencg_cell.fill = get_opencg_universe(fill)
else:
- opencg_cell.setFill(get_opencg_lattice(fill))
+ opencg_cell.fill = get_opencg_lattice(fill)
- if openmc_cell._rotation is not None:
- opencg_cell.setRotation(openmc_cell._rotation)
+ if openmc_cell.rotation is not None:
+ opencg_cell.rotation = openmc_cell.rotation
- if openmc_cell._translation is not None:
- opencg_cell.setTranslation(openmc_cell._translation)
+ if openmc_cell.translation is not None:
+ opencg_cell.translation = openmc_cell.translation
# Add surfaces to OpenCG cell from OpenMC cell region. Right now this only
# works if the region is a single half-space or an intersection of
@@ -489,7 +489,7 @@ def get_opencg_cell(openmc_cell):
if isinstance(region, Halfspace):
surface = region.surface
halfspace = -1 if region.side == '-' else 1
- opencg_cell.addSurface(get_opencg_surface(surface), halfspace)
+ opencg_cell.add_surface(get_opencg_surface(surface), halfspace)
elif isinstance(region, Intersection):
for node in region.nodes:
if not isinstance(node, Halfspace):
@@ -497,7 +497,7 @@ def get_opencg_cell(openmc_cell):
"in OpenCG.")
surface = node.surface
halfspace = -1 if node.side == '-' else 1
- opencg_cell.addSurface(get_opencg_surface(surface), halfspace)
+ opencg_cell.add_surface(get_opencg_surface(surface), halfspace)
else:
raise NotImplementedError("Complex cells not yet supported in OpenCG.")
@@ -550,8 +550,8 @@ def get_compatible_opencg_cells(opencg_cell, opencg_surface, halfspace):
compatible_cells = []
# SquarePrism Surfaces
- if opencg_surface._type in ['x-squareprism', 'y-squareprism',
- 'z-squareprism']:
+ if opencg_surface.type in ['x-squareprism', 'y-squareprism',
+ 'z-squareprism']:
# Get the compatible Surfaces (XPlanes and YPlanes)
compatible_surfaces = get_compatible_opencg_surfaces(opencg_surface)
@@ -560,10 +560,10 @@ def get_compatible_opencg_cells(opencg_cell, opencg_surface, halfspace):
# If Cell is inside SquarePrism, add "inside" of Surface halfspaces
if halfspace == -1:
- opencg_cell.addSurface(compatible_surfaces[0], +1)
- opencg_cell.addSurface(compatible_surfaces[1], -1)
- opencg_cell.addSurface(compatible_surfaces[2], +1)
- opencg_cell.addSurface(compatible_surfaces[3], -1)
+ opencg_cell.add_surface(compatible_surfaces[0], +1)
+ opencg_cell.add_surface(compatible_surfaces[1], -1)
+ opencg_cell.add_surface(compatible_surfaces[2], +1)
+ opencg_cell.add_surface(compatible_surfaces[3], -1)
compatible_cells.append(opencg_cell)
# If Cell is outside SquarePrism, add "outside" of Surface halfspaces
@@ -645,12 +645,12 @@ def make_opencg_cells_compatible(opencg_universe):
raise ValueError(msg)
# Check all OpenCG Cells in this Universe for compatibility with OpenMC
- opencg_cells = opencg_universe._cells
+ opencg_cells = opencg_universe.cells
for cell_id, opencg_cell in opencg_cells.items():
# Check each of the OpenCG Surfaces for OpenMC compatibility
- surfaces = opencg_cell._surfaces
+ surfaces = opencg_cell.surfaces
for surface_id in surfaces:
surface = surfaces[surface_id][0]
@@ -673,7 +673,7 @@ def make_opencg_cells_compatible(opencg_universe):
opencg_universe.removeCell(opencg_cell)
# Add the compatible OpenCG Cells to the Universe
- opencg_universe.addCells(cells)
+ opencg_universe.add_cells(cells)
# Make recursive call to look at the updated state of the
# OpenCG Universe and return
@@ -704,34 +704,34 @@ def get_openmc_cell(opencg_cell):
raise ValueError(msg)
global OPENMC_CELLS
- cell_id = opencg_cell._id
+ cell_id = opencg_cell.id
# If this Cell was already created, use it
if cell_id in OPENMC_CELLS:
return OPENMC_CELLS[cell_id]
# Create an OpenCG Cell to represent this OpenMC Cell
- name = opencg_cell._name
+ name = opencg_cell.name
openmc_cell = openmc.Cell(cell_id, name)
- fill = opencg_cell._fill
+ fill = opencg_cell.fill
- if (opencg_cell._type == 'universe'):
+ if (opencg_cell.type == 'universe'):
openmc_cell.fill = get_openmc_universe(fill)
- elif (opencg_cell._type == 'lattice'):
+ elif (opencg_cell.type == 'lattice'):
openmc_cell.fill = get_openmc_lattice(fill)
else:
openmc_cell.fill = get_openmc_material(fill)
- if opencg_cell._rotation:
- rotation = np.asarray(opencg_cell._rotation, dtype=np.int)
+ if opencg_cell.rotation:
+ rotation = np.asarray(opencg_cell.rotation, dtype=np.int)
openmc_cell.rotation = rotation
- if opencg_cell._translation:
- translation = np.asarray(opencg_cell._translation, dtype=np.float64)
- openmc_cell.setTranslation(translation)
+ if opencg_cell.translation:
+ translation = np.asarray(opencg_cell.translation, dtype=np.float64)
+ openmc_cell.translation = translation
- surfaces = opencg_cell._surfaces
+ surfaces = opencg_cell.surfaces
for surface_id in surfaces:
surface = surfaces[surface_id][0]
@@ -768,22 +768,22 @@ def get_opencg_universe(openmc_universe):
raise ValueError(msg)
global OPENCG_UNIVERSES
- universe_id = openmc_universe._id
+ universe_id = openmc_universe.id
# If this Universe was already created, use it
if universe_id in OPENCG_UNIVERSES:
return OPENCG_UNIVERSES[universe_id]
# Create an OpenCG Universe to represent this OpenMC Universe
- name = openmc_universe._name
+ name = openmc_universe.name
opencg_universe = opencg.Universe(universe_id, name)
# Convert all OpenMC Cells in this Universe to OpenCG Cells
- openmc_cells = openmc_universe._cells
+ openmc_cells = openmc_universe.cells
for cell_id, openmc_cell in openmc_cells.items():
opencg_cell = get_opencg_cell(openmc_cell)
- opencg_universe.addCell(opencg_cell)
+ opencg_universe.add_cell(opencg_cell)
# Add the OpenMC Universe to the global collection of all OpenMC Universes
OPENMC_UNIVERSES[universe_id] = openmc_universe
@@ -815,7 +815,7 @@ def get_openmc_universe(opencg_universe):
raise ValueError(msg)
global OPENMC_UNIVERSES
- universe_id = opencg_universe._id
+ universe_id = opencg_universe.id
# If this Universe was already created, use it
if universe_id in OPENMC_UNIVERSES:
@@ -825,11 +825,11 @@ def get_openmc_universe(opencg_universe):
make_opencg_cells_compatible(opencg_universe)
# Create an OpenMC Universe to represent this OpenCSg Universe
- name = opencg_universe._name
+ name = opencg_universe.name
openmc_universe = openmc.Universe(universe_id, name)
# Convert all OpenCG Cells in this Universe to OpenMC Cells
- opencg_cells = opencg_universe._cells
+ opencg_cells = opencg_universe.cells
for cell_id, opencg_cell in opencg_cells.items():
openmc_cell = get_openmc_cell(opencg_cell)
@@ -865,7 +865,7 @@ def get_opencg_lattice(openmc_lattice):
raise ValueError(msg)
global OPENCG_LATTICES
- lattice_id = openmc_lattice._id
+ lattice_id = openmc_lattice.id
# If this Lattice was already created, use it
if lattice_id in OPENCG_LATTICES:
@@ -902,18 +902,18 @@ def get_opencg_lattice(openmc_lattice):
for z in range(dimension[2]):
for y in range(dimension[1]):
for x in range(dimension[0]):
- universe_id = universes[x][dimension[1]-y-1][z]._id
+ universe_id = universes[x][dimension[1]-y-1][z].id
universe_array[z][y][x] = unique_universes[universe_id]
opencg_lattice = opencg.Lattice(lattice_id, name)
- opencg_lattice.setDimension(dimension)
- opencg_lattice.setWidth(pitch)
- opencg_lattice.setUniverses(universe_array)
+ opencg_lattice.dimension = dimension
+ opencg_lattice.width = pitch
+ opencg_lattice.universes = universe_array
offset = np.array(lower_left, dtype=np.float64) - \
((np.array(pitch, dtype=np.float64) *
np.array(dimension, dtype=np.float64))) / -2.0
- opencg_lattice.setOffset(offset)
+ opencg_lattice.offset = offset
# Add the OpenMC Lattice to the global collection of all OpenMC Lattices
OPENMC_LATTICES[lattice_id] = openmc_lattice
@@ -945,23 +945,23 @@ def get_openmc_lattice(opencg_lattice):
raise ValueError(msg)
global OPENMC_LATTICES
- lattice_id = opencg_lattice._id
+ lattice_id = opencg_lattice.id
# If this Lattice was already created, use it
if lattice_id in OPENMC_LATTICES:
return OPENMC_LATTICES[lattice_id]
- dimension = opencg_lattice._dimension
- width = opencg_lattice._width
- offset = opencg_lattice._offset
- universes = opencg_lattice._universes
+ dimension = opencg_lattice.dimension
+ width = opencg_lattice.width
+ offset = opencg_lattice.offset
+ universes = opencg_lattice.universes
# Initialize an empty array for the OpenMC nested Universes in this Lattice
universe_array = np.ndarray(tuple(np.array(dimension)),
dtype=openmc.Universe)
# Create OpenMC Universes for each unique nested Universe in this Lattice
- unique_universes = opencg_lattice.getUniqueUniverses()
+ unique_universes = opencg_lattice.get_unique_universes()
for universe_id, universe in unique_universes.items():
unique_universes[universe_id] = get_openmc_universe(universe)
@@ -970,7 +970,7 @@ def get_openmc_lattice(opencg_lattice):
for z in range(dimension[2]):
for y in range(dimension[1]):
for x in range(dimension[0]):
- universe_id = universes[z][y][x]._id
+ universe_id = universes[z][y][x].id
universe_array[x][y][z] = unique_universes[universe_id]
# Reverse y-dimension in array to match ordering in OpenCG
@@ -1025,12 +1025,12 @@ def get_opencg_geometry(openmc_geometry):
OPENMC_LATTICES.clear()
OPENCG_LATTICES.clear()
- openmc_root_universe = openmc_geometry._root_universe
+ openmc_root_universe = openmc_geometry.root_universe
opencg_root_universe = get_opencg_universe(openmc_root_universe)
opencg_geometry = opencg.Geometry()
- opencg_geometry.setRootUniverse(opencg_root_universe)
- opencg_geometry.initializeCellOffsets()
+ opencg_geometry.root_universe = opencg_root_universe
+ opencg_geometry.initialize_cell_offsets()
return opencg_geometry
@@ -1057,11 +1057,11 @@ def get_openmc_geometry(opencg_geometry):
# Deep copy the goemetry since it may be modified to make all Surfaces
# compatible with OpenMC's specifications
- opencg_geometry.assignAutoIds()
+ opencg_geometry.assign_auto_ids()
opencg_geometry = copy.deepcopy(opencg_geometry)
# Update Cell bounding boxes in Geometry
- opencg_geometry.updateBoundingBoxes()
+ opencg_geometry.update_bounding_boxes()
# Clear dictionaries and auto-generated ID
OPENMC_SURFACES.clear()
@@ -1074,14 +1074,14 @@ def get_openmc_geometry(opencg_geometry):
OPENCG_LATTICES.clear()
# Make the entire geometry "compatible" before assigning auto IDs
- universes = opencg_geometry.getAllUniverses()
+ universes = opencg_geometry.get_all_universes()
for universe_id, universe in universes.items():
if not isinstance(universe, opencg.Lattice):
make_opencg_cells_compatible(universe)
- opencg_geometry.assignAutoIds()
+ opencg_geometry.assign_auto_ids()
- opencg_root_universe = opencg_geometry._root_universe
+ opencg_root_universe = opencg_geometry.root_universe
openmc_root_universe = get_openmc_universe(opencg_root_universe)
openmc_geometry = openmc.Geometry()
diff --git a/openmc/summary.py b/openmc/summary.py
index 7a7a9457c7..75f2a0f2a2 100644
--- a/openmc/summary.py
+++ b/openmc/summary.py
@@ -73,6 +73,9 @@ class Summary(object):
nuc_densities = self._f['materials'][key]['nuclide_densities'][...]
nuclides = self._f['materials'][key]['nuclides'].value
+ # Create the Material
+ material = openmc.Material(material_id=material_id, name=name)
+
# Read the names of the S(a,b) tables for this Material and add them
if 'sab_names' in self._f['materials'][key]:
sab_tables = self._f['materials'][key]['sab_names'].value
@@ -80,10 +83,8 @@ class Summary(object):
name, xs = sab_table.decode().split('.')
material.add_s_alpha_beta(name, xs)
- # Create the Material
- material = openmc.Material(material_id=material_id, name=name)
-
- # Set the Material's density to g/cm3 - this is what is used in OpenMC
+ # Set the Material's density to g/cm3 - this is what is used in
+ # OpenMC
material.set_density(density=density, units='g/cm3')
# Add all nuclides to the Material
diff --git a/openmc/surface.py b/openmc/surface.py
index a5763d9cf2..74f4fd7805 100644
--- a/openmc/surface.py
+++ b/openmc/surface.py
@@ -108,8 +108,11 @@ class Surface(object):
@name.setter
def name(self, name):
- check_type('surface name', name, basestring)
- self._name = name
+ if name is not None:
+ check_type('surface name', name, basestring)
+ self._name = name
+ else:
+ self._name = None
@boundary_type.setter
def boundary_type(self, boundary_type):
@@ -279,7 +282,7 @@ class XPlane(Plane):
@property
def x0(self):
- return self._coeffs['x0']
+ return self.coeffs['x0']
@x0.setter
def x0(self, x0):
diff --git a/openmc/tallies.py b/openmc/tallies.py
index 20a6af3f29..a1206f012a 100644
--- a/openmc/tallies.py
+++ b/openmc/tallies.py
@@ -373,8 +373,11 @@ class Tally(object):
@name.setter
def name(self, name):
- check_type('tally name', name, basestring)
- self._name = name
+ if name is not None:
+ check_type('tally name', name, basestring)
+ self._name = name
+ else:
+ self._name = None
def add_filter(self, filter):
"""Add a filter to the tally
diff --git a/openmc/universe.py b/openmc/universe.py
index d7988c8d90..e9f7f3284c 100644
--- a/openmc/universe.py
+++ b/openmc/universe.py
@@ -86,8 +86,15 @@ class Cell(object):
return self._fill
@property
- def type(self):
- return self._fill
+ def fill_type(self):
+ if isinstance(self.fill, openmc.Material):
+ return 'material'
+ elif isinstance(self.fill, openmc.Universe):
+ return 'universe'
+ elif isinstance(self.fill, openmc.Lattice):
+ return 'lattice'
+ else:
+ return None
@property
def region(self):
@@ -118,8 +125,11 @@ class Cell(object):
@name.setter
def name(self, name):
- cv.check_type('cell name', name, basestring)
- self._name = name
+ if name is not None:
+ cv.check_type('cell name', name, basestring)
+ self._name = name
+ else:
+ self._name = None
@fill.setter
def fill(self, fill):
@@ -437,8 +447,11 @@ class Universe(object):
@name.setter
def name(self, name):
- cv.check_type('universe name', name, basestring)
- self._name = name
+ if name is not None:
+ cv.check_type('universe name', name, basestring)
+ self._name = name
+ else:
+ self._name = None
def add_cell(self, cell):
"""Add a cell to the universe.
@@ -676,8 +689,11 @@ class Lattice(object):
@name.setter
def name(self, name):
- cv.check_type('lattice name', name, basestring)
- self._name = name
+ if name is not None:
+ cv.check_type('lattice name', name, basestring)
+ self._name = name
+ else:
+ self._name = None
@outer.setter
def outer(self, outer):
diff --git a/src/ace_header.F90 b/src/ace_header.F90
index 209b752bf8..467887c193 100644
--- a/src/ace_header.F90
+++ b/src/ace_header.F90
@@ -1,8 +1,8 @@
module ace_header
- use constants, only: MAX_FILE_LEN, ZERO
- use endf_header, only: Tab1
- use list_header, only: ListInt
+ use constants, only: MAX_FILE_LEN, ZERO
+ use endf_header, only: Tab1
+ use list_header, only: ListInt
implicit none
diff --git a/src/cross_section.F90 b/src/cross_section.F90
index b937b03a15..4d8fb2f0fb 100644
--- a/src/cross_section.F90
+++ b/src/cross_section.F90
@@ -33,6 +33,7 @@ contains
integer :: i_nuclide ! index into nuclides array
integer :: i_sab ! index into sab_tables array
integer :: j ! index in mat % i_sab_nuclides
+ integer :: u ! index into logarithmic mapping array
real(8) :: atom_density ! atom density of a nuclide
logical :: check_sab ! should we check for S(a,b) table?
type(Material), pointer :: mat ! current material
@@ -50,9 +51,13 @@ contains
mat => materials(p % material)
- ! Find energy index on global or material unionized grid
- if (grid_method == GRID_MAT_UNION) &
- call find_energy_index(p % E, p % material)
+ ! Find energy index on energy grid
+ u = 0
+ if (grid_method == GRID_MAT_UNION) then
+ call find_energy_index(p % E, p % material)
+ else if (grid_method == GRID_LOGARITHM) then
+ u = int(log(p % E/1.0e-11_8)/log_spacing)
+ end if
! Determine if this material has S(a,b) tables
check_sab = (mat % n_sab > 0)
@@ -94,9 +99,9 @@ contains
! Calculate microscopic cross section for this nuclide
if (p % E /= micro_xs(i_nuclide) % last_E) then
- call calculate_nuclide_xs(i_nuclide, i_sab, p % E, p % material, i)
+ call calculate_nuclide_xs(i_nuclide, i_sab, p % E, p % material, i, u)
else if (i_sab /= micro_xs(i_nuclide) % last_index_sab) then
- call calculate_nuclide_xs(i_nuclide, i_sab, p % E, p % material, i)
+ call calculate_nuclide_xs(i_nuclide, i_sab, p % E, p % material, i, u)
end if
! ========================================================================
@@ -137,16 +142,16 @@ contains
! given index in the nuclides array at the energy of the given particle
!===============================================================================
- subroutine calculate_nuclide_xs(i_nuclide, i_sab, E, i_mat, i_nuc_mat)
+ subroutine calculate_nuclide_xs(i_nuclide, i_sab, E, i_mat, i_nuc_mat, u)
integer, intent(in) :: i_nuclide ! index into nuclides array
integer, intent(in) :: i_sab ! index into sab_tables array
integer, intent(in) :: i_mat ! index into materials array
integer, intent(in) :: i_nuc_mat ! index into nuclides array for a material
+ integer, intent(in) :: u ! index into logarithmic mapping array
integer :: i_grid ! index on nuclide energy grid
integer :: i_low ! lower logarithmic mapping index
integer :: i_high ! upper logarithmic mapping index
- integer :: u ! index into logarithmic mapping array
real(8), intent(in) :: E ! energy
real(8) :: f ! interp factor on nuclide energy grid
type(Nuclide), pointer :: nuc
@@ -173,7 +178,6 @@ contains
else
! Determine bounding indices based on which equal log-spaced interval
! the energy is in
- u = int(log(E/1.0e-11_8)/log_spacing)
i_low = nuc % grid_index(u)
i_high = nuc % grid_index(u + 1) + 1
diff --git a/src/search.F90 b/src/search.F90
index dab7fa67ca..d38dfb986e 100644
--- a/src/search.F90
+++ b/src/search.F90
@@ -28,7 +28,6 @@ contains
integer :: L
integer :: R
integer :: n_iteration
- real(8) :: testval
L = 1
R = n
@@ -39,22 +38,11 @@ contains
n_iteration = 0
do while (R - L > 1)
-
- ! Check boundaries
- if (val > array(L) .and. val < array(L+1)) then
- array_index = L
- return
- elseif (val > array(R-1) .and. val < array(R)) then
- array_index = R - 1
- return
- end if
-
! Find values at midpoint
array_index = L + (R - L)/2
- testval = array(array_index)
- if (val >= testval) then
+ if (val >= array(array_index)) then
L = array_index
- elseif (val < testval) then
+ else
R = array_index
end if
@@ -80,7 +68,6 @@ contains
integer :: L
integer :: R
integer :: n_iteration
- real(8) :: testval
L = 1
R = n
@@ -91,22 +78,11 @@ contains
n_iteration = 0
do while (R - L > 1)
-
- ! Check boundaries
- if (val > array(L) .and. val < array(L+1)) then
- array_index = L
- return
- elseif (val > array(R-1) .and. val < array(R)) then
- array_index = R - 1
- return
- end if
-
! Find values at midpoint
array_index = L + (R - L)/2
- testval = array(array_index)
- if (val >= testval) then
+ if (val >= array(array_index)) then
L = array_index
- elseif (val < testval) then
+ else
R = array_index
end if
@@ -132,7 +108,6 @@ contains
integer :: L
integer :: R
integer :: n_iteration
- real(8) :: testval
L = 1
R = n
@@ -143,22 +118,11 @@ contains
n_iteration = 0
do while (R - L > 1)
-
- ! Check boundaries
- if (val > array(L) .and. val < array(L+1)) then
- array_index = L
- return
- elseif (val > array(R-1) .and. val < array(R)) then
- array_index = R - 1
- return
- end if
-
! Find values at midpoint
array_index = L + (R - L)/2
- testval = array(array_index)
- if (val >= testval) then
+ if (val >= array(array_index)) then
L = array_index
- elseif (val < testval) then
+ else
R = array_index
end if
diff --git a/src/tally.F90 b/src/tally.F90
index 33e452a4c7..d8ecf4db51 100644
--- a/src/tally.F90
+++ b/src/tally.F90
@@ -170,10 +170,34 @@ contains
! Only analog estimators are available.
! Skip any event where the particle didn't scatter
if (p % event /= EVENT_SCATTER) cycle SCORE_LOOP
- ! For scattering production, we need to use the post-collision
- ! weight as the estimate for the number of neutrons exiting a
- ! reaction with neutrons in the exit channel
- score = p % wgt
+ ! For scattering production, we need to use the pre-collision
+ ! weight times the multiplicity as the estimate for the number of
+ ! neutrons exiting a reaction with neutrons in the exit channel
+ if (p % event_MT == ELASTIC .or. p % event_MT == N_LEVEL .or. &
+ (p % event_MT >= N_N1 .and. p % event_MT <= N_NC)) then
+ ! Don't waste time on very common reactions we know have multiplicities
+ ! of one.
+ score = p % last_wgt
+ else
+ do m = 1, nuclides(p % event_nuclide) % n_reaction
+ ! Check if this is the desired MT
+ if (p % event_MT == nuclides(p % event_nuclide) % reactions(m) % MT) then
+ ! Found the reaction, set our pointer and move on with life
+ rxn => nuclides(p % event_nuclide) % reactions(m)
+ exit
+ end if
+ end do
+
+ ! Get multiplicity and apply to score
+ if (rxn % multiplicity_with_E) then
+ ! Then the multiplicity was already incorporated in to p % wgt
+ ! per the scattering routine,
+ score = p % wgt
+ else
+ ! Grab the multiplicity from the rxn
+ score = p % last_wgt * rxn % multiplicity
+ end if
+ end if
case (SCORE_NU_SCATTER_PN)
@@ -183,10 +207,34 @@ contains
i = i + t % moment_order(i)
cycle SCORE_LOOP
end if
- ! For scattering production, we need to use the post-collision
- ! weight as the estimate for the number of neutrons exiting a
- ! reaction with neutrons in the exit channel
- score = p % wgt
+ ! For scattering production, we need to use the pre-collision
+ ! weight times the multiplicity as the estimate for the number of
+ ! neutrons exiting a reaction with neutrons in the exit channel
+ if (p % event_MT == ELASTIC .or. p % event_MT == N_LEVEL .or. &
+ (p % event_MT >= N_N1 .and. p % event_MT <= N_NC)) then
+ ! Don't waste time on very common reactions we know have multiplicities
+ ! of one.
+ score = p % last_wgt
+ else
+ do m = 1, nuclides(p % event_nuclide) % n_reaction
+ ! Check if this is the desired MT
+ if (p % event_MT == nuclides(p % event_nuclide) % reactions(m) % MT) then
+ ! Found the reaction, set our pointer and move on with life
+ rxn => nuclides(p % event_nuclide) % reactions(m)
+ exit
+ end if
+ end do
+
+ ! Get multiplicity and apply to score
+ if (rxn % multiplicity_with_E) then
+ ! Then the multiplicity was already incorporated in to p % wgt
+ ! per the scattering routine,
+ score = p % wgt
+ else
+ ! Grab the multiplicity from the rxn
+ score = p % last_wgt * rxn % multiplicity
+ end if
+ end if
case (SCORE_NU_SCATTER_YN)
@@ -196,10 +244,34 @@ contains
i = i + (t % moment_order(i) + 1)**2 - 1
cycle SCORE_LOOP
end if
- ! For scattering production, we need to use the post-collision
- ! weight as the estimate for the number of neutrons exiting a
- ! reaction with neutrons in the exit channel
- score = p % wgt
+ ! For scattering production, we need to use the pre-collision
+ ! weight times the multiplicity as the estimate for the number of
+ ! neutrons exiting a reaction with neutrons in the exit channel
+ if (p % event_MT == ELASTIC .or. p % event_MT == N_LEVEL .or. &
+ (p % event_MT >= N_N1 .and. p % event_MT <= N_NC)) then
+ ! Don't waste time on very common reactions we know have multiplicities
+ ! of one.
+ score = p % last_wgt
+ else
+ do m = 1, nuclides(p % event_nuclide) % n_reaction
+ ! Check if this is the desired MT
+ if (p % event_MT == nuclides(p % event_nuclide) % reactions(m) % MT) then
+ ! Found the reaction, set our pointer and move on with life
+ rxn => nuclides(p % event_nuclide) % reactions(m)
+ exit
+ end if
+ end do
+
+ ! Get multiplicity and apply to score
+ if (rxn % multiplicity_with_E) then
+ ! Then the multiplicity was already incorporated in to p % wgt
+ ! per the scattering routine,
+ score = p % wgt
+ else
+ ! Grab the multiplicity from the rxn
+ score = p % last_wgt * rxn % multiplicity
+ end if
+ end if
case (SCORE_TRANSPORT)
diff --git a/tests/run_tests.py b/tests/run_tests.py
index d3b79aa3b1..70ea4c3dc9 100755
--- a/tests/run_tests.py
+++ b/tests/run_tests.py
@@ -126,7 +126,12 @@ class Test(object):
# Check for MPI
if self.mpi:
- self.fc = os.path.join(MPI_DIR, 'bin', 'mpifort')
+ if os.path.exists(os.path.join(MPI_DIR, 'bin', 'mpifort')):
+ self.fc = os.path.join(MPI_DIR, 'bin', 'mpifort')
+ elif os.path.exists(os.path.join(MPI_DIR, 'bin', 'mpif90')):
+ self.fc = os.path.join(MPI_DIR, 'bin', 'mpif90')
+ else:
+ raise RuntimeError('Cannot find an MPI Fortran compiler')
else:
self.fc = FC
diff --git a/tests/test_cmfd_feed/results_true.dat b/tests/test_cmfd_feed/results_true.dat
index 26380d403f..9c109db6ab 100644
--- a/tests/test_cmfd_feed/results_true.dat
+++ b/tests/test_cmfd_feed/results_true.dat
@@ -1,128 +1,128 @@
k-combined:
-1.172666E+00 8.502438E-03
+1.168349E+00 1.145333E-02
tally 1:
-1.170812E+01
-1.376785E+01
-2.179886E+01
-4.765478E+01
-2.945614E+01
-8.709999E+01
-3.527293E+01
-1.245879E+02
-3.829349E+01
-1.470691E+02
-3.709040E+01
-1.379455E+02
-3.380335E+01
-1.145311E+02
-2.801351E+01
-7.871047E+01
-2.029625E+01
-4.131602E+01
-1.084302E+01
-1.180329E+01
+1.167844E+01
+1.366808E+01
+2.141846E+01
+4.598143E+01
+2.928738E+01
+8.615095E+01
+3.513015E+01
+1.241914E+02
+3.715164E+01
+1.384553E+02
+3.639309E+01
+1.327919E+02
+3.370872E+01
+1.138391E+02
+2.875251E+01
+8.292323E+01
+2.117740E+01
+4.512961E+01
+1.130554E+01
+1.289872E+01
tally 2:
-2.270565E+01
-2.599927E+01
-1.590852E+01
-1.276260E+01
-2.252857E+00
-2.614120E-01
-4.313167E+01
-9.326539E+01
-3.044479E+01
-4.648169E+01
-4.023051E+00
-8.172006E-01
-5.859113E+01
-1.725665E+02
-4.171599E+01
-8.755981E+01
-5.512216E+00
-1.531207E+00
-6.892516E+01
-2.383198E+02
-4.904413E+01
-1.207096E+02
-6.542718E+00
-2.155749E+00
-7.421495E+01
-2.764539E+02
-5.288881E+01
-1.405388E+02
-6.811354E+00
-2.358827E+00
-7.278191E+01
-2.661597E+02
-5.169924E+01
-1.343999E+02
-6.516967E+00
-2.148745E+00
-6.655238E+01
-2.222812E+02
-4.729758E+01
-1.123214E+02
-6.102046E+00
-1.890147E+00
-5.708495E+01
-1.636585E+02
-4.068603E+01
-8.317681E+01
-5.394757E+00
-1.465413E+00
-4.136562E+01
-8.598520E+01
-2.958591E+01
-4.402226E+01
-3.765802E+00
-7.200302E-01
-2.275517E+01
-2.614738E+01
-1.589295E+01
-1.276624E+01
-2.232715E+00
-2.558645E-01
+2.339531E+01
+2.755922E+01
+1.646762E+01
+1.365289E+01
+2.146174E+00
+2.369613E-01
+4.309769E+01
+9.312913E+01
+3.054873E+01
+4.681242E+01
+4.076365E+00
+8.462370E-01
+5.840647E+01
+1.715260E+02
+4.161366E+01
+8.713062E+01
+5.382541E+00
+1.473814E+00
+6.927641E+01
+2.411359E+02
+4.943841E+01
+1.228850E+02
+6.282202E+00
+1.990021E+00
+7.308593E+01
+2.678848E+02
+5.202069E+01
+1.357621E+02
+6.826145E+00
+2.353974E+00
+7.117026E+01
+2.543546E+02
+5.068896E+01
+1.290261E+02
+6.342979E+00
+2.033850E+00
+6.615720E+01
+2.193712E+02
+4.725156E+01
+1.119514E+02
+6.024815E+00
+1.833752E+00
+5.738164E+01
+1.651944E+02
+4.081217E+01
+8.360122E+01
+5.326191E+00
+1.435896E+00
+4.208669E+01
+8.911740E+01
+2.994944E+01
+4.517409E+01
+3.905846E+00
+7.855247E-01
+2.273578E+01
+2.615080E+01
+1.603853E+01
+1.303560E+01
+2.160924E+00
+2.473278E-01
tally 3:
-1.529144E+01
-1.179942E+01
-1.023883E+00
-5.386625E-02
-2.936854E+01
-4.326483E+01
-1.881629E+00
-1.788063E-01
-4.015056E+01
-8.114284E+01
-2.594958E+00
-3.407980E-01
-4.720593E+01
-1.118311E+02
-3.161769E+00
-5.053887E-01
-5.095790E+01
-1.304930E+02
-3.308202E+00
-5.528151E-01
-4.979520E+01
-1.246892E+02
-3.163884E+00
-5.062497E-01
-4.554330E+01
-1.041770E+02
-3.019145E+00
-4.618487E-01
-3.921119E+01
-7.727273E+01
-2.472070E+00
-3.099171E-01
-2.843166E+01
-4.067093E+01
-1.823607E+00
-1.688171E-01
-1.530477E+01
-1.184246E+01
-1.047996E+00
-5.549017E-02
+1.584939E+01
+1.265206E+01
+1.096930E+00
+6.173135E-02
+2.940258E+01
+4.337818E+01
+1.932931E+00
+1.884749E-01
+4.008186E+01
+8.086427E+01
+2.512704E+00
+3.189987E-01
+4.759648E+01
+1.139252E+02
+3.041630E+00
+4.683237E-01
+5.006181E+01
+1.257467E+02
+3.137042E+00
+4.981005E-01
+4.883211E+01
+1.197646E+02
+3.130686E+00
+4.987337E-01
+4.550029E+01
+1.038199E+02
+2.853740E+00
+4.127265E-01
+3.937822E+01
+7.785807E+01
+2.488983E+00
+3.156421E-01
+2.884912E+01
+4.192640E+01
+1.855316E+00
+1.745109E-01
+1.543635E+01
+1.208459E+01
+1.025635E+00
+5.351565E-02
tally 4:
0.000000E+00
0.000000E+00
@@ -160,8 +160,8 @@ tally 4:
0.000000E+00
0.000000E+00
0.000000E+00
-3.111592E+00
-4.883699E-01
+3.119914E+00
+4.908283E-01
0.000000E+00
0.000000E+00
0.000000E+00
@@ -208,10 +208,10 @@ tally 4:
0.000000E+00
0.000000E+00
0.000000E+00
-5.536088E+00
-1.540676E+00
-2.727975E+00
-3.757452E-01
+5.567786E+00
+1.556825E+00
+2.766088E+00
+3.864023E-01
0.000000E+00
0.000000E+00
0.000000E+00
@@ -256,10 +256,10 @@ tally 4:
0.000000E+00
0.000000E+00
0.000000E+00
-7.518115E+00
-2.840502E+00
-5.271874E+00
-1.398895E+00
+7.491891E+00
+2.819491E+00
+5.235154E+00
+1.377898E+00
0.000000E+00
0.000000E+00
0.000000E+00
@@ -304,10 +304,10 @@ tally 4:
0.000000E+00
0.000000E+00
0.000000E+00
-8.764240E+00
-3.855378E+00
-7.176540E+00
-2.591613E+00
+8.810357E+00
+3.898704E+00
+7.233068E+00
+2.630659E+00
0.000000E+00
0.000000E+00
0.000000E+00
@@ -352,10 +352,10 @@ tally 4:
0.000000E+00
0.000000E+00
0.000000E+00
-9.381092E+00
-4.414024E+00
-8.597689E+00
-3.710217E+00
+9.374583E+00
+4.414420E+00
+8.565683E+00
+3.687428E+00
0.000000E+00
0.000000E+00
0.000000E+00
@@ -400,10 +400,10 @@ tally 4:
0.000000E+00
0.000000E+00
0.000000E+00
-9.158655E+00
-4.215178E+00
-9.188880E+00
-4.244766E+00
+9.001252E+00
+4.073267E+00
+8.974821E+00
+4.050120E+00
0.000000E+00
0.000000E+00
0.000000E+00
@@ -448,10 +448,10 @@ tally 4:
0.000000E+00
0.000000E+00
0.000000E+00
-8.362511E+00
-3.509173E+00
-9.159213E+00
-4.209143E+00
+8.236452E+00
+3.401934E+00
+9.042286E+00
+4.102906E+00
0.000000E+00
0.000000E+00
0.000000E+00
@@ -496,10 +496,10 @@ tally 4:
0.000000E+00
0.000000E+00
0.000000E+00
-7.029505E+00
-2.479106E+00
-8.613258E+00
-3.719199E+00
+7.028546E+00
+2.482380E+00
+8.577643E+00
+3.691947E+00
0.000000E+00
0.000000E+00
0.000000E+00
@@ -544,10 +544,10 @@ tally 4:
0.000000E+00
0.000000E+00
0.000000E+00
-5.119892E+00
-1.320586E+00
-7.401001E+00
-2.749355E+00
+5.159585E+00
+1.342512E+00
+7.389236E+00
+2.745028E+00
0.000000E+00
0.000000E+00
0.000000E+00
@@ -592,10 +592,10 @@ tally 4:
0.000000E+00
0.000000E+00
0.000000E+00
-2.765680E+00
-3.903229E-01
-5.461998E+00
-1.501206E+00
+2.762685E+00
+3.914181E-01
+5.471849E+00
+1.509910E+00
0.000000E+00
0.000000E+00
0.000000E+00
@@ -642,8 +642,8 @@ tally 4:
0.000000E+00
0.000000E+00
0.000000E+00
-3.044921E+00
-4.656739E-01
+3.038522E+00
+4.643520E-01
0.000000E+00
0.000000E+00
0.000000E+00
@@ -662,114 +662,114 @@ k cmfd
0.000000E+00
0.000000E+00
0.000000E+00
-1.177990E+00
-1.160010E+00
-1.155990E+00
-1.160167E+00
-1.162166E+00
-1.161566E+00
-1.164454E+00
-1.166269E+00
-1.168529E+00
-1.168622E+00
-1.170296E+00
-1.168644E+00
-1.172975E+00
-1.176543E+00
-1.173389E+00
-1.178422E+00
+1.180802E+00
+1.162698E+00
+1.162794E+00
+1.159752E+00
+1.152596E+00
+1.151652E+00
+1.148131E+00
+1.151875E+00
+1.151434E+00
+1.158833E+00
+1.160751E+00
+1.155305E+00
+1.155356E+00
+1.158866E+00
+1.161574E+00
+1.154691E+00
cmfd entropy
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
-3.214145E+00
-3.225292E+00
-3.229509E+00
-3.228530E+00
-3.224203E+00
-3.225547E+00
-3.224720E+00
-3.224546E+00
-3.224527E+00
-3.223579E+00
-3.224380E+00
-3.223483E+00
-3.222819E+00
-3.223067E+00
-3.224007E+00
-3.220616E+00
+3.214195E+00
+3.225164E+00
+3.227316E+00
+3.225663E+00
+3.226390E+00
+3.225832E+00
+3.226707E+00
+3.227866E+00
+3.229948E+00
+3.229269E+00
+3.230044E+00
+3.231568E+00
+3.234694E+00
+3.234771E+00
+3.234915E+00
+3.235876E+00
cmfd balance
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
-4.801684E-03
-2.802571E-03
-1.828029E-03
-2.220542E-03
-1.709900E-03
-2.008246E-03
-2.578373E-03
-2.000076E-03
-1.645365E-03
-1.462882E-03
-1.208273E-03
-1.146126E-03
-1.214196E-03
-1.082376E-03
-8.967163E-04
-1.154433E-03
+4.742525E-03
+2.646417E-03
+1.981783E-03
+1.856593E-03
+1.797685E-03
+2.122587E-03
+1.200823E-03
+2.177249E-03
+1.442840E-03
+1.477754E-03
+1.236325E-03
+1.048988E-03
+8.395164E-04
+7.380254E-04
+7.742837E-04
+8.235911E-04
cmfd dominance ratio
0.000E+00
0.000E+00
0.000E+00
0.000E+00
- 5.472E-01
- 5.521E-01
- 5.445E-01
- 5.527E-01
+ 5.467E-01
+ 5.518E-01
+ 5.535E-01
+ 5.500E-01
+ 5.481E-01
+ 5.478E-01
+ 5.467E-01
+ 5.465E-01
+ 5.493E-01
5.488E-01
- 5.078E-01
- 5.474E-01
- 5.475E-01
- 5.473E-01
- 5.469E-01
- 5.461E-01
- 5.455E-01
- 5.454E-01
- 5.459E-01
- 5.460E-01
- 5.432E-01
+ 5.491E-01
+ 5.503E-01
+ 5.529E-01
+ 5.531E-01
+ 5.534E-01
+ 5.552E-01
cmfd openmc source comparison
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
-9.186654E-03
-6.033650E-03
-3.920380E-03
-4.218939E-03
-4.591972E-03
-4.042772E-03
-4.100500E-03
-3.664495E-03
-3.266803E-03
-3.164213E-03
-3.310474E-03
-3.165822E-03
-3.849586E-03
-2.718170E-03
-2.431480E-03
-3.322902E-03
+9.168094E-03
+5.978693E-03
+4.369223E-03
+4.546309E-03
+4.222522E-03
+4.221686E-03
+4.604208E-03
+3.950286E-03
+2.939283E-03
+3.667020E-03
+2.592899E-03
+2.272158E-03
+1.229170E-03
+1.114150E-03
+1.060490E-03
+1.714222E-03
cmfd source
-4.296288E-02
-7.964357E-02
-1.107722E-01
-1.359821E-01
-1.425321E-01
-1.356719E-01
-1.285829E-01
-1.040603E-01
-7.630230E-02
-4.348975E-02
+4.724285E-02
+8.305825E-02
+1.081058E-01
+1.314542E-01
+1.357299E-01
+1.359417E-01
+1.240918E-01
+1.087580E-01
+8.111239E-02
+4.450518E-02
diff --git a/tests/test_cmfd_nofeed/results_true.dat b/tests/test_cmfd_nofeed/results_true.dat
index e70287bf77..308dd7d827 100644
--- a/tests/test_cmfd_nofeed/results_true.dat
+++ b/tests/test_cmfd_nofeed/results_true.dat
@@ -83,44 +83,44 @@ tally 2:
2.336090E+00
2.851840E-01
tally 3:
-1.523800E+01
-1.170551E+01
+1.524100E+01
+1.171023E+01
1.071050E+00
5.839198E-02
-2.862100E+01
-4.111143E+01
+2.862800E+01
+4.113148E+01
1.892774E+00
1.812712E-01
-3.804200E+01
-7.314552E+01
+3.804600E+01
+7.316097E+01
2.423654E+00
2.968521E-01
-4.433500E+01
-9.878201E+01
+4.434600E+01
+9.882906E+01
2.823929E+00
4.033633E-01
-4.954300E+01
-1.229796E+02
+4.955300E+01
+1.230293E+02
3.226029E+00
5.265680E-01
-4.999000E+01
-1.256279E+02
+4.999400E+01
+1.256474E+02
3.232464E+00
5.286388E-01
-4.723500E+01
-1.120638E+02
+4.724300E+01
+1.121029E+02
3.015553E+00
4.606928E-01
-4.050800E+01
-8.237529E+01
+4.051300E+01
+8.239672E+01
2.592073E+00
3.412174E-01
-2.911800E+01
-4.263022E+01
+2.912700E+01
+4.265700E+01
1.875109E+00
1.785438E-01
-1.592800E+01
-1.279461E+01
+1.593500E+01
+1.280638E+01
1.038638E+00
5.538157E-02
tally 4:
@@ -662,114 +662,114 @@ k cmfd
0.000000E+00
0.000000E+00
0.000000E+00
-1.177990E+00
-1.160491E+00
-1.145875E+00
-1.148719E+00
-1.140676E+00
-1.141509E+00
-1.143597E+00
-1.141954E+00
-1.150311E+00
-1.155088E+00
-1.155464E+00
-1.152786E+00
-1.156950E+00
-1.159040E+00
-1.160571E+00
-1.161251E+00
+1.180802E+00
+1.163440E+00
+1.148572E+00
+1.151423E+00
+1.143374E+00
+1.144091E+00
+1.146212E+00
+1.144900E+00
+1.153511E+00
+1.158766E+00
+1.159179E+00
+1.156627E+00
+1.160647E+00
+1.162860E+00
+1.164312E+00
+1.164928E+00
cmfd entropy
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
-3.214145E+00
-3.222082E+00
-3.225870E+00
-3.230292E+00
-3.228784E+00
-3.228863E+00
-3.228331E+00
-3.230222E+00
-3.231212E+00
-3.230979E+00
-3.229831E+00
-3.229258E+00
-3.228559E+00
-3.227915E+00
-3.227427E+00
-3.229561E+00
+3.214195E+00
+3.222259E+00
+3.225989E+00
+3.230436E+00
+3.228875E+00
+3.229003E+00
+3.228502E+00
+3.230397E+00
+3.231417E+00
+3.231192E+00
+3.229995E+00
+3.229396E+00
+3.228730E+00
+3.228091E+00
+3.227600E+00
+3.229723E+00
cmfd balance
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
-4.801684E-03
-3.228380E-03
-2.568997E-03
-2.195796E-03
-2.248884E-03
-3.405416E-03
-2.332198E-03
-2.576061E-03
-2.326651E-03
-2.324425E-03
-2.205364E-03
-2.112702E-03
-1.864656E-03
-1.804877E-03
-1.557106E-03
-1.312058E-03
+4.742525E-03
+3.110598E-03
+2.490108E-03
+2.114137E-03
+2.190200E-03
+3.281877E-03
+2.219193E-03
+2.458372E-03
+2.200863E-03
+2.181858E-03
+2.064212E-03
+1.961178E-03
+1.713250E-03
+1.665361E-03
+1.436016E-03
+1.193462E-03
cmfd dominance ratio
0.000E+00
0.000E+00
0.000E+00
0.000E+00
- 5.472E-01
- 5.510E-01
- 5.519E-01
- 5.535E-01
- 5.535E-01
+ 5.467E-01
5.505E-01
- 5.488E-01
- 5.505E-01
- 5.510E-01
- 5.513E-01
- 5.510E-01
+ 5.514E-01
+ 5.531E-01
+ 5.529E-01
+ 5.501E-01
+ 5.484E-01
+ 5.500E-01
+ 5.506E-01
5.508E-01
- 5.487E-01
- 5.489E-01
- 5.481E-01
- 5.499E-01
+ 5.504E-01
+ 5.500E-01
+ 5.480E-01
+ 5.482E-01
+ 5.475E-01
+ 5.493E-01
cmfd openmc source comparison
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
-9.186654E-03
-5.964812E-03
-4.465905E-03
-4.119425E-03
-4.973577E-03
-4.092492E-03
-4.063342E-03
-2.804589E-03
-3.632667E-03
-5.005042E-03
-3.428575E-03
-3.007070E-03
-3.091465E-03
-3.030625E-03
-2.751739E-03
-1.762364E-03
+9.168094E-03
+5.976241E-03
+4.426550E-03
+4.107499E-03
+4.957716E-03
+4.026213E-03
+3.986000E-03
+2.702714E-03
+3.619345E-03
+4.909616E-03
+3.355042E-03
+2.945724E-03
+3.010811E-03
+2.965662E-03
+2.673073E-03
+1.669634E-03
cmfd source
-4.538792E-02
-8.103354E-02
-1.045198E-01
-1.221411E-01
-1.398214E-01
-1.401011E-01
-1.305055E-01
-1.120110E-01
-8.032924E-02
-4.414939E-02
+4.539734E-02
+8.104913E-02
+1.045143E-01
+1.221516E-01
+1.398002E-01
+1.400323E-01
+1.304628E-01
+1.120006E-01
+8.038230E-02
+4.420934E-02
diff --git a/tests/test_many_scores/results_true.dat b/tests/test_many_scores/results_true.dat
index ab1c43254f..bb151ae0e8 100644
--- a/tests/test_many_scores/results_true.dat
+++ b/tests/test_many_scores/results_true.dat
@@ -7,16 +7,8 @@ tally 1:
3.427342E+01
8.628000E+00
2.481430E+01
-8.628000E+00
-2.481430E+01
-5.102293E-01
-8.710841E-02
-8.628000E+00
-2.481430E+01
-9.329009E-01
-2.902534E-01
-5.102293E-01
-8.710841E-02
+8.632000E+00
+2.483728E+01
5.102293E-01
8.710841E-02
8.628000E+00
@@ -25,6 +17,14 @@ tally 1:
2.902534E-01
5.102293E-01
8.710841E-02
+5.087118E-01
+8.657086E-02
+8.632000E+00
+2.483728E+01
+9.328366E-01
+2.902108E-01
+5.087118E-01
+8.657086E-02
9.212024E+00
2.829472E+01
8.628000E+00
@@ -89,23 +89,23 @@ tally 1:
1.459209E-04
4.629047E-02
7.823267E-04
-8.628000E+00
-2.481430E+01
--4.712248E-02
-1.140942E-03
--6.431930E-02
-4.290580E-03
--9.251642E-02
-8.134201E-03
-1.020119E-04
-1.154184E-04
--2.994164E-02
-3.079076E-04
-2.128844E-02
-2.046549E-04
-1.637972E-02
-1.459209E-04
-4.629047E-02
-7.823267E-04
+8.632000E+00
+2.483728E+01
+-4.651997E-02
+1.133839E-03
+-6.416955E-02
+4.279418E-03
+-9.280565E-02
+8.095106E-03
+-2.078094E-04
+1.151292E-04
+-3.005568E-02
+3.104764E-04
+2.199519E-02
+2.179172E-04
+1.660645E-02
+1.451345E-04
+4.607553E-02
+7.673412E-04
1.014000E+01
3.427342E+01
diff --git a/tests/test_score_nuscatter/results_true.dat b/tests/test_score_nuscatter/results_true.dat
index df695d8a87..66e0c0a031 100644
--- a/tests/test_score_nuscatter/results_true.dat
+++ b/tests/test_score_nuscatter/results_true.dat
@@ -1,11 +1,11 @@
k-combined:
-1.005983E+00 2.248579E-02
+9.870214E-01 2.095925E-02
tally 1:
0.000000E+00
0.000000E+00
-1.169000E+01
-2.915330E+01
-3.200000E+00
-2.342600E+00
-4.064000E+01
-3.595168E+02
+3.353000E+01
+1.133379E+02
+8.150000E+00
+6.793700E+00
+1.098500E+02
+1.221333E+03
diff --git a/tests/test_score_nuscatter/settings.xml b/tests/test_score_nuscatter/settings.xml
index 517637a59f..ce632aae31 100644
--- a/tests/test_score_nuscatter/settings.xml
+++ b/tests/test_score_nuscatter/settings.xml
@@ -3,7 +3,7 @@
10
- 5
+ 0
100
diff --git a/tests/test_score_nuscatter_n/results_true.dat b/tests/test_score_nuscatter_n/results_true.dat
index b46a1e184d..5dbc7f8abf 100644
--- a/tests/test_score_nuscatter_n/results_true.dat
+++ b/tests/test_score_nuscatter_n/results_true.dat
@@ -1,33 +1,33 @@
k-combined:
-1.005983E+00 2.248579E-02
+9.870214E-01 2.095925E-02
tally 1:
-1.169000E+01
-2.915330E+01
-1.247253E+00
-3.767436E-01
-5.330812E-01
-1.385083E-01
-2.987823E-01
-5.699361E-02
-2.645512E-01
-2.905381E-02
-3.200000E+00
-2.342600E+00
-3.809941E-01
-2.965326E-02
-4.319242E-01
-3.738822E-02
-9.261909E-02
-6.711328E-03
--6.052442E-02
-7.087230E-03
-4.064000E+01
-3.595168E+02
-2.096700E+01
-9.516606E+01
-7.560566E+00
-1.248694E+01
-2.093348E-01
-4.278510E-02
--1.449929E+00
-4.356371E-01
+3.353000E+01
+1.133379E+02
+3.491100E+00
+1.265776E+00
+1.948509E+00
+4.761101E-01
+9.177045E-01
+1.251750E-01
+5.654249E-01
+5.567043E-02
+8.150000E+00
+6.793700E+00
+1.223263E+00
+1.678053E-01
+7.833173E-01
+8.407682E-02
+1.350170E-01
+7.393546E-03
+2.164837E-01
+1.367122E-02
+1.098500E+02
+1.221333E+03
+5.598624E+01
+3.183267E+02
+2.048716E+01
+4.301097E+01
+1.399456E+00
+4.458904E-01
+-2.183180E+00
+6.628474E-01
diff --git a/tests/test_score_nuscatter_n/settings.xml b/tests/test_score_nuscatter_n/settings.xml
index 517637a59f..ce632aae31 100644
--- a/tests/test_score_nuscatter_n/settings.xml
+++ b/tests/test_score_nuscatter_n/settings.xml
@@ -3,7 +3,7 @@
10
- 5
+ 0
100
diff --git a/tests/test_score_nuscatter_pn/results_true.dat b/tests/test_score_nuscatter_pn/results_true.dat
index 3c34895d90..41bc17f8b8 100644
--- a/tests/test_score_nuscatter_pn/results_true.dat
+++ b/tests/test_score_nuscatter_pn/results_true.dat
@@ -1,24 +1,24 @@
k-combined:
-1.005983E+00 2.248579E-02
+9.870214E-01 2.095925E-02
tally 1:
-1.169000E+01
-2.915330E+01
-1.247253E+00
-3.767436E-01
-5.330812E-01
-1.385083E-01
-2.987823E-01
-5.699361E-02
-2.645512E-01
-2.905381E-02
+3.353000E+01
+1.133379E+02
+3.491100E+00
+1.265776E+00
+1.948509E+00
+4.761101E-01
+9.177045E-01
+1.251750E-01
+5.654249E-01
+5.567043E-02
tally 2:
-1.169000E+01
-2.915330E+01
-1.247253E+00
-3.767436E-01
-5.330812E-01
-1.385083E-01
-2.987823E-01
-5.699361E-02
-2.645512E-01
-2.905381E-02
+3.353000E+01
+1.133379E+02
+3.491100E+00
+1.265776E+00
+1.948509E+00
+4.761101E-01
+9.177045E-01
+1.251750E-01
+5.654249E-01
+5.567043E-02
diff --git a/tests/test_score_nuscatter_pn/settings.xml b/tests/test_score_nuscatter_pn/settings.xml
index 517637a59f..ce632aae31 100644
--- a/tests/test_score_nuscatter_pn/settings.xml
+++ b/tests/test_score_nuscatter_pn/settings.xml
@@ -3,7 +3,7 @@
10
- 5
+ 0
100
diff --git a/tests/test_score_nuscatter_yn/results_true.dat b/tests/test_score_nuscatter_yn/results_true.dat
index 1e8e143ef4..cdf051ee75 100644
--- a/tests/test_score_nuscatter_yn/results_true.dat
+++ b/tests/test_score_nuscatter_yn/results_true.dat
@@ -1,38 +1,38 @@
k-combined:
-1.005983E+00 2.248579E-02
+9.870214E-01 2.095925E-02
tally 1:
-1.169000E+01
-2.915330E+01
+3.353000E+01
+1.133379E+02
tally 2:
-1.169000E+01
-2.915330E+01
--2.198379E-01
-2.828670E-02
--1.317276E-01
-9.568596E-03
-8.309792E-02
-1.155410E-02
--2.288506E-02
-3.710542E-03
--2.720674E-02
-1.789163E-03
--1.323964E-02
-1.819112E-04
-8.941597E-02
-4.265616E-03
-1.516805E-01
-1.332526E-02
--1.832782E-02
-6.611171E-03
-1.311371E-02
-2.840648E-03
-3.728365E-02
-2.866806E-03
--5.100587E-02
-2.957146E-03
-3.388028E-02
-2.481570E-03
--7.766921E-02
-3.129377E-03
-1.666131E-02
-3.828290E-03
+3.353000E+01
+1.133379E+02
+4.293226E-01
+6.259462E-02
+-2.011041E-02
+5.388144E-02
+3.900136E-01
+5.873137E-02
+6.150213E-02
+9.043796E-03
+5.518583E-02
+1.739087E-02
+-2.047987E-01
+1.993679E-02
+6.710345E-02
+1.652573E-02
+-3.619254E-02
+1.598186E-02
+3.551558E-02
+9.077346E-03
+1.044669E-01
+2.082961E-03
+-3.782063E-02
+1.681459E-02
+1.752386E-01
+1.411429E-02
+-3.289649E-02
+9.534958E-03
+5.252770E-02
+7.518445E-03
+2.688056E-02
+3.397824E-03
diff --git a/tests/test_score_nuscatter_yn/settings.xml b/tests/test_score_nuscatter_yn/settings.xml
index 517637a59f..ce632aae31 100644
--- a/tests/test_score_nuscatter_yn/settings.xml
+++ b/tests/test_score_nuscatter_yn/settings.xml
@@ -3,7 +3,7 @@
10
- 5
+ 0
100