forked from crp/ecp-benchmarks
Added initial pin cell building
This commit is contained in:
parent
96052a90f9
commit
65b87a6191
7 changed files with 297 additions and 407 deletions
54
smr/cells.py
54
smr/cells.py
|
|
@ -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)'])
|
||||
|
|
@ -1,6 +1,7 @@
|
|||
from surfaces import surfs
|
||||
|
||||
import openmc
|
||||
# FIXME: Add docstring explanation
|
||||
# FIXME: Put this in surface.py??
|
||||
|
||||
|
||||
grids = {}
|
||||
|
|
|
|||
212
smr/materials.py
212
smr/materials.py
|
|
@ -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
158
smr/pins.py
Normal 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']])
|
||||
221
smr/smr.py
221
smr/smr.py
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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(
|
||||
|
|
|
|||
|
|
@ -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"""
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue