diff --git a/docs/source/pythonapi/examples/multi-group-cross-sections.ipynb b/docs/source/pythonapi/examples/multi-group-cross-sections.ipynb index cbd81f154..67f43b171 100644 --- a/docs/source/pythonapi/examples/multi-group-cross-sections.ipynb +++ b/docs/source/pythonapi/examples/multi-group-cross-sections.ipynb @@ -478,7 +478,7 @@ " License: http://mit-crpg.github.io/openmc/license.html\n", " Version: 0.7.0\n", " Git SHA1: 23535afa1c69644bb299bde18a094c3b99d53ae0\n", - " Date/Time: 2015-10-09 16:04:33\n", + " Date/Time: 2015-10-09 20:27:11\n", " MPI Processes: 1\n", "\n", " ===========================================================================\n", @@ -563,20 +563,20 @@ "\n", " =======================> TIMING STATISTICS <=======================\n", "\n", - " Total time for initialization = 4.3000E-01 seconds\n", - " Reading cross sections = 9.0000E-02 seconds\n", - " Total time in simulation = 1.5218E+01 seconds\n", - " Time in transport only = 1.5180E+01 seconds\n", - " Time in inactive batches = 1.8800E+00 seconds\n", - " Time in active batches = 1.3338E+01 seconds\n", - " Time synchronizing fission bank = 2.0000E-03 seconds\n", + " Total time for initialization = 3.9000E-01 seconds\n", + " Reading cross sections = 8.8000E-02 seconds\n", + " Total time in simulation = 1.2262E+01 seconds\n", + " Time in transport only = 1.2254E+01 seconds\n", + " Time in inactive batches = 1.8120E+00 seconds\n", + " Time in active batches = 1.0450E+01 seconds\n", + " Time synchronizing fission bank = 1.0000E-03 seconds\n", " Sampling source sites = 1.0000E-03 seconds\n", - " SEND/RECV source sites = 1.0000E-03 seconds\n", - " Time accumulating tallies = 1.0000E-03 seconds\n", - " Total time for finalization = 8.0000E-03 seconds\n", - " Total time elapsed = 1.5664E+01 seconds\n", - " Calculation Rate (inactive) = 13297.9 neutrons/second\n", - " Calculation Rate (active) = 7497.38 neutrons/second\n", + " SEND/RECV source sites = 0.0000E+00 seconds\n", + " Time accumulating tallies = 0.0000E+00 seconds\n", + " Total time for finalization = 2.0000E-03 seconds\n", + " Total time elapsed = 1.2662E+01 seconds\n", + " Calculation Rate (inactive) = 13796.9 neutrons/second\n", + " Calculation Rate (active) = 9569.38 neutrons/second\n", "\n", " ============================> RESULTS <============================\n", "\n", @@ -1883,7 +1883,7 @@ "data": { "image/png": "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\ned7lsJ91IAAAAABJRU5ErkJggg==\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -2312,15 +2312,6 @@ "* Spatial discretization of OpenMOC's mesh\n", "* Constant-in-angle multi-group cross sections" ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [] } ], "metadata": { diff --git a/openmc/mgxs/library.py b/openmc/mgxs/library.py index a7276bc9e..48288ad24 100644 --- a/openmc/mgxs/library.py +++ b/openmc/mgxs/library.py @@ -387,7 +387,8 @@ class Library(object): return condensed_library - def build_hdf5_store(self, filename='mgxs', directory='mgxs', xs_type='macro'): + def build_hdf5_store(self, filename='mgxs', directory='mgxs', + subdomains='all', nuclides='all', xs_type='macro'): """Export the multi-group cross section library to an HDF5 binary file. This method constructs an HDF5 file which stores the library's @@ -405,6 +406,15 @@ class Library(object): Filename for the HDF5 file. Defaults to 'mgxs'. directory : str Directory for the HDF5 file. Defaults to 'mgxs'. + subdomains : {'all', 'avg'} + Report all subdomains or the average of all subdomain cross sections + in the report. Defaults to 'all'. + nuclides : {'all', 'sum'} + The nuclides of the cross-sections to include in the report. This + may be a list of nuclide name strings (e.g., ['U-235', 'U-238']). + The special string 'all' will report the cross sections for all + nuclides in the spatial domain. The special string 'sum' will report + the cross sections summed over all nuclides. Defaults to 'all'. xs_type: {'macro', 'micro'} Store the macro or micro cross section in units of cm^-1 or barns. Defaults to 'macro'. @@ -429,4 +439,8 @@ class Library(object): for domain in self.domains: for mgxs_type in self.mgxs_types: mgxs = self.all_mgxs[domain.id][mgxs_type] + + if subdomains == 'avg': + mgxs = mgxs.get_subdomain_avg_xs() + mgxs.build_hdf5_store(filename, directory, xs_type) \ No newline at end of file diff --git a/openmc/mgxs/mgxs.py b/openmc/mgxs/mgxs.py index 20a9f3d6b..e1df3eef3 100644 --- a/openmc/mgxs/mgxs.py +++ b/openmc/mgxs/mgxs.py @@ -903,8 +903,8 @@ class MGXS(object): print(string) - def build_hdf5_store(self, filename='mgxs', directory='mgxs', - xs_type='macro', append=True): + def build_hdf5_store(self, filename='mgxs', directory='mgxs', append=True, + subdomains='all', nuclides='all', xs_type='macro'): """Export the multi-group cross section data to an HDF5 binary file. This method constructs an HDF5 file which stores the multi-group @@ -921,12 +921,21 @@ class MGXS(object): Filename for the HDF5 file. Defaults to 'mgxs'. directory : str Directory for the HDF5 file. Defaults to 'mgxs'. - xs_type: {'macro', 'micro'} - Store the macro or micro cross section in units of cm^-1 or barns. - Defaults to 'macro'. append : boolean If true, appends to an existing HDF5 file with the same filename directory (if one exists). Defaults to True. + subdomains : Iterable of Integral or 'all' + The subdomain IDs of the cross sections to include in the report. + Defaults to 'all'. + nuclides : Iterable of str or 'all' or 'sum' + The nuclides of the cross-sections to include in the report. This + may be a list of nuclide name strings (e.g., ['U-235', 'U-238']). + The special string 'all' will report the cross sections for all + nuclides in the spatial domain. The special string 'sum' will report + the cross sections summed over all nuclides. Defaults to 'all'. + xs_type: {'macro', 'micro'} + Store the macro or micro cross section in units of cm^-1 or barns. + Defaults to 'macro'. Raises ------ @@ -962,8 +971,29 @@ class MGXS(object): else: xs_results = h5py.File(filename, 'w') + # Construct a collection of the subdomains to report + if subdomains != 'all': + cv.check_iterable_type('subdomains', subdomains, Integral) + elif self.domain_type == 'distribcell': + subdomains = np.arange(self.num_subdomains, dtype=np.int) + else: + subdomains = [self.domain.id] + + # Construct a collection of the nuclides to report + if self.by_nuclide: + if nuclides == 'all': + nuclides = self.get_all_nuclides() + densities = np.zeros(len(nuclides), dtype=np.float) + elif nuclides == 'sum': + nuclides = ['sum'] + else: + cv.check_iterable_type('nuclides', nuclides, basestring) + else: + nuclides = ['sum'] + cv.check_value('xs_type', xs_type, ['macro', 'micro']) + ''' if self.by_nuclide: nuclides = self.domain.get_all_nuclides() densities = np.zeros(len(nuclides), dtype=np.float) @@ -971,16 +1001,18 @@ class MGXS(object): densities[i] = nuclides[nuclide][1] else: nuclides = ['sum'] + ''' # Create an HDF5 group within the file for the domain domain_type_group = xs_results.require_group(self.domain_type) - group_name = '{0} {1}'.format(self.domain_type, self.domain.id) - domain_group = domain_type_group.require_group(group_name) + domain_group = domain_type_group.require_group(str(self.domain.id)) - if self.domain_type == 'distribcell': + ''' + if subdomains == 'all' and self.domain_type == 'distribcell': subdomains = np.arange(self.num_subdomains, dtype=np.int) else: subdomains = [self.domain.id] + ''' # Determine number of digits to pad subdomain group keys num_digits = len(str(self.num_subdomains)) @@ -990,7 +1022,7 @@ class MGXS(object): # Create an HDF5 group for the subdomain if self.domain_type == 'distribcell': - group_name = str(subdomain).zfill(num_digits) + group_name = ''.zfill(num_digits) subdomain_group = domain_group.require_group(group_name) else: subdomain_group = domain_group