Added initial pin cell building

This commit is contained in:
Will Boyd 2017-01-30 19:11:09 -05:00
parent 96052a90f9
commit 65b87a6191
7 changed files with 297 additions and 407 deletions

View file

@ -1,54 +0,0 @@
from materials import *
from surfaces import surfs
from grids import grids
import openmc
# FIXME: Put materials in a dictionary
cells = {}
cells['water pin'] = openmc.Cell(name='water pin 1')
cells['water pin'].fill = mat_h2o
cells['water pin'].region = -surfs['dummy outer']
water_univ = openmc.Universe(name='Empty water pin cell universe')
water_univ.add_cell(cells['water pin 1'])
def make_pin(name, section, cells, surfaces, materials, grid=None):
universe = openmc.Universe(name=name)
# Create cell for interior of innermost ZCylinder
cell_name = name + ' (0)'
cells[cell_name] = openmc.Cell(name=cell_name)
cells[cell_name].fill = materials[0]
cells[cell_name].region = -surfaces[0]
universe.add_cell(cells[cell_name])
# Create cells between two ZCylinders
for i, (mat, surf) in enumerate(zip(materials[1:-1], surfaces[:-1])):
cell_name = name + '({})'.format(i+1)
cells[cell_name] = openmc.Cell(name=cell_name)
cells[cell_name].material = mat
cells[cell_name].region = +surf & -surfaces[i+1]
universe.add_cell([cells[cell_name]])
# Create cell for exterior of outermost ZCylinder
cell_name = name + ' (last)'
cells[cell_name] = openmc.Cell(name=cell_name)
cells[cell_name].material = materials[-1]
cells[cell_name].region = +surfaces[-1]
universe.add_cell([cells[cell_name]])
# Add spacer grid cells if specified
if grid:
inner_grid_name = 'inner {}'.format(grid)
outer_grid_name = 'outer {}'.format(grid)
# FIXME: Does this work???
cells[name + ' (last)'].region += grids[inner_grid_name]
cells[name + ' (grid)'].region = grids[outer_grid_name]
universe.add_cell(cells[name + '(grid)'])

View file

@ -1,6 +1,7 @@
from surfaces import surfs
import openmc
# FIXME: Add docstring explanation
# FIXME: Put this in surface.py??
grids = {}

View file

@ -1,11 +1,82 @@
import re
import openmc
from openmc.data import atomic_weight, atomic_mass
# FIXME: Write docstrings
mats = {}
# Parameters
# Create He gas material for fuel pin gap
mats['He'] = openmc.Material(hame='Helium')
mats['He'].temperature = 300
mats['He'].set_density('g/cc', 0.0015981)
mats['He'].add_element('He', 1.0, 'ao')
# Create air material for instrument tubes
mats['Air'] = openmc.Material(name='Air')
mats['Air'].temperature = 300
mats['Air'].set_density('g/cc', 000616)
mats['Air'].add_element('O', 0.2095, 'ao')
mats['Air'].add_element('N', 0.7809, 'ao')
mats['Air'].add_element('Ar', 0.00933, 'ao')
mats['Air'].add_element('C', 0.00027, 'ao')
# Create inconel 718 material
mats['In'] = openmc.Material(name='Inconel')
mats['In'].temperature = 300
mats['In'].set_density('g/cc', 8.2)
mats['In'].add_lement('Si', 0.0035, 'wo')
mats['In'].add_element('Cr', 0.1896, 'wo')
mats['In'].add_element('Mn', 0.0087, 'wo')
mats['In'].add_element('Fe', 0.2863, 'wo')
mats['In'].add_element('Ni', 0.5119, 'wo')
# Create stainless steel material
mats['SS'] = openmc.Material(name='SS304')
mats['SS'].temperature = 300
mats['SS'].set_density('g/cc', 8.03)
mats['SS'].add_element('Si', 0.0060, 'wo')
mats['SS'].add_element('Cr', 0.1900, 'wo')
mats['SS'].add_element('Mn', 0.0200, 'wo')
mats['SS'].add_element('Fe', 0.6840, 'wo')
mats['SS'].add_element('Ni', 0.1000, 'wo')
# Create carbon steel material
mats['CS'] = openmc.Material(name='Carbon Steel')
mats['CS'].temperature = 300
mats['CS'].set_density('g/cc', 7.8)
mats['CS'].add_element('C', 0.00270, 'wo')
mats['CS'].add_element('Mn', 0.00750, 'wo')
mats['CS'].add_element('P', 0.00025, 'wo')
mats['CS'].add_element('S', 0.00025, 'wo')
mats['CS'].add_element('Si', 0.00400, 'wo')
mats['CS'].add_element('Ni', 0.00750, 'wo')
mats['CS'].add_element('Cr', 0.00350, 'wo')
mats['CS'].add_element('Mo', 0.00625, 'wo')
mats['CS'].add_element('V', 0.00050, 'wo')
mats['CS'].add_element('Nb', 0.00010, 'wo')
mats['CS'].add_element('Cu', 0.00200, 'wo')
mats['CS'].add_element('Ca', 0.00015, 'wo')
mats['CS'].add_element('B', 0.00003, 'wo')
mats['CS'].add_element('Ti', 0.00015, 'wo')
mats['CS'].add_element('Al', 0.00025, 'wo')
mats['CS'].add_element('Fe', 0.96487, 'wo')
# Create zircaloy 4 material
mats['Zr'] = openmc.Material(name='Zircaloy-4')
mats['Zr'].temperature = 300
mats['Zr'].set_density('g/cc', 6.55)
mats['Zr'].add_element('O', 0.00125, 'wo')
mats['Zr'].add_element('Cr', 0.0010, 'wo')
mats['Zr'].add_element('Fe', 0.0021, 'wo')
mats['Zr'].add_element('Zr', 0.98115, 'wo')
mats['Zr'].add_element('Sn', 0.0145, 'wo')
# Create Ag-In-Cd control rod material
mats['AIC'] = openmc.Material(name='aic_rod')
mats['AIC'].temperature = 300
mats['AIC'].set_density('g/cc', 10.16)
mats['AIC'].add_element('Ag', 0.80, 'wo')
mats['AIC'].add_element('In', 0.15, 'wo')
########## Borated Water #################
@ -39,87 +110,13 @@ ah_Bh2o = 2.0 * ah2o_Bh2o
aho_Bh2o = ah2o_Bh2o
# Create borated water for coolant / moderator
mat_h2o = openmc.Material(name='Borated Water')
mat_h2o.temperature = 300
mat_h2o.set_density('g/cc', rho_Bh2o)
mat_h2o.add_element('B', aB_Bh2o, 'ao')
mat_h2o.add_element('H', ah_Bh2o, 'ao')
mat_h2o.add_element('O', aho_Bh2o, 'ao')
mat_h2o.add_s_alpha_beta(name='lwtr', xs='15t')
# Create He gas material for fuel pin gap
mat_he = openmc.Material(hame='Helium')
mat_he.temperature = 300
mat_he.set_density('g/cc', 0.0015981)
mat_he.add_element('He', 1.0, 'ao')
# Create air material for instrument tubes
mat_air = openmc.Material(name='Air')
mat_air.temperature = 300
mat_air.set_density('g/cc', 000616)
mat_air.add_element('O', 0.2095, 'ao')
mat_air.add_element('N', 0.7809, 'ao')
mat_air.add_element('Ar', 0.00933, 'ao')
mat_air.add_element('C', 0.00027, 'ao')
# Create inconel 718 material
mat_in = openmc.Material(name='Inconel')
mat_in.temperature = 300
mat_in.set_density('g/cc', 8.2)
mat_in.add_lement('Si', 0.0035, 'wo')
mat_in.add_element('Cr', 0.1896, 'wo')
mat_in.add_element('Mn', 0.0087, 'wo')
mat_in.add_element('Fe', 0.2863, 'wo')
mat_in.add_element('Ni', 0.5119, 'wo')
# Create stainless steel material
mat_ss = openmc.Material(name='SS304')
mat_ss.temperature = 300
mat_ss.set_density('g/cc', 8.03)
mat_ss.add_element('Si', 0.0060, 'wo')
mat_ss.add_element('Cr', 0.1900, 'wo')
mat_ss.add_element('Mn', 0.0200, 'wo')
mat_ss.add_element('Fe', 0.6840, 'wo')
mat_ss.add_element('Ni', 0.1000, 'wo')
# Create carbon steel material
mat_cs = openmc.Material(name='Carbon Steel')
mat_cs.temperature = 300
mat_cs.set_density('g/cc', 7.8)
mat_cs.add_element('C', 0.00270, 'wo')
mat_cs.add_element('Mn', 0.00750, 'wo')
mat_cs.add_element('P', 0.00025, 'wo')
mat_cs.add_element('S', 0.00025, 'wo')
mat_cs.add_element('Si', 0.00400, 'wo')
mat_cs.add_element('Ni', 0.00750, 'wo')
mat_cs.add_element('Cr', 0.00350, 'wo')
mat_cs.add_element('Mo', 0.00625, 'wo')
mat_cs.add_element('V', 0.00050, 'wo')
mat_cs.add_element('Nb', 0.00010, 'wo')
mat_cs.add_element('Cu', 0.00200, 'wo')
mat_cs.add_element('Ca', 0.00015, 'wo')
mat_cs.add_element('B', 0.00003, 'wo')
mat_cs.add_element('Ti', 0.00015, 'wo')
mat_cs.add_element('Al', 0.00025, 'wo')
mat_cs.add_element('Fe', 0.96487, 'wo')
# Create zircaloy 4 material
mat_zr = openmc.Material(name='Zircaloy-4')
mat_zr.temperature = 300
mat_zr.set_density('g/cc', 6.55)
mat_zr.add_element('O', 0.00125, 'wo')
mat_zr.add_element('Cr', 0.0010, 'wo')
mat_zr.add_element('Fe', 0.0021, 'wo')
mat_zr.add_element('Zr', 0.98115, 'wo')
mat_zr.add_element('Sn', 0.0145, 'wo')
# Create Ag-In-Cd control rod material
mat_aic = openmc.Material(name='aic_rod')
mat_aic.temperature = 300
mat_aic.set_density('g/cc', 10.16)
mat_aic.add_element('Ag', 0.80, 'wo')
mat_aic.add_element('In', 0.15, 'wo')
mat_aic.add_element('Cd', 0.05, 'wo')
mats['H2O'] = openmc.Material(name='Borated Water')
mats['H2O'].temperature = 300
mats['H2O'].set_density('g/cc', rho_Bh2o)
mats['H2O'].add_element('B', aB_Bh2o, 'ao')
mats['H2O'].add_element('H', ah_Bh2o, 'ao')
mats['H2O'].add_element('O', aho_Bh2o, 'ao')
mats['H2O'].add_s_alpha_beta(name='lwtr', xs='15t')
########## Borosilicate Glass #################
@ -149,42 +146,41 @@ aB10_B = aB10_bsg / (aB10_bsg + aB11_bsg)
aB11_B = 1.0 - aB10_B
# Create borosilicate glass material
mat_bsg = openmc.Material(name='Borosilicate Glass')
mat_bsg.temperature = 300
mat_bsg.set_density('g/cc', 2.26)
mat_bsg.add_element('O', aO_bsg, 'ao')
mat_bsg.add_element('Si', aSi_bsg, 'ao')
mat_bsg.add_element('Al', aAl_bsg, 'ao')
mat_bsg.add_nuclide('B10', aB10_B, 'ao')
mat_bsg.add_nuclide('B11', aB11_B, 'ao')
mats['BSG'] = openmc.Material(name='Borosilicate Glass')
mats['BSG'].temperature = 300
mats['BSG'].set_density('g/cc', 2.26)
mats['BSG'].add_element('O', aO_bsg, 'ao')
mats['BSG'].add_element('Si', aSi_bsg, 'ao')
mats['BSG'].add_element('Al', aAl_bsg, 'ao')
mats['BSG'].add_nuclide('B10', aB10_B, 'ao')
mats['BSG'].add_nuclide('B11', aB11_B, 'ao')
########## Enriched UO2 Fuel #################
# Create 1.6% enriched UO2 fuel material
a_U234, a_U235, a_U238, a_U, a_O = get_fuel_aos(0.0161006)
mat_fuel16 = openmc.Material(name='1.6\% Enr. UO2 Fuel')
mat_fuel16.temperature = 300
mat_fuel16.set_density('g/cc', 10.31341)
mat_fuel16.add_element('O', a_O, 'ao')
mat_fuel16.add_element('U', a_U, 'ao', enrichment=0.0161006)
mats['UO2 1.6'] = openmc.Material(name='1.6\% Enr. UO2 Fuel')
mats['UO2 1.6'].temperature = 300
mats['UO2 1.6'].set_density('g/cc', 10.31341)
mats['UO2 1.6'].add_element('O', a_O, 'ao')
mats['UO2 1.6'].add_element('U', a_U, 'ao', enrichment=0.0161006)
# Create 2.4% enriched UO2 fuel material
a_U234, a_U235, a_U238, a_U, a_O = get_fuel_aos(0.0239993)
mat_fuel16 = openmc.Material(name='2.4\% Enr. UO2 Fuel')
mat_fuel16.temperature = 300
mat_fuel16.set_density('g/cc', 10.29748)
mat_fuel16.add_element('O', a_O, 'ao')
mat_fuel16.add_element('U', a_U, 'ao', enrichment=0.0239993)
mats['UO2 2.4'] = openmc.Material(name='2.4\% Enr. UO2 Fuel')
mats['UO2 2.4'].temperature = 300
mats['UO2 2.4'].set_density('g/cc', 10.29748)
mats['UO2 2.4'].add_element('O', a_O, 'ao')
mats['UO2 2.4'].add_element('U', a_U, 'ao', enrichment=0.0239993)
# Create 3.1% enriched UO2 fuel material
a_U234, a_U235, a_U238, a_U. a_O = get_fuel_aos(0.0310221)
mat_fuel16 = openmc.Material(name='3.1\% Enr. UO2 Fuel')
mat_fuel16.temperature = 300
mat_fuel16.set_density('g/cc', 10.30166)
mat_fuel16.add_element('O', a_O, 'ao')
mat_fuel16.add_element('U', a_U, 'ao', enrichment=0.0310221)
mats['UO2 3.1'] = openmc.Material(name='3.1\% Enr. UO2 Fuel')
mats['UO2 3.1'].temperature = 300
mats['UO2 3.1'].set_density('g/cc', 10.30166)
mats['UO2 3.1'].add_element('O', a_O, 'ao')
mats['UO2 3.1'].add_element('U', a_U, 'ao', enrichment=0.0310221)
def get_fuel_aos(enr_U235):

158
smr/pins.py Normal file
View file

@ -0,0 +1,158 @@
import openmc
from materials import mats
from surfaces import surfs
from grids import grids
# FIXME: Put materials in a dictionary
def make_pin(name, surfaces, materials, grid=None):
universe = openmc.Universe(name=name)
# Create cell for interior of innermost ZCylinder
cell_name = name + ' (0)'
cell = openmc.Cell(name=cell_name)
cell.fill = materials[0]
cell.region = -surfaces[0]
universe.add_cell(cell)
# Create cells between two ZCylinders
for i, (mat, surf) in enumerate(zip(materials[1:-1], surfaces[:-1])):
cell_name = name + '({})'.format(i+1)
cell = openmc.Cell(name=cell_name)
cell.material = mat
cell.region = +surf & -surfaces[i+1]
universe.add_cell(cell)
# Create cell for exterior of outermost ZCylinder
cell_name = name + ' (last)'
cell = openmc.Cell(name=cell_name)
cell.material = materials[-1]
cell.region = +surfaces[-1]
universe.add_cell(cell)
# Add spacer grid cells if specified
if grid:
inner_grid_name = 'inner {}'.format(grid)
outer_grid_name = 'outer {}'.format(grid)
# FIXME: Does this work???
cells[name + ' (last)'].region += grids[inner_grid_name]
cells[name + ' (grid)'].region = grids[outer_grid_name]
universe.add_cell(cells[name + '(grid)'])
return universe
cells = {}
cells['water pin'] = openmc.Cell(name='water pin 1')
cells['water pin'].fill = mats['H2O']
cells['water pin'].region = -surfs['dummy outer']
water_univ = openmc.Universe(name='Empty water pin cell universe')
water_univ.add_cell(cells['water pin 1'])
# FIXME: Is this a good idea???
univs = {}
# GUIDE TUBE PIN CELLS
univs['GT empty'] = make_pin(
'GT empty', [surfs['GT IR'], surfs['GT OR']],
[mats['H2O'], mats['Zr'], mats['H2O']])
univs['GT empty grid (top/bottom)'] = make_pin(
'GT empty grid (top/bottom)', [surfs['GT IR'], surfs['GT OR']],
[mats['H2O'], mats['Zr'], mats['H2O']], grid='(top/bottom)')
univs['GT empty grid (intermediate)'] = make_pin(
'GT empty grid (intermediate)', [surfs['GT IR'], surfs['GT OR']],
[mats['H2O'], mats['Zr'], mats['H2O']], grid='(intermediate)')
univs['GT empty nozzle'] = make_pin(
'GT empty nozzle', [surfs['GT IR'], surfs['GT OR']],
[mats['H2O'], mats['Zr'], mats['H2O']])
univs['GTd empty'] = make_pin(
'GT empty at dashpot', [surfs['GT dashpot IR'], surfs['GT dashpot OR']],
[mats['H2O'], mats['Zr'], mats['H2O']])
univs['GTd empty grid (top/bottom)'] = make_pin(
'GT empty at dashpot grid (top/bottom)',
[surfs['GT dashpot IR'], surfs['GT dashpot OR']],
[mats['H2O'], mats['Zr'], mats['H2O']], grid='(top/bottom)')
univs['GTd empty grid (intermediate)'] = make_pin(
'GT empty at dashpot grid (intermediate)',
[surfs['GT dashpot IR'], surfs['GT dashpot OR']],
[mats['H2O'], mats['Zr'], mats['H2O']], grid='(intermediate)')
univs['GTd empty nozzle'] = make_pin(
'GT empty nozzle', [surfs['GT dashpot IR'], surfs['GT dashpot OR']],
[mats['H2O'], mats['Zr'], mats['H2O']])
# FIXME: Stack all axial pieces of guide tube together
# INSTRUMENT TUBE PIN CELL
univs['IT'] = make_pin(
'IT', [surfs['IT IR'], surfs['IT OR'], surfs['GT IR'], surfs['GT OR']],
[mats['Air'], mats['Zr'], mats['H2O'], mats['Zr'], mats['H2O']])
univs['IT grid (top/bottom)'] = make_pin(
'IT grid (top/bottom)',
[surfs['IT IR'], surfs['IT OR'], surfs['GT IR'], surfs['GT OR']],
[mats['Air'], mats['Zr'], mats['H2O'], mats['Zr'], mats['H2O']],
grid='top/bottom')
univs['IT grid (intermediate)'] = make_pin(
'IT grid (intermediate)',
[surfs['IT IR'], surfs['IT OR'], surfs['GT IR'], surfs['GT OR']],
[mats['Air'], mats['Zr'], mats['H2O'], mats['Zr'], mats['H2O']],
grid='intermediate')
univs['IT nozzle'] = make_pin(
'IT nozzle',
[surfs['IT IR'], surfs['IT OR'], surfs['GT IR'], surfs['GT OR']],
[mats['Air'], mats['Zr'], mats['H2O'], mats['Zr'], mats['SS']])
univs['IT dashpot'] = make_pin(
'IT dashpot', [surfs['IT IR'], surfs['IT OR']],
[mats['Air'], mats['Zr'], mats['H2O']])
# CONTROL ROD PIN CELLS
univs['CR'] = make_pin(
'CR', [surfs['CP OR'], surfs['CR IR'], surfs['GT IR'], surfs['GT OR']],
[mats['AIC'], mats['Air'], mats['SS'], mats['H2O'], mats['Zr'], mats['H2O']])
univs['CR grid (top/bottom)'] = make_pin(
'CR grid (top/bottom)', [surfs['CP OR'], surfs['CR IR'], surfs['GT IR'], surfs['GT OR']],
[mats['AIC'], mats['Air'], mats['SS'], mats['H2O'], mats['Zr'], mats['H2O']],
grid='(top/bottom)')
univs['CR grid (intermediate)'] = make_pin(
'CR grid (intermediate)',
[surfs['CP OR'], surfs['CR IR'], surfs['GT IR'], surfs['GT OR']],
[mats['AIC'], mats['Air'], mats['SS'], mats['H2O'], mats['Zr'], mats['H2O']],
grid='(intermediate)')
univs['CR nozzle'] = make_pin(
'CR nozzle', [surfs['CP OR'], surfs['CR IR'], surfs['CR OR']],
[mats['AIC'], mats['Air'], mats['SS'], mats['H2O']])
univs['CR blank'] = make_pin(
'CR blank',
[surfs['CP OR'], surfs['CR IR'], surfs['CR OR'], surfs['GT IR'], surfs['GT OR']],
[mats['SS'], mats['Air'], mats['SS'], mats['H2O'], mats['Zr'], mats['H2O']])
univs['CR blank grid (top/bottom)'] = make_pin(
'CR blank grid (top/bottom)',
[surfs['CP OR'], surfs['CR IR'], surfs['CR OR'], surfs['GT IR'], surfs['GT OR']],
[mats['SS'], mats['Air'], mats['SS'], mats['H2O'], mats['Zr'], mats['H2O']],
grid='top/bottom')
univs['CR blank grid (intermediate)'] = make_pin(
'CR blank grid (intermediate)',
[surfs['CP OR'], surfs['CR IR'], surfs['CR OR'], surfs['GT IR'], surfs['GT OR']],
[mats['SS'], mats['Air'], mats['SS'], mats['H2O'], mats['Zr'], mats['H2O']],
grid='intermediate')
univs['CR blank nozzle'] = make_pin(
'CR blank nozzle', [surfs['CP OR'], surfs['CR IR'], surfs['CR OR']],
[mats['SS'], mats['Air'], mats['SS'], mats['H2O']])
univs['CR blank bare'] = make_pin(
'CR blank bare', [surfs['CP OR'], surfs['CR IR'], surfs['CR OR']],
[mats['SS'], mats['Air'], mats['SS'], mats['H2O']])
univs['CR bare'] = make_pin(
'CR bare', [surfs['CP OR'], surfs['CR IR'], surfs['CR OR']],
[mats['AIC'], mats['Air'], mats['SS'], mats['H2O']])

View file

@ -52,64 +52,6 @@ def init_data():
################## cells ##################
# (if not a fill cell, set 'fill': None. if not None, 'mat' is ignored)
# GUIDE TUBE PIN CELLS
make_pin('GT empty',"Guide tube pincell universes",co,cells,new_id(univIDs),cellIDs,
[surfs['guide tube IR']['id'],
surfs['guide tube OR']['id']],
[(mats['water-nominal']['id'],"empty guide tube"),
(mats['zirc']['id'],""),
(mats['water-nominal']['id'],""),])
make_pin('GT empty grid_tb',"",co,cells,new_id(univIDs),cellIDs,
[surfs['guide tube IR']['id'],
surfs['guide tube OR']['id'],],
[(mats['water-nominal']['id'],"empty guide tube with top/bottom grid"),
(mats['zirc']['id'],""),
(mats['water-nominal']['id'],""),],
grid=True, surfs=surfs, gridMat=mats['inconel']['id'], gridType='tb')
make_pin('GT empty grid_i',"",co,cells,new_id(univIDs),cellIDs,
[surfs['guide tube IR']['id'],
surfs['guide tube OR']['id'],],
[(mats['water-nominal']['id'],"empty guide tube with intermediate grid"),
(mats['zirc']['id'],""),
(mats['water-nominal']['id'],""),],
grid=True, surfs=surfs, gridMat=mats['zirc']['id'], gridType='i')
make_pin('GT empty nozzle',"",co,cells,new_id(univIDs),cellIDs,
[surfs['guide tube IR']['id'],
surfs['guide tube OR']['id'],],
[(mats['water-nominal']['id'],"empty guide tube SS304 penetration"),
(mats['zirc']['id'],""),
(mats['water-nominal']['id'],""),])
make_pin('GTd empty',"",co,cells,new_id(univIDs),cellIDs,
[surfs['GT dashpot IR']['id'],
surfs['GT dashpot OR']['id'],],
[(mats['water-nominal']['id'],"empty guide tube at dashpot"),
(mats['zirc']['id'],""),
(mats['water-nominal']['id'],""),])
make_pin('GTd empty grid_tb',"",co,cells,new_id(univIDs),cellIDs,
[surfs['GT dashpot IR']['id'],
surfs['GT dashpot OR']['id'],],
[(mats['water-nominal']['id'],"empty guide tube at dashpot with top/bottom grid"),
(mats['zirc']['id'],""),
(mats['water-nominal']['id'],""),],
grid=True, surfs=surfs, gridMat=mats['inconel']['id'], gridType='tb')
make_pin('GTd empty grid_i',"",co,cells,new_id(univIDs),cellIDs,
[surfs['GT dashpot IR']['id'],
surfs['GT dashpot OR']['id'],],
[(mats['water-nominal']['id'],"empty guide tube at dashpot with intermediate grid"),
(mats['zirc']['id'],""),
(mats['water-nominal']['id'],""),],
grid=True, surfs=surfs, gridMat=mats['zirc']['id'], gridType='i')
make_pin('GTd empty nozzle',"",co,cells,new_id(univIDs),cellIDs,
[surfs['GT dashpot IR']['id'],
surfs['GT dashpot OR']['id'],],
[(mats['water-nominal']['id'],"empty GTd SS304 penetration"),
(mats['zirc']['id'],""),
(mats['water-nominal']['id'],""),])
# final combination of all axial pieces for empty guide tube
stackSurfs = [surfs['bot support plate']['id'],
@ -203,57 +145,6 @@ def init_data():
# cells['GT empty nozzle']['univ'], # upper nozzle
cells['water pin']['univ']]) # upper plenum
# INSTRUMENT TUBE PIN CELL
make_pin('GT instr',"Instrument tube pincell universes",co,cells,new_id(univIDs),cellIDs,
[surfs['instr tube IR']['id'],
surfs['instr tube OR']['id'],
surfs['guide tube IR']['id'],
surfs['guide tube OR']['id']],
[(mats['air']['id'],"instr guide tube above dashpot"),
(mats['zirc']['id'],""),
(mats['water-nominal']['id'],""),
(mats['zirc']['id'],""),
(mats['water-nominal']['id'],""),])
make_pin('GT instr grid_tb',"",co,cells,new_id(univIDs),cellIDs,
[surfs['instr tube IR']['id'],
surfs['instr tube OR']['id'],
surfs['guide tube IR']['id'],
surfs['guide tube OR']['id'],],
[(mats['air']['id'],"instr guide tube at dashpot with top/bottom grid"),
(mats['zirc']['id'],""),
(mats['water-nominal']['id'],""),
(mats['zirc']['id'],""),
(mats['water-nominal']['id'],""),],
grid=True, surfs=surfs, gridMat=mats['inconel']['id'], gridType='tb')
make_pin('GT instr grid_i',"",co,cells,new_id(univIDs),cellIDs,
[surfs['instr tube IR']['id'],
surfs['instr tube OR']['id'],
surfs['guide tube IR']['id'],
surfs['guide tube OR']['id'],],
[(mats['air']['id'],"instr guide tube at dashpot with intermediate grid"),
(mats['zirc']['id'],""),
(mats['water-nominal']['id'],""),
(mats['zirc']['id'],""),
(mats['water-nominal']['id'],""),],
grid=True, surfs=surfs, gridMat=mats['zirc']['id'], gridType='i')
make_pin('GT instr nozzle',"",co,cells,new_id(univIDs),cellIDs,
[surfs['instr tube IR']['id'],
surfs['instr tube OR']['id'],
surfs['guide tube IR']['id'],
surfs['guide tube OR']['id'],],
[(mats['air']['id'],"instr guide tube SS304 penetration"),
(mats['zirc']['id'],""),
(mats['water-nominal']['id'],""),
(mats['zirc']['id'],""),
(mats['SS304']['id'],""),])
make_pin('bare instr',"",co,cells,new_id(univIDs),cellIDs,
[surfs['instr tube IR']['id'],
surfs['instr tube OR']['id'],],
[(mats['air']['id'],"instr guide tube at dashpot"),
(mats['zirc']['id'],""),
(mats['water-nominal']['id'],""),])
# final combination of all axial pieces for instrument tube
make_stack('GT instr stack',co,cells,new_id(univIDs),cellIDs,
@ -290,118 +181,6 @@ def init_data():
cells['water pin']['univ']]) # upper plenum
# CONTROL ROD PIN CELLS
make_pin('control rod',"Control rod bank pincell universes",co,cells,new_id(univIDs),cellIDs,
[surfs['control poison OR']['id'],
surfs['control rod IR']['id'],
surfs['control rod OR']['id'],
surfs['guide tube IR']['id'],
surfs['guide tube OR']['id'],],
[(mats['control rod']['id'],"guide tube above dashpot with control rod"),
(mats['air']['id'],""),
(mats['SS304']['id'],""),
(mats['water-nominal']['id'],""),
(mats['zirc']['id'],""),
(mats['water-nominal']['id'],""),])
make_pin('control rod grid_tb',"",co,cells,new_id(univIDs),cellIDs,
[surfs['control poison OR']['id'],
surfs['control rod IR']['id'],
surfs['control rod OR']['id'],
surfs['guide tube IR']['id'],
surfs['guide tube OR']['id'],],
[(mats['control rod']['id'],"guide tube above dashpot with control rod, with top/bottom grid"),
(mats['air']['id'],""),
(mats['SS304']['id'],""),
(mats['water-nominal']['id'],""),
(mats['zirc']['id'],""),
(mats['water-nominal']['id'],""),],
grid=True, surfs=surfs, gridMat=mats['inconel']['id'], gridType='tb')
make_pin('control rod grid_i',"",co,cells,new_id(univIDs),cellIDs,
[surfs['control poison OR']['id'],
surfs['control rod IR']['id'],
surfs['control rod OR']['id'],
surfs['guide tube IR']['id'],
surfs['guide tube OR']['id'],],
[(mats['control rod']['id'],"guide tube above dashpot with control rod, with intermediate grid"),
(mats['air']['id'],""),
(mats['SS304']['id'],""),
(mats['water-nominal']['id'],""),
(mats['zirc']['id'],""),
(mats['water-nominal']['id'],""),],
grid=True, surfs=surfs, gridMat=mats['zirc']['id'], gridType='i')
make_pin('control rod nozzle',"",co,cells,new_id(univIDs),cellIDs,
[surfs['control poison OR']['id'],
surfs['control rod IR']['id'],
surfs['control rod OR']['id'],],
[(mats['control rod']['id'],"guide tube above dashpot with control rod, with nozzle"),
(mats['air']['id'],""),
(mats['SS304']['id'],""),
(mats['water-nominal']['id'],""),])
make_pin('control rod blank',"",co,cells,new_id(univIDs),cellIDs,
[surfs['control poison OR']['id'],
surfs['control rod IR']['id'],
surfs['control rod OR']['id'],
surfs['guide tube IR']['id'],
surfs['guide tube OR']['id'],],
[(mats['SS304']['id'],"blank control rod above active region, above nozzle"),
(mats['air']['id'],""),
(mats['SS304']['id'],""),
(mats['water-nominal']['id'],""),
(mats['zirc']['id'],""),
(mats['water-nominal']['id'],""),])
make_pin('control rod blank grid_tb',"",co,cells,new_id(univIDs),cellIDs,
[surfs['control poison OR']['id'],
surfs['control rod IR']['id'],
surfs['control rod OR']['id'],
surfs['guide tube IR']['id'],
surfs['guide tube OR']['id'],],
[(mats['SS304']['id'],"guide tube above dashpot with blank control rod, with top/bottom grid"),
(mats['air']['id'],""),
(mats['SS304']['id'],""),
(mats['water-nominal']['id'],""),
(mats['zirc']['id'],""),
(mats['water-nominal']['id'],""),],
grid=True, surfs=surfs, gridMat=mats['inconel']['id'], gridType='tb')
make_pin('control rod blank grid_i',"",co,cells,new_id(univIDs),cellIDs,
[surfs['control poison OR']['id'],
surfs['control rod IR']['id'],
surfs['control rod OR']['id'],
surfs['guide tube IR']['id'],
surfs['guide tube OR']['id'],],
[(mats['SS304']['id'],"guide tube above dashpot with blank control rod, with intermediate grid"),
(mats['air']['id'],""),
(mats['SS304']['id'],""),
(mats['water-nominal']['id'],""),
(mats['zirc']['id'],""),
(mats['water-nominal']['id'],""),],
grid=True, surfs=surfs, gridMat=mats['zirc']['id'], gridType='i')
make_pin('control rod blank nozzle',"",co,cells,new_id(univIDs),cellIDs,
[surfs['control poison OR']['id'],
surfs['control rod IR']['id'],
surfs['control rod OR']['id'],],
[(mats['SS304']['id'],"blank control rod above active region, within nozzle"),
(mats['air']['id'],""),
(mats['SS304']['id'],""),
(mats['water-nominal']['id'],""),])
make_pin('control rod blank bare',"",co,cells,new_id(univIDs),cellIDs,
[surfs['control poison OR']['id'],
surfs['control rod IR']['id'],
surfs['control rod OR']['id'],],
[(mats['SS304']['id'],"blank control rod above active region, within nozzle"),
(mats['air']['id'],""),
(mats['SS304']['id'],""),
(mats['water-nominal']['id'],""),])
make_pin('control rod bare',"",co,cells,new_id(univIDs),cellIDs,
[surfs['control poison OR']['id'],
surfs['control rod IR']['id'],
surfs['control rod OR']['id'],],
[(mats['control rod']['id'],"guide tube above dashpot with control rod"),
(mats['air']['id'],""),
(mats['SS304']['id'],""),
(mats['water-nominal']['id'],""),])
# for the control rods, we make the axial universe three times, once with the
# grid everywhere, once without, and once with the nozzle everywhere. Then
# we can alternate with them as appropriate in the final axial stack

