diff --git a/docs/source/pythonapi/examples/mgxs-part-iv.ipynb b/docs/source/pythonapi/examples/mgxs-part-iv.ipynb index 823d67ae1..d03db2cce 100644 --- a/docs/source/pythonapi/examples/mgxs-part-iv.ipynb +++ b/docs/source/pythonapi/examples/mgxs-part-iv.ipynb @@ -7,9 +7,8 @@ "This Notebook illustrates the use of the openmc.mgxs.Library class specifically for application in OpenMC's multi-group mode. This example notebook follows the same process as was done in MGXS Part III, but instead uses OpenMC as the multi-group solver. This Notebook illustrates the following features:\n", "\n", " - Calculation of multi-group cross sections for a fuel assembly\n", - " - Automated creation, manipulation and storage of MGXS with openmc.mgxs.Library\n", - " - Validation of multi-group cross sections with OpenMC\n", - " - Steady-state pin-by-pin fission rates comparison between Continuous-Energy mode and Multi-Group OpenMC.\n", + " - Automated creation and storage of MGXS with openmc.mgxs.Library\n", + " - Steady-state pin-by-pin fission rates comparison between continuous-energy and multi-group OpenMC.\n", "\n", "Note: This Notebook illustrates the use of Pandas DataFrames to containerize multi-group cross section data. We recommend using Pandas >v0.15.0 or later since OpenMC's Python API leverages the multi-indexing feature included in the most recent releases of Pandas.\n" ] @@ -84,23 +83,23 @@ "outputs": [], "source": [ "# 1.6 enriched fuel\n", - "fuel = openmc.Material(name='1.6% Fuel')\n", + "fuel = openmc.Material(name='1.6% Fuel', material_id=1)\n", "fuel.set_density('g/cm3', 10.31341)\n", "fuel.add_nuclide(u235, 3.7503e-4)\n", "fuel.add_nuclide(u238, 2.2625e-2)\n", "fuel.add_nuclide(o16, 4.6007e-2)\n", "\n", + "# zircaloy\n", + "zircaloy = openmc.Material(name='Zircaloy', material_id=2)\n", + "zircaloy.set_density('g/cm3', 6.55)\n", + "zircaloy.add_nuclide(zr90, 7.2758e-3)\n", + "\n", "# borated water\n", - "water = openmc.Material(name='Borated Water')\n", + "water = openmc.Material(name='Borated Water', material_id=3)\n", "water.set_density('g/cm3', 0.740582)\n", "water.add_nuclide(h1, 4.9457e-2)\n", "water.add_nuclide(o16, 2.4732e-2)\n", - "water.add_nuclide(b10, 8.0042e-6)\n", - "\n", - "# zircaloy\n", - "zircaloy = openmc.Material(name='Zircaloy')\n", - "zircaloy.set_density('g/cm3', 6.55)\n", - "zircaloy.add_nuclide(zr90, 7.2758e-3)" + "water.add_nuclide(b10, 8.0042e-6)\n" ] }, { @@ -119,7 +118,7 @@ "outputs": [], "source": [ "# Instantiate a Materials object\n", - "materials_file = openmc.Materials((fuel, water, zircaloy))\n", + "materials_file = openmc.Materials((fuel, zircaloy, water))\n", "materials_file.default_xs = '71c'\n", "\n", "# Export to \"materials.xml\"\n", @@ -347,7 +346,7 @@ "outputs": [], "source": [ "# OpenMC simulation parameters\n", - "batches = 500\n", + "batches = 50\n", "inactive = 10\n", "particles = 5000\n", "\n", @@ -434,7 +433,7 @@ "outputs": [ { "data": { - "image/png": "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\n", + "image/png": "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\n", "text/plain": [ "" ] @@ -523,7 +522,7 @@ "source": [ "Now we must specify the type of domain over which we would like the `Library` to compute multi-group cross sections. The domain type corresponds to the type of tally filter to be used in the tallies created to compute multi-group cross sections. At the present time, the `Library` supports \"material,\" \"cell,\" and \"universe\" domain types. We will use a \"cell\" domain type here to compute cross sections in each of the cells in the fuel assembly geometry.\n", "\n", - "**Note:** By default, the `Library` class will instantiate `MGXS` objects for each and every domain (material, cell or universe) in the geometry of interest. However, one may specify a subset of these domains to the `Library.domains` property. In our case, we wish to compute multi-group cross sections in each and every cell since they will be needed in our downstream multi-group OpenMC calculation on the identical combinatorial geometry mesh." + "**Note:** By default, the `Library` class will instantiate `MGXS` objects for each and every domain (material, cell or universe) in the geometry of interest. However, one may specify a subset of these domains to the `Library.domains` property. In our this simple example, we wish to compute multi-group cross sections only for each material." ] }, { @@ -535,10 +534,10 @@ "outputs": [], "source": [ "# Specify a \"cell\" domain type for the cross section tally filters\n", - "mgxs_lib.domain_type = \"cell\"\n", + "mgxs_lib.domain_type = \"material\"\n", "\n", "# Specify the cell domains over which to compute multi-group cross sections\n", - "mgxs_lib.domains = geometry.get_all_material_cells()" + "mgxs_lib.domains = geometry.get_all_materials()" ] }, { @@ -697,7 +696,7 @@ " License: http://openmc.readthedocs.org/en/latest/license.html\n", " Version: 0.7.1\n", " Git SHA1: c779ca42c41a062a6a813e03f2add2d182ca9190\n", - " Date/Time: 2016-05-12 21:15:02\n", + " Date/Time: 2016-05-13 22:29:41\n", " OpenMP Threads: 4\n", "\n", " ===========================================================================\n", @@ -713,9 +712,9 @@ " Loading ACE cross section table: 92235.71c\n", " Loading ACE cross section table: 92238.71c\n", " Loading ACE cross section table: 8016.71c\n", + " Loading ACE cross section table: 40090.71c\n", " Loading ACE cross section table: 1001.71c\n", " Loading ACE cross section table: 5010.71c\n", - " Loading ACE cross section table: 40090.71c\n", " Maximum neutron transport energy: 20.0000 MeV for 92235.71c\n", " Initializing source particles...\n", "\n", @@ -725,507 +724,57 @@ "\n", " Bat./Gen. k Average k \n", " ========= ======== ==================== \n", - " 1/1 1.05162 \n", - " 2/1 1.05369 \n", - " 3/1 1.02989 \n", - " 4/1 1.00126 \n", - " 5/1 1.03151 \n", - " 6/1 1.00183 \n", - " 7/1 0.99379 \n", - " 8/1 1.04193 \n", - " 9/1 1.01578 \n", - " 10/1 1.03349 \n", - " 11/1 1.03354 \n", - " 12/1 1.03646 1.03500 +/- 0.00146\n", - " 13/1 1.00873 1.02624 +/- 0.00880\n", - " 14/1 1.04263 1.03034 +/- 0.00745\n", - " 15/1 1.01556 1.02738 +/- 0.00648\n", - " 16/1 1.04897 1.03098 +/- 0.00640\n", - " 17/1 1.01796 1.02912 +/- 0.00572\n", - " 18/1 1.02276 1.02833 +/- 0.00502\n", - " 19/1 1.04003 1.02963 +/- 0.00461\n", - " 20/1 1.00695 1.02736 +/- 0.00471\n", - " 21/1 1.00012 1.02488 +/- 0.00493\n", - " 22/1 1.03580 1.02579 +/- 0.00459\n", - " 23/1 1.03427 1.02644 +/- 0.00427\n", - " 24/1 1.06024 1.02886 +/- 0.00463\n", - " 25/1 1.00742 1.02743 +/- 0.00454\n", - " 26/1 1.02556 1.02731 +/- 0.00425\n", - " 27/1 1.02207 1.02700 +/- 0.00401\n", - " 28/1 1.05847 1.02875 +/- 0.00416\n", - " 29/1 1.01125 1.02783 +/- 0.00404\n", - " 30/1 1.03213 1.02804 +/- 0.00384\n", - " 31/1 1.02241 1.02778 +/- 0.00366\n", - " 32/1 1.02675 1.02773 +/- 0.00349\n", - " 33/1 1.05484 1.02891 +/- 0.00354\n", - " 34/1 1.01893 1.02849 +/- 0.00341\n", - " 35/1 0.99044 1.02697 +/- 0.00361\n", - " 36/1 1.02602 1.02693 +/- 0.00347\n", - " 37/1 1.04107 1.02746 +/- 0.00338\n", - " 38/1 1.03237 1.02763 +/- 0.00326\n", - " 39/1 1.01489 1.02719 +/- 0.00318\n", - " 40/1 1.01065 1.02664 +/- 0.00312\n", - " 41/1 1.03722 1.02698 +/- 0.00304\n", - " 42/1 1.04339 1.02750 +/- 0.00298\n", - " 43/1 1.00921 1.02694 +/- 0.00294\n", - " 44/1 1.04576 1.02750 +/- 0.00291\n", - " 45/1 1.02580 1.02745 +/- 0.00283\n", - " 46/1 1.03464 1.02765 +/- 0.00275\n", - " 47/1 1.01552 1.02732 +/- 0.00270\n", - " 48/1 1.03357 1.02748 +/- 0.00263\n", - " 49/1 1.03439 1.02766 +/- 0.00257\n", - " 50/1 1.04281 1.02804 +/- 0.00253\n", - " 51/1 1.02902 1.02806 +/- 0.00247\n", - " 52/1 1.02245 1.02793 +/- 0.00241\n", - " 53/1 1.05271 1.02851 +/- 0.00243\n", - " 54/1 0.98630 1.02755 +/- 0.00256\n", - " 55/1 1.02690 1.02753 +/- 0.00250\n", - " 56/1 1.04107 1.02783 +/- 0.00246\n", - " 57/1 1.03029 1.02788 +/- 0.00241\n", - " 58/1 1.01874 1.02769 +/- 0.00237\n", - " 59/1 1.04211 1.02798 +/- 0.00234\n", - " 60/1 0.99584 1.02734 +/- 0.00238\n", - " 61/1 1.05166 1.02782 +/- 0.00238\n", - " 62/1 1.05572 1.02835 +/- 0.00239\n", - " 63/1 1.02694 1.02833 +/- 0.00235\n", - " 64/1 1.03314 1.02842 +/- 0.00231\n", - " 65/1 1.05850 1.02896 +/- 0.00233\n", - " 66/1 1.01100 1.02864 +/- 0.00231\n", - " 67/1 1.03784 1.02880 +/- 0.00227\n", - " 68/1 1.04084 1.02901 +/- 0.00224\n", - " 69/1 1.03932 1.02919 +/- 0.00221\n", - " 70/1 1.02564 1.02913 +/- 0.00218\n", - " 71/1 1.00027 1.02865 +/- 0.00219\n", - " 72/1 1.02385 1.02858 +/- 0.00216\n", - " 73/1 1.04885 1.02890 +/- 0.00215\n", - " 74/1 1.00298 1.02849 +/- 0.00215\n", - " 75/1 1.02009 1.02836 +/- 0.00212\n", - " 76/1 1.04505 1.02862 +/- 0.00211\n", - " 77/1 1.02889 1.02862 +/- 0.00207\n", - " 78/1 1.01306 1.02839 +/- 0.00206\n", - " 79/1 1.01817 1.02824 +/- 0.00203\n", - " 80/1 1.00533 1.02792 +/- 0.00203\n", - " 81/1 1.04439 1.02815 +/- 0.00201\n", - " 82/1 1.02212 1.02806 +/- 0.00199\n", - " 83/1 0.99419 1.02760 +/- 0.00201\n", - " 84/1 1.07132 1.02819 +/- 0.00207\n", - " 85/1 1.02710 1.02818 +/- 0.00204\n", - " 86/1 1.01702 1.02803 +/- 0.00202\n", - " 87/1 1.02134 1.02794 +/- 0.00200\n", - " 88/1 1.05231 1.02826 +/- 0.00200\n", - " 89/1 1.05290 1.02857 +/- 0.00200\n", - " 90/1 1.05751 1.02893 +/- 0.00200\n", - " 91/1 1.03970 1.02906 +/- 0.00198\n", - " 92/1 0.99678 1.02867 +/- 0.00200\n", - " 93/1 1.04471 1.02886 +/- 0.00198\n", - " 94/1 1.00820 1.02862 +/- 0.00198\n", - " 95/1 1.05823 1.02896 +/- 0.00198\n", - " 96/1 1.05118 1.02922 +/- 0.00198\n", - " 97/1 1.03617 1.02930 +/- 0.00196\n", - " 98/1 1.00585 1.02904 +/- 0.00195\n", - " 99/1 1.06663 1.02946 +/- 0.00198\n", - " 100/1 1.01802 1.02933 +/- 0.00196\n", - " 101/1 1.02695 1.02931 +/- 0.00194\n", - " 102/1 1.01642 1.02917 +/- 0.00192\n", - " 103/1 1.02567 1.02913 +/- 0.00190\n", - " 104/1 1.03519 1.02919 +/- 0.00188\n", - " 105/1 1.02439 1.02914 +/- 0.00186\n", - " 106/1 1.03779 1.02923 +/- 0.00184\n", - " 107/1 1.01304 1.02906 +/- 0.00183\n", - " 108/1 1.02541 1.02903 +/- 0.00181\n", - " 109/1 1.04297 1.02917 +/- 0.00180\n", - " 110/1 1.00442 1.02892 +/- 0.00180\n", - " 111/1 1.03102 1.02894 +/- 0.00178\n", - " 112/1 1.00380 1.02870 +/- 0.00178\n", - " 113/1 1.04010 1.02881 +/- 0.00177\n", - " 114/1 1.01297 1.02865 +/- 0.00176\n", - " 115/1 1.00130 1.02839 +/- 0.00176\n", - " 116/1 1.02001 1.02831 +/- 0.00174\n", - " 117/1 1.03847 1.02841 +/- 0.00173\n", - " 118/1 1.00371 1.02818 +/- 0.00173\n", - " 119/1 1.02650 1.02817 +/- 0.00171\n", - " 120/1 1.00767 1.02798 +/- 0.00171\n", - " 121/1 1.00408 1.02776 +/- 0.00171\n", - " 122/1 1.00235 1.02754 +/- 0.00171\n", - " 123/1 1.01212 1.02740 +/- 0.00170\n", - " 124/1 1.03278 1.02745 +/- 0.00168\n", - " 125/1 1.00818 1.02728 +/- 0.00168\n", - " 126/1 1.02132 1.02723 +/- 0.00166\n", - " 127/1 1.03677 1.02731 +/- 0.00165\n", - " 128/1 1.04148 1.02743 +/- 0.00164\n", - " 129/1 1.01245 1.02730 +/- 0.00163\n", - " 130/1 1.04172 1.02742 +/- 0.00162\n", - " 131/1 1.04519 1.02757 +/- 0.00162\n", - " 132/1 1.02495 1.02755 +/- 0.00160\n", - " 133/1 0.99747 1.02731 +/- 0.00161\n", - " 134/1 1.02411 1.02728 +/- 0.00160\n", - " 135/1 1.05750 1.02752 +/- 0.00160\n", - " 136/1 1.02341 1.02749 +/- 0.00159\n", - " 137/1 1.02212 1.02745 +/- 0.00158\n", - " 138/1 1.03464 1.02750 +/- 0.00157\n", - " 139/1 1.05920 1.02775 +/- 0.00157\n", - " 140/1 1.01911 1.02768 +/- 0.00156\n", - " 141/1 1.03076 1.02771 +/- 0.00155\n", - " 142/1 1.03648 1.02777 +/- 0.00154\n", - " 143/1 1.00382 1.02759 +/- 0.00154\n", - " 144/1 1.00366 1.02741 +/- 0.00154\n", - " 145/1 1.01638 1.02733 +/- 0.00153\n", - " 146/1 1.02418 1.02731 +/- 0.00152\n", - " 147/1 0.99267 1.02706 +/- 0.00153\n", - " 148/1 1.02575 1.02705 +/- 0.00152\n", - " 149/1 0.98560 1.02675 +/- 0.00153\n", - " 150/1 1.02725 1.02675 +/- 0.00152\n", - " 151/1 1.03723 1.02683 +/- 0.00151\n", - " 152/1 1.00857 1.02670 +/- 0.00151\n", - " 153/1 1.00642 1.02656 +/- 0.00151\n", - " 154/1 1.03461 1.02661 +/- 0.00150\n", - " 155/1 1.00088 1.02643 +/- 0.00150\n", - " 156/1 1.02589 1.02643 +/- 0.00149\n", - " 157/1 1.02494 1.02642 +/- 0.00148\n", - " 158/1 1.03303 1.02646 +/- 0.00147\n", - " 159/1 1.02276 1.02644 +/- 0.00146\n", - " 160/1 1.03293 1.02648 +/- 0.00145\n", - " 161/1 1.04758 1.02662 +/- 0.00144\n", - " 162/1 1.01033 1.02652 +/- 0.00144\n", - " 163/1 1.03883 1.02660 +/- 0.00143\n", - " 164/1 1.00519 1.02646 +/- 0.00143\n", - " 165/1 1.05958 1.02667 +/- 0.00144\n", - " 166/1 1.03849 1.02675 +/- 0.00143\n", - " 167/1 1.02306 1.02672 +/- 0.00142\n", - " 168/1 1.02693 1.02672 +/- 0.00141\n", - " 169/1 1.02584 1.02672 +/- 0.00140\n", - " 170/1 0.99388 1.02651 +/- 0.00141\n", - " 171/1 0.99376 1.02631 +/- 0.00141\n", - " 172/1 1.00453 1.02618 +/- 0.00141\n", - " 173/1 1.04516 1.02629 +/- 0.00141\n", - " 174/1 1.02402 1.02628 +/- 0.00140\n", - " 175/1 0.99012 1.02606 +/- 0.00141\n", - " 176/1 1.02084 1.02603 +/- 0.00140\n", - " 177/1 1.03959 1.02611 +/- 0.00139\n", - " 178/1 1.01719 1.02606 +/- 0.00139\n", - " 179/1 1.01671 1.02600 +/- 0.00138\n", - " 180/1 1.03691 1.02606 +/- 0.00137\n", - " 181/1 1.04276 1.02616 +/- 0.00137\n", - " 182/1 1.02002 1.02613 +/- 0.00136\n", - " 183/1 1.03081 1.02615 +/- 0.00135\n", - " 184/1 1.02432 1.02614 +/- 0.00135\n", - " 185/1 1.02225 1.02612 +/- 0.00134\n", - " 186/1 1.04722 1.02624 +/- 0.00134\n", - " 187/1 0.98045 1.02598 +/- 0.00135\n", - " 188/1 1.02555 1.02598 +/- 0.00135\n", - " 189/1 1.03645 1.02604 +/- 0.00134\n", - " 190/1 1.00407 1.02592 +/- 0.00134\n", - " 191/1 1.03033 1.02594 +/- 0.00133\n", - " 192/1 1.04175 1.02603 +/- 0.00133\n", - " 193/1 1.00555 1.02592 +/- 0.00132\n", - " 194/1 1.00183 1.02578 +/- 0.00132\n", - " 195/1 1.04328 1.02588 +/- 0.00132\n", - " 196/1 1.03041 1.02590 +/- 0.00131\n", - " 197/1 1.04791 1.02602 +/- 0.00131\n", - " 198/1 1.01366 1.02596 +/- 0.00130\n", - " 199/1 1.04471 1.02605 +/- 0.00130\n", - " 200/1 1.02416 1.02604 +/- 0.00129\n", - " 201/1 1.01172 1.02597 +/- 0.00129\n", - " 202/1 1.01683 1.02592 +/- 0.00128\n", - " 203/1 1.01341 1.02586 +/- 0.00128\n", - " 204/1 1.01507 1.02580 +/- 0.00127\n", - " 205/1 1.02540 1.02580 +/- 0.00127\n", - " 206/1 1.00310 1.02568 +/- 0.00127\n", - " 207/1 1.02822 1.02570 +/- 0.00126\n", - " 208/1 1.01023 1.02562 +/- 0.00126\n", - " 209/1 1.04603 1.02572 +/- 0.00125\n", - " 210/1 1.00775 1.02563 +/- 0.00125\n", - " 211/1 1.01706 1.02559 +/- 0.00125\n", - " 212/1 0.99434 1.02543 +/- 0.00125\n", - " 213/1 1.03346 1.02547 +/- 0.00124\n", - " 214/1 1.05322 1.02561 +/- 0.00124\n", - " 215/1 1.03057 1.02563 +/- 0.00124\n", - " 216/1 1.00976 1.02556 +/- 0.00123\n", - " 217/1 1.02760 1.02557 +/- 0.00123\n", - " 218/1 1.01259 1.02550 +/- 0.00122\n", - " 219/1 1.02829 1.02552 +/- 0.00122\n", - " 220/1 1.02228 1.02550 +/- 0.00121\n", - " 221/1 1.06679 1.02570 +/- 0.00122\n", - " 222/1 1.03417 1.02574 +/- 0.00122\n", - " 223/1 1.04239 1.02582 +/- 0.00121\n", - " 224/1 1.02062 1.02579 +/- 0.00121\n", - " 225/1 1.00331 1.02569 +/- 0.00121\n", - " 226/1 1.00131 1.02557 +/- 0.00121\n", - " 227/1 1.01768 1.02554 +/- 0.00120\n", - " 228/1 1.00813 1.02546 +/- 0.00120\n", - " 229/1 1.05320 1.02558 +/- 0.00120\n", - " 230/1 1.03472 1.02563 +/- 0.00120\n", - " 231/1 1.01426 1.02557 +/- 0.00119\n", - " 232/1 1.00782 1.02549 +/- 0.00119\n", - " 233/1 1.02813 1.02551 +/- 0.00118\n", - " 234/1 1.01184 1.02545 +/- 0.00118\n", - " 235/1 1.02156 1.02543 +/- 0.00118\n", - " 236/1 0.99029 1.02527 +/- 0.00118\n", - " 237/1 1.04196 1.02535 +/- 0.00118\n", - " 238/1 1.01594 1.02531 +/- 0.00117\n", - " 239/1 1.02732 1.02531 +/- 0.00117\n", - " 240/1 0.98987 1.02516 +/- 0.00117\n", - " 241/1 1.03388 1.02520 +/- 0.00117\n", - " 242/1 1.01319 1.02515 +/- 0.00116\n", - " 243/1 1.02870 1.02516 +/- 0.00116\n", - " 244/1 1.01943 1.02514 +/- 0.00115\n", - " 245/1 1.04463 1.02522 +/- 0.00115\n", - " 246/1 1.03551 1.02526 +/- 0.00115\n", - " 247/1 1.00436 1.02517 +/- 0.00115\n", - " 248/1 1.03326 1.02521 +/- 0.00114\n", - " 249/1 1.05769 1.02534 +/- 0.00115\n", - " 250/1 1.01372 1.02530 +/- 0.00114\n", - " 251/1 1.02971 1.02531 +/- 0.00114\n", - " 252/1 1.01166 1.02526 +/- 0.00113\n", - " 253/1 1.03992 1.02532 +/- 0.00113\n", - " 254/1 1.01507 1.02528 +/- 0.00113\n", - " 255/1 1.03222 1.02530 +/- 0.00112\n", - " 256/1 1.03096 1.02533 +/- 0.00112\n", - " 257/1 1.01153 1.02527 +/- 0.00112\n", - " 258/1 1.03668 1.02532 +/- 0.00111\n", - " 259/1 1.03070 1.02534 +/- 0.00111\n", - " 260/1 1.01189 1.02529 +/- 0.00111\n", - " 261/1 1.00082 1.02519 +/- 0.00111\n", - " 262/1 1.03653 1.02523 +/- 0.00110\n", - " 263/1 1.02908 1.02525 +/- 0.00110\n", - " 264/1 1.00072 1.02515 +/- 0.00110\n", - " 265/1 1.00832 1.02509 +/- 0.00109\n", - " 266/1 1.04385 1.02516 +/- 0.00109\n", - " 267/1 1.00117 1.02507 +/- 0.00109\n", - " 268/1 1.02682 1.02507 +/- 0.00109\n", - " 269/1 1.03202 1.02510 +/- 0.00108\n", - " 270/1 1.01275 1.02505 +/- 0.00108\n", - " 271/1 1.02633 1.02506 +/- 0.00108\n", - " 272/1 1.04811 1.02514 +/- 0.00108\n", - " 273/1 1.02851 1.02516 +/- 0.00107\n", - " 274/1 1.01270 1.02511 +/- 0.00107\n", - " 275/1 1.06222 1.02525 +/- 0.00107\n", - " 276/1 1.02778 1.02526 +/- 0.00107\n", - " 277/1 1.02601 1.02526 +/- 0.00107\n", - " 278/1 1.02356 1.02526 +/- 0.00106\n", - " 279/1 1.00792 1.02519 +/- 0.00106\n", - " 280/1 1.02331 1.02518 +/- 0.00106\n", - " 281/1 1.00985 1.02513 +/- 0.00105\n", - " 282/1 1.02035 1.02511 +/- 0.00105\n", - " 283/1 0.98181 1.02495 +/- 0.00106\n", - " 284/1 1.01829 1.02493 +/- 0.00106\n", - " 285/1 1.02929 1.02494 +/- 0.00105\n", - " 286/1 1.03524 1.02498 +/- 0.00105\n", - " 287/1 1.01212 1.02493 +/- 0.00105\n", - " 288/1 1.03584 1.02497 +/- 0.00104\n", - " 289/1 1.02961 1.02499 +/- 0.00104\n", - " 290/1 0.99692 1.02489 +/- 0.00104\n", - " 291/1 1.03966 1.02494 +/- 0.00104\n", - " 292/1 1.00965 1.02489 +/- 0.00104\n", - " 293/1 1.02601 1.02489 +/- 0.00103\n", - " 294/1 1.03224 1.02492 +/- 0.00103\n", - " 295/1 1.01596 1.02489 +/- 0.00103\n", - " 296/1 1.06964 1.02504 +/- 0.00103\n", - " 297/1 1.03982 1.02509 +/- 0.00103\n", - " 298/1 0.99758 1.02500 +/- 0.00103\n", - " 299/1 1.01479 1.02496 +/- 0.00103\n", - " 300/1 1.04517 1.02503 +/- 0.00103\n", - " 301/1 0.99128 1.02492 +/- 0.00103\n", - " 302/1 1.01493 1.02488 +/- 0.00103\n", - " 303/1 1.00623 1.02482 +/- 0.00103\n", - " 304/1 1.02560 1.02482 +/- 0.00102\n", - " 305/1 1.00806 1.02477 +/- 0.00102\n", - " 306/1 1.03524 1.02480 +/- 0.00102\n", - " 307/1 0.99244 1.02469 +/- 0.00102\n", - " 308/1 0.98013 1.02454 +/- 0.00103\n", - " 309/1 1.00853 1.02449 +/- 0.00103\n", - " 310/1 1.00116 1.02441 +/- 0.00103\n", - " 311/1 1.01730 1.02439 +/- 0.00102\n", - " 312/1 1.01198 1.02435 +/- 0.00102\n", - " 313/1 1.02405 1.02435 +/- 0.00102\n", - " 314/1 1.01734 1.02432 +/- 0.00101\n", - " 315/1 1.02320 1.02432 +/- 0.00101\n", - " 316/1 1.03438 1.02435 +/- 0.00101\n", - " 317/1 1.00106 1.02428 +/- 0.00101\n", - " 318/1 1.03114 1.02430 +/- 0.00100\n", - " 319/1 1.04955 1.02438 +/- 0.00100\n", - " 320/1 1.03259 1.02441 +/- 0.00100\n", - " 321/1 1.00687 1.02435 +/- 0.00100\n", - " 322/1 1.05753 1.02446 +/- 0.00100\n", - " 323/1 1.03676 1.02450 +/- 0.00100\n", - " 324/1 0.99796 1.02441 +/- 0.00100\n", - " 325/1 1.03783 1.02445 +/- 0.00100\n", - " 326/1 1.02315 1.02445 +/- 0.00099\n", - " 327/1 1.04205 1.02451 +/- 0.00099\n", - " 328/1 1.01971 1.02449 +/- 0.00099\n", - " 329/1 1.02394 1.02449 +/- 0.00099\n", - " 330/1 1.03318 1.02452 +/- 0.00098\n", - " 331/1 1.01503 1.02449 +/- 0.00098\n", - " 332/1 1.07143 1.02463 +/- 0.00099\n", - " 333/1 1.00991 1.02459 +/- 0.00099\n", - " 334/1 1.03115 1.02461 +/- 0.00098\n", - " 335/1 1.04400 1.02467 +/- 0.00098\n", - " 336/1 1.03516 1.02470 +/- 0.00098\n", - " 337/1 1.02025 1.02468 +/- 0.00098\n", - " 338/1 1.03269 1.02471 +/- 0.00098\n", - " 339/1 1.03745 1.02475 +/- 0.00097\n", - " 340/1 1.03685 1.02478 +/- 0.00097\n", - " 341/1 1.01831 1.02476 +/- 0.00097\n", - " 342/1 1.01425 1.02473 +/- 0.00097\n", - " 343/1 1.02990 1.02475 +/- 0.00096\n", - " 344/1 1.02958 1.02476 +/- 0.00096\n", - " 345/1 1.03133 1.02478 +/- 0.00096\n", - " 346/1 1.02441 1.02478 +/- 0.00095\n", - " 347/1 1.07010 1.02492 +/- 0.00096\n", - " 348/1 1.02327 1.02491 +/- 0.00096\n", - " 349/1 1.03123 1.02493 +/- 0.00096\n", - " 350/1 1.03158 1.02495 +/- 0.00095\n", - " 351/1 1.03473 1.02498 +/- 0.00095\n", - " 352/1 1.04000 1.02502 +/- 0.00095\n", - " 353/1 1.01651 1.02500 +/- 0.00095\n", - " 354/1 1.03647 1.02503 +/- 0.00094\n", - " 355/1 1.04650 1.02509 +/- 0.00094\n", - " 356/1 1.04703 1.02516 +/- 0.00094\n", - " 357/1 1.00260 1.02509 +/- 0.00094\n", - " 358/1 1.00075 1.02502 +/- 0.00094\n", - " 359/1 1.04874 1.02509 +/- 0.00094\n", - " 360/1 1.03211 1.02511 +/- 0.00094\n", - " 361/1 1.02136 1.02510 +/- 0.00094\n", - " 362/1 1.00803 1.02505 +/- 0.00094\n", - " 363/1 1.00319 1.02499 +/- 0.00094\n", - " 364/1 1.01443 1.02496 +/- 0.00093\n", - " 365/1 1.02685 1.02496 +/- 0.00093\n", - " 366/1 1.02373 1.02496 +/- 0.00093\n", - " 367/1 1.02026 1.02495 +/- 0.00093\n", - " 368/1 1.01579 1.02492 +/- 0.00092\n", - " 369/1 1.08004 1.02508 +/- 0.00093\n", - " 370/1 1.01715 1.02505 +/- 0.00093\n", - " 371/1 0.98578 1.02494 +/- 0.00093\n", - " 372/1 1.03033 1.02496 +/- 0.00093\n", - " 373/1 1.03269 1.02498 +/- 0.00093\n", - " 374/1 1.04050 1.02502 +/- 0.00093\n", - " 375/1 1.00760 1.02498 +/- 0.00093\n", - " 376/1 1.04492 1.02503 +/- 0.00093\n", - " 377/1 1.04983 1.02510 +/- 0.00093\n", - " 378/1 1.06022 1.02519 +/- 0.00093\n", - " 379/1 1.02516 1.02519 +/- 0.00093\n", - " 380/1 1.01740 1.02517 +/- 0.00092\n", - " 381/1 1.02520 1.02517 +/- 0.00092\n", - " 382/1 1.02820 1.02518 +/- 0.00092\n", - " 383/1 1.00697 1.02513 +/- 0.00092\n", - " 384/1 1.03497 1.02516 +/- 0.00092\n", - " 385/1 0.98404 1.02505 +/- 0.00092\n", - " 386/1 1.05206 1.02512 +/- 0.00092\n", - " 387/1 1.01502 1.02509 +/- 0.00092\n", - " 388/1 1.02196 1.02508 +/- 0.00092\n", - " 389/1 1.02856 1.02509 +/- 0.00091\n", - " 390/1 1.01376 1.02506 +/- 0.00091\n", - " 391/1 1.01696 1.02504 +/- 0.00091\n", - " 392/1 1.03283 1.02506 +/- 0.00091\n", - " 393/1 1.00787 1.02502 +/- 0.00091\n", - " 394/1 1.02184 1.02501 +/- 0.00090\n", - " 395/1 1.03170 1.02503 +/- 0.00090\n", - " 396/1 1.04406 1.02508 +/- 0.00090\n", - " 397/1 1.03939 1.02511 +/- 0.00090\n", - " 398/1 1.00329 1.02506 +/- 0.00090\n", - " 399/1 1.04518 1.02511 +/- 0.00090\n", - " 400/1 1.03435 1.02513 +/- 0.00090\n", - " 401/1 1.00525 1.02508 +/- 0.00089\n", - " 402/1 1.03112 1.02510 +/- 0.00089\n", - " 403/1 1.00188 1.02504 +/- 0.00089\n", - " 404/1 1.01241 1.02501 +/- 0.00089\n", - " 405/1 1.01796 1.02499 +/- 0.00089\n", - " 406/1 1.02686 1.02499 +/- 0.00089\n", - " 407/1 1.01003 1.02496 +/- 0.00088\n", - " 408/1 1.02359 1.02495 +/- 0.00088\n", - " 409/1 1.01258 1.02492 +/- 0.00088\n", - " 410/1 1.04361 1.02497 +/- 0.00088\n", - " 411/1 1.00885 1.02493 +/- 0.00088\n", - " 412/1 1.00999 1.02489 +/- 0.00088\n", - " 413/1 0.97832 1.02477 +/- 0.00088\n", - " 414/1 1.04183 1.02482 +/- 0.00088\n", - " 415/1 1.02279 1.02481 +/- 0.00088\n", - " 416/1 1.04197 1.02485 +/- 0.00088\n", - " 417/1 1.04617 1.02491 +/- 0.00088\n", - " 418/1 1.01311 1.02488 +/- 0.00088\n", - " 419/1 1.03904 1.02491 +/- 0.00087\n", - " 420/1 1.00458 1.02486 +/- 0.00087\n", - " 421/1 0.98580 1.02477 +/- 0.00088\n", - " 422/1 1.01850 1.02475 +/- 0.00087\n", - " 423/1 1.03739 1.02478 +/- 0.00087\n", - " 424/1 1.02716 1.02479 +/- 0.00087\n", - " 425/1 1.00711 1.02475 +/- 0.00087\n", - " 426/1 1.01008 1.02471 +/- 0.00087\n", - " 427/1 1.03332 1.02473 +/- 0.00087\n", - " 428/1 1.00501 1.02468 +/- 0.00087\n", - " 429/1 1.04549 1.02473 +/- 0.00086\n", - " 430/1 1.00582 1.02469 +/- 0.00086\n", - " 431/1 1.00586 1.02464 +/- 0.00086\n", - " 432/1 1.00082 1.02459 +/- 0.00086\n", - " 433/1 1.00835 1.02455 +/- 0.00086\n", - " 434/1 1.03965 1.02458 +/- 0.00086\n", - " 435/1 1.02385 1.02458 +/- 0.00086\n", - " 436/1 1.01440 1.02456 +/- 0.00086\n", - " 437/1 1.03127 1.02458 +/- 0.00085\n", - " 438/1 1.02961 1.02459 +/- 0.00085\n", - " 439/1 0.99584 1.02452 +/- 0.00085\n", - " 440/1 1.04964 1.02458 +/- 0.00085\n", - " 441/1 0.99792 1.02452 +/- 0.00085\n", - " 442/1 1.04971 1.02457 +/- 0.00085\n", - " 443/1 1.01504 1.02455 +/- 0.00085\n", - " 444/1 1.04359 1.02460 +/- 0.00085\n", - " 445/1 1.01148 1.02457 +/- 0.00085\n", - " 446/1 1.01203 1.02454 +/- 0.00085\n", - " 447/1 1.02353 1.02454 +/- 0.00085\n", - " 448/1 1.06299 1.02462 +/- 0.00085\n", - " 449/1 1.00017 1.02457 +/- 0.00085\n", - " 450/1 1.01193 1.02454 +/- 0.00085\n", - " 451/1 1.00179 1.02449 +/- 0.00085\n", - " 452/1 1.02425 1.02449 +/- 0.00085\n", - " 453/1 1.03629 1.02451 +/- 0.00084\n", - " 454/1 1.01955 1.02450 +/- 0.00084\n", - " 455/1 1.00870 1.02447 +/- 0.00084\n", - " 456/1 1.04230 1.02451 +/- 0.00084\n", - " 457/1 1.05081 1.02457 +/- 0.00084\n", - " 458/1 1.00271 1.02452 +/- 0.00084\n", - " 459/1 1.01010 1.02448 +/- 0.00084\n", - " 460/1 1.04656 1.02453 +/- 0.00084\n", - " 461/1 1.00790 1.02450 +/- 0.00084\n", - " 462/1 1.02214 1.02449 +/- 0.00084\n", - " 463/1 1.04401 1.02453 +/- 0.00083\n", - " 464/1 1.02863 1.02454 +/- 0.00083\n", - " 465/1 0.99971 1.02449 +/- 0.00083\n", - " 466/1 1.00344 1.02444 +/- 0.00083\n", - " 467/1 1.02810 1.02445 +/- 0.00083\n", - " 468/1 1.02091 1.02444 +/- 0.00083\n", - " 469/1 1.00545 1.02440 +/- 0.00083\n", - " 470/1 1.01590 1.02438 +/- 0.00083\n", - " 471/1 1.04465 1.02443 +/- 0.00083\n", - " 472/1 1.02028 1.02442 +/- 0.00082\n", - " 473/1 1.01951 1.02441 +/- 0.00082\n", - " 474/1 1.03280 1.02443 +/- 0.00082\n", - " 475/1 1.04722 1.02447 +/- 0.00082\n", - " 476/1 1.03587 1.02450 +/- 0.00082\n", - " 477/1 1.02234 1.02449 +/- 0.00082\n", - " 478/1 1.07848 1.02461 +/- 0.00082\n", - " 479/1 1.04759 1.02466 +/- 0.00082\n", - " 480/1 1.07189 1.02476 +/- 0.00083\n", - " 481/1 1.05811 1.02483 +/- 0.00083\n", - " 482/1 1.04554 1.02487 +/- 0.00083\n", - " 483/1 1.01956 1.02486 +/- 0.00083\n", - " 484/1 1.01055 1.02483 +/- 0.00083\n", - " 485/1 1.00845 1.02480 +/- 0.00082\n", - " 486/1 1.04607 1.02484 +/- 0.00082\n", - " 487/1 1.05955 1.02492 +/- 0.00083\n", - " 488/1 1.02245 1.02491 +/- 0.00082\n", - " 489/1 0.98206 1.02482 +/- 0.00083\n", - " 490/1 1.03786 1.02485 +/- 0.00083\n", - " 491/1 1.02973 1.02486 +/- 0.00082\n", - " 492/1 1.02890 1.02487 +/- 0.00082\n", - " 493/1 1.02086 1.02486 +/- 0.00082\n", - " 494/1 1.01194 1.02483 +/- 0.00082\n", - " 495/1 1.01902 1.02482 +/- 0.00082\n", - " 496/1 1.01783 1.02481 +/- 0.00082\n", - " 497/1 1.02129 1.02480 +/- 0.00081\n", - " 498/1 1.02407 1.02480 +/- 0.00081\n", - " 499/1 1.02873 1.02480 +/- 0.00081\n", - " 500/1 1.00998 1.02477 +/- 0.00081\n", - " Creating state point statepoint.500.h5...\n", + " 1/1 1.05201 \n", + " 2/1 1.02017 \n", + " 3/1 1.02398 \n", + " 4/1 1.02677 \n", + " 5/1 1.01070 \n", + " 6/1 1.02964 \n", + " 7/1 1.02163 \n", + " 8/1 1.04524 \n", + " 9/1 1.00773 \n", + " 10/1 1.01536 \n", + " 11/1 1.02992 \n", + " 12/1 1.03248 1.03120 +/- 0.00128\n", + " 13/1 0.99044 1.01761 +/- 0.01361\n", + " 14/1 1.01484 1.01692 +/- 0.00965\n", + " 15/1 1.01491 1.01652 +/- 0.00748\n", + " 16/1 1.03809 1.02011 +/- 0.00709\n", + " 17/1 1.02536 1.02086 +/- 0.00604\n", + " 18/1 1.03663 1.02283 +/- 0.00559\n", + " 19/1 1.03902 1.02463 +/- 0.00525\n", + " 20/1 1.01557 1.02373 +/- 0.00478\n", + " 21/1 1.01286 1.02274 +/- 0.00443\n", + " 22/1 1.01392 1.02200 +/- 0.00411\n", + " 23/1 1.04439 1.02372 +/- 0.00416\n", + " 24/1 1.04034 1.02491 +/- 0.00403\n", + " 25/1 0.99433 1.02287 +/- 0.00427\n", + " 26/1 1.02720 1.02314 +/- 0.00400\n", + " 27/1 1.03545 1.02387 +/- 0.00383\n", + " 28/1 1.03853 1.02468 +/- 0.00370\n", + " 29/1 1.02735 1.02482 +/- 0.00350\n", + " 30/1 1.02429 1.02480 +/- 0.00332\n", + " 31/1 1.02901 1.02500 +/- 0.00317\n", + " 32/1 1.03296 1.02536 +/- 0.00304\n", + " 33/1 1.03605 1.02582 +/- 0.00294\n", + " 34/1 1.04247 1.02652 +/- 0.00290\n", + " 35/1 1.02088 1.02629 +/- 0.00279\n", + " 36/1 1.03017 1.02644 +/- 0.00269\n", + " 37/1 1.03216 1.02665 +/- 0.00259\n", + " 38/1 1.01459 1.02622 +/- 0.00254\n", + " 39/1 1.03706 1.02659 +/- 0.00248\n", + " 40/1 1.01383 1.02617 +/- 0.00243\n", + " 41/1 0.99043 1.02502 +/- 0.00262\n", + " 42/1 1.02891 1.02514 +/- 0.00254\n", + " 43/1 1.02100 1.02501 +/- 0.00246\n", + " 44/1 0.99546 1.02414 +/- 0.00254\n", + " 45/1 1.01562 1.02390 +/- 0.00248\n", + " 46/1 1.03025 1.02408 +/- 0.00242\n", + " 47/1 0.99409 1.02327 +/- 0.00249\n", + " 48/1 1.04355 1.02380 +/- 0.00248\n", + " 49/1 1.02763 1.02390 +/- 0.00242\n", + " 50/1 0.99426 1.02316 +/- 0.00247\n", + " Creating state point statepoint.50.h5...\n", "\n", " ===========================================================================\n", " ======================> SIMULATION FINISHED <======================\n", @@ -1234,27 +783,27 @@ "\n", " =======================> TIMING STATISTICS <=======================\n", "\n", - " Total time for initialization = 1.5880E+00 seconds\n", - " Reading cross sections = 1.2650E+00 seconds\n", - " Total time in simulation = 2.6051E+02 seconds\n", - " Time in transport only = 2.6013E+02 seconds\n", - " Time in inactive batches = 2.0990E+00 seconds\n", - " Time in active batches = 2.5841E+02 seconds\n", - " Time synchronizing fission bank = 6.5000E-02 seconds\n", - " Sampling source sites = 4.4000E-02 seconds\n", - " SEND/RECV source sites = 2.1000E-02 seconds\n", - " Time accumulating tallies = 2.0000E-03 seconds\n", + " Total time for initialization = 1.4550E+00 seconds\n", + " Reading cross sections = 1.1400E+00 seconds\n", + " Total time in simulation = 1.9150E+01 seconds\n", + " Time in transport only = 1.9021E+01 seconds\n", + " Time in inactive batches = 2.1570E+00 seconds\n", + " Time in active batches = 1.6993E+01 seconds\n", + " Time synchronizing fission bank = 7.0000E-03 seconds\n", + " Sampling source sites = 5.0000E-03 seconds\n", + " SEND/RECV source sites = 2.0000E-03 seconds\n", + " Time accumulating tallies = 0.0000E+00 seconds\n", " Total time for finalization = 0.0000E+00 seconds\n", - " Total time elapsed = 2.6211E+02 seconds\n", - " Calculation Rate (inactive) = 23820.9 neutrons/second\n", - " Calculation Rate (active) = 9480.98 neutrons/second\n", + " Total time elapsed = 2.0614E+01 seconds\n", + " Calculation Rate (inactive) = 23180.3 neutrons/second\n", + " Calculation Rate (active) = 11769.6 neutrons/second\n", "\n", " ============================> RESULTS <============================\n", "\n", - " k-effective (Collision) = 1.02480 +/- 0.00073\n", - " k-effective (Track-length) = 1.02477 +/- 0.00081\n", - " k-effective (Absorption) = 1.02552 +/- 0.00068\n", - " Combined k-effective = 1.02519 +/- 0.00055\n", + " k-effective (Collision) = 1.02389 +/- 0.00235\n", + " k-effective (Track-length) = 1.02316 +/- 0.00247\n", + " k-effective (Absorption) = 1.02494 +/- 0.00180\n", + " Combined k-effective = 1.02429 +/- 0.00140\n", " Leakage Fraction = 0.00000 +/- 0.00000\n", "\n" ] @@ -1399,10 +948,12 @@ } ], "source": [ - "mgxs_lib.write_mg_library(filename='mgxs', xs_type='macro',\n", - " domain_names=['fuel', 'fuel_clad', 'fuel_mod',\n", - " 'gt_inmod', 'gt_clad', 'gt_outmod'],\n", - " xs_ids='2m')" + "# Create a MGXS File which can then be written to disk\n", + "mgxs_file = mgxs_lib.create_mg_library(xs_type='macro', domain_names=['fuel', 'zircaloy', 'water'],\n", + " xs_ids='2m')\n", + "\n", + "# Write the file to disk using the default filename of `mgxs.xml`\n", + "mgxs_file.export_to_xml()" ] }, { @@ -1420,49 +971,27 @@ }, "outputs": [], "source": [ - "# Instantiate our Macroscopic Data using mat_names for the name\n", + "# Instantiate our Macroscopic Data\n", "fuel_macro = openmc.Macroscopic('fuel')\n", - "fuel_clad_macro = openmc.Macroscopic('fuel_clad')\n", - "fuel_mod_macro = openmc.Macroscopic('fuel_mod')\n", - "gt_inmod_macro = openmc.Macroscopic('gt_inmod')\n", - "gt_clad_macro = openmc.Macroscopic('gt_clad')\n", - "gt_outmod_macro = openmc.Macroscopic('gt_outmod')\n", - "\n", - "# Now define the materials\n", + "zircaloy_macro = openmc.Macroscopic('zircaloy')\n", + "water_macro = openmc.Macroscopic('water')\n", "\n", + "# Now re-define our materials to use the Multi-Group macroscopic data\n", + "# instead of the continuous-energy data.\n", "# 1.6 enriched fuel UO2\n", - "fuel = openmc.Material(name='1.6% Fuel UO2', material_id=1)\n", - "fuel.set_density('macro', 1.0)\n", + "fuel = openmc.Material(name='UO2', material_id=1)\n", "fuel.add_macroscopic(fuel_macro)\n", "\n", - "# 1.6 enriched fuel cladding\n", - "fuel_clad = openmc.Material(name='1.6% Fuel Clad', material_id=2)\n", - "fuel_clad.set_density('macro', 1.0)\n", - "fuel_clad.add_macroscopic(fuel_clad_macro)\n", + "# cladding\n", + "zircaloy = openmc.Material(name='Clad', material_id=2)\n", + "zircaloy.add_macroscopic(zircaloy_macro)\n", "\n", - "# 1.6 enriched fuel moderator\n", - "fuel_mod = openmc.Material(name='1.6% Fuel Water', material_id=3)\n", - "fuel_mod.set_density('macro', 1.0)\n", - "fuel_mod.add_macroscopic(fuel_mod_macro)\n", - "\n", - "# Guide Tube Inner Moderator\n", - "gt_inmod = openmc.Material(name='GT Inner Water', material_id=4)\n", - "gt_inmod.set_density('macro', 1.0)\n", - "gt_inmod.add_macroscopic(gt_inmod_macro)\n", - "\n", - "# Guide Tube Cladding\n", - "gt_clad = openmc.Material(name='GT Clad', material_id=5)\n", - "gt_clad.set_density('macro', 1.0)\n", - "gt_clad.add_macroscopic(gt_clad_macro)\n", - "\n", - "# Guide Tube Outer Moderator\n", - "gt_outmod = openmc.Material(name='GT Outer Water', material_id=6)\n", - "gt_outmod.set_density('macro', 1.0)\n", - "gt_outmod.add_macroscopic(gt_outmod_macro)\n", + "# moderator\n", + "water = openmc.Material(name='Water', material_id=3)\n", + "water.add_macroscopic(water_macro)\n", "\n", "# Finally, instantiate our Materials object\n", - "materials_file = openmc.Materials((fuel, fuel_clad, fuel_mod,\n", - " gt_inmod, gt_clad, gt_outmod))\n", + "materials_file = openmc.Materials((fuel, zircaloy, water))\n", "materials_file.default_xs = '2m'\n", "\n", "# Export to \"materials.xml\"\n", @@ -1473,98 +1002,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "\n", - "For our geometry files we will do the same as before but now we will be pointing at our newly created materials instead." - ] - }, - { - "cell_type": "code", - "execution_count": 33, - "metadata": { - "collapsed": false - }, - "outputs": [], - "source": [ - "# Create a Universe to encapsulate a fuel pin\n", - "fuel_pin_universe = openmc.Universe(name='1.6% Fuel Pin', universe_id=10)\n", - "\n", - "# Create fuel Cell\n", - "fuel_cell = openmc.Cell(name='1.6% Fuel', cell_id=1)\n", - "fuel_cell.fill = fuel\n", - "fuel_cell.region = -fuel_outer_radius\n", - "fuel_pin_universe.add_cell(fuel_cell)\n", - "\n", - "# Create a clad Cell\n", - "clad_cell = openmc.Cell(name='1.6% Clad', cell_id=2)\n", - "clad_cell.fill = fuel_clad\n", - "clad_cell.region = +fuel_outer_radius & -clad_outer_radius\n", - "fuel_pin_universe.add_cell(clad_cell)\n", - "\n", - "# Create a moderator Cell\n", - "moderator_cell = openmc.Cell(name='1.6% Moderator', cell_id=3)\n", - "moderator_cell.fill = fuel_mod\n", - "moderator_cell.region = +clad_outer_radius\n", - "fuel_pin_universe.add_cell(moderator_cell)\n", - "\n", - "# Create a Universe to encapsulate a control rod guide tube\n", - "guide_tube_universe = openmc.Universe(name='Guide Tube', universe_id=20)\n", - "\n", - "# Create guide tube Cell\n", - "guide_tube_cell = openmc.Cell(name='Guide Tube Water', cell_id=4)\n", - "guide_tube_cell.fill = gt_inmod\n", - "guide_tube_cell.region = -fuel_outer_radius\n", - "guide_tube_universe.add_cell(guide_tube_cell)\n", - "\n", - "# Create a clad Cell\n", - "clad_cell = openmc.Cell(name='Guide Clad', cell_id=5)\n", - "clad_cell.fill = gt_clad\n", - "clad_cell.region = +fuel_outer_radius & -clad_outer_radius\n", - "guide_tube_universe.add_cell(clad_cell)\n", - "\n", - "# Create a moderator Cell\n", - "moderator_cell = openmc.Cell(name='Guide Tube Moderator', cell_id=6)\n", - "moderator_cell.fill = gt_outmod\n", - "moderator_cell.region = +clad_outer_radius\n", - "guide_tube_universe.add_cell(moderator_cell)\n", - "\n", - "# Create fuel assembly Lattice\n", - "assembly = openmc.RectLattice(name='1.6% Fuel Assembly', lattice_id=100)\n", - "assembly.dimension = (17, 17)\n", - "assembly.pitch = (1.26, 1.26)\n", - "assembly.lower_left = [-1.26 * 17. / 2.0] * 2\n", - "\n", - "# Create array indices for guide tube locations in lattice\n", - "template_x = np.array([5, 8, 11, 3, 13, 2, 5, 8, 11, 14, 2, 5, 8,\n", - " 11, 14, 2, 5, 8, 11, 14, 3, 13, 5, 8, 11])\n", - "template_y = np.array([2, 2, 2, 3, 3, 5, 5, 5, 5, 5, 8, 8, 8, 8,\n", - " 8, 11, 11, 11, 11, 11, 13, 13, 14, 14, 14])\n", - "\n", - "# Initialize an empty 17x17 array of the lattice universes\n", - "universes = np.empty((17, 17), dtype=openmc.Universe)\n", - "\n", - "# Fill the array with the fuel pin and guide tube universes\n", - "universes[:,:] = fuel_pin_universe\n", - "universes[template_x, template_y] = guide_tube_universe\n", - "\n", - "# Store the array of universes in the lattice\n", - "assembly.universes = universes\n", - "\n", - "# Create root Cell\n", - "root_cell = openmc.Cell(name='root cell', cell_id=0)\n", - "root_cell.fill = assembly\n", - "\n", - "# Add boundary planes\n", - "root_cell.region = +min_x & -max_x & +min_y & -max_y & +min_z & -max_z\n", - "\n", - "# Create root Universe\n", - "root_universe = openmc.Universe(universe_id=0, name='root universe')\n", - "root_universe.add_cell(root_cell)\n", - "\n", - "# Create Geometry and set root Universe\n", - "geometry = openmc.Geometry()\n", - "geometry.root_universe = root_universe\n", - "# Export to \"geometry.xml\"\n", - "geometry.export_to_xml()" + "No geometry file neeeds to be written as the continuous-energy file is correctly defined for the multi-group case as well." ] }, { @@ -1577,7 +1015,7 @@ }, { "cell_type": "code", - "execution_count": 34, + "execution_count": 33, "metadata": { "collapsed": true }, @@ -1602,9 +1040,10 @@ }, { "cell_type": "code", - "execution_count": 35, + "execution_count": 34, "metadata": { - "collapsed": false + "collapsed": false, + "scrolled": true }, "outputs": [ { @@ -1628,7 +1067,7 @@ " License: http://openmc.readthedocs.org/en/latest/license.html\n", " Version: 0.7.1\n", " Git SHA1: c779ca42c41a062a6a813e03f2add2d182ca9190\n", - " Date/Time: 2016-05-12 21:19:25\n", + " Date/Time: 2016-05-13 22:30:02\n", " OpenMP Threads: 4\n", "\n", " ===========================================================================\n", @@ -1643,11 +1082,8 @@ " Building neighboring cells lists for each surface...\n", " Loading Cross Section Data...\n", " Loading fuel.2m Data...\n", - " Loading fuel_clad.2m Data...\n", - " Loading fuel_mod.2m Data...\n", - " Loading gt_inmod.2m Data...\n", - " Loading gt_clad.2m Data...\n", - " Loading gt_outmod.2m Data...\n", + " Loading zircaloy.2m Data...\n", + " Loading water.2m Data...\n", " Initializing source particles...\n", "\n", " ===========================================================================\n", @@ -1656,507 +1092,57 @@ "\n", " Bat./Gen. k Average k \n", " ========= ======== ==================== \n", - " 1/1 1.01702 \n", - " 2/1 0.99463 \n", - " 3/1 1.02321 \n", - " 4/1 0.98628 \n", - " 5/1 1.03122 \n", - " 6/1 1.00774 \n", - " 7/1 1.05616 \n", - " 8/1 1.03051 \n", - " 9/1 1.02321 \n", - " 10/1 1.04380 \n", - " 11/1 1.05837 \n", - " 12/1 1.01514 1.03676 +/- 0.02161\n", - " 13/1 1.06720 1.04690 +/- 0.01608\n", - " 14/1 1.01696 1.03942 +/- 0.01361\n", - " 15/1 1.03549 1.03863 +/- 0.01057\n", - " 16/1 1.01599 1.03486 +/- 0.00942\n", - " 17/1 1.03070 1.03427 +/- 0.00799\n", - " 18/1 1.03778 1.03470 +/- 0.00693\n", - " 19/1 1.03042 1.03423 +/- 0.00613\n", - " 20/1 1.01047 1.03185 +/- 0.00598\n", - " 21/1 1.03251 1.03191 +/- 0.00541\n", - " 22/1 1.02047 1.03096 +/- 0.00503\n", - " 23/1 1.01729 1.02991 +/- 0.00474\n", - " 24/1 1.02948 1.02988 +/- 0.00439\n", - " 25/1 1.01963 1.02919 +/- 0.00414\n", - " 26/1 1.00626 1.02776 +/- 0.00413\n", - " 27/1 1.04531 1.02879 +/- 0.00402\n", - " 28/1 0.99936 1.02716 +/- 0.00412\n", - " 29/1 1.04497 1.02809 +/- 0.00401\n", - " 30/1 1.02429 1.02790 +/- 0.00381\n", - " 31/1 1.05112 1.02901 +/- 0.00379\n", - " 32/1 1.01843 1.02853 +/- 0.00365\n", - " 33/1 1.04478 1.02924 +/- 0.00355\n", - " 34/1 1.01719 1.02873 +/- 0.00344\n", - " 35/1 0.99873 1.02753 +/- 0.00351\n", - " 36/1 1.00054 1.02649 +/- 0.00353\n", - " 37/1 1.03986 1.02699 +/- 0.00343\n", - " 38/1 1.02243 1.02683 +/- 0.00331\n", - " 39/1 1.02744 1.02685 +/- 0.00319\n", - " 40/1 1.01174 1.02634 +/- 0.00313\n", - " 41/1 1.04973 1.02710 +/- 0.00312\n", - " 42/1 0.99564 1.02612 +/- 0.00317\n", - " 43/1 1.03022 1.02624 +/- 0.00308\n", - " 44/1 1.03526 1.02650 +/- 0.00300\n", - " 45/1 1.02143 1.02636 +/- 0.00292\n", - " 46/1 1.03264 1.02653 +/- 0.00284\n", - " 47/1 1.03868 1.02686 +/- 0.00278\n", - " 48/1 1.02385 1.02678 +/- 0.00271\n", - " 49/1 1.03897 1.02710 +/- 0.00266\n", - " 50/1 1.01267 1.02674 +/- 0.00261\n", - " 51/1 0.99683 1.02601 +/- 0.00265\n", - " 52/1 1.04189 1.02638 +/- 0.00261\n", - " 53/1 1.02871 1.02644 +/- 0.00255\n", - " 54/1 1.02564 1.02642 +/- 0.00250\n", - " 55/1 1.02955 1.02649 +/- 0.00244\n", - " 56/1 1.02390 1.02643 +/- 0.00239\n", - " 57/1 1.03342 1.02658 +/- 0.00234\n", - " 58/1 1.01430 1.02633 +/- 0.00231\n", - " 59/1 0.99242 1.02563 +/- 0.00236\n", - " 60/1 1.00442 1.02521 +/- 0.00235\n", - " 61/1 1.03870 1.02547 +/- 0.00232\n", - " 62/1 1.02146 1.02540 +/- 0.00228\n", - " 63/1 1.04782 1.02582 +/- 0.00227\n", - " 64/1 1.02872 1.02587 +/- 0.00223\n", - " 65/1 1.02420 1.02584 +/- 0.00219\n", - " 66/1 1.01974 1.02573 +/- 0.00215\n", - " 67/1 1.00774 1.02542 +/- 0.00214\n", - " 68/1 1.01323 1.02521 +/- 0.00211\n", - " 69/1 1.01468 1.02503 +/- 0.00208\n", - " 70/1 1.02869 1.02509 +/- 0.00205\n", - " 71/1 1.02284 1.02505 +/- 0.00202\n", - " 72/1 1.04815 1.02543 +/- 0.00202\n", - " 73/1 1.01119 1.02520 +/- 0.00200\n", - " 74/1 1.03314 1.02533 +/- 0.00197\n", - " 75/1 1.02333 1.02529 +/- 0.00194\n", - " 76/1 1.04030 1.02552 +/- 0.00193\n", - " 77/1 1.02537 1.02552 +/- 0.00190\n", - " 78/1 1.02875 1.02557 +/- 0.00187\n", - " 79/1 1.03588 1.02572 +/- 0.00185\n", - " 80/1 1.05250 1.02610 +/- 0.00186\n", - " 81/1 1.00477 1.02580 +/- 0.00186\n", - " 82/1 1.03903 1.02598 +/- 0.00184\n", - " 83/1 1.02378 1.02595 +/- 0.00182\n", - " 84/1 1.01107 1.02575 +/- 0.00180\n", - " 85/1 1.01550 1.02561 +/- 0.00178\n", - " 86/1 1.00540 1.02535 +/- 0.00178\n", - " 87/1 1.03056 1.02542 +/- 0.00176\n", - " 88/1 1.01742 1.02531 +/- 0.00174\n", - " 89/1 0.99730 1.02496 +/- 0.00175\n", - " 90/1 1.03569 1.02509 +/- 0.00174\n", - " 91/1 1.04514 1.02534 +/- 0.00173\n", - " 92/1 1.02757 1.02537 +/- 0.00171\n", - " 93/1 1.00610 1.02514 +/- 0.00171\n", - " 94/1 1.03576 1.02526 +/- 0.00169\n", - " 95/1 1.03732 1.02540 +/- 0.00168\n", - " 96/1 1.04784 1.02567 +/- 0.00168\n", - " 97/1 1.06507 1.02612 +/- 0.00172\n", - " 98/1 1.03673 1.02624 +/- 0.00170\n", - " 99/1 1.01270 1.02609 +/- 0.00169\n", - " 100/1 1.01980 1.02602 +/- 0.00167\n", - " 101/1 1.01357 1.02588 +/- 0.00166\n", - " 102/1 1.03125 1.02594 +/- 0.00164\n", - " 103/1 1.01527 1.02582 +/- 0.00163\n", - " 104/1 1.02403 1.02580 +/- 0.00161\n", - " 105/1 1.03435 1.02589 +/- 0.00160\n", - " 106/1 1.04113 1.02605 +/- 0.00159\n", - " 107/1 1.03291 1.02612 +/- 0.00157\n", - " 108/1 1.02478 1.02611 +/- 0.00156\n", - " 109/1 1.05814 1.02643 +/- 0.00158\n", - " 110/1 1.02647 1.02643 +/- 0.00156\n", - " 111/1 0.98951 1.02607 +/- 0.00159\n", - " 112/1 1.00739 1.02589 +/- 0.00158\n", - " 113/1 1.04165 1.02604 +/- 0.00157\n", - " 114/1 1.00047 1.02579 +/- 0.00158\n", - " 115/1 1.02550 1.02579 +/- 0.00156\n", - " 116/1 1.02408 1.02577 +/- 0.00155\n", - " 117/1 1.03110 1.02582 +/- 0.00153\n", - " 118/1 1.02874 1.02585 +/- 0.00152\n", - " 119/1 1.02348 1.02583 +/- 0.00151\n", - " 120/1 1.01969 1.02577 +/- 0.00149\n", - " 121/1 1.02312 1.02575 +/- 0.00148\n", - " 122/1 1.03261 1.02581 +/- 0.00147\n", - " 123/1 0.98394 1.02544 +/- 0.00150\n", - " 124/1 1.03771 1.02555 +/- 0.00149\n", - " 125/1 1.01857 1.02549 +/- 0.00148\n", - " 126/1 1.00066 1.02527 +/- 0.00148\n", - " 127/1 1.02372 1.02526 +/- 0.00147\n", - " 128/1 1.03307 1.02533 +/- 0.00146\n", - " 129/1 1.00889 1.02519 +/- 0.00145\n", - " 130/1 1.02053 1.02515 +/- 0.00144\n", - " 131/1 1.00943 1.02502 +/- 0.00144\n", - " 132/1 1.07225 1.02541 +/- 0.00148\n", - " 133/1 1.04068 1.02553 +/- 0.00147\n", - " 134/1 1.03509 1.02561 +/- 0.00146\n", - " 135/1 1.01250 1.02550 +/- 0.00145\n", - " 136/1 1.02179 1.02547 +/- 0.00144\n", - " 137/1 1.05685 1.02572 +/- 0.00145\n", - " 138/1 1.04217 1.02585 +/- 0.00144\n", - " 139/1 1.02793 1.02586 +/- 0.00143\n", - " 140/1 1.01207 1.02576 +/- 0.00143\n", - " 141/1 1.03445 1.02582 +/- 0.00142\n", - " 142/1 1.03579 1.02590 +/- 0.00141\n", - " 143/1 1.00786 1.02576 +/- 0.00140\n", - " 144/1 0.99089 1.02550 +/- 0.00142\n", - " 145/1 1.02617 1.02551 +/- 0.00141\n", - " 146/1 1.01691 1.02545 +/- 0.00140\n", - " 147/1 1.00692 1.02531 +/- 0.00139\n", - " 148/1 0.97702 1.02496 +/- 0.00143\n", - " 149/1 1.04002 1.02507 +/- 0.00142\n", - " 150/1 1.01262 1.02498 +/- 0.00141\n", - " 151/1 1.03613 1.02506 +/- 0.00141\n", - " 152/1 1.02920 1.02509 +/- 0.00140\n", - " 153/1 1.02199 1.02507 +/- 0.00139\n", - " 154/1 1.03421 1.02513 +/- 0.00138\n", - " 155/1 1.05882 1.02536 +/- 0.00139\n", - " 156/1 1.02649 1.02537 +/- 0.00138\n", - " 157/1 1.01933 1.02533 +/- 0.00137\n", - " 158/1 1.04269 1.02545 +/- 0.00137\n", - " 159/1 0.99604 1.02525 +/- 0.00137\n", - " 160/1 1.04748 1.02540 +/- 0.00137\n", - " 161/1 1.00501 1.02526 +/- 0.00137\n", - " 162/1 1.00550 1.02513 +/- 0.00137\n", - " 163/1 1.00115 1.02498 +/- 0.00137\n", - " 164/1 1.02283 1.02496 +/- 0.00136\n", - " 165/1 1.01964 1.02493 +/- 0.00135\n", - " 166/1 1.02287 1.02491 +/- 0.00134\n", - " 167/1 1.05498 1.02511 +/- 0.00134\n", - " 168/1 1.05267 1.02528 +/- 0.00135\n", - " 169/1 1.00474 1.02515 +/- 0.00135\n", - " 170/1 1.03469 1.02521 +/- 0.00134\n", - " 171/1 1.02499 1.02521 +/- 0.00133\n", - " 172/1 1.03961 1.02530 +/- 0.00132\n", - " 173/1 1.01240 1.02522 +/- 0.00132\n", - " 174/1 1.00762 1.02511 +/- 0.00132\n", - " 175/1 1.00200 1.02497 +/- 0.00131\n", - " 176/1 1.01449 1.02491 +/- 0.00131\n", - " 177/1 1.01111 1.02483 +/- 0.00130\n", - " 178/1 1.01208 1.02475 +/- 0.00130\n", - " 179/1 1.03304 1.02480 +/- 0.00129\n", - " 180/1 1.04504 1.02492 +/- 0.00129\n", - " 181/1 1.03476 1.02498 +/- 0.00128\n", - " 182/1 1.02124 1.02495 +/- 0.00128\n", - " 183/1 0.98855 1.02474 +/- 0.00128\n", - " 184/1 1.04689 1.02487 +/- 0.00128\n", - " 185/1 1.00618 1.02476 +/- 0.00128\n", - " 186/1 1.02012 1.02474 +/- 0.00127\n", - " 187/1 1.00162 1.02461 +/- 0.00127\n", - " 188/1 1.03269 1.02465 +/- 0.00127\n", - " 189/1 1.04772 1.02478 +/- 0.00127\n", - " 190/1 1.01132 1.02471 +/- 0.00126\n", - " 191/1 1.02669 1.02472 +/- 0.00125\n", - " 192/1 1.01154 1.02464 +/- 0.00125\n", - " 193/1 1.05795 1.02483 +/- 0.00126\n", - " 194/1 1.01615 1.02478 +/- 0.00125\n", - " 195/1 1.03828 1.02485 +/- 0.00125\n", - " 196/1 1.00695 1.02476 +/- 0.00124\n", - " 197/1 1.04126 1.02484 +/- 0.00124\n", - " 198/1 1.02834 1.02486 +/- 0.00123\n", - " 199/1 1.01000 1.02478 +/- 0.00123\n", - " 200/1 0.99294 1.02462 +/- 0.00123\n", - " 201/1 1.00248 1.02450 +/- 0.00123\n", - " 202/1 1.03461 1.02455 +/- 0.00123\n", - " 203/1 1.06289 1.02475 +/- 0.00124\n", - " 204/1 1.03010 1.02478 +/- 0.00123\n", - " 205/1 1.04636 1.02489 +/- 0.00123\n", - " 206/1 1.05434 1.02504 +/- 0.00123\n", - " 207/1 1.03993 1.02512 +/- 0.00123\n", - " 208/1 1.02672 1.02512 +/- 0.00122\n", - " 209/1 1.04958 1.02525 +/- 0.00122\n", - " 210/1 0.99194 1.02508 +/- 0.00123\n", - " 211/1 1.01570 1.02503 +/- 0.00122\n", - " 212/1 1.04079 1.02511 +/- 0.00122\n", - " 213/1 1.02961 1.02513 +/- 0.00121\n", - " 214/1 1.03797 1.02520 +/- 0.00121\n", - " 215/1 1.03714 1.02526 +/- 0.00120\n", - " 216/1 1.03299 1.02529 +/- 0.00120\n", - " 217/1 1.00461 1.02519 +/- 0.00120\n", - " 218/1 1.02386 1.02519 +/- 0.00119\n", - " 219/1 1.01955 1.02516 +/- 0.00119\n", - " 220/1 1.04372 1.02525 +/- 0.00118\n", - " 221/1 1.01694 1.02521 +/- 0.00118\n", - " 222/1 0.99642 1.02507 +/- 0.00118\n", - " 223/1 1.00999 1.02500 +/- 0.00118\n", - " 224/1 1.02703 1.02501 +/- 0.00117\n", - " 225/1 1.00236 1.02491 +/- 0.00117\n", - " 226/1 1.02825 1.02492 +/- 0.00117\n", - " 227/1 1.04535 1.02502 +/- 0.00116\n", - " 228/1 1.01779 1.02498 +/- 0.00116\n", - " 229/1 1.01058 1.02492 +/- 0.00116\n", - " 230/1 1.00391 1.02482 +/- 0.00115\n", - " 231/1 1.05990 1.02498 +/- 0.00116\n", - " 232/1 1.01885 1.02495 +/- 0.00116\n", - " 233/1 1.03204 1.02498 +/- 0.00115\n", - " 234/1 0.99396 1.02485 +/- 0.00115\n", - " 235/1 1.01828 1.02482 +/- 0.00115\n", - " 236/1 1.08225 1.02507 +/- 0.00117\n", - " 237/1 1.00335 1.02498 +/- 0.00117\n", - " 238/1 1.03097 1.02500 +/- 0.00117\n", - " 239/1 1.01738 1.02497 +/- 0.00116\n", - " 240/1 1.02261 1.02496 +/- 0.00116\n", - " 241/1 1.02814 1.02497 +/- 0.00115\n", - " 242/1 1.01158 1.02491 +/- 0.00115\n", - " 243/1 1.03507 1.02496 +/- 0.00114\n", - " 244/1 1.01914 1.02493 +/- 0.00114\n", - " 245/1 1.04555 1.02502 +/- 0.00114\n", - " 246/1 1.02459 1.02502 +/- 0.00113\n", - " 247/1 1.05827 1.02516 +/- 0.00114\n", - " 248/1 1.02549 1.02516 +/- 0.00113\n", - " 249/1 1.03354 1.02520 +/- 0.00113\n", - " 250/1 1.04186 1.02526 +/- 0.00113\n", - " 251/1 1.00466 1.02518 +/- 0.00112\n", - " 252/1 0.99065 1.02504 +/- 0.00113\n", - " 253/1 1.03065 1.02506 +/- 0.00112\n", - " 254/1 1.02167 1.02505 +/- 0.00112\n", - " 255/1 1.01700 1.02501 +/- 0.00112\n", - " 256/1 1.03619 1.02506 +/- 0.00111\n", - " 257/1 1.01833 1.02503 +/- 0.00111\n", - " 258/1 1.02211 1.02502 +/- 0.00110\n", - " 259/1 1.04348 1.02509 +/- 0.00110\n", - " 260/1 1.03444 1.02513 +/- 0.00110\n", - " 261/1 1.05597 1.02525 +/- 0.00110\n", - " 262/1 1.02085 1.02524 +/- 0.00110\n", - " 263/1 1.00552 1.02516 +/- 0.00109\n", - " 264/1 1.03976 1.02522 +/- 0.00109\n", - " 265/1 1.02810 1.02523 +/- 0.00109\n", - " 266/1 1.00911 1.02516 +/- 0.00108\n", - " 267/1 1.01963 1.02514 +/- 0.00108\n", - " 268/1 1.03732 1.02519 +/- 0.00108\n", - " 269/1 1.02422 1.02519 +/- 0.00107\n", - " 270/1 1.01546 1.02515 +/- 0.00107\n", - " 271/1 1.05488 1.02526 +/- 0.00107\n", - " 272/1 1.01709 1.02523 +/- 0.00107\n", - " 273/1 1.05629 1.02535 +/- 0.00107\n", - " 274/1 1.03864 1.02540 +/- 0.00107\n", - " 275/1 1.01472 1.02536 +/- 0.00106\n", - " 276/1 1.03425 1.02539 +/- 0.00106\n", - " 277/1 1.00663 1.02532 +/- 0.00106\n", - " 278/1 1.03326 1.02535 +/- 0.00106\n", - " 279/1 1.02571 1.02535 +/- 0.00105\n", - " 280/1 1.00525 1.02528 +/- 0.00105\n", - " 281/1 1.00451 1.02520 +/- 0.00105\n", - " 282/1 1.04016 1.02526 +/- 0.00105\n", - " 283/1 0.98343 1.02510 +/- 0.00105\n", - " 284/1 1.04843 1.02519 +/- 0.00105\n", - " 285/1 1.01807 1.02516 +/- 0.00105\n", - " 286/1 1.02393 1.02516 +/- 0.00105\n", - " 287/1 1.01851 1.02514 +/- 0.00104\n", - " 288/1 1.03976 1.02519 +/- 0.00104\n", - " 289/1 1.03153 1.02521 +/- 0.00104\n", - " 290/1 1.00416 1.02514 +/- 0.00104\n", - " 291/1 1.01426 1.02510 +/- 0.00103\n", - " 292/1 1.02583 1.02510 +/- 0.00103\n", - " 293/1 1.01680 1.02507 +/- 0.00103\n", - " 294/1 1.04578 1.02514 +/- 0.00103\n", - " 295/1 1.03162 1.02517 +/- 0.00102\n", - " 296/1 1.01682 1.02514 +/- 0.00102\n", - " 297/1 1.00488 1.02507 +/- 0.00102\n", - " 298/1 1.03057 1.02508 +/- 0.00101\n", - " 299/1 1.01126 1.02504 +/- 0.00101\n", - " 300/1 1.03528 1.02507 +/- 0.00101\n", - " 301/1 1.05548 1.02518 +/- 0.00101\n", - " 302/1 1.02994 1.02519 +/- 0.00101\n", - " 303/1 1.03010 1.02521 +/- 0.00100\n", - " 304/1 1.04031 1.02526 +/- 0.00100\n", - " 305/1 1.05866 1.02537 +/- 0.00101\n", - " 306/1 1.03602 1.02541 +/- 0.00100\n", - " 307/1 1.01362 1.02537 +/- 0.00100\n", - " 308/1 1.01318 1.02533 +/- 0.00100\n", - " 309/1 1.04262 1.02539 +/- 0.00100\n", - " 310/1 1.01626 1.02536 +/- 0.00099\n", - " 311/1 1.00285 1.02528 +/- 0.00099\n", - " 312/1 0.98155 1.02514 +/- 0.00100\n", - " 313/1 1.05649 1.02524 +/- 0.00100\n", - " 314/1 1.00960 1.02519 +/- 0.00100\n", - " 315/1 1.05350 1.02528 +/- 0.00100\n", - " 316/1 1.03842 1.02533 +/- 0.00100\n", - " 317/1 1.01394 1.02529 +/- 0.00100\n", - " 318/1 1.01830 1.02527 +/- 0.00099\n", - " 319/1 1.02050 1.02525 +/- 0.00099\n", - " 320/1 1.03402 1.02528 +/- 0.00099\n", - " 321/1 1.04547 1.02534 +/- 0.00099\n", - " 322/1 1.02579 1.02534 +/- 0.00098\n", - " 323/1 1.01922 1.02533 +/- 0.00098\n", - " 324/1 1.01050 1.02528 +/- 0.00098\n", - " 325/1 1.01426 1.02524 +/- 0.00098\n", - " 326/1 1.03283 1.02527 +/- 0.00097\n", - " 327/1 1.03859 1.02531 +/- 0.00097\n", - " 328/1 1.01536 1.02528 +/- 0.00097\n", - " 329/1 1.03149 1.02530 +/- 0.00097\n", - " 330/1 1.04328 1.02535 +/- 0.00096\n", - " 331/1 1.01949 1.02534 +/- 0.00096\n", - " 332/1 1.02319 1.02533 +/- 0.00096\n", - " 333/1 1.01704 1.02530 +/- 0.00096\n", - " 334/1 1.02691 1.02531 +/- 0.00095\n", - " 335/1 1.03188 1.02533 +/- 0.00095\n", - " 336/1 1.03107 1.02535 +/- 0.00095\n", - " 337/1 1.02410 1.02534 +/- 0.00094\n", - " 338/1 0.99917 1.02526 +/- 0.00094\n", - " 339/1 1.03593 1.02529 +/- 0.00094\n", - " 340/1 1.02286 1.02529 +/- 0.00094\n", - " 341/1 1.04154 1.02534 +/- 0.00094\n", - " 342/1 1.01664 1.02531 +/- 0.00094\n", - " 343/1 1.01041 1.02527 +/- 0.00093\n", - " 344/1 1.02033 1.02525 +/- 0.00093\n", - " 345/1 1.03137 1.02527 +/- 0.00093\n", - " 346/1 1.02162 1.02526 +/- 0.00093\n", - " 347/1 1.00835 1.02521 +/- 0.00092\n", - " 348/1 1.01168 1.02517 +/- 0.00092\n", - " 349/1 1.01168 1.02513 +/- 0.00092\n", - " 350/1 1.03509 1.02516 +/- 0.00092\n", - " 351/1 1.01883 1.02514 +/- 0.00092\n", - " 352/1 1.04314 1.02519 +/- 0.00091\n", - " 353/1 0.99067 1.02509 +/- 0.00092\n", - " 354/1 1.03100 1.02511 +/- 0.00091\n", - " 355/1 1.01664 1.02508 +/- 0.00091\n", - " 356/1 1.02193 1.02507 +/- 0.00091\n", - " 357/1 1.03213 1.02509 +/- 0.00091\n", - " 358/1 1.00555 1.02504 +/- 0.00091\n", - " 359/1 1.04849 1.02511 +/- 0.00091\n", - " 360/1 1.02174 1.02510 +/- 0.00090\n", - " 361/1 1.05064 1.02517 +/- 0.00090\n", - " 362/1 1.05274 1.02525 +/- 0.00091\n", - " 363/1 1.00932 1.02520 +/- 0.00090\n", - " 364/1 1.03400 1.02523 +/- 0.00090\n", - " 365/1 1.00149 1.02516 +/- 0.00090\n", - " 366/1 1.01631 1.02514 +/- 0.00090\n", - " 367/1 1.03928 1.02517 +/- 0.00090\n", - " 368/1 1.01318 1.02514 +/- 0.00090\n", - " 369/1 1.04610 1.02520 +/- 0.00090\n", - " 370/1 1.04338 1.02525 +/- 0.00089\n", - " 371/1 1.01638 1.02523 +/- 0.00089\n", - " 372/1 1.04056 1.02527 +/- 0.00089\n", - " 373/1 1.00090 1.02520 +/- 0.00089\n", - " 374/1 1.01261 1.02517 +/- 0.00089\n", - " 375/1 1.03919 1.02520 +/- 0.00089\n", - " 376/1 0.99900 1.02513 +/- 0.00089\n", - " 377/1 1.00168 1.02507 +/- 0.00089\n", - " 378/1 0.99476 1.02499 +/- 0.00089\n", - " 379/1 1.04960 1.02505 +/- 0.00089\n", - " 380/1 0.99797 1.02498 +/- 0.00089\n", - " 381/1 1.04956 1.02505 +/- 0.00089\n", - " 382/1 1.02803 1.02505 +/- 0.00089\n", - " 383/1 0.99388 1.02497 +/- 0.00089\n", - " 384/1 1.00767 1.02492 +/- 0.00089\n", - " 385/1 1.00856 1.02488 +/- 0.00089\n", - " 386/1 1.02997 1.02489 +/- 0.00088\n", - " 387/1 0.97841 1.02477 +/- 0.00089\n", - " 388/1 0.99712 1.02470 +/- 0.00089\n", - " 389/1 0.99072 1.02461 +/- 0.00089\n", - " 390/1 1.02439 1.02461 +/- 0.00089\n", - " 391/1 1.02769 1.02462 +/- 0.00089\n", - " 392/1 1.02205 1.02461 +/- 0.00089\n", - " 393/1 1.03702 1.02464 +/- 0.00088\n", - " 394/1 1.00274 1.02458 +/- 0.00088\n", - " 395/1 1.00131 1.02452 +/- 0.00088\n", - " 396/1 1.00130 1.02446 +/- 0.00088\n", - " 397/1 1.00472 1.02441 +/- 0.00088\n", - " 398/1 1.00724 1.02437 +/- 0.00088\n", - " 399/1 1.03061 1.02438 +/- 0.00088\n", - " 400/1 0.99651 1.02431 +/- 0.00088\n", - " 401/1 0.99290 1.02423 +/- 0.00088\n", - " 402/1 1.02166 1.02423 +/- 0.00088\n", - " 403/1 1.01691 1.02421 +/- 0.00088\n", - " 404/1 1.00492 1.02416 +/- 0.00088\n", - " 405/1 1.00663 1.02411 +/- 0.00088\n", - " 406/1 1.01865 1.02410 +/- 0.00087\n", - " 407/1 1.02717 1.02411 +/- 0.00087\n", - " 408/1 1.01793 1.02409 +/- 0.00087\n", - " 409/1 1.02606 1.02410 +/- 0.00087\n", - " 410/1 1.03809 1.02413 +/- 0.00087\n", - " 411/1 1.03780 1.02417 +/- 0.00086\n", - " 412/1 1.02782 1.02418 +/- 0.00086\n", - " 413/1 1.03077 1.02419 +/- 0.00086\n", - " 414/1 1.00651 1.02415 +/- 0.00086\n", - " 415/1 1.05594 1.02423 +/- 0.00086\n", - " 416/1 0.99558 1.02416 +/- 0.00086\n", - " 417/1 1.00689 1.02411 +/- 0.00086\n", - " 418/1 1.02932 1.02413 +/- 0.00086\n", - " 419/1 1.03552 1.02415 +/- 0.00086\n", - " 420/1 1.03735 1.02419 +/- 0.00085\n", - " 421/1 1.02402 1.02419 +/- 0.00085\n", - " 422/1 1.04227 1.02423 +/- 0.00085\n", - " 423/1 1.03087 1.02425 +/- 0.00085\n", - " 424/1 1.04363 1.02429 +/- 0.00085\n", - " 425/1 1.02676 1.02430 +/- 0.00085\n", - " 426/1 1.03739 1.02433 +/- 0.00085\n", - " 427/1 1.02977 1.02434 +/- 0.00084\n", - " 428/1 1.02547 1.02435 +/- 0.00084\n", - " 429/1 1.03552 1.02437 +/- 0.00084\n", - " 430/1 1.04282 1.02442 +/- 0.00084\n", - " 431/1 1.03171 1.02443 +/- 0.00084\n", - " 432/1 1.01030 1.02440 +/- 0.00084\n", - " 433/1 1.04168 1.02444 +/- 0.00084\n", - " 434/1 0.98994 1.02436 +/- 0.00084\n", - " 435/1 0.98166 1.02426 +/- 0.00084\n", - " 436/1 1.00178 1.02421 +/- 0.00084\n", - " 437/1 1.03801 1.02424 +/- 0.00084\n", - " 438/1 1.02099 1.02423 +/- 0.00084\n", - " 439/1 1.01305 1.02421 +/- 0.00084\n", - " 440/1 1.02286 1.02420 +/- 0.00083\n", - " 441/1 1.03697 1.02423 +/- 0.00083\n", - " 442/1 0.99050 1.02415 +/- 0.00083\n", - " 443/1 1.02238 1.02415 +/- 0.00083\n", - " 444/1 1.05188 1.02421 +/- 0.00083\n", - " 445/1 1.03150 1.02423 +/- 0.00083\n", - " 446/1 1.01071 1.02420 +/- 0.00083\n", - " 447/1 1.03713 1.02423 +/- 0.00083\n", - " 448/1 1.03631 1.02426 +/- 0.00083\n", - " 449/1 1.02968 1.02427 +/- 0.00083\n", - " 450/1 1.03031 1.02428 +/- 0.00082\n", - " 451/1 1.02161 1.02428 +/- 0.00082\n", - " 452/1 0.99036 1.02420 +/- 0.00082\n", - " 453/1 1.02581 1.02420 +/- 0.00082\n", - " 454/1 1.03140 1.02422 +/- 0.00082\n", - " 455/1 1.01962 1.02421 +/- 0.00082\n", - " 456/1 1.00680 1.02417 +/- 0.00082\n", - " 457/1 1.00178 1.02412 +/- 0.00082\n", - " 458/1 1.02306 1.02412 +/- 0.00082\n", - " 459/1 1.02653 1.02412 +/- 0.00081\n", - " 460/1 1.02934 1.02413 +/- 0.00081\n", - " 461/1 1.00872 1.02410 +/- 0.00081\n", - " 462/1 1.00012 1.02405 +/- 0.00081\n", - " 463/1 0.99057 1.02397 +/- 0.00081\n", - " 464/1 1.02353 1.02397 +/- 0.00081\n", - " 465/1 1.01402 1.02395 +/- 0.00081\n", - " 466/1 1.01651 1.02393 +/- 0.00081\n", - " 467/1 1.01024 1.02390 +/- 0.00081\n", - " 468/1 1.02504 1.02391 +/- 0.00080\n", - " 469/1 1.00891 1.02387 +/- 0.00080\n", - " 470/1 1.04038 1.02391 +/- 0.00080\n", - " 471/1 1.04346 1.02395 +/- 0.00080\n", - " 472/1 1.02634 1.02396 +/- 0.00080\n", - " 473/1 1.01207 1.02393 +/- 0.00080\n", - " 474/1 1.00787 1.02390 +/- 0.00080\n", - " 475/1 1.03591 1.02392 +/- 0.00080\n", - " 476/1 1.04257 1.02396 +/- 0.00080\n", - " 477/1 1.00536 1.02392 +/- 0.00079\n", - " 478/1 1.07545 1.02403 +/- 0.00080\n", - " 479/1 1.02306 1.02403 +/- 0.00080\n", - " 480/1 1.02733 1.02404 +/- 0.00080\n", - " 481/1 1.00990 1.02401 +/- 0.00080\n", - " 482/1 0.99031 1.02394 +/- 0.00080\n", - " 483/1 0.98006 1.02384 +/- 0.00080\n", - " 484/1 1.05635 1.02391 +/- 0.00080\n", - " 485/1 1.02410 1.02391 +/- 0.00080\n", - " 486/1 1.01227 1.02389 +/- 0.00080\n", - " 487/1 1.00614 1.02385 +/- 0.00080\n", - " 488/1 1.01837 1.02384 +/- 0.00080\n", - " 489/1 1.02565 1.02384 +/- 0.00080\n", - " 490/1 1.00530 1.02381 +/- 0.00079\n", - " 491/1 1.01958 1.02380 +/- 0.00079\n", - " 492/1 1.04490 1.02384 +/- 0.00079\n", - " 493/1 1.02567 1.02384 +/- 0.00079\n", - " 494/1 1.03865 1.02387 +/- 0.00079\n", - " 495/1 1.03990 1.02391 +/- 0.00079\n", - " 496/1 0.98352 1.02382 +/- 0.00079\n", - " 497/1 1.00909 1.02379 +/- 0.00079\n", - " 498/1 1.03661 1.02382 +/- 0.00079\n", - " 499/1 1.04423 1.02386 +/- 0.00079\n", - " 500/1 1.06406 1.02394 +/- 0.00079\n", - " Creating state point statepoint.500.h5...\n", + " 1/1 1.02073 \n", + " 2/1 1.04004 \n", + " 3/1 1.02324 \n", + " 4/1 1.01690 \n", + " 5/1 1.03702 \n", + " 6/1 1.01796 \n", + " 7/1 1.01779 \n", + " 8/1 1.02764 \n", + " 9/1 1.03324 \n", + " 10/1 1.01465 \n", + " 11/1 1.02268 \n", + " 12/1 1.01598 1.01933 +/- 0.00335\n", + " 13/1 1.01993 1.01953 +/- 0.00194\n", + " 14/1 1.01779 1.01910 +/- 0.00144\n", + " 15/1 1.01014 1.01731 +/- 0.00211\n", + " 16/1 1.04059 1.02119 +/- 0.00425\n", + " 17/1 1.04877 1.02513 +/- 0.00533\n", + " 18/1 1.05504 1.02887 +/- 0.00594\n", + " 19/1 1.02601 1.02855 +/- 0.00525\n", + " 20/1 1.04347 1.03004 +/- 0.00493\n", + " 21/1 1.01703 1.02886 +/- 0.00461\n", + " 22/1 1.02628 1.02864 +/- 0.00421\n", + " 23/1 1.02598 1.02844 +/- 0.00388\n", + " 24/1 1.05341 1.03022 +/- 0.00401\n", + " 25/1 1.02201 1.02967 +/- 0.00377\n", + " 26/1 1.00758 1.02829 +/- 0.00379\n", + " 27/1 1.00720 1.02705 +/- 0.00377\n", + " 28/1 1.03098 1.02727 +/- 0.00356\n", + " 29/1 1.03022 1.02743 +/- 0.00337\n", + " 30/1 1.01694 1.02690 +/- 0.00324\n", + " 31/1 0.99064 1.02518 +/- 0.00353\n", + " 32/1 0.99495 1.02380 +/- 0.00364\n", + " 33/1 1.03220 1.02417 +/- 0.00350\n", + " 34/1 1.02399 1.02416 +/- 0.00335\n", + " 35/1 1.03048 1.02441 +/- 0.00322\n", + " 36/1 1.05360 1.02553 +/- 0.00329\n", + " 37/1 1.05030 1.02645 +/- 0.00330\n", + " 38/1 1.04167 1.02699 +/- 0.00322\n", + " 39/1 1.04406 1.02758 +/- 0.00317\n", + " 40/1 1.01169 1.02705 +/- 0.00310\n", + " 41/1 1.00191 1.02624 +/- 0.00311\n", + " 42/1 1.02729 1.02628 +/- 0.00301\n", + " 43/1 1.02263 1.02616 +/- 0.00292\n", + " 44/1 1.05344 1.02697 +/- 0.00295\n", + " 45/1 1.03607 1.02723 +/- 0.00287\n", + " 46/1 1.00357 1.02657 +/- 0.00287\n", + " 47/1 1.03353 1.02676 +/- 0.00279\n", + " 48/1 1.03817 1.02706 +/- 0.00274\n", + " 49/1 1.01454 1.02674 +/- 0.00269\n", + " 50/1 0.99860 1.02603 +/- 0.00271\n", + " Creating state point statepoint.50.h5...\n", "\n", " ===========================================================================\n", " ======================> SIMULATION FINISHED <======================\n", @@ -2165,27 +1151,27 @@ "\n", " =======================> TIMING STATISTICS <=======================\n", "\n", - " Total time for initialization = 5.3000E-02 seconds\n", - " Reading cross sections = 5.0000E-03 seconds\n", - " Total time in simulation = 1.8631E+02 seconds\n", - " Time in transport only = 1.8590E+02 seconds\n", - " Time in inactive batches = 1.1710E+00 seconds\n", - " Time in active batches = 1.8514E+02 seconds\n", - " Time synchronizing fission bank = 7.3000E-02 seconds\n", - " Sampling source sites = 5.1000E-02 seconds\n", - " SEND/RECV source sites = 2.2000E-02 seconds\n", - " Time accumulating tallies = 4.0000E-03 seconds\n", + " Total time for initialization = 3.7000E-02 seconds\n", + " Reading cross sections = 4.0000E-03 seconds\n", + " Total time in simulation = 1.2661E+01 seconds\n", + " Time in transport only = 1.2600E+01 seconds\n", + " Time in inactive batches = 1.1370E+00 seconds\n", + " Time in active batches = 1.1524E+01 seconds\n", + " Time synchronizing fission bank = 7.0000E-03 seconds\n", + " Sampling source sites = 5.0000E-03 seconds\n", + " SEND/RECV source sites = 2.0000E-03 seconds\n", + " Time accumulating tallies = 0.0000E+00 seconds\n", " Total time for finalization = 0.0000E+00 seconds\n", - " Total time elapsed = 1.8637E+02 seconds\n", - " Calculation Rate (inactive) = 42698.5 neutrons/second\n", - " Calculation Rate (active) = 13233.2 neutrons/second\n", + " Total time elapsed = 1.2707E+01 seconds\n", + " Calculation Rate (inactive) = 43975.4 neutrons/second\n", + " Calculation Rate (active) = 17355.1 neutrons/second\n", "\n", " ============================> RESULTS <============================\n", "\n", - " k-effective (Collision) = 1.02403 +/- 0.00071\n", - " k-effective (Track-length) = 1.02394 +/- 0.00079\n", - " k-effective (Absorption) = 1.02539 +/- 0.00044\n", - " Combined k-effective = 1.02518 +/- 0.00042\n", + " k-effective (Collision) = 1.02471 +/- 0.00243\n", + " k-effective (Track-length) = 1.02603 +/- 0.00271\n", + " k-effective (Absorption) = 1.02312 +/- 0.00182\n", + " Combined k-effective = 1.02387 +/- 0.00172\n", " Leakage Fraction = 0.00000 +/- 0.00000\n", "\n" ] @@ -2196,7 +1182,7 @@ "0" ] }, - "execution_count": 35, + "execution_count": 34, "metadata": {}, "output_type": "execute_result" } @@ -2219,7 +1205,7 @@ }, { "cell_type": "code", - "execution_count": 36, + "execution_count": 35, "metadata": { "collapsed": false }, @@ -2239,7 +1225,7 @@ }, { "cell_type": "code", - "execution_count": 37, + "execution_count": 36, "metadata": { "collapsed": true }, @@ -2257,7 +1243,7 @@ }, { "cell_type": "code", - "execution_count": 38, + "execution_count": 37, "metadata": { "collapsed": false }, @@ -2266,9 +1252,9 @@ "name": "stdout", "output_type": "stream", "text": [ - "Continuous-Energy keff = 1.025194\n", - "Multi-Group keff = 1.025183\n", - "bias [pcm]: 1.1\n" + "Continuous-Energy keff = 1.024295\n", + "Multi-Group keff = 1.023875\n", + "bias [pcm]: 42.0\n" ] } ], @@ -2284,7 +1270,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "We see quite good agreement with only an 1 pcm difference between the two. While these results are quite favorable, due to the high degree of approximations inherent in practical application of multi-group theory, one should not expect results of such fidelity always for multi-group Monte Carlo calculations." + "We see quite good agreement with only a 42 pcm difference between the two methods. Due to the high degree of approximations inherent in practical application of multi-group theory, one should not expect results of such high fidelity always for multi-group Monte Carlo calculations." ] }, { @@ -2305,7 +1291,7 @@ }, { "cell_type": "code", - "execution_count": 39, + "execution_count": 38, "metadata": { "collapsed": false }, @@ -2313,39 +1299,39 @@ "source": [ "# Get the OpenMC fission rate mesh tally data\n", "mg_mesh_tally = mgsp.get_tally(name='mesh tally')\n", - "mgopenmc_fission_rates = mg_mesh_tally.get_values(scores=['fission'])\n", + "mg_fission_rates = mg_mesh_tally.get_values(scores=['fission'])\n", "\n", "# Reshape array to 2D for plotting\n", - "mgopenmc_fission_rates.shape = (17,17)\n", + "mg_fission_rates.shape = (17,17)\n", "\n", "# Normalize to the average pin power\n", - "mgopenmc_fission_rates /= np.mean(mgopenmc_fission_rates)" + "mg_fission_rates /= np.mean(mg_fission_rates)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "Now we can do the same for the Multi-Group results." + "Now we can do the same for the Continuous-Energy results." ] }, { "cell_type": "code", - "execution_count": 40, + "execution_count": 39, "metadata": { - "collapsed": true + "collapsed": false }, "outputs": [], "source": [ "# Get the OpenMC fission rate mesh tally data\n", - "mesh_tally = sp.get_tally(name='mesh tally')\n", - "openmc_fission_rates = mesh_tally.get_values(scores=['fission'])\n", + "ce_mesh_tally = sp.get_tally(name='mesh tally')\n", + "ce_fission_rates = ce_mesh_tally.get_values(scores=['fission'])\n", "\n", "# Reshape array to 2D for plotting\n", - "openmc_fission_rates.shape = (17,17)\n", + "ce_fission_rates.shape = (17,17)\n", "\n", "# Normalize to the average pin power\n", - "openmc_fission_rates /= np.mean(openmc_fission_rates)" + "ce_fission_rates /= np.mean(ce_fission_rates)" ] }, { @@ -2357,7 +1343,7 @@ }, { "cell_type": "code", - "execution_count": 41, + "execution_count": 40, "metadata": { "collapsed": false }, @@ -2365,18 +1351,18 @@ { "data": { "text/plain": [ - "" + "" ] }, - "execution_count": 41, + "execution_count": 40, "metadata": {}, "output_type": "execute_result" }, { "data": { - "image/png": "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\n", + "image/png": "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\nMIunubFhPwAAAABJRU5ErkJggg==\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -2386,12 +1372,12 @@ "source": [ "# Plot the CE fission rates in the left subplot\n", "fig = plt.subplot(121)\n", - "plt.imshow(openmc_fission_rates, interpolation='none', cmap='jet')\n", + "plt.imshow(ce_fission_rates, interpolation='none', cmap='jet')\n", "plt.title('Continuous-Energy Fission Rates')\n", "\n", "# Plot the MG fission rates in the right subplot\n", "fig2 = plt.subplot(122)\n", - "plt.imshow(mgopenmc_fission_rates, interpolation='none', cmap='jet')\n", + "plt.imshow(mg_fission_rates, interpolation='none', cmap='jet')\n", "plt.title('Multi-Group Fission Rates')\n" ] }, diff --git a/docs/source/usersguide/mgxs_library.rst b/docs/source/usersguide/mgxs_library.rst index a5d2ec0d0..8628bef4e 100644 --- a/docs/source/usersguide/mgxs_library.rst +++ b/docs/source/usersguide/mgxs_library.rst @@ -8,10 +8,10 @@ OpenMC can be run in continuous-energy mode or multi-group mode, provided the nuclear data is available. In continuous-energy mode, the ``cross_sections.xml`` file contains necessary meta-data for each data set, including the name and a file system location where the complete library -can be found. In multi-group mode, this ``cross_sections.xml`` file contains +can be found. In multi-group mode, this ``mgxs.xml`` file contains this same meta-data describing the nuclide or material, but also contains the group-wise nuclear data. This portion of the manual describes the format of -the multi-group data library required to be used in the ``cross_sections.xml`` +the multi-group data library required to be used in the ``mgxs.xml`` file. Similar to the other input file types, the multi-group library is provided in @@ -23,7 +23,7 @@ materials. .. _XML: http://www.w3.org/XML/ ------------------------------------------------ -MGXS Library Specification -- cross_sections.xml +MGXS Library Specification -- mgxs.xml ------------------------------------------------ The multi-group library meta-data is contained within the groups_, diff --git a/openmc/material.py b/openmc/material.py index e9a74f1e7..02cbc117d 100644 --- a/openmc/material.py +++ b/openmc/material.py @@ -348,7 +348,9 @@ class Material(object): del self._nuclides[nuclide._name] def add_macroscopic(self, macroscopic): - """Add a macroscopic to the material + """Add a macroscopic to the material. This will also set the + density of the material to 1.0, unless it has been otherwise set, + as a default for Macroscopic cross sections. Parameters ---------- @@ -386,6 +388,14 @@ class Material(object): 'Material!'.format(self._id, macroscopic) raise ValueError(msg) + # Generally speaking, the density for a macroscopic object will + # be 1.0. Therefore, lets set density to 1.0 so that the user + # doesnt need to set it unless its needed. + # Of course, if the user has already set a value of density, + # then we will not override it. + if self._density is None: + self.set_density('macro', 1.0) + def remove_macroscopic(self, macroscopic): """Remove a macroscopic from the material diff --git a/openmc/mgxs/library.py b/openmc/mgxs/library.py index 334a0fa9c..44746e209 100644 --- a/openmc/mgxs/library.py +++ b/openmc/mgxs/library.py @@ -722,11 +722,140 @@ class Library(object): # Load and return pickled Library object return pickle.load(open(full_filename, 'rb')) - def write_mg_library(self, xs_type='macro', domain_names=None, xs_ids=None, - filename='mg_cross_sections', directory='./', - return_names=False): - """Creates a cross-section data library file for the Multi-Group - mode of OpenMC. + def get_xsdata(self, domain, domain_name, nuclide='total', xs_type='macro', + xs_id='1m', order=-1): + """Generates an openmc.XSdata object describing a multi-group cross section + data set for eventual combination in to an openmc.MGXSLibrary object + (i.e., the library). + + Parameters + ---------- + domain : openmc.Material or openmc.Cell or openmc.Universe + The domain for spatial homogenization + domain_name : str + Name to apply to the "xsdata" entry produced by this method + nuclide : str + A nuclide name string (e.g., 'U-235'). Defaults to 'total' to + obtain a material-wise macroscopic cross section. + xs_type: {'macro', 'micro'} + Provide the macro or micro cross section in units of cm^-1 or + barns. Defaults to 'macro'. If the Library object is not tallied by + nuclide this will be set to 'macro' regardless. + xs_ids : str + Cross section set identifier. Defaults to '1m'. + order : Scattering order for this dataset entry. Default is -1, + which will force the XSdata object to use whatever the maximum + order available. + + Returns + ------- + xsdata : openmc.XSdata + Multi-Group Cross Section data set object. + + Raises + ------ + ValueError + When the Library object is initialized with insufficient types of + cross sections for the Library. + + See also + -------- + Library.create_mg_library(...) + + """ + + cv.check_type('domain', domain, (openmc.Material, openmc.Cell, + openmc.Cell)) + cv.check_type('domain_name', domain_name, basestring) + cv.check_type('nuclide', nuclide, basestring) + cv.check_value('xs_type', xs_type, ['macro', 'micro']) + cv.check_type('xs_id', xs_id, basestring) + cv.check_type('order', order, Integral) + cv.check_greater_than('order', order, -1, equality=True) + + # Make sure statepoint has been loaded + if self._sp_filename is None: + msg = 'A StatePoint must be loaded before calling ' \ + 'the create_mg_library() function' + raise ValueError(msg) + + # If gathering material-specific data, set the xs_type to macro + if not self.by_nuclide: + xs_type = 'macro' + + # Build & add metadata to XSdata object + name = domain_name + if nuclide is not 'total': + name += '_' + nuclide + name += '.' + xs_id + xsdata = openmc.XSdata(name, self.energy_groups) + xsdata.order = order + if nuclide is not 'total': + xsdata.zaid = self._nuclides[nuclide][0] + xsdata.awr = self._nuclides[nuclide][1] + + # Now get xs data itself + if 'transport' in self.mgxs_types: + mymgxs = self.get_mgxs(domain, 'transport') + xsdata.set_total_mgxs(mymgxs, xs_type=xs_type, nuclide=[nuclide]) + elif 'total' in self.mgxs_types: + mymgxs = self.get_mgxs(domain, 'total') + xsdata.set_total_mgxs(mymgxs, xs_type=xs_type, nuclide=[nuclide]) + if 'absorption' in self.mgxs_types: + mymgxs = self.get_mgxs(domain, 'absorption') + xsdata.set_absorption_mgxs(mymgxs, xs_type=xs_type, + nuclide=[nuclide]) + if 'fission' in self.mgxs_types: + mymgxs = self.get_mgxs(domain, 'fission') + xsdata.set_fission_mgxs(mymgxs, xs_type=xs_type, + nuclide=[nuclide]) + if 'kappa-fission' in self.mgxs_types: + mymgxs = self.get_mgxs(domain, 'kappa-fission') + xsdata.set_kappa_fission_mgxs(mymgxs, xs_type=xs_type, + nuclide=[nuclide]) + if 'chi' in self.mgxs_types: + mymgxs = self.get_mgxs(domain, 'chi') + xsdata.set_chi_mgxs(mymgxs, xs_type=xs_type, nuclide=[nuclide]) + if 'nu-fission' in self.mgxs_types: + mymgxs = self.get_mgxs(domain, 'nu-fission') + xsdata.set_nu_fission_mgxs(mymgxs, xs_type=xs_type, + nuclide=[nuclide]) + # multiplicity requires scatter and nu-scatter + if ((('scatter matrix' in self.mgxs_types) and + ('nu-scatter matrix' in self.mgxs_types))): + scatt_mgxs = self.get_mgxs(domain, 'scatter matrix') + nuscatt_mgxs = self.get_mgxs(domain, 'nu-scatter matrix') + xsdata.set_multiplicity_mgxs(nuscatt_mgxs, scatt_mgxs, + xs_type=xs_type, nuclide=[nuclide]) + using_multiplicity = True + else: + using_multiplicity = False + + if using_multiplicity: + nuscatt_mgxs = self.get_mgxs(domain, 'nu-scatter matrix') + xsdata.set_scatter_mgxs(nuscatt_mgxs, xs_type=xs_type, + nuclide=[nuclide]) + else: + if 'nu-scatter matrix' in self.mgxs_types: + nuscatt_mgxs = self.get_mgxs(domain, 'nu-scatter matrix') + xsdata.set_scatter_mgxs(nuscatt_mgxs, xs_type=xs_type, + nuclide=[nuclide]) + + # Since we are not using multiplicity, then + # scattering multiplication (nu-scatter) must be + # accounted for approximately by using an adjusted + # absorption cross section. + if 'total' in self.mgxs_types: + xsdata._absorption = \ + np.subtract(xsdata.total, + np.sum(xsdata.scatter[0, :, :], axis=1)) + + return xsdata + + def create_mg_library(self, xs_type='macro', domain_names=None, + xs_ids=None): + """Creates an openmc.MGXSLibrary object to contain the MGXS data for the + Multi-Group mode of OpenMC. Parameters ---------- @@ -735,28 +864,18 @@ class Library(object): barns. Defaults to 'macro'. If the Library object is not tallied by nuclide this will be set to 'macro' regardless. domain_names : Iterable of str - List of names to apply to the xsdata entries in the + List of names to apply to the "xsdata" entries in the resultant mgxs data file. Defaults to 'set1', 'set2', ... xs_ids : str or Iterable of str Cross section set identifier (i.e., '71c') for all data sets (if only str) or for each individual one (if iterable of str). Defaults to '1m'. - filename : str - Filename for the pickle file. Defaults to 'mg_cross_sections'. - directory : str - Directory for the pickle file. Defaults to './' (the - current working directory). - return_names : bool - Flag to indicate if the user would like the names of the - materials generated by this function returned with completion. - Defaults to False, indicating that no names will be returned. Returns ------- - mat_names : Iterable of str - Iterable of material names generated during this routine and - applies to the cross section library. Note this is returned if - the return_names parameter is provided. + mgxs_file : openmc.MGXSLibrary + Multi-Group Cross Section File that is ready to be printed to the + file of choice by the user. Raises ------ @@ -774,10 +893,9 @@ class Library(object): # multi-group cross section types self.check_library_for_openmc_mgxs() - # Check the provided parameters cv.check_value('xs_type', xs_type, ['macro', 'micro']) if domain_names is not None: - cv.check_iterable_type('domain_names', filename, basestring) + cv.check_iterable_type('domain_names', domain_names, basestring) if xs_ids is not None: if isinstance(xs_ids, basestring): # If we only have a string lets convert it now to a list @@ -787,25 +905,11 @@ class Library(object): cv.check_iterable_type('xs_ids', xs_ids, basestring) else: xs_ids = ['1m' for i in range(len(self.domains))] - cv.check_type('filename', filename, basestring) - cv.check_type('directory', directory, basestring) - # Make sure statepoint has been loaded - if self._sp_filename is None: - msg = 'A StatePoint must be loaded before calling ' \ - 'the write_mg_library() function' - raise ValueError(msg) - - # Construct the collection of the nuclides to report + # If gathering material-specific data, set the xs_type to macro if not self.by_nuclide: xs_type = 'macro' - # Make directory if it does not exist and build our filename - if not os.path.exists(directory): - os.makedirs(directory) - full_filename = os.path.join(directory, filename + '.xml') - full_filename = full_filename.replace(' ', '-') - # Initialize file mgxs_file = openmc.MGXSLibrary(self.energy_groups) @@ -813,13 +917,10 @@ class Library(object): # support for higher orders are included in openmc.mgxs order = 0 - # Build XSdata objects + # Build storage for our XSdata objects xsdatas = [] - mat_names = {} for i, domain in enumerate(self.domains): - - mat_names[domain.id] = {} if self.by_nuclide: nuclides = list(domain.get_all_nuclides().keys()) else: @@ -832,99 +933,23 @@ class Library(object): name = domain_names[i] if nuclide is not 'total': name += '_' + nuclide - name += '.' + xs_ids[i] - # Store the name - mat_names[domain.id][nuclide] = name - - xsdata = openmc.XSdata(name, self.energy_groups) - xsdata.order = order - if nuclide is not 'total': - xsdata.zaid = self._nuclides[nuclide][0] - xsdata.awr = self._nuclides[nuclide][1] - - nuclide = [nuclide] - # Now get xs data itself - if 'transport' in self.mgxs_types: - mymgxs = self.get_mgxs(domain, 'transport') - xsdata.set_total_mgxs(mymgxs, xs_type=xs_type, - nuclide=nuclide) - elif 'total' in self.mgxs_types: - mymgxs = self.get_mgxs(domain, 'total') - xsdata.set_total_mgxs(mymgxs, xs_type=xs_type, - nuclide=nuclide) - if 'absorption' in self.mgxs_types: - mymgxs = self.get_mgxs(domain, 'absorption') - xsdata.set_absorption_mgxs(mymgxs, xs_type=xs_type, - nuclide=nuclide) - if 'fission' in self.mgxs_types: - mymgxs = self.get_mgxs(domain, 'fission') - xsdata.set_fission_mgxs(mymgxs, xs_type=xs_type, - nuclide=nuclide) - if 'kappa-fission' in self.mgxs_types: - mymgxs = self.get_mgxs(domain, 'kappa-fission') - xsdata.set_kappa_fission_mgxs(mymgxs, xs_type=xs_type, - nuclide=nuclide) - if 'chi' in self.mgxs_types: - mymgxs = self.get_mgxs(domain, 'chi') - xsdata.set_chi_mgxs(mymgxs, xs_type=xs_type, - nuclide=nuclide) - if 'nu-fission' in self.mgxs_types: - mymgxs = self.get_mgxs(domain, 'nu-fission') - xsdata.set_nu_fission_mgxs(mymgxs, xs_type=xs_type, - nuclide=nuclide) - # multiplicity requires scatter and nu-scatter - if ((('scatter matrix' in self.mgxs_types) and - ('nu-scatter matrix' in self.mgxs_types))): - scatt_mgxs = self.get_mgxs(domain, - 'scatter matrix') - nuscatt_mgxs = self.get_mgxs(domain, - 'nu-scatter matrix') - xsdata.set_multiplicity_mgxs(nuscatt_mgxs, scatt_mgxs, - xs_type=xs_type, - nuclide=nuclide) - using_multiplicity = True - else: - using_multiplicity = False - - if using_multiplicity: - nuscatt_mgxs = self.get_mgxs(domain, - 'nu-scatter matrix') - xsdata.set_scatter_mgxs(nuscatt_mgxs, xs_type=xs_type, - nuclide=nuclide) - else: - if 'nu-scatter matrix' in self.mgxs_types: - nuscatt_mgxs = self.get_mgxs(domain, - 'nu-scatter matrix') - xsdata.set_scatter_mgxs(nuscatt_mgxs, xs_type=xs_type, - nuclide=nuclide) - - # Since we are not using multiplicity, then - # scattering multiplication (nu-scatter) must be - # accounted for approximately by using an adjusted - # absorption cross section. - if 'total' in self.mgxs_types: - xsdata._absorption = \ - np.subtract(xsdata.total, - np.sum(xsdata.scatter[0, :, :], - axis=1)) + xsdata = self.get_xsdata(domain, name, nuclide=nuclide, + xs_type=xs_type, xs_id=xs_ids[i], + order=order) xsdatas.append(xsdata) # Add XSdatas to file mgxs_file.add_xsdatas(xsdatas) - # Finally, write the file - mgxs_file.export_to_xml(full_filename) - - if return_names: - return mat_names + return mgxs_file def check_library_for_openmc_mgxs(self): - """This routine will check the MGXS Types within the provided - Library to ensure the data types provided can be used to create - a MGXS Library for OpenMC's Multi-Group mode via the - `Library.write_mg_library` method. + """This routine will check the MGXS Types within a Library + to ensure the MGXS types provided can be used to create + a MGXS Library for OpenMC's Multi-Group mode. + The rules to check include: - Either total or transport should be present. - Both can be available if one wants, but we should @@ -943,7 +968,7 @@ class Library(object): See also -------- - Library.write_mg_library(...) + Library.create_mg_library(...) """ diff --git a/openmc/mgxs_library.py b/openmc/mgxs_library.py index 29d0bfdd7..e59ef2d61 100644 --- a/openmc/mgxs_library.py +++ b/openmc/mgxs_library.py @@ -420,7 +420,8 @@ class XSdata(object): enable = tabular_legendre['enable'] check_type('enable', enable, bool) else: - msg = 'enable must be provided in tabular_legendre' + msg = 'The tabular_legendre dict must include a value keyed by ' \ + '"enable"' raise ValueError(msg) if 'num_points' in tabular_legendre: num_points = tabular_legendre['num_points'] @@ -448,217 +449,77 @@ class XSdata(object): @total.setter def total(self, total): - """This method sets the total cross section by performing a - deep-copy of the provided ndarray. If the angular - representation is "isotropic" the shape of the input array - must be the number of energy groups. If the angular - representation is "angle" then the shape of the input - array must be the number of polar angles, number azimuthal - angles and energy groups. - - Parameters - ---------- - total: ndarray - Array of group-wise cross sections to apply - - """ - - # check we have a numpy list check_type('total', total, np.ndarray, expected_iter_type=Real) - # Check the dimensions of the data check_value('total shape', total.shape, self.vector_shape) - self._total = np.copy(total) + self._total = total @absorption.setter def absorption(self, absorption): - """This method sets the absorption cross section by performing a - deep-copy of the provided ndarray. If the angular - representation is "isotropic" the shape of the input array - must be the number of energy groups. If the angular - representation is "angle" then the shape of the input - array must be the number of polar angles, number azimuthal - angles and energy groups. - - Parameters - ---------- - absorption: ndarray - Array of group-wise cross sections to apply - - """ - - # check we have a numpy list check_type('absorption', absorption, np.ndarray, expected_iter_type=Real) - # Check the dimensions of the data check_value('absorption shape', absorption.shape, self.vector_shape) - self._absorption = np.copy(absorption) + self._absorption = absorption @fission.setter def fission(self, fission): - """This method sets the fission cross section by performing a - deep-copy of the provided ndarray. If the angular - representation is "isotropic" the shape of the input array - must be the number of energy groups. If the angular - representation is "angle" then the shape of the input - array must be the number of polar angles, number azimuthal - angles and energy groups. - - Parameters - ---------- - fission: ndarray - Array of group-wise cross sections to apply - - """ - - # check we have a numpy list check_type('fission', fission, np.ndarray, expected_iter_type=Real) - # Check the dimensions of the data check_value('fission shape', fission.shape, self.vector_shape) - self._fission = np.copy(fission) + self._fission = fission if np.sum(self._fission) > 0.0: self._fissionable = True @kappa_fission.setter def kappa_fission(self, kappa_fission): - """This method sets the kappa_fission cross section by performing a - deep-copy of the provided ndarray. If the angular - representation is "isotropic" the shape of the input array - must be the number of energy groups. If the angular - representation is "angle" then the shape of the input - array must be the number of polar angles, number azimuthal - angles and energy groups. - - Parameters - ---------- - kappa_fission: ndarray - Array of group-wise cross sections to apply - - """ - - # check we have a numpy list - check_type('kappa_fission', fission, np.ndarray, + check_type('kappa_fission', kappa_fission, np.ndarray, expected_iter_type=Real) - # Check the dimensions of the data check_value('kappa fission shape', kappa_fission.shape, self.vector_shape) - self._kappa_fission = np.copy(fission) + self._kappa_fission = kappa_fission if np.sum(self._kappa_fission) > 0.0: self._fissionable = True @chi.setter def chi(self, chi): - """This method sets the chi cross section by performing a - deep-copy of the provided ndarray. If the angular - representation is "isotropic" the shape of the input array - must be the number of energy groups. If the angular - representation is "angle" then the shape of the input - array must be the number of polar angles, number azimuthal - angles and energy groups. - - Parameters - ---------- - chi: ndarray - Array of group-wise chi values to apply - - """ - if self._use_chi is not None: if not self._use_chi: msg = 'Providing chi when nu_fission already provided as a' \ 'matrix' raise ValueError(msg) - # check we have a numpy list check_type('chi', chi, np.ndarray, expected_iter_type=Real) - # Check the dimensions of the data check_value('chi shape', chi.shape, self.vector_shape) - self._chi = np.copy(chi) + self._chi = chi if self._use_chi is not None: self._use_chi = True @scatter.setter def scatter(self, scatter): - """This method sets the scattering matrix cross sections - by performing a deep-copy of the provided ndarray. - If the angular representation is "isotropic" the shape of - the input array must be the number of scattering orders, the - number of energy groups, and the number of energy groups. If - the angular representation is "angle" then the shape of the input - array must be the number of polar angles, number azimuthal - angles, number of scattering orders, energy groups, and energy groups. - - Parameters - ---------- - scatter : ndarrays - Array of cross sections to apply - - """ - - # check we have a numpy list check_type('scatter', scatter, np.ndarray, expected_iter_type=Real, max_depth=len(scatter.shape)) - # Check the dimensions of the data check_value('scatter shape', scatter.shape, self.pn_matrix_shape) - self._scatter = np.copy(scatter) + self._scatter = scatter @multiplicity.setter def multiplicity(self, multiplicity): - """This method sets the scattering multiplicity matrix cross sections - by performing a deep-copy of the provided ndarray. Multiplicity, - in OpenMC parlance, is a factor used to account for the production - of neutrons introduced by scattering multiplication reactions, i.e., - (n,xn) events. In this sense, the multiplication matrix is simply - defined as the ratio of the nu-scatter and scatter matrices. - If the angular representation is "isotropic" the shape of - the input array must be the number of energy groups and the number - of energy groups. If the angular representation is "angle" then the - shape of the input array must be the number of polar angles, - number azimuthal angles, number of scattering orders, energy groups, - and energy groups. - - Parameters - ---------- - multiplicity : ndarrays - Array of scattering multiplications to apply - - """ - - # check we have a numpy list check_type('multiplicity', multiplicity, np.ndarray, expected_iter_type=Real, max_depth=len(multiplicity.shape)) - # Check the dimensions of the data check_value('multiplicity shape', multiplicity.shape, self.matrix_shape) - self._multiplicity = np.copy(multiplicity) + self._multiplicity = multiplicity @nu_fission.setter def nu_fission(self, nu_fission): - """This method sets the nu_fission cross section by performing a - deep-copy of the provided ndarray. If the angular - representation is "isotropic" the shape of the input array - must be the number of energy groups. If the angular - representation is "angle" then the shape of the input - array must be the number of polar angles, number azimuthal - angles and energy groups. - - Parameters - ---------- - nu_fission: ndarray - Array of group-wise cross sections to apply - - """ - # The NuFissionXS class does not have the capability to produce # a fission matrix and therefore if this path is pursued, we know # chi must be used. @@ -669,12 +530,10 @@ class XSdata(object): # chi already has been set. If not, we just check that this is OK # and set the use_chi flag accordingly - # First, check we have a numpy list check_type('nu_fission', nu_fission, np.ndarray, expected_iter_type=Real, max_depth=len(nu_fission.shape)) if self._use_chi is not None: - # Check the dimensions of the data if self._use_chi: check_value('nu_fission shape', nu_fission.shape, self.vector_shape) @@ -682,16 +541,16 @@ class XSdata(object): check_value('nu_fission shape', nu_fission.shape, self.matrix_shape) else: - # Make sure the dimensions are at least right check_value('nu_fission shape', nu_fission.shape, (self.vector_shape, self.matrix_shape)) - # Then find out which one we have so we can set use_chi + # Find out if we have a nu-fission matrix or vector + # and set a flag to allow other methods to check this later. if nu_fission.shape == self.vector_shape: self._use_chi = True else: self._use_chi = False - self._nu_fission = np.copy(nu_fission) + self._nu_fission = nu_fission if np.sum(self._nu_fission) > 0.0: self._fissionable = True @@ -716,11 +575,7 @@ class XSdata(object): check_type('total', total, (openmc.mgxs.TotalXS, openmc.mgxs.TransportXS)) - - # Make sure passed MGXS object contains correct group structure check_value('energy_groups', total.energy_groups, [self.energy_groups]) - - # Make sure passed MGXS object has correct domain type check_value('domain_type', total.domain_type, ['universe', 'cell', 'material']) @@ -750,12 +605,8 @@ class XSdata(object): """ check_type('absorption', absorption, openmc.mgxs.AbsorptionXS) - - # Make sure passed MGXS object contains correct group structure check_value('energy_groups', absorption.energy_groups, [self.energy_groups]) - - # Make sure passed MGXS object has correct domain type check_value('domain_type', absorption.domain_type, ['universe', 'cell', 'material']) @@ -785,12 +636,8 @@ class XSdata(object): """ check_type('fission', fission, openmc.mgxs.FissionXS) - - # Make sure passed MGXS object contains correct group structure check_value('energy_groups', fission.energy_groups, [self.energy_groups]) - - # Make sure passed MGXS object has correct domain type check_value('domain_type', fission.domain_type, ['universe', 'cell', 'material']) @@ -824,12 +671,8 @@ class XSdata(object): # a fission matrix and therefore if this path is pursued, we know # chi must be used. check_type('nu_fission', nu_fission, openmc.mgxs.NuFissionXS) - - # Make sure passed MGXS object contains correct group structure check_value('energy_groups', nu_fission.energy_groups, [self.energy_groups]) - - # Make sure passed MGXS object has correct domain type check_value('domain_type', nu_fission.domain_type, ['universe', 'cell', 'material']) @@ -866,12 +709,8 @@ class XSdata(object): """ check_type('k_fission', k_fission, openmc.mgxs.KappaFissionXS) - - # Make sure passed MGXS object contains correct group structure check_value('energy_groups', k_fission.energy_groups, [self.energy_groups]) - - # Make sure passed MGXS object has correct domain type check_value('domain_type', k_fission.domain_type, ['universe', 'cell', 'material']) @@ -906,11 +745,7 @@ class XSdata(object): raise ValueError(msg) check_type('chi', chi, openmc.mgxs.Chi) - - # Make sure passed MGXS object contains correct group structure check_value('energy_groups', chi.energy_groups, [self.energy_groups]) - - # Make sure passed MGXS object has correct domain type check_value('domain_type', chi.domain_type, ['universe', 'cell', 'material']) @@ -944,12 +779,8 @@ class XSdata(object): """ check_type('scatter', scatter, openmc.mgxs.ScatterMatrixXS) - - # Make sure passed MGXS object contains correct group structure check_value('energy_groups', scatter.energy_groups, [self.energy_groups]) - - # Make sure passed MGXS object has correct domain type check_value('domain_type', scatter.domain_type, ['universe', 'cell', 'material']) @@ -990,14 +821,10 @@ class XSdata(object): check_type('nuscatter', nuscatter, openmc.mgxs.NuScatterMatrixXS) check_type('scatter', scatter, openmc.mgxs.ScatterMatrixXS) - - # Make sure passed MGXS object contains correct group structure check_value('energy_groups', nuscatter.energy_groups, [self.energy_groups]) check_value('energy_groups', scatter.energy_groups, [self.energy_groups]) - - # Make sure passed MGXS object has correct domain type check_value('domain_type', nuscatter.domain_type, ['universe', 'cell', 'material']) check_value('domain_type', scatter.domain_type, @@ -1153,14 +980,10 @@ class MGXSLibrary(object): MGXS information to add """ - - # Check the type if not isinstance(xsdata, XSdata): msg = 'Unable to add a non-XSdata "{0}" to the ' \ 'MGXSLibrary instance'.format(xsdata) raise ValueError(msg) - - # Make sure energy groups match. if xsdata.energy_groups != self._energy_groups: msg = 'Energy groups of XSdata do not match that of MGXSLibrary.' raise ValueError(msg) @@ -1176,8 +999,6 @@ class MGXSLibrary(object): XSdatas to add """ - - # Check we have an iterable of XSdatas check_iterable_type('xsdatas', xsdatas, XSdata) for xsdata in xsdatas: @@ -1222,14 +1043,14 @@ class MGXSLibrary(object): xml_element = xsdata._get_xsdata_xml() self._cross_sections_file.append(xml_element) - def export_to_xml(self, filename='mg_cross_sections.xml'): - """Create an mg_cross_sections.xml file that can be used for a + def export_to_xml(self, filename='mgxs.xml'): + """Create an mgxs.xml file that can be used for a simulation. Parameters ---------- filename : str, optional - filename of file, default is mg_cross_sections.xml + filename of file, default is mgxs.xml """ diff --git a/src/input_xml.F90 b/src/input_xml.F90 index 22eff595c..24986be87 100644 --- a/src/input_xml.F90 +++ b/src/input_xml.F90 @@ -153,7 +153,7 @@ contains else call get_environment_variable("OPENMC_MG_CROSS_SECTIONS", env_variable) if (len_trim(env_variable) == 0) then - call fatal_error("No cross_sections.xml file was specified in & + call fatal_error("No mgxs.xml file was specified in & &settings.xml or in the OPENMC_MG_CROSS_SECTIONS environment & &variable. OpenMC needs such a file to identify where to & &find the cross section libraries. Please consult the user's & @@ -4537,24 +4537,24 @@ contains subroutine read_mg_cross_sections_xml() integer :: i ! loop index - logical :: file_exists ! does cross_sections.xml exist? + logical :: file_exists ! does mgxs.xml exist? type(XsListing), pointer :: listing => null() type(Node), pointer :: doc => null() type(Node), pointer :: node_xsdata => null() type(NodeList), pointer :: node_xsdata_list => null() real(8), allocatable :: rev_energy_bins(:) - ! Check if cross_sections.xml exists + ! Check if mgxs.xml exists inquire(FILE=path_cross_sections, EXIST=file_exists) if (.not. file_exists) then - ! Could not find cross_sections.xml file + ! Could not find mgxs.xml file call fatal_error("Cross sections XML file '" & // trim(path_cross_sections) // "' does not exist!") end if call write_message("Reading cross sections XML file...", 5) - ! Parse cross_sections.xml file + ! Parse mgxs.xml file call open_xmldoc(doc, path_cross_sections) if (check_for_node(doc, "groups")) then @@ -4602,7 +4602,7 @@ contains ! Allocate xs_listings array if (n_listings == 0) then call fatal_error("At least one element must be present in & - &cross_sections.xml file!") + &mgxs.xml file!") else allocate(xs_listings(n_listings)) end if