forked from crp/ecp-benchmarks
Merge pull request #12 from mit-crpg/temps-and-mats
Updates to SMR model
This commit is contained in:
commit
6ef892a510
7 changed files with 69 additions and 100 deletions
|
|
@ -12,6 +12,7 @@ from smr.materials import materials
|
|||
from smr.surfaces import surfs, lattice_pitch, bottom_fuel_stack, top_active_core
|
||||
from smr.assemblies import assembly_universes
|
||||
from smr.plots import assembly_plots
|
||||
from smr import inlet_temperature
|
||||
|
||||
|
||||
# Define command-line options
|
||||
|
|
@ -100,9 +101,14 @@ settings.particles = 10000
|
|||
settings.output = {'tallies': False, 'summary': False}
|
||||
settings.source = source
|
||||
settings.sourcepoint_write = False
|
||||
|
||||
settings.temperature = {
|
||||
'default': inlet_temperature,
|
||||
'method': 'interpolation',
|
||||
'range': (300.0, 1500.0),
|
||||
}
|
||||
if args.multipole:
|
||||
settings.temperature = {'multipole': True, 'tolerance': 1000}
|
||||
settings.temperature['multipole'] = True
|
||||
settings.temperature['tolerance'] = 1000
|
||||
|
||||
settings.export_to_xml(str(directory / 'settings.xml'))
|
||||
|
||||
|
|
|
|||
|
|
@ -13,6 +13,7 @@ from smr.materials import materials
|
|||
from smr.plots import core_plots
|
||||
from smr.surfaces import lattice_pitch, bottom_fuel_stack, top_active_core
|
||||
from smr.core import core_geometry
|
||||
from smr import inlet_temperature
|
||||
|
||||
|
||||
def clone(mat):
|
||||
|
|
@ -88,8 +89,14 @@ settings.output = {'tallies': False, 'summary': False}
|
|||
settings.source = source
|
||||
settings.sourcepoint_write = False
|
||||
|
||||
settings.temperature = {
|
||||
'default': inlet_temperature,
|
||||
'method': 'interpolation',
|
||||
'range': (300.0, 1500.0),
|
||||
}
|
||||
if args.multipole:
|
||||
settings.temperature = {'multipole': True, 'tolerance': 1000}
|
||||
settings.temperature['multipole'] = True
|
||||
settings.temperature['tolerance'] = 1000
|
||||
|
||||
settings.export_to_xml(str(directory / 'settings.xml'))
|
||||
|
||||
|
|
|
|||
|
|
@ -0,0 +1,6 @@
|
|||
_MPA_PER_PSIA = 0.0068947572931683625
|
||||
|
||||
# Values from ML17013A274, Table 4.1-1
|
||||
inlet_temperature = (497 - 32)*5/9 + 273.15
|
||||
core_average_temperature = (543 - 32)*5/9 + 273.15
|
||||
system_pressure = 1850*_MPA_PER_PSIA
|
||||
|
|
@ -133,75 +133,10 @@ def core_geometry(num_rings, num_axial, depleted):
|
|||
+surfs['lower bound'] & -surfs['upper bound'])
|
||||
root_univ.add_cell(cell)
|
||||
|
||||
# Neutron shield panels
|
||||
cell = openmc.Cell(name='neutron shield panel NW')
|
||||
cell.fill = mats['SS']
|
||||
cell.region = (+surfs['core barrel OR'] & -surfs['neutron shield OR'] &
|
||||
+surfs['neutron shield NWbot SEtop'] &
|
||||
-surfs['neutron shield NWtop SEbot'] &
|
||||
+surfs['lower bound'] & -surfs['upper bound'])
|
||||
root_univ.add_cell(cell)
|
||||
|
||||
cell = openmc.Cell(name='neutron shield panel N')
|
||||
cell.fill = mats['H2O']
|
||||
cell.region = (+surfs['core barrel OR'] & -surfs['neutron shield OR'] &
|
||||
+surfs['neutron shield NWtop SEbot'] &
|
||||
-surfs['neutron shield NEtop SWbot'] &
|
||||
+surfs['lower bound'] & -surfs['upper bound'])
|
||||
root_univ.add_cell(cell)
|
||||
|
||||
cell = openmc.Cell(name='neutron shield panel SE')
|
||||
cell.fill = mats['SS']
|
||||
cell.region = (+surfs['core barrel OR'] & -surfs['neutron shield OR'] &
|
||||
-surfs['neutron shield NWbot SEtop'] &
|
||||
+surfs['neutron shield NWtop SEbot'] &
|
||||
+surfs['lower bound'] & -surfs['upper bound'])
|
||||
root_univ.add_cell(cell)
|
||||
|
||||
cell = openmc.Cell(name='neutron shield panel E')
|
||||
cell.fill = mats['H2O']
|
||||
cell.region = (+surfs['core barrel OR'] & -surfs['neutron shield OR'] &
|
||||
+surfs['neutron shield NWbot SEtop'] &
|
||||
+surfs['neutron shield NEbot SWtop'] &
|
||||
+surfs['lower bound'] & -surfs['upper bound'])
|
||||
root_univ.add_cell(cell)
|
||||
|
||||
cell = openmc.Cell(name='neutron shield panel NE')
|
||||
cell.fill = mats['SS']
|
||||
cell.region = (+surfs['core barrel OR'] & -surfs['neutron shield OR'] &
|
||||
+surfs['neutron shield NEbot SWtop'] &
|
||||
-surfs['neutron shield NEtop SWbot'] &
|
||||
+surfs['lower bound'] & -surfs['upper bound'])
|
||||
root_univ.add_cell(cell)
|
||||
|
||||
cell = openmc.Cell(name='neutron shield panel S')
|
||||
cell.fill = mats['H2O']
|
||||
cell.region = (+surfs['core barrel OR'] & -surfs['neutron shield OR'] &
|
||||
-surfs['neutron shield NWtop SEbot'] &
|
||||
+surfs['neutron shield NEtop SWbot'] &
|
||||
+surfs['lower bound'] & -surfs['upper bound'])
|
||||
root_univ.add_cell(cell)
|
||||
|
||||
cell = openmc.Cell(name='neutron shield panel SW')
|
||||
cell.fill = mats['SS']
|
||||
cell.region = (+surfs['core barrel OR'] & -surfs['neutron shield OR'] &
|
||||
-surfs['neutron shield NEbot SWtop'] &
|
||||
+surfs['neutron shield NEtop SWbot'] &
|
||||
+surfs['lower bound'] & -surfs['upper bound'])
|
||||
root_univ.add_cell(cell)
|
||||
|
||||
cell = openmc.Cell(name='neutron shield panel W')
|
||||
cell.fill = mats['H2O']
|
||||
cell.region = (+surfs['core barrel OR'] & -surfs['neutron shield OR'] &
|
||||
-surfs['neutron shield NWbot SEtop'] &
|
||||
-surfs['neutron shield NEbot SWtop'] &
|
||||
+surfs['lower bound'] & -surfs['upper bound'])
|
||||
root_univ.add_cell(cell)
|
||||
|
||||
# Downcomer
|
||||
cell = openmc.Cell(name='downcomer')
|
||||
cell.fill = mats['H2O']
|
||||
cell.region = (+surfs['neutron shield OR'] & -surfs['RPV IR'] &
|
||||
cell.region = (+surfs['core barrel OR'] & -surfs['RPV IR'] &
|
||||
+surfs['lower bound'] & -surfs['upper bound'])
|
||||
root_univ.add_cell(cell)
|
||||
|
||||
|
|
|
|||
|
|
@ -1,7 +1,9 @@
|
|||
"""Instantiate the OpenMC Materials needed by the core model."""
|
||||
|
||||
import openmc
|
||||
from openmc.data import atomic_weight, atomic_mass
|
||||
from openmc.data import atomic_weight, atomic_mass, water_density
|
||||
|
||||
from . import system_pressure, core_average_temperature
|
||||
|
||||
|
||||
_DEPLETION_NUCLIDES = [
|
||||
|
|
@ -41,13 +43,11 @@ mats = {}
|
|||
|
||||
# Create He gas material for fuel pin gap
|
||||
mats['He'] = openmc.Material(name='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', 0.00616)
|
||||
mats['Air'].add_element('O', 0.2095, 'ao')
|
||||
mats['Air'].add_element('N', 0.7809, 'ao')
|
||||
|
|
@ -56,7 +56,6 @@ 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_element('Si', 0.0035, 'wo')
|
||||
mats['In'].add_element('Cr', 0.1896, 'wo')
|
||||
|
|
@ -64,9 +63,17 @@ 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 302
|
||||
mats['SS302'] = openmc.Material(name='SS302')
|
||||
mats['SS302'].set_density('g/cm3', 7.86)
|
||||
mats['SS302'].add_element('Si', 0.01, 'wo')
|
||||
mats['SS302'].add_element('Cr', 0.18, 'wo')
|
||||
mats['SS302'].add_element('Mn', 0.02, 'wo')
|
||||
mats['SS302'].add_element('Fe', 0.70, 'wo')
|
||||
mats['SS302'].add_element('Ni', 0.09, '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')
|
||||
|
|
@ -76,7 +83,6 @@ 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')
|
||||
|
|
@ -97,7 +103,6 @@ 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')
|
||||
|
|
@ -105,9 +110,18 @@ 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 M5 alloy material
|
||||
m5_niobium = 0.01 # http://publications.jrc.ec.europa.eu/repository/bitstream/JRC100644/lcna28366enn.pdf
|
||||
m5_oxygen = 0.00135 # http://publications.jrc.ec.europa.eu/repository/bitstream/JRC100644/lcna28366enn.pdf
|
||||
m5_density = 6.494 # 10.1039/C5DT03403E
|
||||
mats['M5'] = openmc.Material(name='M5')
|
||||
mats['M5'].add_element('Zr', 1.0 - m5_niobium - m5_oxygen)
|
||||
mats['M5'].add_element('Nb', m5_niobium)
|
||||
mats['M5'].add_element('O', m5_oxygen)
|
||||
mats['M5'].set_density('g/cm3', m5_density)
|
||||
|
||||
# Create Ag-In-Cd control rod material
|
||||
mats['AIC'] = openmc.Material(name='Ag-In-Cd')
|
||||
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')
|
||||
|
|
@ -116,10 +130,11 @@ mats['AIC'].add_element('Cd', 0.05, 'wo')
|
|||
|
||||
#### Borated Water
|
||||
|
||||
boron_ppm = 975
|
||||
# Concentration of boron at beginning of equilibrium cycle
|
||||
boron_ppm = 1240 # ML17013A274, Figure 4.3-17
|
||||
|
||||
# Density of clean water at 2250 psia T=560F NIST
|
||||
h2o_dens = 0.73986
|
||||
# Density of water
|
||||
h2o_dens = water_density(core_average_temperature, system_pressure)
|
||||
|
||||
# Weight percent of natural boron in borated water
|
||||
wB_Bh2o = boron_ppm * 1.0e-6
|
||||
|
|
@ -146,7 +161,6 @@ aho_Bh2o = ah2o_Bh2o
|
|||
|
||||
# Create borated water for coolant / moderator
|
||||
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')
|
||||
|
|
|
|||
|
|
@ -674,16 +674,16 @@ def pin_universes(num_rings=10, num_axial=196, depleted=False):
|
|||
univs['end plug'] = make_pin(
|
||||
'end plug',
|
||||
[surfs['clad OR']],
|
||||
[mats['Zr'], mats['H2O']])
|
||||
[mats['M5'], mats['H2O']])
|
||||
|
||||
univs['pin plenum'] = make_pin(
|
||||
'pin plenum',
|
||||
surfaces=[surfs['plenum spring OR'],
|
||||
surfs['clad IR'],
|
||||
surfs['clad OR']],
|
||||
materials=[mats['In'],
|
||||
materials=[mats['SS302'],
|
||||
mats['He'],
|
||||
mats['Zr'],
|
||||
mats['M5'],
|
||||
mats['H2O']])
|
||||
|
||||
univs['pin plenum grid (intermediate)'] = make_pin(
|
||||
|
|
@ -743,7 +743,7 @@ def pin_universes(num_rings=10, num_axial=196, depleted=False):
|
|||
fuel_fill = mats['UO2 1.6 {}'.format(fuel)]
|
||||
|
||||
outside_pin_surfaces = [surfs['clad IR'], surfs['clad OR']]
|
||||
outside_pin_mats = [mats['He'], mats['Zr'], mats['H2O']]
|
||||
outside_pin_mats = [mats['He'], mats['M5'], mats['H2O']]
|
||||
|
||||
univs['Outside pin'] = make_pin(
|
||||
'Outside pin',
|
||||
|
|
|
|||
|
|
@ -40,7 +40,7 @@ clad_OR = 0.374*INCHES/2 # ML17013A274, Table 4.1-2
|
|||
active_fuel_length = 78.74*INCHES # ML17013A274, Figure 4.2-10
|
||||
plenum_length = 5.311*INCHES # ML17013A274, Figure 4.2-10
|
||||
fuel_rod_length = 85.00*INCHES # ML17013A274, Table 4.1-2
|
||||
lower_end_cap = 0.575*INCHES # ML17007A001, Table 3-2
|
||||
lower_end_cap_length = 0.575*INCHES # ML17007A001, Table 3-2
|
||||
|
||||
# pin cell parameters
|
||||
guide_tube_IR = 0.450*INCHES/2 # ML17013A274, Table 4.1-2
|
||||
|
|
@ -79,19 +79,20 @@ top_nozzle_width = 8.406*INCHES # ML17013A274, Figure 4.2-2
|
|||
core_barrel_IR = 74*INCHES/2 # ML17013A274, Table 4.1-2
|
||||
core_barrel_OR = 78*INCHES/2 # ML17013A274, Table 4.1-2
|
||||
neutron_shield_OR = core_barrel_OR + 2.0
|
||||
rpv_IR = 120.0 # Estimate?
|
||||
rpv_OR = 135.0 # Estimate?
|
||||
rpv_IR = 96.5*INCHES/2 # ML17013A274, Table 5.3-1
|
||||
rpv_OR = 105*INCHES/2 # ML17013A274, Table 5.3-1
|
||||
|
||||
# axial parameters
|
||||
lowest_extent = 0.000
|
||||
bottom_support_plate = 20.000
|
||||
top_support_plate = 25.000
|
||||
bottom_lower_nozzle = 25.000
|
||||
top_lower_nozzle = 35.160
|
||||
bottom_fuel_rod = 35.160
|
||||
top_lower_thimble = 36.007
|
||||
bottom_fuel_stack = 36.007
|
||||
bot_burn_abs = 41.087
|
||||
reference_z = 0.0
|
||||
lowest_extent = reference_z
|
||||
bottom_support_plate = lowest_extent + 20.000
|
||||
top_support_plate = bottom_support_plate + 5.000
|
||||
bottom_lower_nozzle = bottom_support_plate + 5.000
|
||||
top_lower_nozzle = bottom_lower_nozzle + 4.0*INCHES
|
||||
bottom_fuel_rod = bottom_lower_nozzle + 4.0*INCHES
|
||||
top_lower_thimble = bottom_fuel_rod + lower_end_cap_length
|
||||
bottom_fuel_stack = bottom_fuel_rod + lower_end_cap_length
|
||||
bot_burn_abs = bottom_fuel_stack + 2.0*INCHES
|
||||
top_active_core = bottom_fuel_stack + active_fuel_length
|
||||
top_plenum = top_active_core + plenum_length
|
||||
top_fuel_rod = bottom_fuel_rod + fuel_rod_length
|
||||
|
|
@ -170,13 +171,13 @@ surfs['IT OR'] = copy.deepcopy(surfs['BA IR 6'])
|
|||
|
||||
# Rectangular prisms for grid spacers
|
||||
surfs['rod grid box'] = \
|
||||
openmc.get_rectangular_prism(rod_grid_side, rod_grid_side)
|
||||
openmc.rectangular_prism(rod_grid_side, rod_grid_side)
|
||||
|
||||
# Rectangular prisms for lattice grid sleeves
|
||||
surfs['lat grid box inner'] = \
|
||||
openmc.get_rectangular_prism(17.*pin_pitch, 17.*pin_pitch)
|
||||
openmc.rectangular_prism(17.*pin_pitch, 17.*pin_pitch)
|
||||
surfs['lat grid box outer'] = \
|
||||
openmc.get_rectangular_prism(grid_strap_side, grid_strap_side)
|
||||
openmc.rectangular_prism(grid_strap_side, grid_strap_side)
|
||||
|
||||
surfs['bot support plate'] = openmc.ZPlane(
|
||||
z0=bottom_support_plate, name='bot support plate')
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue