forked from crp/ecp-benchmarks
Add axial subdivision of fuel pins
This commit is contained in:
parent
6762ab0237
commit
186c525c8a
7 changed files with 6888 additions and 770 deletions
File diff suppressed because it is too large
Load diff
|
|
@ -76,4 +76,17 @@
|
|||
<color id="11" rgb="255 215 0" />
|
||||
<color id="12" rgb="0 0 128" />
|
||||
</plot>
|
||||
<!--assembly no spacer cell-->
|
||||
<plot basis="xy" color_by="cell" filename="assm_no_spacer_cell" id="5" type="slice">
|
||||
<origin>0.0 0.0 90.0</origin>
|
||||
<width>32.25546 32.25546</width>
|
||||
<pixels>2000 2000</pixels>
|
||||
<background>255 255 255</background>
|
||||
</plot>
|
||||
<!--z slice-->
|
||||
<plot basis="xz" color_by="cell" filename="assm_xz" id="6" type="slice">
|
||||
<origin>0.0 0.0 141.61599999999999</origin>
|
||||
<width>32.25546 283.23199999999997</width>
|
||||
<pixels>455 4000</pixels>
|
||||
</plot>
|
||||
</plots>
|
||||
|
|
|
|||
|
|
@ -1,9 +1,9 @@
|
|||
<?xml version='1.0' encoding='utf-8'?>
|
||||
<settings>
|
||||
<run_mode>eigenvalue</run_mode>
|
||||
<particles>10000</particles>
|
||||
<batches>200</batches>
|
||||
<inactive>100</inactive>
|
||||
<particles>1000</particles>
|
||||
<batches>20</batches>
|
||||
<inactive>10</inactive>
|
||||
<source strength="1.0">
|
||||
<space type="fission">
|
||||
<parameters>-75.26274 -75.26274 36.007 75.26274 75.26274 236.0066</parameters>
|
||||
|
|
|
|||
|
|
@ -1,31 +1,31 @@
|
|||
<?xml version='1.0' encoding='utf-8'?>
|
||||
<tallies>
|
||||
<filter id="1" type="distribcell">
|
||||
<bins>684</bins>
|
||||
<bins>2634</bins>
|
||||
</filter>
|
||||
<filter id="2" type="distribcell">
|
||||
<bins>688</bins>
|
||||
<bins>2638</bins>
|
||||
</filter>
|
||||
<filter id="3" type="distribcell">
|
||||
<bins>693</bins>
|
||||
<bins>2643</bins>
|
||||
</filter>
|
||||
<filter id="4" type="distribcell">
|
||||
<bins>719</bins>
|
||||
<bins>4619</bins>
|
||||
</filter>
|
||||
<filter id="5" type="distribcell">
|
||||
<bins>723</bins>
|
||||
<bins>4623</bins>
|
||||
</filter>
|
||||
<filter id="6" type="distribcell">
|
||||
<bins>728</bins>
|
||||
<bins>4628</bins>
|
||||
</filter>
|
||||
<filter id="7" type="distribcell">
|
||||
<bins>754</bins>
|
||||
<bins>6604</bins>
|
||||
</filter>
|
||||
<filter id="8" type="distribcell">
|
||||
<bins>758</bins>
|
||||
<bins>6608</bins>
|
||||
</filter>
|
||||
<filter id="9" type="distribcell">
|
||||
<bins>763</bins>
|
||||
<bins>6613</bins>
|
||||
</filter>
|
||||
<tally id="1" name="depletion tally">
|
||||
<filters>1</filters>
|
||||
|
|
|
|||
|
|
@ -1,9 +1,31 @@
|
|||
"""Instantiate pin cell Cells and Universes for core model."""
|
||||
|
||||
import numpy as np
|
||||
import openmc
|
||||
|
||||
from .materials import mats
|
||||
from .surfaces import surfs, n_rings
|
||||
from .surfaces import surfs, n_rings, bottom_fuel_rod, top_active_core
|
||||
|
||||
|
||||
def subdivide(surfaces):
|
||||
"""Create regions separate by a series of surfaces.
|
||||
|
||||
Parameters
|
||||
----------
|
||||
surfaces : iterable of openmc.Surface
|
||||
Surfaces separating regions
|
||||
|
||||
Returns
|
||||
-------
|
||||
list of openmc.Region
|
||||
Regions formed by the given surfaces
|
||||
|
||||
"""
|
||||
regions = [-surfaces[0]]
|
||||
for s0, s1 in zip(surfaces[:-1], surfaces[1:]):
|
||||
regions.append(+s0 & -s1)
|
||||
regions.append(+surfaces[-1])
|
||||
return regions
|
||||
|
||||
|
||||
def make_pin(name, surfaces, materials, grid=None):
|
||||
|
|
@ -579,30 +601,6 @@ stack_surfs_BA = [
|
|||
surfs['bot upper nozzle'],
|
||||
surfs['top upper nozzle']]
|
||||
|
||||
stack_surfs = [
|
||||
surfs['bot support plate'],
|
||||
surfs['top support plate'],
|
||||
surfs['top lower nozzle'],
|
||||
surfs['top lower thimble'],
|
||||
surfs['grid1bot'],
|
||||
surfs['grid1top'],
|
||||
surfs['dashpot top'],
|
||||
surfs['grid2bot'],
|
||||
surfs['grid2top'],
|
||||
surfs['grid3bot'],
|
||||
surfs['grid3top'],
|
||||
surfs['grid4bot'],
|
||||
surfs['grid4top'],
|
||||
surfs['top active core'],
|
||||
surfs['grid5bot'],
|
||||
surfs['grid5top'],
|
||||
surfs['top pin plenum'],
|
||||
surfs['top FR'],
|
||||
surfs['bot upper nozzle'],
|
||||
surfs['top upper nozzle']
|
||||
]
|
||||
|
||||
|
||||
# Stack all axial pieces of control rod tubes together for each bank
|
||||
|
||||
univs['BA stack'] = make_stack(
|
||||
|
|
@ -669,10 +667,26 @@ univs['pin plenum grid (intermediate)'] = make_pin(
|
|||
|
||||
#### 1.6% ENRICHED FUEL PIN CELL
|
||||
|
||||
# Determine z position between each fuel pellet, omitting the surfaces
|
||||
# corresponding to the very bottom and top of the active fuel length
|
||||
axial_splits = np.linspace(bottom_fuel_rod, top_active_core, 196)[1:-1]
|
||||
axial_surfs = [openmc.ZPlane(z0=z) for z in axial_splits]
|
||||
|
||||
# Get z-cylinder surfaces for each ring
|
||||
rings = [surfs['fuel ring {}'.format(i)] for i in range(1, n_rings)]
|
||||
fuel_surfaces = rings + [surfs['pellet OR'], surfs['clad IR'],
|
||||
surfs['clad OR']]
|
||||
fuel_mats = [mats['UO2 1.6']]*10 + [mats['He'], mats['Zr'], mats['H2O']]
|
||||
|
||||
# Create universe for UO2 alone with axial/radial subdivision
|
||||
uo2_cells = []
|
||||
for axial_region in subdivide(axial_surfs):
|
||||
for ring_region in subdivide(rings):
|
||||
uo2_cells.append(openmc.Cell(
|
||||
fill=mats['UO2 1.6'],
|
||||
region=axial_region & ring_region
|
||||
))
|
||||
univs['Subdivided Fuel (1.6%)'] = openmc.Universe(cells=uo2_cells)
|
||||
|
||||
fuel_surfaces = [surfs['pellet OR'], surfs['clad IR'], surfs['clad OR']]
|
||||
fuel_mats = [univs['Subdivided Fuel (1.6%)'], mats['He'], mats['Zr'], mats['H2O']]
|
||||
|
||||
univs['Fuel (1.6%)'] = make_pin(
|
||||
'Fuel (1.6%)',
|
||||
|
|
@ -721,7 +735,17 @@ univs['Fuel (1.6%) stack'] = make_stack(
|
|||
|
||||
#### 2.4% ENRICHED FUEL PIN CELL
|
||||
|
||||
fuel_mats = [mats['UO2 2.4']]*10 + [mats['He'], mats['Zr'], mats['H2O']]
|
||||
# Create universe for UO2 alone with axial/radial subdivision
|
||||
uo2_cells = []
|
||||
for axial_region in subdivide(axial_surfs):
|
||||
for ring_region in subdivide(rings):
|
||||
uo2_cells.append(openmc.Cell(
|
||||
fill=mats['UO2 2.4'],
|
||||
region=axial_region & ring_region
|
||||
))
|
||||
univs['Subdivided Fuel (2.4%)'] = openmc.Universe(cells=uo2_cells)
|
||||
|
||||
fuel_mats = [univs['Subdivided Fuel (2.4%)'], mats['He'], mats['Zr'], mats['H2O']]
|
||||
|
||||
univs['Fuel (2.4%)'] = make_pin(
|
||||
'Fuel (2.4%)',
|
||||
|
|
@ -770,7 +794,17 @@ univs['Fuel (2.4%) stack'] = make_stack(
|
|||
|
||||
#### 3.1% ENRICHED FUEL PIN CELL
|
||||
|
||||
fuel_mats = [mats['UO2 3.1']]*10 + [mats['He'], mats['Zr'], mats['H2O']]
|
||||
# Create universe for UO2 alone with axial/radial subdivision
|
||||
uo2_cells = []
|
||||
for axial_region in subdivide(axial_surfs):
|
||||
for ring_region in subdivide(rings):
|
||||
uo2_cells.append(openmc.Cell(
|
||||
fill=mats['UO2 3.1'],
|
||||
region=axial_region & ring_region
|
||||
))
|
||||
univs['Subdivided Fuel (3.1%)'] = openmc.Universe(cells=uo2_cells)
|
||||
|
||||
fuel_mats = [univs['Subdivided Fuel (3.1%)'], mats['He'], mats['Zr'], mats['H2O']]
|
||||
|
||||
univs['Fuel (3.1%)'] = make_pin(
|
||||
'Fuel (3.1%)',
|
||||
|
|
|
|||
|
|
@ -33,7 +33,7 @@ plot.filename = 'radial_xy_slice'
|
|||
plot.colors = colors
|
||||
plot.background = [255, 255, 255]
|
||||
plot.pixels = [1000, 1000]
|
||||
plots += [plot]
|
||||
plots.append(plot)
|
||||
|
||||
plot = openmc.Plot(name='axial slice')
|
||||
plot.basis = 'xz'
|
||||
|
|
@ -44,7 +44,7 @@ plot.filename = 'axial_xz_slice'
|
|||
plot.colors = colors
|
||||
plot.background = [255, 255, 255]
|
||||
plot.pixels = [1000, 1000]
|
||||
plots += [plot]
|
||||
plots.append(plot)
|
||||
|
||||
plot = openmc.Plot(name='assembly grid spacer')
|
||||
plot.basis = 'xy'
|
||||
|
|
@ -55,7 +55,7 @@ plot.filename = 'assm_grid_spacer'
|
|||
plot.colors = colors
|
||||
plot.background = [255, 255, 255]
|
||||
plot.pixels = [2000, 2000]
|
||||
plots += [plot]
|
||||
plots.append(plot)
|
||||
|
||||
plot = openmc.Plot(name='assembly no spacer')
|
||||
plot.basis = 'xy'
|
||||
|
|
@ -66,4 +66,23 @@ plot.filename = 'assm_no_spacer'
|
|||
plot.colors = colors
|
||||
plot.background = [255, 255, 255]
|
||||
plot.pixels = [2000, 2000]
|
||||
plots += [plot]
|
||||
plots.append(plot)
|
||||
|
||||
plot = openmc.Plot(name='assembly no spacer cell')
|
||||
plot.basis = 'xy'
|
||||
plot.color_by = 'cell'
|
||||
plot.origin = [0., 0., 90.]
|
||||
plot.width = [lattice_pitch*1.5, lattice_pitch*1.5]
|
||||
plot.filename = 'assm_no_spacer_cell'
|
||||
plot.background = [255, 255, 255]
|
||||
plot.pixels = [2000, 2000]
|
||||
plots.append(plot)
|
||||
|
||||
plot = openmc.Plot(name='z slice')
|
||||
plot.basis = 'xz'
|
||||
plot.color_by = 'cell'
|
||||
plot.filename = 'assm_xz'
|
||||
plot.origin = (0., 0., lowest_extent + (highest_extent - lowest_extent)/2)
|
||||
plot.width = (lattice_pitch*1.5, highest_extent - lowest_extent)
|
||||
plot.pixels = (int(plot.width[0]/plot.width[1]*4000), 4000)
|
||||
plots.append(plot)
|
||||
|
|
|
|||
|
|
@ -34,6 +34,7 @@ INCHES = 2.54
|
|||
|
||||
# fuel rod parameters
|
||||
pellet_OR = 0.3195*INCHES/2 # ML17013A274, Table 4.1-2
|
||||
pellet_length = 0.4*INCHES # ML17013A274, Table 4.1-2
|
||||
clad_IR = 0.326*INCHES/2 # ML17013A274, Table 4.1-2
|
||||
clad_OR = 0.374*INCHES/2 # ML17013A274, Table 4.1-2
|
||||
active_fuel_length = 78.74*INCHES # ML17013A274, Figure 4.2-10
|
||||
|
|
@ -128,10 +129,8 @@ surfs = {}
|
|||
|
||||
# Create radii for rings in fuel
|
||||
n_rings = 10
|
||||
ring_radii = []
|
||||
for i in range(1, n_rings):
|
||||
R = sqrt(i*pellet_OR**2/n_rings)
|
||||
ring_radii.append(R)
|
||||
name = 'fuel ring {}'.format(i)
|
||||
surfs[name] = openmc.ZCylinder(R=R, name=name)
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue