Add axial subdivision of fuel pins

This commit is contained in:
Paul Romano 2017-11-02 23:27:48 -05:00
parent 6762ab0237
commit 186c525c8a
7 changed files with 6888 additions and 770 deletions

File diff suppressed because it is too large Load diff

View file

@ -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>

View file

@ -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>

View file

@ -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>

View file

@ -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%)',

View file

@ -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)

View file

@ -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)