diff --git a/smr/build-assembly.py b/smr/build-assembly.py index ad1fb03..2970847 100644 --- a/smr/build-assembly.py +++ b/smr/build-assembly.py @@ -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')) diff --git a/smr/build-core-fresh.py b/smr/build-core-fresh.py index b53fd4f..6908b23 100644 --- a/smr/build-core-fresh.py +++ b/smr/build-core-fresh.py @@ -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')) diff --git a/smr/smr/__init__.py b/smr/smr/__init__.py index e69de29..027517e 100644 --- a/smr/smr/__init__.py +++ b/smr/smr/__init__.py @@ -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 diff --git a/smr/smr/materials.py b/smr/smr/materials.py index 8487b3a..9f718f9 100644 --- a/smr/smr/materials.py +++ b/smr/smr/materials.py @@ -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') @@ -66,7 +65,6 @@ 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') @@ -76,7 +74,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 +94,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 +101,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 +121,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 +152,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') diff --git a/smr/smr/pins.py b/smr/smr/pins.py index c2620f1..03aeb0a 100644 --- a/smr/smr/pins.py +++ b/smr/smr/pins.py @@ -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',