diff --git a/smr/__init__.py b/smr/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/smr/build-xml.py b/smr/build-xml.py index d0118f0..5be562e 100644 --- a/smr/build-xml.py +++ b/smr/build-xml.py @@ -19,7 +19,7 @@ materials.export_to_xml() # Query the user on whether to use multipole cross sections multipole = input('Use multipole cross sections? (y/n): ').lower() -multipole = True if multipole == 'y' else False +multipole = (multipole == 'y') # Construct uniform initial source distribution over fissionable zones lower_left = [-7.*lattice_pitch/2., -7.*lattice_pitch/2., bottom_fuel_stack] @@ -27,19 +27,18 @@ upper_right = [+7.*lattice_pitch/2., +7.*lattice_pitch/2., top_active_core] source = openmc.source.Source(space=openmc.stats.Box(lower_left, upper_right)) source.space.only_fissionable = True -settings_file = openmc.Settings() -settings_file.batches = 200 -settings_file.inactive = 100 -settings_file.particles = 10000 -settings_file.ptables = True -settings_file.output = {'tallies': False} -settings_file.source = source -settings_file.sourcepoint_write = False +settings = openmc.Settings() +settings.batches = 200 +settings.inactive = 100 +settings.particles = 10000 +settings.output = {'tallies': False} +settings.source = source +settings.sourcepoint_write = False if multipole: - settings_file.temperature = {'multipole': True, 'tolerance': 1000} + settings.temperature = {'multipole': True, 'tolerance': 1000} -settings_file.export_to_xml() +settings.export_to_xml() #### Create OpenMC "plots.xml" file diff --git a/smr/geometry.xml b/smr/geometry.xml index 29f1bc3..34d05c1 100644 --- a/smr/geometry.xml +++ b/smr/geometry.xml @@ -6,11 +6,11 @@ - + - + @@ -20,11 +20,11 @@ - + - + @@ -76,13 +76,13 @@ - + - + @@ -115,13 +115,13 @@ - + - + @@ -138,14 +138,14 @@ - + - + @@ -220,7 +220,7 @@ - + @@ -239,7 +239,7 @@ - + @@ -278,151 +278,151 @@ - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -479,7 +479,7 @@ - + 1.25984 1.25984 17 17 -10.70864 -10.70864 @@ -502,7 +502,7 @@ 10097 10097 10097 10097 10097 10097 10097 10097 10097 10097 10097 10097 10097 10097 10097 10097 10097 10097 10097 10097 10097 10097 10097 10097 10097 10097 10097 10097 10097 10097 10097 10097 10097 10097 - + 1.25984 1.25984 17 17 -10.70864 -10.70864 @@ -525,7 +525,7 @@ 10101 10101 10101 10101 10101 10101 10101 10101 10101 10101 10101 10101 10101 10101 10101 10101 10101 10101 10101 10101 10101 10101 10101 10101 10101 10101 10101 10101 10101 10101 10101 10101 10101 10101 - + 1.25984 1.25984 17 17 -10.70864 -10.70864 @@ -548,7 +548,7 @@ 10105 10105 10105 10105 10105 10105 10105 10105 10105 10105 10105 10105 10105 10105 10105 10105 10105 10105 10105 10105 10105 10105 10105 10105 10105 10105 10105 10105 10105 10105 10105 10105 10105 10105 - + 1.25984 1.25984 17 17 -10.70864 -10.70864 @@ -692,14 +692,14 @@ 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 - + - - - - - - + + + + + + diff --git a/smr/materials.xml b/smr/materials.xml index 19dfcd6..465fca7 100644 --- a/smr/materials.xml +++ b/smr/materials.xml @@ -142,7 +142,7 @@ - + 300 @@ -181,7 +181,7 @@ - + 300 @@ -190,7 +190,7 @@ - + 300 @@ -199,7 +199,7 @@ - + 300 diff --git a/smr/plots.xml b/smr/plots.xml index 4d38117..a2f6dd7 100644 --- a/smr/plots.xml +++ b/smr/plots.xml @@ -22,7 +22,7 @@ 0.0 0.0 127.722 - 127.722 127.722 + 270.0 255.444 1000 1000 255 255 255 diff --git a/smr/settings.xml b/smr/settings.xml index 50e1ca3..91a0bf6 100644 --- a/smr/settings.xml +++ b/smr/settings.xml @@ -13,7 +13,6 @@ false - true True 1000 diff --git a/smr/smr/assemblies.py b/smr/smr/assemblies.py index df5a8da..3d5c2f9 100644 --- a/smr/smr/assemblies.py +++ b/smr/smr/assemblies.py @@ -34,9 +34,8 @@ def make_assembly(name, universes): lattice.pitch = [pin_pitch, pin_pitch] lattice.universes = universes - # Create rectangular prism cylinder for lattice grid box - lat_grid_box = (surfs['lat grid box outer'] & - openmc.Complement(surfs['lat grid box inner'])) + # Create rectangular prism for lattice grid box + lat_grid_box = (surfs['lat grid box outer'] & ~surfs['lat grid box inner']) # Add lattice to bounding cell univ_name = name + ' lattice' @@ -49,7 +48,7 @@ def make_assembly(name, universes): # Add outer water cell cell = openmc.Cell(name=univ_name + ' outer water') cell.fill = univs['water pin'] - cell.region = openmc.Complement(surfs['lat grid box outer']) + cell.region = ~surfs['lat grid box outer'] universe.add_cell(cell) # Make bottom axial cell for outside of assembly (without sleeve) @@ -139,7 +138,7 @@ for cent, comment in [(gti, ''), (ins, ' instr')]: # NO BURNABLE ABSORBERS universes = np.empty((17,17), dtype=openmc.Universe) - universes[:,:] = univs['Fuel (1.6\%) stack'] + universes[:,:] = univs['Fuel (1.6%) stack'] universes[nonfuel_y, nonfuel_x] = [ gtu, gtu, gtu, gtu, gtu, gtu, gtu, gtu, gtu, gtu, @@ -147,15 +146,15 @@ for cent, comment in [(gti, ''), (ins, ' instr')]: gtu, gtu, gtu, gtu, gtu, gtu, gtu, gtu, gtu, gtu ] - univs['Assembly (1.6\%)' + comment] = \ - make_assembly('Assembly (1.6\%) no BAs' + comment, universes) + univs['Assembly (1.6%)' + comment] = \ + make_assembly('Assembly (1.6%) no BAs' + comment, universes) # WITH EACH CONTROL ROD BANK for bank, comment2 in [(crA, 'A'), (crB, 'B'), (crC, 'C'), (crD, 'D'), (crSB, 'SB'), (crSC, 'SC'), (crSD, 'SD'), (crSE, 'SE')]: universes = np.empty((17,17), dtype=openmc.Universe) - universes[:,:] = univs['Fuel (1.6\%) stack'] + universes[:,:] = univs['Fuel (1.6%) stack'] universes[nonfuel_y, nonfuel_x] = [ bank, bank, bank, bank, bank, bank, bank, bank, bank, bank, @@ -163,8 +162,8 @@ for cent, comment in [(gti, ''), (ins, ' instr')]: bank, bank, bank, bank, bank, bank, bank, bank, bank, bank ] - univs['Assembly (1.6\%) CR {}'.format(comment2) + comment] = \ - make_assembly('Assembly (1.6\%) CR {}'.format(comment2) + comment, universes) + univs['Assembly (1.6%) CR {}'.format(comment2) + comment] = \ + make_assembly('Assembly (1.6%) CR {}'.format(comment2) + comment, universes) #### 2.4% ENRICHED ASSEMBLIES @@ -173,7 +172,7 @@ for cent, comment in [(gti, ''), (ins, ' instr')]: # NO BURNABLE ABSORBERS universes = np.empty((17,17), dtype=openmc.Universe) - universes[:,:] = univs['Fuel (2.4\%) stack'] + universes[:,:] = univs['Fuel (2.4%) stack'] universes[nonfuel_y, nonfuel_x] = [ gtu, gtu, gtu, gtu, gtu, gtu, gtu, gtu, gtu, gtu, @@ -181,12 +180,12 @@ for cent, comment in [(gti, ''), (ins, ' instr')]: gtu, gtu, gtu, gtu, gtu, gtu, gtu, gtu, gtu, gtu ] - univs['Assembly (2.4\%) no BAs' + comment] = \ - make_assembly('Assembly (2.4\%) no BAs' + comment, universes) + univs['Assembly (2.4%) no BAs' + comment] = \ + make_assembly('Assembly (2.4%) no BAs' + comment, universes) # WITH CONTROL ROD D BANK universes = np.empty((17,17), dtype=openmc.Universe) - universes[:,:] = univs['Fuel (2.4\%) stack'] + universes[:,:] = univs['Fuel (2.4%) stack'] universes[nonfuel_y, nonfuel_x] = [ crD, crD, crD, crD, crD, crD, crD, crD, crD, crD, @@ -194,12 +193,12 @@ for cent, comment in [(gti, ''), (ins, ' instr')]: crD, crD, crD, crD, crD, crD, crD, crD, crD, crD ] - univs['Assembly (2.4\%) CR D' + comment] = \ - make_assembly('Assembly (2.4\%) CR D' + comment, universes) + univs['Assembly (2.4%) CR D' + comment] = \ + make_assembly('Assembly (2.4%) CR D' + comment, universes) # WITH 12 BURNABLE ABSORBERS universes = np.empty((17,17), dtype=openmc.Universe) - universes[:,:] = univs['Fuel (2.4\%) stack'] + universes[:,:] = univs['Fuel (2.4%) stack'] universes[nonfuel_y, nonfuel_x] = [ bas, gtu, bas, bas, bas, bas, gtu, gtu, gtu, bas, @@ -207,12 +206,12 @@ for cent, comment in [(gti, ''), (ins, ' instr')]: bas, gtu, gtu, gtu, bas, bas, bas, bas, gtu, bas ] - univs['Assembly (2.4\%) 12BA' + comment] = \ - make_assembly('Assembly (2.4\%) 12BA' + comment, universes) + univs['Assembly (2.4%) 12BA' + comment] = \ + make_assembly('Assembly (2.4%) 12BA' + comment, universes) # WITH 16 BURNABLE ABSORBERS universes = np.empty((17,17), dtype=openmc.Universe) - universes[:,:] = univs['Fuel (2.4\%) stack'] + universes[:,:] = univs['Fuel (2.4%) stack'] universes[nonfuel_y, nonfuel_x] = [ bas, bas, bas, bas, bas, bas, gtu, gtu, gtu, bas, @@ -220,8 +219,8 @@ for cent, comment in [(gti, ''), (ins, ' instr')]: bas, gtu, gtu, gtu, bas, bas, bas, bas, bas, bas ] - univs['Assembly (2.4\%) 16BA' + comment] = \ - make_assembly('Assembly (2.4\%) 16BA' + comment, universes) + univs['Assembly (2.4%) 16BA' + comment] = \ + make_assembly('Assembly (2.4%) 16BA' + comment, universes) #### 3.1% ENRICHED ASSEMBLIES @@ -230,7 +229,7 @@ for cent, comment in [(gti, ''), (ins, ' instr')]: # NO BURNABLE ABSORBERS universes = np.empty((17,17), dtype=openmc.Universe) - universes[:,:] = univs['Fuel (3.1\%) stack'] + universes[:,:] = univs['Fuel (3.1%) stack'] universes[nonfuel_y, nonfuel_x] = [ gtu, gtu, gtu, gtu, gtu, gtu, gtu, gtu, gtu, gtu, @@ -238,12 +237,12 @@ for cent, comment in [(gti, ''), (ins, ' instr')]: gtu, gtu, gtu, gtu, gtu, gtu, gtu, gtu, gtu, gtu ] - univs['Assembly (3.1\%)' + comment] = \ - make_assembly('Assembly (3.1\%) no BAs' + comment, universes) + univs['Assembly (3.1%)' + comment] = \ + make_assembly('Assembly (3.1%) no BAs' + comment, universes) # WITH CONTROL ROD SA BANK universes = np.empty((17,17), dtype=openmc.Universe) - universes[:,:] = univs['Fuel (3.1\%) stack'] + universes[:,:] = univs['Fuel (3.1%) stack'] universes[nonfuel_y, nonfuel_x] = [ crSA, crSA, crSA, crSA, crSA, crSA, crSA, crSA, crSA, crSA, @@ -251,12 +250,12 @@ for cent, comment in [(gti, ''), (ins, ' instr')]: crSA, crSA, crSA, crSA, crSA, crSA, crSA, crSA, crSA, crSA ] - univs['Assembly (3.1\%) CR SA' + comment] = \ - make_assembly('Assembly (3.1\%) CR SA' + comment, universes) + univs['Assembly (3.1%) CR SA' + comment] = \ + make_assembly('Assembly (3.1%) CR SA' + comment, universes) # WITH 20 BURNABLE ABSORBERS universes = np.empty((17,17), dtype=openmc.Universe) - universes[:,:] = univs['Fuel (3.1\%) stack'] + universes[:,:] = univs['Fuel (3.1%) stack'] universes[nonfuel_y, nonfuel_x] = [ bas, bas, bas, bas, bas, bas, bas, gtu, bas, bas, @@ -264,12 +263,12 @@ for cent, comment in [(gti, ''), (ins, ' instr')]: bas, bas, gtu, bas, bas, bas, bas, bas, bas, bas ] - univs['Assembly (3.1\%) 20BA' + comment] = \ - make_assembly('Assembly (3.1\%) 20BA' + comment, universes) + univs['Assembly (3.1%) 20BA' + comment] = \ + make_assembly('Assembly (3.1%) 20BA' + comment, universes) # WITH 16 BURNABLE ABSORBERS universes = np.empty((17,17), dtype=openmc.Universe) - universes[:,:] = univs['Fuel (3.1\%) stack'] + universes[:,:] = univs['Fuel (3.1%) stack'] universes[nonfuel_y, nonfuel_x] = [ bas, bas, bas, bas, bas, bas, gtu, gtu, gtu, bas, @@ -277,12 +276,12 @@ for cent, comment in [(gti, ''), (ins, ' instr')]: bas, gtu, gtu, gtu, bas, bas, bas, bas, bas, bas ] - univs['Assembly (3.1\%) 16BA' + comment] = \ - make_assembly('Assembly (3.1\%) 16BA' + comment, universes) + univs['Assembly (3.1%) 16BA' + comment] = \ + make_assembly('Assembly (3.1%) 16BA' + comment, universes) # WITH 15 BURNABLE ABSORBERS NW universes = np.empty((17,17), dtype=openmc.Universe) - universes[:,:] = univs['Fuel (3.1\%) stack'] + universes[:,:] = univs['Fuel (3.1%) stack'] universes[nonfuel_y, nonfuel_x] = [ gtu, gtu, gtu, gtu, gtu, gtu, bas, bas, bas, bas, @@ -290,12 +289,12 @@ for cent, comment in [(gti, ''), (ins, ' instr')]: gtu, bas, bas, bas, bas, gtu, bas, bas, bas, bas ] - univs['Assembly (3.1\%) 15BANW' + comment] = \ - make_assembly('Assembly (3.1\%) 15BANW' + comment, universes) + univs['Assembly (3.1%) 15BANW' + comment] = \ + make_assembly('Assembly (3.1%) 15BANW' + comment, universes) # WITH 15 BURNABLE ABSORBERS NE universes = np.empty((17,17), dtype=openmc.Universe) - universes[:,:] = univs['Fuel (3.1\%) stack'] + universes[:,:] = univs['Fuel (3.1%) stack'] universes[nonfuel_y, nonfuel_x] = [ gtu, gtu, gtu, gtu, gtu, gtu, bas, bas, bas, gtu, @@ -303,12 +302,12 @@ for cent, comment in [(gti, ''), (ins, ' instr')]: bas, bas, bas, bas, gtu, bas, gtu, bas, bas, bas ] - univs['Assembly (3.1\%) 15BANE' + comment] = \ - make_assembly('Assembly (3.1\%) 15BANE' + comment, universes) + univs['Assembly (3.1%) 15BANE' + comment] = \ + make_assembly('Assembly (3.1%) 15BANE' + comment, universes) # WITH 15 BURNABLE ABSORBERS SW universes = np.empty((17,17), dtype=openmc.Universe) - universes[:,:] = univs['Fuel (3.1\%) stack'] + universes[:,:] = univs['Fuel (3.1%) stack'] universes[nonfuel_y, nonfuel_x] = [ bas, bas, bas, gtu, bas, gtu, bas, bas, bas, bas, @@ -316,12 +315,12 @@ for cent, comment in [(gti, ''), (ins, ' instr')]: gtu, bas, bas, bas, bas, gtu, gtu, gtu, gtu, gtu ] - univs['Assembly (3.1\%) 15BASW' + comment] = \ - make_assembly('Assembly (3.1\%) 15BASW' + comment, universes) + univs['Assembly (3.1%) 15BASW' + comment] = \ + make_assembly('Assembly (3.1%) 15BASW' + comment, universes) # WITH 15 BURNABLE ABSORBERS SE universes = np.empty((17,17), dtype=openmc.Universe) - universes[:,:] = univs['Fuel (3.1\%) stack'] + universes[:,:] = univs['Fuel (3.1%) stack'] universes[nonfuel_y, nonfuel_x] = [ bas, bas, bas, bas, gtu, bas, bas, bas, bas, gtu, @@ -329,12 +328,12 @@ for cent, comment in [(gti, ''), (ins, ' instr')]: bas, bas, bas, bas, gtu, gtu, gtu, gtu, gtu, gtu ] - univs['Assembly (3.1\%) 15BASE' + comment] = \ - make_assembly('Assembly (3.1\%) 15BASE' + comment, universes) + univs['Assembly (3.1%) 15BASE' + comment] = \ + make_assembly('Assembly (3.1%) 15BASE' + comment, universes) # WITH 6 BURNABLE ABSORBERS N universes = np.empty((17,17), dtype=openmc.Universe) - universes[:,:] = univs['Fuel (3.1\%) stack'] + universes[:,:] = univs['Fuel (3.1%) stack'] universes[nonfuel_y, nonfuel_x] = [ gtu, gtu, gtu, gtu, gtu, gtu, gtu, gtu, gtu, gtu, @@ -342,12 +341,12 @@ for cent, comment in [(gti, ''), (ins, ' instr')]: bas, gtu, gtu, gtu, bas, bas, bas, bas, gtu, bas ] - univs['Assembly (3.1\%) 6BAN' + comment] = \ - make_assembly('Assembly (3.1\%) 6BAN' + comment, universes) + univs['Assembly (3.1%) 6BAN' + comment] = \ + make_assembly('Assembly (3.1%) 6BAN' + comment, universes) # WITH 6 BURNABLE ABSORBERS S universes = np.empty((17,17), dtype=openmc.Universe) - universes[:,:] = univs['Fuel (3.1\%) stack'] + universes[:,:] = univs['Fuel (3.1%) stack'] universes[nonfuel_y, nonfuel_x] = [ bas, gtu, bas, bas, bas, bas, gtu, gtu, gtu, bas, @@ -355,12 +354,12 @@ for cent, comment in [(gti, ''), (ins, ' instr')]: gtu, gtu, gtu, gtu, gtu, gtu, gtu, gtu, gtu, gtu ] - univs['Assembly (3.1\%) 6BAS' + comment] = \ - make_assembly('Assembly (3.1\%) 6BAS' + comment, universes) + univs['Assembly (3.1%) 6BAS' + comment] = \ + make_assembly('Assembly (3.1%) 6BAS' + comment, universes) # WITH 6 BURNABLE ABSORBERS W universes = np.empty((17,17), dtype=openmc.Universe) - universes[:,:] = univs['Fuel (3.1\%) stack'] + universes[:,:] = univs['Fuel (3.1%) stack'] universes[nonfuel_y, nonfuel_x] = [ gtu, gtu, bas, gtu, bas, gtu, gtu, gtu, gtu, bas, @@ -368,12 +367,12 @@ for cent, comment in [(gti, ''), (ins, ' instr')]: gtu, gtu, gtu, gtu, bas, gtu, bas, gtu, gtu, bas ] - univs['Assembly (3.1\%) 6BAW' + comment] = \ - make_assembly('Assembly (3.1\%) 6BAW' + comment, universes) + univs['Assembly (3.1%) 6BAW' + comment] = \ + make_assembly('Assembly (3.1%) 6BAW' + comment, universes) # WITH 6 BURNABLE ABSORBERS E universes = np.empty((17,17), dtype=openmc.Universe) - universes[:,:] = univs['Fuel (3.1\%) stack'] + universes[:,:] = univs['Fuel (3.1%) stack'] universes[nonfuel_y, nonfuel_x] = [ bas, gtu, gtu, bas, gtu, bas, gtu, gtu, gtu, gtu, @@ -381,5 +380,5 @@ for cent, comment in [(gti, ''), (ins, ' instr')]: bas, gtu, gtu, gtu, gtu, bas, gtu, bas, gtu, gtu ] - univs['Assembly (3.1\%) 6BAE' + comment] = \ - make_assembly('Assembly (3.1\%) 6BAE' + comment, universes) \ No newline at end of file + univs['Assembly (3.1%) 6BAE' + comment] = \ + make_assembly('Assembly (3.1%) 6BAE' + comment, universes) \ No newline at end of file diff --git a/smr/smr/core.py b/smr/smr/core.py index e7e3ae1..bf5c336 100644 --- a/smr/smr/core.py +++ b/smr/smr/core.py @@ -26,67 +26,67 @@ core.universes[5, 11] = univs['baffle northeast corner'] core.universes[6, 6] = univs['baffle northwest corner'] core.universes[6, 7] = univs['baffle northwest'] -core.universes[6, 8] = univs['Assembly (3.1\%) instr'] -core.universes[6, 9] = univs['Assembly (2.4\%) CR D'] -core.universes[6, 10] = univs['Assembly (3.1\%) instr'] +core.universes[6, 8] = univs['Assembly (3.1%) instr'] +core.universes[6, 9] = univs['Assembly (2.4%) CR D'] +core.universes[6, 10] = univs['Assembly (3.1%) instr'] core.universes[6, 11] = univs['baffle northeast'] core.universes[6, 12] = univs['baffle northeast corner'] core.universes[7, 5] = univs['baffle northwest corner'] core.universes[7, 6] = univs['baffle northwest'] -core.universes[7, 7] = univs['Assembly (3.1\%) instr'] -core.universes[7, 8] = univs['Assembly (2.4\%) CR D'] -core.universes[7, 9] = univs['Assembly (3.1\%) 16BA'] -core.universes[7, 10] = univs['Assembly (2.4\%) CR D'] -core.universes[7, 11] = univs['Assembly (3.1\%) instr'] +core.universes[7, 7] = univs['Assembly (3.1%) instr'] +core.universes[7, 8] = univs['Assembly (2.4%) CR D'] +core.universes[7, 9] = univs['Assembly (3.1%) 16BA'] +core.universes[7, 10] = univs['Assembly (2.4%) CR D'] +core.universes[7, 11] = univs['Assembly (3.1%) instr'] core.universes[7, 12] = univs['baffle northeast'] core.universes[7, 13] = univs['baffle northeast corner'] core.universes[8, 5] = univs['baffle west'] -core.universes[8, 6] = univs['Assembly (3.1\%) instr'] -core.universes[8, 7] = univs['Assembly (2.4\%) CR D'] -core.universes[8, 8] = univs['Assembly (3.1\%) 16BA'] -core.universes[8, 9] = univs['Assembly (2.4\%) CR D'] -core.universes[8, 10] = univs['Assembly (3.1\%) 16BA'] -core.universes[8, 11] = univs['Assembly (2.4\%) CR D'] -core.universes[8, 12] = univs['Assembly (3.1\%) instr'] +core.universes[8, 6] = univs['Assembly (3.1%) instr'] +core.universes[8, 7] = univs['Assembly (2.4%) CR D'] +core.universes[8, 8] = univs['Assembly (3.1%) 16BA'] +core.universes[8, 9] = univs['Assembly (2.4%) CR D'] +core.universes[8, 10] = univs['Assembly (3.1%) 16BA'] +core.universes[8, 11] = univs['Assembly (2.4%) CR D'] +core.universes[8, 12] = univs['Assembly (3.1%) instr'] core.universes[8, 13] = univs['baffle east'] core.universes[9, 5] = univs['baffle west'] -core.universes[9, 6] = univs['Assembly (2.4\%) CR D'] -core.universes[9, 7] = univs['Assembly (3.1\%) 16BA'] -core.universes[9, 8] = univs['Assembly (2.4\%) CR D'] -core.universes[9, 9] = univs['Assembly (1.6\%) instr'] -core.universes[9, 10] = univs['Assembly (2.4\%) CR D'] -core.universes[9, 11] = univs['Assembly (3.1\%) 16BA'] -core.universes[9, 12] = univs['Assembly (2.4\%) CR D'] +core.universes[9, 6] = univs['Assembly (2.4%) CR D'] +core.universes[9, 7] = univs['Assembly (3.1%) 16BA'] +core.universes[9, 8] = univs['Assembly (2.4%) CR D'] +core.universes[9, 9] = univs['Assembly (1.6%) instr'] +core.universes[9, 10] = univs['Assembly (2.4%) CR D'] +core.universes[9, 11] = univs['Assembly (3.1%) 16BA'] +core.universes[9, 12] = univs['Assembly (2.4%) CR D'] core.universes[9, 13] = univs['baffle east'] core.universes[10, 5] = univs['baffle west'] -core.universes[10, 6] = univs['Assembly (3.1\%) instr'] -core.universes[10, 7] = univs['Assembly (2.4\%) CR D'] -core.universes[10, 8] = univs['Assembly (3.1\%) 16BA'] -core.universes[10, 9] = univs['Assembly (2.4\%) CR D'] -core.universes[10, 10] = univs['Assembly (3.1\%) 16BA'] -core.universes[10, 11] = univs['Assembly (2.4\%) CR D'] -core.universes[10, 12] = univs['Assembly (3.1\%) instr'] +core.universes[10, 6] = univs['Assembly (3.1%) instr'] +core.universes[10, 7] = univs['Assembly (2.4%) CR D'] +core.universes[10, 8] = univs['Assembly (3.1%) 16BA'] +core.universes[10, 9] = univs['Assembly (2.4%) CR D'] +core.universes[10, 10] = univs['Assembly (3.1%) 16BA'] +core.universes[10, 11] = univs['Assembly (2.4%) CR D'] +core.universes[10, 12] = univs['Assembly (3.1%) instr'] core.universes[10, 13] = univs['baffle east'] core.universes[11, 5] = univs['baffle southwest corner'] core.universes[11, 6] = univs['baffle southwest'] -core.universes[11, 7] = univs['Assembly (3.1\%) instr'] -core.universes[11, 8] = univs['Assembly (2.4\%) CR D'] -core.universes[11, 9] = univs['Assembly (3.1\%) 16BA'] -core.universes[11, 10] = univs['Assembly (2.4\%) CR D'] -core.universes[11, 11] = univs['Assembly (3.1\%) instr'] +core.universes[11, 7] = univs['Assembly (3.1%) instr'] +core.universes[11, 8] = univs['Assembly (2.4%) CR D'] +core.universes[11, 9] = univs['Assembly (3.1%) 16BA'] +core.universes[11, 10] = univs['Assembly (2.4%) CR D'] +core.universes[11, 11] = univs['Assembly (3.1%) instr'] core.universes[11, 12] = univs['baffle southeast'] core.universes[11, 13] = univs['baffle southeast corner'] core.universes[12, 6] = univs['baffle southwest corner'] core.universes[12, 7] = univs['baffle southwest'] -core.universes[12, 8] = univs['Assembly (3.1\%) instr'] -core.universes[12, 9] = univs['Assembly (2.4\%) CR D'] -core.universes[12, 10] = univs['Assembly (3.1\%) instr'] +core.universes[12, 8] = univs['Assembly (3.1%) instr'] +core.universes[12, 9] = univs['Assembly (2.4%) CR D'] +core.universes[12, 10] = univs['Assembly (3.1%) instr'] core.universes[12, 11] = univs['baffle southeast'] core.universes[12, 12] = univs['baffle southeast corner'] @@ -204,5 +204,4 @@ root_univ.add_cell(cell) #### CONSTRUCT GEOMETRY -geometry = openmc.Geometry() -geometry.root_universe = root_univ +geometry = openmc.Geometry(root_univ) \ No newline at end of file diff --git a/smr/smr/materials.py b/smr/smr/materials.py index f92fd08..de2e321 100644 --- a/smr/smr/materials.py +++ b/smr/smr/materials.py @@ -122,7 +122,7 @@ 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'] = 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') @@ -167,7 +167,7 @@ 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') +mats['H2O'].add_s_alpha_beta(name='c_H_in_H2O') #### Borosilicate Glass @@ -211,7 +211,7 @@ mats['BSG'].add_nuclide('B11', aB11_B, 'ao') # Create 1.6% enriched UO2 fuel material a_U234, a_U235, a_U238, a_U, a_O = get_fuel_aos(0.0161006) -mats['UO2 1.6'] = openmc.Material(name='1.6\% Enr. UO2 Fuel') +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') @@ -219,7 +219,7 @@ mats['UO2 1.6'].add_element('U', a_U, 'ao', enrichment=1.61006) # Create 2.4% enriched UO2 fuel material a_U234, a_U235, a_U238, a_U, a_O = get_fuel_aos(0.0239993) -mats['UO2 2.4'] = openmc.Material(name='2.4\% Enr. UO2 Fuel') +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') @@ -227,7 +227,7 @@ mats['UO2 2.4'].add_element('U', a_U, 'ao', enrichment=2.39993) # Create 3.1% enriched UO2 fuel material a_U234, a_U235, a_U238, a_U, a_O = get_fuel_aos(0.0310221) -mats['UO2 3.1'] = openmc.Material(name='3.1\% Enr. UO2 Fuel') +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') @@ -236,5 +236,4 @@ mats['UO2 3.1'].add_element('U', a_U, 'ao', enrichment=3.10221) # Construct a collection of Materials to export to XML -materials = openmc.Materials() -materials.add_materials(mats.values()) \ No newline at end of file +materials = openmc.Materials(mats.values()) \ No newline at end of file diff --git a/smr/smr/pins.py b/smr/smr/pins.py index cae6379..e533747 100644 --- a/smr/smr/pins.py +++ b/smr/smr/pins.py @@ -33,9 +33,7 @@ def make_pin(name, surfaces, materials, grid=None): # 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] + cell = openmc.Cell(name=cell_name, fill=materials[0], region=-surfaces[0]) universe.add_cell(cell) # Create cells between two ZCylinders @@ -48,19 +46,16 @@ def make_pin(name, surfaces, materials, grid=None): # Create cell for exterior of outermost ZCylinder cell_name = name + ' (last)' - cell = openmc.Cell(name=cell_name) - cell.fill = materials[-1] - cell.region = +surfaces[-1] + cell = openmc.Cell(name=cell_name, fill=materials[-1], region=+surfaces[-1]) universe.add_cell(cell) # Add spacer grid cells if specified if grid: grid_name = 'rod grid box {}'.format(grid) - cell.region = openmc.Intersection(cell.region, surfs[grid_name]) + cell.region &= surfs[grid_name] cell_name = name + ' (grid)' - cell = openmc.Cell(name=cell_name) - cell.region = openmc.Complement(surfs[grid_name]) + cell = openmc.Cell(name=cell_name, region=~surfs[grid_name]) if grid == 'top/bottom': cell.fill = mats['In'] @@ -96,24 +91,20 @@ def make_stack(name, surfaces, universes): # Create cell for interior of innermost ZCylinder cell_name = name + ' (0)' - cell = openmc.Cell(name=cell_name) - cell.fill = universes[0] - cell.region = -surfaces[0] + cell = openmc.Cell(name=cell_name, fill=universes[0], region=-surfaces[0]) universe.add_cell(cell) # Create cells between two ZCylinders for i, (univ, surf) in enumerate(zip(universes[1:-1], surfaces[:-1])): cell_name = name + ' ({})'.format(i+1) - cell = openmc.Cell(name=cell_name) - cell.fill = univ - cell.region = +surf & -surfaces[i+1] + cell = openmc.Cell(name=cell_name, fill=univ, + 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.fill = universes[-1] - cell.region = +surfaces[-1] + cell = openmc.Cell(name=cell_name, fill=universes[-1], + region=+surfaces[-1]) universe.add_cell(cell) return universe @@ -321,7 +312,7 @@ univs['CR bare'] = make_pin( # Stack all axial pieces of control rod tubes together for each bank -banks = ['A','B','C','D','SA','SB','SC','SD','SE'] +banks = ['A', 'B', 'C', 'D', 'SA', 'SB', 'SC', 'SD', 'SE'] for b in banks: @@ -663,8 +654,8 @@ univs['pin plenum grid (top/bottom)'] = make_pin( #### 1.6% ENRICHED FUEL PIN CELL -univs['Fuel (1.6\%)'] = make_pin( - 'Fuel (1.6\%)', +univs['Fuel (1.6%)'] = make_pin( + 'Fuel (1.6%)', surfaces=[surfs['pellet OR'], surfs['clad IR'], surfs['clad OR']], @@ -673,8 +664,8 @@ univs['Fuel (1.6\%)'] = make_pin( mats['Zr'], mats['H2O']]) -univs['Fuel (1.6\%) grid (top/bottom)'] = make_pin( - 'Fuel (1.6\%) grid (top/bottom)', +univs['Fuel (1.6%) grid (top/bottom)'] = make_pin( + 'Fuel (1.6%) grid (top/bottom)', surfaces=[surfs['pellet OR'], surfs['clad IR'], surfs['clad OR']], @@ -684,8 +675,8 @@ univs['Fuel (1.6\%) grid (top/bottom)'] = make_pin( mats['H2O']], grid='(top/bottom)') -univs['Fuel (1.6\%) grid (intermediate)'] = make_pin( - 'Fuel (1.6\%) grid (intermediate)', +univs['Fuel (1.6%) grid (intermediate)'] = make_pin( + 'Fuel (1.6%) grid (intermediate)', surfaces=[surfs['pellet OR'], surfs['clad IR'], surfs['clad OR']], @@ -697,21 +688,21 @@ univs['Fuel (1.6\%) grid (intermediate)'] = make_pin( # Stack all axial pieces of 1.6% enriched fuel pin cell -univs['Fuel (1.6\%) stack'] = make_stack( - 'Fuel (1.6\%) stack', +univs['Fuel (1.6%) stack'] = make_stack( + 'Fuel (1.6%) stack', surfaces=stack_surfs, universes=[univs['water pin'], univs['SS pin'], univs['SS pin'], univs['end plug'], - univs['Fuel (1.6\%)'], - univs['Fuel (1.6\%) grid (top/bottom)'], - univs['Fuel (1.6\%)'], - univs['Fuel (1.6\%)'], - univs['Fuel (1.6\%) grid (intermediate)'], - univs['Fuel (1.6\%)'], - univs['Fuel (1.6\%) grid (intermediate)'], - univs['Fuel (1.6\%)'], + univs['Fuel (1.6%)'], + univs['Fuel (1.6%) grid (top/bottom)'], + univs['Fuel (1.6%)'], + univs['Fuel (1.6%)'], + univs['Fuel (1.6%) grid (intermediate)'], + univs['Fuel (1.6%)'], + univs['Fuel (1.6%) grid (intermediate)'], + univs['Fuel (1.6%)'], univs['pin plenum'], univs['pin plenum grid (top/bottom)'], univs['pin plenum'], @@ -723,8 +714,8 @@ univs['Fuel (1.6\%) stack'] = make_stack( #### 2.4% ENRICHED FUEL PIN CELL -univs['Fuel (2.4\%)'] = make_pin( - 'Fuel (2.4\%)', +univs['Fuel (2.4%)'] = make_pin( + 'Fuel (2.4%)', surfaces=[surfs['pellet OR'], surfs['clad IR'], surfs['clad OR']], @@ -733,8 +724,8 @@ univs['Fuel (2.4\%)'] = make_pin( mats['Zr'], mats['H2O']]) -univs['Fuel (2.4\%) grid (top/bottom)'] = make_pin( - 'Fuel (2.4\%) grid (top/bottom)', +univs['Fuel (2.4%) grid (top/bottom)'] = make_pin( + 'Fuel (2.4%) grid (top/bottom)', surfaces=[surfs['pellet OR'], surfs['clad IR'], surfs['clad OR']], @@ -744,8 +735,8 @@ univs['Fuel (2.4\%) grid (top/bottom)'] = make_pin( mats['H2O']], grid='(top/bottom)') -univs['Fuel (2.4\%) grid (intermediate)'] = make_pin( - 'Fuel (2.4\%) grid (intermediate)', +univs['Fuel (2.4%) grid (intermediate)'] = make_pin( + 'Fuel (2.4%) grid (intermediate)', surfaces=[surfs['pellet OR'], surfs['clad IR'], surfs['clad OR']], @@ -757,21 +748,21 @@ univs['Fuel (2.4\%) grid (intermediate)'] = make_pin( # Stack all axial pieces of 2.4% enriched fuel pin cell -univs['Fuel (2.4\%) stack'] = make_stack( - 'Fuel (2.4\%) stack', +univs['Fuel (2.4%) stack'] = make_stack( + 'Fuel (2.4%) stack', surfaces=stack_surfs, universes=[univs['water pin'], univs['SS pin'], univs['SS pin'], univs['end plug'], - univs['Fuel (2.4\%)'], - univs['Fuel (2.4\%) grid (top/bottom)'], - univs['Fuel (2.4\%)'], - univs['Fuel (2.4\%)'], - univs['Fuel (2.4\%) grid (intermediate)'], - univs['Fuel (2.4\%)'], - univs['Fuel (2.4\%) grid (intermediate)'], - univs['Fuel (2.4\%)'], + univs['Fuel (2.4%)'], + univs['Fuel (2.4%) grid (top/bottom)'], + univs['Fuel (2.4%)'], + univs['Fuel (2.4%)'], + univs['Fuel (2.4%) grid (intermediate)'], + univs['Fuel (2.4%)'], + univs['Fuel (2.4%) grid (intermediate)'], + univs['Fuel (2.4%)'], univs['pin plenum'], univs['pin plenum grid (top/bottom)'], univs['pin plenum'], @@ -783,8 +774,8 @@ univs['Fuel (2.4\%) stack'] = make_stack( #### 3.1% ENRICHED FUEL PIN CELL -univs['Fuel (3.1\%)'] = make_pin( - 'Fuel (3.1\%)', +univs['Fuel (3.1%)'] = make_pin( + 'Fuel (3.1%)', surfaces=[surfs['pellet OR'], surfs['clad IR'], surfs['clad OR']], @@ -793,8 +784,8 @@ univs['Fuel (3.1\%)'] = make_pin( mats['Zr'], mats['H2O']]) -univs['Fuel (3.1\%) grid (top/bottom)'] = make_pin( - 'Fuel (3.1\%) grid (top/bottom)', +univs['Fuel (3.1%) grid (top/bottom)'] = make_pin( + 'Fuel (3.1%) grid (top/bottom)', surfaces=[surfs['pellet OR'], surfs['clad IR'], surfs['clad OR']], @@ -804,8 +795,8 @@ univs['Fuel (3.1\%) grid (top/bottom)'] = make_pin( mats['H2O']], grid='(top/bottom)') -univs['Fuel (3.1\%) grid (intermediate)'] = make_pin( - 'Fuel (3.1\%) grid (intermediate)', +univs['Fuel (3.1%) grid (intermediate)'] = make_pin( + 'Fuel (3.1%) grid (intermediate)', surfaces=[surfs['pellet OR'], surfs['clad IR'], surfs['clad OR']], @@ -817,21 +808,21 @@ univs['Fuel (3.1\%) grid (intermediate)'] = make_pin( # Stack all axial pieces of 3.1% enriched fuel pin cell -univs['Fuel (3.1\%) stack'] = make_stack( - 'Fuel (3.1\%) stack', +univs['Fuel (3.1%) stack'] = make_stack( + 'Fuel (3.1%) stack', surfaces=stack_surfs, universes=[univs['water pin'], univs['SS pin'], univs['SS pin'], univs['end plug'], - univs['Fuel (3.1\%)'], - univs['Fuel (3.1\%) grid (top/bottom)'], - univs['Fuel (3.1\%)'], - univs['Fuel (3.1\%)'], - univs['Fuel (3.1\%) grid (intermediate)'], - univs['Fuel (3.1\%)'], - univs['Fuel (3.1\%) grid (intermediate)'], - univs['Fuel (3.1\%)'], + univs['Fuel (3.1%)'], + univs['Fuel (3.1%) grid (top/bottom)'], + univs['Fuel (3.1%)'], + univs['Fuel (3.1%)'], + univs['Fuel (3.1%) grid (intermediate)'], + univs['Fuel (3.1%)'], + univs['Fuel (3.1%) grid (intermediate)'], + univs['Fuel (3.1%)'], univs['pin plenum'], univs['pin plenum grid (top/bottom)'], univs['pin plenum'], diff --git a/smr/smr/plots.py b/smr/smr/plots.py index 657fcd6..27e85e0 100644 --- a/smr/smr/plots.py +++ b/smr/smr/plots.py @@ -2,7 +2,7 @@ import openmc -from .surfaces import lowest_extent, highest_extent, lattice_pitch +from .surfaces import lowest_extent, highest_extent, lattice_pitch, rpv_OR from .materials import mats @@ -39,7 +39,7 @@ plot = openmc.Plot(name='axial slice') plot.basis = 'xz' plot.color = 'mat' plot.origin = [0., 0., (highest_extent-lowest_extent)/2.] -plot.width = [(highest_extent-lowest_extent)/2.] * 2 +plot.width = [rpv_OR*2., (highest_extent-lowest_extent)] plot.filename = 'axial_xz_slice' plot.col_spec = col_spec plot.background = [255, 255, 255] diff --git a/smr/smr/surfaces.py b/smr/smr/surfaces.py index 5b03065..c023941 100644 --- a/smr/smr/surfaces.py +++ b/smr/smr/surfaces.py @@ -4,7 +4,7 @@ The geometric parameters defining the core model are tabulated here. """ import copy -import math +from math import tan, pi import openmc @@ -21,15 +21,15 @@ import openmc # RPV: Reactor Pressure Vessel # pin cell parameters -pellet_OR = 0.39218 -clad_IR = 0.40005 -clad_OR = 0.45720 +pellet_OR = 0.405765 +clad_IR = 0.41402 +clad_OR = 0.47498 rod_grid_side_tb = 1.24416 rod_grid_side_i = 1.21962 -guide_tube_IR = 0.56134 -guide_tube_OR = 0.60198 -guide_tube_dash_IR = 0.50419 -guide_tube_dash_OR = 0.54610 +guide_tube_IR = 0.5715 +guide_tube_OR = 0.61214 +guide_tube_dash_IR = 0.54019 +guide_tube_dash_OR = 0.61214 control_poison_OR = 0.43310 control_rod_IR = 0.43688 control_rod_OR = 0.48387 @@ -41,8 +41,8 @@ burn_abs_r5 = 0.43688 burn_abs_r6 = 0.48387 burn_abs_r7 = 0.56134 burn_abs_r8 = 0.60198 -instr_tube_IR = 0.43688 -instr_tube_OR = 0.48387 +instr_tube_IR = 0.5715 +instr_tube_OR = 0.61214 plenum_spring_OR = 0.06459 # grid spacer parameters @@ -99,10 +99,10 @@ bank_bot = 405.713 bank_step = 228. bank_top = 766.348 -neutron_shield_NWbot_SEtop = math.tan(math.pi/3) -neutron_shield_NWtop_SEbot = math.tan(math.pi/6) -neutron_shield_NEbot_SWtop = math.tan(-math.pi/3) -neutron_shield_NEtop_SWbot = math.tan(-math.pi/6) +neutron_shield_NWbot_SEtop = tan(pi/3) +neutron_shield_NWtop_SEbot = tan(pi/6) +neutron_shield_NEbot_SWtop = tan(-pi/3) +neutron_shield_NEtop_SWbot = tan(-pi/6) surfs = {}