View file

@ -3,6 +3,22 @@ import math
import openmc
# FIXME: Add back parameters for pin cell radial surfaces
# FIXME: Cleanup parameters
# FIXME: Add docstring explanation
# Notation
# GT: Guide Tube
# BA: Burnable Absorber
# CP: Control Poison
# FR: Fuel Rod
# IR: Inner Radius
# OR: Outer Radius
# IT: Instrument Tube
# FA: Fuel Assembly
# RPV: Reactor Pressure Vessel
# Parameters
rod_grid_side_tb = 1.24416
rod_grid_side_i = 1.21962
@ -71,16 +87,6 @@ neutron_shield_NEbot_SWtop = math.tan(-math.pi/3)
neutron_shield_NEtop_SWbot = math.tan(-math.pi/6)
# Notation
# GT: Guide Tube
# BA: Burnable Absorber
# FR: Fuel Rod
# IR: Inner Radius
# OR: Outer Radius
# IT: Instrument Tube
# FA: Fuel Assembly
# RPV: Reactor Pressure Vessel
surfs = {}
# FIXME: Is this a good idea???
@ -104,7 +110,7 @@ surfs['GT dashpot IR'] = openmc.ZCylinder(
x0=0., y0=0., R=0.50419, name='GT IR (at dashpot)')
surfs['GT dashpot OR'] = openmc.ZCylinder(
x0=0., y0=0., R=0.54610, name='GT OR (at dashpot)')
surfs['control poison OR'] = openmc.ZCylinder(
surfs['CP OR'] = openmc.ZCylinder(
x0=0., y0=0., R=0.43310, name='Control Poison OR')
surfs['CR IR'] = openmc.ZCylinder(
x0=0., y0=0., R=0.43688, name='CR Clad IR')
@ -206,13 +212,13 @@ surfs['grid4top'] = openmc.ZPlane(
z0=grid4_top, name='top grid 4')
grid_surfaces = [surfs['grid1bot']['id'],
surfs['grid1top']['id'],
surfs['grid2bot']['id'],
surfs['grid2top']['id'],
surfs['grid3bot']['id'],
surfs['grid3top']['id'],
surfs['grid4bot']['id'],
surfs['grid4top']['id']]
surfs['grid1top']['id'],
surfs['grid2bot']['id'],
surfs['grid2top']['id'],
surfs['grid3bot']['id'],
surfs['grid3top']['id'],
surfs['grid4bot']['id'],
surfs['grid4top']['id']]
surfs['top pin plenum'] = openmc.ZPlane(
z0=top_plenum, name='top pin plenum')
@ -259,13 +265,17 @@ surfs['neutron shield OR'] = openmc.ZPlane(
# neutron shield planes
surfs['neutron shield NWbot SEtop'] = openmc.Plane(
A=1., B=neutron_shield_NWbot_SEtop, C=0., D=0., name='neutron shield NWbot SEtop')
A=1., B=neutron_shield_NWbot_SEtop, C=0., D=0.,
name='neutron shield NWbot SEtop')
surfs['neutron shield NWtop SEbot'] = openmc.Plane(
A=1., B=neutron_shield_NWtop_SEbot, C=0., D=0., name='neutron shield NWtop SEbot')
A=1., B=neutron_shield_NWtop_SEbot, C=0., D=0.,
name='neutron shield NWtop SEbot')
surfs['neutron shield NEbot SWtop'] = openmc.Plane(
A=1., B=neutron_shield_NEbot_SWtop, C=0., D=0., name='neutron shield NEbot SWtop')
A=1., B=neutron_shield_NEbot_SWtop, C=0., D=0.,
name='neutron shield NEbot SWtop')
surfs['neutron shield NEtop SWbot'] = openmc.Plane(
A=1., B=neutron_shield_NEtop_SWbot, C=0., D=0., name='neutron shield NEtop SWbot')
A=1., B=neutron_shield_NEtop_SWbot, C=0., D=0.,
name='neutron shield NEtop SWbot')
# outer radial surfaces
surfs['RPV IR'] = openmc.ZCylinder(

View file

@ -1,4 +1,4 @@
# openmc templates
c# openmc templates
comm_t = """ <!--{0:^40}-->"""
surf_t = """ <surface id="{id:>6}" type={type:<17} coeffs="{coeffs:>25}"/> {comm}\n"""
surf_t_bc = """ <surface id="{id:>6}" type={type:<17} coeffs="{coeffs:>25}" boundary="{bc}"/> {comm}\n"""