mirror of
https://github.com/openmc-dev/openmc.git
synced 2026-07-27 13:45:36 -04:00
Merge branch 'develop' into complex-cells
Conflicts: openmc/opencg_compatible.py openmc/surface.py
This commit is contained in:
commit
3ca7279bd8
24 changed files with 785 additions and 710 deletions
|
|
@ -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**,
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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):
|
||||
|
|
|
|||
|
|
@ -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()
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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):
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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):
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@
|
|||
|
||||
<eigenvalue>
|
||||
<batches>10</batches>
|
||||
<inactive>5</inactive>
|
||||
<inactive>0</inactive>
|
||||
<particles>100</particles>
|
||||
</eigenvalue>
|
||||
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@
|
|||
|
||||
<eigenvalue>
|
||||
<batches>10</batches>
|
||||
<inactive>5</inactive>
|
||||
<inactive>0</inactive>
|
||||
<particles>100</particles>
|
||||
</eigenvalue>
|
||||
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@
|
|||
|
||||
<eigenvalue>
|
||||
<batches>10</batches>
|
||||
<inactive>5</inactive>
|
||||
<inactive>0</inactive>
|
||||
<particles>100</particles>
|
||||
</eigenvalue>
|
||||
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@
|
|||
|
||||
<eigenvalue>
|
||||
<batches>10</batches>
|
||||
<inactive>5</inactive>
|
||||
<inactive>0</inactive>
|
||||
<particles>100</particles>
|
||||
</eigenvalue>
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue