diff --git a/docs/source/pythonapi/examples/mgxs-part-iv.ipynb b/docs/source/pythonapi/examples/mgxs-part-iv.ipynb index d15f265d4..4509f0fc8 100644 --- a/docs/source/pythonapi/examples/mgxs-part-iv.ipynb +++ b/docs/source/pythonapi/examples/mgxs-part-iv.ipynb @@ -304,7 +304,7 @@ "root_cell.region = +min_x & -max_x & +min_y & -max_y & +min_z & -max_z\n", "\n", "# Create root Universe\n", - "root_universe = openmc.Universe(name='root universe')\n", + "root_universe = openmc.Universe(name='root universe', universe_id=0)\n", "root_universe.add_cell(root_cell)" ] }, @@ -319,7 +319,7 @@ "cell_type": "code", "execution_count": 11, "metadata": { - "collapsed": true + "collapsed": false }, "outputs": [], "source": [ @@ -433,7 +433,7 @@ "outputs": [ { "data": { - "image/png": "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\n", + "image/png": "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\n", "text/plain": [ "" ] @@ -693,10 +693,10 @@ " 888\n", "\n", " Copyright: 2011-2016 Massachusetts Institute of Technology\n", - " License: http://openmc.readthedocs.org/en/latest/license.html\n", + " License: http://openmc.readthedocs.io/en/latest/license.html\n", " Version: 0.7.1\n", - " Git SHA1: c779ca42c41a062a6a813e03f2add2d182ca9190\n", - " Date/Time: 2016-05-14 12:59:34\n", + " Git SHA1: 4bec584ddb7d07be7d92ad9d037e8363b2f25614\n", + " Date/Time: 2016-05-15 14:22:34\n", " OpenMP Threads: 4\n", "\n", " ===========================================================================\n", @@ -783,20 +783,20 @@ "\n", " =======================> TIMING STATISTICS <=======================\n", "\n", - " Total time for initialization = 1.4720E+00 seconds\n", - " Reading cross sections = 1.1730E+00 seconds\n", - " Total time in simulation = 1.9211E+01 seconds\n", - " Time in transport only = 1.9108E+01 seconds\n", - " Time in inactive batches = 2.1390E+00 seconds\n", - " Time in active batches = 1.7072E+01 seconds\n", - " Time synchronizing fission bank = 1.0000E-02 seconds\n", - " Sampling source sites = 9.0000E-03 seconds\n", - " SEND/RECV source sites = 1.0000E-03 seconds\n", + " Total time for initialization = 1.4620E+00 seconds\n", + " Reading cross sections = 1.1520E+00 seconds\n", + " Total time in simulation = 2.1015E+01 seconds\n", + " Time in transport only = 2.0844E+01 seconds\n", + " Time in inactive batches = 2.2260E+00 seconds\n", + " Time in active batches = 1.8789E+01 seconds\n", + " Time synchronizing fission bank = 9.0000E-03 seconds\n", + " Sampling source sites = 5.0000E-03 seconds\n", + " SEND/RECV source sites = 4.0000E-03 seconds\n", " Time accumulating tallies = 0.0000E+00 seconds\n", " Total time for finalization = 0.0000E+00 seconds\n", - " Total time elapsed = 2.0692E+01 seconds\n", - " Calculation Rate (inactive) = 23375.4 neutrons/second\n", - " Calculation Rate (active) = 11715.1 neutrons/second\n", + " Total time elapsed = 2.2491E+01 seconds\n", + " Calculation Rate (inactive) = 22461.8 neutrons/second\n", + " Calculation Rate (active) = 10644.5 neutrons/second\n", "\n", " ============================> RESULTS <============================\n", "\n", @@ -949,7 +949,7 @@ ], "source": [ "# Create a MGXS File which can then be written to disk\n", - "mgxs_file = mgxs_lib.create_mg_library(xs_type='macro', domain_names=['fuel', 'zircaloy', 'water'],\n", + "mgxs_file = mgxs_lib.create_mg_library(xs_type='macro', xsdata_names=['fuel', 'zircaloy', 'water'],\n", " xs_ids='2m')\n", "\n", "# Write the file to disk using the default filename of `mgxs.xml`\n", @@ -1068,10 +1068,10 @@ " 888\n", "\n", " Copyright: 2011-2016 Massachusetts Institute of Technology\n", - " License: http://openmc.readthedocs.org/en/latest/license.html\n", + " License: http://openmc.readthedocs.io/en/latest/license.html\n", " Version: 0.7.1\n", - " Git SHA1: c779ca42c41a062a6a813e03f2add2d182ca9190\n", - " Date/Time: 2016-05-14 12:59:55\n", + " Git SHA1: 4bec584ddb7d07be7d92ad9d037e8363b2f25614\n", + " Date/Time: 2016-05-15 14:22:57\n", " OpenMP Threads: 4\n", "\n", " ===========================================================================\n", @@ -1155,20 +1155,20 @@ "\n", " =======================> TIMING STATISTICS <=======================\n", "\n", - " Total time for initialization = 4.0000E-02 seconds\n", + " Total time for initialization = 3.5000E-02 seconds\n", " Reading cross sections = 3.0000E-03 seconds\n", - " Total time in simulation = 1.3223E+01 seconds\n", - " Time in transport only = 1.3175E+01 seconds\n", - " Time in inactive batches = 1.1160E+00 seconds\n", - " Time in active batches = 1.2107E+01 seconds\n", - " Time synchronizing fission bank = 9.0000E-03 seconds\n", - " Sampling source sites = 8.0000E-03 seconds\n", + " Total time in simulation = 1.2599E+01 seconds\n", + " Time in transport only = 1.2565E+01 seconds\n", + " Time in inactive batches = 1.1220E+00 seconds\n", + " Time in active batches = 1.1477E+01 seconds\n", + " Time synchronizing fission bank = 6.0000E-03 seconds\n", + " Sampling source sites = 5.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 = 1.3272E+01 seconds\n", - " Calculation Rate (inactive) = 44802.9 neutrons/second\n", - " Calculation Rate (active) = 16519.4 neutrons/second\n", + " Time accumulating tallies = 1.0000E-03 seconds\n", + " Total time for finalization = 1.0000E-03 seconds\n", + " Total time elapsed = 1.2644E+01 seconds\n", + " Calculation Rate (inactive) = 44563.3 neutrons/second\n", + " Calculation Rate (active) = 17426.2 neutrons/second\n", "\n", " ============================> RESULTS <============================\n", "\n", @@ -1355,7 +1355,7 @@ { "data": { "text/plain": [ - "" + "" ] }, "execution_count": 40, @@ -1366,7 +1366,7 @@ "data": { "image/png": "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\n", "text/plain": [ - "" + "" ] }, "metadata": {}, diff --git a/docs/source/usersguide/mgxs_library.rst b/docs/source/usersguide/mgxs_library.rst index 8628bef4e..98a9e8485 100644 --- a/docs/source/usersguide/mgxs_library.rst +++ b/docs/source/usersguide/mgxs_library.rst @@ -22,9 +22,9 @@ materials. .. _XML: http://www.w3.org/XML/ ------------------------------------------------- +-------------------------------------- MGXS Library Specification -- mgxs.xml ------------------------------------------------- +-------------------------------------- The multi-group library meta-data is contained within the groups_, group_structure_, and inverse_velocities_ elements. @@ -33,7 +33,7 @@ The actual multi-group data itself is contained within the xsdata_ element. .. _groups: ```` Element ----------------------------------- +-------------------- The ```` element has no attributes and simply provides the number of energy groups contained within the library. diff --git a/examples/python/pincell_multigroup/build-xml.py b/examples/python/pincell_multigroup/build-xml.py index c7d6dfc8b..5ac5b376a 100644 --- a/examples/python/pincell_multigroup/build-xml.py +++ b/examples/python/pincell_multigroup/build-xml.py @@ -1,4 +1,3 @@ -import numpy as np import openmc import openmc.mgxs @@ -12,7 +11,7 @@ inactive = 10 particles = 1000 ############################################################################### -# Exporting to OpenMC mg_cross_sections.xml file +# Exporting to OpenMC mgxs.xml file ############################################################################### # Instantiate the energy group data @@ -22,45 +21,43 @@ groups = openmc.mgxs.EnergyGroups(group_edges=[1E-11, 0.0635E-6, 10.0E-6, # Instantiate the 7-group (C5G7) cross section data uo2_xsdata = openmc.XSdata('UO2.300K', groups) uo2_xsdata.order = 0 -uo2_xsdata.total = np.array([0.1779492, 0.3298048, 0.4803882, 0.5543674, - 0.3118013, 0.3951678, 0.5644058]) -uo2_xsdata.absorption = np.array([8.0248E-03, 3.7174E-03, 2.6769E-02, 9.6236E-02, - 3.0020E-02, 1.1126E-01, 2.8278E-01]) -scatter = [[[0.1275370, 0.0423780, 0.0000094, 0.0000000, 0.0000000, 0.0000000, 0.0000000], - [0.0000000, 0.3244560, 0.0016314, 0.0000000, 0.0000000, 0.0000000, 0.0000000], - [0.0000000, 0.0000000, 0.4509400, 0.0026792, 0.0000000, 0.0000000, 0.0000000], - [0.0000000, 0.0000000, 0.0000000, 0.4525650, 0.0055664, 0.0000000, 0.0000000], - [0.0000000, 0.0000000, 0.0000000, 0.0001253, 0.2714010, 0.0102550, 0.0000000], - [0.0000000, 0.0000000, 0.0000000, 0.0000000, 0.0012968, 0.2658020, 0.0168090], - [0.0000000, 0.0000000, 0.0000000, 0.0000000, 0.0000000, 0.0085458, 0.2730800]]] -uo2_xsdata.scatter = np.array(scatter[:][:]) -uo2_xsdata.fission = np.array([7.21206E-03, 8.19301E-04, 6.45320E-03, - 1.85648E-02, 1.78084E-02, 8.30348E-02, - 2.16004E-01]) -uo2_xsdata.nu_fission = np.array([2.005998E-02, 2.027303E-03, 1.570599E-02, - 4.518301E-02, 4.334208E-02, 2.020901E-01, - 5.257105E-01]) -uo2_xsdata.chi = np.array([5.8791E-01, 4.1176E-01, 3.3906E-04, 1.1761E-07, - 0.0000E+00, 0.0000E+00, 0.0000E+00]) +uo2_xsdata.total = [0.1779492, 0.3298048, 0.4803882, 0.5543674, + 0.3118013, 0.3951678, 0.5644058] +uo2_xsdata.absorption = [8.0248E-03, 3.7174E-03, 2.6769E-02, 9.6236E-02, + 3.0020E-02, 1.1126E-01, 2.8278E-01] +uo2_xsdata.scatter = [[[0.1275370, 0.0423780, 0.0000094, 0.0000000, 0.0000000, 0.0000000, 0.0000000], + [0.0000000, 0.3244560, 0.0016314, 0.0000000, 0.0000000, 0.0000000, 0.0000000], + [0.0000000, 0.0000000, 0.4509400, 0.0026792, 0.0000000, 0.0000000, 0.0000000], + [0.0000000, 0.0000000, 0.0000000, 0.4525650, 0.0055664, 0.0000000, 0.0000000], + [0.0000000, 0.0000000, 0.0000000, 0.0001253, 0.2714010, 0.0102550, 0.0000000], + [0.0000000, 0.0000000, 0.0000000, 0.0000000, 0.0012968, 0.2658020, 0.0168090], + [0.0000000, 0.0000000, 0.0000000, 0.0000000, 0.0000000, 0.0085458, 0.2730800]]] +uo2_xsdata.fission = [7.21206E-03, 8.19301E-04, 6.45320E-03, + 1.85648E-02, 1.78084E-02, 8.30348E-02, + 2.16004E-01] +uo2_xsdata.nu_fission = [2.005998E-02, 2.027303E-03, 1.570599E-02, + 4.518301E-02, 4.334208E-02, 2.020901E-01, + 5.257105E-01] +uo2_xsdata.chi = [5.8791E-01, 4.1176E-01, 3.3906E-04, 1.1761E-07, + 0.0000E+00, 0.0000E+00, 0.0000E+00] h2o_xsdata = openmc.XSdata('LWTR.300K', groups) h2o_xsdata.order = 0 -h2o_xsdata.total = np.array([0.15920605, 0.412969593, 0.59030986, 0.58435, - 0.718, 1.2544497, 2.650379]) -h2o_xsdata.absorption = np.array([6.0105E-04, 1.5793E-05, 3.3716E-04, - 1.9406E-03, 5.7416E-03, 1.5001E-02, - 3.7239E-02]) -scatter = [[[0.0444777, 0.1134000, 0.0007235, 0.0000037, 0.0000001, 0.0000000, 0.0000000], - [0.0000000, 0.2823340, 0.1299400, 0.0006234, 0.0000480, 0.0000074, 0.0000010], - [0.0000000, 0.0000000, 0.3452560, 0.2245700, 0.0169990, 0.0026443, 0.0005034], - [0.0000000, 0.0000000, 0.0000000, 0.0910284, 0.4155100, 0.0637320, 0.0121390], - [0.0000000, 0.0000000, 0.0000000, 0.0000714, 0.1391380, 0.5118200, 0.0612290], - [0.0000000, 0.0000000, 0.0000000, 0.0000000, 0.0022157, 0.6999130, 0.5373200], - [0.0000000, 0.0000000, 0.0000000, 0.0000000, 0.0000000, 0.1324400, 2.4807000]]] -h2o_xsdata.scatter = np.array(scatter) +h2o_xsdata.total = [0.15920605, 0.412969593, 0.59030986, 0.58435, + 0.718, 1.2544497, 2.650379] +h2o_xsdata.absorption = [6.0105E-04, 1.5793E-05, 3.3716E-04, + 1.9406E-03, 5.7416E-03, 1.5001E-02, + 3.7239E-02] +h2o_xsdata.scatter = [[[0.0444777, 0.1134000, 0.0007235, 0.0000037, 0.0000001, 0.0000000, 0.0000000], + [0.0000000, 0.2823340, 0.1299400, 0.0006234, 0.0000480, 0.0000074, 0.0000010], + [0.0000000, 0.0000000, 0.3452560, 0.2245700, 0.0169990, 0.0026443, 0.0005034], + [0.0000000, 0.0000000, 0.0000000, 0.0910284, 0.4155100, 0.0637320, 0.0121390], + [0.0000000, 0.0000000, 0.0000000, 0.0000714, 0.1391380, 0.5118200, 0.0612290], + [0.0000000, 0.0000000, 0.0000000, 0.0000000, 0.0022157, 0.6999130, 0.5373200], + [0.0000000, 0.0000000, 0.0000000, 0.0000000, 0.0000000, 0.1324400, 2.4807000]]] mg_cross_sections_file = openmc.MGXSLibrary(groups) -mg_cross_sections_file.add_xsdatas([uo2_xsdata,h2o_xsdata]) +mg_cross_sections_file.add_xsdatas([uo2_xsdata, h2o_xsdata]) mg_cross_sections_file.export_to_xml() @@ -134,7 +131,7 @@ geometry.export_to_xml() # Instantiate a Settings object, set all runtime parameters, and export to XML settings_file = openmc.Settings() settings_file.energy_mode = "multi-group" -settings_file.cross_sections = "./mg_cross_sections.xml" +settings_file.cross_sections = "./mgxs.xml" settings_file.batches = batches settings_file.inactive = inactive settings_file.particles = particles diff --git a/openmc/mgxs/library.py b/openmc/mgxs/library.py index 44746e209..586302a4b 100644 --- a/openmc/mgxs/library.py +++ b/openmc/mgxs/library.py @@ -247,8 +247,7 @@ class Library(object): @domain_type.setter def domain_type(self, domain_type): - cv.check_value('domain type', domain_type, - tuple(openmc.mgxs.DOMAIN_TYPES)) + cv.check_value('domain type', domain_type, openmc.mgxs.DOMAIN_TYPES) self._domain_type = domain_type @domains.setter @@ -722,8 +721,8 @@ class Library(object): # Load and return pickled Library object return pickle.load(open(full_filename, 'rb')) - def get_xsdata(self, domain, domain_name, nuclide='total', xs_type='macro', - xs_id='1m', order=-1): + def get_xsdata(self, domain, xsdata_name, nuclide='total', xs_type='macro', + xs_id='1m', order=None): """Generates an openmc.XSdata object describing a multi-group cross section data set for eventual combination in to an openmc.MGXSLibrary object (i.e., the library). @@ -732,7 +731,7 @@ class Library(object): ---------- domain : openmc.Material or openmc.Cell or openmc.Universe The domain for spatial homogenization - domain_name : str + xsdata_name : str Name to apply to the "xsdata" entry produced by this method nuclide : str A nuclide name string (e.g., 'U-235'). Defaults to 'total' to @@ -743,7 +742,7 @@ class Library(object): nuclide this will be set to 'macro' regardless. xs_ids : str Cross section set identifier. Defaults to '1m'. - order : Scattering order for this dataset entry. Default is -1, + order : Scattering order for this dataset entry. Default is None, which will force the XSdata object to use whatever the maximum order available. @@ -766,11 +765,11 @@ class Library(object): cv.check_type('domain', domain, (openmc.Material, openmc.Cell, openmc.Cell)) - cv.check_type('domain_name', domain_name, basestring) + cv.check_type('xsdata_name', xsdata_name, basestring) cv.check_type('nuclide', nuclide, basestring) cv.check_value('xs_type', xs_type, ['macro', 'micro']) cv.check_type('xs_id', xs_id, basestring) - cv.check_type('order', order, Integral) + cv.check_type('order', order, (type(None), Integral)) cv.check_greater_than('order', order, -1, equality=True) # Make sure statepoint has been loaded @@ -784,12 +783,18 @@ class Library(object): xs_type = 'macro' # Build & add metadata to XSdata object - name = domain_name + name = xsdata_name if nuclide is not 'total': name += '_' + nuclide name += '.' + xs_id xsdata = openmc.XSdata(name, self.energy_groups) - xsdata.order = order + if order is 0: + xsdata.order = order + else: + msg = 'Generating anisotropic scattering from openmc.Library' \ + 'objects has not yet been implemented.' + raise NotImplementedError(msg) + if nuclide is not 'total': xsdata.zaid = self._nuclides[nuclide][0] xsdata.awr = self._nuclides[nuclide][1] @@ -852,7 +857,7 @@ class Library(object): return xsdata - def create_mg_library(self, xs_type='macro', domain_names=None, + def create_mg_library(self, xs_type='macro', xsdata_names=None, xs_ids=None): """Creates an openmc.MGXSLibrary object to contain the MGXS data for the Multi-Group mode of OpenMC. @@ -863,7 +868,7 @@ class Library(object): Provide the macro or micro cross section in units of cm^-1 or barns. Defaults to 'macro'. If the Library object is not tallied by nuclide this will be set to 'macro' regardless. - domain_names : Iterable of str + xsdata_names : Iterable of str List of names to apply to the "xsdata" entries in the resultant mgxs data file. Defaults to 'set1', 'set2', ... xs_ids : str or Iterable of str @@ -894,8 +899,8 @@ class Library(object): self.check_library_for_openmc_mgxs() cv.check_value('xs_type', xs_type, ['macro', 'micro']) - if domain_names is not None: - cv.check_iterable_type('domain_names', domain_names, basestring) + if xsdata_names is not None: + cv.check_iterable_type('xsdata_names', xsdata_names, basestring) if xs_ids is not None: if isinstance(xs_ids, basestring): # If we only have a string lets convert it now to a list @@ -927,14 +932,14 @@ class Library(object): nuclides = ['total'] for nuclide in nuclides: # Build & add metadata to XSdata object - if domain_names is None: - name = 'set' + str(i + 1) + if xsdata_names is None: + xsdata_name = 'set' + str(i + 1) else: - name = domain_names[i] + xsdata_name = xsdata_names[i] if nuclide is not 'total': - name += '_' + nuclide + xsdata_name += '_' + nuclide - xsdata = self.get_xsdata(domain, name, nuclide=nuclide, + xsdata = self.get_xsdata(domain, xsdata_name, nuclide=nuclide, xs_type=xs_type, xs_id=xs_ids[i], order=order) @@ -952,14 +957,17 @@ class Library(object): The rules to check include: - Either total or transport should be present. + - Both can be available if one wants, but we should use whatever corresponds to Library.correction (if P0: transport) + - Absorption and total (or transport) are required. - A nu-fission cross section and chi values are not required as a fixed source problem could be the target. - Fission and kappa-fission are not required as they are only needed to support tallies the user may wish to request. - A nu-scatter matrix is required. + - Having both nu-scatter (of any order) and scatter (at least isotropic) matrices is preferred - If only nu-scatter, need total (not transport), to diff --git a/openmc/mgxs/mgxs.py b/openmc/mgxs/mgxs.py index f8a712f68..7cfec2f54 100644 --- a/openmc/mgxs/mgxs.py +++ b/openmc/mgxs/mgxs.py @@ -283,7 +283,7 @@ class MGXS(object): @domain_type.setter def domain_type(self, domain_type): - cv.check_value('domain type', domain_type, tuple(DOMAIN_TYPES)) + cv.check_value('domain type', domain_type, DOMAIN_TYPES) self._domain_type = domain_type @energy_groups.setter diff --git a/openmc/mgxs_library.py b/openmc/mgxs_library.py index e59ef2d61..b7c61595f 100644 --- a/openmc/mgxs_library.py +++ b/openmc/mgxs_library.py @@ -346,6 +346,16 @@ class XSdata(object): self.energy_groups.num_groups, self.energy_groups.num_groups) + @property + def pn_matrix_shape(self): + if self.representation is 'isotropic': + return (self.num_orders, self.energy_groups.num_groups, + self.energy_groups.num_groups) + elif self.representation is 'angle': + return (self.num_polar, self.num_azimuthal, self.num_orders, + self.energy_groups.num_groups, + self.energy_groups.num_groups) + @name.setter def name(self, name): check_type('name for XSdata', name, basestring) @@ -449,38 +459,49 @@ class XSdata(object): @total.setter def total(self, total): - check_type('total', total, np.ndarray, expected_iter_type=Real) - check_value('total shape', total.shape, self.vector_shape) + check_type('total', total, Iterable, expected_iter_type=Real) + # Convert to a numpy array so we can easily get the shape for + # checking + nptotal = np.array(total) + check_value('total shape', nptotal.shape, [self.vector_shape]) - self._total = total + self._total = nptotal @absorption.setter def absorption(self, absorption): - check_type('absorption', absorption, np.ndarray, - expected_iter_type=Real) - check_value('absorption shape', absorption.shape, self.vector_shape) + check_type('absorption', absorption, Iterable, expected_iter_type=Real) + # Convert to a numpy array so we can easily get the shape for + # checking + npabsorption = np.array(absorption) + check_value('absorption shape', npabsorption.shape, + [self.vector_shape]) - self._absorption = absorption + self._absorption = npabsorption @fission.setter def fission(self, fission): - check_type('fission', fission, np.ndarray, - expected_iter_type=Real) - check_value('fission shape', fission.shape, self.vector_shape) + check_type('fission', fission, Iterable, expected_iter_type=Real) + # Convert to a numpy array so we can easily get the shape for + # checking + npfission = np.array(fission) + check_value('fission shape', npfission.shape, [self.vector_shape]) - self._fission = fission + self._fission = npfission if np.sum(self._fission) > 0.0: self._fissionable = True @kappa_fission.setter def kappa_fission(self, kappa_fission): - check_type('kappa_fission', kappa_fission, np.ndarray, + check_type('kappa_fission', kappa_fission, Iterable, expected_iter_type=Real) - check_value('kappa fission shape', kappa_fission.shape, - self.vector_shape) + # Convert to a numpy array so we can easily get the shape for + # checking + npkappa_fission = np.array(kappa_fission) + check_value('kappa fission shape', npkappa_fission.shape, + [self.vector_shape]) - self._kappa_fission = kappa_fission + self._kappa_fission = npkappa_fission if np.sum(self._kappa_fission) > 0.0: self._fissionable = True @@ -493,30 +514,39 @@ class XSdata(object): 'matrix' raise ValueError(msg) - check_type('chi', chi, np.ndarray, expected_iter_type=Real) - check_value('chi shape', chi.shape, self.vector_shape) + check_type('chi', chi, Iterable, expected_iter_type=Real) + # Convert to a numpy array so we can easily get the shape for + # checking + npchi = np.array(chi) + check_value('chi shape', npchi.shape, [self.vector_shape]) - self._chi = chi + self._chi = npchi if self._use_chi is not None: self._use_chi = True @scatter.setter def scatter(self, scatter): - check_type('scatter', scatter, np.ndarray, expected_iter_type=Real, - max_depth=len(scatter.shape)) - check_value('scatter shape', scatter.shape, self.pn_matrix_shape) + # Convert to a numpy array so we can easily get the shape for + # checking + npscatter = np.array(scatter) + check_iterable_type('scatter', npscatter, Real, + max_depth=len(npscatter.shape)) + check_value('scatter shape', npscatter.shape, [self.pn_matrix_shape]) - self._scatter = scatter + self._scatter = npscatter @multiplicity.setter def multiplicity(self, multiplicity): - check_type('multiplicity', multiplicity, np.ndarray, - expected_iter_type=Real, max_depth=len(multiplicity.shape)) - check_value('multiplicity shape', multiplicity.shape, - self.matrix_shape) + # Convert to a numpy array so we can easily get the shape for + # checking + npmultiplicity = np.array(multiplicity) + check_iterable_type('multiplicity', npmultiplicity, Real, + max_depth=len(npmultiplicity.shape)) + check_value('multiplicity shape', npmultiplicity.shape, + [self.matrix_shape]) - self._multiplicity = multiplicity + self._multiplicity = npmultiplicity @nu_fission.setter def nu_fission(self, nu_fission): @@ -530,27 +560,31 @@ class XSdata(object): # chi already has been set. If not, we just check that this is OK # and set the use_chi flag accordingly - check_type('nu_fission', nu_fission, np.ndarray, - expected_iter_type=Real, max_depth=len(nu_fission.shape)) + # Convert to a numpy array so we can easily get the shape for + # checking + npnu_fission = np.array(nu_fission) + + check_iterable_type('nu_fission', npnu_fission, Real, + max_depth=len(npnu_fission.shape)) if self._use_chi is not None: if self._use_chi: - check_value('nu_fission shape', nu_fission.shape, - self.vector_shape) + check_value('nu_fission shape', npnu_fission.shape, + [self.vector_shape]) else: - check_value('nu_fission shape', nu_fission.shape, - self.matrix_shape) + check_value('nu_fission shape', npnu_fission.shape, + [self.matrix_shape]) else: - check_value('nu_fission shape', nu_fission.shape, - (self.vector_shape, self.matrix_shape)) + check_value('nu_fission shape', npnu_fission.shape, + [self.vector_shape, self.matrix_shape]) # Find out if we have a nu-fission matrix or vector # and set a flag to allow other methods to check this later. - if nu_fission.shape == self.vector_shape: + if npnu_fission.shape == self.vector_shape: self._use_chi = True else: self._use_chi = False - self._nu_fission = nu_fission + self._nu_fission = npnu_fission if np.sum(self._nu_fission) > 0.0: self._fissionable = True