From 4c18f5b826dd673046029694cd354f7fec709a08 Mon Sep 17 00:00:00 2001 From: Will Boyd Date: Wed, 28 Oct 2015 11:42:19 -0400 Subject: [PATCH] Made MGXS subclasses call compute_xs from load_from_statepint --- .../examples/multi-group-cross-sections.ipynb | 181 ++++++++---------- openmc/mgxs/library.py | 11 +- openmc/mgxs/mgxs.py | 64 +++---- openmc/settings.py | 1 - tests/test_track_output/results_test.dat | 9 - 5 files changed, 109 insertions(+), 157 deletions(-) delete mode 100644 tests/test_track_output/results_test.dat diff --git a/docs/source/pythonapi/examples/multi-group-cross-sections.ipynb b/docs/source/pythonapi/examples/multi-group-cross-sections.ipynb index 845c71118..99ab3b26f 100644 --- a/docs/source/pythonapi/examples/multi-group-cross-sections.ipynb +++ b/docs/source/pythonapi/examples/multi-group-cross-sections.ipynb @@ -444,7 +444,7 @@ " License: http://mit-crpg.github.io/openmc/license.html\n", " Version: 0.7.0\n", " Git SHA1: 21738db07debeabde824c9b955bd3bf0c9a16366\n", - " Date/Time: 2015-10-28 10:30:50\n", + " Date/Time: 2015-10-28 11:38:06\n", " MPI Processes: 1\n", "\n", " ===========================================================================\n", @@ -530,20 +530,20 @@ "\n", " =======================> TIMING STATISTICS <=======================\n", "\n", - " Total time for initialization = 3.9900E-01 seconds\n", - " Reading cross sections = 9.3000E-02 seconds\n", - " Total time in simulation = 1.3697E+01 seconds\n", - " Time in transport only = 1.3685E+01 seconds\n", - " Time in inactive batches = 1.8610E+00 seconds\n", - " Time in active batches = 1.1836E+01 seconds\n", - " Time synchronizing fission bank = 1.0000E-03 seconds\n", - " Sampling source sites = 1.0000E-03 seconds\n", - " SEND/RECV source sites = 0.0000E+00 seconds\n", + " Total time for initialization = 3.9500E-01 seconds\n", + " Reading cross sections = 9.0000E-02 seconds\n", + " Total time in simulation = 1.3404E+01 seconds\n", + " Time in transport only = 1.3392E+01 seconds\n", + " Time in inactive batches = 1.9690E+00 seconds\n", + " Time in active batches = 1.1435E+01 seconds\n", + " Time synchronizing fission bank = 4.0000E-03 seconds\n", + " Sampling source sites = 2.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 = 2.0000E-03 seconds\n", - " Total time elapsed = 1.4106E+01 seconds\n", - " Calculation Rate (inactive) = 13433.6 neutrons/second\n", - " Calculation Rate (active) = 8448.80 neutrons/second\n", + " Total time elapsed = 1.3810E+01 seconds\n", + " Calculation Rate (inactive) = 12696.8 neutrons/second\n", + " Calculation Rate (active) = 8745.08 neutrons/second\n", "\n", " ============================> RESULTS <============================\n", "\n", @@ -622,7 +622,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "The statepoint is now ready to be analyzed by our multi-group cross sections. The first step is to load the tallies from the statepoint into each object." + "The statepoint is now ready to be analyzed by our multi-group cross sections. We simply have to load the tallies from the statepoint into each object as follows and our `MGXS` objects will compute the cross sections for us under-the-hood." ] }, { @@ -631,28 +631,6 @@ "metadata": { "collapsed": false }, - "outputs": [], - "source": [ - "# Load the tallies from the statepoint into each MGXS object\n", - "transport.load_from_statepoint(sp)\n", - "nufission.load_from_statepoint(sp)\n", - "nuscatter.load_from_statepoint(sp)\n", - "chi.load_from_statepoint(sp)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "The multi-group cross section objects can now use OpenMC's [tally arithmetic](http://mit-crpg.github.io/openmc/pythonapi/examples/tally-arithmetic.html) to compute cross sections from the tally data." - ] - }, - { - "cell_type": "code", - "execution_count": 18, - "metadata": { - "collapsed": false - }, "outputs": [ { "name": "stderr", @@ -663,10 +641,11 @@ } ], "source": [ - "transport.compute_xs()\n", - "nufission.compute_xs()\n", - "nuscatter.compute_xs()\n", - "chi.compute_xs()" + "# Load the tallies from the statepoint into each MGXS object\n", + "transport.load_from_statepoint(sp)\n", + "nufission.load_from_statepoint(sp)\n", + "nuscatter.load_from_statepoint(sp)\n", + "chi.load_from_statepoint(sp)" ] }, { @@ -692,7 +671,7 @@ }, { "cell_type": "code", - "execution_count": 19, + "execution_count": 18, "metadata": { "collapsed": false }, @@ -733,18 +712,11 @@ }, { "cell_type": "code", - "execution_count": 20, + "execution_count": 19, "metadata": { "collapsed": false }, "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/usr/local/lib/python2.7/dist-packages/openmc-0.7.0-py2.7.egg/openmc/mgxs/mgxs.py:1250: FutureWarning: sort(columns=....) is deprecated, use sort_values(by=.....)\n" - ] - }, { "data": { "text/html": [ @@ -870,7 +842,7 @@ "54 1 2 2 total 0.266499 0.001265" ] }, - "execution_count": 20, + "execution_count": 19, "metadata": {}, "output_type": "execute_result" } @@ -889,7 +861,7 @@ }, { "cell_type": "code", - "execution_count": 21, + "execution_count": 20, "metadata": { "collapsed": true }, @@ -907,7 +879,7 @@ }, { "cell_type": "code", - "execution_count": 22, + "execution_count": 21, "metadata": { "collapsed": true }, @@ -935,7 +907,7 @@ }, { "cell_type": "code", - "execution_count": 23, + "execution_count": 22, "metadata": { "collapsed": false }, @@ -957,7 +929,7 @@ }, { "cell_type": "code", - "execution_count": 24, + "execution_count": 23, "metadata": { "collapsed": true }, @@ -991,7 +963,7 @@ }, { "cell_type": "code", - "execution_count": 25, + "execution_count": 24, "metadata": { "collapsed": false }, @@ -1003,7 +975,7 @@ "[ NORMAL ] Ray tracing for track segmentation...\n", "[ NORMAL ] Dumping tracks to file...\n", "[ NORMAL ] Computing the eigenvalue...\n", - "[ NORMAL ] Iteration 0:\tk_eff = 0.685184\tres = 1.350E-316\n", + "[ NORMAL ] Iteration 0:\tk_eff = 0.685184\tres = 2.023E-316\n", "[ NORMAL ] Iteration 1:\tk_eff = 0.785642\tres = 3.148E-01\n", "[ NORMAL ] Iteration 2:\tk_eff = 0.750185\tres = 1.466E-01\n", "[ NORMAL ] Iteration 3:\tk_eff = 0.728846\tres = 4.513E-02\n", @@ -1153,7 +1125,7 @@ }, { "cell_type": "code", - "execution_count": 26, + "execution_count": 25, "metadata": { "collapsed": false }, @@ -1216,7 +1188,7 @@ }, { "cell_type": "code", - "execution_count": 27, + "execution_count": 26, "metadata": { "collapsed": false }, @@ -1250,7 +1222,7 @@ }, { "cell_type": "code", - "execution_count": 28, + "execution_count": 27, "metadata": { "collapsed": true }, @@ -1276,7 +1248,7 @@ }, { "cell_type": "code", - "execution_count": 29, + "execution_count": 28, "metadata": { "collapsed": true }, @@ -1305,7 +1277,7 @@ }, { "cell_type": "code", - "execution_count": 30, + "execution_count": 29, "metadata": { "collapsed": false }, @@ -1342,7 +1314,7 @@ }, { "cell_type": "code", - "execution_count": 31, + "execution_count": 30, "metadata": { "collapsed": false }, @@ -1367,7 +1339,7 @@ }, { "cell_type": "code", - "execution_count": 32, + "execution_count": 31, "metadata": { "collapsed": true }, @@ -1394,7 +1366,7 @@ }, { "cell_type": "code", - "execution_count": 33, + "execution_count": 32, "metadata": { "collapsed": false }, @@ -1417,7 +1389,7 @@ }, { "cell_type": "code", - "execution_count": 34, + "execution_count": 33, "metadata": { "collapsed": false }, @@ -1448,7 +1420,7 @@ }, { "cell_type": "code", - "execution_count": 35, + "execution_count": 34, "metadata": { "collapsed": false }, @@ -1485,7 +1457,7 @@ }, { "cell_type": "code", - "execution_count": 36, + "execution_count": 35, "metadata": { "collapsed": false }, @@ -1511,7 +1483,7 @@ " License: http://mit-crpg.github.io/openmc/license.html\n", " Version: 0.7.0\n", " Git SHA1: 21738db07debeabde824c9b955bd3bf0c9a16366\n", - " Date/Time: 2015-10-28 10:31:06\n", + " Date/Time: 2015-10-28 11:38:21\n", " MPI Processes: 1\n", "\n", " ===========================================================================\n", @@ -1618,20 +1590,20 @@ "\n", " =======================> TIMING STATISTICS <=======================\n", "\n", - " Total time for initialization = 3.8900E-01 seconds\n", - " Reading cross sections = 8.4000E-02 seconds\n", - " Total time in simulation = 2.2985E+02 seconds\n", - " Time in transport only = 2.2979E+02 seconds\n", - " Time in inactive batches = 1.3571E+01 seconds\n", - " Time in active batches = 2.1628E+02 seconds\n", - " Time synchronizing fission bank = 1.5000E-02 seconds\n", - " Sampling source sites = 1.0000E-02 seconds\n", - " SEND/RECV source sites = 5.0000E-03 seconds\n", - " Time accumulating tallies = 0.0000E+00 seconds\n", - " Total time for finalization = 8.0000E-03 seconds\n", - " Total time elapsed = 2.3028E+02 seconds\n", - " Calculation Rate (inactive) = 7368.65 neutrons/second\n", - " Calculation Rate (active) = 1849.45 neutrons/second\n", + " Total time for initialization = 4.2400E-01 seconds\n", + " Reading cross sections = 8.5000E-02 seconds\n", + " Total time in simulation = 1.9319E+02 seconds\n", + " Time in transport only = 1.9314E+02 seconds\n", + " Time in inactive batches = 1.3511E+01 seconds\n", + " Time in active batches = 1.7968E+02 seconds\n", + " Time synchronizing fission bank = 1.9000E-02 seconds\n", + " Sampling source sites = 1.1000E-02 seconds\n", + " SEND/RECV source sites = 7.0000E-03 seconds\n", + " Time accumulating tallies = 3.0000E-03 seconds\n", + " Total time for finalization = 9.0000E-03 seconds\n", + " Total time elapsed = 1.9366E+02 seconds\n", + " Calculation Rate (inactive) = 7401.38 neutrons/second\n", + " Calculation Rate (active) = 2226.18 neutrons/second\n", "\n", " ============================> RESULTS <============================\n", "\n", @@ -1649,7 +1621,7 @@ "0" ] }, - "execution_count": 36, + "execution_count": 35, "metadata": {}, "output_type": "execute_result" } @@ -1679,7 +1651,7 @@ }, { "cell_type": "code", - "execution_count": 37, + "execution_count": 36, "metadata": { "collapsed": false }, @@ -1700,7 +1672,7 @@ }, { "cell_type": "code", - "execution_count": 38, + "execution_count": 37, "metadata": { "collapsed": false }, @@ -1709,8 +1681,7 @@ "# Iterate over all cells and cross section types\n", "for cell in openmc_cells:\n", " for rxn_type in xs_library[cell.id]:\n", - " xs_library[cell.id][rxn_type].load_from_statepoint(sp)\n", - " xs_library[cell.id][rxn_type].compute_xs()" + " xs_library[cell.id][rxn_type].load_from_statepoint(sp)" ] }, { @@ -1736,7 +1707,7 @@ }, { "cell_type": "code", - "execution_count": 39, + "execution_count": 38, "metadata": { "collapsed": false }, @@ -1790,7 +1761,7 @@ }, { "cell_type": "code", - "execution_count": 40, + "execution_count": 39, "metadata": { "collapsed": false }, @@ -1832,7 +1803,7 @@ }, { "cell_type": "code", - "execution_count": 41, + "execution_count": 40, "metadata": { "collapsed": false }, @@ -1962,7 +1933,7 @@ "119 10002 1 5 O-16 0.000000 0.000000" ] }, - "execution_count": 41, + "execution_count": 40, "metadata": {}, "output_type": "execute_result" } @@ -1982,7 +1953,7 @@ }, { "cell_type": "code", - "execution_count": 42, + "execution_count": 41, "metadata": { "collapsed": false }, @@ -2010,7 +1981,7 @@ }, { "cell_type": "code", - "execution_count": 43, + "execution_count": 42, "metadata": { "collapsed": false }, @@ -2019,7 +1990,7 @@ "data": { "image/png": "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\nAAAAAElFTkSuQmCC\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -2050,7 +2021,7 @@ }, { "cell_type": "code", - "execution_count": 44, + "execution_count": 43, "metadata": { "collapsed": true }, @@ -2072,7 +2043,7 @@ }, { "cell_type": "code", - "execution_count": 45, + "execution_count": 44, "metadata": { "collapsed": false }, @@ -2111,7 +2082,7 @@ }, { "cell_type": "code", - "execution_count": 46, + "execution_count": 45, "metadata": { "collapsed": false }, @@ -2194,7 +2165,7 @@ "2 10000 2 O-16 3.798833 0.010031" ] }, - "execution_count": 46, + "execution_count": 45, "metadata": {}, "output_type": "execute_result" } @@ -2220,7 +2191,7 @@ }, { "cell_type": "code", - "execution_count": 47, + "execution_count": 46, "metadata": { "collapsed": false }, @@ -2242,7 +2213,7 @@ }, { "cell_type": "code", - "execution_count": 48, + "execution_count": 47, "metadata": { "collapsed": false }, @@ -2290,7 +2261,7 @@ }, { "cell_type": "code", - "execution_count": 49, + "execution_count": 48, "metadata": { "collapsed": false }, @@ -2318,7 +2289,7 @@ }, { "cell_type": "code", - "execution_count": 50, + "execution_count": 49, "metadata": { "collapsed": false }, @@ -2353,7 +2324,7 @@ }, { "cell_type": "code", - "execution_count": 51, + "execution_count": 50, "metadata": { "collapsed": false }, @@ -2394,7 +2365,7 @@ }, { "cell_type": "code", - "execution_count": 52, + "execution_count": 51, "metadata": { "collapsed": false }, @@ -2412,7 +2383,7 @@ }, { "cell_type": "code", - "execution_count": 53, + "execution_count": 52, "metadata": { "collapsed": false }, diff --git a/openmc/mgxs/library.py b/openmc/mgxs/library.py index c135eeea7..215b4f12e 100644 --- a/openmc/mgxs/library.py +++ b/openmc/mgxs/library.py @@ -312,11 +312,6 @@ class Library(object): mgxs = self.get_mgxs(domain, mgxs_type) mgxs.load_from_statepoint(statepoint) - if isinstance(mgxs, openmc.mgxs.ScatterMatrixXS): - mgxs.compute_xs(correction=self.correction) - else: - mgxs.compute_xs() - def get_mgxs(self, domain, mgxs_type): """Return the MGXS object for some domain and reaction rate type. @@ -478,7 +473,7 @@ class Library(object): return subdomain_avg_library - def build_hdf5_store(self, filename='mgxs', directory='mgxs', + def build_hdf5_store(self, filename='mgxs.h5', directory='mgxs', subdomains='all', nuclides='all', xs_type='macro'): """Export the multi-group cross section library to an HDF5 binary file. @@ -494,7 +489,7 @@ class Library(object): Parameters ---------- filename : str - Filename for the HDF5 file. Defaults to 'mgxs'. + Filename for the HDF5 file. Defaults to 'mgxs.h5'. directory : str Directory for the HDF5 file. Defaults to 'mgxs'. subdomains : {'all', 'avg'} @@ -536,7 +531,7 @@ class Library(object): os.makedirs(directory) # Add an attribute for the number of energy groups to the HDF5 file - full_filename = os.path.join(directory, filename + '.h5') + full_filename = os.path.join(directory, filename) full_filename = full_filename.replace(' ', '-') f = h5py.File(full_filename, 'w') f.attrs["# groups"] = self.num_groups diff --git a/openmc/mgxs/mgxs.py b/openmc/mgxs/mgxs.py index 65e80f0d3..f0aa9d618 100644 --- a/openmc/mgxs/mgxs.py +++ b/openmc/mgxs/mgxs.py @@ -41,7 +41,7 @@ DOMAIN_TYPES = ['cell', # Supported domain classes # TODO: Implement Mesh domains -DOMAINS = [openmc.Cell, +_DOMAINS = [openmc.Cell, openmc.Universe, openmc.Material] @@ -90,6 +90,17 @@ class MGXS(object): xs_tally : Tally Derived tally for the multi-group cross section. This attribute is None unless the multi-group cross section has been computed. + num_sumbdomains : Integral + The number of subdomains is unity for 'material', 'cell' and 'universe' + domain types. When the This is equal to the number of cell instances + for 'distribcell' domain types (it is equal to unity prior to loading + tally data from a statepoint file). + num_nuclides : Integral + The number of nuclides for which the multi-group cross section is + being tracked. This is unity if the by_nuclide attribute is False. + nuclides : list of str or 'sum' + A list of nuclide string names (e.g., 'U-238', 'O-16') when by_nuclide + is True and 'sum' when by_nuclide is False. """ @@ -556,6 +567,9 @@ class MGXS(object): filter_bins, tally.nuclides) self.tallies[tally_type] = sp_tally + # Compute the cross section from the tallies + self.compute_xs() + def get_xs(self, groups='all', subdomains='all', nuclides='all', xs_type='macro', order_groups='increasing', value='mean'): """Returns an array of multi-group cross sections. @@ -926,7 +940,7 @@ class MGXS(object): print(string) - def build_hdf5_store(self, filename='mgxs', directory='mgxs', + def build_hdf5_store(self, filename='mgxs.h5', directory='mgxs', subdomains='all', nuclides='all', xs_type='macro', append=True): """Export the multi-group cross section data to an HDF5 binary file. @@ -942,7 +956,7 @@ class MGXS(object): Parameters ---------- filename : str - Filename for the HDF5 file. Defaults to 'mgxs'. + Filename for the HDF5 file. Defaults to 'mgxs.h5'. directory : str Directory for the HDF5 file. Defaults to 'mgxs'. subdomains : Iterable of Integral or 'all' @@ -957,7 +971,7 @@ class MGXS(object): xs_type: {'macro', 'micro'} Store the macro or micro cross section in units of cm^-1 or barns. Defaults to 'macro'. - append : boolean + append : bool If true, appends to an existing HDF5 file with the same filename directory (if one exists). Defaults to True. @@ -982,7 +996,7 @@ class MGXS(object): if not os.path.exists(directory): os.makedirs(directory) - filename = os.path.join(directory, filename + '.h5') + filename = os.path.join(directory, filename) filename = filename.replace(' ', '-') if append and os.path.isfile(filename): @@ -1338,40 +1352,15 @@ class TransportXS(MGXS): return super(TransportXS, self).tallies - def load_from_statepoint(self, statepoint): - """Extracts tallies in an OpenMC StatePoint with the data needed to - compute multi-group cross sections. - - This method is needed to compute cross section data from tallies - in an OpenMC StatePoint object. - - NOTE: The statepoint must first be linked with an OpenMC Summary object. - - Parameters - ---------- - statepoint : openmc.StatePoint - An OpenMC StatePoint object with tally data - - Raises - ------ - ValueError - When this method is called with a statepoint that has not been - linked with a summary object. - - """ - - # Load the tallies from the statepoint using the parent class method - super(TransportXS, self).load_from_statepoint(statepoint) + def compute_xs(self): + """Computes the multi-group transport cross sections using OpenMC + tally arithmetic.""" # Use tally slicing to remove scatter-P0 data from scatter-P1 tally scatter_p1 = self.tallies['scatter-P1'] self.tallies['scatter-P1'] = scatter_p1.get_slice(scores=['scatter-P1']) self.tallies['scatter-P1'].filters[-1].type = 'energy' - def compute_xs(self): - """Computes the multi-group transport cross sections using OpenMC - tally arithmetic.""" - self._xs_tally = self.tallies['total'] - self.tallies['scatter-P1'] self._xs_tally /= self.tallies['flux'] super(TransportXS, self).compute_xs() @@ -1424,7 +1413,14 @@ class AbsorptionXS(MGXS): class CaptureXS(MGXS): - """A capture multi-group cross section.""" + """A capture multi-group cross section. + + The Neutron capture reaction rate is defined as the difference between + OpenMC's 'absorption' and 'fission' reaction rate score types. This includes + not only radiative capture, but all forms of neutron disappearance aside + from fission (e.g., MT > 100). + + """ def __init__(self, domain=None, domain_type=None, groups=None, by_nuclide=False, name=''): diff --git a/openmc/settings.py b/openmc/settings.py index dbf031e28..519b5c7cf 100644 --- a/openmc/settings.py +++ b/openmc/settings.py @@ -1185,7 +1185,6 @@ class SettingsFile(object): self._eigenvalue_subelement = None self._source_element = None - self._create_eigenvalue_subelement() self._create_source_subelement() self._create_output_subelement() diff --git a/tests/test_track_output/results_test.dat b/tests/test_track_output/results_test.dat deleted file mode 100644 index 6ded87a0e..000000000 --- a/tests/test_track_output/results_test.dat +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - -