From a235aa8cbad878a7e0b4c995287a0e399ed06efc Mon Sep 17 00:00:00 2001 From: Adam Nelson Date: Fri, 9 Sep 2016 20:39:05 -0400 Subject: [PATCH] Progressively fixing bugs, last one seems to be tabular representation doesnt produce correct results anymore --- .../pythonapi/examples/mgxs-part-iv.ipynb | 213 ++++++++++-------- openmc/mgxs_library.py | 61 +++-- openmc/settings.py | 5 +- src/mgxs_header.F90 | 61 ++--- src/scattdata_header.F90 | 83 ++++--- tests/1d_mgxs.h5 | Bin 100568 -> 123864 bytes 6 files changed, 226 insertions(+), 197 deletions(-) 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": "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\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 4b7b94cb45772879a531852ad5db9fdbe58a49d6..38bb500677ae2d95948a7992f0c580130546e90c 100644 GIT binary patch literal 123864 zcmeHQcR&+K7Y`r`R&0o3i49Rt#d@fxFJkW~7Hkv&4GMx31slDH4Y7eDf(1|y#RB5l zuw%Is4Pro4PEJHDVEL4@@oh3QAR9wg1TL`2ANlRfzMXyZ_RV{5%FeDHHEcw^+AV5x zL_ak(P7RKR_>lY+;-4@}Nt{K}1(g&vHs{w!)$AS&LJbqsE!Q9*%k99%BagR#@A_ZnozAmd>z-($-&ve$=Sh*(~t{A*Y~Nz=~IZ?iINg32{$XM zrF`$#hevVny%SrW(W5$YIEr@oU2#|2OwtaGaSe%G zH^latRD9tSsxeT%Uj6%w6(MN{JW-+yKcfi~hl$!6A77gjj}Az=IjJbEmWD7G(+PVZ z3PP7?ijFeP5t7zY(7a@MnVoR~zaZq{Bw>J*m$MX|P+Nx31=D4IKnH|QtpKHUvEPcu zbcqp&g3#sQwAx;j!^L!F2Izp$`Qvo-FigM@h&|H~887Omho4(rjv=;7bvZhe1)68= z=xA-X$b7Dim6%S8GB~1pi|iZXL5(wF$T%a)X>+Dbo+<+I3Bn)2x*UC6ZUd@RHI9Ro zy@Qpb)gmWzC#rZ3r!hsSjxH4!VeM$=?N_Y^~BdZT9`XISvhobaqQj}5RK$`zB7FB}!xnTP! z%Z`rHMD!xwML&fdMRH)vKi!TJI~0udhsc3$KSz-hWkh60m5ZW;z-Fi*(tZ+fT8Ql- z(N8_B--M2??`34C%3h|#sflb37KoDA3KiQS6)Lt9ost&MsZ#W!^UBJ~;u6#_y^7MP z`ba25@+j5loAPgex;?$Pr-jb{*Z*Gq#tg9TGHY-(uM~ z&}}my{_>%LQK9P?>;2%eHZdrmwh(+f{{5nrS`@@CZ=IttWgF;gZ)s|m>Id3M?br8P zz7m9sK3vwDXA3bV8w72Y@&Svx$le#-H`HVLi-Q8VHh=Rr)$CcYq;>aDtv~@d$JFTf z_r!fr|MyOsyY6fS%dc@=XY{j&HVqqf%`jUCqsGkInVvZf(*18Lb>c`bzw2mAo`Z58 zoE~^;>g2X-HN1=~iBdi7B=4OUsq8kMj#5rp@*TBN&sLG;w&x2#%kKG$d; zOuB44w5a}4`DZFOKaXj>zk0z1$EWsVZhAr6W?7E{j#KGS!Qf*DykJJI+xqcGykK9r z%A8u~ykO976A!PuUZAbqW&q@S!K1={`D--1VY_LpU$S=C?^7jV+ z@OyzFe|Q6T)tK7--gtv^qm!S_yZJy(=T0UkZG6Bpw{!fyI4ZqTb!cIs4_ugHt9fjK zFQ~--Z(dfEFIX1*qWhbQ9~9^WO;=gu2YU>oxK@w-VEneIMQiQ+;e>iX_x0MV;bNh- z;Sx>&)VFdBPV2q~{{6DL&%(QF;lt=({dj#hfUsfbPp#){gr|vDytX&m3_V(|SH80_ z_=okt;7FYdCm(shFlS|#yLCN4siw(*2);X5k3M*NTZ$XZv=Xe^r|ky3$?aWiLRLY_ z*g0ys16DzUl{??OEL;iMVe^w?p00%D%I@uiuUEp_36pNcG+za-`x_tKXR->cQ|peL za&Z-0d|{%Xfp*;U_Jejora$Uv^uc^X}07{DY3K3_Re1_YBv4H#}ft zGw$M`Ii6r2SflfV0#EQ7lheufuot9Xh{#@R?G1(RS8Vs_;{!(V*Jkd~_62RPUu~k= z`N7slX};mp{K2>FGqqONSHrO2Y(rbSh;6AhYsOZ(Ow4F!)wT}Y8>gCfLj0gt%{LC&2%EncMXepP1^RO9EwGLYhD#Hb zU;L353PU?QY5Dv7aJauFJ#hWT-SB(!-FMf>xy>-%ZYx$XAF zN|)2%fn2aZnzlMmB6=;)@wxfq?Mhg8xa z;nhR^D}M{&QTOxLTm317!k{UU!54+Ff7hw;<39_*O;g?Zz^*iSH|XQWoDu18=A^pX zhm>^4%M8$;HR?W`J9oxlQsjLY7yMw-!ngOKaOAnnk-aluaNRK-8uK&YQ)tk`FF_d~ zY$W)H}J*dQFBpN5t9rCqRN;78L#!*@a70h5RRwmuAO^RMrWi`xm_Z|B^dcq$ZH zFIP?;c60}s_`%$f*-y1)gs?? z>mmMj_`=i)>!8!&7kI0-*o8fx{bKqwHelnKAVTtp<;rHF1%et3m1d z7QNNht0De=vtV$p1a}^ z0s~cF^W9BCp+UgSm`-oPz(qGWEFvTv?#BEw`2FSxm{<3z$EEqZq4%rgPMwjO}f{7qpi5ILqI#7hWAqZuIW(ULgLKjwr4qQ4oitU+=$; zNUG-jrS&iAak;GirI|LWKZzn0{mZJU4`t<=^eA3iGLaWm0^zdn6o6_lc_;d~z9gydw(H5oku-*`RV%P#-P)SgEdSzTC^s4gY zVWyA=rQ^lpGkk?SO31^$ipWFc$%_45(L4yvzR8NK_#KhKBX&>`S0Q<@<)6e=#<;>f zjE2}h5;@>`Dz2@$lY=!Cg4jCSI9c1-xfW$o#PdyUtrsCQ7ey+>?`n~PXy|0; zWNt&{na_2!bFfEqXd)6kU&pcFTZ^w)nfPq^|H<-CWV)DO z+2cSLY=20kgX$tVUM`aEfA>RiU=3o3GVV}1 zoxGowrB_6+36@>2qN|8sqt8Pjjga2o(h#?O`aHPw`KVZia&VUm)%kJ#_)&QzR4IAL zif0V5p&|A`5zokl8dn+<^mvB&6D}SHB8-&xdM*-w)7M#*_c|oPe|1}jB&%IV_d+#S zv}>XP>_U3G*1**-ppDm7^!lRw-sr|89@FZB()#@n68+@j@kBzGAZ2_RSEJg4WE_Je zMdVZVxHget{NgWHGN#Wj2KSUJ_Nojs(&lsM?NXM1N&FR6nY3R;+*oB)pj;TG`xi1^ zVT|oMxrwy#Drw_Uy5vGBC}|gE^>@p<4l{|Noph1HY2{=iyQoq$zo^!~^!sx0X{`b1 zfcO(0PMiIP@=3dnr9Dr4d9{Pe)2rkvp;yxU1YJ*L`H7rCCG|<+C#qf3DYZg$Kf%M) z?%2+di-|udulW*L?U~Fw5G;EEt=#s5L5l6^{x>p(#^f-d}og~`(&lNRKL4V&`F;77rJ$Vu& zT@t1BBm74oy68~|Wwn17@h$>nZwKGURP=mC;y83C65r+E zwAw_JPogz5tlxx=uJ43jwxDEOgd|1eQ}#HS%P=1Dmn%`z=QH?Yomk^J|Oi?eekqXXhk zG>lMMZz@94uH9+R6JK8KK+@l$I9>X>(6Y{x=~W56lIADqdLqkDBup!*PYOR#?V3)h z6{7nI9;P}nmaeF2n5YuY`a=X!(eoO?;@y;s+fgD;XU<0)5dGB0`c2v!UEc}6Y(dHR2uX^_r|k0@ z?hNB1f4LGheO`k{Hu9D$F6EyYY5s-YE@k-_yd4DIJy7&aEL>IgY7mPvDE>_g|vp+*S=~9xxN=_lWSiBEh?1Iu6(8Z^d zMVq~p^5f!ji3>|1qE3hXmn>e|_!$|mqkktsx8&s#DM@>WBIxpe z-zJ%%{d1Avu`)A|y(`|AF5Iv5yL0jBe7e8IW;{6n5s-F0%BS@5s>|8R(<@<>&?}kt ze{D%UQP}_L(h``}gKqzM__BO#KS(LW&R5ocb6k95f@P0?GjTgD>XL{{mbdX}WdDo5 zcayjQ3qT4GKOMVX3IWb0<5J=4N~bIG6KhJRllQZgXa6%BB3Tg0p_IJo)sM^LN9Q?m z7|Ow2E>x%D<&j^-aE^gnl>_C19qF2~~65?e|f^G*$ z@Xf>eLj+OL^AP$w(4ENmxfxEo??m}TKZTo1($V#u@XHpIjE|6{h#bq_4=Z387x~MT zsOj?%nZa_!UX@`+nt!3UOIiL!Z5OICX}^j%v&yJIxiCuiFJv4f9NTqrld3yk!D&=d z!%<4!#ue!E6^7wN^4~`;&Nhoc2gINF<8<^Mluz1q0quF>%c~to`didSDu4>;zfI&i@@ft^^!_%8Da0V-Y=R4T?BIF4Vo!n4rfIMf!yGh%i!7^BT$f z(H-&+A}sHD4bl%Q-uJBm^^Ue0$HB_p!OGEUk(0TTwH>v$MPrIkm12R=n=hJgBiiz+ z_&6EwXg5D!#6!_`Y@ymR6#BO1qz^?&wD}fTT;JwEoMe zLx_%#?TIYAqkjz1E9_25`LZQNw>uiR;{I5Fh#V?<9>x7Qx)W(X(KwwHkMfCra7VYvW(m! zI&?tnrL_FA+fhAiM~gy3@eL)%IgBw!6$8jF7VmQxe6sZW=;G4}r%I>e;?vQ8luoCI zPbXa}osNf33ooMs@?1DqP@0SNhS(F{34B2%fgI^o6I|sY5sA{3tygj+kERNFe7g@` z(rI~+2jU?g*oqHa&v$ib6$MT;2A+?89tkTuH98xxBNDD{Kk#sU_egl`{dfABP5Yqp zxwhtl`+K48Z>Gw7YVU>R16?vAyYGP-{AK9{V|PRP*bke`mqx&zr(V;BoC=3WtD7}G z{!2I%jJPzP5WI zXt*ZN;zbk;zp>2HC*dF{FWxtJlha{{kF`0a;c^5%*0k8ZTm2Z+%gLShg?}8#0!Bb3T{AZnBuwG z`46)H6arK18oFlo#lM8W6z|qwnz8P-5SXIN(XT@jD0-$?Q{WJ+c}ECLF=0zfw^O$$ z`^gaHCq7I%BML-Ve=voo)=pYCp29cJ{e)%|c3AJb(~-h%>+Lq1Qy62i zK_I&S>x-eEYEsyDp6#Lkaq?lg=cOedC|rATq58iRzN20P&Ik9t-}EDe zS+^q7-cU&B3EsbR{O)@y|8CQj6Gb>>`rsRHDa@SQ`Swc+$wN~hQVq7rVY8ajiTC#e zaNv@yc2=qY+-tUR>`h@-gkzNYT>%*S+P_Rp7C>0uu+YH21h8!R6{mYi0?0Y&n&fz1 z0OpfdtT2cdz_YXc55J8PK>t6~W~pu#z~tEp+~&&!pz?6)q~kLLaH;OtIU z(pDEhmtXY;1*i!iS<^eV-Dv>?&++0kR8N8Aume{HHcf%SQQ4a|)=q(ta4U0{j{+F_ zhLbV=g#e7RZdsnm6u`mBPloIe3gBFu+R=Q00J6JvPpol^O1GF6b@GM)2J^3V^ri4^ zg4?!7*9EY_z&d@+H35v7@a0t&g~N8;o^YJ1N1uQEa_6_0246FrY_sc61DE)K*u$-+ zLH6jwn|aw&;eh$@1D7sO1(Ue>E&aAmg&PMa$DOm93Z4;r+BR!56}o-4+cF|$3Ur*) z%2P9F3S7xL;yZw6rYXcybRV z{sIfo?caIzfPEIwD4=7C-UAD;+hTkoS=AEKhwvi@Hn9Yypav6ddsxEhoVKawhFOB= z>hWpj11;h1gZe$3d6v-q_b(Hh8d!qkz}&E|lpScId**sy3P1GE3hzweuOZ4=T_{xT znH<-H!g}2=oD|XZoiWNvl=gPm*t6R==eN(ZA0x{D7;m<}JB8D)ZVl)~p_5BYXHmI3 z_Vm81Pod57Qyu$L7@7HKnjVEYYF*ydq3~GyWoJeB@Wx7qCKPTs+9y(z!oBlm3~5DS zVBQBkE`@7)B_3!)Vb5K)?ugQlea@=3r|?Qj)I3qz;j2!Qb`}_a@d#E9Vuj6dsoz#Zs+OW?ba6)lzkrdN7q*;{fUDT@@T|K$++AM zlT|E8#*LLOkH2sYSb{_x_EsE;kTmJMdzfV zJE-CNmG`=6!hi8PVa2*=)Yf@o(GVlWbX~M8d!n0(B(AV0NDgfKr`r<^EC3hU`mu^$ z?`;1!x-rr3V4P0KLit2LHSqc-LMLs#8(W^EWc-9AMdVZVaW*~8l9ER$$vDwpu0%~= z@2vGmuGp(G%t)J;qqj?0{)P7hRhhJ3MZ8*NRG?fKrTZ5$enAwrdP>W)a22Kla;Mk()k~; zCjh1xU-+-(+z|p`iqnp?{WGYI0GML;{CYOM-roVH$nAGgFz)RgV2aJ-P5#KH~+o~TL4TkqTlYh{i%6$rl=XGay97+rJoG3ppIW& z{XYc26x&>RxS;J30WifrmVXBxJwVNqGepzV%|tg_mCqFacw}1lE2W=I(PHy;|7%oznc|?=4@bWV$pw#r zK^Nl;qJ2J0df0BwhT8eCtbuaEvfMn# zy`VonEh!KD`ixz*BQ_5Pv|F*f`OZAJ*=vSo*Y$beFeB5~(LWD%?;G7cBGwI#hs~Ys zmgokjdV0V7-y=6zwbkMHJT-S1mbx+GP$zfzm=QZj%g`M-6TbB9=;01A6Z31vopy&` zTR%}xQt^Nl6S+RqW_iG7s~Hn*u6lru?u>|*lRaTa!&-Hh*7t(^#Vy}XZ|n`7wA*h# z7w7{aOS&`;TE*F=BFeRIrB?YSTH zH1O1Uvc(VT>1PQwqD|9yVehKIhebkNuL{CHn5&JA{|x5*biShSD6 zvBVda^y=KEr-d&(_&35ed6F-9=*>K@Jmifhu3468{_1;=aOLIxe0w7f%u(KA4{@W-s>Zf z-&Exo;@cz#q61=->EFpQ!*tPjpE*KD-*?U*)7iH`6of7qrxRMD9HQ?zcs!cWX^1vy zqkejL)PeYGy;&%q&>7>j%N&&dU;Q`aXozpER)9Fr#m`N#&IHMWi=fKvznAm{F`QF~ zP?r5pK+`99j)lWf*l+y6SpszXjjVxa9}i-wkRU30Jqo7=x*xf#E>4fCiE@a&4afRT z=;->+lE+q5P06?xNs7p)?BnP9)nYwLv=Wg-k;oJW3?v|Jo{`=zW%-xnTD10y;|mfO zFUyq`tUVbaKk92DzIznxT z)An^y4)M#0wC7n=P&GS{^tV4du2$A{PW(4mwB*r9O#>-8wVtZ4U6I4c*JB6nG;Nt$UcFvT_^`0mzBK&bAc&(TwQt7>mW7%$`HRS{NL}Xw{n3g4*nYa;rPc~ zV2arvZkVU`cn(a_PQCpCGiv^qDQ@XptH~^SDfZH6`c8M=Yha4C-|`%2zb{!^0uL?nUoUyo8C`ec>pS3jA{wZ#fd>;(Cap&sTk5kD1K;|R%}QLTs_QH�iaN{9 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�uEruq>4F9SMjUXj8)QAS ziw9wbq@yMa36T4_wfxYVM7Tjc=1aSr3f-$g{%4&tVNmbv%-P#F!IjhBWshk-WQD80 zI2>C5m#gR!j2;$2=W#}1F_uy|%&d^lD~VTn?HgG-+*1j*M+iTtm)=%`llMN6bAM|= zRCYR>dA$x!a_HOJU{3f**tuIZrwQn2W-8VQO<*FR`lRbDS6LBL40-d;Su8yMag3zc40_3pd^xrHh2+O^+Cl?T!S~JI0Ib`=dZVIK^ON zb2KOu*w#YA-b91xPrf}dQojY=h9iKwVt74yF#;USy&n(!jRcyysfyG=l!uwcXmqP)N5jDK z_m!tVW1w-DMq(tU$H_BB9#Xz>z-B1_vlBT=DShwEUZS<2>OkK^mas&4Ev{1zlvGe+ z(xsnS&HzR!-A}0sHzD@2sK>j_`Ec1;RybX)0Fv0ryr-S9ABg0VJVPx3`t6|etgQ?* zTxLHj8WSo((8TF_ie)tv{KE=wsRe1nX8)&nBAU@Bhw(5pz%Y+})C@F%zRYR4D3K<( z(*2!uZLcr*Ye}bVdK(VL9)ayf+7S>^o6H{h3QgB@HJu#LK&L@0X!I|H!{?7lQY+OF zAY>@#xUVMy$m=CUV>}rz4DFY>La0X6ORVRVl6y2%9X7DM{v-z4-%oXOv{8W9Hkur& z90#sz$6F27v5Z%7v+P38;be706 zYp>*i!_FnzMZp4ip8iI$Ub_emu8*#d`j$X%u4s@yr3|SD` zbFbu%tXg=pduyh4QXPc!`?*F=)q^$%_nrL$O)&A~&-N{}P2j%RbT@_57dn^T%)P&h zM7x~>8mjxz9@0O4*`+QF*jJbC-*pLxhY7nGwD{3hiaMg-l7xmC3w3tiaw34(I7sqs z#%oihe-e6*$Dyv<$a|M!@qOui2meGyl`M`|OlEV!uItP5DZE(UAAc@d?El4KqwXFiu^d z0H^5gJ??K}fuy}JOAVR)w0p1mXdrw0*4|xQ=~9WHGPUrfNHP_Kwsu;U`e(pWVUED2 z`W#T+c6g`x{XEE7pUHXffeIBZ7d+Z%i(qerV;ASa61esC;!64nLK!d^@zP!Hu7Hv3 zFZ7oru;!zmIqOVxQ0I#qlr$yJD>aVLJ}WqIrs-dW`Z6-lXIA{oF^_2 zFFmQ>b(Y{23E$lx#4w+Z0>L-_0m_@AK~_LQ=eSi2uu3@$4(L)~TqNM8IGU$Sv}~KK z@j}mWA@Q03xdf2*GL`y`b-}hktrdB$R9IR|J=bt01JaAqKd=|&z=po1$M%*yI6lsJ z`ou65XuP|g5xy2e-8^^455W@XFPkS5cFLE*-dO4i70ctxT#tpn-Km0>$PZCCcY~B! zAEpAMI@o%U)V-5h54~z8O$_+#_X}~WL^NQhL>$;3^415O27Zf}B_P7lb6)&5Rz8e5 zoU8e0tVcKY`S(s4G*N5|9-ct*MY!+YbZxT;$O~QkM8U2ZQt}8@A04r2Jo-9q5?7!+ zTt$@+i$swzT1o5kF`zBgBGht>0)H#YJ-NHEOWu9i-~f6JU)VFg{R&z)mM!Y*3h*Vu zUxxekvbX{_SWkWWc0L36>b6M7#pXbXh=y`ibsn&-$XZ-|MFopSbJ5i=h2Zn!=Vb%F z5*Ru}pb|92%b=}!YHW9X1^Dl$pDS*zg2UnqX*wpgFc;oe^ir!1Y+X%m&m`BwTv0>$ z`L0ITdo!teqofhOxrlw6?DT=lZ+?pv1c$@w7OvwNENGU-k;}Cfh6KEn9E$%5#QS!w zJAdv*I;z3mN`1WuP%k*Iw}4f$F~N4b_sOeRL|VpQ^issOxjlK9ekbOFDQ`()yl?}N|@DWbtu(