diff --git a/README.md b/README.md index 293e425..7d03638 100644 --- a/README.md +++ b/README.md @@ -12,39 +12,18 @@ modeled in 2D with reflective boundary conditions along the axial dimension. Model Descriptions ------------------ -**fuel-pin** -A single fuel pin with reflective boundary conditions (*i.e.*, an infinitely -repeating array of fuel pins). The default configuration is the BEAVRS fuel pin -with fresh 1.6% enriched UO2 fuel, but the script can be toggled to 2.4% or -3.1% enriched fuel. - -**assembly** -A single fuel assembly with reflective boundary conditions (*i.e.*, an infinitely -repeating lattice of fuel assemblies). The default configuration is the BEAVRS -assembly with fresh 1.6% enriched UO2 fuel with 24 water-filled control rod -guide tubes and a central air-filled instrument tube. However, the script can -be toggled to use any of the 20+ fuel assemblies in the BEAVRS model. - -**2x2-periodic** -A 2x2 fuel assembly colorset with periodic boundary conditions (*i.e.*, an -infinitely repeating lattice of the 2x2 assembly colorset). The default -configuration includes the BEAVRS assembly with fresh 1.6% enriched UO2 fuel -with 24 water-filled control rod guide tubes and a central air-filled -instrument tube, along with a 3.1% enriched fuel assembly with 20 burnable -poisons, four control rod guide tubes and a central instrument tube. However, -the script may be toggled to use any pair of the 20+ fuel assemblies in the -BEAVRS model. - -**2x2-reflector** -A 2x2 fuel assembly colorset surrounded by a water reflector. Reflective -boundary conditions are used on the top and left boundaries (adjacent to the -assemblies) and vacuum boundary conditions are used on the bottom and right -boundaries (adjacent to the reflector). The default configuration includes -the BEAVRS assembly with fresh 1.6% enriched UO2 fuel with 24 water-filled -control rod guide tubes and a central air-filled instrument tube, along with a -3.1% enriched fuel assembly with 20 burnable poisons, four control rod guide -tubes and a central instrument tube. However, the script may be toggled to use -any pair of the 20+ fuel assemblies in the BEAVRS model. +
+
fuel-pin
+
A single fuel pin with reflective boundary conditions (i.e., an infinitely repeating array of fuel pins). The default configuration is the BEAVRS fuel pin with fresh 1.6% enriched UO2 fuel, but the script can be toggled to 2.4% or 3.1% enriched fuel.
+
assembly
+
A single fuel assembly with reflective boundary conditions (i.e., an infinitely repeating lattice of fuel assemblies). The default configuration is the BEAVRS assembly with fresh 1.6% enriched UO2 fuel with 24 water-filled control rod guide tubes and a central air-filled instrument tube. However, the script can be toggled to use any of the 20+ fuel assemblies in the BEAVRS model.
+
2x2-periodic
+
A 2x2 fuel assembly colorset with periodic boundary conditions (i.e., an infinitely repeating lattice of the 2x2 assembly colorset). The default configuration includes the BEAVRS assembly with fresh 1.6% enriched UO2 fuel with 24 water-filled control rod guide tubes and a central air-filled instrument tube, along with a 3.1% enriched fuel assembly with 20 burnable poisons, four control rod guide tubes and a central instrument tube. However, the script may be toggled to use any pair of the 20+ fuel assemblies in the BEAVRS model.
+
2x2-reflector
+
A 2x2 fuel assembly colorset surrounded by a water reflector. Reflective boundary conditions are used on the top and left boundaries (adjacent to the assemblies) and vacuum boundary conditions are used on the bottom and right boundaries (adjacent to the reflector). The default configuration includes the BEAVRS assembly with fresh 1.6% enriched UO2 fuel with 24 water-filled control rod guide tubes and a central air-filled instrument tube, along with a 3.1% enriched fuel assembly with 20 burnable poisons, four control rod guide tubes and a central instrument tube. However, the script may be toggled to use any pair of the 20+ fuel assemblies in the BEAVRS model.
+
smr
+
A 3D Small Modular Reactor (SMR) model that roughly mimics the design of the NuScale reactor. The reactor core has 37 fuel assemblies that alternate between 3.1% enriched and 2.4% enriched UO2 fuel. The center fuel assembly has 1.6% enriched UO2 fuel. Where possible, we have attempted to use the same parameters for the fuel assemblies and fuel rods as those specified in the NuScale design submittal to the Nuclear Regulatory Commission (NRC), for example: 264 fuel rods per assembly, 24 guide tubes per assembly, 1 instrument tube per assembly, five spacer grids per assembly, fuel rod pitch of 0.496 in, and an active fuel length of 200 cm. Many of the details of the actual NuScale fuel assembly design are redacted from the design submittal because they are export controlled/proprietary information. The purpose of our model is not to be an exact replica of the NuScale model; rather, it is intended to capture most of the physical complexities that are involved in modeling a full reactor core and to provide a suitable model for carrying out full core performance tests on the testbed architectures.
+
Dependencies ------------ diff --git a/smr/fresh/geometry.xml b/smr/fresh/geometry.xml index 741f602..c8b65dd 100644 --- a/smr/fresh/geometry.xml +++ b/smr/fresh/geometry.xml @@ -1,780 +1,751 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1.25984 1.25984 - 17 17 - -10.70864 -10.70864 - -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 -10097 10097 10097 10097 10097 10009 10097 10097 10009 10097 10097 10009 10097 10097 10097 10097 10097 -10097 10097 10097 10009 10097 10097 10097 10097 10097 10097 10097 10097 10097 10009 10097 10097 10097 -10097 10097 10097 10097 10097 10097 10097 10097 10097 10097 10097 10097 10097 10097 10097 10097 10097 -10097 10097 10009 10097 10097 10009 10097 10097 10009 10097 10097 10009 10097 10097 10009 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 10097 10097 -10097 10097 10009 10097 10097 10009 10097 10097 10016 10097 10097 10009 10097 10097 10009 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 10097 10097 -10097 10097 10009 10097 10097 10009 10097 10097 10009 10097 10097 10009 10097 10097 10009 10097 10097 -10097 10097 10097 10097 10097 10097 10097 10097 10097 10097 10097 10097 10097 10097 10097 10097 10097 -10097 10097 10097 10009 10097 10097 10097 10097 10097 10097 10097 10097 10097 10009 10097 10097 10097 -10097 10097 10097 10097 10097 10009 10097 10097 10009 10097 10097 10009 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 10097 10097 10097 10097 10097 - - - 1.25984 1.25984 - 17 17 - -10.70864 -10.70864 - -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 -10101 10101 10101 10101 10101 10050 10101 10101 10050 10101 10101 10050 10101 10101 10101 10101 10101 -10101 10101 10101 10050 10101 10101 10101 10101 10101 10101 10101 10101 10101 10050 10101 10101 10101 -10101 10101 10101 10101 10101 10101 10101 10101 10101 10101 10101 10101 10101 10101 10101 10101 10101 -10101 10101 10050 10101 10101 10050 10101 10101 10050 10101 10101 10050 10101 10101 10050 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 10101 10101 -10101 10101 10050 10101 10101 10050 10101 10101 10010 10101 10101 10050 10101 10101 10050 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 10101 10101 -10101 10101 10050 10101 10101 10050 10101 10101 10050 10101 10101 10050 10101 10101 10050 10101 10101 -10101 10101 10101 10101 10101 10101 10101 10101 10101 10101 10101 10101 10101 10101 10101 10101 10101 -10101 10101 10101 10050 10101 10101 10101 10101 10101 10101 10101 10101 10101 10050 10101 10101 10101 -10101 10101 10101 10101 10101 10050 10101 10101 10050 10101 10101 10050 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 10101 10101 10101 10101 10101 - - - 1.25984 1.25984 - 17 17 - -10.70864 -10.70864 - -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 -10105 10105 10105 10105 10105 10089 10105 10105 10089 10105 10105 10089 10105 10105 10105 10105 10105 -10105 10105 10105 10089 10105 10105 10105 10105 10105 10105 10105 10105 10105 10089 10105 10105 10105 -10105 10105 10105 10105 10105 10105 10105 10105 10105 10105 10105 10105 10105 10105 10105 10105 10105 -10105 10105 10089 10105 10105 10009 10105 10105 10009 10105 10105 10009 10105 10105 10089 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 10105 10105 -10105 10105 10089 10105 10105 10009 10105 10105 10010 10105 10105 10009 10105 10105 10089 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 10105 10105 -10105 10105 10089 10105 10105 10009 10105 10105 10009 10105 10105 10009 10105 10105 10089 10105 10105 -10105 10105 10105 10105 10105 10105 10105 10105 10105 10105 10105 10105 10105 10105 10105 10105 10105 -10105 10105 10105 10089 10105 10105 10105 10105 10105 10105 10105 10105 10105 10089 10105 10105 10105 -10105 10105 10105 10105 10105 10089 10105 10105 10089 10105 10105 10089 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 10105 10105 10105 10105 10105 - - - 1.25984 1.25984 - 17 17 - -10.70864 -10.70864 - -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 -10105 10105 10105 10105 10105 10009 10105 10105 10009 10105 10105 10009 10105 10105 10105 10105 10105 -10105 10105 10105 10009 10105 10105 10105 10105 10105 10105 10105 10105 10105 10009 10105 10105 10105 -10105 10105 10105 10105 10105 10105 10105 10105 10105 10105 10105 10105 10105 10105 10105 10105 10105 -10105 10105 10009 10105 10105 10009 10105 10105 10009 10105 10105 10009 10105 10105 10009 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 10105 10105 -10105 10105 10009 10105 10105 10009 10105 10105 10016 10105 10105 10009 10105 10105 10009 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 10105 10105 -10105 10105 10009 10105 10105 10009 10105 10105 10009 10105 10105 10009 10105 10105 10009 10105 10105 -10105 10105 10105 10105 10105 10105 10105 10105 10105 10105 10105 10105 10105 10105 10105 10105 10105 -10105 10105 10105 10009 10105 10105 10105 10105 10105 10105 10105 10105 10105 10009 10105 10105 10105 -10105 10105 10105 10105 10105 10009 10105 10105 10009 10105 10105 10009 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 10105 10105 10105 10105 10105 - - - 10.75182 10.75182 - 2 2 - -10.75182 -10.75182 - -10206 10206 -10000 10000 - - - 10.75182 10.75182 - 2 2 - -10.75182 -10.75182 - -10000 10000 -10209 10209 - - - 10.75182 10.75182 - 2 2 - -10.75182 -10.75182 - -10000 10212 -10000 10212 - - - 10.75182 10.75182 - 2 2 - -10.75182 -10.75182 - -10215 10000 -10215 10000 - - - 10.75182 10.75182 - 2 2 - -10.75182 -10.75182 - -10218 10206 -10215 10000 - - - 10.75182 10.75182 - 2 2 - -10.75182 -10.75182 - -10206 10221 -10000 10212 - - - 10.75182 10.75182 - 2 2 - -10.75182 -10.75182 - -10215 10000 -10224 10209 - - - 10.75182 10.75182 - 2 2 - -10.75182 -10.75182 - -10000 10212 -10209 10227 - - - 10.75182 10.75182 - 2 2 - -10.75182 -10.75182 - -10230 10000 -10000 10000 - - - 10.75182 10.75182 - 2 2 - -10.75182 -10.75182 - -10000 10233 -10000 10000 - - - 10.75182 10.75182 - 2 2 - -10.75182 -10.75182 - -10000 10000 -10000 10236 - - - 10.75182 10.75182 - 2 2 - -10.75182 -10.75182 - -10000 10000 -10239 10000 - - - 21.50364 21.50364 - 19 19 - -204.28458 -204.28458 - -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 -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 -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 10238 10211 10211 10211 10241 10000 10000 10000 10000 10000 10000 10000 -10000 10000 10000 10000 10000 10000 10238 10229 10183 10145 10183 10226 10241 10000 10000 10000 10000 10000 10000 -10000 10000 10000 10000 10000 10238 10229 10183 10145 10165 10145 10183 10226 10241 10000 10000 10000 10000 10000 -10000 10000 10000 10000 10000 10214 10183 10145 10165 10145 10165 10145 10183 10217 10000 10000 10000 10000 10000 -10000 10000 10000 10000 10000 10214 10145 10165 10145 10125 10145 10165 10145 10217 10000 10000 10000 10000 10000 -10000 10000 10000 10000 10000 10214 10183 10145 10165 10145 10165 10145 10183 10217 10000 10000 10000 10000 10000 -10000 10000 10000 10000 10000 10235 10223 10183 10145 10165 10145 10183 10220 10232 10000 10000 10000 10000 10000 -10000 10000 10000 10000 10000 10000 10235 10223 10183 10145 10183 10220 10232 10000 10000 10000 10000 10000 10000 -10000 10000 10000 10000 10000 10000 10000 10235 10208 10208 10208 10232 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 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 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 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1.25984 1.25984 + 17 17 + -10.70864 -10.70864 + +98 98 98 98 98 98 98 98 98 98 98 98 98 98 98 98 98 +98 98 98 98 98 98 98 98 98 98 98 98 98 98 98 98 98 +98 98 98 98 98 10 98 98 10 98 98 10 98 98 98 98 98 +98 98 98 10 98 98 98 98 98 98 98 98 98 10 98 98 98 +98 98 98 98 98 98 98 98 98 98 98 98 98 98 98 98 98 +98 98 10 98 98 10 98 98 10 98 98 10 98 98 10 98 98 +98 98 98 98 98 98 98 98 98 98 98 98 98 98 98 98 98 +98 98 98 98 98 98 98 98 98 98 98 98 98 98 98 98 98 +98 98 10 98 98 10 98 98 17 98 98 10 98 98 10 98 98 +98 98 98 98 98 98 98 98 98 98 98 98 98 98 98 98 98 +98 98 98 98 98 98 98 98 98 98 98 98 98 98 98 98 98 +98 98 10 98 98 10 98 98 10 98 98 10 98 98 10 98 98 +98 98 98 98 98 98 98 98 98 98 98 98 98 98 98 98 98 +98 98 98 10 98 98 98 98 98 98 98 98 98 10 98 98 98 +98 98 98 98 98 10 98 98 10 98 98 10 98 98 98 98 98 +98 98 98 98 98 98 98 98 98 98 98 98 98 98 98 98 98 +98 98 98 98 98 98 98 98 98 98 98 98 98 98 98 98 98 + + + 1.25984 1.25984 + 17 17 + -10.70864 -10.70864 + +102 102 102 102 102 102 102 102 102 102 102 102 102 102 102 102 102 +102 102 102 102 102 102 102 102 102 102 102 102 102 102 102 102 102 +102 102 102 102 102 51 102 102 51 102 102 51 102 102 102 102 102 +102 102 102 51 102 102 102 102 102 102 102 102 102 51 102 102 102 +102 102 102 102 102 102 102 102 102 102 102 102 102 102 102 102 102 +102 102 51 102 102 51 102 102 51 102 102 51 102 102 51 102 102 +102 102 102 102 102 102 102 102 102 102 102 102 102 102 102 102 102 +102 102 102 102 102 102 102 102 102 102 102 102 102 102 102 102 102 +102 102 51 102 102 51 102 102 11 102 102 51 102 102 51 102 102 +102 102 102 102 102 102 102 102 102 102 102 102 102 102 102 102 102 +102 102 102 102 102 102 102 102 102 102 102 102 102 102 102 102 102 +102 102 51 102 102 51 102 102 51 102 102 51 102 102 51 102 102 +102 102 102 102 102 102 102 102 102 102 102 102 102 102 102 102 102 +102 102 102 51 102 102 102 102 102 102 102 102 102 51 102 102 102 +102 102 102 102 102 51 102 102 51 102 102 51 102 102 102 102 102 +102 102 102 102 102 102 102 102 102 102 102 102 102 102 102 102 102 +102 102 102 102 102 102 102 102 102 102 102 102 102 102 102 102 102 + + + 1.25984 1.25984 + 17 17 + -10.70864 -10.70864 + +106 106 106 106 106 106 106 106 106 106 106 106 106 106 106 106 106 +106 106 106 106 106 106 106 106 106 106 106 106 106 106 106 106 106 +106 106 106 106 106 90 106 106 90 106 106 90 106 106 106 106 106 +106 106 106 90 106 106 106 106 106 106 106 106 106 90 106 106 106 +106 106 106 106 106 106 106 106 106 106 106 106 106 106 106 106 106 +106 106 90 106 106 10 106 106 10 106 106 10 106 106 90 106 106 +106 106 106 106 106 106 106 106 106 106 106 106 106 106 106 106 106 +106 106 106 106 106 106 106 106 106 106 106 106 106 106 106 106 106 +106 106 90 106 106 10 106 106 11 106 106 10 106 106 90 106 106 +106 106 106 106 106 106 106 106 106 106 106 106 106 106 106 106 106 +106 106 106 106 106 106 106 106 106 106 106 106 106 106 106 106 106 +106 106 90 106 106 10 106 106 10 106 106 10 106 106 90 106 106 +106 106 106 106 106 106 106 106 106 106 106 106 106 106 106 106 106 +106 106 106 90 106 106 106 106 106 106 106 106 106 90 106 106 106 +106 106 106 106 106 90 106 106 90 106 106 90 106 106 106 106 106 +106 106 106 106 106 106 106 106 106 106 106 106 106 106 106 106 106 +106 106 106 106 106 106 106 106 106 106 106 106 106 106 106 106 106 + + + 1.25984 1.25984 + 17 17 + -10.70864 -10.70864 + +106 106 106 106 106 106 106 106 106 106 106 106 106 106 106 106 106 +106 106 106 106 106 106 106 106 106 106 106 106 106 106 106 106 106 +106 106 106 106 106 10 106 106 10 106 106 10 106 106 106 106 106 +106 106 106 10 106 106 106 106 106 106 106 106 106 10 106 106 106 +106 106 106 106 106 106 106 106 106 106 106 106 106 106 106 106 106 +106 106 10 106 106 10 106 106 10 106 106 10 106 106 10 106 106 +106 106 106 106 106 106 106 106 106 106 106 106 106 106 106 106 106 +106 106 106 106 106 106 106 106 106 106 106 106 106 106 106 106 106 +106 106 10 106 106 10 106 106 17 106 106 10 106 106 10 106 106 +106 106 106 106 106 106 106 106 106 106 106 106 106 106 106 106 106 +106 106 106 106 106 106 106 106 106 106 106 106 106 106 106 106 106 +106 106 10 106 106 10 106 106 10 106 106 10 106 106 10 106 106 +106 106 106 106 106 106 106 106 106 106 106 106 106 106 106 106 106 +106 106 106 10 106 106 106 106 106 106 106 106 106 10 106 106 106 +106 106 106 106 106 10 106 106 10 106 106 10 106 106 106 106 106 +106 106 106 106 106 106 106 106 106 106 106 106 106 106 106 106 106 +106 106 106 106 106 106 106 106 106 106 106 106 106 106 106 106 106 + + + 21.503639999999997 21.503639999999997 + 9 9 + -96.76637999999998 -96.76637999999998 + +235 235 216 217 218 219 220 235 235 +235 208 207 184 146 184 213 221 235 +212 207 184 146 166 146 184 213 222 +210 184 146 166 146 166 146 184 223 +209 146 166 146 126 146 166 146 224 +211 184 146 166 146 166 146 184 225 +226 214 184 146 166 146 184 215 227 +235 228 214 184 146 184 215 229 235 +235 235 230 231 232 233 234 235 235 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/smr/fresh/materials.xml b/smr/fresh/materials.xml index b71c36a..ec69120 100644 --- a/smr/fresh/materials.xml +++ b/smr/fresh/materials.xml @@ -1,211 +1,214 @@ - - 300 - - - - - - 300 - - - - - - - - - - - - 300 - - - - - - - - - - - - - - - - - - - - - 300 - - - - - - - - - - - - - - - - - - - - - 300 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 300 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 300 - - - - - - - - - - - - - - - - 300 - - - - - - - - - - - 300 - - - - - - - - - - - - 300 - - - - - - - - - 300 - - - - - - - - - 300 - - - - - - - + + 300 + + + + + + 300 + + + + + + + + + + + + 300 + + + + + + + + + + + + + + + + + + + + + 300 + + + + + + + + + + + + + + + + + + + + + 300 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 300 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 300 + + + + + + + + + + + + + + + + 300 + + + + + + + + + + + 300 + + + + + + + + + + + + 300 + + + + + + + + + + 300 + + + + + + + + + + 300 + + + + + + + + diff --git a/smr/fresh/plots.xml b/smr/fresh/plots.xml index 77111f3..13029de 100644 --- a/smr/fresh/plots.xml +++ b/smr/fresh/plots.xml @@ -1,31 +1,79 @@ - - - 0.0 0.0 136.282 - 268.7955 268.7955 - 1000 1000 - 255 255 255 - - - - 0.0 0.0 136.282 - 270.0 272.564 - 1000 1000 - 255 255 255 - - - - 0.0 0.0 102.021 - 32.25546 32.25546 - 2000 2000 - 255 255 255 - - - - 0.0 0.0 90.0 - 32.25546 32.25546 - 2000 2000 - 255 255 255 - + + + 0.0 0.0 141.61599999999999 + 268.79549999999995 268.79549999999995 + 1000 1000 + 255 255 255 + + + + + + + + + + + + + + + + 0.0 0.0 141.61599999999999 + 270.0 283.23199999999997 + 1000 1000 + 255 255 255 + + + + + + + + + + + + + + + + 0.0 0.0 95.0 + 32.25546 32.25546 + 2000 2000 + 255 255 255 + + + + + + + + + + + + + + + + 0.0 0.0 90.0 + 32.25546 32.25546 + 2000 2000 + 255 255 255 + + + + + + + + + + + + + diff --git a/smr/fresh/settings.xml b/smr/fresh/settings.xml index 381da94..8bb9632 100644 --- a/smr/fresh/settings.xml +++ b/smr/fresh/settings.xml @@ -1,15 +1,15 @@ - eigenvalue - 10000 - 10 - 5 - - - -75.26274000000001 -75.26274000000001 36.007 75.26274000000001 75.26274000000001 236.007 - - - - false - + eigenvalue + 10000 + 200 + 100 + + + -75.26274 -75.26274 36.007 75.26274 75.26274 236.0066 + + + + false + diff --git a/smr/fresh/tallies.xml b/smr/fresh/tallies.xml index 41445c3..eb1c415 100644 --- a/smr/fresh/tallies.xml +++ b/smr/fresh/tallies.xml @@ -1,75 +1,75 @@ - 10683 + 684 - 10687 + 688 - 10692 + 693 - 10718 + 719 - 10722 + 723 - 10727 + 728 - 10753 + 754 - 10757 + 758 - 10762 + 763 - + 1 - O16 O17 U234 U235 U238 + O16 O17 U234 U235 U238 U236 (n,p) (n,a) (n,gamma) fission (n,2n) (n,3n) (n,4n) - + 2 - O16 O17 U234 U235 U238 + O16 O17 U234 U235 U238 U236 (n,p) (n,a) (n,gamma) fission (n,2n) (n,3n) (n,4n) - + 3 - O16 O17 U234 U235 U238 + O16 O17 U234 U235 U238 U236 (n,p) (n,a) (n,gamma) fission (n,2n) (n,3n) (n,4n) - + 4 - O16 O17 U234 U235 U238 + O16 O17 U234 U235 U238 U236 (n,p) (n,a) (n,gamma) fission (n,2n) (n,3n) (n,4n) - + 5 - O16 O17 U234 U235 U238 + O16 O17 U234 U235 U238 U236 (n,p) (n,a) (n,gamma) fission (n,2n) (n,3n) (n,4n) - + 6 - O16 O17 U234 U235 U238 + O16 O17 U234 U235 U238 U236 (n,p) (n,a) (n,gamma) fission (n,2n) (n,3n) (n,4n) - + 7 - O16 O17 U234 U235 U238 + O16 O17 U234 U235 U238 U236 (n,p) (n,a) (n,gamma) fission (n,2n) (n,3n) (n,4n) - + 8 - O16 O17 U234 U235 U238 + O16 O17 U234 U235 U238 U236 (n,p) (n,a) (n,gamma) fission (n,2n) (n,3n) (n,4n) - + 9 - O16 O17 U234 U235 U238 + O16 O17 U234 U235 U238 U236 (n,p) (n,a) (n,gamma) fission (n,2n) (n,3n) (n,4n) diff --git a/smr/smr/baffle.py b/smr/smr/baffle.py deleted file mode 100644 index 793dc2f..0000000 --- a/smr/smr/baffle.py +++ /dev/null @@ -1,391 +0,0 @@ -"""Instantiate components to use for the stainless steel baffle.""" - -import openmc - -from .materials import mats -from .surfaces import surfs, lattice_pitch -from .assemblies import univs - - -#### SOUTH BAFFLE - -univs['baffle south dummy'] = openmc.Universe(name='baffle south dummy') - -cell = openmc.Cell(name='baffle dummy SS') -cell.fill = mats['SS'] -cell.region = +surfs['baffle south'] -univs['baffle south dummy'].add_cell(cell) - -cell = openmc.Cell(name='baffle south water') -cell.fill = mats['H2O'] -cell.region = -surfs['baffle south'] -univs['baffle south dummy'].add_cell(cell) - -lattice = openmc.RectLattice(name='baffle south') -lattice.lower_left = [-lattice_pitch/2., -lattice_pitch/2.] -lattice.pitch = [lattice_pitch/2., lattice_pitch/2.] -lattice.universes = [ - [univs['baffle south dummy'], univs['baffle south dummy']], - [univs['water pin'], univs['water pin']]] - -univs['baffle south'] = openmc.Universe(name='baffle south') - -cell = openmc.Cell(name='baffle south') -cell.fill = lattice -univs['baffle south'].add_cell(cell) - - -#### NORTH BAFFLE - -univs['baffle north dummy'] = openmc.Universe(name='baffle north dummy') - -cell = openmc.Cell(name='baffle dummy SS') -cell.fill = mats['H2O'] -cell.region = +surfs['baffle north'] -univs['baffle north dummy'].add_cell(cell) - -cell = openmc.Cell(name='baffle north water') -cell.fill = mats['SS'] -cell.region = -surfs['baffle north'] -univs['baffle north dummy'].add_cell(cell) - -lattice = openmc.RectLattice(name='baffle north') -lattice.lower_left = [-lattice_pitch/2., -lattice_pitch/2.] -lattice.pitch = [lattice_pitch/2., lattice_pitch/2.] -lattice.universes = [ - [univs['water pin'], univs['water pin']], - [univs['baffle north dummy'], univs['baffle north dummy']]] - -univs['baffle north'] = openmc.Universe(name='baffle north') - -cell = openmc.Cell(name='baffle north') -cell.fill = lattice -univs['baffle north'].add_cell(cell) - - -#### WEST BAFFLE - -univs['baffle west dummy'] = openmc.Universe(name='baffle west dummy') - -cell = openmc.Cell(name='baffle dummy SS') -cell.fill = mats['SS'] -cell.region = +surfs['baffle west'] -univs['baffle west dummy'].add_cell(cell) - -cell = openmc.Cell(name='baffle west water') -cell.fill = mats['H2O'] -cell.region = -surfs['baffle west'] -univs['baffle west dummy'].add_cell(cell) - -lattice = openmc.RectLattice(name='baffle west') -lattice.lower_left = [-lattice_pitch/2., -lattice_pitch/2.] -lattice.pitch = [lattice_pitch/2., lattice_pitch/2.] -lattice.universes = [ - [univs['water pin'], univs['baffle west dummy']], - [univs['water pin'], univs['baffle west dummy']]] - -univs['baffle west'] = openmc.Universe(name='baffle west') - -cell = openmc.Cell(name='baffle west') -cell.fill = lattice -univs['baffle west'].add_cell(cell) - - -#### EAST BAFFLE - -univs['baffle east dummy'] = openmc.Universe(name='baffle east dummy') - -cell = openmc.Cell(name='baffle dummy SS') -cell.fill = mats['H2O'] -cell.region = +surfs['baffle east'] -univs['baffle east dummy'].add_cell(cell) - -cell = openmc.Cell(name='baffle east water') -cell.fill = mats['SS'] -cell.region = -surfs['baffle east'] -univs['baffle east dummy'].add_cell(cell) - -lattice = openmc.RectLattice(name='baffle east') -lattice.lower_left = [-lattice_pitch/2., -lattice_pitch/2.] -lattice.pitch = [lattice_pitch/2., lattice_pitch/2.] -lattice.universes = [ - [univs['baffle east dummy'], univs['water pin']], - [univs['baffle east dummy'], univs['water pin']]] - -univs['baffle east'] = openmc.Universe(name='baffle east') - -cell = openmc.Cell(name='baffle east') -cell.fill = lattice -univs['baffle east'].add_cell(cell) - - -#### SOUTHEAST BAFFLE - -univs['baffle southeast dummy'] = openmc.Universe(name='baffle southeast dummy') - -cell = openmc.Cell(name='baffle southeast dummy 1') -cell.fill = mats['H2O'] -cell.region = +surfs['baffle east'] & -surfs['baffle south'] -univs['baffle southeast dummy'].add_cell(cell) - -cell = openmc.Cell(name='baffle southeast dummy 2') -cell.fill = mats['SS'] -cell.region = +surfs['baffle east'] & +surfs['baffle south'] -univs['baffle southeast dummy'].add_cell(cell) - -cell = openmc.Cell(name='baffle southeast dummy 3') -cell.fill = mats['SS'] -cell.region = -surfs['baffle east'] -univs['baffle southeast dummy'].add_cell(cell) - -lattice = openmc.RectLattice(name='baffle southeast') -lattice.lower_left = [-lattice_pitch/2., -lattice_pitch/2.] -lattice.pitch = [lattice_pitch/2., lattice_pitch/2.] -lattice.universes = [ - [univs['baffle southeast dummy'], univs['baffle south dummy']], - [univs['baffle east dummy'], univs['water pin']]] - -univs['baffle southeast'] = openmc.Universe(name='baffle southeast') - -cell = openmc.Cell(name='baffle southeast') -cell.fill = lattice -univs['baffle southeast'].add_cell(cell) - - -#### SOUTHWEST BAFFLE - -univs['baffle southwest dummy'] = openmc.Universe(name='baffle southwest dummy') - -cell = openmc.Cell(name='baffle southwest dummy 1') -cell.fill = mats['H2O'] -cell.region = -surfs['baffle south'] & -surfs['baffle west'] -univs['baffle southwest dummy'].add_cell(cell) - -cell = openmc.Cell(name='baffle southwest dummy 2') -cell.fill = mats['SS'] -cell.region = +surfs['baffle south'] & -surfs['baffle west'] -univs['baffle southwest dummy'].add_cell(cell) - -cell = openmc.Cell(name='baffle southwest dummy 3') -cell.fill = mats['SS'] -cell.region = +surfs['baffle west'] -univs['baffle southwest dummy'].add_cell(cell) - -lattice = openmc.RectLattice(name='baffle southwest') -lattice.lower_left = [-lattice_pitch/2., -lattice_pitch/2.] -lattice.pitch = [lattice_pitch/2., lattice_pitch/2.] -lattice.universes = [ - [univs['baffle south dummy'], univs['baffle southwest dummy']], - [univs['water pin'], univs['baffle west dummy']]] - -univs['baffle southwest'] = openmc.Universe(name='baffle southwest') - -cell = openmc.Cell(name='baffle southwest') -cell.fill = lattice -univs['baffle southwest'].add_cell(cell) - - -#### NORTHEAST BAFFLE - -univs['baffle northeast dummy'] = openmc.Universe(name='baffle northeast dummy') - -cell = openmc.Cell(name='baffle northeast dummy 1') -cell.fill = mats['H2O'] -cell.region = +surfs['baffle north'] & +surfs['baffle east'] -univs['baffle northeast dummy'].add_cell(cell) - -cell = openmc.Cell(name='baffle northeast dummy 2') -cell.fill = mats['SS'] -cell.region = -surfs['baffle north'] & +surfs['baffle east'] -univs['baffle northeast dummy'].add_cell(cell) - -cell = openmc.Cell(name='baffle northeast dummy 3') -cell.fill = mats['SS'] -cell.region = -surfs['baffle east'] -univs['baffle northeast dummy'].add_cell(cell) - -lattice = openmc.RectLattice(name='baffle northeast') -lattice.lower_left = [-lattice_pitch/2., -lattice_pitch/2.] -lattice.pitch = [lattice_pitch/2., lattice_pitch/2.] -lattice.universes = [ - [univs['baffle east dummy'], univs['water pin']], - [univs['baffle northeast dummy'], univs['baffle north dummy']]] - -univs['baffle northeast'] = openmc.Universe(name='baffle northeast') - -cell = openmc.Cell(name='baffle northeast') -cell.fill = lattice -univs['baffle northeast'].add_cell(cell) - - -#### NORTHWEST BAFFLE - -univs['baffle northwest dummy'] = openmc.Universe(name='baffle northwest dummy') - -cell = openmc.Cell(name='baffle northwest dummy 1') -cell.fill = mats['H2O'] -cell.region = +surfs['baffle north'] & -surfs['baffle west'] -univs['baffle northwest dummy'].add_cell(cell) - -cell = openmc.Cell(name='baffle northwest dummy 2') -cell.fill = mats['SS'] -cell.region = -surfs['baffle north'] & -surfs['baffle west'] -univs['baffle northwest dummy'].add_cell(cell) - -cell = openmc.Cell(name='baffle northwest dummy 3') -cell.fill = mats['SS'] -cell.region = +surfs['baffle west'] -univs['baffle northwest dummy'].add_cell(cell) - -lattice = openmc.RectLattice(name='baffle northwest') -lattice.lower_left = [-lattice_pitch/2., -lattice_pitch/2.] -lattice.pitch = [lattice_pitch/2., lattice_pitch/2.] -lattice.universes = [ - [univs['water pin'], univs['baffle west dummy']], - [univs['baffle north dummy'], univs['baffle northwest dummy']]] - -univs['baffle northwest'] = openmc.Universe(name='baffle northwest') - -cell = openmc.Cell(name='baffle northwest') -cell.fill = lattice -univs['baffle northwest'].add_cell(cell) - - -#### SOUTHEAST CORNER BAFFLE - -univs['baffle southeast corner dummy'] = \ - openmc.Universe(name='baffle southeast corner dummy') - -cell = openmc.Cell(name='baffle southeast corner dummy 1') -cell.fill = mats['H2O'] -cell.region = -surfs['baffle east'] & -surfs['baffle south'] -univs['baffle southeast corner dummy'].add_cell(cell) - -cell = openmc.Cell(name='baffle southeast corner dummy 2') -cell.fill = mats['H2O'] -cell.region = +surfs['baffle east'] -univs['baffle southeast corner dummy'].add_cell(cell) - -cell = openmc.Cell(name='baffle southeast corner dummy 3') -cell.fill = mats['SS'] -cell.region = +surfs['baffle south'] & -surfs['baffle east'] -univs['baffle southeast corner dummy'].add_cell(cell) - -lattice = openmc.RectLattice(name='baffle southeast corner') -lattice.lower_left = [-lattice_pitch/2., -lattice_pitch/2.] -lattice.pitch = [lattice_pitch/2., lattice_pitch/2.] -lattice.universes = [ - [univs['baffle southeast corner dummy'], univs['water pin']], - [univs['water pin'], univs['water pin']]] - -univs['baffle southeast corner'] = \ - openmc.Universe(name='baffle southeast corner') - -cell = openmc.Cell(name='baffle southeast corner') -cell.fill = lattice -univs['baffle southeast corner'].add_cell(cell) - - -#### SOUTHWEST CORNER BAFFLE - -univs['baffle southwest corner dummy'] = \ - openmc.Universe(name='baffle southwest corner dummy') - -cell = openmc.Cell(name='baffle southwest corner dummy 1') -cell.fill = mats['H2O'] -cell.region = +surfs['baffle west'] & -surfs['baffle south'] -univs['baffle southwest corner dummy'].add_cell(cell) - -cell = openmc.Cell(name='baffle southwest corner dummy 2') -cell.fill = mats['H2O'] -cell.region = -surfs['baffle west'] -univs['baffle southwest corner dummy'].add_cell(cell) - -cell = openmc.Cell(name='baffle southwest corner dummy 3') -cell.fill = mats['SS'] -cell.region = +surfs['baffle south'] & +surfs['baffle west'] -univs['baffle southwest corner dummy'].add_cell(cell) - -lattice = openmc.RectLattice(name='baffle southwest corner') -lattice.lower_left = [-lattice_pitch/2., -lattice_pitch/2.] -lattice.pitch = [lattice_pitch/2., lattice_pitch/2.] -lattice.universes = [ - [univs['water pin'], univs['baffle southwest corner dummy']], - [univs['water pin'], univs['water pin']]] - -univs['baffle southwest corner'] = \ - openmc.Universe(name='baffle southwest corner') - -cell = openmc.Cell(name='baffle southwest corner') -cell.fill = lattice -univs['baffle southwest corner'].add_cell(cell) - - -#### NORTHWEST CORNER BAFFLE - -univs['baffle northwest corner dummy'] = \ - openmc.Universe(name='baffle northwest corner dummy') - -cell = openmc.Cell(name='baffle northwest corner dummy 1') -cell.fill = mats['H2O'] -cell.region = +surfs['baffle west'] & +surfs['baffle north'] -univs['baffle northwest corner dummy'].add_cell(cell) - -cell = openmc.Cell(name='baffle northwest corner dummy 2') -cell.fill = mats['H2O'] -cell.region = -surfs['baffle west'] -univs['baffle northwest corner dummy'].add_cell(cell) - -cell = openmc.Cell(name='baffle northwest corner dummy 3') -cell.fill = mats['SS'] -cell.region = -surfs['baffle north'] & +surfs['baffle west'] -univs['baffle northwest corner dummy'].add_cell(cell) - -lattice = openmc.RectLattice(name='baffle northwest corner') -lattice.lower_left = [-lattice_pitch/2., -lattice_pitch/2.] -lattice.pitch = [lattice_pitch/2., lattice_pitch/2.] -lattice.universes = [ - [univs['water pin'], univs['water pin']], - [univs['water pin'], univs['baffle northwest corner dummy']]] - -univs['baffle northwest corner'] = \ - openmc.Universe(name='baffle northwest corner') - -cell = openmc.Cell(name='baffle northwest corner') -cell.fill = lattice -univs['baffle northwest corner'].add_cell(cell) - - -#### NORTHEAST CORNER BAFFLE - -univs['baffle northeast corner dummy'] = \ - openmc.Universe(name='baffle northeast corner dummy') - -cell = openmc.Cell(name='baffle northeast corner dummy 1') -cell.fill = mats['H2O'] -cell.region = -surfs['baffle east'] & +surfs['baffle north'] -univs['baffle northeast corner dummy'].add_cell(cell) - -cell = openmc.Cell(name='baffle northeast corner dummy 2') -cell.fill = mats['H2O'] -cell.region = +surfs['baffle east'] -univs['baffle northeast corner dummy'].add_cell(cell) - -cell = openmc.Cell(name='baffle northeast corner dummy 3') -cell.fill = mats['SS'] -cell.region = -surfs['baffle north'] & -surfs['baffle east'] -univs['baffle northeast corner dummy'].add_cell(cell) - -lattice = openmc.RectLattice(name='baffle northeast corner') -lattice.lower_left = [-lattice_pitch/2., -lattice_pitch/2.] -lattice.pitch = [lattice_pitch/2., lattice_pitch/2.] -lattice.universes = [ - [univs['water pin'], univs['water pin']], - [univs['baffle northeast corner dummy'], univs['water pin']]] - -univs['baffle northeast corner'] = \ - openmc.Universe(name='baffle northeast corner') - -cell = openmc.Cell(name='baffle northeast corner') -cell.fill = lattice -univs['baffle northeast corner'].add_cell(cell) diff --git a/smr/smr/core.py b/smr/smr/core.py index bf5c336..2de0c6c 100644 --- a/smr/smr/core.py +++ b/smr/smr/core.py @@ -6,96 +6,96 @@ import openmc from .materials import mats from .surfaces import surfs, lattice_pitch -from .baffle import univs +from .reflector import univs #### CONSTRUCT MAIN CORE LATTICE core = openmc.RectLattice(name='Main core') -core.lower_left = [-19.*lattice_pitch/2., -19.*lattice_pitch/2.] +core.lower_left = [-9*lattice_pitch/2, -9*lattice_pitch/2] core.pitch = [lattice_pitch, lattice_pitch] -universes = np.empty((19,19), dtype=openmc.Universe) -universes[:,:] = univs['water pin'] +universes = np.tile(univs['heavy reflector'], (9,9)) + +universes[0, 2] = univs['heavy reflector 0,2'] +universes[0, 3] = univs['heavy reflector 0,3'] +universes[0, 4] = univs['heavy reflector 0,4'] +universes[0, 5] = univs['heavy reflector 0,5'] +universes[0, 6] = univs['heavy reflector 0,6'] + +universes[1, 1] = univs['heavy reflector 1,1'] +universes[1, 2] = univs['heavy reflector NW'] +universes[1, 3] = univs['Assembly (3.1%) instr'] +universes[1, 4] = univs['Assembly (2.4%) CR D'] +universes[1, 5] = univs['Assembly (3.1%) instr'] +universes[1, 6] = univs['heavy reflector NE'] +universes[1, 7] = univs['heavy reflector 1,7'] + +universes[2, 0] = univs['heavy reflector 2,0'] +universes[2, 1] = univs['heavy reflector NW'] +universes[2, 2] = univs['Assembly (3.1%) instr'] +universes[2, 3] = univs['Assembly (2.4%) CR D'] +universes[2, 4] = univs['Assembly (3.1%) 16BA'] +universes[2, 5] = univs['Assembly (2.4%) CR D'] +universes[2, 6] = univs['Assembly (3.1%) instr'] +universes[2, 7] = univs['heavy reflector NE'] +universes[2, 8] = univs['heavy reflector 2,8'] + +universes[3, 0] = univs['heavy reflector 3,0'] +universes[3, 1] = univs['Assembly (3.1%) instr'] +universes[3, 2] = univs['Assembly (2.4%) CR D'] +universes[3, 3] = univs['Assembly (3.1%) 16BA'] +universes[3, 4] = univs['Assembly (2.4%) CR D'] +universes[3, 5] = univs['Assembly (3.1%) 16BA'] +universes[3, 6] = univs['Assembly (2.4%) CR D'] +universes[3, 7] = univs['Assembly (3.1%) instr'] +universes[3, 8] = univs['heavy reflector 3,8'] + +universes[4, 0] = univs['heavy reflector 4,0'] +universes[4, 1] = univs['Assembly (2.4%) CR D'] +universes[4, 2] = univs['Assembly (3.1%) 16BA'] +universes[4, 3] = univs['Assembly (2.4%) CR D'] +universes[4, 4] = univs['Assembly (1.6%) instr'] +universes[4, 5] = univs['Assembly (2.4%) CR D'] +universes[4, 6] = univs['Assembly (3.1%) 16BA'] +universes[4, 7] = univs['Assembly (2.4%) CR D'] +universes[4, 8] = univs['heavy reflector 4,8'] + +universes[5, 0] = univs['heavy reflector 5,0'] +universes[5, 1] = univs['Assembly (3.1%) instr'] +universes[5, 2] = univs['Assembly (2.4%) CR D'] +universes[5, 3] = univs['Assembly (3.1%) 16BA'] +universes[5, 4] = univs['Assembly (2.4%) CR D'] +universes[5, 5] = univs['Assembly (3.1%) 16BA'] +universes[5, 6] = univs['Assembly (2.4%) CR D'] +universes[5, 7] = univs['Assembly (3.1%) instr'] +universes[5, 8] = univs['heavy reflector 5,8'] + +universes[6, 0] = univs['heavy reflector 6,0'] +universes[6, 1] = univs['heavy reflector SW'] +universes[6, 2] = univs['Assembly (3.1%) instr'] +universes[6, 3] = univs['Assembly (2.4%) CR D'] +universes[6, 4] = univs['Assembly (3.1%) 16BA'] +universes[6, 5] = univs['Assembly (2.4%) CR D'] +universes[6, 6] = univs['Assembly (3.1%) instr'] +universes[6, 7] = univs['heavy reflector SE'] +universes[6, 8] = univs['heavy reflector 6,8'] + +universes[7, 1] = univs['heavy reflector 7,1'] +universes[7, 2] = univs['heavy reflector SW'] +universes[7, 3] = univs['Assembly (3.1%) instr'] +universes[7, 4] = univs['Assembly (2.4%) CR D'] +universes[7, 5] = univs['Assembly (3.1%) instr'] +universes[7, 6] = univs['heavy reflector SE'] +universes[7, 7] = univs['heavy reflector 7,7'] + +universes[8, 2] = univs['heavy reflector 8,2'] +universes[8, 3] = univs['heavy reflector 8,3'] +universes[8, 4] = univs['heavy reflector 8,4'] +universes[8, 5] = univs['heavy reflector 8,5'] +universes[8, 6] = univs['heavy reflector 8,6'] + core.universes = universes -core.universes[5, 7] = univs['baffle northwest corner'] -core.universes[5, 8] = univs['baffle north'] -core.universes[5, 9] = univs['baffle north'] -core.universes[5, 10] = univs['baffle north'] -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, 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, 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, 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, 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, 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, 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, 11] = univs['baffle southeast'] -core.universes[12, 12] = univs['baffle southeast corner'] - -core.universes[13, 7] = univs['baffle southwest corner'] -core.universes[13, 8] = univs['baffle south'] -core.universes[13, 9] = univs['baffle south'] -core.universes[13, 10] = univs['baffle south'] -core.universes[13, 11] = univs['baffle southeast corner'] - #### CONSTRUCT ROOT UNIVERSE AND CELLS @@ -204,4 +204,4 @@ root_univ.add_cell(cell) #### CONSTRUCT GEOMETRY -geometry = openmc.Geometry(root_univ) \ No newline at end of file +geometry = openmc.Geometry(root_univ) diff --git a/smr/smr/pins.py b/smr/smr/pins.py index 864604c..07b7fa3 100644 --- a/smr/smr/pins.py +++ b/smr/smr/pins.py @@ -127,10 +127,10 @@ univs['GT empty'] = make_pin( [mats['H2O'], mats['Zr'], mats['H2O']]) univs['GT empty grid (bottom)'] = make_pin( 'GT empty grid (bottom)', [surfs['GT IR'], surfs['GT OR']], - [mats['H2O'], mats['Zr'], mats['H2O']], grid='(bottom)') + [mats['H2O'], mats['Zr'], mats['H2O']], grid='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)') + [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']]) @@ -141,11 +141,11 @@ univs['GTd empty'] = make_pin( univs['GTd empty grid (bottom)'] = make_pin( 'GT empty at dashpot grid (bottom)', [surfs['GT dashpot IR'], surfs['GT dashpot OR']], - [mats['H2O'], mats['Zr'], mats['H2O']], grid='(bottom)') + [mats['H2O'], mats['Zr'], mats['H2O']], grid='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)') + [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']]) @@ -166,9 +166,9 @@ stack_surfs = [ surfs['grid3top'], surfs['grid4bot'], surfs['grid4top'], + surfs['top active core'], surfs['grid5bot'], surfs['grid5top'], - surfs['top active core'], surfs['top pin plenum'], surfs['top FR'], surfs['bot upper nozzle'], @@ -192,7 +192,7 @@ univs['GT empty'] = make_stack( univs['GT empty grid (intermediate)'], univs['GT empty'], univs['GT empty'], - univs['GT empty grid (bottom)'], + univs['GT empty grid (intermediate)'], univs['GT empty'], univs['GT empty'], univs['GT empty'], @@ -216,7 +216,7 @@ univs['GT empty instr'] = make_stack( univs['GT empty grid (intermediate)'], univs['GT empty'], univs['GT empty'], - univs['GT empty grid (bottom)'], + univs['GT empty grid (intermediate)'], univs['GT empty'], univs['GT empty'], univs['GT empty'], @@ -233,12 +233,12 @@ univs['IT grid (bottom)'] = make_pin( 'IT grid (bottom)', [surfs['IT IR'], surfs['IT OR'], surfs['GT IR'], surfs['GT OR']], [mats['Air'], mats['Zr'], mats['H2O'], mats['Zr'], mats['H2O']], - grid='(bottom)') + grid='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)') + grid='intermediate') univs['IT nozzle'] = make_pin( 'IT nozzle', @@ -267,7 +267,7 @@ univs['IT stack'] = make_stack( univs['IT grid (intermediate)'], univs['IT'], univs['IT'], - univs['IT grid (bottom)'], + univs['IT grid (intermediate)'], univs['IT'], univs['IT'], univs['IT'], @@ -283,12 +283,12 @@ univs['CR'] = make_pin( univs['CR grid (bottom)'] = make_pin( 'CR grid (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='(bottom)') + grid='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)') + 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']]) @@ -301,12 +301,12 @@ univs['CR blank grid (bottom)'] = make_pin( 'CR blank grid (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='(bottom)') + grid='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)') + 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']]) @@ -455,7 +455,7 @@ univs['BA grid (bottom)'] = make_pin( mats['H2O'], mats['Zr'], mats['H2O']], - grid='(bottom)') + grid='bottom') univs['BA grid (intermediate)'] = make_pin( 'BA grid (intermediate)', @@ -476,7 +476,7 @@ univs['BA grid (intermediate)'] = make_pin( mats['H2O'], mats['Zr'], mats['H2O']], - grid='(intermediate)') + grid='intermediate') univs['BA dashpot'] = make_pin( 'BA dashpot', @@ -517,7 +517,7 @@ univs['BA dashpot grid (bottom)'] = make_pin( mats['H2O'], mats['Zr'], mats['H2O']], - grid='(bottom)') + grid='bottom') univs['BA dashpot grid (intermediate)'] = make_pin( 'BA dashpot grid (intermediate)', @@ -538,7 +538,7 @@ univs['BA dashpot grid (intermediate)'] = make_pin( mats['H2O'], mats['Zr'], mats['H2O']], - grid='(intermediate)') + grid='intermediate') univs['BA blank SS'] = make_pin( 'BA blank SS', @@ -571,9 +571,9 @@ stack_surfs_BA = [ surfs['grid3top'], surfs['grid4bot'], surfs['grid4top'], + surfs['top active core'], surfs['grid5bot'], surfs['grid5top'], - surfs['top active core'], surfs['top pin plenum'], surfs['top FR'], surfs['bot upper nozzle'], @@ -593,9 +593,9 @@ stack_surfs = [ surfs['grid3top'], surfs['grid4bot'], surfs['grid4top'], + surfs['top active core'], surfs['grid5bot'], surfs['grid5top'], - surfs['top active core'], surfs['top pin plenum'], surfs['top FR'], surfs['bot upper nozzle'], @@ -655,8 +655,8 @@ univs['pin plenum'] = make_pin( mats['Zr'], mats['H2O']]) -univs['pin plenum grid (bottom)'] = make_pin( - 'pin plenum grid (bottom)', +univs['pin plenum grid (intermediate)'] = make_pin( + 'pin plenum grid (intermediate)', surfaces=[surfs['plenum spring OR'], surfs['clad IR'], surfs['clad OR']], @@ -664,7 +664,7 @@ univs['pin plenum grid (bottom)'] = make_pin( mats['He'], mats['Zr'], mats['H2O']], - grid='(bottom)') + grid='intermediate') #### 1.6% ENRICHED FUEL PIN CELL @@ -688,7 +688,7 @@ univs['Fuel (1.6%) grid (bottom)'] = make_pin( mats['He'], mats['Zr'], mats['H2O']], - grid='(bottom)') + grid='bottom') univs['Fuel (1.6%) grid (intermediate)'] = make_pin( 'Fuel (1.6%) grid (intermediate)', @@ -699,7 +699,7 @@ univs['Fuel (1.6%) grid (intermediate)'] = make_pin( mats['He'], mats['Zr'], mats['H2O']], - grid='(intermediate)') + grid='intermediate') # Stack all axial pieces of 1.6% enriched fuel pin cell @@ -721,7 +721,7 @@ univs['Fuel (1.6%) stack'] = make_stack( univs['Fuel (1.6%) grid (intermediate)'], univs['Fuel (1.6%)'], univs['pin plenum'], - univs['pin plenum grid (bottom)'], + univs['pin plenum grid (intermediate)'], univs['pin plenum'], univs['end plug'], univs['water pin'], @@ -750,7 +750,7 @@ univs['Fuel (2.4%) grid (bottom)'] = make_pin( mats['He'], mats['Zr'], mats['H2O']], - grid='(bottom)') + grid='bottom') univs['Fuel (2.4%) grid (intermediate)'] = make_pin( 'Fuel (2.4%) grid (intermediate)', @@ -761,7 +761,7 @@ univs['Fuel (2.4%) grid (intermediate)'] = make_pin( mats['He'], mats['Zr'], mats['H2O']], - grid='(intermediate)') + grid='intermediate') # Stack all axial pieces of 2.4% enriched fuel pin cell @@ -783,7 +783,7 @@ univs['Fuel (2.4%) stack'] = make_stack( univs['Fuel (2.4%) grid (intermediate)'], univs['Fuel (2.4%)'], univs['pin plenum'], - univs['pin plenum grid (bottom)'], + univs['pin plenum grid (intermediate)'], univs['pin plenum'], univs['end plug'], univs['water pin'], @@ -812,7 +812,7 @@ univs['Fuel (3.1%) grid (bottom)'] = make_pin( mats['He'], mats['Zr'], mats['H2O']], - grid='(bottom)') + grid='bottom') univs['Fuel (3.1%) grid (intermediate)'] = make_pin( 'Fuel (3.1%) grid (intermediate)', @@ -823,7 +823,7 @@ univs['Fuel (3.1%) grid (intermediate)'] = make_pin( mats['He'], mats['Zr'], mats['H2O']], - grid='(intermediate)') + grid='intermediate') # Stack all axial pieces of 3.1% enriched fuel pin cell @@ -845,9 +845,9 @@ univs['Fuel (3.1%) stack'] = make_stack( univs['Fuel (3.1%) grid (intermediate)'], univs['Fuel (3.1%)'], univs['pin plenum'], - univs['pin plenum grid (bottom)'], + univs['pin plenum grid (intermediate)'], univs['pin plenum'], univs['end plug'], univs['water pin'], univs['SS pin'], - univs['water pin']]) \ No newline at end of file + univs['water pin']]) diff --git a/smr/smr/plots.py b/smr/smr/plots.py index ce317c1..00e93b4 100644 --- a/smr/smr/plots.py +++ b/smr/smr/plots.py @@ -7,18 +7,18 @@ from .materials import mats # color specifications -col_spec = {mats['H2O'].id: [198, 226, 255], # light blue - mats['In'].id: [101, 101, 101], # dgray - mats['CS'].id: [ 0, 0, 0], # carbons black - mats['Zr'].id: [201, 201, 201], # gray - mats['SS'].id: [ 0, 0, 0], # black - mats['Air'].id: [255, 255, 255], # white - mats['He'].id: [255, 218, 185], # light orange - mats['BSG'].id: [ 0, 255, 0], # green - mats['AIC'].id: [255, 0, 0], # bright red - mats['UO2 1.6'].id: [142, 35, 35], # light red - mats['UO2 2.4'].id: [255, 215, 0], # gold - mats['UO2 3.1'].id: [ 0, 0, 128]} # dark blue +colors = {mats['H2O']: [198, 226, 255], # light blue + mats['In']: [101, 101, 101], # dgray + mats['CS']: [ 0, 0, 0], # carbons black + mats['Zr']: [201, 201, 201], # gray + mats['SS']: [ 0, 0, 0], # black + mats['Air']: [255, 255, 255], # white + mats['He']: [255, 218, 185], # light orange + mats['BSG']: [ 0, 255, 0], # green + mats['AIC']: [255, 0, 0], # bright red + mats['UO2 1.6']: [142, 35, 35], # light red + mats['UO2 2.4']: [255, 215, 0], # gold + mats['UO2 3.1']: [ 0, 0, 128]} # dark blue # Create a collection of plots @@ -30,7 +30,7 @@ plot.color_by = 'material' plot.origin = [0., 0., (highest_extent-lowest_extent)/2.] plot.width = [25*lattice_pitch/2, 25*lattice_pitch/2.] plot.filename = 'radial_xy_slice' -plot.col_spec = col_spec +plot.colors = colors plot.background = [255, 255, 255] plot.pixels = [1000, 1000] plots += [plot] @@ -41,7 +41,7 @@ plot.color_by = 'material' plot.origin = [0., 0., (highest_extent-lowest_extent)/2.] plot.width = [rpv_OR*2., (highest_extent-lowest_extent)] plot.filename = 'axial_xz_slice' -plot.col_spec = col_spec +plot.colors = colors plot.background = [255, 255, 255] plot.pixels = [1000, 1000] plots += [plot] @@ -49,10 +49,10 @@ plots += [plot] plot = openmc.Plot(name='assembly grid spacer') plot.basis = 'xy' plot.color_by = 'material' -plot.origin = [0., 0., 102.021] +plot.origin = [0., 0., 95.0] plot.width = [lattice_pitch*1.5, lattice_pitch*1.5] plot.filename = 'assm_grid_spacer' -plot.col_spec = col_spec +plot.colors = colors plot.background = [255, 255, 255] plot.pixels = [2000, 2000] plots += [plot] @@ -63,7 +63,7 @@ plot.color_by = 'material' plot.origin = [0., 0., 90.] plot.width = [lattice_pitch*1.5, lattice_pitch*1.5] plot.filename = 'assm_no_spacer' -plot.col_spec = col_spec +plot.colors = colors plot.background = [255, 255, 255] plot.pixels = [2000, 2000] plots += [plot] diff --git a/smr/smr/reflector.py b/smr/smr/reflector.py new file mode 100644 index 0000000..57ab0c0 --- /dev/null +++ b/smr/smr/reflector.py @@ -0,0 +1,311 @@ +"""Stainless steel heavy reflector. + +None of the public NuScale documents give information about the dimensions and +location of the water holes in the heavy neutron reflector. Thus, all the +dimensions of the water holes in the heavy reflectors were eyeballed from the +design certification application (ML17013A274), Figure 4.3-25. A screenshot was +used to determine the size and location of the water holes which were then +converted to actual dimensions by scaling according to the width of an assembly. + +""" + +import openmc + +from .materials import mats +from .surfaces import surfs, lattice_pitch +from .assemblies import univs + + +def make_reflector(name, parameters): + """Make an assembly-sized heavy neutron reflector block with cooling holes. + + Parameters + ---------- + name : str + Name of the universe to create + parameters : iterable of 3-tuples + Iterable containing tuple with the (x,y) coordinates of the center and + the radius of a Z-cylinder and the + + """ + water_holes = [] + for x, y, r in parameters: + zcyl = openmc.ZCylinder(x0=x, y0=y, R=r) + hole = openmc.Cell(fill=mats['H2O'], region=-zcyl) + water_holes.append(hole) + + ss_region = openmc.Intersection(~c.region for c in water_holes) + ss_cell = openmc.Cell(name='{} SS'.format(name), fill=mats['SS'], + region=ss_region) + + univs[name] = openmc.Universe(name=name) + univs[name].add_cells(water_holes) + univs[name].add_cell(ss_cell) + + +# Reflector at northwest corner (fuel assemblies to the right and below) + +width = 276 +p1 = 59 +p2 = 126 +p3 = 196 +p4 = 264 + +p5 = 105 + +p6 = 122 +p7 = 164 + +p8 = 138 +p9 = 222 + +p10 = 247 + +# There are 8 large water holes and all others appear to have the same, smaller +# diameter +d_small = 13 +d_large = 30 + +# All pixel widths are scaled according to the actual width of an assembly +# divided by the width of an assembly in pixels +scale = lattice_pitch/width + +# Physical positions +x1 = -lattice_pitch/2 + scale*(width - p4) +x2 = -lattice_pitch/2 + scale*(width - p3) +x3 = -lattice_pitch/2 + scale*(width - p2) +x4 = -lattice_pitch/2 + scale*(width - p1) +y1 = -lattice_pitch/2 + scale*p1 +y2 = -lattice_pitch/2 + scale*p2 +y3 = -lattice_pitch/2 + scale*p3 +y4 = -lattice_pitch/2 + scale*p4 + +x5 = -lattice_pitch/2 + scale*(width - p5) +y5 = -lattice_pitch/2 + scale*p5 +x6 = -lattice_pitch/2 + scale*(width - p7) +y6 = -lattice_pitch/2 + scale*p6 +x7 = -lattice_pitch/2 + scale*(width - p6) +y7 = -lattice_pitch/2 + scale*p7 +x8 = -lattice_pitch/2 + scale*(width - p9) +y8 = -lattice_pitch/2 + scale*p8 +x9 = -lattice_pitch/2 + scale*(width - p8) +y9 = -lattice_pitch/2 + scale*p9 + +y10 = -lattice_pitch/2 + scale*p10 + +# Radius of small/large water holes +r1 = scale*d_small/2 +r2 = scale*d_large/2 + +params = [ + (x1, y1, r1), (x2, y1, r1), (x3, y1, r1), (x4, y1, r2), + (x4, y2, r1), (x4, y3, r1), (x4, y4, r1), (x5, y5, r1), + (x6, y6, r1), (x7, y7, r1), (x8, y8, r1), (x9, y9, r1), + (x1, y10, r1) +] + +make_reflector('heavy reflector NW', params) + +# Reflector at (1, 1) + +params = [ + (x4, y1, r1), + (lattice_pitch/2 - scale*103, -lattice_pitch/2 + scale*156, r1), + (lattice_pitch/2 - scale*158, -lattice_pitch/2 + scale*103, r1) +] +make_reflector('heavy reflector 1,1', params) + +# Left reflector (4,0) + +left1 = 58 +left2 = 118 +left3 = 173 +up3 = 76 + +x1 = -lattice_pitch/2 + scale*(width - left1) +x2 = -lattice_pitch/2 + scale*(width - left2) +d_y = scale*67 +x3 = -lattice_pitch/2 + scale*(width - left3) +y3 = scale*up3 + +params = [ + (x1, 0, r1), (x1, d_y, r1), (x1, 2*d_y, r1), (x1, -d_y, r1), (x1, -2*d_y, r1), + (x2, d_y/2, r1), (x2, 3/2*d_y, r1), (x2, -d_y/2, r1), (x2, -3/2*d_y, r1), + (x3, y3, r1), (x3, -y3, r1) +] + +make_reflector('heavy reflector 4,0', params) + +# Reflector at (3,0) + +params = [] +for i in range(2, 7): + params.append((x1, i*d_y - lattice_pitch, r1)) +for i in (5, 7, 11): + params.append((x2, i*d_y/2 - lattice_pitch, r1)) + +left3 = 140 +left4 = 183 +up3 = 159 +up4 = 47 + +x3 = -lattice_pitch/2 + scale*(width - left3) +y3 = -lattice_pitch/2 + scale*up3 +x4 = -lattice_pitch/2 + scale*(width - left4) +y4 = -lattice_pitch/2 + scale*up4 +params += [(x3, y3, r1), (x4, y4, r1)] + +make_reflector('heavy reflector 3,0', params) + +# Reflector at (5,0) + +params = [(x, -y, r) for x, y, r in params] +make_reflector('heavy reflector 5,0', params) + +# Reflector at (2, 0) + +params = [(-lattice_pitch/2 + scale*(width - 78), + -lattice_pitch/2 + scale*98, r1)] +make_reflector('heavy reflector 2,0', params) + +################################################################################ +# Beyond this point, all universes are just copies of the ones previously +# created with a rotation applied + +# NE corner +cell = openmc.Cell(name='heavy reflector NE', fill=univs['heavy reflector NW']) +cell.rotation = (0, 0, -90) +univs['heavy reflector NE'] = openmc.Universe(name='heavy reflector NE') +univs['heavy reflector NE'].add_cell(cell) + +# SW corner +cell = openmc.Cell(name='heavy reflector SW', fill=univs['heavy reflector NW']) +cell.rotation = (0, 0, 90) +univs['heavy reflector SW'] = openmc.Universe(name='heavy reflector SW') +univs['heavy reflector SW'].add_cell(cell) + +# SE corner +cell = openmc.Cell(name='heavy reflector SE', fill=univs['heavy reflector NW']) +cell.rotation = (0, 0, 180) +univs['heavy reflector SE'] = openmc.Universe(name='heavy reflector SE') +univs['heavy reflector SE'].add_cell(cell) + +# Reflector at (0, 2) +name = 'heavy reflector 0,2' +cell = openmc.Cell(name=name, fill=univs['heavy reflector 2,0']) +cell.rotation = (0, 180, -90) +univs[name] = openmc.Universe(name=name, cells=[cell]) + +# Reflector at (0, 3) +name = 'heavy reflector 0,3' +cell = openmc.Cell(name=name, fill=univs['heavy reflector 5,0']) +cell.rotation = (0, 0, -90) +univs[name] = openmc.Universe(name=name, cells=[cell]) + +# Reflector at (0, 4) +name = 'heavy reflector 0,4' +cell = openmc.Cell(name=name, fill=univs['heavy reflector 4,0']) +cell.rotation = (0, 0, -90) +univs[name] = openmc.Universe(name=name, cells=[cell]) + +# Reflector at (0, 5) +name = 'heavy reflector 0,5' +cell = openmc.Cell(name=name, fill=univs['heavy reflector 3,0']) +cell.rotation = (0, 0, -90) +univs[name] = openmc.Universe(name=name, cells=[cell]) + +# Reflector at (0, 6) +name = 'heavy reflector 0,6' +cell = openmc.Cell(name=name, fill=univs['heavy reflector 2,0']) +cell.rotation = (0, 0, -90) +univs[name] = openmc.Universe(name=name, cells=[cell]) + +# Reflector at (1, 7) +name = 'heavy reflector 1,7' +cell = openmc.Cell(name=name, fill=univs['heavy reflector 1,1']) +cell.rotation = (0, 0, -90) +univs[name] = openmc.Universe(name=name, cells=[cell]) + +# Reflector at (2, 8) +name = 'heavy reflector 2,8' +cell = openmc.Cell(name=name, fill=univs['heavy reflector 2,0']) +cell.rotation = (0, 180, 0) +univs[name] = openmc.Universe(name=name, cells=[cell]) + +# Reflector at (3, 8) +name = 'heavy reflector 3,8' +cell = openmc.Cell(name=name, fill=univs['heavy reflector 3,0']) +cell.rotation = (0, 180, 0) +univs[name] = openmc.Universe(name=name, cells=[cell]) + +# Reflector at (4, 8) +name = 'heavy reflector 4,8' +cell = openmc.Cell(name=name, fill=univs['heavy reflector 4,0']) +cell.rotation = (0, 180, 0) +univs[name] = openmc.Universe(name=name, cells=[cell]) + +# Reflector at (5, 8) +name = 'heavy reflector 5,8' +cell = openmc.Cell(name=name, fill=univs['heavy reflector 3,0']) +cell.rotation = (0, 0, 180) +univs[name] = openmc.Universe(name=name, cells=[cell]) + +# Reflector at (6, 0) +name = 'heavy reflector 6,0' +cell = openmc.Cell(name=name, fill=univs['heavy reflector 2,0']) +cell.rotation = (180, 0, 0) +univs[name] = openmc.Universe(name=name, cells=[cell]) + +# Reflector at (6, 8) +name = 'heavy reflector 6,8' +cell = openmc.Cell(name=name, fill=univs['heavy reflector 2,0']) +cell.rotation = (0, 0, 180) +univs[name] = openmc.Universe(name=name, cells=[cell]) + +# Reflector at (7, 1) +name = 'heavy reflector 7,1' +cell = openmc.Cell(name=name, fill=univs['heavy reflector 1,1']) +cell.rotation = (180, 0, 0) +univs[name] = openmc.Universe(name=name, cells=[cell]) + +# Reflector at (7, 7) +name = 'heavy reflector 7,7' +cell = openmc.Cell(name=name, fill=univs['heavy reflector 1,1']) +cell.rotation = (0, 0, 180) +univs[name] = openmc.Universe(name=name, cells=[cell]) + +# Reflector at (8, 2) +name = 'heavy reflector 8,2' +cell = openmc.Cell(name=name, fill=univs['heavy reflector 2,0']) +cell.rotation = (0, 0, 90) +univs[name] = openmc.Universe(name=name, cells=[cell]) + +# Reflector at (8, 3) +name = 'heavy reflector 8,3' +cell = openmc.Cell(name=name, fill=univs['heavy reflector 3,0']) +cell.rotation = (0, 0, 90) +univs[name] = openmc.Universe(name=name, cells=[cell]) + +# Reflector at (8, 4) +name = 'heavy reflector 8,4' +cell = openmc.Cell(name=name, fill=univs['heavy reflector 4,0']) +cell.rotation = (0, 0, 90) +univs[name] = openmc.Universe(name=name, cells=[cell]) + +# Reflector at (8, 5) +name = 'heavy reflector 8,5' +cell = openmc.Cell(name=name, fill=univs['heavy reflector 5,0']) +cell.rotation = (0, 0, 90) +univs[name] = openmc.Universe(name=name, cells=[cell]) + +# Reflector at (8, 6) +name = 'heavy reflector 8,6' +cell = openmc.Cell(name=name, fill=univs['heavy reflector 2,0']) +cell.rotation = (0, 0, 180) +univs[name] = openmc.Universe(name=name, cells=[cell]) + +# Solid stainless steel universe + +all_ss = openmc.Cell(name='heavy reflector', fill=mats['SS']) +univs['heavy reflector'] = openmc.Universe( + name='heavy reflector', cells=[all_ss]) diff --git a/smr/smr/surfaces.py b/smr/smr/surfaces.py index d4bebf9..f4acef1 100644 --- a/smr/smr/surfaces.py +++ b/smr/smr/surfaces.py @@ -3,17 +3,23 @@ The geometric parameters defining the core model are tabulated here. The geometric specifications are loosely based upon NuScale's Small Modular Pressurized Water Reactor concept as detailed here in their -NRC design certification documentation: +NRC design certification (DC) documentation: https://www.nrc.gov/docs/ML1618/ML16187A017.pdf https://www.nrc.gov/docs/ML1700/ML17007A001.pdf + +NuScale DC application, chapter 1: https://www.nrc.gov/docs/ML1701/ML17013A264.pdf +NuScale DC application, chapter 4: https://www.nrc.gov/docs/ML1701/ML17013A274.pdf + """ import copy from math import tan, pi +import numpy as np import openmc +INCHES = 2.54 # Notation # GT: Guide Tube @@ -26,17 +32,24 @@ import openmc # FA: Fuel Assembly # RPV: Reactor Pressure Vessel +# fuel rod parameters +pellet_OR = 0.3195*INCHES/2 # ML17013A274, Table 4.1-2 +clad_IR = 0.326*INCHES/2 # ML17013A274, Table 4.1-2 +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 + # pin cell parameters -pellet_OR = 0.405765 -clad_IR = 0.41402 -clad_OR = 0.47498 -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 +guide_tube_IR = 0.450*INCHES/2 # ML17013A274, Table 4.1-2 +guide_tube_OR = 0.482*INCHES/2 # ML17013A274, Table 4.1-2 +guide_tube_dash_IR = 0.397*INCHES/2 # ML17013A274, Table 4.1-2 +guide_tube_dash_OR = guide_tube_OR +boron_carbide_OR = 0.333*INCHES/2 # ML17013A274, Table 4.1-3 +ag_in_cd_OR = 0.336*INCHES/2 # ML17013A274, Table 4.1-3 +control_rod_IR = 0.344*INCHES/2 # ML17013A274, Table 4.1-3 +control_rod_OR = 0.381*INCHES/2 # ML17013A274, Table 4.1-3 burn_abs_r1 = 0.21400 burn_abs_r2 = 0.23051 burn_abs_r3 = 0.24130 @@ -45,25 +58,28 @@ burn_abs_r5 = 0.43688 burn_abs_r6 = 0.48387 burn_abs_r7 = 0.56134 burn_abs_r8 = 0.60198 -instr_tube_IR = 0.5715 -instr_tube_OR = 0.61214 -plenum_spring_OR = 0.06459 +instr_tube_IR = 0.450*INCHES/2 # ML17007A001, Table 3-1 +instr_tube_OR = 0.482*INCHES/2 # ML17007A001, Table 3-1 +plenum_spring_OR = 0.06459 # Estimate, actual is ECI # grid spacer parameters -rod_grid_side = 1.24416 +rod_grid_side = 1.24416 +spacer_height = 1.750*INCHES # ML17013A274, Figure 4.2-7 -# lattice parameters -pin_pitch = 1.25984 -lattice_pitch = 21.50364 -grid_strap_side = 21.47270 +# assembly parameters +assembly_length = 95.89*INCHES # ML17013A274, Table 4.1-2 +pin_pitch = 0.496*INCHES # ML17013A274, Table 4.1-2 +lattice_pitch = 8.466*INCHES # ML17013A274, Table 4.1-2 +grid_strap_side = 21.47270 +top_nozzle_height = 3.551*INCHES # ML17013A274, Figure 4.2-2 +top_nozzle_width = 8.406*INCHES # ML17013A274, Figure 4.2-2 # core radial parameters -core_barrel_IR = 85.0 -core_barrel_OR = 90.0 -neutron_shield_OR = 92.0 -baffle_width = 2.2225 -rpv_IR = 120.0 -rpv_OR = 135.0 +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? # axial parameters lowest_extent = 0.000 @@ -75,30 +91,26 @@ bottom_fuel_rod = 35.160 top_lower_thimble = 36.007 bottom_fuel_stack = 36.007 bot_burn_abs = 41.087 -active_core_height = 200. -top_active_core = 236.007 -top_plenum = 238.343 -top_fuel_rod = 240.392 -bottom_upper_nozzle = 243.737 -top_upper_nozzle = 252.564 -highest_extent = 272.564 +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 +bottom_upper_nozzle = top_fuel_rod + (423.049 - 419.704) # BEAVRS, Fig. 32 +top_upper_nozzle = bottom_upper_nozzle + (431.876 - 423.049) # BEAVRS, Fig. 32 +highest_extent = top_upper_nozzle + 20.0 # The grid spacer locations are eyeball estimated from Figure 3-1 in NuScale's -# FA design certification doc. This assumes 6cm and 2cm spacings between the -# bottom and top of the fuel rods and the bottom and top grid spacers. -grid1_bot = 39.7845 -grid1_top = 44.2295 -grid2_bot = 86.67325 -grid2_top = 91.11825 -grid3_bot = 133.562 -grid3_top = 138.007 -grid4_bot = 180.45075 -grid4_top = 184.89575 -grid5_bot = 227.3395 -grid5_top = 231.7845 +# FA design certification doc, ML17007A001. This assumes 6cm and 2cm spacings +# between the bottom and top of the fuel rods and the bottom and top grid +# spacers. +first_grid_bot = bottom_fuel_rod + 6.0 +last_grid_top = top_fuel_rod - 2.0 +last_grid_bot = last_grid_top - spacer_height + +grid_bottom = np.linspace(first_grid_bot, last_grid_bot, 5) +grid_top = grid_bottom + spacer_height # control rod step heights - taken from BEAVRS, use with caution for NuScale -step0H = 45.079 +step0H = 46.079 # temporary value for now step102H = 206.415 step248H = 269.122 step_width = 1.58173 @@ -131,7 +143,7 @@ surfs['GT dashpot IR'] = openmc.ZCylinder( surfs['GT dashpot OR'] = openmc.ZCylinder( R=guide_tube_dash_OR, name='GT OR (at dashpot)') surfs['CP OR'] = openmc.ZCylinder( - R=control_poison_OR, name='Control Poison OR') + R=boron_carbide_OR, name='Control Poison OR') surfs['CR IR'] = openmc.ZCylinder( R=control_rod_IR, name='CR Clad IR') surfs['CR OR'] = openmc.ZCylinder( @@ -183,28 +195,19 @@ surfs['top lower thimble'] = copy.deepcopy(surfs['bot active core']) surfs['BA bot'] = openmc.ZPlane( z0=bot_burn_abs, name='bottom of BA') -surfs['grid1bot'] = openmc.ZPlane( - z0=grid1_bot, name='bottom grid 1') -surfs['grid1top'] = openmc.ZPlane( - z0=grid1_top, name='top of grid 1') +for i, (bottom, top) in enumerate(zip(grid_bottom, grid_top)): + # Create plane for bottom of spacer grid + key = 'grid{}bot'.format(i + 1) + name = 'bottom grid {}'.format(i + 1) + surfs[key] = openmc.ZPlane(z0=bottom, name=name) + + # Create plane for top of spacer grid + key = 'grid{}top'.format(i + 1) + name = 'top of grid {}'.format(i + 1) + surfs[key] = openmc.ZPlane(z0=top, name=name) + surfs['dashpot top'] = openmc.ZPlane( z0=step0H, name='top dashpot') -surfs['grid2bot'] = openmc.ZPlane( - z0=grid2_bot, name='bottom grid 2') -surfs['grid2top'] = openmc.ZPlane( - z0=grid2_top, name='top grid 2') -surfs['grid3bot'] = openmc.ZPlane( - z0=grid3_bot, name='bottom of grid 3') -surfs['grid3top'] = openmc.ZPlane( - z0=grid3_top, name='top of grid 3') -surfs['grid4bot'] = openmc.ZPlane( - z0=grid4_bot, name='bottom of grid 4') -surfs['grid4top'] = openmc.ZPlane( - z0=grid4_top, name='top grid 4') -surfs['grid5bot'] = openmc.ZPlane( - z0=grid5_bot, name='bottom of grid 5') -surfs['grid5top'] = openmc.ZPlane( - z0=grid5_top, name='top grid 5') surfs['top pin plenum'] = openmc.ZPlane( z0=top_plenum, name='top pin plenum') @@ -272,13 +275,3 @@ surfs['upper bound'] = openmc.ZPlane( z0=highest_extent, name='upper problem boundary', boundary_type='vacuum') surfs['lower bound'] = openmc.ZPlane( z0=lowest_extent, name='lower problem boundary', boundary_type='vacuum') - -# baffle surfaces -surfs['baffle south'] = openmc.YPlane( - y0=(lattice_pitch/4. - baffle_width), name='baffle north') -surfs['baffle north'] = openmc.YPlane( - y0=(baffle_width - lattice_pitch/4.), name='baffle south') -surfs['baffle west'] = openmc.XPlane( - x0=(lattice_pitch/4. - baffle_width), name='baffle east') -surfs['baffle east'] = openmc.XPlane( - x0=(baffle_width - lattice_pitch/4), name='baffle west') \ No newline at end of file