diff --git a/docs/source/pythonapi/examples/mgxs-part-iv.ipynb b/docs/source/pythonapi/examples/mgxs-part-iv.ipynb index 301bbf015..a4f406951 100644 --- a/docs/source/pythonapi/examples/mgxs-part-iv.ipynb +++ b/docs/source/pythonapi/examples/mgxs-part-iv.ipynb @@ -431,7 +431,7 @@ "outputs": [ { "data": { - "image/png": "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\n", + "image/png": "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\n", "text/plain": [ "" ] @@ -577,7 +577,7 @@ "name": "stderr", "output_type": "stream", "text": [ - "/home/romano/openmc/openmc/mgxs/library.py:373: RuntimeWarning: The P0 correction will be ignored since the scattering order 0 is greater than zero\n", + "/home/nelsonag/git/openmc/openmc/mgxs/library.py:373: RuntimeWarning: The P0 correction will be ignored since the scattering order 0 is greater than zero\n", " warn(msg, RuntimeWarning)\n" ] } @@ -734,8 +734,8 @@ " Copyright | 2011-2016 Massachusetts Institute of Technology\n", " License | http://openmc.readthedocs.io/en/latest/license.html\n", " Version | 0.8.0\n", - " Git SHA1 | fbebf7bf709fe2fe1813af95bff9b29c0d59312c\n", - " Date/Time | 2016-08-31 10:48:01\n", + " Git SHA1 | 6cf7f7fa48d70d26165403f8067aedb598534990\n", + " Date/Time | 2016-09-08 20:16:34\n", " OpenMP Threads | 4\n", "\n", " ===========================================================================\n", @@ -746,12 +746,12 @@ " Reading geometry XML file...\n", " Reading cross sections XML file...\n", " Reading materials XML file...\n", - " Reading U235 from /home/romano/openmc/data/nndc_hdf5/U235.h5\n", - " Reading U238 from /home/romano/openmc/data/nndc_hdf5/U238.h5\n", - " Reading O16 from /home/romano/openmc/data/nndc_hdf5/O16.h5\n", - " Reading Zr90 from /home/romano/openmc/data/nndc_hdf5/Zr90.h5\n", - " Reading H1 from /home/romano/openmc/data/nndc_hdf5/H1.h5\n", - " Reading B10 from /home/romano/openmc/data/nndc_hdf5/B10.h5\n", + " Reading U235 from /opt/xsdata/nndc/U235.h5\n", + " Reading U238 from /opt/xsdata/nndc/U238.h5\n", + " Reading O16 from /opt/xsdata/nndc/O16.h5\n", + " Reading Zr90 from /opt/xsdata/nndc/Zr90.h5\n", + " Reading H1 from /opt/xsdata/nndc/H1.h5\n", + " Reading B10 from /opt/xsdata/nndc/B10.h5\n", " Maximum neutron transport energy: 20.0000 MeV for U235\n", " Reading tallies XML file...\n", " Building neighboring cells lists for each surface...\n", @@ -822,20 +822,20 @@ "\n", " =======================> TIMING STATISTICS <=======================\n", "\n", - " Total time for initialization = 4.2200E-01 seconds\n", - " Reading cross sections = 2.8800E-01 seconds\n", - " Total time in simulation = 4.1409E+01 seconds\n", - " Time in transport only = 4.1265E+01 seconds\n", - " Time in inactive batches = 4.6120E+00 seconds\n", - " Time in active batches = 3.6797E+01 seconds\n", - " Time synchronizing fission bank = 9.0000E-03 seconds\n", - " Sampling source sites = 6.0000E-03 seconds\n", - " SEND/RECV source sites = 3.0000E-03 seconds\n", + " Total time for initialization = 3.2700E-01 seconds\n", + " Reading cross sections = 2.1500E-01 seconds\n", + " Total time in simulation = 2.2139E+01 seconds\n", + " Time in transport only = 2.1970E+01 seconds\n", + " Time in inactive batches = 2.6960E+00 seconds\n", + " Time in active batches = 1.9443E+01 seconds\n", + " Time synchronizing fission bank = 2.0000E-03 seconds\n", + " Sampling source sites = 1.0000E-03 seconds\n", + " SEND/RECV source sites = 1.0000E-03 seconds\n", " Time accumulating tallies = 0.0000E+00 seconds\n", " Total time for finalization = 0.0000E+00 seconds\n", - " Total time elapsed = 4.1869E+01 seconds\n", - " Calculation Rate (inactive) = 10841.3 neutrons/second\n", - " Calculation Rate (active) = 5435.23 neutrons/second\n", + " Total time elapsed = 2.2488E+01 seconds\n", + " Calculation Rate (inactive) = 18546.0 neutrons/second\n", + " Calculation Rate (active) = 10286.5 neutrons/second\n", "\n", " ============================> RESULTS <============================\n", "\n", @@ -973,13 +973,26 @@ "metadata": { "collapsed": false }, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "(array([0, 1]),)\n", + "(array([0, 1]),)\n", + "(array([0, 1]),)\n", + "(array([0, 1]),)\n", + "(array([0, 1]),)\n", + "(array([0, 1]),)\n" + ] + } + ], "source": [ "# Create a MGXS File which can then be written to disk\n", "mgxs_file = mgxs_lib.create_mg_library(xs_type='macro', xsdata_names=['fuel', 'zircaloy', 'water'])\n", "\n", "# Write the file to disk using the default filename of `mgxs.xml`\n", - "mgxs_file.export_to_xml()" + "mgxs_file.export_to_hdf5()" ] }, { @@ -1051,7 +1064,7 @@ "outputs": [], "source": [ "# Set the location of the cross sections file\n", - "settings_file.cross_sections = './mgxs.xml'\n", + "settings_file.cross_sections = './mgxs.h5'\n", "settings_file.energy_mode = 'multi-group'\n", "\n", "# Export to \"settings.xml\"\n", @@ -1108,8 +1121,8 @@ " Copyright | 2011-2016 Massachusetts Institute of Technology\n", " License | http://openmc.readthedocs.io/en/latest/license.html\n", " Version | 0.8.0\n", - " Git SHA1 | fbebf7bf709fe2fe1813af95bff9b29c0d59312c\n", - " Date/Time | 2016-08-31 10:48:43\n", + " Git SHA1 | 6cf7f7fa48d70d26165403f8067aedb598534990\n", + " Date/Time | 2016-09-08 20:16:57\n", " OpenMP Threads | 4\n", "\n", " ===========================================================================\n", @@ -1118,14 +1131,14 @@ "\n", " Reading settings XML file...\n", " Reading geometry XML file...\n", - " Reading cross sections XML file...\n", + " Reading cross sections HDF5 file...\n", " Reading materials XML file...\n", " Reading tallies XML file...\n", - " Building neighboring cells lists for each surface...\n", " Loading Cross Section Data...\n", " Loading fuel Data...\n", " Loading zircaloy Data...\n", " Loading water Data...\n", + " Building neighboring cells lists for each surface...\n", " Initializing source particles...\n", "\n", " ===========================================================================\n", @@ -1134,56 +1147,56 @@ "\n", " Bat./Gen. k Average k \n", " ========= ======== ==================== \n", - " 1/1 0.99122 \n", - " 2/1 1.03963 \n", - " 3/1 1.01551 \n", - " 4/1 1.03582 \n", - " 5/1 0.99023 \n", - " 6/1 1.00419 \n", - " 7/1 1.02047 \n", - " 8/1 1.05456 \n", - " 9/1 1.01063 \n", - " 10/1 1.03370 \n", - " 11/1 1.04616 \n", - " 12/1 1.04458 1.04537 +/- 0.00079\n", - " 13/1 1.02171 1.03748 +/- 0.00790\n", - " 14/1 1.02060 1.03326 +/- 0.00700\n", - " 15/1 1.01653 1.02992 +/- 0.00637\n", - " 16/1 1.02956 1.02986 +/- 0.00520\n", - " 17/1 1.01145 1.02723 +/- 0.00512\n", - " 18/1 1.03774 1.02854 +/- 0.00463\n", - " 19/1 1.00829 1.02629 +/- 0.00466\n", - " 20/1 1.03624 1.02729 +/- 0.00429\n", - " 21/1 1.03296 1.02780 +/- 0.00391\n", - " 22/1 0.99315 1.02491 +/- 0.00459\n", - " 23/1 0.99628 1.02271 +/- 0.00476\n", - " 24/1 1.04034 1.02397 +/- 0.00459\n", - " 25/1 1.02523 1.02406 +/- 0.00427\n", - " 26/1 1.07905 1.02749 +/- 0.00527\n", - " 27/1 1.01678 1.02686 +/- 0.00499\n", - " 28/1 1.01817 1.02638 +/- 0.00473\n", - " 29/1 1.03293 1.02672 +/- 0.00449\n", - " 30/1 1.01224 1.02600 +/- 0.00432\n", - " 31/1 1.01524 1.02549 +/- 0.00414\n", - " 32/1 1.00996 1.02478 +/- 0.00401\n", - " 33/1 1.05545 1.02612 +/- 0.00406\n", - " 34/1 1.02082 1.02589 +/- 0.00389\n", - " 35/1 0.99120 1.02451 +/- 0.00398\n", - " 36/1 1.03012 1.02472 +/- 0.00383\n", - " 37/1 1.01179 1.02424 +/- 0.00372\n", - " 38/1 1.04023 1.02481 +/- 0.00363\n", - " 39/1 1.05876 1.02598 +/- 0.00369\n", - " 40/1 0.99332 1.02490 +/- 0.00373\n", - " 41/1 1.05319 1.02581 +/- 0.00372\n", - " 42/1 1.03381 1.02606 +/- 0.00361\n", - " 43/1 1.00607 1.02545 +/- 0.00355\n", - " 44/1 1.03957 1.02587 +/- 0.00347\n", - " 45/1 1.02472 1.02584 +/- 0.00337\n", - " 46/1 1.00948 1.02538 +/- 0.00331\n", - " 47/1 1.02380 1.02534 +/- 0.00322\n", - " 48/1 1.05392 1.02609 +/- 0.00322\n", - " 49/1 1.01171 1.02572 +/- 0.00316\n", - " 50/1 1.03942 1.02606 +/- 0.00310\n", + " 1/1 0.68770 \n", + " 2/1 0.71454 \n", + " 3/1 0.69764 \n", + " 4/1 0.68400 \n", + " 5/1 0.69412 \n", + " 6/1 0.70489 \n", + " 7/1 0.70203 \n", + " 8/1 0.70721 \n", + " 9/1 0.69408 \n", + " 10/1 0.70103 \n", + " 11/1 0.69351 \n", + " 12/1 0.71450 0.70401 +/- 0.01049\n", + " 13/1 0.70298 0.70366 +/- 0.00607\n", + " 14/1 0.69351 0.70113 +/- 0.00499\n", + " 15/1 0.70901 0.70270 +/- 0.00417\n", + " 16/1 0.70364 0.70286 +/- 0.00341\n", + " 17/1 0.68831 0.70078 +/- 0.00355\n", + " 18/1 0.69861 0.70051 +/- 0.00309\n", + " 19/1 0.71634 0.70227 +/- 0.00324\n", + " 20/1 0.70641 0.70268 +/- 0.00293\n", + " 21/1 0.69300 0.70180 +/- 0.00279\n", + " 22/1 0.70086 0.70172 +/- 0.00255\n", + " 23/1 0.68664 0.70056 +/- 0.00262\n", + " 24/1 0.70558 0.70092 +/- 0.00245\n", + " 25/1 0.70057 0.70090 +/- 0.00228\n", + " 26/1 0.68193 0.69971 +/- 0.00244\n", + " 27/1 0.69492 0.69943 +/- 0.00231\n", + " 28/1 0.68723 0.69875 +/- 0.00228\n", + " 29/1 0.71304 0.69950 +/- 0.00228\n", + " 30/1 0.69086 0.69907 +/- 0.00221\n", + " 31/1 0.71083 0.69963 +/- 0.00218\n", + " 32/1 0.69658 0.69949 +/- 0.00208\n", + " 33/1 0.70807 0.69987 +/- 0.00202\n", + " 34/1 0.71266 0.70040 +/- 0.00201\n", + " 35/1 0.69799 0.70030 +/- 0.00193\n", + " 36/1 0.67602 0.69937 +/- 0.00207\n", + " 37/1 0.72219 0.70021 +/- 0.00217\n", + " 38/1 0.71427 0.70072 +/- 0.00215\n", + " 39/1 0.71017 0.70104 +/- 0.00210\n", + " 40/1 0.69683 0.70090 +/- 0.00203\n", + " 41/1 0.71530 0.70137 +/- 0.00202\n", + " 42/1 0.69487 0.70116 +/- 0.00197\n", + " 43/1 0.69785 0.70106 +/- 0.00191\n", + " 44/1 0.72084 0.70165 +/- 0.00194\n", + " 45/1 0.69741 0.70152 +/- 0.00189\n", + " 46/1 0.70040 0.70149 +/- 0.00183\n", + " 47/1 0.71724 0.70192 +/- 0.00183\n", + " 48/1 0.70980 0.70213 +/- 0.00180\n", + " 49/1 0.70660 0.70224 +/- 0.00175\n", + " 50/1 0.69329 0.70202 +/- 0.00172\n", " Creating state point statepoint.50.h5...\n", "\n", " ===========================================================================\n", @@ -1193,27 +1206,27 @@ "\n", " =======================> TIMING STATISTICS <=======================\n", "\n", - " Total time for initialization = 4.1000E-02 seconds\n", - " Reading cross sections = 4.0000E-03 seconds\n", - " Total time in simulation = 3.1713E+01 seconds\n", - " Time in transport only = 3.1522E+01 seconds\n", - " Time in inactive batches = 3.8940E+00 seconds\n", - " Time in active batches = 2.7819E+01 seconds\n", - " Time synchronizing fission bank = 2.1000E-02 seconds\n", - " Sampling source sites = 1.2000E-02 seconds\n", - " SEND/RECV source sites = 9.0000E-03 seconds\n", + " Total time for initialization = 3.5000E-02 seconds\n", + " Reading cross sections = 6.0000E-03 seconds\n", + " Total time in simulation = 3.7004E+01 seconds\n", + " Time in transport only = 3.6761E+01 seconds\n", + " Time in inactive batches = 3.6530E+00 seconds\n", + " Time in active batches = 3.3351E+01 seconds\n", + " Time synchronizing fission bank = 7.0000E-03 seconds\n", + " Sampling source sites = 6.0000E-03 seconds\n", + " SEND/RECV source sites = 1.0000E-03 seconds\n", " Time accumulating tallies = 0.0000E+00 seconds\n", " Total time for finalization = 0.0000E+00 seconds\n", - " Total time elapsed = 3.1791E+01 seconds\n", - " Calculation Rate (inactive) = 12840.3 neutrons/second\n", - " Calculation Rate (active) = 7189.33 neutrons/second\n", + " Total time elapsed = 3.7062E+01 seconds\n", + " Calculation Rate (inactive) = 13687.4 neutrons/second\n", + " Calculation Rate (active) = 5996.82 neutrons/second\n", "\n", " ============================> RESULTS <============================\n", "\n", - " k-effective (Collision) = 1.02474 +/- 0.00282\n", - " k-effective (Track-length) = 1.02606 +/- 0.00310\n", - " k-effective (Absorption) = 1.02589 +/- 0.00165\n", - " Combined k-effective = 1.02601 +/- 0.00170\n", + " k-effective (Collision) = 0.70328 +/- 0.00159\n", + " k-effective (Track-length) = 0.70202 +/- 0.00172\n", + " k-effective (Absorption) = 0.70409 +/- 0.00106\n", + " Combined k-effective = 0.70345 +/- 0.00102\n", " Leakage Fraction = 0.00000 +/- 0.00000\n", "\n" ] @@ -1295,8 +1308,8 @@ "output_type": "stream", "text": [ "Continuous-Energy keff = 1.024295\n", - "Multi-Group keff = 1.026013\n", - "bias [pcm]: -171.8\n" + "Multi-Group keff = 0.703447\n", + "bias [pcm]: 32084.7\n" ] } ], @@ -1393,7 +1406,7 @@ { "data": { "text/plain": [ - "" + "" ] }, "execution_count": 40, @@ -1402,9 +1415,9 @@ }, { "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXQAAADDCAYAAACS2+oqAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJztnXl8FGXy/z+VAHLIDQEEROQQ8QAR8fwqIiIqiAICjseq\nK+JvPVbdBQF1wRt1F/FcWa8VZUBWREFXBY9lV4PcASThToAEkgABAoQzqd8f3Znpnp7p6pCEmbT1\nfr3ySj/V1fU8011d3f101/MQM0NRFEWp+iTFuwGKoihKxaABXVEUxSdoQFcURfEJGtAVRVF8ggZ0\nRVEUn6ABXVEUxSckXEAnol+J6PJ4t+O3DBH9m4huL8f2fyeixyuyTb9FiKiEiE53We/bc0V98Dhh\nZvEPQADAYgD7AOQA+ArApV62Fex+AODp8tqJ55/5Gw4DKDT/9gFYHu92eWj3OABHLG0uBPDneLer\nDG0uAPATgIvKsP2PAO4+Ae3MAnAIQKMI+XIAJQBO9WinGMDpFj8r07kCoDqAvwBYYx7jrea5e3W8\nj2WU46k+WAF/4h06ET0KYCKAZwGkADgVwJsA+kvb/oZ4kZnrmX91mfm8iq6AiJIr2iaA6ZY212Pm\nv1ZCHRXNdGauB6AJgP8A+Fd8mxMVBpAJ4JZSARGdDaCWuc4rVM52zIRxnt4GoCGAtgBeBXBd1Moq\nx8ck1AcrEuFqUg/GlXOgi04NAJNg3LlnA3gFQHVz3RUw7goeBZBn6txprhsO40p3CMbV7gtTngmg\nl+Vq+AmAD02dVQC6WeougXkHY5ZtdzFmHesB7ATwOYAWpryNuW1StCsngHYwDtQeAPkAprn8/ph3\nTpZ67gCw2bQ11rKeAIwGsAHADgDTATSI2PZuc9v/mPI7YNwB7gDwROn+AtAMwAEADS32u5l1Jse4\n05gi3UW47QvzWOcB2AtgBYDOZTkOlmM4AsA6GHc8bwh3R1Ms5TNh3MU2NssNAMwx27nLXD7FXPcs\ngGMAikxfes2UdwIw19TPAHCzxf51AFab+lsBPOrxLiwTwFgAiyyylwGMMdt7arS7NQC/A/C/SP+G\nh3MlSht6m/7QwkNbR5nH7yCMbtgzzbbthnHO9Y/mGy5tfhDARvM4vOT1eKoPlt8HpTv0iwGcZO6A\nWDwBoAeAcwF0MZefsKxvDqAugFMA3APgTSKqz8zvAJgK44DXY+YBMez3BxAEUN/cOW9a1sW82yGi\nXgCeBzAYQAsAW2AETHFbAM8A+JaZGwBoBeB1F10vXAqgA4yT7C9EdIYpfwjADQD+D8b+2Q3grYht\nL4dxwK8hojNh/P5bYPym+uZ2YOY8GCfBEMu2t8Fw/uJytD3qviCiPgAuA9Cemeub9e6K3NjDcQCA\n6wGcD8N/hpi2XSGiGjCCyS4Y+w0wgtH7AFrDeJIsgukvzPwEgP8BeMD0t4eIqDaME+ljGHdbwwC8\nRUSdTHvvAhjOxt3Y2QB+kNpl4RcAdYnoDCJKAjDUrEe663b4ZRnOFStXAVjIzNs96A4DcC2MYJQE\nYDaAbwA0heGjU4moQxnafCOMm4luAAYQ0d0e2uCG+qBHH5QCemMAO5m5xEUnAOApZt7FzLsAPAXA\n+jLjCIBnmLmYmb8GsB/AGVHsxOInZv6WjcvVRzAuHKW4nRwBAO8x8wpmPgrj7uhiIjrVQ51HAbQh\nopbMfISZUwX9kURUQES7zf8fWNYxgPGmnZUw7iK6mOtGAHicmbebbXwawGAzAJRuO46ZDzLzYRgO\nOZuZFzDzMRj9o1amwNz3po1bYOyzWAyNaHfzMuyLozAu1J2JiJh5rXlRicTLcXiBmfcx81YYF6Wu\nUpthnCi/BzC41D+ZuYCZZzHzYWY+AOAFGBfEWPQDkMnMU9hgBYxuipvN9UcAnEVEdZl5LzOnudiK\nxkcwTvirYdx5bSvj9uWhCYDc0gIRNTSP8x4iOhih+yozbzN97CIAdZj5RWY+xsw/AvgSlu4jD0ww\n91c2jKd3t23VByvQB6WAvgtAE0uAicYpMK54pWw2ZSEbEReEIgAnC/VaybUsFwGoKbTH2q7NpQVz\n5+4C0NLDtiNh7JtFRLSKiO4CACIaQ0T7iKiQiKx30i8zcyNmbmj+vyvCntXJrL+/DYBZpiMXAEiH\n4aTNLPrZEb9pq+U3HYT9juQLAGcSURsAfQDsYeYlLr/zk4h250bRibovzBP9DRh3H3lE9DYRRTuu\nXo5DrP0Ts80w3uf8CqB76QoiqkVEk4koi4j2AJgPoAERxbrwtwFwUen+J6LdME7+0v0/CMad22Yi\n+pGILnJpVzQ+Nu3dCeNiW2mYflnqm61g7OMWpeuZeTczN4RxF1ojYvOYPmayGd7Om2j2IuNBJOqD\nFeiDUmBcAOMLjhtddHLMRlkb6PVOpCwviKJRBKC2pWy9um+ztouI6sB44siG0beIWNsycz4z38vM\nLQHcB+MR6HRmfoHDL2/+UM62A8aF8FrTkUuduk7EY7J1H22H8chZ+ptqmb+ptN2HAcyAcZd+G9zv\nzj0Ra1+Y695g5u4AOsN46hoZxYTbcShPuwpgPOGMJ6JS5/8TjK6tC8zH89I7o9KTKdLftsJ4N2Hd\n//WY+QGzjqXMfCOMrocvYOzbsrRxC4w+6msBfBZF5QBi+6/DnFBXXYtvZgP4HsAFRBQtmEYGF6vt\nbTC6C6ycCuM899pm6/anopxPJuqD3n3QNaAzcyGMlwBvEtEA8+pTjYiuJaIJptp0AE8QURMiagLg\nSXgPJHkwXvqUBaszLgcQIKIkIuoL4yVsKdMA3EVE5xLRSTD60H5h5q3MvBOGg95mbns3jBcvRgVE\ng4mo9Oq9B8ZLE7duJ6/tjWQygOdLH/2IqCkR3eCy7acA+hPRRURUHcD4KDY/gnFH2B8VENBj7Qsi\n6k5EPYioGoyXaYcQfR/FPA7lbRszr4PR1/uYKaprtqWQiBrBuX8i/e1LAB2J6DbTr6ubv6uTuRwg\nonpsvIPYB+PlV1m5G8aLy8huDgBIAzDQPK/aw3h8j0WZzhVmngej6+Bz8zhVN4/VxXC/OCwEUERE\no8x90hNGt8C0MrR5JBE1IKLWAP4IZ391mVAf9O6DYtcFM0+E8ZXKEzDe3G4B8AeEX5Q+C2AJgNL+\n4SUAnnMzaVl+D0b/UAERfRZlvbT9wzBeKu6G0U83y9Lu72FcXD6DEbzbwnjhUMpwGG/3d8J4U/2z\nZd0FABYSUaH5Ox9i5iyXNo0yH3ULzcfe/BjtjSy/CuOqO5eI9gJIhfFSOeq2zJwO4wuCT2DcdRTC\nOCaHLTqpMJx6WTkc1lpvrH1RD8A7ML4KyISxH192GJKPg9v+8cJfAQw3byYmwbh73AljX/47QvdV\nADcT0S4imsTM+2F0TQ2DsT+3AZiAcJfE7QAyzUfne2E8Cnsh9BuYOZOZl0VbB+MLjaMwuhU/gNFF\nE9UOju9cuQlGwPgYxjmyCcZ5Yn3hF+ljR2HcDFwHYz++AeB2Zl7vsc2A4dNLASyD8SHD+0I7o6E+\naFAmHyTm8vZ6KPHCfHTcA+Mt/2aL/HsAU5n5eE4kRTluiKgEhj9uindbfoskXOq/4g4R9TMfd+sA\n+BuAlRHB/AIA58G4i1cU5TeEBvSqxwAYj2XZMPr9Q4+ORPRPGN+0/tF8k68oJxp95I8j2uWiKIri\nE/QOXVEUxSdUqwyj5ieEk2BcMN5j5hej6OijgVKpMHN5B7dyoL6tJAKxfLvCu1zIyOJcB2MsiW0w\nht0dxsxrIvQYj1nqnjUIuGmm3ZiX13pexmY7Tf6NS84/S9QZEvFNf+6gh9F85iSbbCw/L9q5Z8ZU\nUWfY0A9c16+D29AaBq0dCX/AokGvoMfMR0LlB/kN0U7vr6SRD2D/6DMWF3rQmRzlWC0bBHQL+8bD\nX09w6kQwicZWeEAvk2+PtnwO/dkgYGC4/bc+/65Y19TAcLlBfWW/rt6vUNT5tfHZDtkDg3bijZlN\nQuVvcY1oJ43dsuUN3l93v6hzQ0f5s/XZmwc7hfcNAd62nKPfy/erLX+/QdQ5xvIglHnzPaQIXBl5\nvAbByPK34p671qdPc8yd2zOmb1dGl0sPAOuZebP5Tet0GC/yFKWqo76tJDSVEdBbwj4WRDbKNg6E\noiQq6ttKQlMpfeiemTUovLw/D0gP2tfv92Djfx501siPpt+s3Svq7MdXdkFxCfYH7bKFrgmlJr8E\nRZWs4l9c1xdAroecI4mCixnZwXD/yPe8Q7SD5XJ7sU5WCeezurAt2rEqAbaF27Am6Bxwbld6Pgoy\n8h3yuPGZ1bfzgdXh9mcGF8rbZ9WRdRbIfl1yKNqIA3bm1C1yblcMzAmG5SuxUbSzmY+JOtgu+1J2\niwWynZ1HnbKSYuCLaeHyarmrpKhWtMEZ7RSzh/vejBRZx/FFZwmMkcGtRDvvs1E6lE5aWk3XGioj\noOfAGJCnlFYID+xjx9pnnh4EOkdkta7yUNv/edDx0Ife93y30QoM3sf1DtnJAbvsQl4h2nmnmpxB\nftpQ9+h3xEMfeqsofegA0CpwaWj5Kl4u2nmhvoeM9+qyiqc+9IwYx+qUcBs6BbZE17EwicZ6qKzM\nePdtS585VgeBs8LtbxtwBtBIUr/0sM8vlv06yUMfev/GT0WXB8JjcNUID3UUk2oe+tDnr5N/V6uO\ncgBdFq0PHQAGWEbqPVkOb7UDFdOHXuilD/25aMcrcn+4t7lrV6MPPRaV0eWyGEB7ImpDxgDww2AM\nmK8oVR31bSWhqfA7dGYuJqIHYGQsln7alVHR9SjKiUZ9W0l0KqUPnZm/QdlmJVKUKoH6tpLIxPel\n6IeW5YMwHmitOLusnRzyoONhfqQLctwm9jFY1tLeR/g1CnEt3rPJNuM00U7xWXKf3FQMdF1/DkfO\nQeDkif/+zSHjjBIsmx8eOXRW/q2inZGDo/exWkm97hJR5+dneos6d/z7bYdsU3AxTg+E+4L74FvR\nziRRo5Kx+uVRe/nr4mvl7ZfK/eMNP5LnjaiWLL+o7NDbOc9D81ygw/sFofKo73qJdp6kZ0WdhzvK\nR+bc/64XdYZf/ppDtqHJUrRvsztU3nq3fI4ke5hu96spMfrrrXj51umziE/H/0vA5RGyu4bAFeFd\nuab+K4qi+AQN6IqiKD5BA7qiKIpP0ICuKIriEzSgK4qi+AQN6IqiKD5BA7qiKIpP0ICuKIriE+Kb\nWPSKJXniZwYutSdTJPWU5zke0WyyqPNGwZ/ltuyS50KgiCSE1RxEF7YPrvN3elW080LnMaLOAu7p\nun6YLSsrOsdaOw9vsDEj0PqOsODyEodOJBNekxOhbnjIw2wkHkYO/6xokEN29AiQZpEfqlNLNoT5\nHnQqkSaW5br28snJ8jCiBfIgibgu+d+iTjVEGZUwknlRfCAYBAJh3x6BK0Uzc7i/qDMO8uQkXS53\nH2kUAN7Of8QhCxYyAvkfh8qUIicNvYYRos7si4eKOve3l2faebtaRJuZgVftMa9ekfvoj7WTagAn\nxV6vd+iKoig+QQO6oiiKT9CAriiK4hM0oCuKovgEDeiKoig+QQO6oiiKT9CAriiK4hPi+x16wPLt\nNxPwpv1b8JKxtSGR8vxIUYeK5W+tL2j0k6jTAxNt5XVYhp+Ra28Pdop2ZtFNog5edZ/cd5rzc20H\n49s+5pCtaroa69qeFdb5WP7GfMqDN4s6cyBPAsCz5br+8uRoh+zXGqtxdu3whNdfw8MEEXGm0WPh\nuaMPTyvASbeEy20pU9x+2Obpos4EjBN1CotdPlouZcYDTlkqA3R7qNj3iDzhxsE75fyATSWniDrL\nFrh/iw0Aoy5xTrqSUW8l0lLODZUHcHfRzoPvyZOk0z3y9+yDcJmo8/bzj9oFaQR0tce8wjebudoo\nauNeh96hK4qi+AQN6IqiKD5BA7qiKIpP0ICuKIriEzSgK4qi+AQN6IqiKD5BA7qiKIpP0ICuKIri\nE+KbWLTSkqzwFQPX25MXSlhOREFdD/VMlu0sPlNOnDgUkafwyRFgaFHQJsuqI3z5D+Ahek3UGfXH\nl1zX70ED0cYQmuGQ1aH9uJ5Wh8p/uu1Z0c7ptEnUuZdfF3Xuf7K9qLMK5zhk2SgEW+TLXpSTOOLN\nkOTwvl+ftAwdksMTTZyDleL2e5IaijrPspxUd1LyvaLOqIvedMgoH6CLwucEu+e5mUqyyulX5Yo6\nB76W7zObIt8hy8Fem/yafd+Kdv72+z+JOnnJcvxoVnK7qLP2sda28pxgEfoH7Ml/pxze5mojOelq\nuKVb6h26oiiKT9CAriiK4hM0oCuKovgEDeiKoig+QQO6oiiKT9CAriiK4hM0oCuKovgEDeiKoig+\noVISi4goC8BeACUAjjJzj6iKSy3LmRFlADWv2y3WdWhUfVEnz0MSTrN/7xN1ata2z1xSvUYQNWsH\nbLKlHmbuuYlniTrdscpd4Sn5WvzFuD4OWR5vxwZuESpPxBjRzma4z6ICAPlIEXW6YK2o0xvDHbIl\n2IjuOBQqz15zi2insvDq22+9EE5YCa4AApunhso8mKJtYq+ngzxLzuP4i6yTNlHU4a7OGb24aRDc\n1uLbi2R/uxQ/izr4QZ49bBrkJJ2R+c5kqGAhI5D/Xag8KkVO4NuEuaJOWw8/i/ifos4LsM9YtAJr\ncBidbLLH57sfrz6NAbf78MrKFC0B0JOZ5YisKFUL9W0lYamsLheqRNuKEk/Ut5WEpbIckwHMI6LF\nROR8hlaUqov6tpKwVFaXy6XMvJ2ImsJw/gxm/qmS6lKUE4n6tpKwVEpAZ+bt5v8dRDQLQA8ATqd/\nfVB4ucT5sqT4YJFYV7Cu29hjBntxVNSpn+ZhqLg99pEVU1NTHSqptFU0Qyy/GGIE3RWEd6YAsDS4\n3SFbk7rHVj4g1QNgJx0SdX7l1aJO0ENdS7DRIduUmhchiGJnTzqwJ0O0X168+vag8DtQlES4Fp8k\n+xo1l/fVavwq6gQ3e6gr3VmXw7edh8VB4Qb5PKvnwQcWIlPUqVXo/F2piwHrkI9UT64rHwdFnaYb\nPOzDaD4ZwQqssZU3p0YZWXFVFDtb0oEthm+n1XCvo8IDOhHVBpDEzPuJqA6APgCeiqr84Mzw8oIg\ncLH9i5Hk6/aK9QWaePnK5Q+iTrMGctDCdQGHKBCwy5g+E80keQjot8BZl431t4k26gRaRJVfbpEP\nkOoBsJkeEXV28lmiTsBDXQX4Maq8e6BdaHnKd7Id/FP+kqSslMW3Z94aXg6uAAJdwmXu7+UrF/k3\nro4IENEIpH0h19U1el02314k+1t+j+qiTooHHyjC16JOIH9BFCkjMDC8bylFrmsT/izqtP1FHjuY\nLvJwHmGJQ9YlYP/KZcZcdztdGwNzLzixX7k0AzCLiNi0P5WZ5W+DFCXxUd9WEpoKD+jMnAmga0Xb\nVZR4o76tJDrxnbHorpzwMhcA/8ixrT75iGziSkR79LLTHJNEneld7xZ1eEnEzCWbGFhiT4K4ta7c\n3/bVGVfKdf3TfZaUDeNaiTZ2UFOHrJD22+S5LM+MUw3yjC0jaLKoc1+JnHz0j2XvOIWZQUxZankU\nPSaaiTvDx4STWjYGl+DHQHi6qybYJW7//Hp5nzfpMELUSUqV/bFkr7MuzmDw/LBv/+eKi0Q7dSEn\n5zUdI/+uAS/UEXWSnnH+rqR1QNLqsLzkd3JdJd1PEXXQUd6H/8HFos4+2BP9DqIm9kVOudZX6I5z\n5gra0O9pFUVRfIIGdEVRFJ+gAV1RFMUnaEBXFEXxCRrQFUVRfIIGdEVRFJ+gAV1RFMUnaEBXFEXx\nCXFNLHql+JnQ8tLgBpwfsA829C2uEW20pBxRZxDPFHU4+hAiNqbf2t9WXrAuG0nd7Qk+w7Jmi3au\nKpIr+/TOfq7rgyTP2vMQXnfIsrAT7RAeS+YwCaP9AFjPHUWd3pnytC5vr5HHhBl4rXMsnB/X5uPK\n88OJS30H/Fe0g49llcpkOYUTSgtoBwot5UdYTnRLmicnszzy6duizk9juok6S3G+U5azAbuuaB8q\nP/RMlISvSK6SVTwMq4QXSJ5Fa9HrzomidgR/wJuBXqHyZMiJV//AvaLOqxtGizp3XDhF1OmPObZy\nEdXGXrKPRTW6xH0Wqg5oh7kut+F6h64oiuITNKAriqL4BA3oiqIoPkEDuqIoik/QgK4oiuITNKAr\niqL4BA3oiqIoPkEDuqIoik+Ia2LRo+v+Hlrm7UFMXWefIPXRjs+JNl7mJ+SKfnhI1hktT9w77NbP\nbeUSBDEsYtLbVe3ka+TZ98h13TzZPUHpZg/18EhnPdsWMXoWhqdwpxHFop35GCrqYImHSZlvlus6\nB40csg04gnOQFxbIeWJxJ6u4bWj5cElTFFrKKUn54vb8B3kicZwv+0CrMdmizqVRJi8OImib1Jvv\nlxOL1jZsI+p0okxR54PDuaLOPTXedcgysB5nolaofBY2iHZuwXmiDnJk397CHUQdXjvSVg5uYwTW\nTLPJ6rd2/+1XJbsnAuoduqIoik/QgK4oiuITNKAriqL4BA3oiqIoPkEDuqIoik/QgK4oiuITNKAr\niqL4BA3oiqIoPiGuiUWTOoZnFFnSYgO6d5xvW/9o/kTRRseUO0SdRb1eE3VqbD0i6uyDPbkiE4vw\nDQ7YZN2Lh4t2NmCrqHPj3GTX9X9df79oY9SKNx2ypAIg6cLwbDgll7vXAwBX/a+hqLN7sDzzUYNr\n5br++bUzCWwF1mAvOoUF08eLduJNwaqW4cLWRjhgKfddMT/KFnaO9Zb3VebS5qLOCEwWdeb1j1JX\nDgPTbg8VPUwihPGXjhd1+vHNos6AGvLURxNnPO6Q8S9BfF0tnAw1bkB10U6NmvJsXP1umiHqzHle\nPl5bxjaxlXctPYQtZ9S0yQbgC1cb56Clq4beoSuKovgEDeiKoig+QQO6oiiKT9CAriiK4hM0oCuK\novgEDeiKoig+QQO6oiiKT9CAriiK4hOOO7GIiN4D0A9AHjOfa8oaAvgEQBsAWQCGMPPeWDYe/iGc\n9MCrg/j4B/vsP4/0el5sxzm0StQZ6GGKm6H8iagzb8cNtnKwEAjseM8mm+wh0ak1y4lFxyzJP9Ho\nmLRetDGy61MOWUb6Sizvem6o/NK940Q7KXsKRJ1VzomGHHRLkXVuos8dsup0AP1oTaj8aclHop3l\nSc7f7pWK8G3UtMxyU51sZW4lt2HMKX8RdT7FYFFnU047USf5lmMOGacGcfsl4fPxiku+Fe1cjbmi\nzre4RtQJPvZ7UWf+ixc4ZPOOFeDqIa+Eyltwqmin29YMUeeyVj+JOjTQ/XwFgC/oRlt5KW0AqL1N\nlgznsbCSBPeZrMpzh/4B4Dg6owF8x8xnAPgBgIf8MkVJONS3lSrJcQd0Zv4JwO4I8QAAH5rLHwK4\nEYpSxVDfVqoqFd2HnsLMeQDAzLkAPDxkK0qVQH1bSXgq+6Wo3LGkKFUT9W0l4ajo0RbziKgZM+cR\nUXMA+W7KPN7yUqek2HGGZOSuECucS5FPxk5WCi8aACCX5RHwgoX2cupip87i+ptEOzt5j6iTUeS+\nPq3OdtHGOl7pkOWkbrGVg6miGRQfknW2eghvaw7KOtuCBxyy5T/bG1DA8xw6h9KzcChjs1zB8VMm\n38ZDg8LLJcX2dQXyzkrPlV/270ctUQcFzUQVXhMlDKxLtZ2PeXD6UiQrLC+uY5HN++T2pMu/a17Q\n+aJ+Vep+W/lkOH0pkjT5fT/SGsm/K7hNtrN0+QZbOfPnPIdOZpRYtSd9O/Zm5AIAlgnHvLwBncy/\nUmYDuBPAiwB+B7iPBUnjPw0t8/dB0FX2r1zO7JUlNqAPyV97dMAOUWcGXyHqBHb8zSkbZC/vSzld\ntNOd5YtQl705ruvrNWgh2kjmc6PKzwyE5YES+Qugo/1FFawaIet08xB/1gTqRJX3s8in8dWineVJ\nl8uVuVMu38Zrlv36ZRDoZ/HtHDmgd+4l+3U6rhd18j185ULzT3LIGABZvnJpFmgs2ulCR0Wd6txZ\n1FmwIiDqXB14JYY8/LlVI9vhi07nbDk2bGnVSdQJrJG/Atp5ZnuH7PyAXUY4z9XG2WiNURT7hDzu\nLhciCgJIBdCRiLYQ0V0AJgC4mojWArjKLCtKlUJ9W6mqHPcdOjPHuoz2Pl6bipIIqG8rVZW4zljU\nsle4T6koNw+1e9n7mHriR9HGRbxcrqiH/CBy5dIBog4V2z/qp3pBUFP7uX/fSLmu9S/JmSXV67sn\nEPwf1xZt9Dng7Gv+5DBj6IHPwoLb3OsBgPWQH9vPOy1L1MHGYlHltAPO/df0MHDagZ2h8pt1HhTt\nXCK3pnKxTry0HbDm3JBzUiYHEyAnfD2ApqJOm8nuXf0AUPy0s2siCEIgEJZPILlLYSB/JuqMgTwL\nWe8Jw0SdS/s7z/vNOYxLp4Xfo9Ac2d9ouXy+PvaVPOMZRsjn0YPr7bMaBXMZgfX/scmSk9zf9/UR\nui019V9RFMUnaEBXFEXxCRrQFUVRfIIGdEVRFJ+gAV1RFMUnaEBXFEXxCRrQFUVRfIIGdEVRFJ8Q\n18Si5dQ1tDyTjmEQPWlbPwW/E238UuI+9gEAXFxPbsvjP3gYXWqWPTEASxiodbtdJg8zgqXoJuq0\nvzDZdf2XC+XZau5Y8y+HrMY2oNaa8G/lTe71AEDzm51jfUSS9Im8/0rmynW90udhh2xFjTXYVjs8\nnsbjT8rJKfG+V3n5m/tDy8uD63Be4OdQeeT9b4jbd7o+TdTpjdGiTsE4eQCdd3iIQ7aIM3GAvwmV\nR+/4WLTzWspwUWcV9xN15tJAUefOzjMcsiQASZ3DfljypOxvzz3zqKizEfL4TK8U1xR1/tXenoS4\nsFkmDrZva5ONxnhXGx3QznVeKL1DVxRF8Qka0BVFUXyCBnRFURSfoAFdURTFJ2hAVxRF8Qka0BVF\nUXyCBnRFURSfoAFdURTFJ8Q1seh93B1aXo512IuOtvXpHiaUfXjiZFGHv5NnE8EL8rXtpzH2JKa1\nBwvw002NbLLBkCddXorzRR2a456oU0Rywsj0829wyBaszUbS+eEZk27JmC3aaXjbYVGHP5b3cfIK\nUQVRsyb74UyHAAAKAklEQVRWBTFjriUp45g8+W+8GTnNkjy0IIggWdrfV95+CJxJYZE8jedkQxtG\niiobOzlnpMpLKsLGpLB8XtPLRDuPpL0t6hS/LCf79H3/G1Fn9YttHbLs4H6sDpwcKu9GA9HO2Oej\nTzZthcbKMx/NT54i6jxHj9vKB+hLfEf2RKu62Odq4xK4Z0nqHbqiKIpP0ICuKIriEzSgK4qi+AQN\n6IqiKD5BA7qiKIpP0ICuKIriEzSgK4qi+AQN6IqiKD4hrolFhxGe5eMYqtvKAJBKl4g2Pv/TNaLO\nje/KyQxLRp8t6lyGJbbyFgRxGeyzkOQulK+RPNhDYsxW90Sdany763oAGHrtHIeseBtj6EfLw235\n2kPS1XXyb/oQw0SdP3bpKur8yFc6ZLt3bEDDqxeGyiv7XijaiTu3PW0prATe2hAudh8nbv7s7XLS\n0HN3yrNE3TtJnt3p7+ycJSrIQQQ47Nvz6HvRzvBzXxN14CEB7XPIs3G1QrZDVgjCDjQJla/AL6Kd\nc8cuFnVW/yzv5+cuk2PV2fjVVs5BNlpGyLaitasNgntb9A5dURTFJ2hAVxRF8Qka0BVFUXyCBnRF\nURSfoAFdURTFJ2hAVxRF8Qka0BVFUXyCBnRFURSfcNyJRUT0HoB+APKY+VxTNg7AcAD5ptpYZo45\n/cg/cG9ouQhz8Av629YfxkliO16kx0Sdt+75f6KOtS0xmR+RoJTBwHx7gg/Vl83QrXKiQkmmezLU\naafLiQxZX6c4ZDuDB5EVCM92dFq+nHR1+GRRBV2RJurclT5d1Lmy81cO2THah8a0MyxwTrDjZKMH\nnRhUhG8D1uNzyF5+yUMjRsnJZ1xD1pl8mTNpKJKp3+5wyI4eKsR9+8PyA/Xni3auKf5c1Gla7EwI\niuTsaveIOsVw+m0+/YD51CtUTi6RZz76dZo8fdSPgYtFnVTIOkVsn2XsCFd3yFa+5Z4019w976hc\nd+gfAIiWpjmRmbuZf/IeVZTEQ31bqZIcd0Bn5p8A7I6yKvEnfFQUF9S3lapKZfShP0BEaUT0LpGX\nDghFqTKobysJTUUPzvUWgKeZmYnoWQATAfw+lvLOQQ+EC8XOQXuOorpY4c5Ql2ZsDvBBUWc2ZJ2m\nGfa+79RfAUQMlkO1RTNAuqxSMtu9n311irPf06ET5XcvTT1qKzcplPvzj9UUVbC9RqGslBMUVfLS\nljtke1Mz7IJ9e50bHkkHjmQ45RVHmXwbeMqyHOHb38vHDrs8tMjLz90hH9+jM5zHrnihfdAq5rqi\nnW3BpaLO4ZIcUScveauoUxLlXrTwZ/uJlVTiYeC5BQWiynfYKeqspzWiTh7b+/0dfg0Ai6P4dm46\nkGvoptVyrrZSoQGdma2e+g4A53B/FprMfCO0XBScg9qBsr8UbYJMUacuy8HmBkwVddrO3xchYQR6\n25/Cqb58AiHKMYuk5Ab3p/vvT28q2mjH0Su6wfZSNPI3OTl8svyb1tauJ+qMTQ+IOs06R7/xbRbo\nGVpOH3e9aAcbK/bhs6y+DVhHVPwBQPhlHa66Wq7wWw+NOtODzm752FUfEv0CU33IoNDykeFNoupY\nOSUg383kFF8g6jSr9quoE+2lKACkBKwvRYtFO2tIfinaO/C6qFObOok6O7inQ2b1awBI3+Pu211b\nA3MHxPbt8no9wdKvSETNLesGApCPjKIkJurbSpWjPJ8tBgH0BNCYiLbAuCW5koi6wnjGzAIwogLa\nqCgnFPVtpapy3AGdmaM9P39QjrYoSkKgvq1UVeI6Y1H2wg7hwobmKLCWAXS5UJ5xpB++FHVm0iBR\nZzLuE3V6XLHIVl6csw01rzjFJrt5htyefhP+Jeq8CPeEqRy0FG2MImcGy26aiw+pT6j815Q/i3bG\nY7yo05WcLzMjua/zK6LOjOIhDtnhkkzkFltmO9r4nWgn7nTpHV7enQ80tJRf8vCeZYmcyINBV8g6\nC7JElf1zT3MKV9XD4Qbh9zQn7Yr2Faedb+6/SW7PY0dFlfnZrUSdcy9Z6JAd5Foo5PC7nJUfyTNb\n9bnjC1HniixnXZHMb3u5qHMz7Of9YmzCBbC/v/i+hf09ooNGfVz7yTX1X1EUxSdoQFcURfEJGtAV\nRVF8ggZ0RVEUn5A4AT3TQ/pkgpGdvj/eTSgzh9Kz4t2EMlOcsT7eTSgfh6qebyO76rX5ULqcZJhI\nbE/fU+E2EyegZ1Vq2nalkJ1RBQN6Rla8m1Bmqn5Ar3q+jeyq1+bDVcy3czM8pIyXkcQJ6IqiKEq5\niOt36N0sQz9sTAbaRQwF0RF1RBvNPXyPfaYHOy3RQtRpgPa2cnWsdci6NRTNoB1kpZo423V9Y7QV\nbUT73TuRbJPXxRminY6QB2ZqjWaizjEP7tYlyoBsq5CEcyzyvd3k9ixbJqpUKt0s46xs3Am0s467\nIg+LAnTzMKuIvMuBbjVknQZO0cbqQDuLvEayPBHKEWHyBcOQhxGI5dMVHaIo7UI1m29XayTbaQ8P\ng2bW6CaqtPAQhxrCPspdDdRGE7SxKzUQ6jq5PYC5MVcTs4ckh0qAiOJTsfKbgZnjMn65+rZS2cTy\n7bgFdEVRFKVi0T50RVEUn6ABXVEUxSckREAnor5EtIaI1hGR+6hUCQIRZRHRCiJaTkSL5C1OPET0\nHhHlEdFKi6whEc0lorVE9G0iTaUWo73jiCibiJaZf/KMBAmC+nXlUNX8Gjhxvh33gE5ESQDegDHL\n+lkAbiHyMP1H/CkB0JOZz2PmHvFuTAyizV4/GsB3zHwGjKl0xpzwVsUmWnsBYCIzdzP/vjnRjToe\n1K8rlarm18AJ8u24B3QAPQCsZ+bNzHwUwHQAA+LcJi8QEmP/xSTG7PUDAHxoLn8I4MYT2igXYrQX\nsMwcVIVQv64kqppfAyfOtxPhwLUEYJ0VNtuUJToMYB4RLSai4fFuTBlIYeY8AGDmXAApcW6PFx4g\nojQiejfRHqVdUL8+sVRFvwYq2LcTIaBXVS5l5m4ArgNwPxFdFu8GHSeJ/t3qWwBOZ+auAHIBTIxz\ne/yO+vWJo8J9OxECeg6AUy3lVqYsoWHm7eb/HQBmwXjErgrkEVEzIDTxcX6c2+MKM+/gcLLEOwDk\naeMTA/XrE0uV8mugcnw7EQL6YgDtiagNEdUAMAzA7Di3yRUiqk1EJ5vLdQD0QeLOAm+bvR7Gvr3T\nXP4dAHkOrhOLrb3myVnKQCTufo5E/bpyqWp+DZwA347rWC4AwMzFRPQAjAEKkgC8x8yJPtRbMwCz\nzBTvagCmMnPsARbiRIzZ6ycA+BcR3Q1gMwDnJJ5xIkZ7rySirjC+vsgCMCJuDSwD6teVR1Xza+DE\n+bam/iuKoviEROhyURRFUSoADeiKoig+QQO6oiiKT9CAriiK4hM0oCuKovgEDeiKoig+QQO6oiiK\nT9CAriiK4hP+P9HijwlUNymtAAAAAElFTkSuQmCC\n", + "image/png": "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\n", "text/plain": [ - "" + "" ] }, "metadata": {}, diff --git a/openmc/mgxs_library.py b/openmc/mgxs_library.py index eaf66d120..2079b8801 100644 --- a/openmc/mgxs_library.py +++ b/openmc/mgxs_library.py @@ -1191,20 +1191,20 @@ class XSdata(object): 'writing the HDF5 library') # Get the sparse scattering data to print to the library G = self.energy_groups.num_groups - if self.representation is 'isotropic': + if self.representation == 'isotropic': g_out_bounds = np.zeros((G, 2), dtype=np.int) for g_in in range(G): nz = np.nonzero(self._scatter_matrix[i][0, g_in, :]) - g_out_bounds[g_in, 0] = nz[0] - g_out_bounds[g_in, 1] = nz[-1] + g_out_bounds[g_in, 0] = nz[0][0] + g_out_bounds[g_in, 1] = nz[0][-1] # Now create the flattened scatter matrix array + matrix = self._scatter_matrix[i] flat_scatt = [] - for l in range(self._scatter_matrix[i].shape[0]): - for g_in in range(G): - matrix = self._scatter_matrix[i][l, g_in, :] - for g_out in range(g_out_bounds[g_in, 0], - g_out_bounds[g_in, 1] + 1): - flat_scatt.append(matrix[g_out]) + for g_in in range(G): + for g_out in range(g_out_bounds[g_in, 0], + g_out_bounds[g_in, 1] + 1): + for l in range(len(matrix[:, g_in, g_out])): + flat_scatt.append(matrix[l, g_in, g_out]) # And write it. scatt_grp = xsgrp.create_group('scatter data') scatt_grp.create_dataset("scatter matrix", @@ -1213,12 +1213,12 @@ class XSdata(object): # Repeat for multiplicity if self._multiplicity_matrix[i] is not None: # Now create the flattened scatter matrix array + matrix = self._multiplicity_matrix[i][:, :] flat_mult = [] for g_in in range(G): - matrix = self._multiplicity_matrix[i][g_in, :] for g_out in range(g_out_bounds[g_in, 0], g_out_bounds[g_in, 1] + 1): - flat_mult.append(matrix[g_out]) + flat_mult.append(matrix[g_in, g_out]) scatt_grp.create_dataset("multiplicity matrix", data=np.array(flat_mult), compression=compression) @@ -1230,7 +1230,7 @@ class XSdata(object): scatt_grp.create_dataset("g_max", data=g_out_bounds[:, 1], compression=compression) - else: + elif self.representation == 'angle': Np = self.num_polar Na = self.num_azimuthal g_out_bounds = np.zeros((Np, Na, G, 2), dtype=np.int) @@ -1239,20 +1239,18 @@ class XSdata(object): for g_in in range(G): matrix = self._scatter_matrix[i][p, a, 0, g_in, :] nz = np.nonzero(matrix) - g_out_bounds[p, a, g_in, 0] = nz[0] - g_out_bounds[p, a, g_in, 1] = nz[-1] + g_out_bounds[p, a, g_in, 0] = nz[0][0] + g_out_bounds[p, a, g_in, 1] = nz[0][-1] # Now create the flattened scatter matrix array flat_scatt = [] for p in range(Np): for a in range(Na): - for l in range(self._scatter_matrix[i].shape[2]): - for g_in in range(G): - matrix = \ - self._scatter_matrix[i][p, a, 0, g_in, :] - for g_out in range(g_out_bounds[p, a, g_in, 0], - g_out_bounds[p, a, g_in, 1] - + 1): - flat_scatt.append(matrix[g_out]) + matrix = self._scatter_matrix[i][p, a, :, :, :] + for g_in in range(G): + for g_out in range(g_out_bounds[p, a, g_in, 0], + g_out_bounds[p, a, g_in, 1] + 1): + for l in range(len(matrix[:, g_in, g_out])): + flat_scatt.append(matrix[l, g_in, g_out]) # And write it. scatt_grp = xsgrp.create_group('scatter data') scatt_grp.create_dataset("scatter matrix", @@ -1264,20 +1262,17 @@ class XSdata(object): flat_mult = [] for p in range(Np): for a in range(Na): - for l in range(self._scatter_matrix[i].shape[2]): - for g_in in range(G): - matrix = \ - self._multiplicity_matrix[i][p, a, g_in, :] - for g_out in range(g_out_bounds[p, a, g_in, 0], - g_out_bounds[p, a, g_in, 1] + 1): - flat_mult.append(matrix[g_out]) - scatt_grp.create_dataset("multiplicity matrix", - data=np.array(flat_mult), - compression=compression) + matrix = self._multiplicity_matrix[i][p, a, :, :] + for g_in in range(G): + for g_out in range(g_out_bounds[p, a, g_in, 0], + g_out_bounds[p, a, g_in, 1] + 1): + flat_mult.append(matrix[g_in, g_out]) # And finally, adjust g_out_bounds for 1-based group counting # and write it. g_out_bounds[:, :, :, :] += 1 - scatt_grp.create_dataset("g_out bounds", data=g_out_bounds, + scatt_grp.create_dataset("g_min", data=g_out_bounds[:, :, :, 0], + compression=compression) + scatt_grp.create_dataset("g_max", data=g_out_bounds[:, :, :, 1], compression=compression) diff --git a/openmc/settings.py b/openmc/settings.py index 4a9e05042..14d89543f 100644 --- a/openmc/settings.py +++ b/openmc/settings.py @@ -1079,8 +1079,9 @@ class Settings(object): element = ET.SubElement(self._settings_file, "tabular_legendre") subelement = ET.SubElement(element, "enable") subelement.text = str(self._tabular_legendre['enable']).lower() - subelement = ET.SubElement(element, "num_points") - subelement.text = str(self._tabular_legendre['num_points']) + if 'num_points' in self._tabular_legendre: + subelement = ET.SubElement(element, "num_points") + subelement.text = str(self._tabular_legendre['num_points']) def _create_temperature_subelements(self): if self.temperature: diff --git a/src/mgxs_header.F90 b/src/mgxs_header.F90 index 298602402..51fb1384c 100644 --- a/src/mgxs_header.F90 +++ b/src/mgxs_header.F90 @@ -403,7 +403,7 @@ module mgxs_header xsdata_grp = open_group(xs_id, trim(temp_str)) if (this % fissionable) then allocate(xs % nu_fission(groups)) - allocate(xs % chi(groups,groups)) + allocate(xs % chi(groups, groups)) if (check_dataset(xsdata_grp, "chi")) then ! Chi was provided, that means we need chi and nu-fission vectors ! Get chi @@ -483,13 +483,13 @@ module mgxs_header call fatal_error("Must provide 'scatter data'") scatt_grp = open_group(xsdata_grp, 'scatter data') ! First get the outgoing group boundary indices - if (check_dataset(xsdata_grp, "g_min")) then + if (check_dataset(scatt_grp, "g_min")) then allocate(gmin(groups)) call read_dataset(gmin, scatt_grp, "g_min") else call fatal_error("'g_min' for the scatter matrix must be provided") end if - if (check_dataset(xsdata_grp, "g_max")) then + if (check_dataset(scatt_grp, "g_max")) then allocate(gmax(groups)) call read_dataset(gmax, scatt_grp, "g_max") else @@ -514,8 +514,8 @@ module mgxs_header index = 1 do gin = 1, groups allocate(input_scatt(gin) % data(order_dim, gmin(gin):gmax(gin))) - do l = 1, order_dim - do gout = gmin(gin), gmax(gin) + do gout = gmin(gin), gmax(gin) + do l = 1, order_dim input_scatt(gin) % data(l, gout) = temp_arr(index) index = index + 1 end do @@ -531,7 +531,7 @@ module mgxs_header order_dim = order + 1 end if - allocate(scatt_coeffs(gin)) + allocate(scatt_coeffs(groups)) if (this % scatter_type == ANGLE_LEGENDRE .and. & legendre_to_tabular) then this % scatter_type = ANGLE_TABULAR @@ -539,7 +539,7 @@ module mgxs_header order = order_dim dmu = TWO / real(order - 1, 8) do gin = 1, groups - allocate(scatt_coeffs(gin) % data(order_dim, groups)) + allocate(scatt_coeffs(gin) % data(order_dim, gmin(gin):gmax(gin))) do gout = gmin(gin), gmax(gin) norm = ZERO do imu = 1, order_dim @@ -572,10 +572,9 @@ module mgxs_header end do ! gout end do ! gin else - ! Sticking with current representation, carry forward but change - ! the array ordering + ! Sticking with current representation do gin = 1, groups - allocate(scatt_coeffs(gin) % data(order_dim, groups)) + allocate(scatt_coeffs(gin) % data(order_dim, gmin(gin):gmax(gin))) scatt_coeffs(gin) % data(:, :) = input_scatt(gin) % data(:, :) end do end if @@ -642,7 +641,7 @@ module mgxs_header ! Close the groups we have opened and deallocate call close_group(xsdata_grp) - deallocate(input_scatt, scatt_coeffs, temp_mult) + deallocate(scatt_coeffs, temp_mult) end associate ! xs end do ! Temperatures end subroutine mgxsiso_from_hdf5 @@ -685,6 +684,8 @@ module mgxs_header temp_str = trim(to_str(temps_to_read % data(t))) // "K" xsdata_grp = open_group(xs_id, trim(temp_str)) if (this % fissionable) then + allocate(xs % nu_fission(groups, this % n_azi, this % n_pol)) + allocate(xs % chi(groups, groups, this % n_azi, this % n_pol)) if (check_dataset(xsdata_grp, "chi")) then ! Chi was provided, that means we need chi and nu-fission vectors ! Get chi @@ -783,9 +784,6 @@ module mgxs_header &kappa-fission tallies in tallies.xml file!") end if end if - else - xs % nu_fission(:, :, :) = ZERO - xs % chi(:, :, :, :) = ZERO end if if (check_dataset(xsdata_grp, "absorption")) then @@ -800,13 +798,13 @@ module mgxs_header call fatal_error("Must provide 'scatter data'") scatt_grp = open_group(xsdata_grp, 'scatter data') ! First get the outgoing group boundary indices - if (check_dataset(xsdata_grp, "g_min")) then + if (check_dataset(scatt_grp, "g_min")) then allocate(gmin(groups, this % n_azi, this % n_pol)) call read_dataset(gmin, scatt_grp, "g_min") else call fatal_error("'g_min' for the scatter matrix must be provided") end if - if (check_dataset(xsdata_grp, "g_max")) then + if (check_dataset(scatt_grp, "g_max")) then allocate(gmax(groups, this % n_azi, this % n_pol)) call read_dataset(gmax, scatt_grp, "g_max") else @@ -839,8 +837,8 @@ module mgxs_header do gin = 1, groups allocate(input_scatt(gin, iazi, ipol) % data(order_dim, & gmin(gin, iazi, ipol):gmax(gin, iazi, ipol))) - do l = 1, order_dim - do gout = gmin(gin, iazi, ipol), gmax(gin, iazi, ipol) + do gout = gmin(gin, iazi, ipol), gmax(gin, iazi, ipol) + do l = 1, order_dim input_scatt(gin, iazi, ipol) % data(l, gout) = & temp_arr(index) index = index + 1 @@ -859,7 +857,7 @@ module mgxs_header order_dim = order + 1 end if - allocate(scatt_coeffs(gin, this % n_azi, this % n_pol)) + allocate(scatt_coeffs(groups, this % n_azi, this % n_pol)) if (this % scatter_type == ANGLE_LEGENDRE .and. & legendre_to_tabular) then this % scatter_type = ANGLE_TABULAR @@ -870,7 +868,8 @@ module mgxs_header do iazi = 1, this % n_azi do gin = 1, groups allocate(scatt_coeffs(gin, iazi, ipol) % data(& - order_dim, groups)) + order_dim, & + gmin(gin, iazi, ipol):gmax(gin, iazi, ipol))) do gout = gmin(gin, iazi, ipol), gmax(gin, iazi, ipol) norm = ZERO do imu = 1, order_dim @@ -906,12 +905,12 @@ module mgxs_header end do ! iazi end do ! ipol else - ! Sticking with current representation, carry forward but change - ! the array ordering + ! Sticking with current representation, carry forward do ipol = 1, this % n_pol do iazi = 1, this % n_azi do gin = 1, groups - allocate(scatt_coeffs(gin, iazi, ipol) % data(order_dim, groups)) + allocate(scatt_coeffs(gin, iazi, ipol) % data(order_dim, & + gmin(gin, iazi, ipol):gmax(gin, iazi, ipol))) scatt_coeffs(gin, iazi, ipol) % data(:, :) = & input_scatt(gin, iazi, ipol) % data(:, :) end do @@ -1014,7 +1013,7 @@ module mgxs_header ! Close the groups we have opened and deallocate call close_group(xsdata_grp) - deallocate(input_scatt, scatt_coeffs, temp_mult) + deallocate(scatt_coeffs, temp_mult) end associate ! xs end do ! Temperatures end subroutine mgxsang_from_hdf5 @@ -1063,6 +1062,7 @@ module mgxs_header ! Determine the scattering type of our data and ensure all scattering orders ! are the same. scatter_type = nuclides(mat % nuclide(1)) % obj % scatter_type +write(*,*) 'scatter_type', scatter_type select type(nuc => nuclides(mat % nuclide(1)) % obj) type is (MgxsIso) order = size(nuc % xs(1) % scatter % dist(1) % data, dim=1) @@ -1125,7 +1125,7 @@ module mgxs_header ! the problem wide max scatt order and use whichever is lower order = min(mat_max_order, max_order) ! Ok, got our order, store the dimensionality - order_dim = order + 1 + order_dim = order end if end subroutine mgxs_combine @@ -1185,6 +1185,7 @@ module mgxs_header allocate(scatt_coeffs(order_dim,groups,groups)) scatt_coeffs(:, :, :) = ZERO + this % scatter_type = scatter_type if (scatter_type == ANGLE_LEGENDRE) then allocate(ScattDataLegendre :: this % xs(t) % scatter) else if (scatter_type == ANGLE_TABULAR) then @@ -1302,8 +1303,8 @@ module mgxs_header end do ! Now create our jagged data from the dense data - call jagged_from_dense_2D(scatt_coeffs, jagged_scatt) - call jagged_from_dense_1D(temp_mult, jagged_mult, gmin, gmax) + call jagged_from_dense_2D(scatt_coeffs, jagged_scatt, gmin, gmax) + call jagged_from_dense_1D(temp_mult, jagged_mult) ! Initialize the ScattData Object call this % xs(t) % scatter % init(gmin, gmax, jagged_mult, & @@ -1319,6 +1320,8 @@ module mgxs_header end do end if + write(*,*) this % scatter_type + ! Deallocate temporaries deallocate(jagged_mult, jagged_scatt, gmin, gmax, scatt_coeffs, & temp_mult, mult_num, mult_denom) @@ -1557,6 +1560,7 @@ module mgxs_header ! Initialize the ScattData Object call this % xs(t) % scatter(iazi, ipol) % obj % init(gmin, & gmax, jagged_mult, jagged_scatt) + deallocate(jagged_scatt, jagged_mult, gmin, gmax) end do end do @@ -1576,8 +1580,7 @@ module mgxs_header end if ! Deallocate temporaries - deallocate(jagged_mult, jagged_scatt, gmin, gmax, scatt_coeffs, & - temp_mult, mult_num, mult_denom) + deallocate(scatt_coeffs, temp_mult, mult_num, mult_denom) end associate ! nuc end do NUC_LOOP end do TEMP_LOOP diff --git a/src/scattdata_header.F90 b/src/scattdata_header.F90 index 6dd104d5c..6004cbd19 100644 --- a/src/scattdata_header.F90 +++ b/src/scattdata_header.F90 @@ -155,7 +155,8 @@ contains allocate(this % energy(gin) % data(gmin(gin):gmax(gin))) this % energy(gin) % data(:) = energy(gin) % data(:) allocate(this % mult(gin) % data(gmin(gin):gmax(gin))) - this % mult(gin) % data(:) = mult(gin) % data(:) + this % mult(gin) % data(gmin(gin):gmax(gin)) = & + mult(gin) % data(gmin(gin):gmax(gin)) allocate(this % dist(gin) % data(order, gmin(gin):gmax(gin))) this % dist(gin) % data = ZERO end do @@ -280,6 +281,7 @@ contains ! Build energy transfer probability matrix from data in matrix ! while also normalizing matrix itself (making CDF of f(mu=1)=1) do gin = 1, groups + allocate(energy(gin) % data(gmin(gin):gmax(gin))) do gout = 1, groups norm = sum(matrix(gin) % data(:, gout)) energy(gin) % data(gout) = norm @@ -379,6 +381,7 @@ contains allocate(energy(groups)) ! Build energy transfer probability matrix from data in matrix do gin = 1, groups + allocate(energy(gin) % data(gmin(gin):gmax(gin))) do gout = gmin(gin), gmax(gin) norm = ZERO do imu = 2, order @@ -732,15 +735,16 @@ contains ! default is ZERO !=============================================================================== - subroutine jagged_from_dense_1D(dense, jagged, lo_bounds, hi_bounds, key_) + subroutine jagged_from_dense_1D(dense, jagged, lo_bounds_, hi_bounds_, key_) real(8), intent(in) :: dense(:, :) type(Jagged1D), allocatable, intent(inout) :: jagged(:) real(8), intent(in), optional :: key_ - integer, intent(inout), allocatable, optional :: lo_bounds(:) - integer, intent(inout), allocatable, optional :: hi_bounds(:) + integer, intent(inout), allocatable, optional :: lo_bounds_(:) + integer, intent(inout), allocatable, optional :: hi_bounds_(:) real(8) :: key integer :: i, jmin, jmax + integer, allocatable :: lo_bounds(:), hi_bounds(:) if (present(key_)) then key = key_ @@ -748,23 +752,18 @@ contains key = ZERO end if - if (present(lo_bounds)) then - if (allocated(lo_bounds)) deallocate(lo_bounds) - allocate(lo_bounds(size(dense, dim=2))) - end if - if (present(hi_bounds)) then - if (allocated(hi_bounds)) deallocate(hi_bounds) - allocate(hi_bounds(size(dense, dim=2))) - end if + allocate(lo_bounds(size(dense, dim=2))) + allocate(hi_bounds(size(dense, dim=2))) + if (allocated(jagged)) deallocate(jagged) allocate(jagged(size(dense, dim=2))) do i = 1, size(dense, dim=2) ! Find the min and max j values do jmin = 1, size(dense, dim=1) - if (dense(jmin, i) > key) exit + if (dense(jmin, i) /= key) exit end do do jmax = size(dense, dim=1), 1, -1 - if (dense(jmax, i) > key) exit + if (dense(jmax, i) /= key) exit end do ! Treat the case of all values matching the key if (jmin > jmax) then @@ -776,21 +775,33 @@ contains allocate(jagged(i) % data(jmin:jmax)) jagged(i) % data(jmin:jmax) = dense(jmin:jmax, i) - if (present(lo_bounds)) lo_bounds(i) = jmin - if (present(hi_bounds)) hi_bounds(i) = jmax + lo_bounds(i) = jmin + hi_bounds(i) = jmax end do + if (present(lo_bounds_)) then + if (allocated(lo_bounds_)) deallocate(lo_bounds_) + allocate(lo_bounds_(size(dense, dim=2))) + lo_bounds_ = lo_bounds + end if + if (present(hi_bounds_)) then + if (allocated(hi_bounds_)) deallocate(hi_bounds_) + allocate(hi_bounds_(size(dense, dim=2))) + hi_bounds_ = hi_bounds + end if + end subroutine jagged_from_dense_1D - subroutine jagged_from_dense_2D(dense, jagged, lo_bounds, hi_bounds, key_) + subroutine jagged_from_dense_2D(dense, jagged, lo_bounds_, hi_bounds_, key_) real(8), intent(in) :: dense(:, :, :) type(Jagged2D), allocatable, intent(inout) :: jagged(:) real(8), intent(in), optional :: key_ - integer, intent(inout), allocatable, optional :: lo_bounds(:) - integer, intent(inout), allocatable, optional :: hi_bounds(:) + integer, intent(inout), allocatable, optional :: lo_bounds_(:) + integer, intent(inout), allocatable, optional :: hi_bounds_(:) real(8) :: key integer :: i, jmin, jmax + integer, allocatable :: lo_bounds(:), hi_bounds(:) if (present(key_)) then key = key_ @@ -798,23 +809,18 @@ contains key = ZERO end if - if (present(lo_bounds)) then - if (allocated(lo_bounds)) deallocate(lo_bounds) - allocate(lo_bounds(size(dense, dim=3))) - end if - if (present(hi_bounds)) then - if (allocated(hi_bounds)) deallocate(hi_bounds) - allocate(hi_bounds(size(dense, dim=3))) - end if + allocate(lo_bounds(size(dense, dim=3))) + allocate(hi_bounds(size(dense, dim=3))) + if (allocated(jagged)) deallocate(jagged) allocate(jagged(size(dense, dim=3))) do i = 1, size(dense, dim=3) ! Find the min and max j values - do jmin = 1, size(dense, dim=1) - if (sum(dense(:, jmin, i)) > key) exit + do jmin = 1, size(dense, dim=2) + if (any(dense(:, jmin, i) /= key)) exit end do - do jmax = size(dense, dim=1), 1, -1 - if (sum(dense(:, jmax, i)) > key) exit + do jmax = size(dense, dim=2), 1, -1 + if (any(dense(:, jmax, i) /= key)) exit end do ! Treat the case of all values matching the key if (jmin > jmax) then @@ -826,10 +832,21 @@ contains allocate(jagged(i) % data(size(dense, dim=1), jmin:jmax)) jagged(i) % data(:, jmin:jmax) = dense(:, jmin:jmax, i) - if (present(lo_bounds)) lo_bounds(i) = jmin - if (present(hi_bounds)) hi_bounds(i) = jmax + lo_bounds(i) = jmin + hi_bounds(i) = jmax end do + if (present(lo_bounds_)) then + if (allocated(lo_bounds_)) deallocate(lo_bounds_) + allocate(lo_bounds_(size(dense, dim=3))) + lo_bounds_ = lo_bounds + end if + if (present(hi_bounds_)) then + if (allocated(hi_bounds_)) deallocate(hi_bounds_) + allocate(hi_bounds_(size(dense, dim=3))) + hi_bounds_ = hi_bounds + end if + end subroutine jagged_from_dense_2D end module scattdata_header diff --git a/tests/1d_mgxs.h5 b/tests/1d_mgxs.h5 index 4b7b94cb4..38bb50067 100644 Binary files a/tests/1d_mgxs.h5 and b/tests/1d_mgxs.h5 differ