From b005aace7e2014e0d6b211d760ab50b8e94ac3db Mon Sep 17 00:00:00 2001 From: Adam Nelson Date: Sat, 15 Oct 2016 11:33:00 -0400 Subject: [PATCH 01/10] Added a scatter_shape parameter to the library format and the ability to read/write it (but do nothing with it aside from check for the default value). Also converted back from is checks in the python for a string to ==, since is does not work for many cases --- docs/source/io_formats/mgxs_library.rst | 74 +++++++++++------------ openmc/mgxs/library.py | 62 ++++++++++---------- openmc/mgxs_library.py | 75 +++++++++++++++--------- scripts/openmc-update-mgxs | 14 ++--- src/mgxs_header.F90 | 7 +++ tests/1d_mgxs.h5 | Bin 123864 -> 124632 bytes 6 files changed, 128 insertions(+), 104 deletions(-) diff --git a/docs/source/io_formats/mgxs_library.rst b/docs/source/io_formats/mgxs_library.rst index 9262a234e7..2a1e63d435 100644 --- a/docs/source/io_formats/mgxs_library.rst +++ b/docs/source/io_formats/mgxs_library.rst @@ -38,10 +38,10 @@ MGXS Library Specification The data within contains the temperature-dependent multi-group data for the nuclide or material that it represents. -:Attributes: - **atomic_weight_ratio** (*double*) -- The atomic weight ratio (optional, - i.e. it is not meaningful for material-wise data) - - **fissionable** (*int*) -- Whether the dataset is fissionable - (1) or not (0). +:Attributes: - **atomic_weight_ratio** (*double*) -- The atomic weight ratio + (optional, i.e. it is not meaningful for material-wise data). + - **fissionable** (*bool*) -- Whether the dataset is fissionable + (True) or not (False). - **representation** (*char[]*) -- The method used to generate and represent the multi-group cross sections. That is, whether they were generated with scalar flux weighting (or reduced to a @@ -65,6 +65,15 @@ data for the nuclide or material that it represents. or number of points (depending on the value of `scatter_format`) used to describe the angular distribution associated with each group-to-group transfer probability. + - **scatter_shape** (*char[]*) -- The shape of the provided + scatter and multiplicity matrix. The values provided are strings + describing the ordering the scattering array is provided in + row-major (i.e., C/C++ and Python) indexing. Valid values are + "[Order][G][G']" or "[Order][G'][G]" where "G'" denotes the + secondary/outgoing energy groups, "G" denotes the incoming + energy groups, and "Order" is the angular distribution index. + This value is not required; if not the default value of + "[Order][G][G']" will be assumed. **//kTs/** @@ -79,29 +88,29 @@ Temperature-dependent data, provided for temperature K. :Datasets: - **total** (*double[]* or *double[][][]*) -- Total cross section. This is a 1-D vector if `representation` is "isotropic", or a 3-D vector if `representation` is "angle" with dimensions of - [groups, azimuthal, polar]. + [groups][azimuthal][polar]. - **absorption** (*double[]* or *double[][][]*) -- Absorption cross section. This is a 1-D vector if `representation` is "isotropic", or a 3-D vector if `representation` is "angle" with dimensions of - [groups, azimuthal, polar]. + [groups][azimuthal][polar]. - **fission** (*double[]* or *double[][][]*) -- Fission cross section. This is a 1-D vector if `representation` is "isotropic", or a 3-D vector if `representation` is "angle" with dimensions of - [groups, azimuthal, polar]. This is only required if the dataset + [groups][azimuthal][polar]. This is only required if the dataset is fissionable and fission-tallies are expected to be used. - **kappa-fission** (*double[]* or *double[][][]*) -- Kappa-Fission (energy-release from fission) cross section. This is a 1-D vector if `representation` is "isotropic", or a 3-D vector if `representation` is "angle" with dimensions of - [groups, azimuthal, polar]. This is only required if the dataset + [groups][azimuthal][polar]. This is only required if the dataset is fissionable and fission-tallies are expected to be used. - **chi** (*double[]* or *double[][][]*) -- Fission neutron energy spectra. This is a 1-D vector if `representation` is "isotropic", or a 3-D vector if `representation` is "angle" with dimensions of - [groups, azimuthal, polar]. This is only required if the dataset + [groups][azimuthal][polar]. This is only required if the dataset is fissionable and fission-tallies are expected to be used. - **nu-fission** (*double[]* to *double[][][][]*) -- Nu-Fission cross section. @@ -119,34 +128,30 @@ Temperature-dependent data, provided for temperature K. Data specific to neutron scattering for the temperature K :Datasets: - **g_min** (*int[]* or *int[][][]*) -- - Minimum (most energetic) outgoing groups with non-zero values of - the scattering matrix. These group numbers use the standard + Minimum (most energetic) groups with non-zero values of + the scattering matrix provided. If `scatter_shape` is + "[Order][G][G']" then `g_min` will describe the minimum values + of "G'" for each "G"; if `scatter_shape` is "[Order][G'][G]" + then `g_min` will describe the minimum values of "G" for each "G'". + These group numbers use the standard ordering where the fastest neutron energy group is group 1 while the slowest neutron energy group is group G. The dimensionality of `g_min` is: - `g_min[g_in]`, or `g_min[num_polar][num_azimuthal][g_in]`. + `g_min[g]`, or `g_min[num_polar][num_azimuthal][g]`. The former is used when `representation` is "isotropic", and the latter when `representation` is "angle". - **g_max** (*int[]* or *int[][][]*) -- - Maximum (least energetic) outgoing groups with non-zero values of - the scattering matrix. These group numbers use the standard - ordering where the fastest neutron energy group is group 1 while - the slowest neutron energy group is group G. - The dimensionality of `g_max` is: - `g_max[g_in]`, or `g_max[num_polar][num_azimuthal][g_in]`. - The former is used when `representation` is "isotropic", and the - latter when `representation` is "angle". + Similar to `g_min`, except this dataset describes the maximum + (least energetic) groups with non-zero values of + the scattering matrix. - **scatter_matrix** (*double[]*) -- Flattened representation of the - scattering moment matrices. The pre-flattened array is shaped as - follows (in row-major format): - `scatter_matrix[order(+1)][g_in][g_out]`, or - `scatter_matrix[num_polar][num_azimuthal][order(+1)][g_in][g_out]` - The former is used when `representation` is "isotropic", and the - latter when `representation` is "angle". Note that if the value of - `scatter_format` is "legendre", the order dimension will be one - larger than the value of `order`, otherwise it will match `order`. - Finally, the g_out dimension has a dimensionality of - `g_min` to `g_max`. + scattering moment matrices. The pre-flattened array corresponds to + the shape provied in `scatter_shape`, but if `representation` is + "angle" the dimensionality in `scatter_shape` is prepended by + "[num_polar][num_azimuthal]" dimensions. The right-most energy + group dimension will only include the entries between `g_min` and + `g_max`. + dimension has a dimensionality of `g_min` to `g_max`. - **multiplicity_matrix** (*double[]*) -- Flattened representation of the scattering moment matrices. This dataset provides the code with a scaling factor to account for neutrons being produced in (n,xn) @@ -154,9 +159,6 @@ Data specific to neutron scattering for the temperature K for every Legendre moment or histogram/tabular bin. This dataset is optional, if it is not provided no multiplication (i.e., values of 1.0) will be assumed. - The pre-flattened array is shaped as follows (in row-major format): - `multiplicity_matrix[g_in][g_out]`, or - `multiplicity_matrix[num_polar][num_azimuthal][g_in][g_out]` - The former is used when `representation` is "isotropic", and the - latter when `representation` is "angle". Finally, the g_out - dimension has a dimensionality of `g_min` to `g_max`. \ No newline at end of file + The pre-flattened array is shapes consistent with `scatter_matrix` + except the "[Order]" dimension in `scatter_shape` is ignored since + this data is assumed isotropic. \ No newline at end of file diff --git a/openmc/mgxs/library.py b/openmc/mgxs/library.py index 64210606df..c03aa78771 100644 --- a/openmc/mgxs/library.py +++ b/openmc/mgxs/library.py @@ -186,14 +186,14 @@ class Library(object): @property def domains(self): - if self._domains is 'all': - if self.domain_type is 'material': + if self._domains == 'all': + if self.domain_type == 'material': return self.openmc_geometry.get_all_materials() elif self.domain_type in ['cell', 'distribcell']: return self.openmc_geometry.get_all_material_cells() - elif self.domain_type is 'universe': + elif self.domain_type == 'universe': return self.openmc_geometry.get_all_universes() - elif self.domain_type is 'mesh': + elif self.domain_type == 'mesh': raise ValueError('Unable to get domains for Mesh domain type') else: raise ValueError('Unable to get domains without a domain type') @@ -265,7 +265,7 @@ class Library(object): @mgxs_types.setter def mgxs_types(self, mgxs_types): all_mgxs_types = openmc.mgxs.MGXS_TYPES + openmc.mgxs.MDGXS_TYPES - if mgxs_types is 'all': + if mgxs_types == 'all': self._mgxs_types = all_mgxs_types else: cv.check_iterable_type('mgxs_types', mgxs_types, basestring) @@ -277,7 +277,7 @@ class Library(object): def by_nuclide(self, by_nuclide): cv.check_type('by_nuclide', by_nuclide, bool) - if by_nuclide == True and self.domain_type is 'mesh': + if by_nuclide == True and self.domain_type == 'mesh': raise ValueError('Unable to create MGXS library by nuclide with ' 'mesh domain') @@ -287,7 +287,7 @@ class Library(object): def domain_type(self, domain_type): cv.check_value('domain type', domain_type, openmc.mgxs.DOMAIN_TYPES) - if self.by_nuclide == True and domain_type is 'mesh': + if self.by_nuclide == True and domain_type == 'mesh': raise ValueError('Unable to create MGXS library by nuclide with ' 'mesh domain') @@ -297,21 +297,21 @@ class Library(object): def domains(self, domains): # Use all materials, cells or universes in the geometry as domains - if domains is 'all': + if domains == 'all': self._domains = domains # User specified a list of material, cell or universe domains else: - if self.domain_type is 'material': + if self.domain_type == 'material': cv.check_iterable_type('domain', domains, openmc.Material) all_domains = self.openmc_geometry.get_all_materials() elif self.domain_type in ['cell', 'distribcell']: cv.check_iterable_type('domain', domains, openmc.Cell) all_domains = self.openmc_geometry.get_all_material_cells() - elif self.domain_type is 'universe': + elif self.domain_type == 'universe': cv.check_iterable_type('domain', domains, openmc.Universe) all_domains = self.openmc_geometry.get_all_universes() - elif self.domain_type is 'mesh': + elif self.domain_type == 'mesh': cv.check_iterable_type('domain', domains, openmc.Mesh) # The mesh and geometry are independent, so set all_domains @@ -355,7 +355,7 @@ class Library(object): def correction(self, correction): cv.check_value('correction', correction, ('P0', None)) - if correction is 'P0' and self.legendre_order > 0: + if correction == 'P0' and self.legendre_order > 0: warn('The P0 correction will be ignored since the scattering ' 'order "{}" is greater than zero'.format(self.legendre_order)) @@ -367,7 +367,7 @@ class Library(object): cv.check_greater_than('legendre_order', legendre_order, 0, equality=True) cv.check_less_than('legendre_order', legendre_order, 10, equality=True) - if self.correction is 'P0' and legendre_order > 0: + if self.correction == 'P0' and legendre_order > 0: msg = 'The P0 correction will be ignored since the scattering ' \ 'order {} is greater than zero'.format(self.legendre_order) warn(msg, RuntimeWarning) @@ -505,7 +505,7 @@ class Library(object): self._openmc_geometry = statepoint.summary.openmc_geometry self._nuclides = statepoint.summary.nuclides - if statepoint.run_mode is 'k-eigenvalue': + if statepoint.run_mode == 'k-eigenvalue': self._keff = statepoint.k_combined[0] # Load tallies for each MGXS for each domain and mgxs type @@ -543,13 +543,13 @@ class Library(object): """ - if self.domain_type is 'material': + if self.domain_type == 'material': cv.check_type('domain', domain, (openmc.Material, Integral)) - elif self.domain_type is 'cell' or self.domain_type is 'distribcell': + elif self.domain_type == 'cell' or self.domain_type == 'distribcell': cv.check_type('domain', domain, (openmc.Cell, Integral)) - elif self.domain_type is 'universe': + elif self.domain_type == 'universe': cv.check_type('domain', domain, (openmc.Universe, Integral)) - elif self.domain_type is 'mesh': + elif self.domain_type == 'mesh': cv.check_type('domain', domain, (openmc.Mesh, Integral)) # Check that requested domain is included in library @@ -662,7 +662,7 @@ class Library(object): # Clone this Library to initialize the subdomain-averaged version subdomain_avg_library = copy.deepcopy(self) - if subdomain_avg_library.domain_type is 'distribcell': + if subdomain_avg_library.domain_type == 'distribcell': subdomain_avg_library.domain_type = 'cell' else: return subdomain_avg_library @@ -671,7 +671,7 @@ class Library(object): for domain in self.domains: for mgxs_type in self.mgxs_types: mgxs = subdomain_avg_library.get_mgxs(domain, mgxs_type) - if mgxs.domain_type is 'distribcell': + if mgxs.domain_type == 'distribcell': avg_mgxs = mgxs.get_subdomain_avg_xs() subdomain_avg_library.all_mgxs[domain.id][mgxs_type] = avg_mgxs @@ -751,7 +751,7 @@ class Library(object): for mgxs_type in self.mgxs_types: mgxs = self.all_mgxs[domain.id][mgxs_type] - if subdomains is 'avg': + if subdomains == 'avg': mgxs = mgxs.get_subdomain_avg_xs() mgxs.build_hdf5_store(filename, directory, xs_type=xs_type, @@ -896,7 +896,7 @@ class Library(object): # Build & add metadata to XSdata object name = xsdata_name - if nuclide is not 'total': + if nuclide != 'total': name += '_' + nuclide xsdata = openmc.XSdata(name, self.energy_groups) @@ -912,7 +912,7 @@ class Library(object): self.scatter_format = 'legendre' self.representation = 'isotropic' - if nuclide is not 'total': + if nuclide != 'total': xsdata.atomic_weight_ratio = self._nuclides[nuclide][1] if subdomain is None: @@ -921,7 +921,7 @@ class Library(object): subdomain = [subdomain] # Now get xs data itself - if 'nu-transport' in self.mgxs_types and self.correction is 'P0': + if 'nu-transport' in self.mgxs_types and self.correction == 'P0': mymgxs = self.get_mgxs(domain, 'nu-transport') xsdata.set_total_mgxs(mymgxs, xs_type=xs_type, nuclide=[nuclide], subdomain=subdomain) @@ -1056,7 +1056,7 @@ class Library(object): # Initialize file mgxs_file = openmc.MGXSLibrary(self.energy_groups) - if self.domain_type is 'mesh': + if self.domain_type == 'mesh': # Create the xsdata objects and add to the mgxs_file i = 0 for domain in self.domains: @@ -1089,7 +1089,7 @@ class Library(object): xsdata_name = 'set' + str(i + 1) else: xsdata_name = xsdata_names[i] - if nuclide is not 'total': + if nuclide != 'total': xsdata_name += '_' + nuclide xsdata = self.get_xsdata(domain, xsdata_name, @@ -1159,14 +1159,14 @@ class Library(object): # the multiple meshes could be overlapping or in disparate regions # of the continuous energy model. The next step makes sure there is # only one before continuing. - if self.domain_type is 'mesh': + if self.domain_type == 'mesh': cv.check_length("domains", self.domains, 1, 1) # Get the MGXS File Data mgxs_file = self.create_mg_library('macro', xsdata_names) # Now move on the creating the geometry and assigning materials - if self.domain_type is 'mesh': + if self.domain_type == 'mesh': root = openmc.Universe(name='root', universe_id=0) # Add cells representative of the mesh with reflective BC @@ -1212,13 +1212,13 @@ class Library(object): materials.append(material) # Differentiate Geometry with new Material - if self.domain_type is 'material': + if self.domain_type == 'material': # Fill all appropriate Cells with new Material for cell in all_cells: if cell.fill.id == domain.id: cell.fill = material - elif self.domain_type is 'cell': + elif self.domain_type == 'cell': for cell in all_cells: if cell.id == domain.id: cell.fill = material @@ -1283,7 +1283,7 @@ class Library(object): ('nu-transport' not in self.mgxs_types))): error_flag = True warn('A "nu-transport" MGXS type is required since a "P0" ' - 'correction is applied, but a "nu-transport" MGXS is ' + 'correction is applied, but a "nu-transport" MGXS == ' 'not provided.') elif (((self.correction is None) and ('total' not in self.mgxs_types))): diff --git a/openmc/mgxs_library.py b/openmc/mgxs_library.py index edddd0bfac..35dff1223a 100644 --- a/openmc/mgxs_library.py +++ b/openmc/mgxs_library.py @@ -8,7 +8,7 @@ import h5py import openmc import openmc.mgxs from openmc.checkvalue import check_type, check_value, check_greater_than, \ - check_less_than, check_iterable_type + check_iterable_type if sys.version_info[0] >= 3: basestring = str @@ -16,6 +16,7 @@ if sys.version_info[0] >= 3: # Supported incoming particle MGXS angular treatment representations _REPRESENTATIONS = ['isotropic', 'angle'] _SCATTER_TYPES = ['tabular', 'legendre', 'histogram'] +_SCATTER_SHAPES = ["[Order][G][G']"] class XSdata(object): @@ -51,6 +52,8 @@ class XSdata(object): Whether or not this is a fissionable data set. scatter_format : {'legendre', 'histogram', or 'tabular'} Angular distribution representation (legendre, histogram, or tabular) + scatter_shapes : {"[Order][G][G']"} + Dimensionality of the scattering and multiplicity matrices order : int Either the Legendre order, number of bins, or number of points used to describe the angular distribution associated with each group-to-group @@ -106,8 +109,8 @@ class XSdata(object): :attr:`XSdata.nu_fission` attribute instead. nu_fission : dict of numpy.ndarray Group-wise fission production cross section vector (i.e., if - :attr:`XSdata.chi` is provided), or is the group-wise fission production - matrix. + :attr:`XSdata.chi` is provided), or is the group-wise fission + production matrix. inverse_velocities : dict of numpy.ndarray Inverse of velocities, in units of sec/cm. @@ -142,6 +145,7 @@ class XSdata(object): self._atomic_weight_ratio = None self._fissionable = False self._scatter_format = 'legendre' + self._scatter_shape = "[Order][G][G']" self._order = None self._num_polar = None self._num_azimuthal = None @@ -184,6 +188,10 @@ class XSdata(object): def scatter_format(self): return self._scatter_format + @property + def scatter_shape(self): + return self._scatter_shape + @property def order(self): return self._order @@ -242,28 +250,28 @@ class XSdata(object): @property def vector_shape(self): - if self.representation is 'isotropic': + if self.representation == 'isotropic': return (self.energy_groups.num_groups,) - elif self.representation is 'angle': + elif self.representation == 'angle': return (self.num_polar, self.num_azimuthal, self.energy_groups.num_groups) @property def matrix_shape(self): - if self.representation is 'isotropic': + if self.representation == 'isotropic': return (self.energy_groups.num_groups, self.energy_groups.num_groups) - elif self.representation is 'angle': + elif self.representation == 'angle': return (self.num_polar, self.num_azimuthal, self.energy_groups.num_groups, self.energy_groups.num_groups) @property def pn_matrix_shape(self): - if self.representation is 'isotropic': + if self.representation == 'isotropic': return (self.num_orders, self.energy_groups.num_groups, self.energy_groups.num_groups) - elif self.representation is 'angle': + elif self.representation == 'angle': return (self.num_polar, self.num_azimuthal, self.num_orders, self.energy_groups.num_groups, self.energy_groups.num_groups) @@ -309,6 +317,12 @@ class XSdata(object): check_value('scatter_format', scatter_format, _SCATTER_TYPES) self._scatter_format = scatter_format + @scatter_shape.setter + def scatter_shape(self, scatter_shape): + # check to see it is of a valid type and value + check_value('scatter_shape', scatter_shape, _SCATTER_SHAPES) + self._scatter_shape = scatter_shape + @order.setter def order(self, order): # Check type and value @@ -694,10 +708,10 @@ class XSdata(object): check_value('temperature', temperature, self.temperatures) i = np.where(self.temperatures == temperature)[0][0] - if self.representation is 'isotropic': + if self.representation == 'isotropic': self._total[i] = total.get_xs(nuclides=nuclide, xs_type=xs_type, subdomains=subdomain) - elif self.representation is 'angle': + elif self.representation == 'angle': msg = 'Angular-Dependent MGXS have not yet been implemented' raise ValueError(msg) @@ -740,11 +754,11 @@ class XSdata(object): check_value('temperature', temperature, self.temperatures) i = np.where(self.temperatures == temperature)[0][0] - if self.representation is 'isotropic': + if self.representation == 'isotropic': self._absorption[i] = absorption.get_xs(nuclides=nuclide, xs_type=xs_type, subdomains=subdomain) - elif self.representation is 'angle': + elif self.representation == 'angle': msg = 'Angular-Dependent MGXS have not yet been implemented' raise ValueError(msg) @@ -787,11 +801,11 @@ class XSdata(object): check_value('temperature', temperature, self.temperatures) i = np.where(self.temperatures == temperature)[0][0] - if self.representation is 'isotropic': + if self.representation == 'isotropic': self._fission[i] = fission.get_xs(nuclides=nuclide, xs_type=xs_type, subdomains=subdomain) - elif self.representation is 'angle': + elif self.representation == 'angle': msg = 'Angular-Dependent MGXS have not yet been implemented' raise ValueError(msg) @@ -835,11 +849,11 @@ class XSdata(object): check_value('temperature', temperature, self.temperatures) i = np.where(self.temperatures == temperature)[0][0] - if self.representation is 'isotropic': + if self.representation == 'isotropic': self._nu_fission[i] = nu_fission.get_xs(nuclides=nuclide, xs_type=xs_type, subdomains=subdomain) - elif self.representation is 'angle': + elif self.representation == 'angle': msg = 'Angular-Dependent MGXS have not yet been implemented' raise ValueError(msg) @@ -892,11 +906,11 @@ class XSdata(object): check_value('temperature', temperature, self.temperatures) i = np.where(self.temperatures == temperature)[0][0] - if self.representation is 'isotropic': + if self.representation == 'isotropic': self._kappa_fission[i] = k_fission.get_xs(nuclides=nuclide, xs_type=xs_type, subdomains=subdomain) - elif self.representation is 'angle': + elif self.representation == 'angle': msg = 'Angular-Dependent MGXS have not yet been implemented' raise ValueError(msg) @@ -943,10 +957,10 @@ class XSdata(object): check_value('temperature', temperature, self.temperatures) i = np.where(self.temperatures == temperature)[0][0] - if self.representation is 'isotropic': + if self.representation == 'isotropic': self._chi[i] = chi.get_xs(nuclides=nuclide, xs_type=xs_type, subdomains=subdomain) - elif self.representation is 'angle': + elif self.representation == 'angle': msg = 'Angular-Dependent MGXS have not yet been implemented' raise ValueError(msg) @@ -994,7 +1008,7 @@ class XSdata(object): check_type('temperature', temperature, Real) check_value('temperature', temperature, self.temperatures) - if self.scatter_format is not 'legendre': + if self.scatter_format != 'legendre': msg = 'Anisotropic scattering representations other than ' \ 'Legendre expansions have not yet been implemented in ' \ 'openmc.mgxs.' @@ -1011,7 +1025,7 @@ class XSdata(object): [self.order]) i = np.where(self.temperatures == temperature)[0][0] - if self.representation is 'isotropic': + if self.representation == 'isotropic': # Get the scattering orders in the outermost dimension self._scatter_matrix[i] = np.zeros((self.num_orders, self.energy_groups.num_groups, @@ -1021,7 +1035,7 @@ class XSdata(object): scatter.get_xs(nuclides=nuclide, xs_type=xs_type, moment=moment, subdomains=subdomain) - elif self.representation is 'angle': + elif self.representation == 'angle': msg = 'Angular-Dependent MGXS have not yet been implemented' raise ValueError(msg) @@ -1089,7 +1103,7 @@ class XSdata(object): ['universe', 'cell', 'material', 'mesh']) i = np.where(self.temperatures == temperature)[0][0] - if self.representation is 'isotropic': + if self.representation == 'isotropic': nuscatt = nuscatter.get_xs(nuclides=nuclide, xs_type=xs_type, moment=0, subdomains=subdomain) @@ -1100,7 +1114,7 @@ class XSdata(object): xs_type=xs_type, moment=0, subdomains=subdomain) self._multiplicity_matrix[i] = np.divide(nuscatt, scatt) - elif self.representation is 'angle': + elif self.representation == 'angle': msg = 'Angular-Dependent MGXS have not yet been implemented' raise ValueError(msg) self._multiplicity_matrix[i] = \ @@ -1123,7 +1137,7 @@ class XSdata(object): if self.representation is not None: grp.attrs['representation'] = np.array(self.representation, dtype='S') - if self.representation is 'angle': + if self.representation == 'angle': if self.num_azimuthal is not None: grp.attrs['num_azimuthal'] = self.num_azimuthal if self.num_polar is not None: @@ -1131,6 +1145,9 @@ class XSdata(object): if self.scatter_format is not None: grp.attrs['scatter_format'] = np.array(self.scatter_format, dtype='S') + if self.scatter_shape is not None: + grp.attrs['scatter_shape'] = np.array(self.scatter_shape, + dtype='S') if self.order is not None: grp.attrs['order'] = self.order @@ -1170,7 +1187,7 @@ class XSdata(object): # 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, :]) @@ -1206,7 +1223,7 @@ class XSdata(object): scatt_grp.create_dataset("g_min", data=g_out_bounds[:, 0]) scatt_grp.create_dataset("g_max", data=g_out_bounds[:, 1]) - elif self.representation is 'angle': + elif self.representation == 'angle': Np = self.num_polar Na = self.num_azimuthal g_out_bounds = np.zeros((Np, Na, G, 2), dtype=np.int) diff --git a/scripts/openmc-update-mgxs b/scripts/openmc-update-mgxs index 6122ff6262..658be9fef7 100755 --- a/scripts/openmc-update-mgxs +++ b/scripts/openmc-update-mgxs @@ -47,14 +47,12 @@ def parse_args(): help='input XML file') parser.add_argument('-o', '--output', nargs='?', default='', help='output file, in HDF5 format') - parser.add_argument('-c', '--compression', type=int, - help='HDF5 Compression Level') args = vars(parser.parse_args()) - if args['output'] is '': + if args['output'] == '': filename = args['input'].name extension = filenameos.path.splitext() - if extension is '.xml': + if extension == '.xml': filename = filename[:filename.rfind('.')] + '.h5' args['output'] = filename @@ -75,7 +73,7 @@ def get_data(element, entry): return value -if __name__ is '__main__': +if __name__ == '__main__': args = parse_args() # Parse the XML data. @@ -117,7 +115,7 @@ if __name__ is '__main__': representation = get_data(xsdata_elem, 'representation') if representation is None: representation = 'isotropic' - if representation is 'angle': + if representation == 'angle': n_azi = int(get_data(xsdata_elem, 'num_azimuthal')) n_pol = int(get_data(xsdata_elem, 'num_polar')) @@ -146,14 +144,14 @@ if __name__ is '__main__': representation=representation)) if awr is not None: xsd[-1].atomic_weight_ratio = awr - if representation is 'angle': + if representation == 'angle': xsd[-1].num_azimuthal = n_azi xsd[-1].num_polar = n_pol xsd[-1].scatter_format = scatter_format xsd[-1].order = order names.append(name) - if scatter_format is 'legendre': + if scatter_format == 'legendre': order_dim = order + 1 else: order_dim = order diff --git a/src/mgxs_header.F90 b/src/mgxs_header.F90 index ddce50be38..cbdf470b02 100644 --- a/src/mgxs_header.F90 +++ b/src/mgxs_header.F90 @@ -338,6 +338,13 @@ module mgxs_header else this % scatter_format = ANGLE_LEGENDRE end if + if (attribute_exists(xs_id, "scatter_shape")) then + call read_attribute(temp_str, xs_id, "scatter_shape") + temp_str = trim(temp_str) + if (to_lower(temp_str) /= "[order][g][g']") then + call fatal_error("Invalid scatter_shape option!") + end if + end if if (attribute_exists(xs_id, "fissionable")) then call read_attribute(this % fissionable, xs_id, "fissionable") else diff --git a/tests/1d_mgxs.h5 b/tests/1d_mgxs.h5 index 401fe02fc54bedac6d1b5443db23a923de30c5f0..3befba194015f15f271447424bd93c7163e81324 100644 GIT binary patch delta 7975 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 delta 7769 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 From c1dd7df7dd83ff973ccbb2d080b3f686a48fe823 Mon Sep 17 00:00:00 2001 From: Adam Nelson Date: Sat, 15 Oct 2016 15:15:50 -0400 Subject: [PATCH 02/10] Increased MG mode test coverage from 63% to 74%. --- src/mgxs_header.F90 | 2 +- src/tally.F90 | 2 + tests/input_set.py | 85 +- tests/test_mg_basic/inputs_true.dat | 2 +- tests/test_mg_basic/results_true.dat | 2 +- tests/test_mg_max_order/inputs_true.dat | 2 +- tests/test_mg_max_order/results_true.dat | 2 +- tests/test_mg_max_order/test_mg_max_order.py | 75 +- tests/test_mg_nuclide/inputs_true.dat | 2 +- tests/test_mg_nuclide/results_true.dat | 2 +- tests/test_mg_nuclide/test_mg_nuclide.py | 73 +- tests/test_mg_tallies/inputs_true.dat | 2 +- tests/test_mg_tallies/results_true.dat | 3604 ++++-------------- tests/test_mg_tallies/test_mg_tallies.py | 58 +- 14 files changed, 819 insertions(+), 3094 deletions(-) diff --git a/src/mgxs_header.F90 b/src/mgxs_header.F90 index cbdf470b02..e223238589 100644 --- a/src/mgxs_header.F90 +++ b/src/mgxs_header.F90 @@ -1865,7 +1865,7 @@ module mgxs_header integer :: iazi, ipol, t - t = this % index_temp + t = this % index_temp if (present(uvw)) then call find_angle(this % polar, this % azimuthal, uvw, iazi, ipol) diff --git a/src/tally.F90 b/src/tally.F90 index 24c1b94950..b12bc0a970 100644 --- a/src/tally.F90 +++ b/src/tally.F90 @@ -1149,6 +1149,8 @@ contains ! Do same for nucxs, point it to the microscopic nuclide data of interest if (i_nuclide > 0) then nucxs => nuclides_MG(i_nuclide) % obj + ! And since we haven't calculated this temperature index yet, do so now + call nucxs % find_temperature(p % sqrtkT) end if i = 0 diff --git a/tests/input_set.py b/tests/input_set.py index 62c4abd5eb..c62fc5914b 100644 --- a/tests/input_set.py +++ b/tests/input_set.py @@ -728,60 +728,59 @@ class AssemblyInputSet(object): class MGInputSet(InputSet): - def build_default_materials_and_geometry(self): + def build_default_materials_and_geometry(self, reps=None, as_macro=True): # Define materials needed for 1D/1G slab problem - uo2_data = openmc.Macroscopic('uo2_iso') - uo2 = openmc.Material(name='UO2', material_id=1) - uo2.set_density('macro', 1.0) - uo2.add_macroscopic(uo2_data) + mat_names = ['uo2', 'clad', 'lwtr'] + mgxs_reps = ['ang', 'ang_mu', 'iso', 'iso_mu'] - clad_data = openmc.Macroscopic('clad_ang_mu') - clad = openmc.Material(name='Clad', material_id=2) - clad.set_density('macro', 1.0) - clad.add_macroscopic(clad_data) + if reps is None: + reps = mgxs_reps - water_data = openmc.Macroscopic('lwtr_iso_mu') - water = openmc.Material(name='LWTR', material_id=3) - water.set_density('macro', 1.0) - water.add_macroscopic(water_data) + xs = [] + mats = [] + i = 0 + for mat in mat_names: + for rep in reps: + i += 1 + if as_macro: + xs.append(openmc.Macroscopic(mat + '_' + rep)) + mats.append(openmc.Material(name=str(i))) + mats[-1].set_density('macro', 1.) + mats[-1].add_macroscopic(xs[-1]) + else: + xs.append(openmc.Nuclide(mat + '_' + rep)) + mats.append(openmc.Material(name=str(i))) + mats[-1].set_density('atom/b-cm', 1.) + mats[-1].add_nuclide(xs[-1].name, 1.0, 'ao') # Define the materials file. - self.materials += (uo2, clad, water) + self.xs_data = xs + self.materials += mats # Define surfaces. - # Assembly/Problem Boundary - left = openmc.XPlane(x0=0.0, surface_id=200, - boundary_type='reflective') - right = openmc.XPlane(x0=10.0, surface_id=201, - boundary_type='reflective') - bottom = openmc.YPlane(y0=0.0, surface_id=300, - boundary_type='reflective') - top = openmc.YPlane(y0=10.0, surface_id=301, - boundary_type='reflective') + left = openmc.XPlane(x0=0.0, boundary_type='reflective') + right = openmc.XPlane(x0=10.0, boundary_type='reflective') + bottom = openmc.YPlane(y0=0.0, boundary_type='reflective') + top = openmc.YPlane(y0=10.0, boundary_type='reflective') + # for each material add a plane + planes = [openmc.ZPlane(z0=0.0, boundary_type='reflective')] + dz = 5. / float(len(mats)) + for i in range(len(mats) - 1): + planes.append(openmc.ZPlane(z0=dz * (i + 1))) + planes.append(openmc.ZPlane(z0=5.0, boundary_type='reflective')) - down = openmc.ZPlane(z0=0.0, surface_id=0, - boundary_type='reflective') - fuel_clad_intfc = openmc.ZPlane(z0=2.0, surface_id=1) - clad_lwtr_intfc = openmc.ZPlane(z0=2.4, surface_id=2) - up = openmc.ZPlane(z0=5.0, surface_id=3, - boundary_type='reflective') - - # Define cells - c1 = openmc.Cell(cell_id=1) - c1.region = +left & -right & +bottom & -top & +down & -fuel_clad_intfc - c1.fill = uo2 - c2 = openmc.Cell(cell_id=2) - c2.region = +left & -right & +bottom & -top & +fuel_clad_intfc & -clad_lwtr_intfc - c2.fill = clad - c3 = openmc.Cell(cell_id=3) - c3.region = +left & -right & +bottom & -top & +clad_lwtr_intfc & -up - c3.fill = water + # Define cells for each material + cells = [] + xy = +left & -right & +bottom & -top + for i, mat in enumerate(mats): + cells.append(openmc.Cell()) + cells[-1].region = xy & +planes[i] & -planes[i + 1] + cells[-1].fill = mat # Define root universe. root = openmc.Universe(universe_id=0, name='root universe') - - root.add_cells((c1, c2, c3)) + root.add_cells(cells) # Assign root universe to geometry self.geometry.root_universe = root @@ -791,7 +790,7 @@ class MGInputSet(InputSet): self.settings.inactive = 5 self.settings.particles = 100 self.settings.source = Source(space=Box([0.0, 0.0, 0.0], - [10.0, 10.0, 2.0])) + [10.0, 10.0, 5.])) self.settings.energy_mode = "multi-group" self.settings.cross_sections = "../1d_mgxs.h5" diff --git a/tests/test_mg_basic/inputs_true.dat b/tests/test_mg_basic/inputs_true.dat index e44aa66a5b..31673c1335 100644 --- a/tests/test_mg_basic/inputs_true.dat +++ b/tests/test_mg_basic/inputs_true.dat @@ -1 +1 @@ -002fff0d8ba33340c9039f7650ece41bd26324d2e5c2816acc232adb298ae9dbd0873c5e28520df33ebe5af4c58e2ad338547ca337b2b42f53d255bff1ae314b \ No newline at end of file +c657f05432d9668f56e671a463ba08aed47103a33072d3f893146ff24fce6711ec41ba49c7d14a70b076cccb9a526375a4d8c1241e64e8167b8e0e876ae6655c \ No newline at end of file diff --git a/tests/test_mg_basic/results_true.dat b/tests/test_mg_basic/results_true.dat index 7cdda73b5d..a367c60266 100644 --- a/tests/test_mg_basic/results_true.dat +++ b/tests/test_mg_basic/results_true.dat @@ -1,2 +1,2 @@ k-combined: -1.047136E+00 2.765964E-02 +1.034509E+00 4.099331E-02 diff --git a/tests/test_mg_max_order/inputs_true.dat b/tests/test_mg_max_order/inputs_true.dat index 9b5d32ce6c..375a7fe215 100644 --- a/tests/test_mg_max_order/inputs_true.dat +++ b/tests/test_mg_max_order/inputs_true.dat @@ -1 +1 @@ -8752d3167989d876c6f29b4b1ca7eed4b91793d8579c92de85633fd90235c67d63ee76d49081006047e0078f6f86eb6e3420c1f8fe44564e7a1fb62e828587d0 \ No newline at end of file +b4adeb6b98d1d6310484c6623dde61ccfb02e0b8b9422c60d94cb65e556f3e2744c94cb3661a94aa365964acb463a6bd93cddf2dd954bfc36e316335b4a058f3 \ No newline at end of file diff --git a/tests/test_mg_max_order/results_true.dat b/tests/test_mg_max_order/results_true.dat index 4db04e0897..1fa95fb90a 100644 --- a/tests/test_mg_max_order/results_true.dat +++ b/tests/test_mg_max_order/results_true.dat @@ -1,2 +1,2 @@ k-combined: -1.102093E+00 4.962190E-02 +1.099449E+00 1.956787E-02 diff --git a/tests/test_mg_max_order/test_mg_max_order.py b/tests/test_mg_max_order/test_mg_max_order.py index da699316ca..8c7948a323 100644 --- a/tests/test_mg_max_order/test_mg_max_order.py +++ b/tests/test_mg_max_order/test_mg_max_order.py @@ -2,83 +2,26 @@ import os import sys + sys.path.insert(0, os.pardir) -from testing_harness import TestHarness, PyAPITestHarness +from testing_harness import PyAPITestHarness from input_set import MGInputSet -import openmc -class MGNuclideInputSet(MGInputSet): - def build_default_materials_and_geometry(self): - # Define materials needed for 1D/1G slab problem - uo2_data = openmc.Macroscopic('uo2_iso') - uo2 = openmc.Material(name='UO2', material_id=1) - uo2.set_density('macro', 1.0) - uo2.add_macroscopic(uo2_data) - - clad_data = openmc.Macroscopic('clad_iso') - clad = openmc.Material(name='Clad', material_id=2) - clad.set_density('macro', 1.0) - clad.add_macroscopic(clad_data) - - water_data = openmc.Macroscopic('lwtr_iso') - water = openmc.Material(name='LWTR', material_id=3) - water.set_density('macro', 1.0) - water.add_macroscopic(water_data) - - # Define the materials file. - self.materials += (uo2, clad, water) - - # Define surfaces. - - # Assembly/Problem Boundary - left = openmc.XPlane(x0=0.0, surface_id=200, - boundary_type='reflective') - right = openmc.XPlane(x0=10.0, surface_id=201, - boundary_type='reflective') - bottom = openmc.YPlane(y0=0.0, surface_id=300, - boundary_type='reflective') - top = openmc.YPlane(y0=10.0, surface_id=301, - boundary_type='reflective') - - down = openmc.ZPlane(z0=0.0, surface_id=0, - boundary_type='reflective') - fuel_clad_intfc = openmc.ZPlane(z0=2.0, surface_id=1) - clad_lwtr_intfc = openmc.ZPlane(z0=2.4, surface_id=2) - up = openmc.ZPlane(z0=5.0, surface_id=3, - boundary_type='reflective') - - # Define cells - c1 = openmc.Cell(cell_id=1) - c1.region = +left & -right & +bottom & -top & +down & -fuel_clad_intfc - c1.fill = uo2 - c2 = openmc.Cell(cell_id=2) - c2.region = +left & -right & +bottom & -top & +fuel_clad_intfc & -clad_lwtr_intfc - c2.fill = clad - c3 = openmc.Cell(cell_id=3) - c3.region = +left & -right & +bottom & -top & +clad_lwtr_intfc & -up - c3.fill = water - - # Define root universe. - root = openmc.Universe(universe_id=0, name='root universe') - - root.add_cells((c1,c2,c3)) - - # Define the geometry file. - geometry = openmc.Geometry() - geometry.root_universe = root - - self.geometry = geometry class MGMaxOrderTestHarness(PyAPITestHarness): def __init__(self, statepoint_name, tallies_present, mg=False): PyAPITestHarness.__init__(self, statepoint_name, tallies_present) - self._input_set = MGNuclideInputSet() + self._input_set = MGInputSet() def _build_inputs(self): + """Write input XML files.""" + reps = ['iso'] + self._input_set.build_default_materials_and_geometry(reps=reps) + self._input_set.build_default_settings() # Set P1 scattering self._input_set.settings.max_order = 1 - # Call standard input build - super(MGMaxOrderTestHarness, self)._build_inputs() + self._input_set.export() + if __name__ == '__main__': harness = MGMaxOrderTestHarness('statepoint.10.*', False, mg=True) diff --git a/tests/test_mg_nuclide/inputs_true.dat b/tests/test_mg_nuclide/inputs_true.dat index 93de08656d..5950ad3e49 100644 --- a/tests/test_mg_nuclide/inputs_true.dat +++ b/tests/test_mg_nuclide/inputs_true.dat @@ -1 +1 @@ -10b64fa97cc4feb1b1b8ba401b25b68ab682aba55ad4303a76a9a293ae79cdfff2f65d74310eb917da0aac243c24713d91eafae7ec5f0c4ae535d49fc928a869 \ No newline at end of file +130e51d00cd4c00be14b4e722c285ef5725f7f7a25361f48524dc51bb70c0869149adb839199915fe6193273cb957414c073be2a9fda3ed03754967571b73f68 \ No newline at end of file diff --git a/tests/test_mg_nuclide/results_true.dat b/tests/test_mg_nuclide/results_true.dat index 7cdda73b5d..a367c60266 100644 --- a/tests/test_mg_nuclide/results_true.dat +++ b/tests/test_mg_nuclide/results_true.dat @@ -1,2 +1,2 @@ k-combined: -1.047136E+00 2.765964E-02 +1.034509E+00 4.099331E-02 diff --git a/tests/test_mg_nuclide/test_mg_nuclide.py b/tests/test_mg_nuclide/test_mg_nuclide.py index 89694eea25..b94af258f2 100644 --- a/tests/test_mg_nuclide/test_mg_nuclide.py +++ b/tests/test_mg_nuclide/test_mg_nuclide.py @@ -2,81 +2,22 @@ import os import sys + sys.path.insert(0, os.pardir) -from testing_harness import TestHarness, PyAPITestHarness +from testing_harness import PyAPITestHarness from input_set import MGInputSet -import openmc -class MGNuclideInputSet(MGInputSet): - def build_default_materials_and_geometry(self): - # Define materials needed for 1D/1G slab problem - # This time do using nuclide, not macroscopic - uo2 = openmc.Material(name='UO2', material_id=1) - uo2.set_density('sum', 1.0) - uo2.add_nuclide("uo2_iso", 1.0) - - clad = openmc.Material(name='Clad', material_id=2) - clad.set_density('sum', 1.0) - clad.add_nuclide("clad_ang_mu", 1.0) - - # water_data = openmc.Nuclide('lwtr_iso_mu', '71c') - water = openmc.Material(name='LWTR', material_id=3) - water.set_density('sum', 1.0) - water.add_nuclide("lwtr_iso_mu", 1.0) - - # Define the materials file. - self.materials.default_xs = '71c' - self.materials += (uo2, clad, water) - - # Define surfaces. - - # Assembly/Problem Boundary - left = openmc.XPlane(x0=0.0, surface_id=200, - boundary_type='reflective') - right = openmc.XPlane(x0=10.0, surface_id=201, - boundary_type='reflective') - bottom = openmc.YPlane(y0=0.0, surface_id=300, - boundary_type='reflective') - top = openmc.YPlane(y0=10.0, surface_id=301, - boundary_type='reflective') - - down = openmc.ZPlane(z0=0.0, surface_id=0, - boundary_type='reflective') - fuel_clad_intfc = openmc.ZPlane(z0=2.0, surface_id=1) - clad_lwtr_intfc = openmc.ZPlane(z0=2.4, surface_id=2) - up = openmc.ZPlane(z0=5.0, surface_id=3, - boundary_type='reflective') - - # Define cells - c1 = openmc.Cell(cell_id=1) - c1.region = +left & -right & +bottom & -top & +down & -fuel_clad_intfc - c1.fill = uo2 - c2 = openmc.Cell(cell_id=2) - c2.region = +left & -right & +bottom & -top & +fuel_clad_intfc & -clad_lwtr_intfc - c2.fill = clad - c3 = openmc.Cell(cell_id=3) - c3.region = +left & -right & +bottom & -top & +clad_lwtr_intfc & -up - c3.fill = water - - # Define root universe. - root = openmc.Universe(universe_id=0, name='root universe') - - root.add_cells((c1,c2,c3)) - - # Define the geometry file. - geometry = openmc.Geometry() - geometry.root_universe = root - - self.geometry = geometry class MGNuclideTestHarness(PyAPITestHarness): def __init__(self, statepoint_name, tallies_present, mg=False): PyAPITestHarness.__init__(self, statepoint_name, tallies_present) - self._input_set = MGNuclideInputSet() + self._input_set = MGInputSet() def _build_inputs(self): - super(MGNuclideTestHarness, self)._build_inputs() - + """Write input XML files.""" + self._input_set.build_default_materials_and_geometry(as_macro=False) + self._input_set.build_default_settings() + self._input_set.export() if __name__ == '__main__': diff --git a/tests/test_mg_tallies/inputs_true.dat b/tests/test_mg_tallies/inputs_true.dat index ca92dcb099..6e1b5dd621 100644 --- a/tests/test_mg_tallies/inputs_true.dat +++ b/tests/test_mg_tallies/inputs_true.dat @@ -1 +1 @@ -615fe0688980afc02bc11f41ac065b9479d2f6618acf6d20fcb91cd78209aed1d8fbaf73b06f153368a16aa90249d6d3ce06f840d9071a40b2118d36178fd84f \ No newline at end of file +051fcc001b79dc016d74e339348e75d1dab0338f3246643fb0032a928dd3660574543e23a6f428ee3b1b174e7e5a9aa64b27a795fa42c80068d13e98cf42a294 \ No newline at end of file diff --git a/tests/test_mg_tallies/results_true.dat b/tests/test_mg_tallies/results_true.dat index cb0498e511..09a041c7d1 100644 --- a/tests/test_mg_tallies/results_true.dat +++ b/tests/test_mg_tallies/results_true.dat @@ -1,2906 +1,712 @@ k-combined: -1.047136E+00 2.765964E-02 +1.034509E+00 4.099331E-02 tally 1: -2.490837E+00 -1.335515E+00 -8.299408E-02 -1.628477E-03 -3.917892E+00 -3.395475E+00 -3.777816E-02 -3.574150E-04 -9.366009E-02 -2.196850E-03 -2.099094E+00 -8.919271E-01 -7.540489E-02 -1.194829E-03 -3.366752E+00 -2.321133E+00 -3.536709E-02 -2.711517E-04 -8.768256E-02 -1.666633E-03 -2.667561E+00 -1.528159E+00 -6.981409E-02 -1.036744E-03 -3.696781E+00 -2.912439E+00 -2.768232E-02 -1.628195E-04 -6.863038E-02 -1.000769E-03 -2.643152E+00 -1.461242E+00 -7.777503E-02 -1.277892E-03 -3.881716E+00 -3.158579E+00 -3.318888E-02 -2.353505E-04 -8.228231E-02 -1.446581E-03 -2.379478E+00 -1.220072E+00 -7.149541E-02 -1.036720E-03 -3.597267E+00 -2.694760E+00 -3.098378E-02 -1.953397E-04 -7.681538E-02 -1.200655E-03 -3.128432E+00 -2.123023E+00 -8.683081E-02 -1.593217E-03 -4.568791E+00 -4.439900E+00 -3.595477E-02 -2.733665E-04 -8.913952E-02 -1.680246E-03 -3.320603E+00 -2.324411E+00 -9.169756E-02 -1.769612E-03 -4.811447E+00 -4.885591E+00 -3.780490E-02 -3.050758E-04 -9.372640E-02 -1.875147E-03 -3.709821E+00 -2.847102E+00 -1.037249E-01 -2.264974E-03 -5.329369E+00 -5.878403E+00 -4.295875E-02 -3.964777E-04 -1.065039E-01 -2.436949E-03 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -2.410307E+00 -1.211320E+00 -7.104710E-02 -1.056830E-03 -3.619111E+00 -2.712466E+00 -3.046789E-02 -2.019483E-04 -7.553639E-02 -1.241275E-03 -2.413065E+00 -1.186499E+00 -7.505466E-02 -1.154624E-03 -3.609948E+00 -2.664048E+00 -3.294274E-02 -2.242161E-04 -8.167207E-02 -1.378144E-03 -2.579691E+00 -1.399684E+00 -7.252523E-02 -1.085979E-03 -3.762646E+00 -2.966415E+00 -3.021298E-02 -1.872587E-04 -7.490441E-02 -1.150985E-03 -2.707136E+00 -1.528526E+00 -7.153411E-02 -1.046460E-03 -3.793295E+00 -2.976791E+00 -2.857458E-02 -1.671752E-04 -7.084247E-02 -1.027542E-03 -3.155079E+00 -2.066218E+00 -9.171950E-02 -1.711836E-03 -4.700403E+00 -4.503318E+00 -3.904100E-02 -3.167906E-04 -9.679096E-02 -1.947152E-03 -2.955891E+00 -1.796192E+00 -8.526700E-02 -1.464085E-03 -4.355866E+00 -3.839684E+00 -3.605221E-02 -2.663621E-04 -8.938111E-02 -1.637194E-03 -3.157638E+00 -2.088634E+00 -8.917486E-02 -1.627414E-03 -4.530493E+00 -4.262890E+00 -3.711278E-02 -2.791427E-04 -9.201048E-02 -1.715750E-03 -3.237824E+00 -2.159909E+00 -9.708289E-02 -1.898400E-03 -4.765807E+00 -4.617662E+00 -4.179332E-02 -3.503645E-04 -1.036145E-01 -2.153514E-03 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -2.616860E+00 -1.407243E+00 -7.221083E-02 -1.059301E-03 -3.719840E+00 -2.827103E+00 -2.963219E-02 -1.775955E-04 -7.346451E-02 -1.091590E-03 -2.536174E+00 -1.301621E+00 -7.790327E-02 -1.242427E-03 -3.836384E+00 -2.980367E+00 -3.409705E-02 -2.443384E-04 -8.453386E-02 -1.501825E-03 -2.326398E+00 -1.111745E+00 -6.380790E-02 -8.422824E-04 -3.373074E+00 -2.338678E+00 -2.619114E-02 -1.463613E-04 -6.493342E-02 -8.996094E-04 -2.745209E+00 -1.561299E+00 -7.557988E-02 -1.164281E-03 -3.914803E+00 -3.154166E+00 -3.099509E-02 -1.948889E-04 -7.684344E-02 -1.197884E-03 -2.737388E+00 -1.515779E+00 -7.304714E-02 -1.077128E-03 -3.854064E+00 -2.996781E+00 -2.937470E-02 -1.746013E-04 -7.282614E-02 -1.073187E-03 -2.731962E+00 -1.617682E+00 -7.685258E-02 -1.239175E-03 -4.057901E+00 -3.505399E+00 -3.210546E-02 -2.150275E-04 -7.959627E-02 -1.321666E-03 -2.826797E+00 -1.654653E+00 -8.798649E-02 -1.562942E-03 -4.238099E+00 -3.671654E+00 -3.864939E-02 -3.007708E-04 -9.582007E-02 -1.848687E-03 -2.503072E+00 -1.321745E+00 -6.623202E-02 -9.120239E-04 -3.541728E+00 -2.623055E+00 -2.654018E-02 -1.469478E-04 -6.579875E-02 -9.032144E-04 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -2.383417E+00 -1.171863E+00 -6.968054E-02 -9.924374E-04 -3.486989E+00 -2.493855E+00 -2.962148E-02 -1.817051E-04 -7.343795E-02 -1.116850E-03 -2.666159E+00 -1.492268E+00 -7.417343E-02 -1.141120E-03 -3.912196E+00 -3.186439E+00 -3.075257E-02 -1.953163E-04 -7.624217E-02 -1.200511E-03 -2.689651E+00 -1.483190E+00 -8.007622E-02 -1.328579E-03 -4.015410E+00 -3.294872E+00 -3.443210E-02 -2.525628E-04 -8.536450E-02 -1.552377E-03 -3.141608E+00 -2.000672E+00 -8.238823E-02 -1.366316E-03 -4.442048E+00 -3.976219E+00 -3.282615E-02 -2.177028E-04 -8.138301E-02 -1.338110E-03 -3.294568E+00 -2.201280E+00 -8.370459E-02 -1.449531E-03 -4.567777E+00 -4.247816E+00 -3.258414E-02 -2.266289E-04 -8.078302E-02 -1.392974E-03 -3.058734E+00 -1.911285E+00 -8.780153E-02 -1.572171E-03 -4.531361E+00 -4.177302E+00 -3.703146E-02 -2.828466E-04 -9.180888E-02 -1.738516E-03 -2.639291E+00 -1.470166E+00 -8.380168E-02 -1.469150E-03 -3.995402E+00 -3.337545E+00 -3.720130E-02 -2.907469E-04 -9.222996E-02 -1.787075E-03 -2.360183E+00 -1.196310E+00 -7.336179E-02 -1.123869E-03 -3.552179E+00 -2.637131E+00 -3.222538E-02 -2.218615E-04 -7.989359E-02 -1.363671E-03 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -2.177844E+00 -9.998272E-01 -6.808817E-02 -9.543925E-04 -3.302614E+00 -2.268097E+00 -3.001326E-02 -1.847730E-04 -7.440926E-02 -1.135706E-03 -2.459342E+00 -1.286534E+00 -6.409323E-02 -8.519553E-04 -3.511461E+00 -2.568245E+00 -2.550853E-02 -1.387171E-04 -6.324108E-02 -8.526242E-04 -2.712538E+00 -1.496273E+00 -7.040893E-02 -1.033599E-03 -3.801423E+00 -2.967673E+00 -2.785218E-02 -1.687241E-04 -6.905150E-02 -1.037062E-03 -3.078971E+00 -1.928690E+00 -8.927133E-02 -1.655293E-03 -4.508330E+00 -4.154031E+00 -3.778191E-02 -3.038622E-04 -9.366939E-02 -1.867688E-03 -3.040055E+00 -1.908677E+00 -8.543146E-02 -1.469528E-03 -4.395363E+00 -3.943052E+00 -3.551022E-02 -2.539139E-04 -8.803740E-02 -1.560681E-03 -2.854688E+00 -1.652859E+00 -8.501906E-02 -1.459424E-03 -4.215336E+00 -3.600073E+00 -3.650039E-02 -2.691434E-04 -9.049224E-02 -1.654289E-03 -2.563883E+00 -1.375196E+00 -8.901196E-02 -1.610331E-03 -4.042903E+00 -3.361278E+00 -4.116155E-02 -3.428545E-04 -1.020482E-01 -2.107354E-03 -2.353136E+00 -1.260383E+00 -7.514099E-02 -1.159881E-03 -3.611322E+00 -2.808437E+00 -3.349306E-02 -2.280172E-04 -8.303643E-02 -1.401507E-03 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -2.585363E+00 -1.416531E+00 -7.208386E-02 -1.068367E-03 -3.721777E+00 -2.868016E+00 -2.981132E-02 -1.871051E-04 -7.390860E-02 -1.150041E-03 -3.227353E+00 -2.189454E+00 -8.161989E-02 -1.366996E-03 -4.465292E+00 -4.143037E+00 -3.169508E-02 -2.069605E-04 -7.857885E-02 -1.272082E-03 -3.101358E+00 -2.022582E+00 -8.316566E-02 -1.469875E-03 -4.433641E+00 -4.167950E+00 -3.363316E-02 -2.428472E-04 -8.338377E-02 -1.492660E-03 -3.342682E+00 -2.353374E+00 -9.542381E-02 -1.892530E-03 -4.916807E+00 -5.068483E+00 -4.010858E-02 -3.330650E-04 -9.943770E-02 -2.047183E-03 -2.733720E+00 -1.608810E+00 -7.575232E-02 -1.234497E-03 -3.955386E+00 -3.353987E+00 -3.126476E-02 -2.114507E-04 -7.751200E-02 -1.299681E-03 -2.532385E+00 -1.341692E+00 -7.908024E-02 -1.289149E-03 -3.816608E+00 -3.020090E+00 -3.480705E-02 -2.494950E-04 -8.629409E-02 -1.533520E-03 -2.651467E+00 -1.472579E+00 -7.547436E-02 -1.201468E-03 -3.877983E+00 -3.154531E+00 -3.166886E-02 -2.150564E-04 -7.851384E-02 -1.321843E-03 -2.404559E+00 -1.241962E+00 -6.952417E-02 -1.036673E-03 -3.551485E+00 -2.687553E+00 -2.947110E-02 -1.929942E-04 -7.306514E-02 -1.186238E-03 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -2.740199E+00 -1.663131E+00 -8.719535E-02 -1.596752E-03 -4.146740E+00 -3.682203E+00 -3.870935E-02 -3.136109E-04 -9.596871E-02 -1.927608E-03 -3.006650E+00 -1.972749E+00 -8.846181E-02 -1.643195E-03 -4.449165E+00 -4.222523E+00 -3.779771E-02 -2.999515E-04 -9.370858E-02 -1.843651E-03 -2.669269E+00 -1.482479E+00 -7.250461E-02 -1.097959E-03 -3.815372E+00 -3.039000E+00 -2.952621E-02 -1.837209E-04 -7.320176E-02 -1.129240E-03 -2.906350E+00 -1.760817E+00 -8.559496E-02 -1.527401E-03 -4.338708E+00 -3.888336E+00 -3.663301E-02 -2.834528E-04 -9.082102E-02 -1.742242E-03 -2.633801E+00 -1.566751E+00 -7.851898E-02 -1.276803E-03 -3.867974E+00 -3.237952E+00 -3.370851E-02 -2.331450E-04 -8.357057E-02 -1.433025E-03 -2.946914E+00 -1.857842E+00 -7.586572E-02 -1.217999E-03 -4.089763E+00 -3.522165E+00 -2.980738E-02 -1.901498E-04 -7.389883E-02 -1.168755E-03 -2.884789E+00 -1.801722E+00 -7.517555E-02 -1.168857E-03 -4.085136E+00 -3.522983E+00 -2.985774E-02 -1.859368E-04 -7.402368E-02 -1.142860E-03 -2.740499E+00 -1.588007E+00 -7.592011E-02 -1.232446E-03 -3.959573E+00 -3.327411E+00 -3.134446E-02 -2.121705E-04 -7.770960E-02 -1.304106E-03 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -2.212799E+00 -1.000035E+00 -7.449165E-02 -1.135538E-03 -3.466616E+00 -2.419923E+00 -3.399202E-02 -2.463541E-04 -8.427346E-02 -1.514215E-03 -2.591189E+00 -1.530310E+00 -7.305643E-02 -1.114250E-03 -3.732882E+00 -3.031120E+00 -3.039294E-02 -1.919600E-04 -7.535057E-02 -1.179882E-03 -2.719836E+00 -1.670890E+00 -8.176774E-02 -1.472662E-03 -4.030045E+00 -3.607044E+00 -3.530219E-02 -2.721266E-04 -8.752165E-02 -1.672625E-03 -2.201534E+00 -1.026489E+00 -7.361463E-02 -1.156634E-03 -3.444005E+00 -2.510736E+00 -3.352726E-02 -2.491193E-04 -8.312121E-02 -1.531211E-03 -2.649820E+00 -1.500516E+00 -6.849773E-02 -9.733415E-04 -3.744876E+00 -2.926356E+00 -2.706771E-02 -1.530408E-04 -6.710661E-02 -9.406650E-04 -2.788908E+00 -1.667764E+00 -7.477958E-02 -1.148212E-03 -4.029335E+00 -3.403340E+00 -3.033277E-02 -1.914118E-04 -7.520139E-02 -1.176512E-03 -2.810664E+00 -1.609682E+00 -6.917229E-02 -9.875658E-04 -3.854296E+00 -3.029615E+00 -2.634304E-02 -1.483398E-04 -6.531000E-02 -9.117703E-04 -2.647586E+00 -1.416013E+00 -7.421099E-02 -1.112815E-03 -3.826931E+00 -2.947306E+00 -3.083732E-02 -1.923794E-04 -7.645229E-02 -1.182459E-03 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 +1.353282E+01 +3.743930E+01 +1.143045E+00 +2.712580E-01 +3.307076E+01 +2.236038E+02 +6.526994E-01 +8.855821E-02 +1.648619E+00 +5.666321E-01 +1.383226E+01 +3.869052E+01 +1.052120E+00 +2.328236E-01 +3.370167E+01 +2.297761E+02 +6.050050E-01 +7.697403E-02 +1.750404E+00 +6.331758E-01 +1.318250E+01 +3.553429E+01 +1.062624E+00 +2.357887E-01 +3.213491E+01 +2.111574E+02 +6.132682E-01 +7.853526E-02 +1.383452E+00 +4.189022E-01 +1.092857E+01 +2.455197E+01 +4.110603E-01 +3.568350E-02 +3.208428E+01 +2.114259E+02 +2.256563E-01 +1.081356E-02 +4.632141E-01 +4.677570E-02 +9.784679E+00 +1.972964E+01 +4.012515E-02 +6.039914E-04 +3.181098E+01 +2.085498E+02 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +9.927108E+00 +2.035984E+01 +1.000276E-02 +1.000553E-04 +3.229710E+01 +2.155043E+02 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +1.610209E+01 +5.213849E+01 +1.305253E-01 +4.741512E-03 +3.129504E+01 +1.971406E+02 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +3.036344E+01 +1.862702E+02 +4.715504E-01 +4.701859E-02 +3.127921E+01 +1.975072E+02 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +3.325556E+01 +2.242288E+02 +3.406537E-01 +3.172189E-02 +3.424625E+01 +2.377838E+02 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +3.437896E+01 +2.376465E+02 +3.508672E-01 +2.662723E-02 +3.547702E+01 +2.530698E+02 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 tally 2: -3.995283E+01 -3.210141E+02 -3.996387E+01 -3.211916E+02 -6.783537E+00 -9.416330E+00 -6.783789E+00 -9.417032E+00 -1.239468E+02 -3.134204E+03 -1.239468E+02 -3.134204E+03 +1.368605E+01 +3.822585E+01 +1.165647E+00 +2.774076E-01 +3.332128E+01 +2.265711E+02 +6.732988E-01 +9.255825E-02 +1.668893E+00 +5.686505E-01 +1.351185E+01 +3.714397E+01 +1.145268E+00 +2.669523E-01 +3.292797E+01 +2.205691E+02 +6.612158E-01 +8.898397E-02 +1.639208E+00 +5.468718E-01 +1.338220E+01 +3.637873E+01 +1.131564E+00 +2.601061E-01 +3.262172E+01 +2.161754E+02 +6.530550E-01 +8.663476E-02 +1.619062E+00 +5.325002E-01 +1.124444E+01 +2.583638E+01 +4.143035E-01 +3.514380E-02 +3.293951E+01 +2.216808E+02 +2.172466E-01 +9.667606E-03 +5.386005E-01 +5.942191E-02 +1.039401E+01 +2.195361E+01 +5.776981E-02 +6.785830E-04 +3.380760E+01 +2.322412E+02 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +9.968429E+00 +2.018883E+01 +5.522413E-02 +6.196056E-04 +3.243154E+01 +2.136942E+02 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +1.599575E+01 +5.164848E+01 +1.369508E-01 +3.787900E-03 +3.062851E+01 +1.892971E+02 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +2.984125E+01 +1.813760E+02 +3.150772E-01 +2.022590E-02 +3.078896E+01 +1.929299E+02 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +3.239082E+01 +2.130115E+02 +3.421610E-01 +2.377195E-02 +3.338365E+01 +2.262151E+02 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +3.394890E+01 +2.331951E+02 +3.584238E-01 +2.599332E-02 +3.503323E+01 +2.483295E+02 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +tally 3: +1.127805E+01 +2.608571E+01 +1.002813E+00 +2.123979E-01 +2.754396E+01 +1.556374E+02 +5.744190E-01 +6.983035E-02 +1.301487E+00 +3.559715E-01 +1.027524E+01 +2.176770E+01 +1.027808E+01 +2.177975E+01 +1.147696E+01 +2.681957E+01 +8.617077E-01 +1.528009E-01 +2.799053E+01 +1.596017E+02 +4.924622E-01 +4.996879E-02 +1.463919E+00 +4.452955E-01 +1.061525E+01 +2.304844E+01 +1.061818E+01 +2.306116E+01 +1.112664E+01 +2.517898E+01 +9.122203E-01 +1.733772E-01 +2.712336E+01 +1.496225E+02 +5.264663E-01 +5.774755E-02 +1.333478E+00 +3.684793E-01 +1.021442E+01 +2.118539E+01 +1.021724E+01 +2.119710E+01 +1.090672E+01 +2.450876E+01 +8.720475E-01 +1.544308E-01 +2.658725E+01 +1.456398E+02 +5.032815E-01 +5.143697E-02 +1.146804E+00 +2.835726E-01 +1.003467E+01 +2.079465E+01 +1.003744E+01 +2.080615E+01 +8.331989E+00 +1.409000E+01 +3.010595E-02 +5.041231E-04 +2.708797E+01 +1.489409E+02 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +8.301883E+00 +1.399250E+01 +8.302183E+00 +1.399351E+01 +8.140468E+00 +1.380373E+01 +3.007957E-02 +5.030779E-04 +2.646953E+01 +1.459652E+02 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +8.110389E+00 +1.372142E+01 +8.110683E+00 +1.372241E+01 +8.082005E+00 +1.362698E+01 +1.000276E-02 +1.000553E-04 +2.629420E+01 +1.442386E+02 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +8.072002E+00 +1.358172E+01 +8.072302E+00 +1.358273E+01 +8.452493E+00 +1.439819E+01 +3.016800E-02 +3.033748E-04 +2.749955E+01 +1.524016E+02 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +8.422325E+00 +1.429746E+01 +8.422638E+00 +1.429853E+01 +2.414436E+01 +1.174474E+02 +2.911770E-01 +2.007223E-02 +2.492486E+01 +1.250988E+02 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +2.385318E+01 +1.146286E+02 +2.385318E+01 +1.146286E+02 +2.670358E+01 +1.446298E+02 +4.109267E-01 +3.665787E-02 +2.742207E+01 +1.524808E+02 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +2.629265E+01 +1.401748E+02 +2.629265E+01 +1.401748E+02 +2.805989E+01 +1.590823E+02 +2.605721E-01 +1.547273E-02 +2.895612E+01 +1.694067E+02 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +2.779932E+01 +1.561607E+02 +2.779932E+01 +1.561607E+02 +2.858483E+01 +1.648682E+02 +3.007528E-01 +2.029929E-02 +2.949783E+01 +1.755681E+02 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +2.828408E+01 +1.615023E+02 +2.828408E+01 +1.615023E+02 +tally 4: +1.127805E+01 +2.608571E+01 +9.413263E-01 +1.814958E-01 +2.754396E+01 +1.556374E+02 +5.422850E-01 +6.023145E-02 +1.344903E+00 +3.704722E-01 +1.147696E+01 +2.681957E+01 +9.663242E-01 +1.895497E-01 +2.799053E+01 +1.596017E+02 +5.573458E-01 +6.303283E-02 +1.381910E+00 +3.875298E-01 +1.112664E+01 +2.517898E+01 +9.408395E-01 +1.800284E-01 +2.712336E+01 +1.496225E+02 +5.429832E-01 +5.996291E-02 +1.346171E+00 +3.685618E-01 +1.090672E+01 +2.450876E+01 +9.222434E-01 +1.752364E-01 +2.658725E+01 +1.456398E+02 +5.322509E-01 +5.836681E-02 +1.319563E+00 +3.587514E-01 +8.331989E+00 +1.409000E+01 +4.665612E-02 +4.414425E-04 +2.708797E+01 +1.489409E+02 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +8.140468E+00 +1.380373E+01 +4.513252E-02 +4.265760E-04 +2.646953E+01 +1.459652E+02 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +8.082005E+00 +1.362698E+01 +4.477352E-02 +4.182191E-04 +2.629420E+01 +1.442386E+02 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +8.452493E+00 +1.439819E+01 +4.682599E-02 +4.418878E-04 +2.749955E+01 +1.524016E+02 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +2.414436E+01 +1.174474E+02 +2.549248E-01 +1.309686E-02 +2.492486E+01 +1.250988E+02 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +2.670358E+01 +1.446298E+02 +2.827393E-01 +1.621660E-02 +2.742207E+01 +1.524808E+02 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +2.805989E+01 +1.590823E+02 +2.962491E-01 +1.773226E-02 +2.895612E+01 +1.694067E+02 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +2.858483E+01 +1.648682E+02 +3.017914E-01 +1.837719E-02 +2.949783E+01 +1.755681E+02 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +tally 5: +1.140031E+01 +2.654804E+01 +9.714892E-01 +1.928147E-01 +2.775330E+01 +1.573327E+02 +5.611798E-01 +6.433919E-02 +1.390960E+00 +3.952699E-01 +1.042894E+01 +2.221679E+01 +1.141545E+01 +2.652638E+01 +9.688838E-01 +1.912040E-01 +2.781363E+01 +1.574484E+02 +5.594851E-01 +6.375914E-02 +1.386962E+00 +3.918154E-01 +1.129668E-01 +2.597945E-03 +1.104472E+01 +2.480364E+01 +9.339121E-01 +1.773447E-01 +2.692364E+01 +1.473920E+02 +5.389851E-01 +5.906905E-02 +1.336259E+00 +3.630677E-01 +1.011089E+01 +2.078670E+01 +1.117137E+01 +2.545891E+01 +9.446221E-01 +1.820299E-01 +2.723240E+01 +1.512859E+02 +5.451662E-01 +6.062956E-02 +1.351583E+00 +3.726594E-01 +1.105108E-01 +2.491359E-03 +8.516856E+00 +1.480571E+01 +4.746789E-02 +4.599371E-04 +2.769452E+01 +1.565558E+02 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +8.469171E+00 +1.464039E+01 +8.669841E+00 +1.526679E+01 +4.817729E-02 +4.716776E-04 +2.820058E+01 +1.615173E+02 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +1.126905E-01 +2.579568E-03 +8.322112E+00 +1.408773E+01 +4.610369E-02 +4.323598E-04 +2.707537E+01 +1.491155E+02 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +8.275818E+00 +1.393144E+01 +8.001626E+00 +1.291919E+01 +4.432823E-02 +3.964967E-04 +2.603269E+01 +1.367468E+02 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +1.037888E-01 +2.173599E-03 +2.420071E+01 +1.187334E+02 +2.553808E-01 +1.322410E-02 +2.499803E+01 +1.266325E+02 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +2.394540E+01 +1.162412E+02 +2.599102E+01 +1.379786E+02 +2.747004E-01 +1.541805E-02 +2.675330E+01 +1.460654E+02 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +1.544592E-02 +4.872035E-05 +2.723238E+01 +1.502761E+02 +2.875125E-01 +1.675068E-02 +2.810218E+01 +1.600291E+02 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +2.694487E+01 +1.471198E+02 +2.839730E+01 +1.630916E+02 +2.998114E-01 +1.817916E-02 +2.930431E+01 +1.736763E+02 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +1.688140E-02 +5.763608E-05 +tally 6: +1.027524E+01 +2.176770E+01 +1.027808E+01 +2.177975E+01 +1.301487E+00 +3.559715E-01 +1.061525E+01 +2.304844E+01 +1.061818E+01 +2.306116E+01 +1.463919E+00 +4.452955E-01 +1.021442E+01 +2.118539E+01 +1.021724E+01 +2.119710E+01 +1.333478E+00 +3.684793E-01 +1.003467E+01 +2.079465E+01 +1.003744E+01 +2.080615E+01 +1.146804E+00 +2.835726E-01 +8.301883E+00 +1.399250E+01 +8.302183E+00 +1.399351E+01 +0.000000E+00 +0.000000E+00 +8.110389E+00 +1.372142E+01 +8.110683E+00 +1.372241E+01 +0.000000E+00 +0.000000E+00 +8.072002E+00 +1.358172E+01 +8.072302E+00 +1.358273E+01 +0.000000E+00 +0.000000E+00 +8.422325E+00 +1.429746E+01 +8.422638E+00 +1.429853E+01 +0.000000E+00 +0.000000E+00 +2.385318E+01 +1.146286E+02 +2.385318E+01 +1.146286E+02 +0.000000E+00 +0.000000E+00 +2.629265E+01 +1.401748E+02 +2.629265E+01 +1.401748E+02 +0.000000E+00 +0.000000E+00 +2.779932E+01 +1.561607E+02 +2.779932E+01 +1.561607E+02 +0.000000E+00 +0.000000E+00 +2.828408E+01 +1.615023E+02 +2.828408E+01 +1.615023E+02 +0.000000E+00 +0.000000E+00 diff --git a/tests/test_mg_tallies/test_mg_tallies.py b/tests/test_mg_tallies/test_mg_tallies.py index c9c5e95be2..4e57120bd8 100644 --- a/tests/test_mg_tallies/test_mg_tallies.py +++ b/tests/test_mg_tallies/test_mg_tallies.py @@ -9,32 +9,66 @@ import openmc class MGTalliesTestHarness(PyAPITestHarness): def _build_inputs(self): + """Write input XML files.""" + self._input_set.build_default_materials_and_geometry(as_macro=True) + self._input_set.build_default_settings() + # Instantiate a tally mesh mesh = openmc.Mesh(mesh_id=1) mesh.type = 'regular' - mesh.dimension = [17, 17, 1] + mesh.dimension = [1, 1, 10] mesh.lower_left = [0.0, 0.0, 0.0] - mesh.upper_right = [21.42, 21.42, 100.0] + mesh.upper_right = [10, 10, 5] # Instantiate some tally filters energy_filter = openmc.EnergyFilter([0.0, 20.0]) energyout_filter = openmc.EnergyoutFilter([0.0, 20.0]) mesh_filter = openmc.MeshFilter(mesh) - mat_filter = openmc.MaterialFilter([1,2,3]) + mat_ids = [mat.id for mat in self._input_set.materials] + mat_filter = openmc.MaterialFilter(mat_ids) - tally1 = openmc.Tally(tally_id=1) - tally1.filters = [mesh_filter] - tally1.scores = ['total', 'absorption', 'flux', - 'fission', 'nu-fission'] + tallies = [] - tally2 = openmc.Tally(tally_id=2) - tally2.filters = [mat_filter, energy_filter, energyout_filter] - tally2.scores = ['scatter', 'nu-scatter'] + tallies.append(openmc.Tally()) + tallies[-1].filters = [mesh_filter] + tallies[-1].estimator = 'analog' + tallies[-1].scores = ['total', 'absorption', 'flux', + 'fission', 'nu-fission'] - self._input_set.tallies = openmc.Tallies([tally1, tally2]) + tallies.append(openmc.Tally()) + tallies[-1].filters = [mesh_filter] + tallies[-1].estimator = 'tracklength' + tallies[-1].scores = ['total', 'absorption', 'flux', + 'fission', 'nu-fission'] - super(MGTalliesTestHarness, self)._build_inputs() + tallies.append(openmc.Tally()) + tallies[-1].filters = [mat_filter, energy_filter] + tallies[-1].estimator = 'analog' + tallies[-1].scores = ['total', 'absorption', 'flux', + 'fission', 'nu-fission', 'scatter', + 'nu-scatter'] + + tallies.append(openmc.Tally()) + tallies[-1].filters = [mat_filter, energy_filter] + tallies[-1].estimator = 'collision' + tallies[-1].scores = ['total', 'absorption', 'flux', + 'fission', 'nu-fission'] + + tallies.append(openmc.Tally()) + tallies[-1].filters = [mat_filter, energy_filter] + tallies[-1].estimator = 'tracklength' + tallies[-1].scores = ['total', 'absorption', 'flux', + 'fission', 'nu-fission', 'scatter'] + + tallies.append(openmc.Tally()) + tallies[-1].filters = [mat_filter, energy_filter, + energyout_filter] + tallies[-1].scores = ['scatter', 'nu-scatter', 'nu-fission'] + + self._input_set.tallies = openmc.Tallies(tallies) + + self._input_set.export() def _cleanup(self): super(MGTalliesTestHarness, self)._cleanup() From ea0e706b7081709fbeb51d80119e7459c165795b Mon Sep 17 00:00:00 2001 From: Adam Nelson Date: Sat, 15 Oct 2016 16:15:17 -0400 Subject: [PATCH 03/10] Ok, fixed the extra whitespace (havent gotten my sublime settings all set since I got the new computer, and, as a bonus, I added nuclidic tallies to the test_mg_tallies test, including a few bugfixes along the way --- src/input_xml.F90 | 2 +- src/mgxs_header.F90 | 16 +- src/output.F90 | 9 +- src/state_point.F90 | 17 +- src/tally.F90 | 27 +- tests/input_set.py | 2 +- tests/test_mg_tallies/inputs_true.dat | 2 +- tests/test_mg_tallies/results_true.dat | 713 +---------------------- tests/test_mg_tallies/test_mg_tallies.py | 80 +-- 9 files changed, 98 insertions(+), 770 deletions(-) diff --git a/src/input_xml.F90 b/src/input_xml.F90 index 2719aa68fe..e8b950d917 100644 --- a/src/input_xml.F90 +++ b/src/input_xml.F90 @@ -3301,7 +3301,7 @@ contains ! Search through nuclides pair_list => nuclide_dict % keys() do while (associated(pair_list)) - if (starts_with(pair_list % key, word)) then + if (trim(pair_list % key) == trim(word)) then word = pair_list % key(1:150) exit end if diff --git a/src/mgxs_header.F90 b/src/mgxs_header.F90 index e223238589..feb4d46a89 100644 --- a/src/mgxs_header.F90 +++ b/src/mgxs_header.F90 @@ -437,9 +437,9 @@ module mgxs_header ! Get temperature as a string temp_str = trim(to_str(temps_to_read % data(t))) // "K" xsdata_grp = open_group(xs_id, trim(temp_str)) + allocate(xs % nu_fission(groups)) + allocate(xs % chi(groups, groups)) if (this % fissionable) then - allocate(xs % nu_fission(groups)) - allocate(xs % chi(groups, groups)) if (object_exists(xsdata_grp, "chi")) then ! Chi was provided, that means we need chi and nu-fission vectors ! Get chi @@ -505,6 +505,9 @@ 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 (object_exists(xsdata_grp, "absorption")) then @@ -735,9 +738,9 @@ module mgxs_header ! Get temperature as a string temp_str = trim(to_str(temps_to_read % data(t))) // "K" xsdata_grp = open_group(xs_id, trim(temp_str)) + allocate(xs % nu_fission(groups, this % n_azi, this % n_pol)) + allocate(xs % chi(groups, groups, this % n_azi, this % n_pol)) 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 (object_exists(xsdata_grp, "chi")) then ! Chi was provided, that means we need chi and nu-fission vectors ! Get chi @@ -848,6 +851,9 @@ 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 (object_exists(xsdata_grp, "absorption")) then @@ -1865,7 +1871,7 @@ module mgxs_header integer :: iazi, ipol, t - t = this % index_temp + t = this % index_temp if (present(uvw)) then call find_angle(this % polar, this % azimuthal, uvw, iazi, ipol) diff --git a/src/output.F90 b/src/output.F90 index 03496decbc..8127725a68 100644 --- a/src/output.F90 +++ b/src/output.F90 @@ -856,8 +856,13 @@ contains write(UNIT=unit_tally, FMT='(1X,2A,1X,A)') repeat(" ", indent), & "Total Material" else - write(UNIT=unit_tally, FMT='(1X,2A,1X,A)') repeat(" ", indent), & - trim(nuclides(i_nuclide) % name) + if (run_CE) then + write(UNIT=unit_tally, FMT='(1X,2A,1X,A)') repeat(" ", indent), & + trim(nuclides(i_nuclide) % name) + else + write(UNIT=unit_tally, FMT='(1X,2A,1X,A)') repeat(" ", indent), & + trim(nuclides_MG(i_nuclide) % obj % name) + end if end if indent = indent + 2 diff --git a/src/state_point.F90 b/src/state_point.F90 index 39532652f1..6b7a467d4f 100644 --- a/src/state_point.F90 +++ b/src/state_point.F90 @@ -251,11 +251,20 @@ contains allocate(str_array(tally % n_nuclide_bins)) NUCLIDE_LOOP: do j = 1, tally % n_nuclide_bins if (tally % nuclide_bins(j) > 0) then - i_xs = index(nuclides(tally % nuclide_bins(j)) % name, '.') - if (i_xs > 0) then - str_array(j) = nuclides(tally % nuclide_bins(j)) % name(1 : i_xs-1) + if (run_CE) then + i_xs = index(nuclides(tally % nuclide_bins(j)) % name, '.') + if (i_xs > 0) then + str_array(j) = nuclides(tally % nuclide_bins(j)) % name(1 : i_xs-1) + else + str_array(j) = nuclides(tally % nuclide_bins(j)) % name + end if else - str_array(j) = nuclides(tally % nuclide_bins(j)) % name + i_xs = index(nuclides_MG(tally % nuclide_bins(j)) % obj % name, '.') + if (i_xs > 0) then + str_array(j) = nuclides_MG(tally % nuclide_bins(j)) % obj % name(1 : i_xs-1) + else + str_array(j) = nuclides_MG(tally % nuclide_bins(j)) % obj % name + end if end if else str_array(j) = 'total' diff --git a/src/tally.F90 b/src/tally.F90 index b12bc0a970..e1c5769d1d 100644 --- a/src/tally.F90 +++ b/src/tally.F90 @@ -1865,17 +1865,24 @@ contains i_nuclide = t % nuclide_bins(k) - ! Check to see if this nuclide was in the material of our collision. - do m = 1, mat % n_nuclides - if (mat % nuclide(m) == i_nuclide) then - atom_density = mat % atom_density(m) - exit - end if - end do + if (i_nuclide > 0) then + atom_density = -ONE + ! Check to see if this nuclide was in the material of our collision. + do m = 1, mat % n_nuclides + if (mat % nuclide(m) == i_nuclide) then + atom_density = mat % atom_density(m) + exit + end if + end do + else + atom_density = ZERO + end if - ! Determine score for each bin - call score_general(p, t, (k-1)*t % n_score_bins, filter_index, & - i_nuclide, atom_density, filter_weight) + ! If we found the nuclide, determine the score for each bin + if (atom_density >= ZERO) then + call score_general(p, t, (k-1)*t % n_score_bins, filter_index, & + i_nuclide, atom_density, filter_weight) + end if end do NUCLIDE_LOOP diff --git a/tests/input_set.py b/tests/input_set.py index c62fc5914b..e349272144 100644 --- a/tests/input_set.py +++ b/tests/input_set.py @@ -753,7 +753,7 @@ class MGInputSet(InputSet): mats[-1].set_density('atom/b-cm', 1.) mats[-1].add_nuclide(xs[-1].name, 1.0, 'ao') - # Define the materials file. + # Define the materials file self.xs_data = xs self.materials += mats diff --git a/tests/test_mg_tallies/inputs_true.dat b/tests/test_mg_tallies/inputs_true.dat index 6e1b5dd621..4b1863929d 100644 --- a/tests/test_mg_tallies/inputs_true.dat +++ b/tests/test_mg_tallies/inputs_true.dat @@ -1 +1 @@ -051fcc001b79dc016d74e339348e75d1dab0338f3246643fb0032a928dd3660574543e23a6f428ee3b1b174e7e5a9aa64b27a795fa42c80068d13e98cf42a294 \ No newline at end of file +255e71d921bb67f7f4832d1b217f4d19ea3c6bd96f551f1676e3735bd314986cc5f2be064e98c8f938a3f93c28b94487567d28829b4c0d66f8d2f8f5a776f302 \ No newline at end of file diff --git a/tests/test_mg_tallies/results_true.dat b/tests/test_mg_tallies/results_true.dat index 09a041c7d1..67e6cf4056 100644 --- a/tests/test_mg_tallies/results_true.dat +++ b/tests/test_mg_tallies/results_true.dat @@ -1,712 +1 @@ -k-combined: -1.034509E+00 4.099331E-02 -tally 1: -1.353282E+01 -3.743930E+01 -1.143045E+00 -2.712580E-01 -3.307076E+01 -2.236038E+02 -6.526994E-01 -8.855821E-02 -1.648619E+00 -5.666321E-01 -1.383226E+01 -3.869052E+01 -1.052120E+00 -2.328236E-01 -3.370167E+01 -2.297761E+02 -6.050050E-01 -7.697403E-02 -1.750404E+00 -6.331758E-01 -1.318250E+01 -3.553429E+01 -1.062624E+00 -2.357887E-01 -3.213491E+01 -2.111574E+02 -6.132682E-01 -7.853526E-02 -1.383452E+00 -4.189022E-01 -1.092857E+01 -2.455197E+01 -4.110603E-01 -3.568350E-02 -3.208428E+01 -2.114259E+02 -2.256563E-01 -1.081356E-02 -4.632141E-01 -4.677570E-02 -9.784679E+00 -1.972964E+01 -4.012515E-02 -6.039914E-04 -3.181098E+01 -2.085498E+02 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -9.927108E+00 -2.035984E+01 -1.000276E-02 -1.000553E-04 -3.229710E+01 -2.155043E+02 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -1.610209E+01 -5.213849E+01 -1.305253E-01 -4.741512E-03 -3.129504E+01 -1.971406E+02 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -3.036344E+01 -1.862702E+02 -4.715504E-01 -4.701859E-02 -3.127921E+01 -1.975072E+02 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -3.325556E+01 -2.242288E+02 -3.406537E-01 -3.172189E-02 -3.424625E+01 -2.377838E+02 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -3.437896E+01 -2.376465E+02 -3.508672E-01 -2.662723E-02 -3.547702E+01 -2.530698E+02 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -tally 2: -1.368605E+01 -3.822585E+01 -1.165647E+00 -2.774076E-01 -3.332128E+01 -2.265711E+02 -6.732988E-01 -9.255825E-02 -1.668893E+00 -5.686505E-01 -1.351185E+01 -3.714397E+01 -1.145268E+00 -2.669523E-01 -3.292797E+01 -2.205691E+02 -6.612158E-01 -8.898397E-02 -1.639208E+00 -5.468718E-01 -1.338220E+01 -3.637873E+01 -1.131564E+00 -2.601061E-01 -3.262172E+01 -2.161754E+02 -6.530550E-01 -8.663476E-02 -1.619062E+00 -5.325002E-01 -1.124444E+01 -2.583638E+01 -4.143035E-01 -3.514380E-02 -3.293951E+01 -2.216808E+02 -2.172466E-01 -9.667606E-03 -5.386005E-01 -5.942191E-02 -1.039401E+01 -2.195361E+01 -5.776981E-02 -6.785830E-04 -3.380760E+01 -2.322412E+02 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -9.968429E+00 -2.018883E+01 -5.522413E-02 -6.196056E-04 -3.243154E+01 -2.136942E+02 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -1.599575E+01 -5.164848E+01 -1.369508E-01 -3.787900E-03 -3.062851E+01 -1.892971E+02 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -2.984125E+01 -1.813760E+02 -3.150772E-01 -2.022590E-02 -3.078896E+01 -1.929299E+02 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -3.239082E+01 -2.130115E+02 -3.421610E-01 -2.377195E-02 -3.338365E+01 -2.262151E+02 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -3.394890E+01 -2.331951E+02 -3.584238E-01 -2.599332E-02 -3.503323E+01 -2.483295E+02 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -tally 3: -1.127805E+01 -2.608571E+01 -1.002813E+00 -2.123979E-01 -2.754396E+01 -1.556374E+02 -5.744190E-01 -6.983035E-02 -1.301487E+00 -3.559715E-01 -1.027524E+01 -2.176770E+01 -1.027808E+01 -2.177975E+01 -1.147696E+01 -2.681957E+01 -8.617077E-01 -1.528009E-01 -2.799053E+01 -1.596017E+02 -4.924622E-01 -4.996879E-02 -1.463919E+00 -4.452955E-01 -1.061525E+01 -2.304844E+01 -1.061818E+01 -2.306116E+01 -1.112664E+01 -2.517898E+01 -9.122203E-01 -1.733772E-01 -2.712336E+01 -1.496225E+02 -5.264663E-01 -5.774755E-02 -1.333478E+00 -3.684793E-01 -1.021442E+01 -2.118539E+01 -1.021724E+01 -2.119710E+01 -1.090672E+01 -2.450876E+01 -8.720475E-01 -1.544308E-01 -2.658725E+01 -1.456398E+02 -5.032815E-01 -5.143697E-02 -1.146804E+00 -2.835726E-01 -1.003467E+01 -2.079465E+01 -1.003744E+01 -2.080615E+01 -8.331989E+00 -1.409000E+01 -3.010595E-02 -5.041231E-04 -2.708797E+01 -1.489409E+02 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -8.301883E+00 -1.399250E+01 -8.302183E+00 -1.399351E+01 -8.140468E+00 -1.380373E+01 -3.007957E-02 -5.030779E-04 -2.646953E+01 -1.459652E+02 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -8.110389E+00 -1.372142E+01 -8.110683E+00 -1.372241E+01 -8.082005E+00 -1.362698E+01 -1.000276E-02 -1.000553E-04 -2.629420E+01 -1.442386E+02 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -8.072002E+00 -1.358172E+01 -8.072302E+00 -1.358273E+01 -8.452493E+00 -1.439819E+01 -3.016800E-02 -3.033748E-04 -2.749955E+01 -1.524016E+02 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -8.422325E+00 -1.429746E+01 -8.422638E+00 -1.429853E+01 -2.414436E+01 -1.174474E+02 -2.911770E-01 -2.007223E-02 -2.492486E+01 -1.250988E+02 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -2.385318E+01 -1.146286E+02 -2.385318E+01 -1.146286E+02 -2.670358E+01 -1.446298E+02 -4.109267E-01 -3.665787E-02 -2.742207E+01 -1.524808E+02 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -2.629265E+01 -1.401748E+02 -2.629265E+01 -1.401748E+02 -2.805989E+01 -1.590823E+02 -2.605721E-01 -1.547273E-02 -2.895612E+01 -1.694067E+02 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -2.779932E+01 -1.561607E+02 -2.779932E+01 -1.561607E+02 -2.858483E+01 -1.648682E+02 -3.007528E-01 -2.029929E-02 -2.949783E+01 -1.755681E+02 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -2.828408E+01 -1.615023E+02 -2.828408E+01 -1.615023E+02 -tally 4: -1.127805E+01 -2.608571E+01 -9.413263E-01 -1.814958E-01 -2.754396E+01 -1.556374E+02 -5.422850E-01 -6.023145E-02 -1.344903E+00 -3.704722E-01 -1.147696E+01 -2.681957E+01 -9.663242E-01 -1.895497E-01 -2.799053E+01 -1.596017E+02 -5.573458E-01 -6.303283E-02 -1.381910E+00 -3.875298E-01 -1.112664E+01 -2.517898E+01 -9.408395E-01 -1.800284E-01 -2.712336E+01 -1.496225E+02 -5.429832E-01 -5.996291E-02 -1.346171E+00 -3.685618E-01 -1.090672E+01 -2.450876E+01 -9.222434E-01 -1.752364E-01 -2.658725E+01 -1.456398E+02 -5.322509E-01 -5.836681E-02 -1.319563E+00 -3.587514E-01 -8.331989E+00 -1.409000E+01 -4.665612E-02 -4.414425E-04 -2.708797E+01 -1.489409E+02 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -8.140468E+00 -1.380373E+01 -4.513252E-02 -4.265760E-04 -2.646953E+01 -1.459652E+02 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -8.082005E+00 -1.362698E+01 -4.477352E-02 -4.182191E-04 -2.629420E+01 -1.442386E+02 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -8.452493E+00 -1.439819E+01 -4.682599E-02 -4.418878E-04 -2.749955E+01 -1.524016E+02 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -2.414436E+01 -1.174474E+02 -2.549248E-01 -1.309686E-02 -2.492486E+01 -1.250988E+02 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -2.670358E+01 -1.446298E+02 -2.827393E-01 -1.621660E-02 -2.742207E+01 -1.524808E+02 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -2.805989E+01 -1.590823E+02 -2.962491E-01 -1.773226E-02 -2.895612E+01 -1.694067E+02 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -2.858483E+01 -1.648682E+02 -3.017914E-01 -1.837719E-02 -2.949783E+01 -1.755681E+02 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -tally 5: -1.140031E+01 -2.654804E+01 -9.714892E-01 -1.928147E-01 -2.775330E+01 -1.573327E+02 -5.611798E-01 -6.433919E-02 -1.390960E+00 -3.952699E-01 -1.042894E+01 -2.221679E+01 -1.141545E+01 -2.652638E+01 -9.688838E-01 -1.912040E-01 -2.781363E+01 -1.574484E+02 -5.594851E-01 -6.375914E-02 -1.386962E+00 -3.918154E-01 -1.129668E-01 -2.597945E-03 -1.104472E+01 -2.480364E+01 -9.339121E-01 -1.773447E-01 -2.692364E+01 -1.473920E+02 -5.389851E-01 -5.906905E-02 -1.336259E+00 -3.630677E-01 -1.011089E+01 -2.078670E+01 -1.117137E+01 -2.545891E+01 -9.446221E-01 -1.820299E-01 -2.723240E+01 -1.512859E+02 -5.451662E-01 -6.062956E-02 -1.351583E+00 -3.726594E-01 -1.105108E-01 -2.491359E-03 -8.516856E+00 -1.480571E+01 -4.746789E-02 -4.599371E-04 -2.769452E+01 -1.565558E+02 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -8.469171E+00 -1.464039E+01 -8.669841E+00 -1.526679E+01 -4.817729E-02 -4.716776E-04 -2.820058E+01 -1.615173E+02 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -1.126905E-01 -2.579568E-03 -8.322112E+00 -1.408773E+01 -4.610369E-02 -4.323598E-04 -2.707537E+01 -1.491155E+02 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -8.275818E+00 -1.393144E+01 -8.001626E+00 -1.291919E+01 -4.432823E-02 -3.964967E-04 -2.603269E+01 -1.367468E+02 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -1.037888E-01 -2.173599E-03 -2.420071E+01 -1.187334E+02 -2.553808E-01 -1.322410E-02 -2.499803E+01 -1.266325E+02 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -2.394540E+01 -1.162412E+02 -2.599102E+01 -1.379786E+02 -2.747004E-01 -1.541805E-02 -2.675330E+01 -1.460654E+02 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -1.544592E-02 -4.872035E-05 -2.723238E+01 -1.502761E+02 -2.875125E-01 -1.675068E-02 -2.810218E+01 -1.600291E+02 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -2.694487E+01 -1.471198E+02 -2.839730E+01 -1.630916E+02 -2.998114E-01 -1.817916E-02 -2.930431E+01 -1.736763E+02 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -1.688140E-02 -5.763608E-05 -tally 6: -1.027524E+01 -2.176770E+01 -1.027808E+01 -2.177975E+01 -1.301487E+00 -3.559715E-01 -1.061525E+01 -2.304844E+01 -1.061818E+01 -2.306116E+01 -1.463919E+00 -4.452955E-01 -1.021442E+01 -2.118539E+01 -1.021724E+01 -2.119710E+01 -1.333478E+00 -3.684793E-01 -1.003467E+01 -2.079465E+01 -1.003744E+01 -2.080615E+01 -1.146804E+00 -2.835726E-01 -8.301883E+00 -1.399250E+01 -8.302183E+00 -1.399351E+01 -0.000000E+00 -0.000000E+00 -8.110389E+00 -1.372142E+01 -8.110683E+00 -1.372241E+01 -0.000000E+00 -0.000000E+00 -8.072002E+00 -1.358172E+01 -8.072302E+00 -1.358273E+01 -0.000000E+00 -0.000000E+00 -8.422325E+00 -1.429746E+01 -8.422638E+00 -1.429853E+01 -0.000000E+00 -0.000000E+00 -2.385318E+01 -1.146286E+02 -2.385318E+01 -1.146286E+02 -0.000000E+00 -0.000000E+00 -2.629265E+01 -1.401748E+02 -2.629265E+01 -1.401748E+02 -0.000000E+00 -0.000000E+00 -2.779932E+01 -1.561607E+02 -2.779932E+01 -1.561607E+02 -0.000000E+00 -0.000000E+00 -2.828408E+01 -1.615023E+02 -2.828408E+01 -1.615023E+02 -0.000000E+00 -0.000000E+00 +a78b7997b258f01764aebf601ae7107d7286d79269c1adcaa3c5b58d4f78f7b330cda152f415ad7c9b0622c3dc2b60284bfca74febfd35369c2772a87b9c4d44 \ No newline at end of file diff --git a/tests/test_mg_tallies/test_mg_tallies.py b/tests/test_mg_tallies/test_mg_tallies.py index 4e57120bd8..b9bbcb5542 100644 --- a/tests/test_mg_tallies/test_mg_tallies.py +++ b/tests/test_mg_tallies/test_mg_tallies.py @@ -3,14 +3,14 @@ import os import sys sys.path.insert(0, os.pardir) -from testing_harness import TestHarness, PyAPITestHarness +from testing_harness import HashedPyAPITestHarness import openmc -class MGTalliesTestHarness(PyAPITestHarness): +class MGTalliesTestHarness(HashedPyAPITestHarness): def _build_inputs(self): """Write input XML files.""" - self._input_set.build_default_materials_and_geometry(as_macro=True) + self._input_set.build_default_materials_and_geometry(as_macro=False) self._input_set.build_default_settings() # Instantiate a tally mesh @@ -28,43 +28,55 @@ class MGTalliesTestHarness(PyAPITestHarness): mat_ids = [mat.id for mat in self._input_set.materials] mat_filter = openmc.MaterialFilter(mat_ids) + nuclides = [xs.name for xs in self._input_set.xs_data] + + scores= {False: ['total', 'absorption', 'flux', 'fission', 'nu-fission'], + True: ['total', 'absorption', 'fission', 'nu-fission']} + tallies = [] + for do_nuclides in [False, True]: + tallies.append(openmc.Tally()) + tallies[-1].filters = [mesh_filter] + tallies[-1].estimator = 'analog' + tallies[-1].scores = scores[do_nuclides] + if do_nuclides: + tallies[-1].nuclides = nuclides - tallies.append(openmc.Tally()) - tallies[-1].filters = [mesh_filter] - tallies[-1].estimator = 'analog' - tallies[-1].scores = ['total', 'absorption', 'flux', - 'fission', 'nu-fission'] + tallies.append(openmc.Tally()) + tallies[-1].filters = [mesh_filter] + tallies[-1].estimator = 'tracklength' + tallies[-1].scores = scores[do_nuclides] + if do_nuclides: + tallies[-1].nuclides = nuclides - tallies.append(openmc.Tally()) - tallies[-1].filters = [mesh_filter] - tallies[-1].estimator = 'tracklength' - tallies[-1].scores = ['total', 'absorption', 'flux', - 'fission', 'nu-fission'] + tallies.append(openmc.Tally()) + tallies[-1].filters = [mat_filter, energy_filter] + tallies[-1].estimator = 'analog' + tallies[-1].scores = scores[do_nuclides] + ['scatter', + 'nu-scatter'] + if do_nuclides: + tallies[-1].nuclides = nuclides - tallies.append(openmc.Tally()) - tallies[-1].filters = [mat_filter, energy_filter] - tallies[-1].estimator = 'analog' - tallies[-1].scores = ['total', 'absorption', 'flux', - 'fission', 'nu-fission', 'scatter', - 'nu-scatter'] + tallies.append(openmc.Tally()) + tallies[-1].filters = [mat_filter, energy_filter] + tallies[-1].estimator = 'collision' + tallies[-1].scores = scores[do_nuclides] + if do_nuclides: + tallies[-1].nuclides = nuclides - tallies.append(openmc.Tally()) - tallies[-1].filters = [mat_filter, energy_filter] - tallies[-1].estimator = 'collision' - tallies[-1].scores = ['total', 'absorption', 'flux', - 'fission', 'nu-fission'] + tallies.append(openmc.Tally()) + tallies[-1].filters = [mat_filter, energy_filter] + tallies[-1].estimator = 'tracklength' + tallies[-1].scores = scores[do_nuclides] + if do_nuclides: + tallies[-1].nuclides = nuclides - tallies.append(openmc.Tally()) - tallies[-1].filters = [mat_filter, energy_filter] - tallies[-1].estimator = 'tracklength' - tallies[-1].scores = ['total', 'absorption', 'flux', - 'fission', 'nu-fission', 'scatter'] - - tallies.append(openmc.Tally()) - tallies[-1].filters = [mat_filter, energy_filter, - energyout_filter] - tallies[-1].scores = ['scatter', 'nu-scatter', 'nu-fission'] + tallies.append(openmc.Tally()) + tallies[-1].filters = [mat_filter, energy_filter, + energyout_filter] + tallies[-1].scores = ['scatter', 'nu-scatter', 'nu-fission'] + if do_nuclides: + tallies[-1].nuclides = nuclides self._input_set.tallies = openmc.Tallies(tallies) From 6ae0b1b0e668d4c94e4605b3e29dbe8cfcd61c29 Mon Sep 17 00:00:00 2001 From: Adam Nelson Date: Sat, 15 Oct 2016 16:23:10 -0400 Subject: [PATCH 04/10] Grr --- src/tally.F90 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/tally.F90 b/src/tally.F90 index e1c5769d1d..978f26d7ba 100644 --- a/src/tally.F90 +++ b/src/tally.F90 @@ -1867,7 +1867,7 @@ contains if (i_nuclide > 0) then atom_density = -ONE - ! Check to see if this nuclide was in the material of our collision. + ! Check to see if this nuclide was in the material of our collision do m = 1, mat % n_nuclides if (mat % nuclide(m) == i_nuclide) then atom_density = mat % atom_density(m) From fa6a3686605464238be29e6c90318f81af924946 Mon Sep 17 00:00:00 2001 From: Adam Nelson Date: Sat, 15 Oct 2016 16:38:00 -0400 Subject: [PATCH 05/10] Updating example mgxs.h5 file --- examples/xml/pincell_multigroup/mgxs.h5 | Bin 16496 -> 61488 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/examples/xml/pincell_multigroup/mgxs.h5 b/examples/xml/pincell_multigroup/mgxs.h5 index cbe338c1c7de692a9bed69901f1da186bc1d3348..fe93c44bfa6b3766155356e34bdcd31e9fdb6af0 100644 GIT binary patch literal 61488 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 JjV;W?p?}8JPhS84 From aaf9b401691e647c29c9c58a34046254a3e30e7c Mon Sep 17 00:00:00 2001 From: Adam Nelson Date: Sat, 15 Oct 2016 19:46:18 -0400 Subject: [PATCH 06/10] fixing the python2 test error --- tests/input_set.py | 7 ++++--- tests/test_mg_basic/inputs_true.dat | 2 +- tests/test_mg_basic/results_true.dat | 2 +- tests/test_mg_max_order/inputs_true.dat | 2 +- tests/test_mg_max_order/results_true.dat | 2 +- tests/test_mg_nuclide/inputs_true.dat | 2 +- tests/test_mg_nuclide/results_true.dat | 2 +- tests/test_mg_tallies/inputs_true.dat | 2 +- tests/test_mg_tallies/results_true.dat | 2 +- 9 files changed, 12 insertions(+), 11 deletions(-) diff --git a/tests/input_set.py b/tests/input_set.py index e349272144..0d5a78bab9 100644 --- a/tests/input_set.py +++ b/tests/input_set.py @@ -1,8 +1,9 @@ +import numpy as np + import openmc from openmc.source import Source from openmc.stats import Box -import numpy as np class InputSet(object): def __init__(self): @@ -765,9 +766,9 @@ class MGInputSet(InputSet): top = openmc.YPlane(y0=10.0, boundary_type='reflective') # for each material add a plane planes = [openmc.ZPlane(z0=0.0, boundary_type='reflective')] - dz = 5. / float(len(mats)) + dz = round(5. / float(len(mats)), 4) for i in range(len(mats) - 1): - planes.append(openmc.ZPlane(z0=dz * (i + 1))) + planes.append(openmc.ZPlane(z0=dz * float(i + 1))) planes.append(openmc.ZPlane(z0=5.0, boundary_type='reflective')) # Define cells for each material diff --git a/tests/test_mg_basic/inputs_true.dat b/tests/test_mg_basic/inputs_true.dat index 31673c1335..08917ab7db 100644 --- a/tests/test_mg_basic/inputs_true.dat +++ b/tests/test_mg_basic/inputs_true.dat @@ -1 +1 @@ -c657f05432d9668f56e671a463ba08aed47103a33072d3f893146ff24fce6711ec41ba49c7d14a70b076cccb9a526375a4d8c1241e64e8167b8e0e876ae6655c \ No newline at end of file +115218221500e60ea43145875324a9a6800366fcc97357ef4cd8182f9253e114cbe1c7481dd3bdd8d7dce5983e2cb757ae0a2e05ede236d94cba7909703ba7f7 \ No newline at end of file diff --git a/tests/test_mg_basic/results_true.dat b/tests/test_mg_basic/results_true.dat index a367c60266..01b7925469 100644 --- a/tests/test_mg_basic/results_true.dat +++ b/tests/test_mg_basic/results_true.dat @@ -1,2 +1,2 @@ k-combined: -1.034509E+00 4.099331E-02 +1.160653E+00 6.227102E-02 diff --git a/tests/test_mg_max_order/inputs_true.dat b/tests/test_mg_max_order/inputs_true.dat index 375a7fe215..3056e8cbdf 100644 --- a/tests/test_mg_max_order/inputs_true.dat +++ b/tests/test_mg_max_order/inputs_true.dat @@ -1 +1 @@ -b4adeb6b98d1d6310484c6623dde61ccfb02e0b8b9422c60d94cb65e556f3e2744c94cb3661a94aa365964acb463a6bd93cddf2dd954bfc36e316335b4a058f3 \ No newline at end of file +139d760cd83eab001ed3fd52d7146fb5f30b7021b26ada6a1e425f5446185ac6fa61ac2ac58aa9e895981e10540160b7ae7428c833024679ef1ca762715e2d51 \ No newline at end of file diff --git a/tests/test_mg_max_order/results_true.dat b/tests/test_mg_max_order/results_true.dat index 1fa95fb90a..0e470e2cdb 100644 --- a/tests/test_mg_max_order/results_true.dat +++ b/tests/test_mg_max_order/results_true.dat @@ -1,2 +1,2 @@ k-combined: -1.099449E+00 1.956787E-02 +1.098323E+00 1.979833E-02 diff --git a/tests/test_mg_nuclide/inputs_true.dat b/tests/test_mg_nuclide/inputs_true.dat index 5950ad3e49..57aa5d33f0 100644 --- a/tests/test_mg_nuclide/inputs_true.dat +++ b/tests/test_mg_nuclide/inputs_true.dat @@ -1 +1 @@ -130e51d00cd4c00be14b4e722c285ef5725f7f7a25361f48524dc51bb70c0869149adb839199915fe6193273cb957414c073be2a9fda3ed03754967571b73f68 \ No newline at end of file +6d03b988671fe21dfe2a908685536edb3059e5bdda7974ddfa65c7f63cecb7f6b3fce49bc1533ef2787e284121779653cb14a66cfd709258e4b07d8bd7571843 \ No newline at end of file diff --git a/tests/test_mg_nuclide/results_true.dat b/tests/test_mg_nuclide/results_true.dat index a367c60266..01b7925469 100644 --- a/tests/test_mg_nuclide/results_true.dat +++ b/tests/test_mg_nuclide/results_true.dat @@ -1,2 +1,2 @@ k-combined: -1.034509E+00 4.099331E-02 +1.160653E+00 6.227102E-02 diff --git a/tests/test_mg_tallies/inputs_true.dat b/tests/test_mg_tallies/inputs_true.dat index 4b1863929d..6b0ff76b15 100644 --- a/tests/test_mg_tallies/inputs_true.dat +++ b/tests/test_mg_tallies/inputs_true.dat @@ -1 +1 @@ -255e71d921bb67f7f4832d1b217f4d19ea3c6bd96f551f1676e3735bd314986cc5f2be064e98c8f938a3f93c28b94487567d28829b4c0d66f8d2f8f5a776f302 \ No newline at end of file +8c496e13f9456bedcc0789ffdca81913596cca3c7867717ced38c3063b6cdc8949bd204c98723b72c1b456e3fc85fc90e6710482b0c74e5e29283902a5d9ed50 \ No newline at end of file diff --git a/tests/test_mg_tallies/results_true.dat b/tests/test_mg_tallies/results_true.dat index 67e6cf4056..b540d9a492 100644 --- a/tests/test_mg_tallies/results_true.dat +++ b/tests/test_mg_tallies/results_true.dat @@ -1 +1 @@ -a78b7997b258f01764aebf601ae7107d7286d79269c1adcaa3c5b58d4f78f7b330cda152f415ad7c9b0622c3dc2b60284bfca74febfd35369c2772a87b9c4d44 \ No newline at end of file +6ab4a178b642f886eea9fddbdf67a8d6d3e0d1968f06ee52d7fd5ecdc1b4a796398e9b3a8c15ac72fb1a011d13a5fcc59a868781d38fb11787e060bb2e602a7b \ No newline at end of file From e1962bd479dad3330cf261b2273d8a6ae123d6ee Mon Sep 17 00:00:00 2001 From: Qingming He <906459647@qq.com> Date: Fri, 14 Oct 2016 22:52:06 -0400 Subject: [PATCH 07/10] add numpy include dirs --- setup.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) mode change 100644 => 100755 setup.py diff --git a/setup.py b/setup.py old mode 100644 new mode 100755 index 52ffaecf49..da98506d3b --- a/setup.py +++ b/setup.py @@ -1,6 +1,7 @@ #!/usr/bin/env python import glob +import numpy as np try: from setuptools import setup have_setuptools = True @@ -57,7 +58,8 @@ if have_setuptools: # If Cython is present, add resonance reconstruction capability if have_cython: kwargs.update({ - 'ext_modules': cythonize('openmc/data/reconstruct.pyx') + 'ext_modules': cythonize('openmc/data/reconstruct.pyx'), + 'include_dirs': [np.get_include()] }) setup(**kwargs) From 22df8cfe417d7cfe88361bd4cac75c315798f09e Mon Sep 17 00:00:00 2001 From: Adam Nelson Date: Tue, 18 Oct 2016 05:23:50 -0400 Subject: [PATCH 08/10] Incorporated @paulromano comments --- docs/source/io_formats/mgxs_library.rst | 2 +- openmc/mesh.py | 4 ++-- openmc/mgxs/library.py | 2 +- openmc/mgxs_library.py | 9 +++------ 4 files changed, 7 insertions(+), 10 deletions(-) diff --git a/docs/source/io_formats/mgxs_library.rst b/docs/source/io_formats/mgxs_library.rst index 2a1e63d435..4e5ea21969 100644 --- a/docs/source/io_formats/mgxs_library.rst +++ b/docs/source/io_formats/mgxs_library.rst @@ -9,7 +9,7 @@ nuclear data is available. In continuous-energy mode, the ``cross_sections.xml`` file contains necessary meta-data for each dataset, including the name and a file system location where the complete library can be found. In multi-group mode, the multi-group meta-data and the -nuclear data itself is contained within an ``mgxs.h5``. This portion of +nuclear data itself is contained within an ``mgxs.h5`` file. This portion of the manual describes the format of the multi-group data library required to be used in the ``mgxs.h5`` file. diff --git a/openmc/mesh.py b/openmc/mesh.py index 014cbc4679..21144469f1 100644 --- a/openmc/mesh.py +++ b/openmc/mesh.py @@ -286,8 +286,8 @@ class Mesh(object): openmc.XPlane(x0=self.upper_right[0], boundary_type=bc[1])] if len(self.dimension) == 1: - yplanes = [openmc.YPlane(y0=1000., boundary_type='reflective'), - openmc.YPlane(y0=1000., boundary_type='reflective')] + yplanes = [openmc.YPlane(y0=-1e10, boundary_type='reflective'), + openmc.YPlane(y0=1e10, boundary_type='reflective')] else: yplanes = [openmc.YPlane(y0=self.lower_left[1], boundary_type=bc[2]), diff --git a/openmc/mgxs/library.py b/openmc/mgxs/library.py index c03aa78771..eb07e80976 100644 --- a/openmc/mgxs/library.py +++ b/openmc/mgxs/library.py @@ -1283,7 +1283,7 @@ class Library(object): ('nu-transport' not in self.mgxs_types))): error_flag = True warn('A "nu-transport" MGXS type is required since a "P0" ' - 'correction is applied, but a "nu-transport" MGXS == ' + 'correction is applied, but a "nu-transport" MGXS is ' 'not provided.') elif (((self.correction is None) and ('total' not in self.mgxs_types))): diff --git a/openmc/mgxs_library.py b/openmc/mgxs_library.py index 35dff1223a..b62c3ac83f 100644 --- a/openmc/mgxs_library.py +++ b/openmc/mgxs_library.py @@ -1135,19 +1135,16 @@ class XSdata(object): if self.fissionable is not None: grp.attrs['fissionable'] = self.fissionable if self.representation is not None: - grp.attrs['representation'] = np.array(self.representation, - dtype='S') + grp.attrs['representation'] = np.string_(self.representation) if self.representation == 'angle': if self.num_azimuthal is not None: grp.attrs['num_azimuthal'] = self.num_azimuthal if self.num_polar is not None: grp.attrs['num_polar'] = self.num_polar if self.scatter_format is not None: - grp.attrs['scatter_format'] = np.array(self.scatter_format, - dtype='S') + grp.attrs['scatter_format'] = np.string_(self.scatter_format) if self.scatter_shape is not None: - grp.attrs['scatter_shape'] = np.array(self.scatter_shape, - dtype='S') + grp.attrs['scatter_shape'] = np.string_(self.scatter_shape) if self.order is not None: grp.attrs['order'] = self.order From 6234ef5693fd2bca98eff2546f54d4225b931054 Mon Sep 17 00:00:00 2001 From: Sam Shaner Date: Tue, 18 Oct 2016 08:03:26 -0400 Subject: [PATCH 09/10] updated setup.py to version in develop --- setup.py | 4 ---- 1 file changed, 4 deletions(-) diff --git a/setup.py b/setup.py index 9dceb1cbf7..da98506d3b 100755 --- a/setup.py +++ b/setup.py @@ -61,9 +61,5 @@ if have_cython: 'ext_modules': cythonize('openmc/data/reconstruct.pyx'), 'include_dirs': [np.get_include()] }) - import numpy as np - kwargs.update({ - 'include_dirs': [np.get_include()] - }) setup(**kwargs) From f7c3f80504553bf5a0ce563d4fd3e5a74a1bc440 Mon Sep 17 00:00:00 2001 From: Sam Shaner Date: Tue, 18 Oct 2016 08:11:19 -0400 Subject: [PATCH 10/10] updated results to mg tests --- tests/test_mg_basic/results_true.dat | 2 +- tests/test_mg_max_order/results_true.dat | 2 +- tests/test_mg_nuclide/results_true.dat | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/tests/test_mg_basic/results_true.dat b/tests/test_mg_basic/results_true.dat index 01b7925469..5178ade21d 100644 --- a/tests/test_mg_basic/results_true.dat +++ b/tests/test_mg_basic/results_true.dat @@ -1,2 +1,2 @@ k-combined: -1.160653E+00 6.227102E-02 +5.788739E-01 1.945182E-02 diff --git a/tests/test_mg_max_order/results_true.dat b/tests/test_mg_max_order/results_true.dat index 0e470e2cdb..2189587d4f 100644 --- a/tests/test_mg_max_order/results_true.dat +++ b/tests/test_mg_max_order/results_true.dat @@ -1,2 +1,2 @@ k-combined: -1.098323E+00 1.979833E-02 +1.077247E+00 2.412834E-02 diff --git a/tests/test_mg_nuclide/results_true.dat b/tests/test_mg_nuclide/results_true.dat index 01b7925469..5178ade21d 100644 --- a/tests/test_mg_nuclide/results_true.dat +++ b/tests/test_mg_nuclide/results_true.dat @@ -1,2 +1,2 @@ k-combined: -1.160653E+00 6.227102E-02 +5.788739E-01 1.945182E-02