diff --git a/.travis.yml b/.travis.yml index 173af7602..845c10390 100644 --- a/.travis.yml +++ b/.travis.yml @@ -42,7 +42,7 @@ install: true before_script: - if [[ ! -e $HOME/nndc_hdf5/cross_sections.xml ]]; then - wget https://anl.box.com/shared/static/dqkwdl7o4lauo91h3mgrn9qno6a3c8mp.xz -O - | tar -C $HOME -xvJ; + wget https://anl.box.com/shared/static/68b2yhu8e6mx1f6hnbzz9mxsgg42d9ls.xz -O - | tar -C $HOME -xvJ; fi - export OPENMC_CROSS_SECTIONS=$HOME/nndc_hdf5/cross_sections.xml diff --git a/docs/source/io_formats/nuclear_data.rst b/docs/source/io_formats/nuclear_data.rst index 7ad80b2fc..060e96c0c 100644 --- a/docs/source/io_formats/nuclear_data.rst +++ b/docs/source/io_formats/nuclear_data.rst @@ -16,29 +16,53 @@ Incident Neutron Data - **metastable** (*int*) -- Metastable state (0=ground, 1=first excited, etc.) - **atomic_weight_ratio** (*double*) -- Mass in units of neutron masses - - **temperature** (*double*) -- Temperature in MeV - **n_reaction** (*int*) -- Number of reactions :Datasets: - **energy** (*double[]*) -- Energy points at which cross sections are tabulated +**//kTs/** + +K is the temperature in Kelvin, rounded to the nearest integer, of the +temperature-dependent data set. For example, the data set corresponding to +300 Kelvin would be located at `300K`. + +:Datasets: + - **K** (*double*) -- kT values (in MeV) for each Temperature + TTT (in Kelvin) + **//reactions/reaction_/** :Attributes: - **mt** (*int*) -- ENDF MT reaction number - **label** (*char[]*) -- Name of the reaction - **Q_value** (*double*) -- Q value in MeV - - **threshold_idx** (*int*) -- Index on the energy grid that the - reaction threshold corresponds to - **center_of_mass** (*int*) -- Whether the reference frame for scattering is center-of-mass (1) or laboratory (0) - **n_product** (*int*) -- Number of reaction products -:Datasets: - **xs** (*double[]*) -- Cross section values tabulated against the nuclide energy grid +**//reactions/reaction_/K/** + +K is the temperature in Kelvin, rounded to the nearest integer, of the +temperature-dependent data set. For example, the data set corresponding to +300 Kelvin would be located at `300K`. + +:Datasets: + - **xs** (*double[]*) -- Cross section values tabulated against the + nuclide energy grid for temperature TTT (in Kelvin) + + :Attributes: + - **threshold_idx** (*int*) -- Index on the energy + grid that the reaction threshold corresponds to for + temperature TTT (in Kelvin) **//reactions/reaction_/product_/** Reaction product data is described in :ref:`product`. -**//urr** +**//urr/K/** + +K is the temperature in Kelvin, rounded to the nearest integer, of the +temperature-dependent data set. For example, the data set corresponding to +300 Kelvin would be located at `300K`. :Attributes: - **interpolation** (*int*) -- interpolation scheme - **inelastic** (*int*) -- flag indicating inelastic scattering @@ -92,32 +116,48 @@ Thermal Neutron Scattering Data **//** :Attributes: - **atomic_weight_ratio** (*double*) -- Mass in units of neutron masses - - **temperature** (*double*) -- Temperature in MeV - - **zaids** (*int[]*) -- ZAID identifiers for which the thermal + - **nuclides** (*char[][]*) -- Names of nuclides for which the thermal scattering data applies to - -**//elastic/** - -:Datasets: - **xs** (:ref:`tabulated <1d_tabulated>`) -- Thermal inelastic - scattering cross section - - **mu_out** (*double[][]*) -- Distribution of outgoing energies - and angles for coherent elastic scattering - -**//inelastic/** - -:Attributes: - **secondary_mode** (*char[]*) -- Indicates how the inelastic outgoing angle-energy distributions are represented ('equal', 'skewed', or 'continuous'). +**//kTs/** + +K is the temperature in Kelvin, rounded to the nearest integer, of the +temperature-dependent data set. For example, the data set corresponding to +300 Kelvin would be located at `300K`. + +:Datasets: + - **K** (*double*) -- kT values (in MeV) for each Temperature + TTT (in Kelvin) + +**//elastic/K/** + +K is the temperature in Kelvin, rounded to the nearest integer, of the +temperature-dependent data set. For example, the data set corresponding to +300 Kelvin would be located at `300K`. + :Datasets: - **xs** (:ref:`tabulated <1d_tabulated>`) -- Thermal inelastic - scattering cross section + scattering cross section for temperature TTT (in Kelvin) + - **mu_out** (*double[][]*) -- Distribution of outgoing energies + and angles for coherent elastic scattering for temperature TTT + (in Kelvin) + +**//inelastic/K/** + +K is the temperature in Kelvin, rounded to the nearest integer, of the +temperature-dependent data set. For example, the data set corresponding to +300 Kelvin would be located at `300K`. + +:Datasets: - **xs** (:ref:`tabulated <1d_tabulated>`) -- Thermal inelastic + scattering cross section for temperature TTT (in Kelvin) - **energy_out** (*double[][]*) -- Distribution of outgoing - energies for each incoming energy. Only present if secondary mode - is not continuous. + energies for each incoming energy for temperature TTT (in Kelvin). + Only present if secondary mode is not continuous. - **mu_out** (*double[][][]*) -- Distribution of scattering cosines - for each pair of incoming and outgoing energies. Only present if - secondary mode is not continuous. + for each pair of incoming and outgoing energies. for temperature + TTT (in Kelvin). Only present if secondary mode is not continuous. If the secondary mode is continuous, the outgoing energy-angle distribution is given as a :ref:`correlated angle-energy distribution diff --git a/docs/source/methods/cross_sections.rst b/docs/source/methods/cross_sections.rst index 4ed777536..a4d0f7d24 100644 --- a/docs/source/methods/cross_sections.rst +++ b/docs/source/methods/cross_sections.rst @@ -53,12 +53,12 @@ speed up the calculation. Logarithmic Mapping +++++++++++++++++++ -To speed up energy grid searches, OpenMC uses logarithmic mapping technique -[Brown]_ to limit the range of energies that must be searched for each -nuclide. The entire energy range is divided up into equal-lethargy segments, and -the bounding energies of each segment are mapped to bounding indices on each of -the nuclide energy grids. By default, OpenMC uses 8000 equal-lethargy segments -as recommended by Brown. +To speed up energy grid searches, OpenMC uses a `logarithmic mapping technique`_ +to limit the range of energies that must be searched for each nuclide. The +entire energy range is divided up into equal-lethargy segments, and the bounding +energies of each segment are mapped to bounding indices on each of the nuclide +energy grids. By default, OpenMC uses 8000 equal-lethargy segments as +recommended by Brown. Other Methods +++++++++++++ @@ -74,9 +74,9 @@ offers support for an experimental data format called windowed multipole (WMP). This data format requires less memory than pointwise cross sections, and it allows on-the-fly Doppler broadening to arbitrary temperature. -The multipole method was introduced by [Hwang]_ and the faster windowed -multipole method by [Josey]_. In the multipole format, cross section resonances -are represented by poles, :math:`p_j`, and residues, :math:`r_j`, in the complex +The multipole method was introduced by Hwang_ and the faster windowed multipole +method by Josey_. In the multipole format, cross section resonances are +represented by poles, :math:`p_j`, and residues, :math:`r_j`, in the complex plane. The 0K cross sections in the resolved resonance region can be computed by summing up a contribution from each pole: @@ -232,21 +232,10 @@ sections. This allows flexibility for the model to use highly anisotropic scattering information in the water while the fuel can be simulated with linear or even isotropic scattering. -.. only:: html - - .. rubric:: References - -.. [Brown] Forrest B. Brown, "New Hash-based Energy Lookup Algorithm for Monte - Carlo codes," LA-UR-14-24530, Los Alamos National Laboratory (2014). - -.. [Hwang] R. N. Hwang, "A Rigorous Pole Representation of Multilevel Cross - Sections and Its Practical Application," *Nucl. Sci. Eng.*, **96**, - 192-209 (1987). - -.. [Josey] Colin Josey, Pablo Ducru, Benoit Forget, and Kord Smith, "Windowed - Multipole for Cross Section Doppler Broadening," *J. Comp. Phys*, - **307**, 715-727 (2016). http://dx.doi.org/10.1016/j.jcp.2015.08.013 - +.. _logarithmic mapping technique: + https://laws.lanl.gov/vhosts/mcnp.lanl.gov/pdf_files/la-ur-14-24530.pdf +.. _Hwang: http://www.ans.org/pubs/journals/nse/a_16381 +.. _Josey: http://dx.doi.org/10.1016/j.jcp.2015.08.013 .. _MCNP: http://mcnp.lanl.gov .. _Serpent: http://montecarlo.vtt.fi .. _NJOY: http://t2.lanl.gov/codes.shtml diff --git a/docs/source/pythonapi/examples/mgxs-part-i.ipynb b/docs/source/pythonapi/examples/mgxs-part-i.ipynb index 7c5132100..4477e323d 100644 --- a/docs/source/pythonapi/examples/mgxs-part-i.ipynb +++ b/docs/source/pythonapi/examples/mgxs-part-i.ipynb @@ -214,7 +214,6 @@ "source": [ "# Instantiate a Materials collection and export to XML\n", "materials_file = openmc.Materials([inf_medium])\n", - "materials_file.default_xs = '71c'\n", "materials_file.export_to_xml()" ] }, @@ -499,23 +498,37 @@ "output_type": "stream", "text": [ "\n", - " .d88888b. 888b d888 .d8888b.\n", - " d88P\" \"Y88b 8888b d8888 d88P Y88b\n", - " 888 888 88888b.d88888 888 888\n", - " 888 888 88888b. .d88b. 88888b. 888Y88888P888 888 \n", - " 888 888 888 \"88b d8P Y8b 888 \"88b 888 Y888P 888 888 \n", - " 888 888 888 888 88888888 888 888 888 Y8P 888 888 888\n", - " Y88b. .d88P 888 d88P Y8b. 888 888 888 \" 888 Y88b d88P\n", - " \"Y88888P\" 88888P\" \"Y8888 888 888 888 888 \"Y8888P\"\n", - "__________________888______________________________________________________\n", - " 888\n", - " 888\n", + " %%%%%%%%%%%%%%%\n", + " %%%%%%%%%%%%%%%%%%%%%%%%\n", + " %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\n", + " %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\n", + " %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\n", + " %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\n", + " %%%%%%%%%%%%%%%%%%%%%%%%\n", + " %%%%%%%%%%%%%%%%%%%%%%%%\n", + " ############### %%%%%%%%%%%%%%%%%%%%%%%%\n", + " ################## %%%%%%%%%%%%%%%%%%%%%%%\n", + " ################### %%%%%%%%%%%%%%%%%%%%%%%\n", + " #################### %%%%%%%%%%%%%%%%%%%%%%\n", + " ##################### %%%%%%%%%%%%%%%%%%%%%\n", + " ###################### %%%%%%%%%%%%%%%%%%%%\n", + " ####################### %%%%%%%%%%%%%%%%%%\n", + " ####################### %%%%%%%%%%%%%%%%%\n", + " ###################### %%%%%%%%%%%%%%%%%\n", + " #################### %%%%%%%%%%%%%%%%%\n", + " ################# %%%%%%%%%%%%%%%%%\n", + " ############### %%%%%%%%%%%%%%%%\n", + " ############ %%%%%%%%%%%%%%%\n", + " ######## %%%%%%%%%%%%%%\n", + " %%%%%%%%%%%\n", "\n", - " Copyright: 2011-2016 Massachusetts Institute of Technology\n", - " License: http://openmc.readthedocs.io/en/latest/license.html\n", - " Version: 0.7.1\n", - " Git SHA1: 3d68c07625e33cd64188df03ee03e9c31b3d4b74\n", - " Date/Time: 2016-07-22 21:03:18\n", + " | The OpenMC Monte Carlo Code\n", + " Copyright | 2011-2016 Massachusetts Institute of Technology\n", + " License | http://openmc.readthedocs.io/en/latest/license.html\n", + " Version | 0.8.0\n", + " Git SHA1 | fbebf7bf709fe2fe1813af95bff9b29c0d59312c\n", + " Date/Time | 2016-08-31 10:40:13\n", + " OpenMP Threads | 4\n", "\n", " ===========================================================================\n", " ========================> INITIALIZATION <=========================\n", @@ -525,12 +538,12 @@ " Reading geometry XML file...\n", " Reading cross sections XML file...\n", " Reading materials XML file...\n", - " Reading H1.71c from /home/romano/openmc/data/nndc_hdf5/H1_71c.h5\n", - " Reading O16.71c from /home/romano/openmc/data/nndc_hdf5/O16_71c.h5\n", - " Reading U235.71c from /home/romano/openmc/data/nndc_hdf5/U235_71c.h5\n", - " Reading U238.71c from /home/romano/openmc/data/nndc_hdf5/U238_71c.h5\n", - " Reading Zr90.71c from /home/romano/openmc/data/nndc_hdf5/Zr90_71c.h5\n", - " Maximum neutron transport energy: 20.0000 MeV for H1.71c\n", + " Reading H1 from /home/romano/openmc/data/nndc_hdf5/H1.h5\n", + " Reading O16 from /home/romano/openmc/data/nndc_hdf5/O16.h5\n", + " Reading U235 from /home/romano/openmc/data/nndc_hdf5/U235.h5\n", + " Reading U238 from /home/romano/openmc/data/nndc_hdf5/U238.h5\n", + " Reading Zr90 from /home/romano/openmc/data/nndc_hdf5/Zr90.h5\n", + " Maximum neutron transport energy: 20.0000 MeV for H1\n", " Reading tallies XML file...\n", " Building neighboring cells lists for each surface...\n", " Initializing source particles...\n", @@ -600,20 +613,20 @@ "\n", " =======================> TIMING STATISTICS <=======================\n", "\n", - " Total time for initialization = 3.2300E-01 seconds\n", - " Reading cross sections = 1.6900E-01 seconds\n", - " Total time in simulation = 1.9882E+01 seconds\n", - " Time in transport only = 1.9869E+01 seconds\n", - " Time in inactive batches = 2.6590E+00 seconds\n", - " Time in active batches = 1.7223E+01 seconds\n", + " Total time for initialization = 3.9900E-01 seconds\n", + " Reading cross sections = 2.6500E-01 seconds\n", + " Total time in simulation = 1.1488E+01 seconds\n", + " Time in transport only = 1.1152E+01 seconds\n", + " Time in inactive batches = 1.2180E+00 seconds\n", + " Time in active batches = 1.0270E+01 seconds\n", " Time synchronizing fission bank = 4.0000E-03 seconds\n", - " Sampling source sites = 4.0000E-03 seconds\n", - " SEND/RECV source sites = 0.0000E+00 seconds\n", + " Sampling source sites = 3.0000E-03 seconds\n", + " SEND/RECV source sites = 1.0000E-03 seconds\n", " Time accumulating tallies = 0.0000E+00 seconds\n", - " Total time for finalization = 0.0000E+00 seconds\n", - " Total time elapsed = 2.0217E+01 seconds\n", - " Calculation Rate (inactive) = 9402.03 neutrons/second\n", - " Calculation Rate (active) = 5806.19 neutrons/second\n", + " Total time for finalization = 1.0000E-03 seconds\n", + " Total time elapsed = 1.1901E+01 seconds\n", + " Calculation Rate (inactive) = 20525.5 neutrons/second\n", + " Calculation Rate (active) = 9737.10 neutrons/second\n", "\n", " ============================> RESULTS <============================\n", "\n", @@ -894,7 +907,7 @@ " 6.250000e-07\n", " total\n", " (((total / flux) - (absorption / flux)) - (sca...\n", - " -3.774758e-15\n", + " -2.886580e-15\n", " 0.011292\n", " \n", " \n", @@ -904,7 +917,7 @@ " 2.000000e+01\n", " total\n", " (((total / flux) - (absorption / flux)) - (sca...\n", - " 1.443290e-15\n", + " -5.551115e-16\n", " 0.002570\n", " \n", " \n", @@ -917,8 +930,8 @@ "1 1 6.25e-07 2.00e+01 total \n", "\n", " score mean std. dev. \n", - "0 (((total / flux) - (absorption / flux)) - (sca... -3.77e-15 1.13e-02 \n", - "1 (((total / flux) - (absorption / flux)) - (sca... 1.44e-15 2.57e-03 " + "0 (((total / flux) - (absorption / flux)) - (sca... -2.89e-15 1.13e-02 \n", + "1 (((total / flux) - (absorption / flux)) - (sca... -5.55e-16 2.57e-03 " ] }, "execution_count": 22, @@ -1167,21 +1180,21 @@ ], "metadata": { "kernelspec": { - "display_name": "Python 2", + "display_name": "Python 3", "language": "python", - "name": "python2" + "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", - "version": 2 + "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", - "pygments_lexer": "ipython2", - "version": "2.7.11" + "pygments_lexer": "ipython3", + "version": "3.5.2" } }, "nbformat": 4, diff --git a/docs/source/pythonapi/examples/mgxs-part-ii.ipynb b/docs/source/pythonapi/examples/mgxs-part-ii.ipynb index ca4832809..341969fbd 100644 --- a/docs/source/pythonapi/examples/mgxs-part-ii.ipynb +++ b/docs/source/pythonapi/examples/mgxs-part-ii.ipynb @@ -34,9 +34,7 @@ "name": "stderr", "output_type": "stream", "text": [ - "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/matplotlib/__init__.py:878: UserWarning: axes.color_cycle is deprecated and replaced with axes.prop_cycle; please use the latter.\n", - " warnings.warn(self.msg_depr % (key, alt_key))\n", - "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/matplotlib/__init__.py:1357: UserWarning: This call to matplotlib.use() has no effect\n", + "/home/romano/miniconda3/envs/default/lib/python3.5/site-packages/matplotlib/__init__.py:1350: UserWarning: This call to matplotlib.use() has no effect\n", "because the backend has already been chosen;\n", "matplotlib.use() must be called *before* pylab, matplotlib.pyplot,\n", "or matplotlib.backends is imported for the first time.\n", @@ -134,7 +132,6 @@ "source": [ "# Instantiate a Materials collection\n", "materials_file = openmc.Materials((fuel, water, zircaloy))\n", - "materials_file.default_xs = '71c'\n", "\n", "# Export to \"materials.xml\"\n", "materials_file.export_to_xml()" @@ -428,24 +425,37 @@ "output_type": "stream", "text": [ "\n", - " .d88888b. 888b d888 .d8888b.\n", - " d88P\" \"Y88b 8888b d8888 d88P Y88b\n", - " 888 888 88888b.d88888 888 888\n", - " 888 888 88888b. .d88b. 88888b. 888Y88888P888 888 \n", - " 888 888 888 \"88b d8P Y8b 888 \"88b 888 Y888P 888 888 \n", - " 888 888 888 888 88888888 888 888 888 Y8P 888 888 888\n", - " Y88b. .d88P 888 d88P Y8b. 888 888 888 \" 888 Y88b d88P\n", - " \"Y88888P\" 88888P\" \"Y8888 888 888 888 888 \"Y8888P\"\n", - "__________________888______________________________________________________\n", - " 888\n", - " 888\n", + " %%%%%%%%%%%%%%%\n", + " %%%%%%%%%%%%%%%%%%%%%%%%\n", + " %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\n", + " %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\n", + " %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\n", + " %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\n", + " %%%%%%%%%%%%%%%%%%%%%%%%\n", + " %%%%%%%%%%%%%%%%%%%%%%%%\n", + " ############### %%%%%%%%%%%%%%%%%%%%%%%%\n", + " ################## %%%%%%%%%%%%%%%%%%%%%%%\n", + " ################### %%%%%%%%%%%%%%%%%%%%%%%\n", + " #################### %%%%%%%%%%%%%%%%%%%%%%\n", + " ##################### %%%%%%%%%%%%%%%%%%%%%\n", + " ###################### %%%%%%%%%%%%%%%%%%%%\n", + " ####################### %%%%%%%%%%%%%%%%%%\n", + " ####################### %%%%%%%%%%%%%%%%%\n", + " ###################### %%%%%%%%%%%%%%%%%\n", + " #################### %%%%%%%%%%%%%%%%%\n", + " ################# %%%%%%%%%%%%%%%%%\n", + " ############### %%%%%%%%%%%%%%%%\n", + " ############ %%%%%%%%%%%%%%%\n", + " ######## %%%%%%%%%%%%%%\n", + " %%%%%%%%%%%\n", "\n", - " Copyright: 2011-2016 Massachusetts Institute of Technology\n", - " License: http://openmc.readthedocs.io/en/latest/license.html\n", - " Version: 0.8.0\n", - " Git SHA1: be7e6e035d22944a8c80ca32f99935b6822854c9\n", - " Date/Time: 2016-08-10 15:31:07\n", - " MPI Processes: 1\n", + " | The OpenMC Monte Carlo Code\n", + " Copyright | 2011-2016 Massachusetts Institute of Technology\n", + " License | http://openmc.readthedocs.io/en/latest/license.html\n", + " Version | 0.8.0\n", + " Git SHA1 | fbebf7bf709fe2fe1813af95bff9b29c0d59312c\n", + " Date/Time | 2016-08-31 10:55:07\n", + " OpenMP Threads | 4\n", "\n", " ===========================================================================\n", " ========================> INITIALIZATION <=========================\n", @@ -455,12 +465,12 @@ " Reading geometry XML file...\n", " Reading cross sections XML file...\n", " Reading materials XML file...\n", - " Reading U235.71c from /Users/sam/git/openmc-sam/data/nndc_hdf5/U235_71c.h5\n", - " Reading U238.71c from /Users/sam/git/openmc-sam/data/nndc_hdf5/U238_71c.h5\n", - " Reading O16.71c from /Users/sam/git/openmc-sam/data/nndc_hdf5/O16_71c.h5\n", - " Reading H1.71c from /Users/sam/git/openmc-sam/data/nndc_hdf5/H1_71c.h5\n", - " Reading Zr90.71c from /Users/sam/git/openmc-sam/data/nndc_hdf5/Zr90_71c.h5\n", - " Maximum neutron transport energy: 20.0000 MeV for U235.71c\n", + " Reading U235 from /home/romano/openmc/data/nndc_hdf5/U235.h5\n", + " Reading U238 from /home/romano/openmc/data/nndc_hdf5/U238.h5\n", + " Reading O16 from /home/romano/openmc/data/nndc_hdf5/O16.h5\n", + " Reading H1 from /home/romano/openmc/data/nndc_hdf5/H1.h5\n", + " Reading Zr90 from /home/romano/openmc/data/nndc_hdf5/Zr90.h5\n", + " Maximum neutron transport energy: 20.0000 MeV for U235\n", " Reading tallies XML file...\n", " Building neighboring cells lists for each surface...\n", " Initializing source particles...\n", @@ -521,7 +531,7 @@ " 48/1 1.21610 1.22612 +/- 0.00251\n", " 49/1 1.22199 1.22602 +/- 0.00245\n", " 50/1 1.20860 1.22558 +/- 0.00243\n", - " Triggers unsatisfied, max unc./thresh. is 1.25496 for flux in tally 10052\n", + " Triggers unsatisfied, max unc./thresh. is 1.25496 for flux in tally 10057\n", " The estimated number of batches is 73\n", " Creating state point statepoint.050.h5...\n", " 51/1 1.21850 1.22541 +/- 0.00237\n", @@ -547,7 +557,7 @@ " 71/1 1.19720 1.22444 +/- 0.00195\n", " 72/1 1.23770 1.22465 +/- 0.00193\n", " 73/1 1.23894 1.22488 +/- 0.00191\n", - " Triggers unsatisfied, max unc./thresh. is 1.00243 for flux in tally 10052\n", + " Triggers unsatisfied, max unc./thresh. is 1.00243 for flux in tally 10057\n", " The estimated number of batches is 74\n", " 74/1 1.22437 1.22487 +/- 0.00188\n", " Triggers satisfied for batch 74\n", @@ -560,20 +570,20 @@ "\n", " =======================> TIMING STATISTICS <=======================\n", "\n", - " Total time for initialization = 4.0400E-01 seconds\n", - " Reading cross sections = 2.1100E-01 seconds\n", - " Total time in simulation = 2.8243E+02 seconds\n", - " Time in transport only = 2.8236E+02 seconds\n", - " Time in inactive batches = 1.8781E+01 seconds\n", - " Time in active batches = 2.6365E+02 seconds\n", - " Time synchronizing fission bank = 2.7000E-02 seconds\n", - " Sampling source sites = 1.7000E-02 seconds\n", + " Total time for initialization = 4.0300E-01 seconds\n", + " Reading cross sections = 2.6000E-01 seconds\n", + " Total time in simulation = 1.3275E+02 seconds\n", + " Time in transport only = 1.3260E+02 seconds\n", + " Time in inactive batches = 8.2130E+00 seconds\n", + " Time in active batches = 1.2454E+02 seconds\n", + " Time synchronizing fission bank = 3.0000E-02 seconds\n", + " Sampling source sites = 2.2000E-02 seconds\n", " SEND/RECV source sites = 8.0000E-03 seconds\n", - " Time accumulating tallies = 2.0000E-03 seconds\n", - " Total time for finalization = 2.4000E-02 seconds\n", - " Total time elapsed = 2.8293E+02 seconds\n", - " Calculation Rate (inactive) = 5324.53 neutrons/second\n", - " Calculation Rate (active) = 1517.17 neutrons/second\n", + " Time accumulating tallies = 3.0000E-03 seconds\n", + " Total time for finalization = 1.5000E-02 seconds\n", + " Total time elapsed = 1.3324E+02 seconds\n", + " Calculation Rate (inactive) = 12175.8 neutrons/second\n", + " Calculation Rate (active) = 3211.92 neutrons/second\n", "\n", " ============================> RESULTS <============================\n", "\n", @@ -772,14 +782,6 @@ "collapsed": false }, "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/numpy/lib/shape_base.py:873: VisibleDeprecationWarning: using a non-integer number instead of an integer will result in an error in the future\n", - " return c.reshape(shape_out)\n" - ] - }, { "data": { "text/html": [ @@ -1170,239 +1172,169 @@ "text": [ "[ NORMAL ] Importing ray tracing data from file...\n", "[ NORMAL ] Computing the eigenvalue...\n", - "[ NORMAL ] Iteration 0:\tk_eff = 0.423123\tres = 0.000E+00\n", - "[ NORMAL ] Iteration 1:\tk_eff = 0.475921\tres = 5.769E-01\n", - "[ NORMAL ] Iteration 2:\tk_eff = 0.491443\tres = 1.248E-01\n", - "[ NORMAL ] Iteration 3:\tk_eff = 0.487441\tres = 3.261E-02\n", - "[ NORMAL ] Iteration 4:\tk_eff = 0.483949\tres = 8.144E-03\n", - "[ NORMAL ] Iteration 5:\tk_eff = 0.477326\tres = 7.164E-03\n", - "[ NORMAL ] Iteration 6:\tk_eff = 0.469012\tres = 1.369E-02\n", - "[ NORMAL ] Iteration 7:\tk_eff = 0.460422\tres = 1.742E-02\n", - "[ NORMAL ] Iteration 8:\tk_eff = 0.450721\tres = 1.832E-02\n", - "[ NORMAL ] Iteration 9:\tk_eff = 0.441532\tres = 2.107E-02\n", - "[ NORMAL ] Iteration 10:\tk_eff = 0.432168\tres = 2.039E-02\n", - "[ NORMAL ] Iteration 11:\tk_eff = 0.423131\tres = 2.121E-02\n", - "[ NORMAL ] Iteration 12:\tk_eff = 0.414705\tres = 2.091E-02\n", - "[ NORMAL ] Iteration 13:\tk_eff = 0.406942\tres = 1.991E-02\n", - "[ NORMAL ] Iteration 14:\tk_eff = 0.399627\tres = 1.872E-02\n", - "[ NORMAL ] Iteration 15:\tk_eff = 0.393329\tres = 1.798E-02\n", - "[ NORMAL ] Iteration 16:\tk_eff = 0.387699\tres = 1.576E-02\n", - "[ NORMAL ] Iteration 17:\tk_eff = 0.382948\tres = 1.431E-02\n", - "[ NORMAL ] Iteration 18:\tk_eff = 0.379028\tres = 1.225E-02\n", - "[ NORMAL ] Iteration 19:\tk_eff = 0.375934\tres = 1.024E-02\n", - "[ NORMAL ] Iteration 20:\tk_eff = 0.373784\tres = 8.161E-03\n", - "[ NORMAL ] Iteration 21:\tk_eff = 0.372654\tres = 5.719E-03\n", - "[ NORMAL ] Iteration 22:\tk_eff = 0.372273\tres = 3.023E-03\n", - "[ NORMAL ] Iteration 23:\tk_eff = 0.372879\tres = 1.024E-03\n", - "[ NORMAL ] Iteration 24:\tk_eff = 0.374353\tres = 1.629E-03\n", - "[ NORMAL ] Iteration 25:\tk_eff = 0.376678\tres = 3.951E-03\n", - "[ NORMAL ] Iteration 26:\tk_eff = 0.379854\tres = 6.212E-03\n", - "[ NORMAL ] Iteration 27:\tk_eff = 0.383870\tres = 8.432E-03\n", - "[ NORMAL ] Iteration 28:\tk_eff = 0.388663\tres = 1.057E-02\n", - "[ NORMAL ] Iteration 29:\tk_eff = 0.394216\tres = 1.249E-02\n", - "[ NORMAL ] Iteration 30:\tk_eff = 0.400506\tres = 1.429E-02\n", - "[ NORMAL ] Iteration 31:\tk_eff = 0.407501\tres = 1.596E-02\n", - "[ NORMAL ] Iteration 32:\tk_eff = 0.415145\tres = 1.747E-02\n", - "[ NORMAL ] Iteration 33:\tk_eff = 0.423426\tres = 1.876E-02\n", - "[ NORMAL ] Iteration 34:\tk_eff = 0.432299\tres = 1.995E-02\n", - "[ NORMAL ] Iteration 35:\tk_eff = 0.441713\tres = 2.095E-02\n", - "[ NORMAL ] Iteration 36:\tk_eff = 0.451665\tres = 2.178E-02\n", - "[ NORMAL ] Iteration 37:\tk_eff = 0.462081\tres = 2.253E-02\n", - "[ NORMAL ] Iteration 38:\tk_eff = 0.472951\tres = 2.306E-02\n", - "[ NORMAL ] Iteration 39:\tk_eff = 0.484220\tres = 2.352E-02\n", - "[ NORMAL ] Iteration 40:\tk_eff = 0.495861\tres = 2.383E-02\n", - "[ NORMAL ] Iteration 41:\tk_eff = 0.507836\tres = 2.404E-02\n", - "[ NORMAL ] Iteration 42:\tk_eff = 0.520110\tres = 2.415E-02\n", - "[ NORMAL ] Iteration 43:\tk_eff = 0.532648\tres = 2.417E-02\n", - "[ NORMAL ] Iteration 44:\tk_eff = 0.545418\tres = 2.411E-02\n", - "[ NORMAL ] Iteration 45:\tk_eff = 0.558388\tres = 2.398E-02\n", - "[ NORMAL ] Iteration 46:\tk_eff = 0.571526\tres = 2.378E-02\n", - "[ NORMAL ] Iteration 47:\tk_eff = 0.584802\tres = 2.353E-02\n", - "[ NORMAL ] Iteration 48:\tk_eff = 0.598189\tres = 2.323E-02\n", - "[ NORMAL ] Iteration 49:\tk_eff = 0.611657\tres = 2.289E-02\n", - "[ NORMAL ] Iteration 50:\tk_eff = 0.625182\tres = 2.252E-02\n", - "[ NORMAL ] Iteration 51:\tk_eff = 0.638738\tres = 2.211E-02\n", - "[ NORMAL ] Iteration 52:\tk_eff = 0.652302\tres = 2.168E-02\n", - "[ NORMAL ] Iteration 53:\tk_eff = 0.665851\tres = 2.124E-02\n", - "[ NORMAL ] Iteration 54:\tk_eff = 0.679364\tres = 2.077E-02\n", - "[ NORMAL ] Iteration 55:\tk_eff = 0.692821\tres = 2.029E-02\n", - "[ NORMAL ] Iteration 56:\tk_eff = 0.706204\tres = 1.981E-02\n", - "[ NORMAL ] Iteration 57:\tk_eff = 0.719496\tres = 1.932E-02\n", - "[ NORMAL ] Iteration 58:\tk_eff = 0.732679\tres = 1.882E-02\n", - "[ NORMAL ] Iteration 59:\tk_eff = 0.745740\tres = 1.832E-02\n", - "[ NORMAL ] Iteration 60:\tk_eff = 0.758664\tres = 1.783E-02\n", - "[ NORMAL ] Iteration 61:\tk_eff = 0.771439\tres = 1.733E-02\n", - "[ NORMAL ] Iteration 62:\tk_eff = 0.784053\tres = 1.684E-02\n", - "[ NORMAL ] Iteration 63:\tk_eff = 0.796495\tres = 1.635E-02\n", - "[ NORMAL ] Iteration 64:\tk_eff = 0.808756\tres = 1.587E-02\n", - "[ NORMAL ] Iteration 65:\tk_eff = 0.820827\tres = 1.539E-02\n", - "[ NORMAL ] Iteration 66:\tk_eff = 0.832700\tres = 1.493E-02\n", - "[ NORMAL ] Iteration 67:\tk_eff = 0.844370\tres = 1.447E-02\n", - "[ NORMAL ] Iteration 68:\tk_eff = 0.855828\tres = 1.401E-02\n", - "[ NORMAL ] Iteration 69:\tk_eff = 0.867071\tres = 1.357E-02\n", - "[ NORMAL ] Iteration 70:\tk_eff = 0.878094\tres = 1.314E-02\n", - "[ NORMAL ] Iteration 71:\tk_eff = 0.888893\tres = 1.271E-02\n", - "[ NORMAL ] Iteration 72:\tk_eff = 0.899465\tres = 1.230E-02\n", - "[ NORMAL ] Iteration 73:\tk_eff = 0.909807\tres = 1.189E-02\n", - "[ NORMAL ] Iteration 74:\tk_eff = 0.919919\tres = 1.150E-02\n", - "[ NORMAL ] Iteration 75:\tk_eff = 0.929798\tres = 1.111E-02\n", - "[ NORMAL ] Iteration 76:\tk_eff = 0.939444\tres = 1.074E-02\n", - "[ NORMAL ] Iteration 77:\tk_eff = 0.948856\tres = 1.037E-02\n", - "[ NORMAL ] Iteration 78:\tk_eff = 0.958036\tres = 1.002E-02\n", - "[ NORMAL ] Iteration 79:\tk_eff = 0.966983\tres = 9.674E-03\n", - "[ NORMAL ] Iteration 80:\tk_eff = 0.975698\tres = 9.339E-03\n", - "[ NORMAL ] Iteration 81:\tk_eff = 0.984184\tres = 9.013E-03\n", - "[ NORMAL ] Iteration 82:\tk_eff = 0.992441\tres = 8.697E-03\n", - "[ NORMAL ] Iteration 83:\tk_eff = 1.000472\tres = 8.390E-03\n", - "[ NORMAL ] Iteration 84:\tk_eff = 1.008280\tres = 8.092E-03\n", - "[ NORMAL ] Iteration 85:\tk_eff = 1.015866\tres = 7.804E-03\n", - "[ NORMAL ] Iteration 86:\tk_eff = 1.023234\tres = 7.524E-03\n", - "[ NORMAL ] Iteration 87:\tk_eff = 1.030386\tres = 7.253E-03\n", - "[ NORMAL ] Iteration 88:\tk_eff = 1.037327\tres = 6.990E-03\n", - "[ NORMAL ] Iteration 89:\tk_eff = 1.044059\tres = 6.736E-03\n", - "[ NORMAL ] Iteration 90:\tk_eff = 1.050585\tres = 6.490E-03\n", - "[ NORMAL ] Iteration 91:\tk_eff = 1.056911\tres = 6.251E-03\n", - "[ NORMAL ] Iteration 92:\tk_eff = 1.063038\tres = 6.021E-03\n", - "[ NORMAL ] Iteration 93:\tk_eff = 1.068972\tres = 5.798E-03\n", - "[ NORMAL ] Iteration 94:\tk_eff = 1.074716\tres = 5.582E-03\n", - "[ NORMAL ] Iteration 95:\tk_eff = 1.080275\tres = 5.373E-03\n", - "[ NORMAL ] Iteration 96:\tk_eff = 1.085651\tres = 5.172E-03\n", - "[ NORMAL ] Iteration 97:\tk_eff = 1.090850\tres = 4.977E-03\n", - "[ NORMAL ] Iteration 98:\tk_eff = 1.095876\tres = 4.789E-03\n", - "[ NORMAL ] Iteration 99:\tk_eff = 1.100733\tres = 4.607E-03\n", - "[ NORMAL ] Iteration 100:\tk_eff = 1.105424\tres = 4.432E-03\n", - "[ NORMAL ] Iteration 101:\tk_eff = 1.109955\tres = 4.262E-03\n", - "[ NORMAL ] Iteration 102:\tk_eff = 1.114328\tres = 4.099E-03\n", - "[ NORMAL ] Iteration 103:\tk_eff = 1.118550\tres = 3.941E-03\n", - "[ NORMAL ] Iteration 104:\tk_eff = 1.122623\tres = 3.788E-03\n", - "[ NORMAL ] Iteration 105:\tk_eff = 1.126551\tres = 3.641E-03\n", - "[ NORMAL ] Iteration 106:\tk_eff = 1.130339\tres = 3.499E-03\n", - "[ NORMAL ] Iteration 107:\tk_eff = 1.133991\tres = 3.363E-03\n", - "[ NORMAL ] Iteration 108:\tk_eff = 1.137511\tres = 3.231E-03\n", - "[ NORMAL ] Iteration 109:\tk_eff = 1.140902\tres = 3.104E-03\n", - "[ NORMAL ] Iteration 110:\tk_eff = 1.144168\tres = 2.981E-03\n", - "[ NORMAL ] Iteration 111:\tk_eff = 1.147313\tres = 2.863E-03\n", - "[ NORMAL ] Iteration 112:\tk_eff = 1.150342\tres = 2.749E-03\n", - "[ NORMAL ] Iteration 113:\tk_eff = 1.153257\tres = 2.640E-03\n", - "[ NORMAL ] Iteration 114:\tk_eff = 1.156062\tres = 2.534E-03\n", - "[ NORMAL ] Iteration 115:\tk_eff = 1.158761\tres = 2.432E-03\n", - "[ NORMAL ] Iteration 116:\tk_eff = 1.161356\tres = 2.334E-03\n", - "[ NORMAL ] Iteration 117:\tk_eff = 1.163852\tres = 2.240E-03\n", - "[ NORMAL ] Iteration 118:\tk_eff = 1.166252\tres = 2.149E-03\n", - "[ NORMAL ] Iteration 119:\tk_eff = 1.168559\tres = 2.062E-03\n", - "[ NORMAL ] Iteration 120:\tk_eff = 1.170776\tres = 1.978E-03\n", - "[ NORMAL ] Iteration 121:\tk_eff = 1.172906\tres = 1.897E-03\n", - "[ NORMAL ] Iteration 122:\tk_eff = 1.174952\tres = 1.819E-03\n", - "[ NORMAL ] Iteration 123:\tk_eff = 1.176918\tres = 1.745E-03\n", - "[ NORMAL ] Iteration 124:\tk_eff = 1.178805\tres = 1.673E-03\n", - "[ NORMAL ] Iteration 125:\tk_eff = 1.180617\tres = 1.603E-03\n", - "[ NORMAL ] Iteration 126:\tk_eff = 1.182356\tres = 1.537E-03\n", - "[ NORMAL ] Iteration 127:\tk_eff = 1.184025\tres = 1.473E-03\n", - "[ NORMAL ] Iteration 128:\tk_eff = 1.185626\tres = 1.412E-03\n", - "[ NORMAL ] Iteration 129:\tk_eff = 1.187163\tres = 1.353E-03\n", - "[ NORMAL ] Iteration 130:\tk_eff = 1.188637\tres = 1.296E-03\n", - "[ NORMAL ] Iteration 131:\tk_eff = 1.190050\tres = 1.241E-03\n", - "[ NORMAL ] Iteration 132:\tk_eff = 1.191405\tres = 1.189E-03\n", - "[ NORMAL ] Iteration 133:\tk_eff = 1.192704\tres = 1.139E-03\n", - "[ NORMAL ] Iteration 134:\tk_eff = 1.193950\tres = 1.091E-03\n", - "[ NORMAL ] Iteration 135:\tk_eff = 1.195144\tres = 1.044E-03\n", - "[ NORMAL ] Iteration 136:\tk_eff = 1.196287\tres = 9.997E-04\n", - "[ NORMAL ] Iteration 137:\tk_eff = 1.197383\tres = 9.571E-04\n", - "[ NORMAL ] Iteration 138:\tk_eff = 1.198433\tres = 9.161E-04\n", - "[ NORMAL ] Iteration 139:\tk_eff = 1.199439\tres = 8.768E-04\n", - "[ NORMAL ] Iteration 140:\tk_eff = 1.200402\tres = 8.391E-04\n", - "[ NORMAL ] Iteration 141:\tk_eff = 1.201324\tres = 8.029E-04\n", - "[ NORMAL ] Iteration 142:\tk_eff = 1.202207\tres = 7.682E-04\n", - "[ NORMAL ] Iteration 143:\tk_eff = 1.203052\tres = 7.349E-04\n", - "[ NORMAL ] Iteration 144:\tk_eff = 1.203861\tres = 7.030E-04\n", - "[ NORMAL ] Iteration 145:\tk_eff = 1.204635\tres = 6.724E-04\n", - "[ NORMAL ] Iteration 146:\tk_eff = 1.205376\tres = 6.431E-04\n", - "[ NORMAL ] Iteration 147:\tk_eff = 1.206084\tres = 6.149E-04\n", - "[ NORMAL ] Iteration 148:\tk_eff = 1.206762\tres = 5.880E-04\n", - "[ NORMAL ] Iteration 149:\tk_eff = 1.207411\tres = 5.622E-04\n", - "[ NORMAL ] Iteration 150:\tk_eff = 1.208031\tres = 5.374E-04\n", - "[ NORMAL ] Iteration 151:\tk_eff = 1.208624\tres = 5.137E-04\n", - "[ NORMAL ] Iteration 152:\tk_eff = 1.209192\tres = 4.910E-04\n", - "[ NORMAL ] Iteration 153:\tk_eff = 1.209734\tres = 4.693E-04\n", - "[ NORMAL ] Iteration 154:\tk_eff = 1.210252\tres = 4.484E-04\n", - "[ NORMAL ] Iteration 155:\tk_eff = 1.210748\tres = 4.285E-04\n", - "[ NORMAL ] Iteration 156:\tk_eff = 1.211221\tres = 4.094E-04\n", - "[ NORMAL ] Iteration 157:\tk_eff = 1.211674\tres = 3.911E-04\n", - "[ NORMAL ] Iteration 158:\tk_eff = 1.212106\tres = 3.736E-04\n", - "[ NORMAL ] Iteration 159:\tk_eff = 1.212519\tres = 3.569E-04\n", - "[ NORMAL ] Iteration 160:\tk_eff = 1.212914\tres = 3.408E-04\n", - "[ NORMAL ] Iteration 161:\tk_eff = 1.213291\tres = 3.255E-04\n", - "[ NORMAL ] Iteration 162:\tk_eff = 1.213651\tres = 3.108E-04\n", - "[ NORMAL ] Iteration 163:\tk_eff = 1.213995\tres = 2.968E-04\n", - "[ NORMAL ] Iteration 164:\tk_eff = 1.214323\tres = 2.834E-04\n", - "[ NORMAL ] Iteration 165:\tk_eff = 1.214637\tres = 2.705E-04\n", - "[ NORMAL ] Iteration 166:\tk_eff = 1.214936\tres = 2.582E-04\n", - "[ NORMAL ] Iteration 167:\tk_eff = 1.215222\tres = 2.465E-04\n", - "[ NORMAL ] Iteration 168:\tk_eff = 1.215495\tres = 2.353E-04\n", - "[ NORMAL ] Iteration 169:\tk_eff = 1.215755\tres = 2.245E-04\n", - "[ NORMAL ] Iteration 170:\tk_eff = 1.216004\tres = 2.142E-04\n", - "[ NORMAL ] Iteration 171:\tk_eff = 1.216241\tres = 2.044E-04\n", - "[ NORMAL ] Iteration 172:\tk_eff = 1.216468\tres = 1.951E-04\n", - "[ NORMAL ] Iteration 173:\tk_eff = 1.216683\tres = 1.861E-04\n", - "[ NORMAL ] Iteration 174:\tk_eff = 1.216889\tres = 1.775E-04\n", - "[ NORMAL ] Iteration 175:\tk_eff = 1.217086\tres = 1.693E-04\n", - "[ NORMAL ] Iteration 176:\tk_eff = 1.217274\tres = 1.615E-04\n", - "[ NORMAL ] Iteration 177:\tk_eff = 1.217452\tres = 1.540E-04\n", - "[ NORMAL ] Iteration 178:\tk_eff = 1.217623\tres = 1.469E-04\n", - "[ NORMAL ] Iteration 179:\tk_eff = 1.217786\tres = 1.401E-04\n", - "[ NORMAL ] Iteration 180:\tk_eff = 1.217941\tres = 1.336E-04\n", - "[ NORMAL ] Iteration 181:\tk_eff = 1.218089\tres = 1.274E-04\n", - "[ NORMAL ] Iteration 182:\tk_eff = 1.218230\tres = 1.214E-04\n", - "[ NORMAL ] Iteration 183:\tk_eff = 1.218364\tres = 1.158E-04\n", - "[ NORMAL ] Iteration 184:\tk_eff = 1.218492\tres = 1.104E-04\n", - "[ NORMAL ] Iteration 185:\tk_eff = 1.218614\tres = 1.052E-04\n", - "[ NORMAL ] Iteration 186:\tk_eff = 1.218731\tres = 1.003E-04\n", - "[ NORMAL ] Iteration 187:\tk_eff = 1.218842\tres = 9.556E-05\n", - "[ NORMAL ] Iteration 188:\tk_eff = 1.218948\tres = 9.107E-05\n", - "[ NORMAL ] Iteration 189:\tk_eff = 1.219048\tres = 8.679E-05\n", - "[ NORMAL ] Iteration 190:\tk_eff = 1.219144\tres = 8.270E-05\n", - "[ NORMAL ] Iteration 191:\tk_eff = 1.219236\tres = 7.880E-05\n", - "[ NORMAL ] Iteration 192:\tk_eff = 1.219323\tres = 7.508E-05\n", - "[ NORMAL ] Iteration 193:\tk_eff = 1.219406\tres = 7.152E-05\n", - "[ NORMAL ] Iteration 194:\tk_eff = 1.219485\tres = 6.814E-05\n", - "[ NORMAL ] Iteration 195:\tk_eff = 1.219561\tres = 6.491E-05\n", - "[ NORMAL ] Iteration 196:\tk_eff = 1.219633\tres = 6.183E-05\n", - "[ NORMAL ] Iteration 197:\tk_eff = 1.219701\tres = 5.889E-05\n", - "[ NORMAL ] Iteration 198:\tk_eff = 1.219766\tres = 5.609E-05\n", - "[ NORMAL ] Iteration 199:\tk_eff = 1.219828\tres = 5.341E-05\n", - "[ NORMAL ] Iteration 200:\tk_eff = 1.219887\tres = 5.087E-05\n", - "[ NORMAL ] Iteration 201:\tk_eff = 1.219944\tres = 4.844E-05\n", - "[ NORMAL ] Iteration 202:\tk_eff = 1.219997\tres = 4.612E-05\n", - "[ NORMAL ] Iteration 203:\tk_eff = 1.220048\tres = 4.391E-05\n", - "[ NORMAL ] Iteration 204:\tk_eff = 1.220097\tres = 4.181E-05\n", - "[ NORMAL ] Iteration 205:\tk_eff = 1.220143\tres = 3.981E-05\n", - "[ NORMAL ] Iteration 206:\tk_eff = 1.220187\tres = 3.789E-05\n", - "[ NORMAL ] Iteration 207:\tk_eff = 1.220229\tres = 3.607E-05\n", - "[ NORMAL ] Iteration 208:\tk_eff = 1.220269\tres = 3.434E-05\n", - "[ NORMAL ] Iteration 209:\tk_eff = 1.220307\tres = 3.268E-05\n", - "[ NORMAL ] Iteration 210:\tk_eff = 1.220343\tres = 3.111E-05\n", - "[ NORMAL ] Iteration 211:\tk_eff = 1.220377\tres = 2.961E-05\n", - "[ NORMAL ] Iteration 212:\tk_eff = 1.220410\tres = 2.818E-05\n", - "[ NORMAL ] Iteration 213:\tk_eff = 1.220441\tres = 2.681E-05\n", - "[ NORMAL ] Iteration 214:\tk_eff = 1.220471\tres = 2.552E-05\n", - "[ NORMAL ] Iteration 215:\tk_eff = 1.220499\tres = 2.428E-05\n", - "[ NORMAL ] Iteration 216:\tk_eff = 1.220526\tres = 2.310E-05\n", - "[ NORMAL ] Iteration 217:\tk_eff = 1.220551\tres = 2.198E-05\n", - "[ NORMAL ] Iteration 218:\tk_eff = 1.220576\tres = 2.091E-05\n", - "[ NORMAL ] Iteration 219:\tk_eff = 1.220599\tres = 1.990E-05\n", - "[ NORMAL ] Iteration 220:\tk_eff = 1.220621\tres = 1.893E-05\n", - "[ NORMAL ] Iteration 221:\tk_eff = 1.220642\tres = 1.801E-05\n", - "[ NORMAL ] Iteration 222:\tk_eff = 1.220661\tres = 1.713E-05\n", - "[ NORMAL ] Iteration 223:\tk_eff = 1.220680\tres = 1.629E-05\n", - "[ NORMAL ] Iteration 224:\tk_eff = 1.220698\tres = 1.550E-05\n", - "[ NORMAL ] Iteration 225:\tk_eff = 1.220715\tres = 1.474E-05\n", - "[ NORMAL ] Iteration 226:\tk_eff = 1.220732\tres = 1.402E-05\n", - "[ NORMAL ] Iteration 227:\tk_eff = 1.220747\tres = 1.333E-05\n", - "[ NORMAL ] Iteration 228:\tk_eff = 1.220762\tres = 1.268E-05\n", - "[ NORMAL ] Iteration 229:\tk_eff = 1.220776\tres = 1.206E-05\n", - "[ NORMAL ] Iteration 230:\tk_eff = 1.220789\tres = 1.146E-05\n", - "[ NORMAL ] Iteration 231:\tk_eff = 1.220802\tres = 1.090E-05\n", - "[ NORMAL ] Iteration 232:\tk_eff = 1.220814\tres = 1.036E-05\n" + "[ NORMAL ] Iteration 0:\tk_eff = 0.574672\tres = 0.000E+00\n", + "[ NORMAL ] Iteration 1:\tk_eff = 0.679815\tres = 4.253E-01\n", + "[ NORMAL ] Iteration 2:\tk_eff = 0.660826\tres = 1.830E-01\n", + "[ NORMAL ] Iteration 3:\tk_eff = 0.658941\tres = 2.793E-02\n", + "[ NORMAL ] Iteration 4:\tk_eff = 0.643012\tres = 2.852E-03\n", + "[ NORMAL ] Iteration 5:\tk_eff = 0.625810\tres = 2.417E-02\n", + "[ NORMAL ] Iteration 6:\tk_eff = 0.606678\tres = 2.675E-02\n", + "[ NORMAL ] Iteration 7:\tk_eff = 0.587485\tres = 3.057E-02\n", + "[ NORMAL ] Iteration 8:\tk_eff = 0.569029\tres = 3.164E-02\n", + "[ NORMAL ] Iteration 9:\tk_eff = 0.551707\tres = 3.142E-02\n", + "[ NORMAL ] Iteration 10:\tk_eff = 0.536035\tres = 3.044E-02\n", + "[ NORMAL ] Iteration 11:\tk_eff = 0.522274\tres = 2.841E-02\n", + "[ NORMAL ] Iteration 12:\tk_eff = 0.510609\tres = 2.567E-02\n", + "[ NORMAL ] Iteration 13:\tk_eff = 0.501106\tres = 2.234E-02\n", + "[ NORMAL ] Iteration 14:\tk_eff = 0.493831\tres = 1.861E-02\n", + "[ NORMAL ] Iteration 15:\tk_eff = 0.488780\tres = 1.452E-02\n", + "[ NORMAL ] Iteration 16:\tk_eff = 0.485923\tres = 1.023E-02\n", + "[ NORMAL ] Iteration 17:\tk_eff = 0.485210\tres = 5.846E-03\n", + "[ NORMAL ] Iteration 18:\tk_eff = 0.486569\tres = 1.467E-03\n", + "[ NORMAL ] Iteration 19:\tk_eff = 0.489903\tres = 2.801E-03\n", + "[ NORMAL ] Iteration 20:\tk_eff = 0.495103\tres = 6.852E-03\n", + "[ NORMAL ] Iteration 21:\tk_eff = 0.502053\tres = 1.061E-02\n", + "[ NORMAL ] Iteration 22:\tk_eff = 0.510627\tres = 1.404E-02\n", + "[ NORMAL ] Iteration 23:\tk_eff = 0.520693\tres = 1.708E-02\n", + "[ NORMAL ] Iteration 24:\tk_eff = 0.532117\tres = 1.971E-02\n", + "[ NORMAL ] Iteration 25:\tk_eff = 0.544764\tres = 2.194E-02\n", + "[ NORMAL ] Iteration 26:\tk_eff = 0.558501\tres = 2.377E-02\n", + "[ NORMAL ] Iteration 27:\tk_eff = 0.573195\tres = 2.522E-02\n", + "[ NORMAL ] Iteration 28:\tk_eff = 0.588718\tres = 2.631E-02\n", + "[ NORMAL ] Iteration 29:\tk_eff = 0.604946\tres = 2.708E-02\n", + "[ NORMAL ] Iteration 30:\tk_eff = 0.621759\tres = 2.756E-02\n", + "[ NORMAL ] Iteration 31:\tk_eff = 0.639047\tres = 2.779E-02\n", + "[ NORMAL ] Iteration 32:\tk_eff = 0.656702\tres = 2.780E-02\n", + "[ NORMAL ] Iteration 33:\tk_eff = 0.674624\tres = 2.763E-02\n", + "[ NORMAL ] Iteration 34:\tk_eff = 0.692722\tres = 2.729E-02\n", + "[ NORMAL ] Iteration 35:\tk_eff = 0.710910\tres = 2.683E-02\n", + "[ NORMAL ] Iteration 36:\tk_eff = 0.729109\tres = 2.625E-02\n", + "[ NORMAL ] Iteration 37:\tk_eff = 0.747248\tres = 2.560E-02\n", + "[ NORMAL ] Iteration 38:\tk_eff = 0.765263\tres = 2.488E-02\n", + "[ NORMAL ] Iteration 39:\tk_eff = 0.783094\tres = 2.411E-02\n", + "[ NORMAL ] Iteration 40:\tk_eff = 0.800690\tres = 2.330E-02\n", + "[ NORMAL ] Iteration 41:\tk_eff = 0.818005\tres = 2.247E-02\n", + "[ NORMAL ] Iteration 42:\tk_eff = 0.834999\tres = 2.163E-02\n", + "[ NORMAL ] Iteration 43:\tk_eff = 0.851638\tres = 2.078E-02\n", + "[ NORMAL ] Iteration 44:\tk_eff = 0.867892\tres = 1.993E-02\n", + "[ NORMAL ] Iteration 45:\tk_eff = 0.883736\tres = 1.909E-02\n", + "[ NORMAL ] Iteration 46:\tk_eff = 0.899149\tres = 1.826E-02\n", + "[ NORMAL ] Iteration 47:\tk_eff = 0.914115\tres = 1.744E-02\n", + "[ NORMAL ] Iteration 48:\tk_eff = 0.928622\tres = 1.664E-02\n", + "[ NORMAL ] Iteration 49:\tk_eff = 0.942659\tres = 1.587E-02\n", + "[ NORMAL ] Iteration 50:\tk_eff = 0.956221\tres = 1.512E-02\n", + "[ NORMAL ] Iteration 51:\tk_eff = 0.969305\tres = 1.439E-02\n", + "[ NORMAL ] Iteration 52:\tk_eff = 0.981909\tres = 1.368E-02\n", + "[ NORMAL ] Iteration 53:\tk_eff = 0.994035\tres = 1.300E-02\n", + "[ NORMAL ] Iteration 54:\tk_eff = 1.005685\tres = 1.235E-02\n", + "[ NORMAL ] Iteration 55:\tk_eff = 1.016866\tres = 1.172E-02\n", + "[ NORMAL ] Iteration 56:\tk_eff = 1.027584\tres = 1.112E-02\n", + "[ NORMAL ] Iteration 57:\tk_eff = 1.037846\tres = 1.054E-02\n", + "[ NORMAL ] Iteration 58:\tk_eff = 1.047661\tres = 9.986E-03\n", + "[ NORMAL ] Iteration 59:\tk_eff = 1.057040\tres = 9.457E-03\n", + "[ NORMAL ] Iteration 60:\tk_eff = 1.065994\tres = 8.953E-03\n", + "[ NORMAL ] Iteration 61:\tk_eff = 1.074533\tres = 8.470E-03\n", + "[ NORMAL ] Iteration 62:\tk_eff = 1.082671\tres = 8.011E-03\n", + "[ NORMAL ] Iteration 63:\tk_eff = 1.090418\tres = 7.573E-03\n", + "[ NORMAL ] Iteration 64:\tk_eff = 1.097790\tres = 7.156E-03\n", + "[ NORMAL ] Iteration 65:\tk_eff = 1.104797\tres = 6.760E-03\n", + "[ NORMAL ] Iteration 66:\tk_eff = 1.111453\tres = 6.383E-03\n", + "[ NORMAL ] Iteration 67:\tk_eff = 1.117770\tres = 6.025E-03\n", + "[ NORMAL ] Iteration 68:\tk_eff = 1.123764\tres = 5.684E-03\n", + "[ NORMAL ] Iteration 69:\tk_eff = 1.129446\tres = 5.362E-03\n", + "[ NORMAL ] Iteration 70:\tk_eff = 1.134828\tres = 5.056E-03\n", + "[ NORMAL ] Iteration 71:\tk_eff = 1.139924\tres = 4.765E-03\n", + "[ NORMAL ] Iteration 72:\tk_eff = 1.144746\tres = 4.491E-03\n", + "[ NORMAL ] Iteration 73:\tk_eff = 1.149306\tres = 4.230E-03\n", + "[ NORMAL ] Iteration 74:\tk_eff = 1.153617\tres = 3.983E-03\n", + "[ NORMAL ] Iteration 75:\tk_eff = 1.157688\tres = 3.751E-03\n", + "[ NORMAL ] Iteration 76:\tk_eff = 1.161534\tres = 3.530E-03\n", + "[ NORMAL ] Iteration 77:\tk_eff = 1.165163\tres = 3.322E-03\n", + "[ NORMAL ] Iteration 78:\tk_eff = 1.168586\tres = 3.124E-03\n", + "[ NORMAL ] Iteration 79:\tk_eff = 1.171813\tres = 2.938E-03\n", + "[ NORMAL ] Iteration 80:\tk_eff = 1.174855\tres = 2.762E-03\n", + "[ NORMAL ] Iteration 81:\tk_eff = 1.177721\tres = 2.596E-03\n", + "[ NORMAL ] Iteration 82:\tk_eff = 1.180419\tres = 2.439E-03\n", + "[ NORMAL ] Iteration 83:\tk_eff = 1.182960\tres = 2.291E-03\n", + "[ NORMAL ] Iteration 84:\tk_eff = 1.185350\tres = 2.152E-03\n", + "[ NORMAL ] Iteration 85:\tk_eff = 1.187599\tres = 2.021E-03\n", + "[ NORMAL ] Iteration 86:\tk_eff = 1.189713\tres = 1.897E-03\n", + "[ NORMAL ] Iteration 87:\tk_eff = 1.191700\tres = 1.780E-03\n", + "[ NORMAL ] Iteration 88:\tk_eff = 1.193567\tres = 1.670E-03\n", + "[ NORMAL ] Iteration 89:\tk_eff = 1.195321\tres = 1.567E-03\n", + "[ NORMAL ] Iteration 90:\tk_eff = 1.196967\tres = 1.469E-03\n", + "[ NORMAL ] Iteration 91:\tk_eff = 1.198513\tres = 1.378E-03\n", + "[ NORMAL ] Iteration 92:\tk_eff = 1.199964\tres = 1.291E-03\n", + "[ NORMAL ] Iteration 93:\tk_eff = 1.201326\tres = 1.211E-03\n", + "[ NORMAL ] Iteration 94:\tk_eff = 1.202602\tres = 1.135E-03\n", + "[ NORMAL ] Iteration 95:\tk_eff = 1.203800\tres = 1.062E-03\n", + "[ NORMAL ] Iteration 96:\tk_eff = 1.204922\tres = 9.959E-04\n", + "[ NORMAL ] Iteration 97:\tk_eff = 1.205974\tres = 9.321E-04\n", + "[ NORMAL ] Iteration 98:\tk_eff = 1.206961\tres = 8.732E-04\n", + "[ NORMAL ] Iteration 99:\tk_eff = 1.207884\tres = 8.175E-04\n", + "[ NORMAL ] Iteration 100:\tk_eff = 1.208748\tres = 7.646E-04\n", + "[ NORMAL ] Iteration 101:\tk_eff = 1.209558\tres = 7.159E-04\n", + "[ NORMAL ] Iteration 102:\tk_eff = 1.210316\tres = 6.699E-04\n", + "[ NORMAL ] Iteration 103:\tk_eff = 1.211025\tres = 6.262E-04\n", + "[ NORMAL ] Iteration 104:\tk_eff = 1.211689\tres = 5.864E-04\n", + "[ NORMAL ] Iteration 105:\tk_eff = 1.212310\tres = 5.481E-04\n", + "[ NORMAL ] Iteration 106:\tk_eff = 1.212891\tres = 5.124E-04\n", + "[ NORMAL ] Iteration 107:\tk_eff = 1.213434\tres = 4.792E-04\n", + "[ NORMAL ] Iteration 108:\tk_eff = 1.213942\tres = 4.477E-04\n", + "[ NORMAL ] Iteration 109:\tk_eff = 1.214416\tres = 4.189E-04\n", + "[ NORMAL ] Iteration 110:\tk_eff = 1.214861\tres = 3.907E-04\n", + "[ NORMAL ] Iteration 111:\tk_eff = 1.215275\tres = 3.660E-04\n", + "[ NORMAL ] Iteration 112:\tk_eff = 1.215663\tres = 3.414E-04\n", + "[ NORMAL ] Iteration 113:\tk_eff = 1.216025\tres = 3.188E-04\n", + "[ NORMAL ] Iteration 114:\tk_eff = 1.216363\tres = 2.981E-04\n", + "[ NORMAL ] Iteration 115:\tk_eff = 1.216679\tres = 2.776E-04\n", + "[ NORMAL ] Iteration 116:\tk_eff = 1.216974\tres = 2.599E-04\n", + "[ NORMAL ] Iteration 117:\tk_eff = 1.217250\tres = 2.427E-04\n", + "[ NORMAL ] Iteration 118:\tk_eff = 1.217507\tres = 2.263E-04\n", + "[ NORMAL ] Iteration 119:\tk_eff = 1.217747\tres = 2.115E-04\n", + "[ NORMAL ] Iteration 120:\tk_eff = 1.217970\tres = 1.970E-04\n", + "[ NORMAL ] Iteration 121:\tk_eff = 1.218180\tres = 1.834E-04\n", + "[ NORMAL ] Iteration 122:\tk_eff = 1.218375\tres = 1.718E-04\n", + "[ NORMAL ] Iteration 123:\tk_eff = 1.218557\tres = 1.602E-04\n", + "[ NORMAL ] Iteration 124:\tk_eff = 1.218726\tres = 1.496E-04\n", + "[ NORMAL ] Iteration 125:\tk_eff = 1.218885\tres = 1.387E-04\n", + "[ NORMAL ] Iteration 126:\tk_eff = 1.219032\tres = 1.301E-04\n", + "[ NORMAL ] Iteration 127:\tk_eff = 1.219169\tres = 1.211E-04\n", + "[ NORMAL ] Iteration 128:\tk_eff = 1.219298\tres = 1.127E-04\n", + "[ NORMAL ] Iteration 129:\tk_eff = 1.219418\tres = 1.058E-04\n", + "[ NORMAL ] Iteration 130:\tk_eff = 1.219529\tres = 9.828E-05\n", + "[ NORMAL ] Iteration 131:\tk_eff = 1.219633\tres = 9.100E-05\n", + "[ NORMAL ] Iteration 132:\tk_eff = 1.219730\tres = 8.530E-05\n", + "[ NORMAL ] Iteration 133:\tk_eff = 1.219820\tres = 7.940E-05\n", + "[ NORMAL ] Iteration 134:\tk_eff = 1.219904\tres = 7.409E-05\n", + "[ NORMAL ] Iteration 135:\tk_eff = 1.219983\tres = 6.876E-05\n", + "[ NORMAL ] Iteration 136:\tk_eff = 1.220056\tres = 6.455E-05\n", + "[ NORMAL ] Iteration 137:\tk_eff = 1.220124\tres = 5.969E-05\n", + "[ NORMAL ] Iteration 138:\tk_eff = 1.220187\tres = 5.603E-05\n", + "[ NORMAL ] Iteration 139:\tk_eff = 1.220246\tres = 5.166E-05\n", + "[ NORMAL ] Iteration 140:\tk_eff = 1.220301\tres = 4.829E-05\n", + "[ NORMAL ] Iteration 141:\tk_eff = 1.220352\tres = 4.510E-05\n", + "[ NORMAL ] Iteration 142:\tk_eff = 1.220400\tres = 4.199E-05\n", + "[ NORMAL ] Iteration 143:\tk_eff = 1.220445\tres = 3.939E-05\n", + "[ NORMAL ] Iteration 144:\tk_eff = 1.220486\tres = 3.630E-05\n", + "[ NORMAL ] Iteration 145:\tk_eff = 1.220525\tres = 3.362E-05\n", + "[ NORMAL ] Iteration 146:\tk_eff = 1.220561\tres = 3.181E-05\n", + "[ NORMAL ] Iteration 147:\tk_eff = 1.220594\tres = 2.977E-05\n", + "[ NORMAL ] Iteration 148:\tk_eff = 1.220626\tres = 2.745E-05\n", + "[ NORMAL ] Iteration 149:\tk_eff = 1.220655\tres = 2.569E-05\n", + "[ NORMAL ] Iteration 150:\tk_eff = 1.220682\tres = 2.376E-05\n", + "[ NORMAL ] Iteration 151:\tk_eff = 1.220707\tres = 2.201E-05\n", + "[ NORMAL ] Iteration 152:\tk_eff = 1.220730\tres = 2.071E-05\n", + "[ NORMAL ] Iteration 153:\tk_eff = 1.220752\tres = 1.925E-05\n", + "[ NORMAL ] Iteration 154:\tk_eff = 1.220772\tres = 1.793E-05\n", + "[ NORMAL ] Iteration 155:\tk_eff = 1.220791\tres = 1.669E-05\n", + "[ NORMAL ] Iteration 156:\tk_eff = 1.220809\tres = 1.554E-05\n", + "[ NORMAL ] Iteration 157:\tk_eff = 1.220826\tres = 1.457E-05\n", + "[ NORMAL ] Iteration 158:\tk_eff = 1.220841\tres = 1.372E-05\n", + "[ NORMAL ] Iteration 159:\tk_eff = 1.220855\tres = 1.249E-05\n", + "[ NORMAL ] Iteration 160:\tk_eff = 1.220868\tres = 1.138E-05\n", + "[ NORMAL ] Iteration 161:\tk_eff = 1.220881\tres = 1.104E-05\n", + "[ NORMAL ] Iteration 162:\tk_eff = 1.220892\tres = 1.028E-05\n" ] } ], @@ -1435,8 +1367,8 @@ "output_type": "stream", "text": [ "openmc keff = 1.223474\n", - "openmoc keff = 1.220814\n", - "bias [pcm]: -266.0\n" + "openmoc keff = 1.220892\n", + "bias [pcm]: -258.1\n" ] } ], @@ -1511,346 +1443,237 @@ "text": [ "[ NORMAL ] Importing ray tracing data from file...\n", "[ NORMAL ] Computing the eigenvalue...\n", - "[ NORMAL ] Iteration 0:\tk_eff = 0.366907\tres = 0.000E+00\n", - "[ NORMAL ] Iteration 1:\tk_eff = 0.391217\tres = 6.331E-01\n", - "[ NORMAL ] Iteration 2:\tk_eff = 0.393027\tres = 6.626E-02\n", - "[ NORMAL ] Iteration 3:\tk_eff = 0.381142\tres = 4.627E-03\n", - "[ NORMAL ] Iteration 4:\tk_eff = 0.375065\tres = 3.024E-02\n", - "[ NORMAL ] Iteration 5:\tk_eff = 0.369645\tres = 1.594E-02\n", - "[ NORMAL ] Iteration 6:\tk_eff = 0.365597\tres = 1.445E-02\n", - "[ NORMAL ] Iteration 7:\tk_eff = 0.363111\tres = 1.095E-02\n", - "[ NORMAL ] Iteration 8:\tk_eff = 0.361532\tres = 6.802E-03\n", - "[ NORMAL ] Iteration 9:\tk_eff = 0.361339\tres = 4.349E-03\n", - "[ NORMAL ] Iteration 10:\tk_eff = 0.362062\tres = 5.322E-04\n", - "[ NORMAL ] Iteration 11:\tk_eff = 0.363777\tres = 2.001E-03\n", - "[ NORMAL ] Iteration 12:\tk_eff = 0.366395\tres = 4.735E-03\n", - "[ NORMAL ] Iteration 13:\tk_eff = 0.369859\tres = 7.198E-03\n", - "[ NORMAL ] Iteration 14:\tk_eff = 0.374042\tres = 9.454E-03\n", - "[ NORMAL ] Iteration 15:\tk_eff = 0.378972\tres = 1.131E-02\n", - "[ NORMAL ] Iteration 16:\tk_eff = 0.384524\tres = 1.318E-02\n", - "[ NORMAL ] Iteration 17:\tk_eff = 0.390678\tres = 1.465E-02\n", - "[ NORMAL ] Iteration 18:\tk_eff = 0.397373\tres = 1.600E-02\n", - "[ NORMAL ] Iteration 19:\tk_eff = 0.404563\tres = 1.714E-02\n", - "[ NORMAL ] Iteration 20:\tk_eff = 0.412207\tres = 1.809E-02\n", - "[ NORMAL ] Iteration 21:\tk_eff = 0.420270\tres = 1.890E-02\n", - "[ NORMAL ] Iteration 22:\tk_eff = 0.428695\tres = 1.956E-02\n", - "[ NORMAL ] Iteration 23:\tk_eff = 0.437463\tres = 2.005E-02\n", - "[ NORMAL ] Iteration 24:\tk_eff = 0.446530\tres = 2.045E-02\n", - "[ NORMAL ] Iteration 25:\tk_eff = 0.455867\tres = 2.073E-02\n", - "[ NORMAL ] Iteration 26:\tk_eff = 0.465442\tres = 2.091E-02\n", - "[ NORMAL ] Iteration 27:\tk_eff = 0.475229\tres = 2.101E-02\n", - "[ NORMAL ] Iteration 28:\tk_eff = 0.485198\tres = 2.103E-02\n", - "[ NORMAL ] Iteration 29:\tk_eff = 0.495327\tres = 2.098E-02\n", - "[ NORMAL ] Iteration 30:\tk_eff = 0.505591\tres = 2.088E-02\n", - "[ NORMAL ] Iteration 31:\tk_eff = 0.515969\tres = 2.072E-02\n", - "[ NORMAL ] Iteration 32:\tk_eff = 0.526440\tres = 2.053E-02\n", - "[ NORMAL ] Iteration 33:\tk_eff = 0.536985\tres = 2.029E-02\n", - "[ NORMAL ] Iteration 34:\tk_eff = 0.547587\tres = 2.003E-02\n", - "[ NORMAL ] Iteration 35:\tk_eff = 0.558228\tres = 1.974E-02\n", - "[ NORMAL ] Iteration 36:\tk_eff = 0.568893\tres = 1.943E-02\n", - "[ NORMAL ] Iteration 37:\tk_eff = 0.579569\tres = 1.911E-02\n", - "[ NORMAL ] Iteration 38:\tk_eff = 0.590241\tres = 1.877E-02\n", - "[ NORMAL ] Iteration 39:\tk_eff = 0.600898\tres = 1.841E-02\n", - "[ NORMAL ] Iteration 40:\tk_eff = 0.611527\tres = 1.805E-02\n", - "[ NORMAL ] Iteration 41:\tk_eff = 0.622118\tres = 1.769E-02\n", - "[ NORMAL ] Iteration 42:\tk_eff = 0.632662\tres = 1.732E-02\n", - "[ NORMAL ] Iteration 43:\tk_eff = 0.643149\tres = 1.695E-02\n", - "[ NORMAL ] Iteration 44:\tk_eff = 0.653571\tres = 1.658E-02\n", - "[ NORMAL ] Iteration 45:\tk_eff = 0.663920\tres = 1.620E-02\n", - "[ NORMAL ] Iteration 46:\tk_eff = 0.674189\tres = 1.583E-02\n", - "[ NORMAL ] Iteration 47:\tk_eff = 0.684372\tres = 1.547E-02\n", - "[ NORMAL ] Iteration 48:\tk_eff = 0.694464\tres = 1.510E-02\n", - "[ NORMAL ] Iteration 49:\tk_eff = 0.704457\tres = 1.475E-02\n", - "[ NORMAL ] Iteration 50:\tk_eff = 0.714349\tres = 1.439E-02\n", - "[ NORMAL ] Iteration 51:\tk_eff = 0.724134\tres = 1.404E-02\n", - "[ NORMAL ] Iteration 52:\tk_eff = 0.733808\tres = 1.370E-02\n", - "[ NORMAL ] Iteration 53:\tk_eff = 0.743369\tres = 1.336E-02\n", - "[ NORMAL ] Iteration 54:\tk_eff = 0.752812\tres = 1.303E-02\n", - "[ NORMAL ] Iteration 55:\tk_eff = 0.762135\tres = 1.270E-02\n", - "[ NORMAL ] Iteration 56:\tk_eff = 0.771336\tres = 1.238E-02\n", - "[ NORMAL ] Iteration 57:\tk_eff = 0.780412\tres = 1.207E-02\n", - "[ NORMAL ] Iteration 58:\tk_eff = 0.789362\tres = 1.177E-02\n", - "[ NORMAL ] Iteration 59:\tk_eff = 0.798184\tres = 1.147E-02\n", - "[ NORMAL ] Iteration 60:\tk_eff = 0.806877\tres = 1.118E-02\n", - "[ NORMAL ] Iteration 61:\tk_eff = 0.815440\tres = 1.089E-02\n", - "[ NORMAL ] Iteration 62:\tk_eff = 0.823872\tres = 1.061E-02\n", - "[ NORMAL ] Iteration 63:\tk_eff = 0.832172\tres = 1.034E-02\n", - "[ NORMAL ] Iteration 64:\tk_eff = 0.840340\tres = 1.007E-02\n", - "[ NORMAL ] Iteration 65:\tk_eff = 0.848377\tres = 9.816E-03\n", - "[ NORMAL ] Iteration 66:\tk_eff = 0.856281\tres = 9.563E-03\n", - "[ NORMAL ] Iteration 67:\tk_eff = 0.864053\tres = 9.317E-03\n", - "[ NORMAL ] Iteration 68:\tk_eff = 0.871693\tres = 9.076E-03\n", - "[ NORMAL ] Iteration 69:\tk_eff = 0.879202\tres = 8.842E-03\n", - "[ NORMAL ] Iteration 70:\tk_eff = 0.886580\tres = 8.614E-03\n", - "[ NORMAL ] Iteration 71:\tk_eff = 0.893828\tres = 8.392E-03\n", - "[ NORMAL ] Iteration 72:\tk_eff = 0.900946\tres = 8.175E-03\n", - "[ NORMAL ] Iteration 73:\tk_eff = 0.907936\tres = 7.964E-03\n", - "[ NORMAL ] Iteration 74:\tk_eff = 0.914798\tres = 7.758E-03\n", - "[ NORMAL ] Iteration 75:\tk_eff = 0.921534\tres = 7.558E-03\n", - "[ NORMAL ] Iteration 76:\tk_eff = 0.928144\tres = 7.363E-03\n", - "[ NORMAL ] Iteration 77:\tk_eff = 0.934629\tres = 7.173E-03\n", - "[ NORMAL ] Iteration 78:\tk_eff = 0.940992\tres = 6.988E-03\n", - "[ NORMAL ] Iteration 79:\tk_eff = 0.947233\tres = 6.808E-03\n", - "[ NORMAL ] Iteration 80:\tk_eff = 0.953353\tres = 6.632E-03\n", - "[ NORMAL ] Iteration 81:\tk_eff = 0.959355\tres = 6.461E-03\n", - "[ NORMAL ] Iteration 82:\tk_eff = 0.965238\tres = 6.295E-03\n", - "[ NORMAL ] Iteration 83:\tk_eff = 0.971006\tres = 6.133E-03\n", - "[ NORMAL ] Iteration 84:\tk_eff = 0.976659\tres = 5.975E-03\n", - "[ NORMAL ] Iteration 85:\tk_eff = 0.982199\tres = 5.822E-03\n", - "[ NORMAL ] Iteration 86:\tk_eff = 0.987627\tres = 5.672E-03\n", - "[ NORMAL ] Iteration 87:\tk_eff = 0.992945\tres = 5.527E-03\n", - "[ NORMAL ] Iteration 88:\tk_eff = 0.998155\tres = 5.385E-03\n", - "[ NORMAL ] Iteration 89:\tk_eff = 1.003258\tres = 5.247E-03\n", - "[ NORMAL ] Iteration 90:\tk_eff = 1.008256\tres = 5.113E-03\n", - "[ NORMAL ] Iteration 91:\tk_eff = 1.013151\tres = 4.982E-03\n", - "[ NORMAL ] Iteration 92:\tk_eff = 1.017943\tres = 4.854E-03\n", - "[ NORMAL ] Iteration 93:\tk_eff = 1.022635\tres = 4.730E-03\n", - "[ NORMAL ] Iteration 94:\tk_eff = 1.027229\tres = 4.609E-03\n", - "[ NORMAL ] Iteration 95:\tk_eff = 1.031726\tres = 4.492E-03\n", - "[ NORMAL ] Iteration 96:\tk_eff = 1.036127\tres = 4.377E-03\n", - "[ NORMAL ] Iteration 97:\tk_eff = 1.040434\tres = 4.266E-03\n", - "[ NORMAL ] Iteration 98:\tk_eff = 1.044649\tres = 4.157E-03\n", - "[ NORMAL ] Iteration 99:\tk_eff = 1.048774\tres = 4.051E-03\n", - "[ NORMAL ] Iteration 100:\tk_eff = 1.052810\tres = 3.948E-03\n", - "[ NORMAL ] Iteration 101:\tk_eff = 1.056759\tres = 3.848E-03\n", - "[ NORMAL ] Iteration 102:\tk_eff = 1.060622\tres = 3.751E-03\n", - "[ NORMAL ] Iteration 103:\tk_eff = 1.064400\tres = 3.655E-03\n", - "[ NORMAL ] Iteration 104:\tk_eff = 1.068096\tres = 3.563E-03\n", - "[ NORMAL ] Iteration 105:\tk_eff = 1.071711\tres = 3.473E-03\n", - "[ NORMAL ] Iteration 106:\tk_eff = 1.075247\tres = 3.385E-03\n", - "[ NORMAL ] Iteration 107:\tk_eff = 1.078705\tres = 3.299E-03\n", - "[ NORMAL ] Iteration 108:\tk_eff = 1.082086\tres = 3.216E-03\n", - "[ NORMAL ] Iteration 109:\tk_eff = 1.085392\tres = 3.134E-03\n", - "[ NORMAL ] Iteration 110:\tk_eff = 1.088624\tres = 3.055E-03\n", - "[ NORMAL ] Iteration 111:\tk_eff = 1.091785\tres = 2.978E-03\n", - "[ NORMAL ] Iteration 112:\tk_eff = 1.094875\tres = 2.903E-03\n", - "[ NORMAL ] Iteration 113:\tk_eff = 1.097895\tres = 2.830E-03\n", - "[ NORMAL ] Iteration 114:\tk_eff = 1.100848\tres = 2.759E-03\n", - "[ NORMAL ] Iteration 115:\tk_eff = 1.103734\tres = 2.689E-03\n", - "[ NORMAL ] Iteration 116:\tk_eff = 1.106555\tres = 2.622E-03\n", - "[ NORMAL ] Iteration 117:\tk_eff = 1.109312\tres = 2.556E-03\n", - "[ NORMAL ] Iteration 118:\tk_eff = 1.112007\tres = 2.492E-03\n", - "[ NORMAL ] Iteration 119:\tk_eff = 1.114641\tres = 2.429E-03\n", - "[ NORMAL ] Iteration 120:\tk_eff = 1.117214\tres = 2.368E-03\n", - "[ NORMAL ] Iteration 121:\tk_eff = 1.119729\tres = 2.309E-03\n", - "[ NORMAL ] Iteration 122:\tk_eff = 1.122187\tres = 2.251E-03\n", - "[ NORMAL ] Iteration 123:\tk_eff = 1.124588\tres = 2.195E-03\n", - "[ NORMAL ] Iteration 124:\tk_eff = 1.126934\tres = 2.140E-03\n", - "[ NORMAL ] Iteration 125:\tk_eff = 1.129226\tres = 2.086E-03\n", - "[ NORMAL ] Iteration 126:\tk_eff = 1.131466\tres = 2.034E-03\n", - "[ NORMAL ] Iteration 127:\tk_eff = 1.133654\tres = 1.983E-03\n", - "[ NORMAL ] Iteration 128:\tk_eff = 1.135791\tres = 1.934E-03\n", - "[ NORMAL ] Iteration 129:\tk_eff = 1.137879\tres = 1.885E-03\n", - "[ NORMAL ] Iteration 130:\tk_eff = 1.139919\tres = 1.838E-03\n", - "[ NORMAL ] Iteration 131:\tk_eff = 1.141911\tres = 1.793E-03\n", - "[ NORMAL ] Iteration 132:\tk_eff = 1.143857\tres = 1.748E-03\n", - "[ NORMAL ] Iteration 133:\tk_eff = 1.145758\tres = 1.704E-03\n", - "[ NORMAL ] Iteration 134:\tk_eff = 1.147615\tres = 1.662E-03\n", - "[ NORMAL ] Iteration 135:\tk_eff = 1.149428\tres = 1.620E-03\n", - "[ NORMAL ] Iteration 136:\tk_eff = 1.151200\tres = 1.580E-03\n", - "[ NORMAL ] Iteration 137:\tk_eff = 1.152929\tres = 1.541E-03\n", - "[ NORMAL ] Iteration 138:\tk_eff = 1.154619\tres = 1.503E-03\n", - "[ NORMAL ] Iteration 139:\tk_eff = 1.156268\tres = 1.465E-03\n", - "[ NORMAL ] Iteration 140:\tk_eff = 1.157879\tres = 1.429E-03\n", - "[ NORMAL ] Iteration 141:\tk_eff = 1.159453\tres = 1.393E-03\n", - "[ NORMAL ] Iteration 142:\tk_eff = 1.160989\tres = 1.359E-03\n", - "[ NORMAL ] Iteration 143:\tk_eff = 1.162489\tres = 1.325E-03\n", - "[ NORMAL ] Iteration 144:\tk_eff = 1.163954\tres = 1.292E-03\n", - "[ NORMAL ] Iteration 145:\tk_eff = 1.165384\tres = 1.260E-03\n", - "[ NORMAL ] Iteration 146:\tk_eff = 1.166781\tres = 1.229E-03\n", - "[ NORMAL ] Iteration 147:\tk_eff = 1.168144\tres = 1.198E-03\n", - "[ NORMAL ] Iteration 148:\tk_eff = 1.169476\tres = 1.169E-03\n", - "[ NORMAL ] Iteration 149:\tk_eff = 1.170776\tres = 1.140E-03\n", - "[ NORMAL ] Iteration 150:\tk_eff = 1.172045\tres = 1.112E-03\n", - "[ NORMAL ] Iteration 151:\tk_eff = 1.173284\tres = 1.084E-03\n", - "[ NORMAL ] Iteration 152:\tk_eff = 1.174494\tres = 1.057E-03\n", - "[ NORMAL ] Iteration 153:\tk_eff = 1.175675\tres = 1.031E-03\n", - "[ NORMAL ] Iteration 154:\tk_eff = 1.176828\tres = 1.006E-03\n", - "[ NORMAL ] Iteration 155:\tk_eff = 1.177953\tres = 9.807E-04\n", - "[ NORMAL ] Iteration 156:\tk_eff = 1.179052\tres = 9.565E-04\n", - "[ NORMAL ] Iteration 157:\tk_eff = 1.180125\tres = 9.328E-04\n", - "[ NORMAL ] Iteration 158:\tk_eff = 1.181172\tres = 9.098E-04\n", - "[ NORMAL ] Iteration 159:\tk_eff = 1.182194\tres = 8.873E-04\n", - "[ NORMAL ] Iteration 160:\tk_eff = 1.183192\tres = 8.654E-04\n", - "[ NORMAL ] Iteration 161:\tk_eff = 1.184166\tres = 8.441E-04\n", - "[ NORMAL ] Iteration 162:\tk_eff = 1.185117\tres = 8.232E-04\n", - "[ NORMAL ] Iteration 163:\tk_eff = 1.186045\tres = 8.029E-04\n", - "[ NORMAL ] Iteration 164:\tk_eff = 1.186951\tres = 7.831E-04\n", - "[ NORMAL ] Iteration 165:\tk_eff = 1.187835\tres = 7.638E-04\n", - "[ NORMAL ] Iteration 166:\tk_eff = 1.188698\tres = 7.450E-04\n", - "[ NORMAL ] Iteration 167:\tk_eff = 1.189541\tres = 7.266E-04\n", - "[ NORMAL ] Iteration 168:\tk_eff = 1.190363\tres = 7.087E-04\n", - "[ NORMAL ] Iteration 169:\tk_eff = 1.191166\tres = 6.912E-04\n", - "[ NORMAL ] Iteration 170:\tk_eff = 1.191949\tres = 6.742E-04\n", - "[ NORMAL ] Iteration 171:\tk_eff = 1.192713\tres = 6.576E-04\n", - "[ NORMAL ] Iteration 172:\tk_eff = 1.193460\tres = 6.414E-04\n", - "[ NORMAL ] Iteration 173:\tk_eff = 1.194188\tres = 6.256E-04\n", - "[ NORMAL ] Iteration 174:\tk_eff = 1.194899\tres = 6.102E-04\n", - "[ NORMAL ] Iteration 175:\tk_eff = 1.195592\tres = 5.952E-04\n", - "[ NORMAL ] Iteration 176:\tk_eff = 1.196269\tres = 5.806E-04\n", - "[ NORMAL ] Iteration 177:\tk_eff = 1.196930\tres = 5.663E-04\n", - "[ NORMAL ] Iteration 178:\tk_eff = 1.197575\tres = 5.524E-04\n", - "[ NORMAL ] Iteration 179:\tk_eff = 1.198204\tres = 5.388E-04\n", - "[ NORMAL ] Iteration 180:\tk_eff = 1.198819\tres = 5.255E-04\n", - "[ NORMAL ] Iteration 181:\tk_eff = 1.199418\tres = 5.126E-04\n", - "[ NORMAL ] Iteration 182:\tk_eff = 1.200003\tres = 5.000E-04\n", - "[ NORMAL ] Iteration 183:\tk_eff = 1.200574\tres = 4.877E-04\n", - "[ NORMAL ] Iteration 184:\tk_eff = 1.201131\tres = 4.757E-04\n", - "[ NORMAL ] Iteration 185:\tk_eff = 1.201675\tres = 4.640E-04\n", - "[ NORMAL ] Iteration 186:\tk_eff = 1.202205\tres = 4.526E-04\n", - "[ NORMAL ] Iteration 187:\tk_eff = 1.202723\tres = 4.415E-04\n", - "[ NORMAL ] Iteration 188:\tk_eff = 1.203228\tres = 4.307E-04\n", - "[ NORMAL ] Iteration 189:\tk_eff = 1.203721\tres = 4.201E-04\n", - "[ NORMAL ] Iteration 190:\tk_eff = 1.204202\tres = 4.098E-04\n", - "[ NORMAL ] Iteration 191:\tk_eff = 1.204672\tres = 3.997E-04\n", - "[ NORMAL ] Iteration 192:\tk_eff = 1.205130\tres = 3.899E-04\n", - "[ NORMAL ] Iteration 193:\tk_eff = 1.205577\tres = 3.803E-04\n", - "[ NORMAL ] Iteration 194:\tk_eff = 1.206014\tres = 3.710E-04\n", - "[ NORMAL ] Iteration 195:\tk_eff = 1.206439\tres = 3.619E-04\n", - "[ NORMAL ] Iteration 196:\tk_eff = 1.206855\tres = 3.530E-04\n", - "[ NORMAL ] Iteration 197:\tk_eff = 1.207260\tres = 3.444E-04\n", - "[ NORMAL ] Iteration 198:\tk_eff = 1.207656\tres = 3.359E-04\n", - "[ NORMAL ] Iteration 199:\tk_eff = 1.208042\tres = 3.277E-04\n", - "[ NORMAL ] Iteration 200:\tk_eff = 1.208418\tres = 3.196E-04\n", - "[ NORMAL ] Iteration 201:\tk_eff = 1.208786\tres = 3.118E-04\n", - "[ NORMAL ] Iteration 202:\tk_eff = 1.209144\tres = 3.041E-04\n", - "[ NORMAL ] Iteration 203:\tk_eff = 1.209494\tres = 2.967E-04\n", - "[ NORMAL ] Iteration 204:\tk_eff = 1.209836\tres = 2.894E-04\n", - "[ NORMAL ] Iteration 205:\tk_eff = 1.210169\tres = 2.823E-04\n", - "[ NORMAL ] Iteration 206:\tk_eff = 1.210494\tres = 2.754E-04\n", - "[ NORMAL ] Iteration 207:\tk_eff = 1.210811\tres = 2.686E-04\n", - "[ NORMAL ] Iteration 208:\tk_eff = 1.211121\tres = 2.621E-04\n", - "[ NORMAL ] Iteration 209:\tk_eff = 1.211423\tres = 2.556E-04\n", - "[ NORMAL ] Iteration 210:\tk_eff = 1.211718\tres = 2.494E-04\n", - "[ NORMAL ] Iteration 211:\tk_eff = 1.212005\tres = 2.433E-04\n", - "[ NORMAL ] Iteration 212:\tk_eff = 1.212286\tres = 2.373E-04\n", - "[ NORMAL ] Iteration 213:\tk_eff = 1.212559\tres = 2.315E-04\n", - "[ NORMAL ] Iteration 214:\tk_eff = 1.212827\tres = 2.258E-04\n", - "[ NORMAL ] Iteration 215:\tk_eff = 1.213087\tres = 2.203E-04\n", - "[ NORMAL ] Iteration 216:\tk_eff = 1.213341\tres = 2.149E-04\n", - "[ NORMAL ] Iteration 217:\tk_eff = 1.213590\tres = 2.096E-04\n", - "[ NORMAL ] Iteration 218:\tk_eff = 1.213832\tres = 2.045E-04\n", - "[ NORMAL ] Iteration 219:\tk_eff = 1.214068\tres = 1.995E-04\n", - "[ NORMAL ] Iteration 220:\tk_eff = 1.214298\tres = 1.946E-04\n", - "[ NORMAL ] Iteration 221:\tk_eff = 1.214523\tres = 1.898E-04\n", - "[ NORMAL ] Iteration 222:\tk_eff = 1.214743\tres = 1.852E-04\n", - "[ NORMAL ] Iteration 223:\tk_eff = 1.214957\tres = 1.806E-04\n", - "[ NORMAL ] Iteration 224:\tk_eff = 1.215165\tres = 1.762E-04\n", - "[ NORMAL ] Iteration 225:\tk_eff = 1.215369\tres = 1.719E-04\n", - "[ NORMAL ] Iteration 226:\tk_eff = 1.215568\tres = 1.677E-04\n", - "[ NORMAL ] Iteration 227:\tk_eff = 1.215762\tres = 1.636E-04\n", - "[ NORMAL ] Iteration 228:\tk_eff = 1.215951\tres = 1.596E-04\n", - "[ NORMAL ] Iteration 229:\tk_eff = 1.216136\tres = 1.557E-04\n", - "[ NORMAL ] Iteration 230:\tk_eff = 1.216316\tres = 1.519E-04\n", - "[ NORMAL ] Iteration 231:\tk_eff = 1.216492\tres = 1.482E-04\n", - "[ NORMAL ] Iteration 232:\tk_eff = 1.216663\tres = 1.445E-04\n", - "[ NORMAL ] Iteration 233:\tk_eff = 1.216831\tres = 1.410E-04\n", - "[ NORMAL ] Iteration 234:\tk_eff = 1.216994\tres = 1.375E-04\n", - "[ NORMAL ] Iteration 235:\tk_eff = 1.217153\tres = 1.342E-04\n", - "[ NORMAL ] Iteration 236:\tk_eff = 1.217309\tres = 1.309E-04\n", - "[ NORMAL ] Iteration 237:\tk_eff = 1.217460\tres = 1.277E-04\n", - "[ NORMAL ] Iteration 238:\tk_eff = 1.217608\tres = 1.246E-04\n", - "[ NORMAL ] Iteration 239:\tk_eff = 1.217753\tres = 1.215E-04\n", - "[ NORMAL ] Iteration 240:\tk_eff = 1.217894\tres = 1.185E-04\n", - "[ NORMAL ] Iteration 241:\tk_eff = 1.218031\tres = 1.156E-04\n", - "[ NORMAL ] Iteration 242:\tk_eff = 1.218165\tres = 1.128E-04\n", - "[ NORMAL ] Iteration 243:\tk_eff = 1.218296\tres = 1.101E-04\n", - "[ NORMAL ] Iteration 244:\tk_eff = 1.218423\tres = 1.074E-04\n", - "[ NORMAL ] Iteration 245:\tk_eff = 1.218548\tres = 1.047E-04\n", - "[ NORMAL ] Iteration 246:\tk_eff = 1.218669\tres = 1.022E-04\n", - "[ NORMAL ] Iteration 247:\tk_eff = 1.218788\tres = 9.967E-05\n", - "[ NORMAL ] Iteration 248:\tk_eff = 1.218903\tres = 9.723E-05\n", - "[ NORMAL ] Iteration 249:\tk_eff = 1.219016\tres = 9.486E-05\n", - "[ NORMAL ] Iteration 250:\tk_eff = 1.219126\tres = 9.254E-05\n", - "[ NORMAL ] Iteration 251:\tk_eff = 1.219234\tres = 9.027E-05\n", - "[ NORMAL ] Iteration 252:\tk_eff = 1.219338\tres = 8.806E-05\n", - "[ NORMAL ] Iteration 253:\tk_eff = 1.219441\tres = 8.591E-05\n", - "[ NORMAL ] Iteration 254:\tk_eff = 1.219540\tres = 8.381E-05\n", - "[ NORMAL ] Iteration 255:\tk_eff = 1.219637\tres = 8.176E-05\n", - "[ NORMAL ] Iteration 256:\tk_eff = 1.219732\tres = 7.976E-05\n", - "[ NORMAL ] Iteration 257:\tk_eff = 1.219825\tres = 7.781E-05\n", - "[ NORMAL ] Iteration 258:\tk_eff = 1.219915\tres = 7.591E-05\n", - "[ NORMAL ] Iteration 259:\tk_eff = 1.220003\tres = 7.405E-05\n", - "[ NORMAL ] Iteration 260:\tk_eff = 1.220089\tres = 7.224E-05\n", - "[ NORMAL ] Iteration 261:\tk_eff = 1.220173\tres = 7.047E-05\n", - "[ NORMAL ] Iteration 262:\tk_eff = 1.220255\tres = 6.875E-05\n", - "[ NORMAL ] Iteration 263:\tk_eff = 1.220335\tres = 6.707E-05\n", - "[ NORMAL ] Iteration 264:\tk_eff = 1.220413\tres = 6.543E-05\n", - "[ NORMAL ] Iteration 265:\tk_eff = 1.220489\tres = 6.383E-05\n", - "[ NORMAL ] Iteration 266:\tk_eff = 1.220563\tres = 6.227E-05\n", - "[ NORMAL ] Iteration 267:\tk_eff = 1.220635\tres = 6.075E-05\n", - "[ NORMAL ] Iteration 268:\tk_eff = 1.220706\tres = 5.926E-05\n", - "[ NORMAL ] Iteration 269:\tk_eff = 1.220775\tres = 5.781E-05\n", - "[ NORMAL ] Iteration 270:\tk_eff = 1.220842\tres = 5.640E-05\n", - "[ NORMAL ] Iteration 271:\tk_eff = 1.220907\tres = 5.502E-05\n", - "[ NORMAL ] Iteration 272:\tk_eff = 1.220971\tres = 5.368E-05\n", - "[ NORMAL ] Iteration 273:\tk_eff = 1.221034\tres = 5.236E-05\n", - "[ NORMAL ] Iteration 274:\tk_eff = 1.221095\tres = 5.108E-05\n", - "[ NORMAL ] Iteration 275:\tk_eff = 1.221154\tres = 4.984E-05\n", - "[ NORMAL ] Iteration 276:\tk_eff = 1.221212\tres = 4.862E-05\n", - "[ NORMAL ] Iteration 277:\tk_eff = 1.221268\tres = 4.743E-05\n", - "[ NORMAL ] Iteration 278:\tk_eff = 1.221324\tres = 4.627E-05\n", - "[ NORMAL ] Iteration 279:\tk_eff = 1.221377\tres = 4.514E-05\n", - "[ NORMAL ] Iteration 280:\tk_eff = 1.221430\tres = 4.403E-05\n", - "[ NORMAL ] Iteration 281:\tk_eff = 1.221481\tres = 4.296E-05\n", - "[ NORMAL ] Iteration 282:\tk_eff = 1.221531\tres = 4.191E-05\n", - "[ NORMAL ] Iteration 283:\tk_eff = 1.221580\tres = 4.088E-05\n", - "[ NORMAL ] Iteration 284:\tk_eff = 1.221627\tres = 3.988E-05\n", - "[ NORMAL ] Iteration 285:\tk_eff = 1.221674\tres = 3.891E-05\n", - "[ NORMAL ] Iteration 286:\tk_eff = 1.221719\tres = 3.796E-05\n", - "[ NORMAL ] Iteration 287:\tk_eff = 1.221763\tres = 3.703E-05\n", - "[ NORMAL ] Iteration 288:\tk_eff = 1.221806\tres = 3.613E-05\n", - "[ NORMAL ] Iteration 289:\tk_eff = 1.221848\tres = 3.524E-05\n", - "[ NORMAL ] Iteration 290:\tk_eff = 1.221889\tres = 3.438E-05\n", - "[ NORMAL ] Iteration 291:\tk_eff = 1.221929\tres = 3.354E-05\n", - "[ NORMAL ] Iteration 292:\tk_eff = 1.221968\tres = 3.272E-05\n", - "[ NORMAL ] Iteration 293:\tk_eff = 1.222006\tres = 3.192E-05\n", - "[ NORMAL ] Iteration 294:\tk_eff = 1.222043\tres = 3.114E-05\n", - "[ NORMAL ] Iteration 295:\tk_eff = 1.222079\tres = 3.038E-05\n", - "[ NORMAL ] Iteration 296:\tk_eff = 1.222115\tres = 2.964E-05\n", - "[ NORMAL ] Iteration 297:\tk_eff = 1.222149\tres = 2.891E-05\n", - "[ NORMAL ] Iteration 298:\tk_eff = 1.222183\tres = 2.821E-05\n", - "[ NORMAL ] Iteration 299:\tk_eff = 1.222216\tres = 2.752E-05\n", - "[ NORMAL ] Iteration 300:\tk_eff = 1.222248\tres = 2.685E-05\n", - "[ NORMAL ] Iteration 301:\tk_eff = 1.222279\tres = 2.619E-05\n", - "[ NORMAL ] Iteration 302:\tk_eff = 1.222309\tres = 2.555E-05\n", - "[ NORMAL ] Iteration 303:\tk_eff = 1.222339\tres = 2.492E-05\n", - "[ NORMAL ] Iteration 304:\tk_eff = 1.222368\tres = 2.432E-05\n", - "[ NORMAL ] Iteration 305:\tk_eff = 1.222396\tres = 2.372E-05\n", - "[ NORMAL ] Iteration 306:\tk_eff = 1.222424\tres = 2.314E-05\n", - "[ NORMAL ] Iteration 307:\tk_eff = 1.222451\tres = 2.258E-05\n", - "[ NORMAL ] Iteration 308:\tk_eff = 1.222477\tres = 2.202E-05\n", - "[ NORMAL ] Iteration 309:\tk_eff = 1.222503\tres = 2.149E-05\n", - "[ NORMAL ] Iteration 310:\tk_eff = 1.222528\tres = 2.096E-05\n", - "[ NORMAL ] Iteration 311:\tk_eff = 1.222552\tres = 2.045E-05\n", - "[ NORMAL ] Iteration 312:\tk_eff = 1.222576\tres = 1.995E-05\n", - "[ NORMAL ] Iteration 313:\tk_eff = 1.222599\tres = 1.946E-05\n", - "[ NORMAL ] Iteration 314:\tk_eff = 1.222622\tres = 1.899E-05\n", - "[ NORMAL ] Iteration 315:\tk_eff = 1.222644\tres = 1.852E-05\n", - "[ NORMAL ] Iteration 316:\tk_eff = 1.222665\tres = 1.807E-05\n", - "[ NORMAL ] Iteration 317:\tk_eff = 1.222686\tres = 1.763E-05\n", - "[ NORMAL ] Iteration 318:\tk_eff = 1.222707\tres = 1.720E-05\n", - "[ NORMAL ] Iteration 319:\tk_eff = 1.222727\tres = 1.678E-05\n", - "[ NORMAL ] Iteration 320:\tk_eff = 1.222746\tres = 1.637E-05\n", - "[ NORMAL ] Iteration 321:\tk_eff = 1.222766\tres = 1.597E-05\n", - "[ NORMAL ] Iteration 322:\tk_eff = 1.222784\tres = 1.558E-05\n", - "[ NORMAL ] Iteration 323:\tk_eff = 1.222802\tres = 1.520E-05\n", - "[ NORMAL ] Iteration 324:\tk_eff = 1.222820\tres = 1.483E-05\n", - "[ NORMAL ] Iteration 325:\tk_eff = 1.222837\tres = 1.446E-05\n", - "[ NORMAL ] Iteration 326:\tk_eff = 1.222854\tres = 1.411E-05\n", - "[ NORMAL ] Iteration 327:\tk_eff = 1.222870\tres = 1.377E-05\n", - "[ NORMAL ] Iteration 328:\tk_eff = 1.222886\tres = 1.343E-05\n", - "[ NORMAL ] Iteration 329:\tk_eff = 1.222902\tres = 1.310E-05\n", - "[ NORMAL ] Iteration 330:\tk_eff = 1.222917\tres = 1.278E-05\n", - "[ NORMAL ] Iteration 331:\tk_eff = 1.222932\tres = 1.247E-05\n", - "[ NORMAL ] Iteration 332:\tk_eff = 1.222947\tres = 1.216E-05\n", - "[ NORMAL ] Iteration 333:\tk_eff = 1.222961\tres = 1.187E-05\n", - "[ NORMAL ] Iteration 334:\tk_eff = 1.222975\tres = 1.158E-05\n", - "[ NORMAL ] Iteration 335:\tk_eff = 1.222988\tres = 1.129E-05\n", - "[ NORMAL ] Iteration 336:\tk_eff = 1.223001\tres = 1.102E-05\n", - "[ NORMAL ] Iteration 337:\tk_eff = 1.223014\tres = 1.075E-05\n", - "[ NORMAL ] Iteration 338:\tk_eff = 1.223027\tres = 1.049E-05\n", - "[ NORMAL ] Iteration 339:\tk_eff = 1.223039\tres = 1.023E-05\n" + "[ NORMAL ] Iteration 0:\tk_eff = 0.495816\tres = 0.000E+00\n", + "[ NORMAL ] Iteration 1:\tk_eff = 0.557477\tres = 5.042E-01\n", + "[ NORMAL ] Iteration 2:\tk_eff = 0.518301\tres = 1.244E-01\n", + "[ NORMAL ] Iteration 3:\tk_eff = 0.509212\tres = 7.027E-02\n", + "[ NORMAL ] Iteration 4:\tk_eff = 0.496490\tres = 1.754E-02\n", + "[ NORMAL ] Iteration 5:\tk_eff = 0.488581\tres = 2.498E-02\n", + "[ NORMAL ] Iteration 6:\tk_eff = 0.482897\tres = 1.593E-02\n", + "[ NORMAL ] Iteration 7:\tk_eff = 0.479775\tres = 1.163E-02\n", + "[ NORMAL ] Iteration 8:\tk_eff = 0.478834\tres = 6.465E-03\n", + "[ NORMAL ] Iteration 9:\tk_eff = 0.479871\tres = 1.960E-03\n", + "[ NORMAL ] Iteration 10:\tk_eff = 0.482684\tres = 2.165E-03\n", + "[ NORMAL ] Iteration 11:\tk_eff = 0.487084\tres = 5.860E-03\n", + "[ NORMAL ] Iteration 12:\tk_eff = 0.492900\tres = 9.116E-03\n", + "[ NORMAL ] Iteration 13:\tk_eff = 0.499971\tres = 1.194E-02\n", + "[ NORMAL ] Iteration 14:\tk_eff = 0.508153\tres = 1.435E-02\n", + "[ NORMAL ] Iteration 15:\tk_eff = 0.517312\tres = 1.637E-02\n", + "[ NORMAL ] Iteration 16:\tk_eff = 0.527325\tres = 1.802E-02\n", + "[ NORMAL ] Iteration 17:\tk_eff = 0.538079\tres = 1.936E-02\n", + "[ NORMAL ] Iteration 18:\tk_eff = 0.549472\tres = 2.039E-02\n", + "[ NORMAL ] Iteration 19:\tk_eff = 0.561410\tres = 2.117E-02\n", + "[ NORMAL ] Iteration 20:\tk_eff = 0.573807\tres = 2.173E-02\n", + "[ NORMAL ] Iteration 21:\tk_eff = 0.586585\tres = 2.208E-02\n", + "[ NORMAL ] Iteration 22:\tk_eff = 0.599674\tres = 2.227E-02\n", + "[ NORMAL ] Iteration 23:\tk_eff = 0.613007\tres = 2.231E-02\n", + "[ NORMAL ] Iteration 24:\tk_eff = 0.626528\tres = 2.223E-02\n", + "[ NORMAL ] Iteration 25:\tk_eff = 0.640181\tres = 2.206E-02\n", + "[ NORMAL ] Iteration 26:\tk_eff = 0.653920\tres = 2.179E-02\n", + "[ NORMAL ] Iteration 27:\tk_eff = 0.667700\tres = 2.146E-02\n", + "[ NORMAL ] Iteration 28:\tk_eff = 0.681483\tres = 2.107E-02\n", + "[ NORMAL ] Iteration 29:\tk_eff = 0.695234\tres = 2.064E-02\n", + "[ NORMAL ] Iteration 30:\tk_eff = 0.708921\tres = 2.018E-02\n", + "[ NORMAL ] Iteration 31:\tk_eff = 0.722515\tres = 1.969E-02\n", + "[ NORMAL ] Iteration 32:\tk_eff = 0.735993\tres = 1.918E-02\n", + "[ NORMAL ] Iteration 33:\tk_eff = 0.749331\tres = 1.865E-02\n", + "[ NORMAL ] Iteration 34:\tk_eff = 0.762510\tres = 1.812E-02\n", + "[ NORMAL ] Iteration 35:\tk_eff = 0.775514\tres = 1.759E-02\n", + "[ NORMAL ] Iteration 36:\tk_eff = 0.788326\tres = 1.705E-02\n", + "[ NORMAL ] Iteration 37:\tk_eff = 0.800935\tres = 1.652E-02\n", + "[ NORMAL ] Iteration 38:\tk_eff = 0.813328\tres = 1.599E-02\n", + "[ NORMAL ] Iteration 39:\tk_eff = 0.825497\tres = 1.547E-02\n", + "[ NORMAL ] Iteration 40:\tk_eff = 0.837433\tres = 1.496E-02\n", + "[ NORMAL ] Iteration 41:\tk_eff = 0.849130\tres = 1.446E-02\n", + "[ NORMAL ] Iteration 42:\tk_eff = 0.860583\tres = 1.397E-02\n", + "[ NORMAL ] Iteration 43:\tk_eff = 0.871788\tres = 1.349E-02\n", + "[ NORMAL ] Iteration 44:\tk_eff = 0.882742\tres = 1.302E-02\n", + "[ NORMAL ] Iteration 45:\tk_eff = 0.893442\tres = 1.256E-02\n", + "[ NORMAL ] Iteration 46:\tk_eff = 0.903887\tres = 1.212E-02\n", + "[ NORMAL ] Iteration 47:\tk_eff = 0.914077\tres = 1.169E-02\n", + "[ NORMAL ] Iteration 48:\tk_eff = 0.924012\tres = 1.127E-02\n", + "[ NORMAL ] Iteration 49:\tk_eff = 0.933693\tres = 1.087E-02\n", + "[ NORMAL ] Iteration 50:\tk_eff = 0.943122\tres = 1.048E-02\n", + "[ NORMAL ] Iteration 51:\tk_eff = 0.952299\tres = 1.010E-02\n", + "[ NORMAL ] Iteration 52:\tk_eff = 0.961228\tres = 9.730E-03\n", + "[ NORMAL ] Iteration 53:\tk_eff = 0.969911\tres = 9.377E-03\n", + "[ NORMAL ] Iteration 54:\tk_eff = 0.978351\tres = 9.033E-03\n", + "[ NORMAL ] Iteration 55:\tk_eff = 0.986552\tres = 8.702E-03\n", + "[ NORMAL ] Iteration 56:\tk_eff = 0.994517\tres = 8.382E-03\n", + "[ NORMAL ] Iteration 57:\tk_eff = 1.002250\tres = 8.074E-03\n", + "[ NORMAL ] Iteration 58:\tk_eff = 1.009755\tres = 7.776E-03\n", + "[ NORMAL ] Iteration 59:\tk_eff = 1.017037\tres = 7.488E-03\n", + "[ NORMAL ] Iteration 60:\tk_eff = 1.024099\tres = 7.211E-03\n", + "[ NORMAL ] Iteration 61:\tk_eff = 1.030947\tres = 6.944E-03\n", + "[ NORMAL ] Iteration 62:\tk_eff = 1.037584\tres = 6.687E-03\n", + "[ NORMAL ] Iteration 63:\tk_eff = 1.044016\tres = 6.438E-03\n", + "[ NORMAL ] Iteration 64:\tk_eff = 1.050247\tres = 6.199E-03\n", + "[ NORMAL ] Iteration 65:\tk_eff = 1.056282\tres = 5.969E-03\n", + "[ NORMAL ] Iteration 66:\tk_eff = 1.062125\tres = 5.746E-03\n", + "[ NORMAL ] Iteration 67:\tk_eff = 1.067781\tres = 5.531E-03\n", + "[ NORMAL ] Iteration 68:\tk_eff = 1.073255\tres = 5.326E-03\n", + "[ NORMAL ] Iteration 69:\tk_eff = 1.078552\tres = 5.126E-03\n", + "[ NORMAL ] Iteration 70:\tk_eff = 1.083676\tres = 4.936E-03\n", + "[ NORMAL ] Iteration 71:\tk_eff = 1.088632\tres = 4.751E-03\n", + "[ NORMAL ] Iteration 72:\tk_eff = 1.093425\tres = 4.573E-03\n", + "[ NORMAL ] Iteration 73:\tk_eff = 1.098058\tres = 4.403E-03\n", + "[ NORMAL ] Iteration 74:\tk_eff = 1.102537\tres = 4.237E-03\n", + "[ NORMAL ] Iteration 75:\tk_eff = 1.106866\tres = 4.079E-03\n", + "[ NORMAL ] Iteration 76:\tk_eff = 1.111049\tres = 3.926E-03\n", + "[ NORMAL ] Iteration 77:\tk_eff = 1.115090\tres = 3.779E-03\n", + "[ NORMAL ] Iteration 78:\tk_eff = 1.118995\tres = 3.638E-03\n", + "[ NORMAL ] Iteration 79:\tk_eff = 1.122766\tres = 3.501E-03\n", + "[ NORMAL ] Iteration 80:\tk_eff = 1.126408\tres = 3.370E-03\n", + "[ NORMAL ] Iteration 81:\tk_eff = 1.129925\tres = 3.244E-03\n", + "[ NORMAL ] Iteration 82:\tk_eff = 1.133320\tres = 3.122E-03\n", + "[ NORMAL ] Iteration 83:\tk_eff = 1.136597\tres = 3.005E-03\n", + "[ NORMAL ] Iteration 84:\tk_eff = 1.139761\tres = 2.892E-03\n", + "[ NORMAL ] Iteration 85:\tk_eff = 1.142815\tres = 2.783E-03\n", + "[ NORMAL ] Iteration 86:\tk_eff = 1.145761\tres = 2.679E-03\n", + "[ NORMAL ] Iteration 87:\tk_eff = 1.148605\tres = 2.579E-03\n", + "[ NORMAL ] Iteration 88:\tk_eff = 1.151348\tres = 2.482E-03\n", + "[ NORMAL ] Iteration 89:\tk_eff = 1.153994\tres = 2.388E-03\n", + "[ NORMAL ] Iteration 90:\tk_eff = 1.156547\tres = 2.299E-03\n", + "[ NORMAL ] Iteration 91:\tk_eff = 1.159009\tres = 2.212E-03\n", + "[ NORMAL ] Iteration 92:\tk_eff = 1.161384\tres = 2.129E-03\n", + "[ NORMAL ] Iteration 93:\tk_eff = 1.163674\tres = 2.049E-03\n", + "[ NORMAL ] Iteration 94:\tk_eff = 1.165882\tres = 1.972E-03\n", + "[ NORMAL ] Iteration 95:\tk_eff = 1.168012\tres = 1.898E-03\n", + "[ NORMAL ] Iteration 96:\tk_eff = 1.170064\tres = 1.827E-03\n", + "[ NORMAL ] Iteration 97:\tk_eff = 1.172043\tres = 1.757E-03\n", + "[ NORMAL ] Iteration 98:\tk_eff = 1.173951\tres = 1.692E-03\n", + "[ NORMAL ] Iteration 99:\tk_eff = 1.175790\tres = 1.628E-03\n", + "[ NORMAL ] Iteration 100:\tk_eff = 1.177562\tres = 1.566E-03\n", + "[ NORMAL ] Iteration 101:\tk_eff = 1.179269\tres = 1.507E-03\n", + "[ NORMAL ] Iteration 102:\tk_eff = 1.180916\tres = 1.450E-03\n", + "[ NORMAL ] Iteration 103:\tk_eff = 1.182502\tres = 1.396E-03\n", + "[ NORMAL ] Iteration 104:\tk_eff = 1.184030\tres = 1.343E-03\n", + "[ NORMAL ] Iteration 105:\tk_eff = 1.185503\tres = 1.292E-03\n", + "[ NORMAL ] Iteration 106:\tk_eff = 1.186922\tres = 1.244E-03\n", + "[ NORMAL ] Iteration 107:\tk_eff = 1.188288\tres = 1.197E-03\n", + "[ NORMAL ] Iteration 108:\tk_eff = 1.189606\tres = 1.151E-03\n", + "[ NORMAL ] Iteration 109:\tk_eff = 1.190874\tres = 1.108E-03\n", + "[ NORMAL ] Iteration 110:\tk_eff = 1.192096\tres = 1.066E-03\n", + "[ NORMAL ] Iteration 111:\tk_eff = 1.193273\tres = 1.026E-03\n", + "[ NORMAL ] Iteration 112:\tk_eff = 1.194407\tres = 9.870E-04\n", + "[ NORMAL ] Iteration 113:\tk_eff = 1.195499\tres = 9.504E-04\n", + "[ NORMAL ] Iteration 114:\tk_eff = 1.196550\tres = 9.140E-04\n", + "[ NORMAL ] Iteration 115:\tk_eff = 1.197563\tres = 8.792E-04\n", + "[ NORMAL ] Iteration 116:\tk_eff = 1.198538\tres = 8.468E-04\n", + "[ NORMAL ] Iteration 117:\tk_eff = 1.199477\tres = 8.140E-04\n", + "[ NORMAL ] Iteration 118:\tk_eff = 1.200382\tres = 7.837E-04\n", + "[ NORMAL ] Iteration 119:\tk_eff = 1.201253\tres = 7.539E-04\n", + "[ NORMAL ] Iteration 120:\tk_eff = 1.202091\tres = 7.257E-04\n", + "[ NORMAL ] Iteration 121:\tk_eff = 1.202898\tres = 6.979E-04\n", + "[ NORMAL ] Iteration 122:\tk_eff = 1.203676\tres = 6.716E-04\n", + "[ NORMAL ] Iteration 123:\tk_eff = 1.204424\tres = 6.465E-04\n", + "[ NORMAL ] Iteration 124:\tk_eff = 1.205144\tres = 6.217E-04\n", + "[ NORMAL ] Iteration 125:\tk_eff = 1.205838\tres = 5.979E-04\n", + "[ NORMAL ] Iteration 126:\tk_eff = 1.206505\tres = 5.760E-04\n", + "[ NORMAL ] Iteration 127:\tk_eff = 1.207148\tres = 5.532E-04\n", + "[ NORMAL ] Iteration 128:\tk_eff = 1.207767\tres = 5.325E-04\n", + "[ NORMAL ] Iteration 129:\tk_eff = 1.208363\tres = 5.125E-04\n", + "[ NORMAL ] Iteration 130:\tk_eff = 1.208936\tres = 4.935E-04\n", + "[ NORMAL ] Iteration 131:\tk_eff = 1.209487\tres = 4.744E-04\n", + "[ NORMAL ] Iteration 132:\tk_eff = 1.210018\tres = 4.559E-04\n", + "[ NORMAL ] Iteration 133:\tk_eff = 1.210529\tres = 4.392E-04\n", + "[ NORMAL ] Iteration 134:\tk_eff = 1.211021\tres = 4.223E-04\n", + "[ NORMAL ] Iteration 135:\tk_eff = 1.211495\tres = 4.060E-04\n", + "[ NORMAL ] Iteration 136:\tk_eff = 1.211951\tres = 3.914E-04\n", + "[ NORMAL ] Iteration 137:\tk_eff = 1.212390\tres = 3.763E-04\n", + "[ NORMAL ] Iteration 138:\tk_eff = 1.212812\tres = 3.623E-04\n", + "[ NORMAL ] Iteration 139:\tk_eff = 1.213217\tres = 3.480E-04\n", + "[ NORMAL ] Iteration 140:\tk_eff = 1.213608\tres = 3.344E-04\n", + "[ NORMAL ] Iteration 141:\tk_eff = 1.213984\tres = 3.223E-04\n", + "[ NORMAL ] Iteration 142:\tk_eff = 1.214347\tres = 3.097E-04\n", + "[ NORMAL ] Iteration 143:\tk_eff = 1.214695\tres = 2.985E-04\n", + "[ NORMAL ] Iteration 144:\tk_eff = 1.215031\tres = 2.869E-04\n", + "[ NORMAL ] Iteration 145:\tk_eff = 1.215352\tres = 2.763E-04\n", + "[ NORMAL ] Iteration 146:\tk_eff = 1.215663\tres = 2.648E-04\n", + "[ NORMAL ] Iteration 147:\tk_eff = 1.215962\tres = 2.552E-04\n", + "[ NORMAL ] Iteration 148:\tk_eff = 1.216249\tres = 2.460E-04\n", + "[ NORMAL ] Iteration 149:\tk_eff = 1.216526\tres = 2.362E-04\n", + "[ NORMAL ] Iteration 150:\tk_eff = 1.216792\tres = 2.279E-04\n", + "[ NORMAL ] Iteration 151:\tk_eff = 1.217048\tres = 2.188E-04\n", + "[ NORMAL ] Iteration 152:\tk_eff = 1.217294\tres = 2.100E-04\n", + "[ NORMAL ] Iteration 153:\tk_eff = 1.217531\tres = 2.024E-04\n", + "[ NORMAL ] Iteration 154:\tk_eff = 1.217759\tres = 1.948E-04\n", + "[ NORMAL ] Iteration 155:\tk_eff = 1.217978\tres = 1.872E-04\n", + "[ NORMAL ] Iteration 156:\tk_eff = 1.218189\tres = 1.799E-04\n", + "[ NORMAL ] Iteration 157:\tk_eff = 1.218393\tres = 1.733E-04\n", + "[ NORMAL ] Iteration 158:\tk_eff = 1.218588\tres = 1.668E-04\n", + "[ NORMAL ] Iteration 159:\tk_eff = 1.218776\tres = 1.600E-04\n", + "[ NORMAL ] Iteration 160:\tk_eff = 1.218957\tres = 1.544E-04\n", + "[ NORMAL ] Iteration 161:\tk_eff = 1.219131\tres = 1.485E-04\n", + "[ NORMAL ] Iteration 162:\tk_eff = 1.219298\tres = 1.428E-04\n", + "[ NORMAL ] Iteration 163:\tk_eff = 1.219459\tres = 1.374E-04\n", + "[ NORMAL ] Iteration 164:\tk_eff = 1.219614\tres = 1.321E-04\n", + "[ NORMAL ] Iteration 165:\tk_eff = 1.219763\tres = 1.270E-04\n", + "[ NORMAL ] Iteration 166:\tk_eff = 1.219906\tres = 1.221E-04\n", + "[ NORMAL ] Iteration 167:\tk_eff = 1.220044\tres = 1.175E-04\n", + "[ NORMAL ] Iteration 168:\tk_eff = 1.220177\tres = 1.130E-04\n", + "[ NORMAL ] Iteration 169:\tk_eff = 1.220304\tres = 1.084E-04\n", + "[ NORMAL ] Iteration 170:\tk_eff = 1.220427\tres = 1.045E-04\n", + "[ NORMAL ] Iteration 171:\tk_eff = 1.220545\tres = 1.007E-04\n", + "[ NORMAL ] Iteration 172:\tk_eff = 1.220659\tres = 9.678E-05\n", + "[ NORMAL ] Iteration 173:\tk_eff = 1.220768\tres = 9.304E-05\n", + "[ NORMAL ] Iteration 174:\tk_eff = 1.220874\tres = 8.984E-05\n", + "[ NORMAL ] Iteration 175:\tk_eff = 1.220975\tres = 8.640E-05\n", + "[ NORMAL ] Iteration 176:\tk_eff = 1.221073\tres = 8.326E-05\n", + "[ NORMAL ] Iteration 177:\tk_eff = 1.221166\tres = 7.985E-05\n", + "[ NORMAL ] Iteration 178:\tk_eff = 1.221256\tres = 7.662E-05\n", + "[ NORMAL ] Iteration 179:\tk_eff = 1.221343\tres = 7.371E-05\n", + "[ NORMAL ] Iteration 180:\tk_eff = 1.221426\tres = 7.091E-05\n", + "[ NORMAL ] Iteration 181:\tk_eff = 1.221506\tres = 6.827E-05\n", + "[ NORMAL ] Iteration 182:\tk_eff = 1.221583\tres = 6.560E-05\n", + "[ NORMAL ] Iteration 183:\tk_eff = 1.221657\tres = 6.320E-05\n", + "[ NORMAL ] Iteration 184:\tk_eff = 1.221729\tres = 6.067E-05\n", + "[ NORMAL ] Iteration 185:\tk_eff = 1.221797\tres = 5.829E-05\n", + "[ NORMAL ] Iteration 186:\tk_eff = 1.221863\tres = 5.641E-05\n", + "[ NORMAL ] Iteration 187:\tk_eff = 1.221927\tres = 5.382E-05\n", + "[ NORMAL ] Iteration 188:\tk_eff = 1.221987\tres = 5.196E-05\n", + "[ NORMAL ] Iteration 189:\tk_eff = 1.222046\tres = 4.968E-05\n", + "[ NORMAL ] Iteration 190:\tk_eff = 1.222102\tres = 4.810E-05\n", + "[ NORMAL ] Iteration 191:\tk_eff = 1.222157\tres = 4.617E-05\n", + "[ NORMAL ] Iteration 192:\tk_eff = 1.222209\tres = 4.456E-05\n", + "[ NORMAL ] Iteration 193:\tk_eff = 1.222260\tres = 4.287E-05\n", + "[ NORMAL ] Iteration 194:\tk_eff = 1.222308\tres = 4.122E-05\n", + "[ NORMAL ] Iteration 195:\tk_eff = 1.222355\tres = 3.971E-05\n", + "[ NORMAL ] Iteration 196:\tk_eff = 1.222399\tres = 3.805E-05\n", + "[ NORMAL ] Iteration 197:\tk_eff = 1.222442\tres = 3.657E-05\n", + "[ NORMAL ] Iteration 198:\tk_eff = 1.222484\tres = 3.521E-05\n", + "[ NORMAL ] Iteration 199:\tk_eff = 1.222523\tres = 3.381E-05\n", + "[ NORMAL ] Iteration 200:\tk_eff = 1.222561\tres = 3.262E-05\n", + "[ NORMAL ] Iteration 201:\tk_eff = 1.222598\tres = 3.107E-05\n", + "[ NORMAL ] Iteration 202:\tk_eff = 1.222634\tres = 2.985E-05\n", + "[ NORMAL ] Iteration 203:\tk_eff = 1.222668\tres = 2.902E-05\n", + "[ NORMAL ] Iteration 204:\tk_eff = 1.222700\tres = 2.804E-05\n", + "[ NORMAL ] Iteration 205:\tk_eff = 1.222732\tres = 2.639E-05\n", + "[ NORMAL ] Iteration 206:\tk_eff = 1.222762\tres = 2.577E-05\n", + "[ NORMAL ] Iteration 207:\tk_eff = 1.222792\tres = 2.487E-05\n", + "[ NORMAL ] Iteration 208:\tk_eff = 1.222820\tres = 2.400E-05\n", + "[ NORMAL ] Iteration 209:\tk_eff = 1.222847\tres = 2.291E-05\n", + "[ NORMAL ] Iteration 210:\tk_eff = 1.222872\tres = 2.200E-05\n", + "[ NORMAL ] Iteration 211:\tk_eff = 1.222897\tres = 2.121E-05\n", + "[ NORMAL ] Iteration 212:\tk_eff = 1.222921\tres = 2.040E-05\n", + "[ NORMAL ] Iteration 213:\tk_eff = 1.222944\tres = 1.964E-05\n", + "[ NORMAL ] Iteration 214:\tk_eff = 1.222967\tres = 1.882E-05\n", + "[ NORMAL ] Iteration 215:\tk_eff = 1.222988\tres = 1.821E-05\n", + "[ NORMAL ] Iteration 216:\tk_eff = 1.223009\tres = 1.763E-05\n", + "[ NORMAL ] Iteration 217:\tk_eff = 1.223029\tres = 1.690E-05\n", + "[ NORMAL ] Iteration 218:\tk_eff = 1.223048\tres = 1.630E-05\n", + "[ NORMAL ] Iteration 219:\tk_eff = 1.223067\tres = 1.572E-05\n", + "[ NORMAL ] Iteration 220:\tk_eff = 1.223084\tres = 1.507E-05\n", + "[ NORMAL ] Iteration 221:\tk_eff = 1.223101\tres = 1.427E-05\n", + "[ NORMAL ] Iteration 222:\tk_eff = 1.223117\tres = 1.394E-05\n", + "[ NORMAL ] Iteration 223:\tk_eff = 1.223133\tres = 1.330E-05\n", + "[ NORMAL ] Iteration 224:\tk_eff = 1.223148\tres = 1.298E-05\n", + "[ NORMAL ] Iteration 225:\tk_eff = 1.223163\tres = 1.241E-05\n", + "[ NORMAL ] Iteration 226:\tk_eff = 1.223177\tres = 1.167E-05\n", + "[ NORMAL ] Iteration 227:\tk_eff = 1.223190\tres = 1.151E-05\n", + "[ NORMAL ] Iteration 228:\tk_eff = 1.223203\tres = 1.073E-05\n", + "[ NORMAL ] Iteration 229:\tk_eff = 1.223215\tres = 1.050E-05\n", + "[ NORMAL ] Iteration 230:\tk_eff = 1.223227\tres = 1.000E-05\n" ] } ], @@ -1876,8 +1699,8 @@ "output_type": "stream", "text": [ "openmc keff = 1.223474\n", - "openmoc keff = 1.223039\n", - "bias [pcm]: -43.5\n" + "openmoc keff = 1.223227\n", + "bias [pcm]: -24.7\n" ] } ], @@ -1962,9 +1785,9 @@ }, { "data": { - "image/png": "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\nYwHYAAAAAElFTkSuQmCC\n", + "image/png": "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\nRK5CYII=\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -1973,7 +1796,7 @@ ], "source": [ "# Create a loglog plot of the U-235 continuous-energy fission cross section \n", - "plt.loglog(fission.xs.x, fission.xs.y, color='b', linewidth=1)\n", + "plt.loglog(fission.xs['294K'].x, fission.xs['294K'].y, color='b', linewidth=1)\n", "\n", "# Extract energy group bounds and MGXS values to plot\n", "nufission = xs_library[fuel_cell.id]['fission']\n", @@ -1983,7 +1806,7 @@ "y = np.squeeze(y)\n", "\n", "# Fix low energy bound to the value defined by the ACE library\n", - "x[0] = fission.xs.x[0]\n", + "x[0] = fission.xs['294K'].x[0]\n", "\n", "# Extend the mgxs values array for matplotlib's step plot\n", "y = np.insert(y, 0, y[0])\n", @@ -2046,9 +1869,9 @@ "outputs": [ { "data": { - "image/png": "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\nZlZT/x9xJfW8VvykSgAAAABJRU5ErkJggg==\n", + "image/png": "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\nfn35+EIOpHUAAAAASUVORK5CYII=\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -2088,21 +1911,21 @@ ], "metadata": { "kernelspec": { - "display_name": "Python 2", + "display_name": "Python 3", "language": "python", - "name": "python2" + "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", - "version": 2 + "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", - "pygments_lexer": "ipython2", - "version": "2.7.12" + "pygments_lexer": "ipython3", + "version": "3.5.2" } }, "nbformat": 4, diff --git a/docs/source/pythonapi/examples/mgxs-part-iii.ipynb b/docs/source/pythonapi/examples/mgxs-part-iii.ipynb index af9f2878f..0c8b843be 100644 --- a/docs/source/pythonapi/examples/mgxs-part-iii.ipynb +++ b/docs/source/pythonapi/examples/mgxs-part-iii.ipynb @@ -32,7 +32,7 @@ "name": "stderr", "output_type": "stream", "text": [ - "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/matplotlib/__init__.py:1357: UserWarning: This call to matplotlib.use() has no effect\n", + "/home/romano/miniconda3/envs/default/lib/python3.5/site-packages/matplotlib/__init__.py:1350: UserWarning: This call to matplotlib.use() has no effect\n", "because the backend has already been chosen;\n", "matplotlib.use() must be called *before* pylab, matplotlib.pyplot,\n", "or matplotlib.backends is imported for the first time.\n", @@ -135,7 +135,6 @@ "source": [ "# Instantiate a Materials object\n", "materials_file = openmc.Materials((fuel, water, zircaloy))\n", - "materials_file.default_xs = '71c'\n", "\n", "# Export to \"materials.xml\"\n", "materials_file.export_to_xml()" @@ -458,7 +457,7 @@ "outputs": [ { "data": { - "image/png": "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\n", + "image/png": "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\n", "text/plain": [ "" ] @@ -716,24 +715,37 @@ "output_type": "stream", "text": [ "\n", - " .d88888b. 888b d888 .d8888b.\n", - " d88P\" \"Y88b 8888b d8888 d88P Y88b\n", - " 888 888 88888b.d88888 888 888\n", - " 888 888 88888b. .d88b. 88888b. 888Y88888P888 888 \n", - " 888 888 888 \"88b d8P Y8b 888 \"88b 888 Y888P 888 888 \n", - " 888 888 888 888 88888888 888 888 888 Y8P 888 888 888\n", - " Y88b. .d88P 888 d88P Y8b. 888 888 888 \" 888 Y88b d88P\n", - " \"Y88888P\" 88888P\" \"Y8888 888 888 888 888 \"Y8888P\"\n", - "__________________888______________________________________________________\n", - " 888\n", - " 888\n", + " %%%%%%%%%%%%%%%\n", + " %%%%%%%%%%%%%%%%%%%%%%%%\n", + " %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\n", + " %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\n", + " %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\n", + " %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\n", + " %%%%%%%%%%%%%%%%%%%%%%%%\n", + " %%%%%%%%%%%%%%%%%%%%%%%%\n", + " ############### %%%%%%%%%%%%%%%%%%%%%%%%\n", + " ################## %%%%%%%%%%%%%%%%%%%%%%%\n", + " ################### %%%%%%%%%%%%%%%%%%%%%%%\n", + " #################### %%%%%%%%%%%%%%%%%%%%%%\n", + " ##################### %%%%%%%%%%%%%%%%%%%%%\n", + " ###################### %%%%%%%%%%%%%%%%%%%%\n", + " ####################### %%%%%%%%%%%%%%%%%%\n", + " ####################### %%%%%%%%%%%%%%%%%\n", + " ###################### %%%%%%%%%%%%%%%%%\n", + " #################### %%%%%%%%%%%%%%%%%\n", + " ################# %%%%%%%%%%%%%%%%%\n", + " ############### %%%%%%%%%%%%%%%%\n", + " ############ %%%%%%%%%%%%%%%\n", + " ######## %%%%%%%%%%%%%%\n", + " %%%%%%%%%%%\n", "\n", - " Copyright: 2011-2016 Massachusetts Institute of Technology\n", - " License: http://openmc.readthedocs.io/en/latest/license.html\n", - " Version: 0.8.0\n", - " Git SHA1: be7e6e035d22944a8c80ca32f99935b6822854c9\n", - " Date/Time: 2016-08-10 18:33:28\n", - " MPI Processes: 1\n", + " | The OpenMC Monte Carlo Code\n", + " Copyright | 2011-2016 Massachusetts Institute of Technology\n", + " License | http://openmc.readthedocs.io/en/latest/license.html\n", + " Version | 0.8.0\n", + " Git SHA1 | fbebf7bf709fe2fe1813af95bff9b29c0d59312c\n", + " Date/Time | 2016-08-31 10:44:00\n", + " OpenMP Threads | 4\n", "\n", " ===========================================================================\n", " ========================> INITIALIZATION <=========================\n", @@ -743,13 +755,13 @@ " Reading geometry XML file...\n", " Reading cross sections XML file...\n", " Reading materials XML file...\n", - " Reading U235.71c from /Users/sam/git/openmc-sam/data/nndc_hdf5/U235_71c.h5\n", - " Reading U238.71c from /Users/sam/git/openmc-sam/data/nndc_hdf5/U238_71c.h5\n", - " Reading O16.71c from /Users/sam/git/openmc-sam/data/nndc_hdf5/O16_71c.h5\n", - " Reading H1.71c from /Users/sam/git/openmc-sam/data/nndc_hdf5/H1_71c.h5\n", - " Reading B10.71c from /Users/sam/git/openmc-sam/data/nndc_hdf5/B10_71c.h5\n", - " Reading Zr90.71c from /Users/sam/git/openmc-sam/data/nndc_hdf5/Zr90_71c.h5\n", - " Maximum neutron transport energy: 20.0000 MeV for U235.71c\n", + " Reading U235 from /home/romano/openmc/data/nndc_hdf5/U235.h5\n", + " Reading U238 from /home/romano/openmc/data/nndc_hdf5/U238.h5\n", + " Reading O16 from /home/romano/openmc/data/nndc_hdf5/O16.h5\n", + " Reading H1 from /home/romano/openmc/data/nndc_hdf5/H1.h5\n", + " Reading B10 from /home/romano/openmc/data/nndc_hdf5/B10.h5\n", + " Reading Zr90 from /home/romano/openmc/data/nndc_hdf5/Zr90.h5\n", + " Maximum neutron transport energy: 20.0000 MeV for U235\n", " Reading tallies XML file...\n", " Building neighboring cells lists for each surface...\n", " Initializing source particles...\n", @@ -784,32 +796,32 @@ " 22/1 1.04175 1.02516 +/- 0.00588\n", " 23/1 1.01909 1.02469 +/- 0.00543\n", " 24/1 1.07119 1.02801 +/- 0.00603\n", - " 25/1 0.97414 1.02442 +/- 0.00666\n", - " 26/1 1.04709 1.02584 +/- 0.00639\n", - " 27/1 1.05872 1.02777 +/- 0.00631\n", - " 28/1 1.03930 1.02841 +/- 0.00598\n", - " 29/1 1.01488 1.02770 +/- 0.00570\n", - " 30/1 1.04513 1.02857 +/- 0.00548\n", - " 31/1 0.99538 1.02699 +/- 0.00545\n", - " 32/1 1.00106 1.02581 +/- 0.00532\n", - " 33/1 0.99389 1.02442 +/- 0.00527\n", - " 34/1 0.99938 1.02338 +/- 0.00516\n", - " 35/1 1.02161 1.02331 +/- 0.00495\n", - " 36/1 1.04084 1.02398 +/- 0.00480\n", - " 37/1 0.98801 1.02265 +/- 0.00481\n", - " 38/1 1.01348 1.02232 +/- 0.00464\n", - " 39/1 1.06693 1.02386 +/- 0.00474\n", - " 40/1 1.07729 1.02564 +/- 0.00491\n", - " 41/1 1.03191 1.02585 +/- 0.00475\n", - " 42/1 1.05209 1.02667 +/- 0.00468\n", - " 43/1 1.02997 1.02677 +/- 0.00453\n", - " 44/1 1.07288 1.02812 +/- 0.00460\n", - " 45/1 1.01268 1.02768 +/- 0.00449\n", - " 46/1 1.03759 1.02796 +/- 0.00437\n", - " 47/1 1.02620 1.02791 +/- 0.00425\n", - " 48/1 1.02509 1.02783 +/- 0.00414\n", - " 49/1 1.01043 1.02739 +/- 0.00406\n", - " 50/1 1.01457 1.02707 +/- 0.00397\n", + " 25/1 0.97445 1.02444 +/- 0.00665\n", + " 26/1 1.04737 1.02588 +/- 0.00638\n", + " 27/1 1.04656 1.02709 +/- 0.00612\n", + " 28/1 1.03464 1.02751 +/- 0.00578\n", + " 29/1 1.02528 1.02739 +/- 0.00547\n", + " 30/1 1.02799 1.02742 +/- 0.00519\n", + " 31/1 1.05846 1.02890 +/- 0.00516\n", + " 32/1 1.03811 1.02932 +/- 0.00493\n", + " 33/1 1.00894 1.02843 +/- 0.00480\n", + " 34/1 1.02049 1.02810 +/- 0.00460\n", + " 35/1 1.00690 1.02726 +/- 0.00450\n", + " 36/1 1.03129 1.02741 +/- 0.00432\n", + " 37/1 0.98864 1.02597 +/- 0.00440\n", + " 38/1 1.00017 1.02505 +/- 0.00434\n", + " 39/1 1.03635 1.02544 +/- 0.00421\n", + " 40/1 1.07090 1.02696 +/- 0.00434\n", + " 41/1 1.03141 1.02710 +/- 0.00420\n", + " 42/1 1.02624 1.02707 +/- 0.00406\n", + " 43/1 1.02668 1.02706 +/- 0.00394\n", + " 44/1 1.05940 1.02801 +/- 0.00394\n", + " 45/1 1.01149 1.02754 +/- 0.00385\n", + " 46/1 1.06958 1.02871 +/- 0.00392\n", + " 47/1 1.02674 1.02866 +/- 0.00381\n", + " 48/1 1.02542 1.02857 +/- 0.00371\n", + " 49/1 1.03516 1.02874 +/- 0.00362\n", + " 50/1 1.06818 1.02973 +/- 0.00366\n", " Creating state point statepoint.50.h5...\n", "\n", " ===========================================================================\n", @@ -819,27 +831,27 @@ "\n", " =======================> TIMING STATISTICS <=======================\n", "\n", - " Total time for initialization = 4.3000E-01 seconds\n", - " Reading cross sections = 2.2800E-01 seconds\n", - " Total time in simulation = 6.1235E+01 seconds\n", - " Time in transport only = 6.1207E+01 seconds\n", - " Time in inactive batches = 5.0280E+00 seconds\n", - " Time in active batches = 5.6207E+01 seconds\n", - " Time synchronizing fission bank = 7.0000E-03 seconds\n", + " Total time for initialization = 6.4800E-01 seconds\n", + " Reading cross sections = 4.8000E-01 seconds\n", + " Total time in simulation = 3.2830E+01 seconds\n", + " Time in transport only = 3.2659E+01 seconds\n", + " Time in inactive batches = 2.7510E+00 seconds\n", + " Time in active batches = 3.0079E+01 seconds\n", + " Time synchronizing fission bank = 9.0000E-03 seconds\n", " Sampling source sites = 4.0000E-03 seconds\n", - " SEND/RECV source sites = 1.0000E-03 seconds\n", - " Time accumulating tallies = 2.0000E-03 seconds\n", + " SEND/RECV source sites = 5.0000E-03 seconds\n", + " Time accumulating tallies = 1.0000E-03 seconds\n", " Total time for finalization = 0.0000E+00 seconds\n", - " Total time elapsed = 6.1689E+01 seconds\n", - " Calculation Rate (inactive) = 4972.16 neutrons/second\n", - " Calculation Rate (active) = 1779.14 neutrons/second\n", + " Total time elapsed = 3.3498E+01 seconds\n", + " Calculation Rate (inactive) = 9087.60 neutrons/second\n", + " Calculation Rate (active) = 3324.58 neutrons/second\n", "\n", " ============================> RESULTS <============================\n", "\n", - " k-effective (Collision) = 1.02489 +/- 0.00308\n", - " k-effective (Track-length) = 1.02707 +/- 0.00397\n", - " k-effective (Absorption) = 1.02637 +/- 0.00325\n", - " Combined k-effective = 1.02581 +/- 0.00264\n", + " k-effective (Collision) = 1.02763 +/- 0.00343\n", + " k-effective (Track-length) = 1.02973 +/- 0.00366\n", + " k-effective (Absorption) = 1.02732 +/- 0.00319\n", + " Combined k-effective = 1.02826 +/- 0.00259\n", " Leakage Fraction = 0.00000 +/- 0.00000\n", "\n" ] @@ -955,13 +967,6 @@ "collapsed": false }, "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/Users/sam/.local/lib/python2.7/site-packages/openmc-0.8.0-py2.7.egg/openmc/tallies.py:1944: RuntimeWarning: invalid value encountered in true_divide\n" - ] - }, { "data": { "text/html": [ @@ -983,16 +988,16 @@ " 10000\n", " 1\n", " U235\n", - " 8.046809e-03\n", - " 2.697198e-05\n", + " 8.055246e-03\n", + " 2.857567e-05\n", " \n", " \n", " 4\n", " 10000\n", " 1\n", " U238\n", - " 7.366624e-03\n", - " 4.255197e-05\n", + " 7.339215e-03\n", + " 4.349466e-05\n", " \n", " \n", " 5\n", @@ -1007,16 +1012,16 @@ " 10000\n", " 2\n", " U235\n", - " 3.614917e-01\n", - " 2.135233e-03\n", + " 3.615565e-01\n", + " 2.050486e-03\n", " \n", " \n", " 1\n", " 10000\n", " 2\n", " U238\n", - " 6.741607e-07\n", - " 3.924924e-09\n", + " 6.742638e-07\n", + " 3.795256e-09\n", " \n", " \n", " 2\n", @@ -1032,11 +1037,11 @@ ], "text/plain": [ " cell group in nuclide mean std. dev.\n", - "3 10000 1 U235 8.046809e-03 2.697198e-05\n", - "4 10000 1 U238 7.366624e-03 4.255197e-05\n", + "3 10000 1 U235 8.055246e-03 2.857567e-05\n", + "4 10000 1 U238 7.339215e-03 4.349466e-05\n", "5 10000 1 O16 0.000000e+00 0.000000e+00\n", - "0 10000 2 U235 3.614917e-01 2.135233e-03\n", - "1 10000 2 U238 6.741607e-07 3.924924e-09\n", + "0 10000 2 U235 3.615565e-01 2.050486e-03\n", + "1 10000 2 U238 6.742638e-07 3.795256e-09\n", "2 10000 2 O16 0.000000e+00 0.000000e+00" ] }, @@ -1074,13 +1079,13 @@ "\tDomain ID =\t10000\n", "\tNuclide =\tU235\n", "\tCross Sections [cm^-1]:\n", - " Group 1 [6.25e-07 - 20.0 MeV]:\t8.05e-03 +/- 3.35e-01%\n", - " Group 2 [0.0 - 6.25e-07 MeV]:\t3.61e-01 +/- 5.91e-01%\n", + " Group 1 [6.25e-07 - 20.0 MeV]:\t8.06e-03 +/- 3.55e-01%\n", + " Group 2 [0.0 - 6.25e-07 MeV]:\t3.62e-01 +/- 5.67e-01%\n", "\n", "\tNuclide =\tU238\n", "\tCross Sections [cm^-1]:\n", - " Group 1 [6.25e-07 - 20.0 MeV]:\t7.37e-03 +/- 5.78e-01%\n", - " Group 2 [0.0 - 6.25e-07 MeV]:\t6.74e-07 +/- 5.82e-01%\n", + " Group 1 [6.25e-07 - 20.0 MeV]:\t7.34e-03 +/- 5.93e-01%\n", + " Group 2 [0.0 - 6.25e-07 MeV]:\t6.74e-07 +/- 5.63e-01%\n", "\n", "\tNuclide =\tO16\n", "\tCross Sections [cm^-1]:\n", @@ -1196,16 +1201,16 @@ " 10000\n", " 1\n", " U235\n", - " 0.074734\n", - " 0.000325\n", + " 0.074860\n", + " 0.000303\n", " \n", " \n", " 1\n", " 10000\n", " 1\n", " U238\n", - " 0.005977\n", - " 0.000034\n", + " 0.005952\n", + " 0.000035\n", " \n", " \n", " 2\n", @@ -1221,8 +1226,8 @@ ], "text/plain": [ " cell group in nuclide mean std. dev.\n", - "0 10000 1 U235 0.074734 0.000325\n", - "1 10000 1 U238 0.005977 0.000034\n", + "0 10000 1 U235 0.074860 0.000303\n", + "1 10000 1 U238 0.005952 0.000035\n", "2 10000 1 O16 0.000000 0.000000" ] }, @@ -1305,131 +1310,124 @@ "text": [ "[ NORMAL ] Importing ray tracing data from file...\n", "[ NORMAL ] Computing the eigenvalue...\n", - "[ NORMAL ] Iteration 0:\tk_eff = 0.823582\tres = 0.000E+00\n", - "[ NORMAL ] Iteration 1:\tk_eff = 0.780361\tres = 1.940E-01\n", - "[ NORMAL ] Iteration 2:\tk_eff = 0.739500\tres = 6.545E-02\n", - "[ NORMAL ] Iteration 3:\tk_eff = 0.710868\tres = 5.284E-02\n", - "[ NORMAL ] Iteration 4:\tk_eff = 0.689663\tres = 3.926E-02\n", - "[ NORMAL ] Iteration 5:\tk_eff = 0.675035\tres = 3.007E-02\n", - "[ NORMAL ] Iteration 6:\tk_eff = 0.665831\tres = 2.137E-02\n", - "[ NORMAL ] Iteration 7:\tk_eff = 0.661179\tres = 1.377E-02\n", - "[ NORMAL ] Iteration 8:\tk_eff = 0.660309\tres = 7.167E-03\n", - "[ NORMAL ] Iteration 9:\tk_eff = 0.662566\tres = 1.972E-03\n", - "[ NORMAL ] Iteration 10:\tk_eff = 0.667383\tres = 3.708E-03\n", - "[ NORMAL ] Iteration 11:\tk_eff = 0.674274\tres = 7.412E-03\n", - "[ NORMAL ] Iteration 12:\tk_eff = 0.682821\tres = 1.043E-02\n", - "[ NORMAL ] Iteration 13:\tk_eff = 0.692664\tres = 1.276E-02\n", - "[ NORMAL ] Iteration 14:\tk_eff = 0.703499\tres = 1.449E-02\n", - "[ NORMAL ] Iteration 15:\tk_eff = 0.715063\tres = 1.571E-02\n", - "[ NORMAL ] Iteration 16:\tk_eff = 0.727136\tres = 1.650E-02\n", - "[ NORMAL ] Iteration 17:\tk_eff = 0.739531\tres = 1.694E-02\n", - "[ NORMAL ] Iteration 18:\tk_eff = 0.752091\tres = 1.710E-02\n", - "[ NORMAL ] Iteration 19:\tk_eff = 0.764686\tres = 1.703E-02\n", - "[ NORMAL ] Iteration 20:\tk_eff = 0.777208\tres = 1.679E-02\n", - "[ NORMAL ] Iteration 21:\tk_eff = 0.789567\tres = 1.642E-02\n", - "[ NORMAL ] Iteration 22:\tk_eff = 0.801692\tres = 1.595E-02\n", - "[ NORMAL ] Iteration 23:\tk_eff = 0.813525\tres = 1.540E-02\n", - "[ NORMAL ] Iteration 24:\tk_eff = 0.825022\tres = 1.480E-02\n", - "[ NORMAL ] Iteration 25:\tk_eff = 0.836147\tres = 1.417E-02\n", - "[ NORMAL ] Iteration 26:\tk_eff = 0.846876\tres = 1.352E-02\n", - "[ NORMAL ] Iteration 27:\tk_eff = 0.857190\tres = 1.287E-02\n", - "[ NORMAL ] Iteration 28:\tk_eff = 0.867079\tres = 1.221E-02\n", - "[ NORMAL ] Iteration 29:\tk_eff = 0.876536\tres = 1.157E-02\n", - "[ NORMAL ] Iteration 30:\tk_eff = 0.885559\tres = 1.094E-02\n", - "[ NORMAL ] Iteration 31:\tk_eff = 0.894153\tres = 1.032E-02\n", - "[ NORMAL ] Iteration 32:\tk_eff = 0.902320\tres = 9.731E-03\n", - "[ NORMAL ] Iteration 33:\tk_eff = 0.910071\tres = 9.161E-03\n", - "[ NORMAL ] Iteration 34:\tk_eff = 0.917414\tres = 8.614E-03\n", - "[ NORMAL ] Iteration 35:\tk_eff = 0.924362\tres = 8.092E-03\n", - "[ NORMAL ] Iteration 36:\tk_eff = 0.930926\tres = 7.595E-03\n", - "[ NORMAL ] Iteration 37:\tk_eff = 0.937121\tres = 7.122E-03\n", - "[ NORMAL ] Iteration 38:\tk_eff = 0.942961\tres = 6.674E-03\n", - "[ NORMAL ] Iteration 39:\tk_eff = 0.948460\tres = 6.250E-03\n", - "[ NORMAL ] Iteration 40:\tk_eff = 0.953633\tres = 5.849E-03\n", - "[ NORMAL ] Iteration 41:\tk_eff = 0.958495\tres = 5.471E-03\n", - "[ NORMAL ] Iteration 42:\tk_eff = 0.963061\tres = 5.114E-03\n", - "[ NORMAL ] Iteration 43:\tk_eff = 0.967346\tres = 4.779E-03\n", - "[ NORMAL ] Iteration 44:\tk_eff = 0.971364\tres = 4.463E-03\n", - "[ NORMAL ] Iteration 45:\tk_eff = 0.975128\tres = 4.166E-03\n", - "[ NORMAL ] Iteration 46:\tk_eff = 0.978653\tres = 3.888E-03\n", - "[ NORMAL ] Iteration 47:\tk_eff = 0.981952\tres = 3.627E-03\n", - "[ NORMAL ] Iteration 48:\tk_eff = 0.985037\tres = 3.382E-03\n", - "[ NORMAL ] Iteration 49:\tk_eff = 0.987921\tres = 3.152E-03\n", - "[ NORMAL ] Iteration 50:\tk_eff = 0.990615\tres = 2.937E-03\n", - "[ NORMAL ] Iteration 51:\tk_eff = 0.993131\tres = 2.736E-03\n", - "[ NORMAL ] Iteration 52:\tk_eff = 0.995479\tres = 2.548E-03\n", - "[ NORMAL ] Iteration 53:\tk_eff = 0.997670\tres = 2.373E-03\n", - "[ NORMAL ] Iteration 54:\tk_eff = 0.999713\tres = 2.208E-03\n", - "[ NORMAL ] Iteration 55:\tk_eff = 1.001618\tres = 2.055E-03\n", - "[ NORMAL ] Iteration 56:\tk_eff = 1.003393\tres = 1.912E-03\n", - "[ NORMAL ] Iteration 57:\tk_eff = 1.005046\tres = 1.778E-03\n", - "[ NORMAL ] Iteration 58:\tk_eff = 1.006586\tres = 1.654E-03\n", - "[ NORMAL ] Iteration 59:\tk_eff = 1.008019\tres = 1.537E-03\n", - "[ NORMAL ] Iteration 60:\tk_eff = 1.009352\tres = 1.429E-03\n", - "[ NORMAL ] Iteration 61:\tk_eff = 1.010593\tres = 1.328E-03\n", - "[ NORMAL ] Iteration 62:\tk_eff = 1.011747\tres = 1.234E-03\n", - "[ NORMAL ] Iteration 63:\tk_eff = 1.012820\tres = 1.146E-03\n", - "[ NORMAL ] Iteration 64:\tk_eff = 1.013818\tres = 1.065E-03\n", - "[ NORMAL ] Iteration 65:\tk_eff = 1.014745\tres = 9.887E-04\n", - "[ NORMAL ] Iteration 66:\tk_eff = 1.015606\tres = 9.179E-04\n", - "[ NORMAL ] Iteration 67:\tk_eff = 1.016406\tres = 8.522E-04\n", - "[ NORMAL ] Iteration 68:\tk_eff = 1.017149\tres = 7.909E-04\n", - "[ NORMAL ] Iteration 69:\tk_eff = 1.017839\tres = 7.340E-04\n", - "[ NORMAL ] Iteration 70:\tk_eff = 1.018480\tres = 6.811E-04\n", - "[ NORMAL ] Iteration 71:\tk_eff = 1.019074\tres = 6.319E-04\n", - "[ NORMAL ] Iteration 72:\tk_eff = 1.019626\tres = 5.862E-04\n", - "[ NORMAL ] Iteration 73:\tk_eff = 1.020138\tres = 5.437E-04\n", - "[ NORMAL ] Iteration 74:\tk_eff = 1.020613\tres = 5.042E-04\n", - "[ NORMAL ] Iteration 75:\tk_eff = 1.021054\tres = 4.676E-04\n", - "[ NORMAL ] Iteration 76:\tk_eff = 1.021462\tres = 4.335E-04\n", - "[ NORMAL ] Iteration 77:\tk_eff = 1.021841\tres = 4.019E-04\n", - "[ NORMAL ] Iteration 78:\tk_eff = 1.022193\tres = 3.725E-04\n", - "[ NORMAL ] Iteration 79:\tk_eff = 1.022518\tres = 3.453E-04\n", - "[ NORMAL ] Iteration 80:\tk_eff = 1.022820\tres = 3.200E-04\n", - "[ NORMAL ] Iteration 81:\tk_eff = 1.023100\tres = 2.965E-04\n", - "[ NORMAL ] Iteration 82:\tk_eff = 1.023359\tres = 2.748E-04\n", - "[ NORMAL ] Iteration 83:\tk_eff = 1.023600\tres = 2.546E-04\n", - "[ NORMAL ] Iteration 84:\tk_eff = 1.023822\tres = 2.358E-04\n", - "[ NORMAL ] Iteration 85:\tk_eff = 1.024028\tres = 2.185E-04\n", - "[ NORMAL ] Iteration 86:\tk_eff = 1.024219\tres = 2.023E-04\n", - "[ NORMAL ] Iteration 87:\tk_eff = 1.024396\tres = 1.874E-04\n", - "[ NORMAL ] Iteration 88:\tk_eff = 1.024560\tres = 1.735E-04\n", - "[ NORMAL ] Iteration 89:\tk_eff = 1.024712\tres = 1.607E-04\n", - "[ NORMAL ] Iteration 90:\tk_eff = 1.024852\tres = 1.488E-04\n", - "[ NORMAL ] Iteration 91:\tk_eff = 1.024983\tres = 1.378E-04\n", - "[ NORMAL ] Iteration 92:\tk_eff = 1.025103\tres = 1.275E-04\n", - "[ NORMAL ] Iteration 93:\tk_eff = 1.025215\tres = 1.181E-04\n", - "[ NORMAL ] Iteration 94:\tk_eff = 1.025318\tres = 1.093E-04\n", - "[ NORMAL ] Iteration 95:\tk_eff = 1.025413\tres = 1.012E-04\n", - "[ NORMAL ] Iteration 96:\tk_eff = 1.025502\tres = 9.364E-05\n", - "[ NORMAL ] Iteration 97:\tk_eff = 1.025584\tres = 8.666E-05\n", - "[ NORMAL ] Iteration 98:\tk_eff = 1.025659\tres = 8.020E-05\n", - "[ NORMAL ] Iteration 99:\tk_eff = 1.025729\tres = 7.422E-05\n", - "[ NORMAL ] Iteration 100:\tk_eff = 1.025794\tres = 6.868E-05\n", - "[ NORMAL ] Iteration 101:\tk_eff = 1.025854\tres = 6.355E-05\n", - "[ NORMAL ] Iteration 102:\tk_eff = 1.025910\tres = 5.880E-05\n", - "[ NORMAL ] Iteration 103:\tk_eff = 1.025961\tres = 5.440E-05\n", - "[ NORMAL ] Iteration 104:\tk_eff = 1.026009\tres = 5.033E-05\n", - "[ NORMAL ] Iteration 105:\tk_eff = 1.026053\tres = 4.656E-05\n", - "[ NORMAL ] Iteration 106:\tk_eff = 1.026093\tres = 4.307E-05\n", - "[ NORMAL ] Iteration 107:\tk_eff = 1.026131\tres = 3.984E-05\n", - "[ NORMAL ] Iteration 108:\tk_eff = 1.026166\tres = 3.685E-05\n", - "[ NORMAL ] Iteration 109:\tk_eff = 1.026198\tres = 3.409E-05\n", - "[ NORMAL ] Iteration 110:\tk_eff = 1.026228\tres = 3.153E-05\n", - "[ NORMAL ] Iteration 111:\tk_eff = 1.026255\tres = 2.916E-05\n", - "[ NORMAL ] Iteration 112:\tk_eff = 1.026281\tres = 2.697E-05\n", - "[ NORMAL ] Iteration 113:\tk_eff = 1.026304\tres = 2.494E-05\n", - "[ NORMAL ] Iteration 114:\tk_eff = 1.026326\tres = 2.307E-05\n", - "[ NORMAL ] Iteration 115:\tk_eff = 1.026346\tres = 2.133E-05\n", - "[ NORMAL ] Iteration 116:\tk_eff = 1.026365\tres = 1.973E-05\n", - "[ NORMAL ] Iteration 117:\tk_eff = 1.026382\tres = 1.824E-05\n", - "[ NORMAL ] Iteration 118:\tk_eff = 1.026398\tres = 1.687E-05\n", - "[ NORMAL ] Iteration 119:\tk_eff = 1.026413\tres = 1.560E-05\n", - "[ NORMAL ] Iteration 120:\tk_eff = 1.026426\tres = 1.442E-05\n", - "[ NORMAL ] Iteration 121:\tk_eff = 1.026439\tres = 1.333E-05\n", - "[ NORMAL ] Iteration 122:\tk_eff = 1.026451\tres = 1.233E-05\n", - "[ NORMAL ] Iteration 123:\tk_eff = 1.026461\tres = 1.140E-05\n", - "[ NORMAL ] Iteration 124:\tk_eff = 1.026471\tres = 1.054E-05\n" + "[ NORMAL ] Iteration 0:\tk_eff = 0.854370\tres = 0.000E+00\n", + "[ NORMAL ] Iteration 1:\tk_eff = 0.801922\tres = 1.521E-01\n", + "[ NORMAL ] Iteration 2:\tk_eff = 0.761745\tres = 6.349E-02\n", + "[ NORMAL ] Iteration 3:\tk_eff = 0.732366\tres = 5.029E-02\n", + "[ NORMAL ] Iteration 4:\tk_eff = 0.711073\tres = 3.869E-02\n", + "[ NORMAL ] Iteration 5:\tk_eff = 0.696554\tres = 2.912E-02\n", + "[ NORMAL ] Iteration 6:\tk_eff = 0.687670\tres = 2.044E-02\n", + "[ NORMAL ] Iteration 7:\tk_eff = 0.683465\tres = 1.277E-02\n", + "[ NORMAL ] Iteration 8:\tk_eff = 0.683124\tres = 6.142E-03\n", + "[ NORMAL ] Iteration 9:\tk_eff = 0.685943\tres = 7.897E-04\n", + "[ NORMAL ] Iteration 10:\tk_eff = 0.691322\tres = 4.180E-03\n", + "[ NORMAL ] Iteration 11:\tk_eff = 0.698746\tres = 7.873E-03\n", + "[ NORMAL ] Iteration 12:\tk_eff = 0.707777\tres = 1.076E-02\n", + "[ NORMAL ] Iteration 13:\tk_eff = 0.718039\tres = 1.295E-02\n", + "[ NORMAL ] Iteration 14:\tk_eff = 0.729218\tres = 1.452E-02\n", + "[ NORMAL ] Iteration 15:\tk_eff = 0.741045\tres = 1.559E-02\n", + "[ NORMAL ] Iteration 16:\tk_eff = 0.753296\tres = 1.624E-02\n", + "[ NORMAL ] Iteration 17:\tk_eff = 0.765784\tres = 1.655E-02\n", + "[ NORMAL ] Iteration 18:\tk_eff = 0.778355\tres = 1.659E-02\n", + "[ NORMAL ] Iteration 19:\tk_eff = 0.790879\tres = 1.643E-02\n", + "[ NORMAL ] Iteration 20:\tk_eff = 0.803253\tres = 1.610E-02\n", + "[ NORMAL ] Iteration 21:\tk_eff = 0.815394\tres = 1.566E-02\n", + "[ NORMAL ] Iteration 22:\tk_eff = 0.827235\tres = 1.513E-02\n", + "[ NORMAL ] Iteration 23:\tk_eff = 0.838724\tres = 1.453E-02\n", + "[ NORMAL ] Iteration 24:\tk_eff = 0.849823\tres = 1.390E-02\n", + "[ NORMAL ] Iteration 25:\tk_eff = 0.860502\tres = 1.324E-02\n", + "[ NORMAL ] Iteration 26:\tk_eff = 0.870744\tres = 1.258E-02\n", + "[ NORMAL ] Iteration 27:\tk_eff = 0.880535\tres = 1.191E-02\n", + "[ NORMAL ] Iteration 28:\tk_eff = 0.889869\tres = 1.125E-02\n", + "[ NORMAL ] Iteration 29:\tk_eff = 0.898747\tres = 1.061E-02\n", + "[ NORMAL ] Iteration 30:\tk_eff = 0.907172\tres = 9.985E-03\n", + "[ NORMAL ] Iteration 31:\tk_eff = 0.915150\tres = 9.382E-03\n", + "[ NORMAL ] Iteration 32:\tk_eff = 0.922692\tres = 8.802E-03\n", + "[ NORMAL ] Iteration 33:\tk_eff = 0.929810\tres = 8.248E-03\n", + "[ NORMAL ] Iteration 34:\tk_eff = 0.936517\tres = 7.720E-03\n", + "[ NORMAL ] Iteration 35:\tk_eff = 0.942827\tres = 7.219E-03\n", + "[ NORMAL ] Iteration 36:\tk_eff = 0.948756\tres = 6.744E-03\n", + "[ NORMAL ] Iteration 37:\tk_eff = 0.954321\tres = 6.295E-03\n", + "[ NORMAL ] Iteration 38:\tk_eff = 0.959539\tres = 5.871E-03\n", + "[ NORMAL ] Iteration 39:\tk_eff = 0.964424\tres = 5.472E-03\n", + "[ NORMAL ] Iteration 40:\tk_eff = 0.968995\tres = 5.096E-03\n", + "[ NORMAL ] Iteration 41:\tk_eff = 0.973268\tres = 4.744E-03\n", + "[ NORMAL ] Iteration 42:\tk_eff = 0.977258\tres = 4.413E-03\n", + "[ NORMAL ] Iteration 43:\tk_eff = 0.980981\tres = 4.104E-03\n", + "[ NORMAL ] Iteration 44:\tk_eff = 0.984453\tres = 3.814E-03\n", + "[ NORMAL ] Iteration 45:\tk_eff = 0.987689\tres = 3.543E-03\n", + "[ NORMAL ] Iteration 46:\tk_eff = 0.990701\tres = 3.289E-03\n", + "[ NORMAL ] Iteration 47:\tk_eff = 0.993505\tres = 3.053E-03\n", + "[ NORMAL ] Iteration 48:\tk_eff = 0.996112\tres = 2.832E-03\n", + "[ NORMAL ] Iteration 49:\tk_eff = 0.998536\tres = 2.627E-03\n", + "[ NORMAL ] Iteration 50:\tk_eff = 1.000787\tres = 2.435E-03\n", + "[ NORMAL ] Iteration 51:\tk_eff = 1.002878\tres = 2.257E-03\n", + "[ NORMAL ] Iteration 52:\tk_eff = 1.004818\tres = 2.091E-03\n", + "[ NORMAL ] Iteration 53:\tk_eff = 1.006618\tres = 1.937E-03\n", + "[ NORMAL ] Iteration 54:\tk_eff = 1.008287\tres = 1.793E-03\n", + "[ NORMAL ] Iteration 55:\tk_eff = 1.009834\tres = 1.660E-03\n", + "[ NORMAL ] Iteration 56:\tk_eff = 1.011268\tres = 1.536E-03\n", + "[ NORMAL ] Iteration 57:\tk_eff = 1.012595\tres = 1.421E-03\n", + "[ NORMAL ] Iteration 58:\tk_eff = 1.013824\tres = 1.314E-03\n", + "[ NORMAL ] Iteration 59:\tk_eff = 1.014962\tres = 1.215E-03\n", + "[ NORMAL ] Iteration 60:\tk_eff = 1.016015\tres = 1.123E-03\n", + "[ NORMAL ] Iteration 61:\tk_eff = 1.016988\tres = 1.038E-03\n", + "[ NORMAL ] Iteration 62:\tk_eff = 1.017889\tres = 9.595E-04\n", + "[ NORMAL ] Iteration 63:\tk_eff = 1.018721\tres = 8.864E-04\n", + "[ NORMAL ] Iteration 64:\tk_eff = 1.019490\tres = 8.187E-04\n", + "[ NORMAL ] Iteration 65:\tk_eff = 1.020201\tres = 7.560E-04\n", + "[ NORMAL ] Iteration 66:\tk_eff = 1.020857\tres = 6.980E-04\n", + "[ NORMAL ] Iteration 67:\tk_eff = 1.021464\tres = 6.443E-04\n", + "[ NORMAL ] Iteration 68:\tk_eff = 1.022024\tres = 5.947E-04\n", + "[ NORMAL ] Iteration 69:\tk_eff = 1.022540\tres = 5.488E-04\n", + "[ NORMAL ] Iteration 70:\tk_eff = 1.023017\tres = 5.063E-04\n", + "[ NORMAL ] Iteration 71:\tk_eff = 1.023457\tres = 4.670E-04\n", + "[ NORMAL ] Iteration 72:\tk_eff = 1.023863\tres = 4.308E-04\n", + "[ NORMAL ] Iteration 73:\tk_eff = 1.024238\tres = 3.972E-04\n", + "[ NORMAL ] Iteration 74:\tk_eff = 1.024583\tres = 3.663E-04\n", + "[ NORMAL ] Iteration 75:\tk_eff = 1.024902\tres = 3.376E-04\n", + "[ NORMAL ] Iteration 76:\tk_eff = 1.025195\tres = 3.112E-04\n", + "[ NORMAL ] Iteration 77:\tk_eff = 1.025466\tres = 2.868E-04\n", + "[ NORMAL ] Iteration 78:\tk_eff = 1.025715\tres = 2.643E-04\n", + "[ NORMAL ] Iteration 79:\tk_eff = 1.025945\tres = 2.435E-04\n", + "[ NORMAL ] Iteration 80:\tk_eff = 1.026157\tres = 2.244E-04\n", + "[ NORMAL ] Iteration 81:\tk_eff = 1.026352\tres = 2.067E-04\n", + "[ NORMAL ] Iteration 82:\tk_eff = 1.026531\tres = 1.904E-04\n", + "[ NORMAL ] Iteration 83:\tk_eff = 1.026697\tres = 1.753E-04\n", + "[ NORMAL ] Iteration 84:\tk_eff = 1.026849\tres = 1.614E-04\n", + "[ NORMAL ] Iteration 85:\tk_eff = 1.026989\tres = 1.487E-04\n", + "[ NORMAL ] Iteration 86:\tk_eff = 1.027118\tres = 1.368E-04\n", + "[ NORMAL ] Iteration 87:\tk_eff = 1.027237\tres = 1.260E-04\n", + "[ NORMAL ] Iteration 88:\tk_eff = 1.027346\tres = 1.159E-04\n", + "[ NORMAL ] Iteration 89:\tk_eff = 1.027447\tres = 1.067E-04\n", + "[ NORMAL ] Iteration 90:\tk_eff = 1.027540\tres = 9.821E-05\n", + "[ NORMAL ] Iteration 91:\tk_eff = 1.027625\tres = 9.040E-05\n", + "[ NORMAL ] Iteration 92:\tk_eff = 1.027703\tres = 8.316E-05\n", + "[ NORMAL ] Iteration 93:\tk_eff = 1.027775\tres = 7.652E-05\n", + "[ NORMAL ] Iteration 94:\tk_eff = 1.027842\tres = 7.039E-05\n", + "[ NORMAL ] Iteration 95:\tk_eff = 1.027903\tres = 6.480E-05\n", + "[ NORMAL ] Iteration 96:\tk_eff = 1.027959\tres = 5.959E-05\n", + "[ NORMAL ] Iteration 97:\tk_eff = 1.028011\tres = 5.479E-05\n", + "[ NORMAL ] Iteration 98:\tk_eff = 1.028058\tres = 5.043E-05\n", + "[ NORMAL ] Iteration 99:\tk_eff = 1.028102\tres = 4.633E-05\n", + "[ NORMAL ] Iteration 100:\tk_eff = 1.028142\tres = 4.265E-05\n", + "[ NORMAL ] Iteration 101:\tk_eff = 1.028180\tres = 3.921E-05\n", + "[ NORMAL ] Iteration 102:\tk_eff = 1.028214\tres = 3.605E-05\n", + "[ NORMAL ] Iteration 103:\tk_eff = 1.028245\tres = 3.315E-05\n", + "[ NORMAL ] Iteration 104:\tk_eff = 1.028273\tres = 3.047E-05\n", + "[ NORMAL ] Iteration 105:\tk_eff = 1.028300\tres = 2.800E-05\n", + "[ NORMAL ] Iteration 106:\tk_eff = 1.028324\tres = 2.575E-05\n", + "[ NORMAL ] Iteration 107:\tk_eff = 1.028346\tres = 2.368E-05\n", + "[ NORMAL ] Iteration 108:\tk_eff = 1.028367\tres = 2.176E-05\n", + "[ NORMAL ] Iteration 109:\tk_eff = 1.028386\tres = 2.003E-05\n", + "[ NORMAL ] Iteration 110:\tk_eff = 1.028403\tres = 1.837E-05\n", + "[ NORMAL ] Iteration 111:\tk_eff = 1.028419\tres = 1.690E-05\n", + "[ NORMAL ] Iteration 112:\tk_eff = 1.028434\tres = 1.553E-05\n", + "[ NORMAL ] Iteration 113:\tk_eff = 1.028447\tres = 1.426E-05\n", + "[ NORMAL ] Iteration 114:\tk_eff = 1.028459\tres = 1.309E-05\n", + "[ NORMAL ] Iteration 115:\tk_eff = 1.028471\tres = 1.202E-05\n", + "[ NORMAL ] Iteration 116:\tk_eff = 1.028481\tres = 1.107E-05\n", + "[ NORMAL ] Iteration 117:\tk_eff = 1.028491\tres = 1.015E-05\n" ] } ], @@ -1461,9 +1459,9 @@ "name": "stdout", "output_type": "stream", "text": [ - "openmc keff = 1.025806\n", - "openmoc keff = 1.026471\n", - "bias [pcm]: 66.5\n" + "openmc keff = 1.028263\n", + "openmoc keff = 1.028491\n", + "bias [pcm]: 22.8\n" ] } ], @@ -1571,7 +1569,7 @@ { "data": { "text/plain": [ - "" + "" ] }, "execution_count": 43, @@ -1580,9 +1578,9 @@ }, { "data": { - "image/png": "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\n", + "image/png": "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\nQkiM+D/axcWYV0AhpgAAAABJRU5ErkJggg==\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -1608,21 +1606,21 @@ ], "metadata": { "kernelspec": { - "display_name": "Python 2", + "display_name": "Python 3", "language": "python", - "name": "python2" + "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", - "version": 2 + "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", - "pygments_lexer": "ipython2", - "version": "2.7.12" + "pygments_lexer": "ipython3", + "version": "3.5.2" } }, "nbformat": 4, diff --git a/docs/source/pythonapi/examples/mgxs-part-iv.ipynb b/docs/source/pythonapi/examples/mgxs-part-iv.ipynb index eaae92f7c..301bbf015 100644 --- a/docs/source/pythonapi/examples/mgxs-part-iv.ipynb +++ b/docs/source/pythonapi/examples/mgxs-part-iv.ipynb @@ -119,7 +119,6 @@ "source": [ "# Instantiate a Materials object\n", "materials_file = openmc.Materials((fuel, zircaloy, water))\n", - "materials_file.default_xs = '71c'\n", "\n", "# Export to \"materials.xml\"\n", "materials_file.export_to_xml()" @@ -432,7 +431,7 @@ "outputs": [ { "data": { - "image/png": "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\n", + "image/png": "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\n", "text/plain": [ "" ] @@ -578,7 +577,7 @@ "name": "stderr", "output_type": "stream", "text": [ - "/home/romano/openmc/openmc/mgxs/library.py:312: RuntimeWarning: The P0 correction will be ignored since the scattering order 0 is greater than zero\n", + "/home/romano/openmc/openmc/mgxs/library.py:373: RuntimeWarning: The P0 correction will be ignored since the scattering order 0 is greater than zero\n", " warn(msg, RuntimeWarning)\n" ] } @@ -707,23 +706,37 @@ "output_type": "stream", "text": [ "\n", - " .d88888b. 888b d888 .d8888b.\n", - " d88P\" \"Y88b 8888b d8888 d88P Y88b\n", - " 888 888 88888b.d88888 888 888\n", - " 888 888 88888b. .d88b. 88888b. 888Y88888P888 888 \n", - " 888 888 888 \"88b d8P Y8b 888 \"88b 888 Y888P 888 888 \n", - " 888 888 888 888 88888888 888 888 888 Y8P 888 888 888\n", - " Y88b. .d88P 888 d88P Y8b. 888 888 888 \" 888 Y88b d88P\n", - " \"Y88888P\" 88888P\" \"Y8888 888 888 888 888 \"Y8888P\"\n", - "__________________888______________________________________________________\n", - " 888\n", - " 888\n", + " %%%%%%%%%%%%%%%\n", + " %%%%%%%%%%%%%%%%%%%%%%%%\n", + " %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\n", + " %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\n", + " %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\n", + " %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\n", + " %%%%%%%%%%%%%%%%%%%%%%%%\n", + " %%%%%%%%%%%%%%%%%%%%%%%%\n", + " ############### %%%%%%%%%%%%%%%%%%%%%%%%\n", + " ################## %%%%%%%%%%%%%%%%%%%%%%%\n", + " ################### %%%%%%%%%%%%%%%%%%%%%%%\n", + " #################### %%%%%%%%%%%%%%%%%%%%%%\n", + " ##################### %%%%%%%%%%%%%%%%%%%%%\n", + " ###################### %%%%%%%%%%%%%%%%%%%%\n", + " ####################### %%%%%%%%%%%%%%%%%%\n", + " ####################### %%%%%%%%%%%%%%%%%\n", + " ###################### %%%%%%%%%%%%%%%%%\n", + " #################### %%%%%%%%%%%%%%%%%\n", + " ################# %%%%%%%%%%%%%%%%%\n", + " ############### %%%%%%%%%%%%%%%%\n", + " ############ %%%%%%%%%%%%%%%\n", + " ######## %%%%%%%%%%%%%%\n", + " %%%%%%%%%%%\n", "\n", - " Copyright: 2011-2016 Massachusetts Institute of Technology\n", - " License: http://openmc.readthedocs.io/en/latest/license.html\n", - " Version: 0.7.1\n", - " Git SHA1: 3d68c07625e33cd64188df03ee03e9c31b3d4b74\n", - " Date/Time: 2016-07-23 16:50:57\n", + " | The OpenMC Monte Carlo Code\n", + " Copyright | 2011-2016 Massachusetts Institute of Technology\n", + " License | http://openmc.readthedocs.io/en/latest/license.html\n", + " Version | 0.8.0\n", + " Git SHA1 | fbebf7bf709fe2fe1813af95bff9b29c0d59312c\n", + " Date/Time | 2016-08-31 10:48:01\n", + " OpenMP Threads | 4\n", "\n", " ===========================================================================\n", " ========================> INITIALIZATION <=========================\n", @@ -733,13 +746,13 @@ " Reading geometry XML file...\n", " Reading cross sections XML file...\n", " Reading materials XML file...\n", - " Reading U235.71c from /home/romano/openmc/data/nndc_hdf5/U235_71c.h5\n", - " Reading U238.71c from /home/romano/openmc/data/nndc_hdf5/U238_71c.h5\n", - " Reading O16.71c from /home/romano/openmc/data/nndc_hdf5/O16_71c.h5\n", - " Reading Zr90.71c from /home/romano/openmc/data/nndc_hdf5/Zr90_71c.h5\n", - " Reading H1.71c from /home/romano/openmc/data/nndc_hdf5/H1_71c.h5\n", - " Reading B10.71c from /home/romano/openmc/data/nndc_hdf5/B10_71c.h5\n", - " Maximum neutron transport energy: 20.0000 MeV for U235.71c\n", + " Reading U235 from /home/romano/openmc/data/nndc_hdf5/U235.h5\n", + " Reading U238 from /home/romano/openmc/data/nndc_hdf5/U238.h5\n", + " Reading O16 from /home/romano/openmc/data/nndc_hdf5/O16.h5\n", + " Reading Zr90 from /home/romano/openmc/data/nndc_hdf5/Zr90.h5\n", + " Reading H1 from /home/romano/openmc/data/nndc_hdf5/H1.h5\n", + " Reading B10 from /home/romano/openmc/data/nndc_hdf5/B10.h5\n", + " Maximum neutron transport energy: 20.0000 MeV for U235\n", " Reading tallies XML file...\n", " Building neighboring cells lists for each surface...\n", " Initializing source particles...\n", @@ -809,20 +822,20 @@ "\n", " =======================> TIMING STATISTICS <=======================\n", "\n", - " Total time for initialization = 3.6600E-01 seconds\n", - " Reading cross sections = 2.1400E-01 seconds\n", - " Total time in simulation = 7.0360E+01 seconds\n", - " Time in transport only = 7.0341E+01 seconds\n", - " Time in inactive batches = 9.6400E+00 seconds\n", - " Time in active batches = 6.0720E+01 seconds\n", - " Time synchronizing fission bank = 7.0000E-03 seconds\n", - " Sampling source sites = 5.0000E-03 seconds\n", - " SEND/RECV source sites = 2.0000E-03 seconds\n", + " Total time for initialization = 4.2200E-01 seconds\n", + " Reading cross sections = 2.8800E-01 seconds\n", + " Total time in simulation = 4.1409E+01 seconds\n", + " Time in transport only = 4.1265E+01 seconds\n", + " Time in inactive batches = 4.6120E+00 seconds\n", + " Time in active batches = 3.6797E+01 seconds\n", + " Time synchronizing fission bank = 9.0000E-03 seconds\n", + " Sampling source sites = 6.0000E-03 seconds\n", + " SEND/RECV source sites = 3.0000E-03 seconds\n", " Time accumulating tallies = 0.0000E+00 seconds\n", " Total time for finalization = 0.0000E+00 seconds\n", - " Total time elapsed = 7.0764E+01 seconds\n", - " Calculation Rate (inactive) = 5186.72 neutrons/second\n", - " Calculation Rate (active) = 3293.81 neutrons/second\n", + " Total time elapsed = 4.1869E+01 seconds\n", + " Calculation Rate (inactive) = 10841.3 neutrons/second\n", + " Calculation Rate (active) = 5435.23 neutrons/second\n", "\n", " ============================> RESULTS <============================\n", "\n", @@ -960,24 +973,10 @@ "metadata": { "collapsed": false }, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/home/romano/openmc/openmc/tallies.py:1941: RuntimeWarning: invalid value encountered in true_divide\n", - " self_rel_err = data['self']['std. dev.'] / data['self']['mean']\n", - "/home/romano/openmc/openmc/tallies.py:1942: RuntimeWarning: invalid value encountered in true_divide\n", - " other_rel_err = data['other']['std. dev.'] / data['other']['mean']\n", - "/home/romano/openmc/openmc/tallies.py:1943: RuntimeWarning: invalid value encountered in true_divide\n", - " new_tally._mean = data['self']['mean'] / data['other']['mean']\n" - ] - } - ], + "outputs": [], "source": [ "# Create a MGXS File which can then be written to disk\n", - "mgxs_file = mgxs_lib.create_mg_library(xs_type='macro', xsdata_names=['fuel', 'zircaloy', 'water'],\n", - " xs_ids='2m')\n", + "mgxs_file = mgxs_lib.create_mg_library(xs_type='macro', xsdata_names=['fuel', 'zircaloy', 'water'])\n", "\n", "# Write the file to disk using the default filename of `mgxs.xml`\n", "mgxs_file.export_to_xml()" @@ -991,7 +990,7 @@ "\n", "Since this example is using material-wise macroscopic cross sections without considering that the neutron energy spectra and thus cross sections may be changing in space, we only need to modify the materials.xml and settings.xml files. If the material names and ids are not otherwise changed, then the geometry.xml file does not need to be modified from its continuous-energy form. The tallies.xml file will be left untouched as it currently contains the tally types that we will need to perform our comparison. \n", "\n", - "First we will create the new materials.xml file. Continuous-energy cross section nuclidic data sets are named with the nuclide name followed by a cross section identifier. For example, the data for hydrogen is accessed in OpenMC by the name `H-1.71c`. The cross-section identifier (in this case, `71c`) can be used to distinguish between different variants of `H-1` data, such as for different evaluations or temperatures. OpenMC multi-group libraries use the same convention of a name followed by a xs identifier. We will use a cross section identifier here of `2m`. Similar to how continuous-energy cross section libraries are named, the `openmc.Macroscopic` quantities below can either have their `xs_id` included (i.e., `'fuel.2m'`). An alternative is to leave this extension off and simply change the `default_xs` parameter to `.2m`." + "First we will create the new materials.xml file." ] }, { @@ -1023,7 +1022,6 @@ "\n", "# Finally, instantiate our Materials object\n", "materials_file = openmc.Materials((fuel, zircaloy, water))\n", - "materials_file.default_xs = '2m'\n", "\n", "# Export to \"materials.xml\"\n", "materials_file.export_to_xml()\n" @@ -1082,23 +1080,37 @@ "output_type": "stream", "text": [ "\n", - " .d88888b. 888b d888 .d8888b.\n", - " d88P\" \"Y88b 8888b d8888 d88P Y88b\n", - " 888 888 88888b.d88888 888 888\n", - " 888 888 88888b. .d88b. 88888b. 888Y88888P888 888 \n", - " 888 888 888 \"88b d8P Y8b 888 \"88b 888 Y888P 888 888 \n", - " 888 888 888 888 88888888 888 888 888 Y8P 888 888 888\n", - " Y88b. .d88P 888 d88P Y8b. 888 888 888 \" 888 Y88b d88P\n", - " \"Y88888P\" 88888P\" \"Y8888 888 888 888 888 \"Y8888P\"\n", - "__________________888______________________________________________________\n", - " 888\n", - " 888\n", + " %%%%%%%%%%%%%%%\n", + " %%%%%%%%%%%%%%%%%%%%%%%%\n", + " %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\n", + " %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\n", + " %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\n", + " %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\n", + " %%%%%%%%%%%%%%%%%%%%%%%%\n", + " %%%%%%%%%%%%%%%%%%%%%%%%\n", + " ############### %%%%%%%%%%%%%%%%%%%%%%%%\n", + " ################## %%%%%%%%%%%%%%%%%%%%%%%\n", + " ################### %%%%%%%%%%%%%%%%%%%%%%%\n", + " #################### %%%%%%%%%%%%%%%%%%%%%%\n", + " ##################### %%%%%%%%%%%%%%%%%%%%%\n", + " ###################### %%%%%%%%%%%%%%%%%%%%\n", + " ####################### %%%%%%%%%%%%%%%%%%\n", + " ####################### %%%%%%%%%%%%%%%%%\n", + " ###################### %%%%%%%%%%%%%%%%%\n", + " #################### %%%%%%%%%%%%%%%%%\n", + " ################# %%%%%%%%%%%%%%%%%\n", + " ############### %%%%%%%%%%%%%%%%\n", + " ############ %%%%%%%%%%%%%%%\n", + " ######## %%%%%%%%%%%%%%\n", + " %%%%%%%%%%%\n", "\n", - " Copyright: 2011-2016 Massachusetts Institute of Technology\n", - " License: http://openmc.readthedocs.io/en/latest/license.html\n", - " Version: 0.7.1\n", - " Git SHA1: 3d68c07625e33cd64188df03ee03e9c31b3d4b74\n", - " Date/Time: 2016-07-23 16:52:09\n", + " | The OpenMC Monte Carlo Code\n", + " Copyright | 2011-2016 Massachusetts Institute of Technology\n", + " License | http://openmc.readthedocs.io/en/latest/license.html\n", + " Version | 0.8.0\n", + " Git SHA1 | fbebf7bf709fe2fe1813af95bff9b29c0d59312c\n", + " Date/Time | 2016-08-31 10:48:43\n", + " OpenMP Threads | 4\n", "\n", " ===========================================================================\n", " ========================> INITIALIZATION <=========================\n", @@ -1111,9 +1123,9 @@ " Reading tallies XML file...\n", " Building neighboring cells lists for each surface...\n", " Loading Cross Section Data...\n", - " Loading fuel.2m Data...\n", - " Loading zircaloy.2m Data...\n", - " Loading water.2m Data...\n", + " Loading fuel Data...\n", + " Loading zircaloy Data...\n", + " Loading water Data...\n", " Initializing source particles...\n", "\n", " ===========================================================================\n", @@ -1122,56 +1134,56 @@ "\n", " Bat./Gen. k Average k \n", " ========= ======== ==================== \n", - " 1/1 0.99367 \n", - " 2/1 1.03173 \n", - " 3/1 1.01999 \n", - " 4/1 1.01421 \n", - " 5/1 1.03980 \n", - " 6/1 1.04540 \n", - " 7/1 1.04199 \n", - " 8/1 1.02680 \n", - " 9/1 1.01267 \n", - " 10/1 1.03420 \n", - " 11/1 1.05773 \n", - " 12/1 1.03475 1.04624 +/- 0.01149\n", - " 13/1 1.03632 1.04293 +/- 0.00741\n", - " 14/1 0.99297 1.03044 +/- 0.01355\n", - " 15/1 1.02413 1.02918 +/- 0.01057\n", - " 16/1 1.02359 1.02825 +/- 0.00868\n", - " 17/1 0.99913 1.02409 +/- 0.00843\n", - " 18/1 1.01493 1.02294 +/- 0.00739\n", - " 19/1 1.03010 1.02374 +/- 0.00657\n", - " 20/1 1.04890 1.02626 +/- 0.00639\n", - " 21/1 1.01267 1.02502 +/- 0.00591\n", - " 22/1 1.02637 1.02513 +/- 0.00540\n", - " 23/1 1.01374 1.02426 +/- 0.00504\n", - " 24/1 1.06661 1.02728 +/- 0.00556\n", - " 25/1 1.03212 1.02760 +/- 0.00519\n", - " 26/1 1.05433 1.02927 +/- 0.00513\n", - " 27/1 0.99891 1.02749 +/- 0.00514\n", - " 28/1 1.00616 1.02630 +/- 0.00499\n", - " 29/1 1.04583 1.02733 +/- 0.00483\n", - " 30/1 1.01512 1.02672 +/- 0.00462\n", - " 31/1 0.98104 1.02455 +/- 0.00491\n", - " 32/1 1.04202 1.02534 +/- 0.00474\n", - " 33/1 1.00779 1.02458 +/- 0.00460\n", - " 34/1 1.02450 1.02457 +/- 0.00440\n", - " 35/1 0.98882 1.02314 +/- 0.00446\n", - " 36/1 1.01541 1.02285 +/- 0.00429\n", - " 37/1 1.02050 1.02276 +/- 0.00413\n", - " 38/1 1.03573 1.02322 +/- 0.00401\n", - " 39/1 1.03649 1.02368 +/- 0.00389\n", - " 40/1 1.01434 1.02337 +/- 0.00378\n", - " 41/1 1.02345 1.02337 +/- 0.00365\n", - " 42/1 1.01900 1.02323 +/- 0.00354\n", - " 43/1 1.01450 1.02297 +/- 0.00344\n", - " 44/1 1.03127 1.02321 +/- 0.00335\n", - " 45/1 1.01598 1.02301 +/- 0.00326\n", - " 46/1 1.00851 1.02260 +/- 0.00319\n", - " 47/1 1.03406 1.02291 +/- 0.00312\n", - " 48/1 1.02373 1.02294 +/- 0.00303\n", - " 49/1 1.04066 1.02339 +/- 0.00299\n", - " 50/1 1.02011 1.02331 +/- 0.00292\n", + " 1/1 0.99122 \n", + " 2/1 1.03963 \n", + " 3/1 1.01551 \n", + " 4/1 1.03582 \n", + " 5/1 0.99023 \n", + " 6/1 1.00419 \n", + " 7/1 1.02047 \n", + " 8/1 1.05456 \n", + " 9/1 1.01063 \n", + " 10/1 1.03370 \n", + " 11/1 1.04616 \n", + " 12/1 1.04458 1.04537 +/- 0.00079\n", + " 13/1 1.02171 1.03748 +/- 0.00790\n", + " 14/1 1.02060 1.03326 +/- 0.00700\n", + " 15/1 1.01653 1.02992 +/- 0.00637\n", + " 16/1 1.02956 1.02986 +/- 0.00520\n", + " 17/1 1.01145 1.02723 +/- 0.00512\n", + " 18/1 1.03774 1.02854 +/- 0.00463\n", + " 19/1 1.00829 1.02629 +/- 0.00466\n", + " 20/1 1.03624 1.02729 +/- 0.00429\n", + " 21/1 1.03296 1.02780 +/- 0.00391\n", + " 22/1 0.99315 1.02491 +/- 0.00459\n", + " 23/1 0.99628 1.02271 +/- 0.00476\n", + " 24/1 1.04034 1.02397 +/- 0.00459\n", + " 25/1 1.02523 1.02406 +/- 0.00427\n", + " 26/1 1.07905 1.02749 +/- 0.00527\n", + " 27/1 1.01678 1.02686 +/- 0.00499\n", + " 28/1 1.01817 1.02638 +/- 0.00473\n", + " 29/1 1.03293 1.02672 +/- 0.00449\n", + " 30/1 1.01224 1.02600 +/- 0.00432\n", + " 31/1 1.01524 1.02549 +/- 0.00414\n", + " 32/1 1.00996 1.02478 +/- 0.00401\n", + " 33/1 1.05545 1.02612 +/- 0.00406\n", + " 34/1 1.02082 1.02589 +/- 0.00389\n", + " 35/1 0.99120 1.02451 +/- 0.00398\n", + " 36/1 1.03012 1.02472 +/- 0.00383\n", + " 37/1 1.01179 1.02424 +/- 0.00372\n", + " 38/1 1.04023 1.02481 +/- 0.00363\n", + " 39/1 1.05876 1.02598 +/- 0.00369\n", + " 40/1 0.99332 1.02490 +/- 0.00373\n", + " 41/1 1.05319 1.02581 +/- 0.00372\n", + " 42/1 1.03381 1.02606 +/- 0.00361\n", + " 43/1 1.00607 1.02545 +/- 0.00355\n", + " 44/1 1.03957 1.02587 +/- 0.00347\n", + " 45/1 1.02472 1.02584 +/- 0.00337\n", + " 46/1 1.00948 1.02538 +/- 0.00331\n", + " 47/1 1.02380 1.02534 +/- 0.00322\n", + " 48/1 1.05392 1.02609 +/- 0.00322\n", + " 49/1 1.01171 1.02572 +/- 0.00316\n", + " 50/1 1.03942 1.02606 +/- 0.00310\n", " Creating state point statepoint.50.h5...\n", "\n", " ===========================================================================\n", @@ -1181,27 +1193,27 @@ "\n", " =======================> TIMING STATISTICS <=======================\n", "\n", - " Total time for initialization = 4.6000E-02 seconds\n", - " Reading cross sections = 8.0000E-03 seconds\n", - " Total time in simulation = 5.5889E+01 seconds\n", - " Time in transport only = 5.5863E+01 seconds\n", - " Time in inactive batches = 7.1040E+00 seconds\n", - " Time in active batches = 4.8785E+01 seconds\n", - " Time synchronizing fission bank = 1.6000E-02 seconds\n", - " Sampling source sites = 1.0000E-02 seconds\n", - " SEND/RECV source sites = 6.0000E-03 seconds\n", - " Time accumulating tallies = 1.0000E-03 seconds\n", + " Total time for initialization = 4.1000E-02 seconds\n", + " Reading cross sections = 4.0000E-03 seconds\n", + " Total time in simulation = 3.1713E+01 seconds\n", + " Time in transport only = 3.1522E+01 seconds\n", + " Time in inactive batches = 3.8940E+00 seconds\n", + " Time in active batches = 2.7819E+01 seconds\n", + " Time synchronizing fission bank = 2.1000E-02 seconds\n", + " Sampling source sites = 1.2000E-02 seconds\n", + " SEND/RECV source sites = 9.0000E-03 seconds\n", + " Time accumulating tallies = 0.0000E+00 seconds\n", " Total time for finalization = 0.0000E+00 seconds\n", - " Total time elapsed = 5.5976E+01 seconds\n", - " Calculation Rate (inactive) = 7038.29 neutrons/second\n", - " Calculation Rate (active) = 4099.62 neutrons/second\n", + " Total time elapsed = 3.1791E+01 seconds\n", + " Calculation Rate (inactive) = 12840.3 neutrons/second\n", + " Calculation Rate (active) = 7189.33 neutrons/second\n", "\n", " ============================> RESULTS <============================\n", "\n", - " k-effective (Collision) = 1.02638 +/- 0.00260\n", - " k-effective (Track-length) = 1.02331 +/- 0.00292\n", - " k-effective (Absorption) = 1.02579 +/- 0.00132\n", - " Combined k-effective = 1.02558 +/- 0.00136\n", + " k-effective (Collision) = 1.02474 +/- 0.00282\n", + " k-effective (Track-length) = 1.02606 +/- 0.00310\n", + " k-effective (Absorption) = 1.02589 +/- 0.00165\n", + " Combined k-effective = 1.02601 +/- 0.00170\n", " Leakage Fraction = 0.00000 +/- 0.00000\n", "\n" ] @@ -1283,8 +1295,8 @@ "output_type": "stream", "text": [ "Continuous-Energy keff = 1.024295\n", - "Multi-Group keff = 1.025577\n", - "bias [pcm]: -128.2\n" + "Multi-Group keff = 1.026013\n", + "bias [pcm]: -171.8\n" ] } ], @@ -1381,7 +1393,7 @@ { "data": { "text/plain": [ - "" + "" ] }, "execution_count": 40, @@ -1390,9 +1402,9 @@ }, { "data": { - "image/png": "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\n", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXQAAADDCAYAAACS2+oqAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJztnXl8FGXy/z+VAHLIDQEEROQQ8QAR8fwqIiIqiAICjseq\nK+JvPVbdBQF1wRt1F/FcWa8VZUBWREFXBY9lV4PcASThToAEkgABAoQzqd8f3Znpnp7p6pCEmbT1\nfr3ySj/V1fU8011d3f101/MQM0NRFEWp+iTFuwGKoihKxaABXVEUxSdoQFcURfEJGtAVRVF8ggZ0\nRVEUn6ABXVEUxSckXEAnol+J6PJ4t+O3DBH9m4huL8f2fyeixyuyTb9FiKiEiE53We/bc0V98Dhh\nZvEPQADAYgD7AOQA+ArApV62Fex+AODp8tqJ55/5Gw4DKDT/9gFYHu92eWj3OABHLG0uBPDneLer\nDG0uAPATgIvKsP2PAO4+Ae3MAnAIQKMI+XIAJQBO9WinGMDpFj8r07kCoDqAvwBYYx7jrea5e3W8\nj2WU46k+WAF/4h06ET0KYCKAZwGkADgVwJsA+kvb/oZ4kZnrmX91mfm8iq6AiJIr2iaA6ZY212Pm\nv1ZCHRXNdGauB6AJgP8A+Fd8mxMVBpAJ4JZSARGdDaCWuc4rVM52zIRxnt4GoCGAtgBeBXBd1Moq\nx8ck1AcrEuFqUg/GlXOgi04NAJNg3LlnA3gFQHVz3RUw7goeBZBn6txprhsO40p3CMbV7gtTngmg\nl+Vq+AmAD02dVQC6WeougXkHY5ZtdzFmHesB7ATwOYAWpryNuW1StCsngHYwDtQeAPkAprn8/ph3\nTpZ67gCw2bQ11rKeAIwGsAHADgDTATSI2PZuc9v/mPI7YNwB7gDwROn+AtAMwAEADS32u5l1Jse4\n05gi3UW47QvzWOcB2AtgBYDOZTkOlmM4AsA6GHc8bwh3R1Ms5TNh3MU2NssNAMwx27nLXD7FXPcs\ngGMAikxfes2UdwIw19TPAHCzxf51AFab+lsBPOrxLiwTwFgAiyyylwGMMdt7arS7NQC/A/C/SP+G\nh3MlSht6m/7QwkNbR5nH7yCMbtgzzbbthnHO9Y/mGy5tfhDARvM4vOT1eKoPlt8HpTv0iwGcZO6A\nWDwBoAeAcwF0MZefsKxvDqAugFMA3APgTSKqz8zvAJgK44DXY+YBMez3BxAEUN/cOW9a1sW82yGi\nXgCeBzAYQAsAW2AETHFbAM8A+JaZGwBoBeB1F10vXAqgA4yT7C9EdIYpfwjADQD+D8b+2Q3grYht\nL4dxwK8hojNh/P5bYPym+uZ2YOY8GCfBEMu2t8Fw/uJytD3qviCiPgAuA9Cemeub9e6K3NjDcQCA\n6wGcD8N/hpi2XSGiGjCCyS4Y+w0wgtH7AFrDeJIsgukvzPwEgP8BeMD0t4eIqDaME+ljGHdbwwC8\nRUSdTHvvAhjOxt3Y2QB+kNpl4RcAdYnoDCJKAjDUrEe663b4ZRnOFStXAVjIzNs96A4DcC2MYJQE\nYDaAbwA0heGjU4moQxnafCOMm4luAAYQ0d0e2uCG+qBHH5QCemMAO5m5xEUnAOApZt7FzLsAPAXA\n+jLjCIBnmLmYmb8GsB/AGVHsxOInZv6WjcvVRzAuHKW4nRwBAO8x8wpmPgrj7uhiIjrVQ51HAbQh\nopbMfISZUwX9kURUQES7zf8fWNYxgPGmnZUw7iK6mOtGAHicmbebbXwawGAzAJRuO46ZDzLzYRgO\nOZuZFzDzMRj9o1amwNz3po1bYOyzWAyNaHfzMuyLozAu1J2JiJh5rXlRicTLcXiBmfcx81YYF6Wu\nUpthnCi/BzC41D+ZuYCZZzHzYWY+AOAFGBfEWPQDkMnMU9hgBYxuipvN9UcAnEVEdZl5LzOnudiK\nxkcwTvirYdx5bSvj9uWhCYDc0gIRNTSP8x4iOhih+yozbzN97CIAdZj5RWY+xsw/AvgSlu4jD0ww\n91c2jKd3t23VByvQB6WAvgtAE0uAicYpMK54pWw2ZSEbEReEIgAnC/VaybUsFwGoKbTH2q7NpQVz\n5+4C0NLDtiNh7JtFRLSKiO4CACIaQ0T7iKiQiKx30i8zcyNmbmj+vyvCntXJrL+/DYBZpiMXAEiH\n4aTNLPrZEb9pq+U3HYT9juQLAGcSURsAfQDsYeYlLr/zk4h250bRibovzBP9DRh3H3lE9DYRRTuu\nXo5DrP0Ts80w3uf8CqB76QoiqkVEk4koi4j2AJgPoAERxbrwtwFwUen+J6LdME7+0v0/CMad22Yi\n+pGILnJpVzQ+Nu3dCeNiW2mYflnqm61g7OMWpeuZeTczN4RxF1ojYvOYPmayGd7Om2j2IuNBJOqD\nFeiDUmBcAOMLjhtddHLMRlkb6PVOpCwviKJRBKC2pWy9um+ztouI6sB44siG0beIWNsycz4z38vM\nLQHcB+MR6HRmfoHDL2/+UM62A8aF8FrTkUuduk7EY7J1H22H8chZ+ptqmb+ptN2HAcyAcZd+G9zv\nzj0Ra1+Y695g5u4AOsN46hoZxYTbcShPuwpgPOGMJ6JS5/8TjK6tC8zH89I7o9KTKdLftsJ4N2Hd\n//WY+QGzjqXMfCOMrocvYOzbsrRxC4w+6msBfBZF5QBi+6/DnFBXXYtvZgP4HsAFRBQtmEYGF6vt\nbTC6C6ycCuM899pm6/anopxPJuqD3n3QNaAzcyGMlwBvEtEA8+pTjYiuJaIJptp0AE8QURMiagLg\nSXgPJHkwXvqUBaszLgcQIKIkIuoL4yVsKdMA3EVE5xLRSTD60H5h5q3MvBOGg95mbns3jBcvRgVE\ng4mo9Oq9B8ZLE7duJ6/tjWQygOdLH/2IqCkR3eCy7acA+hPRRURUHcD4KDY/gnFH2B8VENBj7Qsi\n6k5EPYioGoyXaYcQfR/FPA7lbRszr4PR1/uYKaprtqWQiBrBuX8i/e1LAB2J6DbTr6ubv6uTuRwg\nonpsvIPYB+PlV1m5G8aLy8huDgBIAzDQPK/aw3h8j0WZzhVmngej6+Bz8zhVN4/VxXC/OCwEUERE\no8x90hNGt8C0MrR5JBE1IKLWAP4IZ391mVAf9O6DYtcFM0+E8ZXKEzDe3G4B8AeEX5Q+C2AJgNL+\n4SUAnnMzaVl+D0b/UAERfRZlvbT9wzBeKu6G0U83y9Lu72FcXD6DEbzbwnjhUMpwGG/3d8J4U/2z\nZd0FABYSUaH5Ox9i5iyXNo0yH3ULzcfe/BjtjSy/CuOqO5eI9gJIhfFSOeq2zJwO4wuCT2DcdRTC\nOCaHLTqpMJx6WTkc1lpvrH1RD8A7ML4KyISxH192GJKPg9v+8cJfAQw3byYmwbh73AljX/47QvdV\nADcT0S4imsTM+2F0TQ2DsT+3AZiAcJfE7QAyzUfne2E8Cnsh9BuYOZOZl0VbB+MLjaMwuhU/gNFF\nE9UOju9cuQlGwPgYxjmyCcZ5Yn3hF+ljR2HcDFwHYz++AeB2Zl7vsc2A4dNLASyD8SHD+0I7o6E+\naFAmHyTm8vZ6KPHCfHTcA+Mt/2aL/HsAU5n5eE4kRTluiKgEhj9uindbfoskXOq/4g4R9TMfd+sA\n+BuAlRHB/AIA58G4i1cU5TeEBvSqxwAYj2XZMPr9Q4+ORPRPGN+0/tF8k68oJxp95I8j2uWiKIri\nE/QOXVEUxSdUqwyj5ieEk2BcMN5j5hej6OijgVKpMHN5B7dyoL6tJAKxfLvCu1zIyOJcB2MsiW0w\nht0dxsxrIvQYj1nqnjUIuGmm3ZiX13pexmY7Tf6NS84/S9QZEvFNf+6gh9F85iSbbCw/L9q5Z8ZU\nUWfY0A9c16+D29AaBq0dCX/AokGvoMfMR0LlB/kN0U7vr6SRD2D/6DMWF3rQmRzlWC0bBHQL+8bD\nX09w6kQwicZWeEAvk2+PtnwO/dkgYGC4/bc+/65Y19TAcLlBfWW/rt6vUNT5tfHZDtkDg3bijZlN\nQuVvcY1oJ43dsuUN3l93v6hzQ0f5s/XZmwc7hfcNAd62nKPfy/erLX+/QdQ5xvIglHnzPaQIXBl5\nvAbByPK34p671qdPc8yd2zOmb1dGl0sPAOuZebP5Tet0GC/yFKWqo76tJDSVEdBbwj4WRDbKNg6E\noiQq6ttKQlMpfeiemTUovLw/D0gP2tfv92Djfx501siPpt+s3Svq7MdXdkFxCfYH7bKFrgmlJr8E\nRZWs4l9c1xdAroecI4mCixnZwXD/yPe8Q7SD5XJ7sU5WCeezurAt2rEqAbaF27Am6Bxwbld6Pgoy\n8h3yuPGZ1bfzgdXh9mcGF8rbZ9WRdRbIfl1yKNqIA3bm1C1yblcMzAmG5SuxUbSzmY+JOtgu+1J2\niwWynZ1HnbKSYuCLaeHyarmrpKhWtMEZ7RSzh/vejBRZx/FFZwmMkcGtRDvvs1E6lE5aWk3XGioj\noOfAGJCnlFYID+xjx9pnnh4EOkdkta7yUNv/edDx0Ife93y30QoM3sf1DtnJAbvsQl4h2nmnmpxB\nftpQ9+h3xEMfeqsofegA0CpwaWj5Kl4u2nmhvoeM9+qyiqc+9IwYx+qUcBs6BbZE17EwicZ6qKzM\nePdtS585VgeBs8LtbxtwBtBIUr/0sM8vlv06yUMfev/GT0WXB8JjcNUID3UUk2oe+tDnr5N/V6uO\ncgBdFq0PHQAGWEbqPVkOb7UDFdOHXuilD/25aMcrcn+4t7lrV6MPPRaV0eWyGEB7ImpDxgDww2AM\nmK8oVR31bSWhqfA7dGYuJqIHYGQsln7alVHR9SjKiUZ9W0l0KqUPnZm/QdlmJVKUKoH6tpLIxPel\n6IeW5YMwHmitOLusnRzyoONhfqQLctwm9jFY1tLeR/g1CnEt3rPJNuM00U7xWXKf3FQMdF1/DkfO\nQeDkif/+zSHjjBIsmx8eOXRW/q2inZGDo/exWkm97hJR5+dneos6d/z7bYdsU3AxTg+E+4L74FvR\nziRRo5Kx+uVRe/nr4mvl7ZfK/eMNP5LnjaiWLL+o7NDbOc9D81ygw/sFofKo73qJdp6kZ0WdhzvK\nR+bc/64XdYZf/ppDtqHJUrRvsztU3nq3fI4ke5hu96spMfrrrXj51umziE/H/0vA5RGyu4bAFeFd\nuab+K4qi+AQN6IqiKD5BA7qiKIpP0ICuKIriEzSgK4qi+AQN6IqiKD5BA7qiKIpP0ICuKIriE+Kb\nWPSKJXniZwYutSdTJPWU5zke0WyyqPNGwZ/ltuyS50KgiCSE1RxEF7YPrvN3elW080LnMaLOAu7p\nun6YLSsrOsdaOw9vsDEj0PqOsODyEodOJBNekxOhbnjIw2wkHkYO/6xokEN29AiQZpEfqlNLNoT5\nHnQqkSaW5br28snJ8jCiBfIgibgu+d+iTjVEGZUwknlRfCAYBAJh3x6BK0Uzc7i/qDMO8uQkXS53\nH2kUAN7Of8QhCxYyAvkfh8qUIicNvYYRos7si4eKOve3l2faebtaRJuZgVftMa9ekfvoj7WTagAn\nxV6vd+iKoig+QQO6oiiKT9CAriiK4hM0oCuKovgEDeiKoig+QQO6oiiKT9CAriiK4hPi+x16wPLt\nNxPwpv1b8JKxtSGR8vxIUYeK5W+tL2j0k6jTAxNt5XVYhp+Ra28Pdop2ZtFNog5edZ/cd5rzc20H\n49s+5pCtaroa69qeFdb5WP7GfMqDN4s6cyBPAsCz5br+8uRoh+zXGqtxdu3whNdfw8MEEXGm0WPh\nuaMPTyvASbeEy20pU9x+2Obpos4EjBN1CotdPlouZcYDTlkqA3R7qNj3iDzhxsE75fyATSWniDrL\nFrh/iw0Aoy5xTrqSUW8l0lLODZUHcHfRzoPvyZOk0z3y9+yDcJmo8/bzj9oFaQR0tce8wjebudoo\nauNeh96hK4qi+AQN6IqiKD5BA7qiKIpP0ICuKIriEzSgK4qi+AQN6IqiKD5BA7qiKIpP0ICuKIri\nE+KbWLTSkqzwFQPX25MXSlhOREFdD/VMlu0sPlNOnDgUkafwyRFgaFHQJsuqI3z5D+Ahek3UGfXH\nl1zX70ED0cYQmuGQ1aH9uJ5Wh8p/uu1Z0c7ptEnUuZdfF3Xuf7K9qLMK5zhk2SgEW+TLXpSTOOLN\nkOTwvl+ftAwdksMTTZyDleL2e5IaijrPspxUd1LyvaLOqIvedMgoH6CLwucEu+e5mUqyyulX5Yo6\nB76W7zObIt8hy8Fem/yafd+Kdv72+z+JOnnJcvxoVnK7qLP2sda28pxgEfoH7Ml/pxze5mojOelq\nuKVb6h26oiiKT9CAriiK4hM0oCuKovgEDeiKoig+QQO6oiiKT9CAriiK4hM0oCuKovgEDeiKoig+\noVISi4goC8BeACUAjjJzj6iKSy3LmRFlADWv2y3WdWhUfVEnz0MSTrN/7xN1ata2z1xSvUYQNWsH\nbLKlHmbuuYlniTrdscpd4Sn5WvzFuD4OWR5vxwZuESpPxBjRzma4z6ICAPlIEXW6YK2o0xvDHbIl\n2IjuOBQqz15zi2insvDq22+9EE5YCa4AApunhso8mKJtYq+ngzxLzuP4i6yTNlHU4a7OGb24aRDc\n1uLbi2R/uxQ/izr4QZ49bBrkJJ2R+c5kqGAhI5D/Xag8KkVO4NuEuaJOWw8/i/ifos4LsM9YtAJr\ncBidbLLH57sfrz6NAbf78MrKFC0B0JOZ5YisKFUL9W0lYamsLheqRNuKEk/Ut5WEpbIckwHMI6LF\nROR8hlaUqov6tpKwVFaXy6XMvJ2ImsJw/gxm/qmS6lKUE4n6tpKwVEpAZ+bt5v8dRDQLQA8ATqd/\nfVB4ucT5sqT4YJFYV7Cu29hjBntxVNSpn+ZhqLg99pEVU1NTHSqptFU0Qyy/GGIE3RWEd6YAsDS4\n3SFbk7rHVj4g1QNgJx0SdX7l1aJO0ENdS7DRIduUmhchiGJnTzqwJ0O0X168+vag8DtQlES4Fp8k\n+xo1l/fVavwq6gQ3e6gr3VmXw7edh8VB4Qb5PKvnwQcWIlPUqVXo/F2piwHrkI9UT64rHwdFnaYb\nPOzDaD4ZwQqssZU3p0YZWXFVFDtb0oEthm+n1XCvo8IDOhHVBpDEzPuJqA6APgCeiqr84Mzw8oIg\ncLH9i5Hk6/aK9QWaePnK5Q+iTrMGctDCdQGHKBCwy5g+E80keQjot8BZl431t4k26gRaRJVfbpEP\nkOoBsJkeEXV28lmiTsBDXQX4Maq8e6BdaHnKd7Id/FP+kqSslMW3Z94aXg6uAAJdwmXu7+UrF/k3\nro4IENEIpH0h19U1el02314k+1t+j+qiTooHHyjC16JOIH9BFCkjMDC8bylFrmsT/izqtP1FHjuY\nLvJwHmGJQ9YlYP/KZcZcdztdGwNzLzixX7k0AzCLiNi0P5WZ5W+DFCXxUd9WEpoKD+jMnAmga0Xb\nVZR4o76tJDrxnbHorpzwMhcA/8ixrT75iGziSkR79LLTHJNEneld7xZ1eEnEzCWbGFhiT4K4ta7c\n3/bVGVfKdf3TfZaUDeNaiTZ2UFOHrJD22+S5LM+MUw3yjC0jaLKoc1+JnHz0j2XvOIWZQUxZankU\nPSaaiTvDx4STWjYGl+DHQHi6qybYJW7//Hp5nzfpMELUSUqV/bFkr7MuzmDw/LBv/+eKi0Q7dSEn\n5zUdI/+uAS/UEXWSnnH+rqR1QNLqsLzkd3JdJd1PEXXQUd6H/8HFos4+2BP9DqIm9kVOudZX6I5z\n5gra0O9pFUVRfIIGdEVRFJ+gAV1RFMUnaEBXFEXxCRrQFUVRfIIGdEVRFJ+gAV1RFMUnaEBXFEXx\nCXFNLHql+JnQ8tLgBpwfsA829C2uEW20pBxRZxDPFHU4+hAiNqbf2t9WXrAuG0nd7Qk+w7Jmi3au\nKpIr+/TOfq7rgyTP2vMQXnfIsrAT7RAeS+YwCaP9AFjPHUWd3pnytC5vr5HHhBl4rXMsnB/X5uPK\n88OJS30H/Fe0g49llcpkOYUTSgtoBwot5UdYTnRLmicnszzy6duizk9juok6S3G+U5azAbuuaB8q\nP/RMlISvSK6SVTwMq4QXSJ5Fa9HrzomidgR/wJuBXqHyZMiJV//AvaLOqxtGizp3XDhF1OmPObZy\nEdXGXrKPRTW6xH0Wqg5oh7kut+F6h64oiuITNKAriqL4BA3oiqIoPkEDuqIoik/QgK4oiuITNKAr\niqL4BA3oiqIoPkEDuqIoik+Ia2LRo+v+Hlrm7UFMXWefIPXRjs+JNl7mJ+SKfnhI1hktT9w77NbP\nbeUSBDEsYtLbVe3ka+TZ98h13TzZPUHpZg/18EhnPdsWMXoWhqdwpxHFop35GCrqYImHSZlvlus6\nB40csg04gnOQFxbIeWJxJ6u4bWj5cElTFFrKKUn54vb8B3kicZwv+0CrMdmizqVRJi8OImib1Jvv\nlxOL1jZsI+p0okxR54PDuaLOPTXedcgysB5nolaofBY2iHZuwXmiDnJk397CHUQdXjvSVg5uYwTW\nTLPJ6rd2/+1XJbsnAuoduqIoik/QgK4oiuITNKAriqL4BA3oiqIoPkEDuqIoik/QgK4oiuITNKAr\niqL4BA3oiqIoPiGuiUWTOoZnFFnSYgO6d5xvW/9o/kTRRseUO0SdRb1eE3VqbD0i6uyDPbkiE4vw\nDQ7YZN2Lh4t2NmCrqHPj3GTX9X9df79oY9SKNx2ypAIg6cLwbDgll7vXAwBX/a+hqLN7sDzzUYNr\n5br++bUzCWwF1mAvOoUF08eLduJNwaqW4cLWRjhgKfddMT/KFnaO9Zb3VebS5qLOCEwWdeb1j1JX\nDgPTbg8VPUwihPGXjhd1+vHNos6AGvLURxNnPO6Q8S9BfF0tnAw1bkB10U6NmvJsXP1umiHqzHle\nPl5bxjaxlXctPYQtZ9S0yQbgC1cb56Clq4beoSuKovgEDeiKoig+QQO6oiiKT9CAriiK4hM0oCuK\novgEDeiKoig+QQO6oiiKT9CAriiK4hOOO7GIiN4D0A9AHjOfa8oaAvgEQBsAWQCGMPPeWDYe/iGc\n9MCrg/j4B/vsP4/0el5sxzm0StQZ6GGKm6H8iagzb8cNtnKwEAjseM8mm+wh0ak1y4lFxyzJP9Ho\nmLRetDGy61MOWUb6Sizvem6o/NK940Q7KXsKRJ1VzomGHHRLkXVuos8dsup0AP1oTaj8aclHop3l\nSc7f7pWK8G3UtMxyU51sZW4lt2HMKX8RdT7FYFFnU047USf5lmMOGacGcfsl4fPxiku+Fe1cjbmi\nzre4RtQJPvZ7UWf+ixc4ZPOOFeDqIa+Eyltwqmin29YMUeeyVj+JOjTQ/XwFgC/oRlt5KW0AqL1N\nlgznsbCSBPeZrMpzh/4B4Dg6owF8x8xnAPgBgIf8MkVJONS3lSrJcQd0Zv4JwO4I8QAAH5rLHwK4\nEYpSxVDfVqoqFd2HnsLMeQDAzLkAPDxkK0qVQH1bSXgq+6Wo3LGkKFUT9W0l4ajo0RbziKgZM+cR\nUXMA+W7KPN7yUqek2HGGZOSuECucS5FPxk5WCi8aACCX5RHwgoX2cupip87i+ptEOzt5j6iTUeS+\nPq3OdtHGOl7pkOWkbrGVg6miGRQfknW2eghvaw7KOtuCBxyy5T/bG1DA8xw6h9KzcChjs1zB8VMm\n38ZDg8LLJcX2dQXyzkrPlV/270ctUQcFzUQVXhMlDKxLtZ2PeXD6UiQrLC+uY5HN++T2pMu/a17Q\n+aJ+Vep+W/lkOH0pkjT5fT/SGsm/K7hNtrN0+QZbOfPnPIdOZpRYtSd9O/Zm5AIAlgnHvLwBncy/\nUmYDuBPAiwB+B7iPBUnjPw0t8/dB0FX2r1zO7JUlNqAPyV97dMAOUWcGXyHqBHb8zSkbZC/vSzld\ntNOd5YtQl705ruvrNWgh2kjmc6PKzwyE5YES+Qugo/1FFawaIet08xB/1gTqRJX3s8in8dWineVJ\nl8uVuVMu38Zrlv36ZRDoZ/HtHDmgd+4l+3U6rhd18j185ULzT3LIGABZvnJpFmgs2ulCR0Wd6txZ\n1FmwIiDqXB14JYY8/LlVI9vhi07nbDk2bGnVSdQJrJG/Atp5ZnuH7PyAXUY4z9XG2WiNURT7hDzu\nLhciCgJIBdCRiLYQ0V0AJgC4mojWArjKLCtKlUJ9W6mqHPcdOjPHuoz2Pl6bipIIqG8rVZW4zljU\nsle4T6koNw+1e9n7mHriR9HGRbxcrqiH/CBy5dIBog4V2z/qp3pBUFP7uX/fSLmu9S/JmSXV67sn\nEPwf1xZt9Dng7Gv+5DBj6IHPwoLb3OsBgPWQH9vPOy1L1MHGYlHltAPO/df0MHDagZ2h8pt1HhTt\nXCK3pnKxTry0HbDm3JBzUiYHEyAnfD2ApqJOm8nuXf0AUPy0s2siCEIgEJZPILlLYSB/JuqMgTwL\nWe8Jw0SdS/s7z/vNOYxLp4Xfo9Ac2d9ouXy+PvaVPOMZRsjn0YPr7bMaBXMZgfX/scmSk9zf9/UR\nui019V9RFMUnaEBXFEXxCRrQFUVRfIIGdEVRFJ+gAV1RFMUnaEBXFEXxCRrQFUVRfIIGdEVRFJ8Q\n18Si5dQ1tDyTjmEQPWlbPwW/E238UuI+9gEAXFxPbsvjP3gYXWqWPTEASxiodbtdJg8zgqXoJuq0\nvzDZdf2XC+XZau5Y8y+HrMY2oNaa8G/lTe71AEDzm51jfUSS9Im8/0rmynW90udhh2xFjTXYVjs8\nnsbjT8rJKfG+V3n5m/tDy8uD63Be4OdQeeT9b4jbd7o+TdTpjdGiTsE4eQCdd3iIQ7aIM3GAvwmV\nR+/4WLTzWspwUWcV9xN15tJAUefOzjMcsiQASZ3DfljypOxvzz3zqKizEfL4TK8U1xR1/tXenoS4\nsFkmDrZva5ONxnhXGx3QznVeKL1DVxRF8Qka0BVFUXyCBnRFURSfoAFdURTFJ2hAVxRF8Qka0BVF\nUXyCBnRFURSfoAFdURTFJ8Q1seh93B1aXo512IuOtvXpHiaUfXjiZFGHv5NnE8EL8rXtpzH2JKa1\nBwvw002NbLLBkCddXorzRR2a456oU0Rywsj0829wyBaszUbS+eEZk27JmC3aaXjbYVGHP5b3cfIK\nUQVRsyb74UyHAAAKAklEQVRWBTFjriUp45g8+W+8GTnNkjy0IIggWdrfV95+CJxJYZE8jedkQxtG\niiobOzlnpMpLKsLGpLB8XtPLRDuPpL0t6hS/LCf79H3/G1Fn9YttHbLs4H6sDpwcKu9GA9HO2Oej\nTzZthcbKMx/NT54i6jxHj9vKB+hLfEf2RKu62Odq4xK4Z0nqHbqiKIpP0ICuKIriEzSgK4qi+AQN\n6IqiKD5BA7qiKIpP0ICuKIriEzSgK4qi+AQN6IqiKD4hrolFhxGe5eMYqtvKAJBKl4g2Pv/TNaLO\nje/KyQxLRp8t6lyGJbbyFgRxGeyzkOQulK+RPNhDYsxW90Sdany763oAGHrtHIeseBtj6EfLw235\n2kPS1XXyb/oQw0SdP3bpKur8yFc6ZLt3bEDDqxeGyiv7XijaiTu3PW0prATe2hAudh8nbv7s7XLS\n0HN3yrNE3TtJnt3p7+ycJSrIQQQ47Nvz6HvRzvBzXxN14CEB7XPIs3G1QrZDVgjCDjQJla/AL6Kd\nc8cuFnVW/yzv5+cuk2PV2fjVVs5BNlpGyLaitasNgntb9A5dURTFJ2hAVxRF8Qka0BVFUXyCBnRF\nURSfoAFdURTFJ2hAVxRF8Qka0BVFUXyCBnRFURSfcNyJRUT0HoB+APKY+VxTNg7AcAD5ptpYZo45\n/cg/cG9ouQhz8Av629YfxkliO16kx0Sdt+75f6KOtS0xmR+RoJTBwHx7gg/Vl83QrXKiQkmmezLU\naafLiQxZX6c4ZDuDB5EVCM92dFq+nHR1+GRRBV2RJurclT5d1Lmy81cO2THah8a0MyxwTrDjZKMH\nnRhUhG8D1uNzyF5+yUMjRsnJZ1xD1pl8mTNpKJKp3+5wyI4eKsR9+8PyA/Xni3auKf5c1Gla7EwI\niuTsaveIOsVw+m0+/YD51CtUTi6RZz76dZo8fdSPgYtFnVTIOkVsn2XsCFd3yFa+5Z4019w976hc\nd+gfAIiWpjmRmbuZf/IeVZTEQ31bqZIcd0Bn5p8A7I6yKvEnfFQUF9S3lapKZfShP0BEaUT0LpGX\nDghFqTKobysJTUUPzvUWgKeZmYnoWQATAfw+lvLOQQ+EC8XOQXuOorpY4c5Ql2ZsDvBBUWc2ZJ2m\nGfa+79RfAUQMlkO1RTNAuqxSMtu9n311irPf06ET5XcvTT1qKzcplPvzj9UUVbC9RqGslBMUVfLS\nljtke1Mz7IJ9e50bHkkHjmQ45RVHmXwbeMqyHOHb38vHDrs8tMjLz90hH9+jM5zHrnihfdAq5rqi\nnW3BpaLO4ZIcUScveauoUxLlXrTwZ/uJlVTiYeC5BQWiynfYKeqspzWiTh7b+/0dfg0Ai6P4dm46\nkGvoptVyrrZSoQGdma2e+g4A53B/FprMfCO0XBScg9qBsr8UbYJMUacuy8HmBkwVddrO3xchYQR6\n25/Cqb58AiHKMYuk5Ab3p/vvT28q2mjH0Su6wfZSNPI3OTl8svyb1tauJ+qMTQ+IOs06R7/xbRbo\nGVpOH3e9aAcbK/bhs6y+DVhHVPwBQPhlHa66Wq7wWw+NOtODzm752FUfEv0CU33IoNDykeFNoupY\nOSUg383kFF8g6jSr9quoE+2lKACkBKwvRYtFO2tIfinaO/C6qFObOok6O7inQ2b1awBI3+Pu211b\nA3MHxPbt8no9wdKvSETNLesGApCPjKIkJurbSpWjPJ8tBgH0BNCYiLbAuCW5koi6wnjGzAIwogLa\nqCgnFPVtpapy3AGdmaM9P39QjrYoSkKgvq1UVeI6Y1H2wg7hwobmKLCWAXS5UJ5xpB++FHVm0iBR\nZzLuE3V6XLHIVl6csw01rzjFJrt5htyefhP+Jeq8CPeEqRy0FG2MImcGy26aiw+pT6j815Q/i3bG\nY7yo05WcLzMjua/zK6LOjOIhDtnhkkzkFltmO9r4nWgn7nTpHV7enQ80tJRf8vCeZYmcyINBV8g6\nC7JElf1zT3MKV9XD4Qbh9zQn7Yr2Faedb+6/SW7PY0dFlfnZrUSdcy9Z6JAd5Foo5PC7nJUfyTNb\n9bnjC1HniixnXZHMb3u5qHMz7Of9YmzCBbC/v/i+hf09ooNGfVz7yTX1X1EUxSdoQFcURfEJGtAV\nRVF8ggZ0RVEUn5A4AT3TQ/pkgpGdvj/eTSgzh9Kz4t2EMlOcsT7eTSgfh6qebyO76rX5ULqcZJhI\nbE/fU+E2EyegZ1Vq2nalkJ1RBQN6Rla8m1Bmqn5Ar3q+jeyq1+bDVcy3czM8pIyXkcQJ6IqiKEq5\niOt36N0sQz9sTAbaRQwF0RF1RBvNPXyPfaYHOy3RQtRpgPa2cnWsdci6NRTNoB1kpZo423V9Y7QV\nbUT73TuRbJPXxRminY6QB2ZqjWaizjEP7tYlyoBsq5CEcyzyvd3k9ixbJqpUKt0s46xs3Am0s467\nIg+LAnTzMKuIvMuBbjVknQZO0cbqQDuLvEayPBHKEWHyBcOQhxGI5dMVHaIo7UI1m29XayTbaQ8P\ng2bW6CaqtPAQhxrCPspdDdRGE7SxKzUQ6jq5PYC5MVcTs4ckh0qAiOJTsfKbgZnjMn65+rZS2cTy\n7bgFdEVRFKVi0T50RVEUn6ABXVEUxSckREAnor5EtIaI1hGR+6hUCQIRZRHRCiJaTkSL5C1OPET0\nHhHlEdFKi6whEc0lorVE9G0iTaUWo73jiCibiJaZf/KMBAmC+nXlUNX8Gjhxvh33gE5ESQDegDHL\n+lkAbiHyMP1H/CkB0JOZz2PmHvFuTAyizV4/GsB3zHwGjKl0xpzwVsUmWnsBYCIzdzP/vjnRjToe\n1K8rlarm18AJ8u24B3QAPQCsZ+bNzHwUwHQAA+LcJi8QEmP/xSTG7PUDAHxoLn8I4MYT2igXYrQX\nsMwcVIVQv64kqppfAyfOtxPhwLUEYJ0VNtuUJToMYB4RLSai4fFuTBlIYeY8AGDmXAApcW6PFx4g\nojQiejfRHqVdUL8+sVRFvwYq2LcTIaBXVS5l5m4ArgNwPxFdFu8GHSeJ/t3qWwBOZ+auAHIBTIxz\ne/yO+vWJo8J9OxECeg6AUy3lVqYsoWHm7eb/HQBmwXjErgrkEVEzIDTxcX6c2+MKM+/gcLLEOwDk\naeMTA/XrE0uV8mugcnw7EQL6YgDtiagNEdUAMAzA7Di3yRUiqk1EJ5vLdQD0QeLOAm+bvR7Gvr3T\nXP4dAHkOrhOLrb3myVnKQCTufo5E/bpyqWp+DZwA347rWC4AwMzFRPQAjAEKkgC8x8yJPtRbMwCz\nzBTvagCmMnPsARbiRIzZ6ycA+BcR3Q1gMwDnJJ5xIkZ7rySirjC+vsgCMCJuDSwD6teVR1Xza+DE\n+bam/iuKoviEROhyURRFUSoADeiKoig+QQO6oiiKT9CAriiK4hM0oCuKovgEDeiKoig+QQO6oiiK\nT9CAriiK4hP+P9HijwlUNymtAAAAAElFTkSuQmCC\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -1437,21 +1449,21 @@ ], "metadata": { "kernelspec": { - "display_name": "Python 2", + "display_name": "Python 3", "language": "python", - "name": "python2" + "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", - "version": 2 + "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", - "pygments_lexer": "ipython2", - "version": "2.7.11" + "pygments_lexer": "ipython3", + "version": "3.5.2" } }, "nbformat": 4, diff --git a/docs/source/pythonapi/examples/pandas-dataframes.ipynb b/docs/source/pythonapi/examples/pandas-dataframes.ipynb index 412013f2f..f913e941a 100644 --- a/docs/source/pythonapi/examples/pandas-dataframes.ipynb +++ b/docs/source/pythonapi/examples/pandas-dataframes.ipynb @@ -111,7 +111,6 @@ "source": [ "# Instantiate a Materials collection\n", "materials_file = openmc.Materials((fuel, water, zircaloy))\n", - "materials_file.default_xs = '71c'\n", "\n", "# Export to \"materials.xml\"\n", "materials_file.export_to_xml()" @@ -370,7 +369,7 @@ "outputs": [ { "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAPoAAAD6AgMAAAD1grKuAAAABGdBTUEAALGPC/xhBQAAACBjSFJN\nAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAADFBMVEX///9yEhLpgJFNv8Tq\nQYT7AAAAAWJLR0QAiAUdSAAAAAd0SU1FB+AHFxUkA9dy05MAAAPZSURBVGje7Zs7buMwEIZ9iey5\n0gyNjQpXKTYudIScgkdQYTfut1idwkdQkQNsYQO2Qj0sPiVK+mlQDmwgwIcgg8Cc4fCTSK5W4OeF\nkM8rHv+2I/rgxPZEPZgR7XtQxKdXYuUXJSUnBQ/9WCgo4vOSJ+WFUvF7E08mlia+rn7VcKXP8sRs\nzFX8b2MdX2y6v1Tw6MZUw4H4ojfIjD8mvn/qRL5p4+vvlMqvp2EhR8WBzfiz20hXORmP9fi/bM9E\neUFvV5H/0yRkeSbiGRfFJErxD9ENdz7Mbhig/h89fvtFdMiI/ePUIXV4lXju8K3DKv9NThOZ3q2K\nmUy6grxFES8rjeyic+FFQav+ncg3fXjH+Ts+/iibztFqOiZuZP/Z3OafPX40NGgST2r+uvQkXXp6\ncKvmr+r0e1Eef5um3+JHP3IFF1D/seNZJgaDmvY0Gav1s+2f1fqpIcublfKGt6apotG/NVx3SInW\ntLX+7Vg/Pv1YqOsnun6JSVdOXT/X7vk75f938QP+8OmSBs0fXtymMhJbf8qlPynYmpKCh7OB1fzN\nalOj1sl0ZAruHLiA+RM73pDe/VjMVP89+aTXwjyc/x5n+u991895/utrJTy8/06TXh0r/5JOa2Jm\nYmqi4r/vUm/H4wLmT+z4anhr05X+q6KUXhtzr/9qSff5L5uMT//V/NdU4YuBTPa/8P67l/6r44ds\n+hYuoP5jx9ciy6XTWlibBrmx8V/TdMfjkP+6pOsu/lvM9N90sf7r+f6m/65n+S8p/itN15v0UkW3\n/+48+PRfJX6S9Joo4g+G/1qYG9KroqP/WypcuvyXPf13wH89/hHef7MB6R3Cqn55U4rv4kfH3zaS\ngQuYP7HjVf89tXrbO+hfLdr+Ozv/SP1dgtQ/Ov8C+i/3+q/Zf2D/HWi6bjT6rym9I/v/03/b+LHS\n4cTg/utTsV7/net/Afzz4f0XGX84/2j9xZ4/sePR/of2X7D/o+vPo/sv6h9B/Bfxr9j1Hz2eN/hO\n8/wfff4A848+f/1A/530/I0+/8PvH9D3H9HnT+R49P0b+v4PfP/4E/wXfP8Mvf9G37/D/ovuP8Se\nP7Hj0f0vdP8tqP9O339cyv7p3P1fdP8Z3v9G999j13/seMax8x/o+ZN7+O+E8zdP/8XOf8Hnz9Dz\nb7HnT+x49PxlCp7/BM+fOv13wvnXBfivt2lMvD8TyH/Hnb+Gz3+j589jz5/Y8ej9h4D+W7qQmf57\nefqv239n3T+C7z+h969i13/seMax+3/o/cMcu/8Y2H9n3p+J6r98pv8m4fwXuH+M3n+OO3++AX9c\nlR+4PhbRAAAAJXRFWHRkYXRlOmNyZWF0ZQAyMDE2LTA3LTIzVDE2OjM2OjAzLTA1OjAwxjuLbgAA\nACV0RVh0ZGF0ZTptb2RpZnkAMjAxNi0wNy0yM1QxNjozNjowMy0wNTowMLdmM9IAAAAASUVORK5C\nYII=\n", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAPoAAAD6AgMAAAD1grKuAAAABGdBTUEAALGPC/xhBQAAACBjSFJN\nAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAADFBMVEX///9yEhLpgJFNv8Tq\nQYT7AAAAAWJLR0QAiAUdSAAAAAd0SU1FB+AIHw8nG7lmgZ4AAAPZSURBVGje7Zs7buMwEIZ9iey5\n0gyNjQpXKTYudIScgkdQYTfut1idwkdQkQNsYQO2Qj0sPiVK+mlQDmwgwIcgg8Cc4fCTSK5W4OeF\nkM8rHv+2I/rgxPZEPZgR7XtQxKdXYuUXJSUnBQ/9WCgo4vOSJ+WFUvF7E08mlia+rn7VcKXP8sRs\nzFX8b2MdX2y6v1Tw6MZUw4H4ojfIjD8mvn/qRL5p4+vvlMqvp2EhR8WBzfiz20hXORmP9fi/bM9E\neUFvV5H/0yRkeSbiGRfFJErxD9ENdz7Mbhig/h89fvtFdMiI/ePUIXV4lXju8K3DKv9NThOZ3q2K\nmUy6grxFES8rjeyic+FFQav+ncg3fXjH+Ts+/iibztFqOiZuZP/Z3OafPX40NGgST2r+uvQkXXp6\ncKvmr+r0e1Eef5um3+JHP3IFF1D/seNZJgaDmvY0Gav1s+2f1fqpIcublfKGt6apotG/NVx3SInW\ntLX+7Vg/Pv1YqOsnun6JSVdOXT/X7vk75f938QP+8OmSBs0fXtymMhJbf8qlPynYmpKCh7OB1fzN\nalOj1sl0ZAruHLiA+RM73pDe/VjMVP89+aTXwjyc/x5n+u991895/utrJTy8/06TXh0r/5JOa2Jm\nYmqi4r/vUm/H4wLmT+z4anhr05X+q6KUXhtzr/9qSff5L5uMT//V/NdU4YuBTPa/8P67l/6r44ds\n+hYuoP5jx9ciy6XTWlibBrmx8V/TdMfjkP+6pOsu/lvM9N90sf7r+f6m/65n+S8p/itN15v0UkW3\n/+48+PRfJX6S9Joo4g+G/1qYG9KroqP/WypcuvyXPf13wH89/hHef7MB6R3Cqn55U4rv4kfH3zaS\ngQuYP7HjVf89tXrbO+hfLdr+Ozv/SP1dgtQ/Ov8C+i/3+q/Zf2D/HWi6bjT6rym9I/v/03/b+LHS\n4cTg/utTsV7/net/Afzz4f0XGX84/2j9xZ4/sePR/of2X7D/o+vPo/sv6h9B/Bfxr9j1Hz2eN/hO\n8/wfff4A848+f/1A/530/I0+/8PvH9D3H9HnT+R49P0b+v4PfP/4E/wXfP8Mvf9G37/D/ovuP8Se\nP7Hj0f0vdP8tqP9O339cyv7p3P1fdP8Z3v9G999j13/seMax8x/o+ZN7+O+E8zdP/8XOf8Hnz9Dz\nb7HnT+x49PxlCp7/BM+fOv13wvnXBfivt2lMvD8TyH/Hnb+Gz3+j589jz5/Y8ej9h4D+W7qQmf57\nefqv239n3T+C7z+h969i13/seMax+3/o/cMcu/8Y2H9n3p+J6r98pv8m4fwXuH+M3n+OO3++AX9c\nlR+4PhbRAAAAJXRFWHRkYXRlOmNyZWF0ZQAyMDE2LTA4LTMxVDEwOjM5OjI3LTA1OjAwYiZUvgAA\nACV0RVh0ZGF0ZTptb2RpZnkAMjAxNi0wOC0zMVQxMDozOToyNy0wNTowMBN77AIAAAAASUVORK5C\nYII=\n", "text/plain": [ "" ] @@ -539,23 +538,37 @@ "output_type": "stream", "text": [ "\n", - " .d88888b. 888b d888 .d8888b.\n", - " d88P\" \"Y88b 8888b d8888 d88P Y88b\n", - " 888 888 88888b.d88888 888 888\n", - " 888 888 88888b. .d88b. 88888b. 888Y88888P888 888 \n", - " 888 888 888 \"88b d8P Y8b 888 \"88b 888 Y888P 888 888 \n", - " 888 888 888 888 88888888 888 888 888 Y8P 888 888 888\n", - " Y88b. .d88P 888 d88P Y8b. 888 888 888 \" 888 Y88b d88P\n", - " \"Y88888P\" 88888P\" \"Y8888 888 888 888 888 \"Y8888P\"\n", - "__________________888______________________________________________________\n", - " 888\n", - " 888\n", + " %%%%%%%%%%%%%%%\n", + " %%%%%%%%%%%%%%%%%%%%%%%%\n", + " %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\n", + " %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\n", + " %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\n", + " %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\n", + " %%%%%%%%%%%%%%%%%%%%%%%%\n", + " %%%%%%%%%%%%%%%%%%%%%%%%\n", + " ############### %%%%%%%%%%%%%%%%%%%%%%%%\n", + " ################## %%%%%%%%%%%%%%%%%%%%%%%\n", + " ################### %%%%%%%%%%%%%%%%%%%%%%%\n", + " #################### %%%%%%%%%%%%%%%%%%%%%%\n", + " ##################### %%%%%%%%%%%%%%%%%%%%%\n", + " ###################### %%%%%%%%%%%%%%%%%%%%\n", + " ####################### %%%%%%%%%%%%%%%%%%\n", + " ####################### %%%%%%%%%%%%%%%%%\n", + " ###################### %%%%%%%%%%%%%%%%%\n", + " #################### %%%%%%%%%%%%%%%%%\n", + " ################# %%%%%%%%%%%%%%%%%\n", + " ############### %%%%%%%%%%%%%%%%\n", + " ############ %%%%%%%%%%%%%%%\n", + " ######## %%%%%%%%%%%%%%\n", + " %%%%%%%%%%%\n", "\n", - " Copyright: 2011-2016 Massachusetts Institute of Technology\n", - " License: http://openmc.readthedocs.io/en/latest/license.html\n", - " Version: 0.7.1\n", - " Git SHA1: 3d68c07625e33cd64188df03ee03e9c31b3d4b74\n", - " Date/Time: 2016-07-23 16:36:04\n", + " | The OpenMC Monte Carlo Code\n", + " Copyright | 2011-2016 Massachusetts Institute of Technology\n", + " License | http://openmc.readthedocs.io/en/latest/license.html\n", + " Version | 0.8.0\n", + " Git SHA1 | fbebf7bf709fe2fe1813af95bff9b29c0d59312c\n", + " Date/Time | 2016-08-31 10:39:27\n", + " OpenMP Threads | 4\n", "\n", " ===========================================================================\n", " ========================> INITIALIZATION <=========================\n", @@ -565,13 +578,13 @@ " Reading geometry XML file...\n", " Reading cross sections XML file...\n", " Reading materials XML file...\n", - " Reading U235.71c from /home/romano/openmc/data/nndc_hdf5/U235_71c.h5\n", - " Reading U238.71c from /home/romano/openmc/data/nndc_hdf5/U238_71c.h5\n", - " Reading O16.71c from /home/romano/openmc/data/nndc_hdf5/O16_71c.h5\n", - " Reading H1.71c from /home/romano/openmc/data/nndc_hdf5/H1_71c.h5\n", - " Reading B10.71c from /home/romano/openmc/data/nndc_hdf5/B10_71c.h5\n", - " Reading Zr90.71c from /home/romano/openmc/data/nndc_hdf5/Zr90_71c.h5\n", - " Maximum neutron transport energy: 20.0000 MeV for U235.71c\n", + " Reading U235 from /home/romano/openmc/data/nndc_hdf5/U235.h5\n", + " Reading U238 from /home/romano/openmc/data/nndc_hdf5/U238.h5\n", + " Reading O16 from /home/romano/openmc/data/nndc_hdf5/O16.h5\n", + " Reading H1 from /home/romano/openmc/data/nndc_hdf5/H1.h5\n", + " Reading B10 from /home/romano/openmc/data/nndc_hdf5/B10.h5\n", + " Reading Zr90 from /home/romano/openmc/data/nndc_hdf5/Zr90.h5\n", + " Maximum neutron transport energy: 20.0000 MeV for U235\n", " Reading tallies XML file...\n", " Building neighboring cells lists for each surface...\n", " Initializing source particles...\n", @@ -618,20 +631,20 @@ "\n", " =======================> TIMING STATISTICS <=======================\n", "\n", - " Total time for initialization = 4.2600E-01 seconds\n", - " Reading cross sections = 2.9500E-01 seconds\n", - " Total time in simulation = 1.1986E+01 seconds\n", - " Time in transport only = 1.1977E+01 seconds\n", - " Time in inactive batches = 1.8370E+00 seconds\n", - " Time in active batches = 1.0149E+01 seconds\n", - " Time synchronizing fission bank = 2.0000E-03 seconds\n", + " Total time for initialization = 4.4100E-01 seconds\n", + " Reading cross sections = 3.1500E-01 seconds\n", + " Total time in simulation = 5.7690E+00 seconds\n", + " Time in transport only = 5.7370E+00 seconds\n", + " Time in inactive batches = 7.9400E-01 seconds\n", + " Time in active batches = 4.9750E+00 seconds\n", + " Time synchronizing fission bank = 1.0000E-03 seconds\n", " Sampling source sites = 1.0000E-03 seconds\n", - " SEND/RECV source sites = 1.0000E-03 seconds\n", - " Time accumulating tallies = 0.0000E+00 seconds\n", + " SEND/RECV source sites = 0.0000E+00 seconds\n", + " Time accumulating tallies = 1.0000E-03 seconds\n", " Total time for finalization = 0.0000E+00 seconds\n", - " Total time elapsed = 1.2431E+01 seconds\n", - " Calculation Rate (inactive) = 6804.57 neutrons/second\n", - " Calculation Rate (active) = 3694.95 neutrons/second\n", + " Total time elapsed = 6.2280E+00 seconds\n", + " Calculation Rate (inactive) = 15743.1 neutrons/second\n", + " Calculation Rate (active) = 7537.69 neutrons/second\n", "\n", " ============================> RESULTS <============================\n", "\n", @@ -744,10 +757,10 @@ "text": [ "[[[ 0.1501735 ]]\n", "\n", - " [[ 0.05936257]]\n", - "\n", " [[ 0.21402727]]\n", "\n", + " [[ 0.05936257]]\n", + "\n", " [[ 0.13436703]]]\n" ] } @@ -848,8 +861,8 @@ " 0.00e+00\n", " 6.25e-07\n", " fission\n", - " 3.52e-04\n", - " 3.39e-05\n", + " 2.32e-04\n", + " 4.97e-05\n", " \n", " \n", " 5\n", @@ -859,8 +872,8 @@ " 0.00e+00\n", " 6.25e-07\n", " nu-fission\n", - " 8.57e-04\n", - " 8.26e-05\n", + " 5.65e-04\n", + " 1.21e-04\n", " \n", " \n", " 6\n", @@ -870,8 +883,8 @@ " 6.25e-07\n", " 2.00e+01\n", " fission\n", - " 1.02e-04\n", - " 6.16e-06\n", + " 6.96e-05\n", + " 6.90e-06\n", " \n", " \n", " 7\n", @@ -881,8 +894,8 @@ " 6.25e-07\n", " 2.00e+01\n", " nu-fission\n", - " 2.70e-04\n", - " 1.61e-05\n", + " 1.86e-04\n", + " 1.90e-05\n", " \n", " \n", " 8\n", @@ -892,8 +905,8 @@ " 0.00e+00\n", " 6.25e-07\n", " fission\n", - " 6.09e-04\n", - " 6.55e-05\n", + " 2.43e-04\n", + " 3.24e-05\n", " \n", " \n", " 9\n", @@ -903,8 +916,8 @@ " 0.00e+00\n", " 6.25e-07\n", " nu-fission\n", - " 1.48e-03\n", - " 1.60e-04\n", + " 5.91e-04\n", + " 7.90e-05\n", " \n", " \n", " 10\n", @@ -914,8 +927,8 @@ " 6.25e-07\n", " 2.00e+01\n", " fission\n", - " 1.38e-04\n", - " 6.74e-06\n", + " 7.27e-05\n", + " 4.76e-06\n", " \n", " \n", " 11\n", @@ -925,8 +938,8 @@ " 6.25e-07\n", " 2.00e+01\n", " nu-fission\n", - " 3.65e-04\n", - " 1.88e-05\n", + " 1.93e-04\n", + " 1.14e-05\n", " \n", " \n", " 12\n", @@ -936,8 +949,8 @@ " 0.00e+00\n", " 6.25e-07\n", " fission\n", - " 6.23e-04\n", - " 5.16e-05\n", + " 2.61e-04\n", + " 4.48e-05\n", " \n", " \n", " 13\n", @@ -947,8 +960,8 @@ " 0.00e+00\n", " 6.25e-07\n", " nu-fission\n", - " 1.52e-03\n", - " 1.26e-04\n", + " 6.35e-04\n", + " 1.09e-04\n", " \n", " \n", " 14\n", @@ -958,8 +971,8 @@ " 6.25e-07\n", " 2.00e+01\n", " fission\n", - " 1.74e-04\n", - " 9.99e-06\n", + " 6.00e-05\n", + " 4.53e-06\n", " \n", " \n", " 15\n", @@ -969,8 +982,8 @@ " 6.25e-07\n", " 2.00e+01\n", " nu-fission\n", - " 4.58e-04\n", - " 2.68e-05\n", + " 1.59e-04\n", + " 1.17e-05\n", " \n", " \n", " 16\n", @@ -980,8 +993,8 @@ " 0.00e+00\n", " 6.25e-07\n", " fission\n", - " 6.94e-04\n", - " 8.68e-05\n", + " 2.23e-04\n", + " 2.89e-05\n", " \n", " \n", " 17\n", @@ -991,8 +1004,8 @@ " 0.00e+00\n", " 6.25e-07\n", " nu-fission\n", - " 1.69e-03\n", - " 2.12e-04\n", + " 5.43e-04\n", + " 7.04e-05\n", " \n", " \n", " 18\n", @@ -1002,8 +1015,8 @@ " 6.25e-07\n", " 2.00e+01\n", " fission\n", - " 1.75e-04\n", - " 1.10e-05\n", + " 7.93e-05\n", + " 7.77e-06\n", " \n", " \n", " 19\n", @@ -1013,8 +1026,8 @@ " 6.25e-07\n", " 2.00e+01\n", " nu-fission\n", - " 4.55e-04\n", - " 2.80e-05\n", + " 2.07e-04\n", + " 1.94e-05\n", " \n", " \n", "\n", @@ -1027,22 +1040,22 @@ "1 1 1 1 0.00e+00 6.25e-07 nu-fission 5.37e-04 \n", "2 1 1 1 6.25e-07 2.00e+01 fission 7.43e-05 \n", "3 1 1 1 6.25e-07 2.00e+01 nu-fission 1.97e-04 \n", - "4 1 2 1 0.00e+00 6.25e-07 fission 3.52e-04 \n", - "5 1 2 1 0.00e+00 6.25e-07 nu-fission 8.57e-04 \n", - "6 1 2 1 6.25e-07 2.00e+01 fission 1.02e-04 \n", - "7 1 2 1 6.25e-07 2.00e+01 nu-fission 2.70e-04 \n", - "8 1 3 1 0.00e+00 6.25e-07 fission 6.09e-04 \n", - "9 1 3 1 0.00e+00 6.25e-07 nu-fission 1.48e-03 \n", - "10 1 3 1 6.25e-07 2.00e+01 fission 1.38e-04 \n", - "11 1 3 1 6.25e-07 2.00e+01 nu-fission 3.65e-04 \n", - "12 1 4 1 0.00e+00 6.25e-07 fission 6.23e-04 \n", - "13 1 4 1 0.00e+00 6.25e-07 nu-fission 1.52e-03 \n", - "14 1 4 1 6.25e-07 2.00e+01 fission 1.74e-04 \n", - "15 1 4 1 6.25e-07 2.00e+01 nu-fission 4.58e-04 \n", - "16 1 5 1 0.00e+00 6.25e-07 fission 6.94e-04 \n", - "17 1 5 1 0.00e+00 6.25e-07 nu-fission 1.69e-03 \n", - "18 1 5 1 6.25e-07 2.00e+01 fission 1.75e-04 \n", - "19 1 5 1 6.25e-07 2.00e+01 nu-fission 4.55e-04 \n", + "4 1 2 1 0.00e+00 6.25e-07 fission 2.32e-04 \n", + "5 1 2 1 0.00e+00 6.25e-07 nu-fission 5.65e-04 \n", + "6 1 2 1 6.25e-07 2.00e+01 fission 6.96e-05 \n", + "7 1 2 1 6.25e-07 2.00e+01 nu-fission 1.86e-04 \n", + "8 1 3 1 0.00e+00 6.25e-07 fission 2.43e-04 \n", + "9 1 3 1 0.00e+00 6.25e-07 nu-fission 5.91e-04 \n", + "10 1 3 1 6.25e-07 2.00e+01 fission 7.27e-05 \n", + "11 1 3 1 6.25e-07 2.00e+01 nu-fission 1.93e-04 \n", + "12 1 4 1 0.00e+00 6.25e-07 fission 2.61e-04 \n", + "13 1 4 1 0.00e+00 6.25e-07 nu-fission 6.35e-04 \n", + "14 1 4 1 6.25e-07 2.00e+01 fission 6.00e-05 \n", + "15 1 4 1 6.25e-07 2.00e+01 nu-fission 1.59e-04 \n", + "16 1 5 1 0.00e+00 6.25e-07 fission 2.23e-04 \n", + "17 1 5 1 0.00e+00 6.25e-07 nu-fission 5.43e-04 \n", + "18 1 5 1 6.25e-07 2.00e+01 fission 7.93e-05 \n", + "19 1 5 1 6.25e-07 2.00e+01 nu-fission 2.07e-04 \n", "\n", " std. dev. \n", " \n", @@ -1050,22 +1063,22 @@ "1 8.06e-05 \n", "2 7.91e-06 \n", "3 1.96e-05 \n", - "4 3.39e-05 \n", - "5 8.26e-05 \n", - "6 6.16e-06 \n", - "7 1.61e-05 \n", - "8 6.55e-05 \n", - "9 1.60e-04 \n", - "10 6.74e-06 \n", - "11 1.88e-05 \n", - "12 5.16e-05 \n", - "13 1.26e-04 \n", - "14 9.99e-06 \n", - "15 2.68e-05 \n", - "16 8.68e-05 \n", - "17 2.12e-04 \n", - "18 1.10e-05 \n", - "19 2.80e-05 " + "4 4.97e-05 \n", + "5 1.21e-04 \n", + "6 6.90e-06 \n", + "7 1.90e-05 \n", + "8 3.24e-05 \n", + "9 7.90e-05 \n", + "10 4.76e-06 \n", + "11 1.14e-05 \n", + "12 4.48e-05 \n", + "13 1.09e-04 \n", + "14 4.53e-06 \n", + "15 1.17e-05 \n", + "16 2.89e-05 \n", + "17 7.04e-05 \n", + "18 7.77e-06 \n", + "19 1.94e-05 " ] }, "execution_count": 24, @@ -1095,7 +1108,7 @@ "data": { "image/png": "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\n/wf1F+RhutXrZwAAAABJRU5ErkJggg==\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -1118,7 +1131,7 @@ { "data": { "text/plain": [ - "" + "" ] }, "execution_count": 26, @@ -1127,9 +1140,9 @@ }, { "data": { - "image/png": "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\nJ/KLgSwAAAAASUVORK5CYII=\n", + "image/png": "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\nAAAAAElFTkSuQmCC\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -2124,7 +2137,7 @@ { "data": { "text/plain": [ - "" + "" ] }, "execution_count": 36, @@ -2135,7 +2148,7 @@ "data": { "image/png": "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\nSUVORK5CYII=\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -2162,7 +2175,7 @@ { "data": { "text/plain": [ - "" + "" ] }, "execution_count": 37, @@ -2173,7 +2186,7 @@ "data": { "image/png": "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\n", "text/plain": [ - "" + "" ] }, "metadata": {}, diff --git a/docs/source/pythonapi/examples/post-processing.ipynb b/docs/source/pythonapi/examples/post-processing.ipynb index 19182aa7a..a68ebb604 100644 --- a/docs/source/pythonapi/examples/post-processing.ipynb +++ b/docs/source/pythonapi/examples/post-processing.ipynb @@ -106,7 +106,6 @@ "source": [ "# Instantiate a Materials collection\n", "materials_file = openmc.Materials((fuel, water, zircaloy))\n", - "materials_file.default_xs = '71c'\n", "\n", "# Export to \"materials.xml\"\n", "materials_file.export_to_xml()" @@ -339,7 +338,7 @@ "outputs": [ { "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAPoAAAD6AgMAAAD1grKuAAAABGdBTUEAALGPC/xhBQAAACBjSFJN\nAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAADFBMVEX///9yEhLpgJFNv8Tq\nQYT7AAAAAWJLR0QAiAUdSAAAAAd0SU1FB+AHFwIoGZ/M0BAAAALKSURBVGje7dpLcqQwDAbgHHE2\nYeEj+D4cwQucBUfo+3CEXoSp8OhuhF70T4qpKXmdr21LogK2Pj7A8QmNP+HDhw8fPnz48Kf6VH9G\n+66vy+je8k19jnf8C5dXIPv86ms56lPdjvaYbyodx3ze+XLE76cXFiD4zPji99z0/AJ4n1lfvJ6f\nnl0A6x+578efMSg1wPr172/jPO5yFXM+Ef78gdblM+WPHyguP//t1/g6pA0wfln+ho/fwgYYn19C\n/xwDvwHGc9OvC+hs37DTrwuwfWanXxdQTC9Mvyygs3wjTL8uwPJpn/tNDbSGz7T0SBEWw4vLXzbQ\n6b6RoveIoO6TvPxlA63qs7z8ZQPF9F+SH22vbX8OQKf5Rtv+EgDNJ3X58wZaxWd1+fMGiuFvir8b\nvjp8J/tGy/6jAmRvhW8fwL3vVT+o3grfPoB7r/IpALI3tz8FoJN84/NV873hB8UnM3xzANtf8nb4\ndwmg3grfFEDJO8JPE0i9Ff4pAYL3pI8mkHor/HMCeO9JH00g9SafEsh7T/ppARBvp48UwJnelT5S\nACd7O31TAlnvKx9SQCd7B58KgPO+8iMFuPWe9E8F8BveWX7bAjzX9y4//Jve+fhsH6Ctv7n8PTzj\nvY/v9gEOHz58+PBX+6v/f/wPvnd54f3j6venE/yl769Xv7+j3x/o98/V32/o9+fl389Xnx+g5x/o\n+Qt6/oOeP6HnX+j5G3z+h54/ouefV5/foufP6Pk3ev4On/+j9w/o/Qd6/4Le/6D3T/D9V67Y/ZsV\nQBq+s+8f0ftP+P41axXguP9NWgDuu/Cdfv+N3r/D9/9TAID+A7T/Ae2/gPs/0P4TtP8F7r9J3AIO\n9P+g/Udw/9Oygbf7r9D+L7j/DO1/Q/vv4P4/tP8Q7n9E+y/h/k+0/xTuf4X7b+H+X7T/+BPuf3aM\n8OHDhw8fPnz4w/4vzcvgeY10sY0AAAAldEVYdGRhdGU6Y3JlYXRlADIwMTYtMDctMjJUMjE6NDA6\nMjUtMDU6MDBskW7/AAAAJXRFWHRkYXRlOm1vZGlmeQAyMDE2LTA3LTIyVDIxOjQwOjI1LTA1OjAw\nHczWQwAAAABJRU5ErkJggg==\n", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAPoAAAD6AgMAAAD1grKuAAAABGdBTUEAALGPC/xhBQAAACBjSFJN\nAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAADFBMVEX///9yEhLpgJFNv8Tq\nQYT7AAAAAWJLR0QAiAUdSAAAAAd0SU1FB+AIHw8eOWKCTcAAAALKSURBVGje7dpLcqQwDAbgHHE2\nYeEj+D4cwQucBUfo+3CEXoSp8OhuhF70T4qpKXmdr21LogK2Pj7A8QmNP+HDhw8fPnz48Kf6VH9G\n+66vy+je8k19jnf8C5dXIPv86ms56lPdjvaYbyodx3ze+XLE76cXFiD4zPji99z0/AJ4n1lfvJ6f\nnl0A6x+578efMSg1wPr172/jPO5yFXM+Ef78gdblM+WPHyguP//t1/g6pA0wfln+ho/fwgYYn19C\n/xwDvwHGc9OvC+hs37DTrwuwfWanXxdQTC9Mvyygs3wjTL8uwPJpn/tNDbSGz7T0SBEWw4vLXzbQ\n6b6RoveIoO6TvPxlA63qs7z8ZQPF9F+SH22vbX8OQKf5Rtv+EgDNJ3X58wZaxWd1+fMGiuFvir8b\nvjp8J/tGy/6jAmRvhW8fwL3vVT+o3grfPoB7r/IpALI3tz8FoJN84/NV873hB8UnM3xzANtf8nb4\ndwmg3grfFEDJO8JPE0i9Ff4pAYL3pI8mkHor/HMCeO9JH00g9SafEsh7T/ppARBvp48UwJnelT5S\nACd7O31TAlnvKx9SQCd7B58KgPO+8iMFuPWe9E8F8BveWX7bAjzX9y4//Jve+fhsH6Ctv7n8PTzj\nvY/v9gEOHz58+PBX+6v/f/wPvnd54f3j6venE/yl769Xv7+j3x/o98/V32/o9+fl389Xnx+g5x/o\n+Qt6/oOeP6HnX+j5G3z+h54/ouefV5/foufP6Pk3ev4On/+j9w/o/Qd6/4Le/6D3T/D9V67Y/ZsV\nQBq+s+8f0ftP+P41axXguP9NWgDuu/Cdfv+N3r/D9/9TAID+A7T/Ae2/gPs/0P4TtP8F7r9J3AIO\n9P+g/Udw/9Oygbf7r9D+L7j/DO1/Q/vv4P4/tP8Q7n9E+y/h/k+0/xTuf4X7b+H+X7T/+BPuf3aM\n8OHDhw8fPnz4w/4vzcvgeY10sY0AAAAldEVYdGRhdGU6Y3JlYXRlADIwMTYtMDgtMzFUMTA6MzA6\nNTctMDU6MDCU9nZtAAAAJXRFWHRkYXRlOm1vZGlmeQAyMDE2LTA4LTMxVDEwOjMwOjU3LTA1OjAw\n5avO0QAAAABJRU5ErkJggg==\n", "text/plain": [ "" ] @@ -433,23 +432,37 @@ "output_type": "stream", "text": [ "\n", - " .d88888b. 888b d888 .d8888b.\n", - " d88P\" \"Y88b 8888b d8888 d88P Y88b\n", - " 888 888 88888b.d88888 888 888\n", - " 888 888 88888b. .d88b. 88888b. 888Y88888P888 888 \n", - " 888 888 888 \"88b d8P Y8b 888 \"88b 888 Y888P 888 888 \n", - " 888 888 888 888 88888888 888 888 888 Y8P 888 888 888\n", - " Y88b. .d88P 888 d88P Y8b. 888 888 888 \" 888 Y88b d88P\n", - " \"Y88888P\" 88888P\" \"Y8888 888 888 888 888 \"Y8888P\"\n", - "__________________888______________________________________________________\n", - " 888\n", - " 888\n", + " %%%%%%%%%%%%%%%\n", + " %%%%%%%%%%%%%%%%%%%%%%%%\n", + " %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\n", + " %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\n", + " %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\n", + " %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\n", + " %%%%%%%%%%%%%%%%%%%%%%%%\n", + " %%%%%%%%%%%%%%%%%%%%%%%%\n", + " ############### %%%%%%%%%%%%%%%%%%%%%%%%\n", + " ################## %%%%%%%%%%%%%%%%%%%%%%%\n", + " ################### %%%%%%%%%%%%%%%%%%%%%%%\n", + " #################### %%%%%%%%%%%%%%%%%%%%%%\n", + " ##################### %%%%%%%%%%%%%%%%%%%%%\n", + " ###################### %%%%%%%%%%%%%%%%%%%%\n", + " ####################### %%%%%%%%%%%%%%%%%%\n", + " ####################### %%%%%%%%%%%%%%%%%\n", + " ###################### %%%%%%%%%%%%%%%%%\n", + " #################### %%%%%%%%%%%%%%%%%\n", + " ################# %%%%%%%%%%%%%%%%%\n", + " ############### %%%%%%%%%%%%%%%%\n", + " ############ %%%%%%%%%%%%%%%\n", + " ######## %%%%%%%%%%%%%%\n", + " %%%%%%%%%%%\n", "\n", - " Copyright: 2011-2016 Massachusetts Institute of Technology\n", - " License: http://openmc.readthedocs.io/en/latest/license.html\n", - " Version: 0.7.1\n", - " Git SHA1: 3d68c07625e33cd64188df03ee03e9c31b3d4b74\n", - " Date/Time: 2016-07-22 21:40:25\n", + " | The OpenMC Monte Carlo Code\n", + " Copyright | 2011-2016 Massachusetts Institute of Technology\n", + " License | http://openmc.readthedocs.io/en/latest/license.html\n", + " Version | 0.8.0\n", + " Git SHA1 | fbebf7bf709fe2fe1813af95bff9b29c0d59312c\n", + " Date/Time | 2016-08-31 10:30:57\n", + " OpenMP Threads | 4\n", "\n", " ===========================================================================\n", " ========================> INITIALIZATION <=========================\n", @@ -459,13 +472,13 @@ " Reading geometry XML file...\n", " Reading cross sections XML file...\n", " Reading materials XML file...\n", - " Reading U235.71c from /home/romano/openmc/data/nndc_hdf5/U235_71c.h5\n", - " Reading U238.71c from /home/romano/openmc/data/nndc_hdf5/U238_71c.h5\n", - " Reading O16.71c from /home/romano/openmc/data/nndc_hdf5/O16_71c.h5\n", - " Reading H1.71c from /home/romano/openmc/data/nndc_hdf5/H1_71c.h5\n", - " Reading B10.71c from /home/romano/openmc/data/nndc_hdf5/B10_71c.h5\n", - " Reading Zr90.71c from /home/romano/openmc/data/nndc_hdf5/Zr90_71c.h5\n", - " Maximum neutron transport energy: 20.0000 MeV for U235.71c\n", + " Reading U235 from /home/romano/openmc/data/nndc_hdf5/U235.h5\n", + " Reading U238 from /home/romano/openmc/data/nndc_hdf5/U238.h5\n", + " Reading O16 from /home/romano/openmc/data/nndc_hdf5/O16.h5\n", + " Reading H1 from /home/romano/openmc/data/nndc_hdf5/H1.h5\n", + " Reading B10 from /home/romano/openmc/data/nndc_hdf5/B10.h5\n", + " Reading Zr90 from /home/romano/openmc/data/nndc_hdf5/Zr90.h5\n", + " Maximum neutron transport energy: 20.0000 MeV for U235\n", " Reading tallies XML file...\n", " Building neighboring cells lists for each surface...\n", " Initializing source particles...\n", @@ -585,20 +598,20 @@ "\n", " =======================> TIMING STATISTICS <=======================\n", "\n", - " Total time for initialization = 3.5100E-01 seconds\n", - " Reading cross sections = 1.8600E-01 seconds\n", - " Total time in simulation = 3.1672E+02 seconds\n", - " Time in transport only = 3.1667E+02 seconds\n", - " Time in inactive batches = 1.0782E+01 seconds\n", - " Time in active batches = 3.0594E+02 seconds\n", - " Time synchronizing fission bank = 2.1000E-02 seconds\n", - " Sampling source sites = 1.2000E-02 seconds\n", - " SEND/RECV source sites = 9.0000E-03 seconds\n", - " Time accumulating tallies = 1.7000E-02 seconds\n", - " Total time for finalization = 1.8100E-01 seconds\n", - " Total time elapsed = 3.1729E+02 seconds\n", - " Calculation Rate (inactive) = 4637.36 neutrons/second\n", - " Calculation Rate (active) = 1470.89 neutrons/second\n", + " Total time for initialization = 4.4800E-01 seconds\n", + " Reading cross sections = 3.1000E-01 seconds\n", + " Total time in simulation = 3.4103E+02 seconds\n", + " Time in transport only = 3.4086E+02 seconds\n", + " Time in inactive batches = 4.8890E+00 seconds\n", + " Time in active batches = 3.3614E+02 seconds\n", + " Time synchronizing fission bank = 1.5000E-02 seconds\n", + " Sampling source sites = 1.1000E-02 seconds\n", + " SEND/RECV source sites = 4.0000E-03 seconds\n", + " Time accumulating tallies = 1.9000E-02 seconds\n", + " Total time for finalization = 1.8200E-01 seconds\n", + " Total time elapsed = 3.4170E+02 seconds\n", + " Calculation Rate (inactive) = 10227.0 neutrons/second\n", + " Calculation Rate (active) = 1338.71 neutrons/second\n", "\n", " ============================> RESULTS <============================\n", "\n", @@ -707,14 +720,14 @@ "text/plain": [ "array([[[ 0.40945685, 0. ]],\n", "\n", - " [[ 0.40939021, 0. ]],\n", + " [[ 0.41078582, 0. ]],\n", "\n", - " [[ 0.410625 , 0. ]],\n", + " [[ 0.40926432, 0. ]],\n", "\n", " ..., \n", - " [[ 0.41130501, 0. ]],\n", + " [[ 0.41362317, 0. ]],\n", "\n", - " [[ 0.41228849, 0. ]],\n", + " [[ 0.41335428, 0. ]],\n", "\n", " [[ 0.41420317, 0. ]]])" ] @@ -754,26 +767,26 @@ "text/plain": [ "(array([[[ 0.00454952, 0. ]],\n", " \n", - " [[ 0.00454878, 0. ]],\n", + " [[ 0.00456429, 0. ]],\n", " \n", - " [[ 0.0045625 , 0. ]],\n", + " [[ 0.00454738, 0. ]],\n", " \n", " ..., \n", - " [[ 0.00457006, 0. ]],\n", + " [[ 0.00459581, 0. ]],\n", " \n", - " [[ 0.00458098, 0. ]],\n", + " [[ 0.00459283, 0. ]],\n", " \n", " [[ 0.00460226, 0. ]]]),\n", " array([[[ 1.64748193e-05, 0.00000000e+00]],\n", " \n", - " [[ 1.70922989e-05, 0.00000000e+00]],\n", + " [[ 1.74996463e-05, 0.00000000e+00]],\n", " \n", - " [[ 1.67622385e-05, 0.00000000e+00]],\n", + " [[ 1.74392771e-05, 0.00000000e+00]],\n", " \n", " ..., \n", - " [[ 1.69274948e-05, 0.00000000e+00]],\n", + " [[ 1.73541566e-05, 0.00000000e+00]],\n", " \n", - " [[ 1.57842763e-05, 0.00000000e+00]],\n", + " [[ 1.67854889e-05, 0.00000000e+00]],\n", " \n", " [[ 2.06590062e-05, 0.00000000e+00]]]))" ] @@ -855,7 +868,7 @@ { "data": { "text/plain": [ - "" + "" ] }, "execution_count": 24, @@ -864,9 +877,9 @@ }, { "data": { - "image/png": "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\nAElFTkSuQmCC\n", + "image/png": "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\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -898,7 +911,7 @@ "data": { "image/png": "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\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -1012,7 +1025,7 @@ { "data": { "text/plain": [ - "" + "" ] }, "execution_count": 28, @@ -1023,7 +1036,7 @@ "data": { "image/png": "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\nrkJggg==\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -1074,7 +1087,7 @@ "data": { "image/png": "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\n", "text/plain": [ - "" + "" ] }, "metadata": {}, diff --git a/docs/source/pythonapi/examples/tally-arithmetic.ipynb b/docs/source/pythonapi/examples/tally-arithmetic.ipynb index 2fecc3c29..cd1098c06 100644 --- a/docs/source/pythonapi/examples/tally-arithmetic.ipynb +++ b/docs/source/pythonapi/examples/tally-arithmetic.ipynb @@ -105,7 +105,6 @@ "source": [ "# Instantiate a Materials collection\n", "materials_file = openmc.Materials((fuel, water, zircaloy))\n", - "materials_file.default_xs = '71c'\n", "\n", "# Export to \"materials.xml\"\n", "materials_file.export_to_xml()" @@ -339,7 +338,7 @@ "outputs": [ { "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAPoAAAD6AgMAAAD1grKuAAAABGdBTUEAALGPC/xhBQAAACBjSFJN\nAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAADFBMVEX///9yEhLpgJFNv8Tq\nQYT7AAAAAWJLR0QAiAUdSAAAAAd0SU1FB+AIHQwUARggawYAAALKSURBVGje7dpLcqQwDAbgHHE2\nYeEj+D4cwQucBUfo+3CEXoSp8OhuhF70T4qpKXmdr21LogK2Pj7A8QmNP+HDhw8fPnz48Kf6VH9G\n+66vy+je8k19jnf8C5dXIPv86ms56lPdjvaYbyodx3ze+XLE76cXFiD4zPji99z0/AJ4n1lfvJ6f\nnl0A6x+578efMSg1wPr172/jPO5yFXM+Ef78gdblM+WPHyguP//t1/g6pA0wfln+ho/fwgYYn19C\n/xwDvwHGc9OvC+hs37DTrwuwfWanXxdQTC9Mvyygs3wjTL8uwPJpn/tNDbSGz7T0SBEWw4vLXzbQ\n6b6RoveIoO6TvPxlA63qs7z8ZQPF9F+SH22vbX8OQKf5Rtv+EgDNJ3X58wZaxWd1+fMGiuFvir8b\nvjp8J/tGy/6jAmRvhW8fwL3vVT+o3grfPoB7r/IpALI3tz8FoJN84/NV873hB8UnM3xzANtf8nb4\ndwmg3grfFEDJO8JPE0i9Ff4pAYL3pI8mkHor/HMCeO9JH00g9SafEsh7T/ppARBvp48UwJnelT5S\nACd7O31TAlnvKx9SQCd7B58KgPO+8iMFuPWe9E8F8BveWX7bAjzX9y4//Jve+fhsH6Ctv7n8PTzj\nvY/v9gEOHz58+PBX+6v/f/wPvnd54f3j6venE/yl769Xv7+j3x/o98/V32/o9+fl389Xnx+g5x/o\n+Qt6/oOeP6HnX+j5G3z+h54/ouefV5/foufP6Pk3ev4On/+j9w/o/Qd6/4Le/6D3T/D9V67Y/ZsV\nQBq+s+8f0ftP+P41axXguP9NWgDuu/Cdfv+N3r/D9/9TAID+A7T/Ae2/gPs/0P4TtP8F7r9J3AIO\n9P+g/Udw/9Oygbf7r9D+L7j/DO1/Q/vv4P4/tP8Q7n9E+y/h/k+0/xTuf4X7b+H+X7T/+BPuf3aM\n8OHDhw8fPnz4w/4vzcvgeY10sY0AAAAldEVYdGRhdGU6Y3JlYXRlADIwMTYtMDgtMjlUMTI6MjA6\nMDEtMDQ6MDBSHRTRAAAAJXRFWHRkYXRlOm1vZGlmeQAyMDE2LTA4LTI5VDEyOjIwOjAxLTA0OjAw\nI0CsbQAAAABJRU5ErkJggg==\n", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAPoAAAD6AgMAAAD1grKuAAAABGdBTUEAALGPC/xhBQAAACBjSFJN\nAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAADFBMVEX///9yEhLpgJFNv8Tq\nQYT7AAAAAWJLR0QAiAUdSAAAAAd0SU1FB+AJAwQmKDRX/78AAALKSURBVGje7dpLcqQwDAbgHHE2\nYeEj+D4cwQucBUfo+3CEXoSp8OhuhF70T4qpKXmdr21LogK2Pj7A8QmNP+HDhw8fPnz48Kf6VH9G\n+66vy+je8k19jnf8C5dXIPv86ms56lPdjvaYbyodx3ze+XLE76cXFiD4zPji99z0/AJ4n1lfvJ6f\nnl0A6x+578efMSg1wPr172/jPO5yFXM+Ef78gdblM+WPHyguP//t1/g6pA0wfln+ho/fwgYYn19C\n/xwDvwHGc9OvC+hs37DTrwuwfWanXxdQTC9Mvyygs3wjTL8uwPJpn/tNDbSGz7T0SBEWw4vLXzbQ\n6b6RoveIoO6TvPxlA63qs7z8ZQPF9F+SH22vbX8OQKf5Rtv+EgDNJ3X58wZaxWd1+fMGiuFvir8b\nvjp8J/tGy/6jAmRvhW8fwL3vVT+o3grfPoB7r/IpALI3tz8FoJN84/NV873hB8UnM3xzANtf8nb4\ndwmg3grfFEDJO8JPE0i9Ff4pAYL3pI8mkHor/HMCeO9JH00g9SafEsh7T/ppARBvp48UwJnelT5S\nACd7O31TAlnvKx9SQCd7B58KgPO+8iMFuPWe9E8F8BveWX7bAjzX9y4//Jve+fhsH6Ctv7n8PTzj\nvY/v9gEOHz58+PBX+6v/f/wPvnd54f3j6venE/yl769Xv7+j3x/o98/V32/o9+fl389Xnx+g5x/o\n+Qt6/oOeP6HnX+j5G3z+h54/ouefV5/foufP6Pk3ev4On/+j9w/o/Qd6/4Le/6D3T/D9V67Y/ZsV\nQBq+s+8f0ftP+P41axXguP9NWgDuu/Cdfv+N3r/D9/9TAID+A7T/Ae2/gPs/0P4TtP8F7r9J3AIO\n9P+g/Udw/9Oygbf7r9D+L7j/DO1/Q/vv4P4/tP8Q7n9E+y/h/k+0/xTuf4X7b+H+X7T/+BPuf3aM\n8OHDhw8fPnz4w/4vzcvgeY10sY0AAAAldEVYdGRhdGU6Y3JlYXRlADIwMTYtMDktMDNUMDQ6Mzg6\nNDAtMDQ6MDBo/hqzAAAAJXRFWHRkYXRlOm1vZGlmeQAyMDE2LTA5LTAzVDA0OjM4OjQwLTA0OjAw\nGaOiDwAAAABJRU5ErkJggg==\n", "text/plain": [ "" ] @@ -551,25 +550,39 @@ "name": "stdout", "output_type": "stream", "text": [ + "rm: cannot remove 'statepoint.*': No such file or directory\n", "\n", - " .d88888b. 888b d888 .d8888b.\n", - " d88P\" \"Y88b 8888b d8888 d88P Y88b\n", - " 888 888 88888b.d88888 888 888\n", - " 888 888 88888b. .d88b. 88888b. 888Y88888P888 888 \n", - " 888 888 888 \"88b d8P Y8b 888 \"88b 888 Y888P 888 888 \n", - " 888 888 888 888 88888888 888 888 888 Y8P 888 888 888\n", - " Y88b. .d88P 888 d88P Y8b. 888 888 888 \" 888 Y88b d88P\n", - " \"Y88888P\" 88888P\" \"Y8888 888 888 888 888 \"Y8888P\"\n", - "__________________888______________________________________________________\n", - " 888\n", - " 888\n", + " %%%%%%%%%%%%%%%\n", + " %%%%%%%%%%%%%%%%%%%%%%%%\n", + " %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\n", + " %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\n", + " %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\n", + " %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\n", + " %%%%%%%%%%%%%%%%%%%%%%%%\n", + " %%%%%%%%%%%%%%%%%%%%%%%%\n", + " ############### %%%%%%%%%%%%%%%%%%%%%%%%\n", + " ################## %%%%%%%%%%%%%%%%%%%%%%%\n", + " ################### %%%%%%%%%%%%%%%%%%%%%%%\n", + " #################### %%%%%%%%%%%%%%%%%%%%%%\n", + " ##################### %%%%%%%%%%%%%%%%%%%%%\n", + " ###################### %%%%%%%%%%%%%%%%%%%%\n", + " ####################### %%%%%%%%%%%%%%%%%%\n", + " ####################### %%%%%%%%%%%%%%%%%\n", + " ###################### %%%%%%%%%%%%%%%%%\n", + " #################### %%%%%%%%%%%%%%%%%\n", + " ################# %%%%%%%%%%%%%%%%%\n", + " ############### %%%%%%%%%%%%%%%%\n", + " ############ %%%%%%%%%%%%%%%\n", + " ######## %%%%%%%%%%%%%%\n", + " %%%%%%%%%%%\n", "\n", - " Copyright: 2011-2016 Massachusetts Institute of Technology\n", - " License: http://openmc.readthedocs.io/en/latest/license.html\n", - " Version: 0.8.0\n", - " Git SHA1: 26bdadd79aac3712450d8c0612ac3edcb68e720f\n", - " Date/Time: 2016-08-29 12:20:02\n", - " MPI Processes: 1\n", + " | The OpenMC Monte Carlo Code\n", + " Copyright | 2011-2016 Massachusetts Institute of Technology\n", + " License | http://openmc.readthedocs.io/en/latest/license.html\n", + " Version | 0.8.0\n", + " Git SHA1 | 623b705a399f16c8e5063732bc6e6a357611542d\n", + " Date/Time | 2016-09-03 04:38:41\n", + " OpenMP Threads | 4\n", "\n", " ===========================================================================\n", " ========================> INITIALIZATION <=========================\n", @@ -579,13 +592,13 @@ " Reading geometry XML file...\n", " Reading cross sections XML file...\n", " Reading materials XML file...\n", - " Reading U235.71c from /Users/sam/git/openmc-sam/data/nndc_hdf5/U235_71c.h5\n", - " Reading U238.71c from /Users/sam/git/openmc-sam/data/nndc_hdf5/U238_71c.h5\n", - " Reading O16.71c from /Users/sam/git/openmc-sam/data/nndc_hdf5/O16_71c.h5\n", - " Reading H1.71c from /Users/sam/git/openmc-sam/data/nndc_hdf5/H1_71c.h5\n", - " Reading B10.71c from /Users/sam/git/openmc-sam/data/nndc_hdf5/B10_71c.h5\n", - " Reading Zr90.71c from /Users/sam/git/openmc-sam/data/nndc_hdf5/Zr90_71c.h5\n", - " Maximum neutron transport energy: 20.0000 MeV for U235.71c\n", + " Reading U235 from /opt/xsdata/nndc_new/U235.h5\n", + " Reading U238 from /opt/xsdata/nndc_new/U238.h5\n", + " Reading O16 from /opt/xsdata/nndc_new/O16.h5\n", + " Reading H1 from /opt/xsdata/nndc_new/H1.h5\n", + " Reading B10 from /opt/xsdata/nndc_new/B10.h5\n", + " Reading Zr90 from /opt/xsdata/nndc_new/Zr90.h5\n", + " Maximum neutron transport energy: 20.0000 MeV for U235\n", " Reading tallies XML file...\n", " Building neighboring cells lists for each surface...\n", " Initializing source particles...\n", @@ -625,20 +638,20 @@ "\n", " =======================> TIMING STATISTICS <=======================\n", "\n", - " Total time for initialization = 4.6800E-01 seconds\n", - " Reading cross sections = 2.8200E-01 seconds\n", - " Total time in simulation = 1.8453E+01 seconds\n", - " Time in transport only = 1.8432E+01 seconds\n", - " Time in inactive batches = 2.5060E+00 seconds\n", - " Time in active batches = 1.5947E+01 seconds\n", - " Time synchronizing fission bank = 2.0000E-03 seconds\n", - " Sampling source sites = 0.0000E+00 seconds\n", - " SEND/RECV source sites = 1.0000E-03 seconds\n", - " Time accumulating tallies = 1.0000E-03 seconds\n", - " Total time for finalization = 3.0000E-03 seconds\n", - " Total time elapsed = 1.8947E+01 seconds\n", - " Calculation Rate (inactive) = 4988.03 neutrons/second\n", - " Calculation Rate (active) = 2351.54 neutrons/second\n", + " Total time for initialization = 3.8900E-01 seconds\n", + " Reading cross sections = 2.7000E-01 seconds\n", + " Total time in simulation = 4.6960E+00 seconds\n", + " Time in transport only = 4.6760E+00 seconds\n", + " Time in inactive batches = 6.6400E-01 seconds\n", + " Time in active batches = 4.0320E+00 seconds\n", + " Time synchronizing fission bank = 1.0000E-03 seconds\n", + " Sampling source sites = 1.0000E-03 seconds\n", + " SEND/RECV source sites = 0.0000E+00 seconds\n", + " Time accumulating tallies = 0.0000E+00 seconds\n", + " Total time for finalization = 1.0000E-03 seconds\n", + " Total time elapsed = 5.0960E+00 seconds\n", + " Calculation Rate (inactive) = 18825.3 neutrons/second\n", + " Calculation Rate (active) = 9300.60 neutrons/second\n", "\n", " ============================> RESULTS <============================\n", "\n", @@ -1728,21 +1741,21 @@ ], "metadata": { "kernelspec": { - "display_name": "Python 2", + "display_name": "Python 3", "language": "python", - "name": "python2" + "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", - "version": 2 + "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", - "pygments_lexer": "ipython2", - "version": "2.7.12" + "pygments_lexer": "ipython3", + "version": "3.5.2" } }, "nbformat": 4, diff --git a/docs/source/usersguide/input.rst b/docs/source/usersguide/input.rst index 2ab823e6e..dae3e74b2 100644 --- a/docs/source/usersguide/input.rst +++ b/docs/source/usersguide/input.rst @@ -281,6 +281,8 @@ based on the recommended value in LA-UR-14-24530_. .. note:: This element is not used in the multi-group :ref:`energy_mode`. +.. _multipole_library: + ```` Element ------------------------------- @@ -290,8 +292,8 @@ OpenMC can use it for on-the-fly Doppler-broadening of resolved resonance range cross sections. If this element is absent from the settings.xml file, the :envvar:`OPENMC_MULTIPOLE_LIBRARY` environment variable will be used. - .. note:: The element must also be set to "true" - for windowed multipole functionality. + .. note:: The :ref:`temperature_method` must also be set to "multipole" for + windowed multipole functionality. ```` Element --------------------------- @@ -395,19 +397,16 @@ attributes or sub-elements: :scatterer: An element with attributes/sub-elements called ``nuclide``, ``method``, - ``xs_label``, ``xs_label_0K``, ``E_min``, and ``E_max``. The ``nuclide`` - attribute is the name, as given by the ``name`` attribute within the - ``nuclide`` sub-element of the ``material`` element in ``materials.xml``, - of the nuclide to which a resonance scattering treatment is to be applied. + ``E_min``, and ``E_max``. The ``nuclide`` attribute is the name, as given + by the ``name`` attribute within the ``nuclide`` sub-element of the + ``material`` element in ``materials.xml``, of the nuclide to which a + resonance scattering treatment is to be applied. The ``method`` attribute gives the type of resonance scattering treatment that is to be applied to the ``nuclide``. Acceptable inputs - none of which are case-sensitive - for the ``method`` attribute are ``ARES``, ``CXS``, ``WCM``, and ``DBRC``. Descriptions of each of these methods - are documented here_. The ``xs_label`` attribute gives the label for the - cross section data of the ``nuclide`` at a given temperature. The - ``xs_label_0K`` gives the label for the 0 K cross section data for the - ``nuclide``. The ``E_min`` attribute gives the minimum energy above - which the ``method`` is applied. The ``E_max`` attribute gives the + are documented here_. The ``E_min`` attribute gives the minimum energy + above which the ``method`` is applied. The ``E_max`` attribute gives the maximum energy below which the ``method`` is applied. One example would be as follows: @@ -419,16 +418,12 @@ attributes or sub-elements: U-238 ARES - 92238.72c - 92238.00c 5.0e-6 40.0e-6 Pu-239 dbrc - 94239.72c - 94239.00c 0.01e-6 210.0e-6 @@ -714,6 +709,45 @@ survival biasing, otherwise known as implicit capture or absorption. *Default*: false +.. _temperature_default: + +```` Element +--------------------------------- + +The ```` element specifies a default temperature in Kelvin +that is to be applied to cells in the absence of an explicit cell temperature or +a material default temperature. + + *Default*: 293.6 K + +.. _temperature_method: + +```` Element +-------------------------------- + +The ```` element has an accepted value of "nearest" or +"interpolation". A value of "nearest" indicates that for each cell, the nearest +temperature at which cross sections are given is to be applied, within a given +tolerance (see :ref:`temperature_tolerance`). A value of "multipole" indicates +that the windowed multipole method should be used to evaluate +temperature-dependent cross sections in the resolved resonance range (a +:ref:`windowed multipole library ` must also be available). + + *Default*: "nearest" + +.. _temperature_tolerance: + +```` Element +----------------------------------- + +The ```` element specifies a tolerance in Kelvin that is +to be applied when the "nearest" temperature method is used. For example, if a +cell temperature is 340 K and the tolerance is 15 K, then the closest +temperature in the range of 325 K to 355 K will be used to evaluate cross +sections. + + *Default*: 10 K + ```` Element --------------------- @@ -1090,7 +1124,9 @@ Each ```` element can have the following attributes or sub-elements: specified for the "distributed temperature" feature. This will give each unique instance of the cell its own temperature. - *Default*: The temperature of the coldest nuclide in the cell's material(s) + *Default*: If a material default temperature is supplied, it is used. In the + absence of a material default temperature, the :ref:`global default + temperature ` is used. :rotation: If the cell is filled with a universe, this element specifies the angles in @@ -1295,6 +1331,14 @@ Each ``material`` element can have the following attributes or sub-elements: *Default*: "" + :temperature: + An element with no attributes which is used to set the default temperature + of the material in Kelvin. + + *Default*: If a material default temperature is not given and a cell + temperature is not specified, the :ref:`global default temperature + ` is used. + :density: An element with attributes/sub-elements called ``value`` and ``units``. The ``value`` attribute is the numeric value of the density while the ``units`` @@ -1315,17 +1359,16 @@ Each ``material`` element can have the following attributes or sub-elements: ``nuclide``, ``element``, or ``sab`` quantity. :nuclide: - An element with attributes/sub-elements called ``name``, ``xs``, and ``ao`` + An element with attributes/sub-elements called ``name``, and ``ao`` or ``wo``. The ``name`` attribute is the name of the cross-section for a - desired nuclide while the ``xs`` attribute is the cross-section - identifier. Finally, the ``ao`` and ``wo`` attributes specify the atom or + desired nuclide. Finally, the ``ao`` and ``wo`` attributes specify the atom or weight percent of that nuclide within the material, respectively. One example would be as follows: .. code-block:: xml - - + + .. note:: If one nuclide is specified in atom percent, all others must also be given in atom percent. The same applies for weight percentages. @@ -1349,11 +1392,10 @@ Each ``material`` element can have the following attributes or sub-elements: Specifies that a natural element is present in the material. The natural element is split up into individual isotopes based on `IUPAC Isotopic Compositions of the Elements 2009`_. This element has - attributes/sub-elements called ``name``, ``xs``, and ``ao``. The ``name`` - attribute is the atomic symbol of the element while the ``xs`` attribute is - the cross-section identifier. Finally, the ``ao`` attribute specifies the - atom percent of the element within the material, respectively. One example - would be as follows: + attributes/sub-elements called ``name``, and ``ao``. The ``name`` + attribute is the atomic symbol of the element. Finally, the ``ao`` + attribute specifies the atom percent of the element within the material, + respectively. One example would be as follows: .. code-block:: xml @@ -1383,10 +1425,9 @@ Each ``material`` element can have the following attributes or sub-elements: multi-group :ref:`energy_mode`. :sab: - Associates an S(a,b) table with the material. This element has - attributes/sub-elements called ``name`` and ``xs``. The ``name`` attribute - is the name of the S(a,b) table that should be associated with the material, - and ``xs`` is the cross-section identifier for the table. + Associates an S(a,b) table with the material. This element has one + attribute/sub-element called ``name``. The ``name`` attribute + is the name of the S(a,b) table that should be associated with the material. *Default*: None @@ -1397,14 +1438,13 @@ Each ``material`` element can have the following attributes or sub-elements: recognizes that some multi-group libraries may be providing material specific macroscopic cross sections instead of always providing nuclide specific data like in the continuous-energy case. To that end, the - macroscopic element has attributes/sub-elements called ``name``, and ``xs``. + macroscopic element has one attribute/sub-element called ``name``. The ``name`` attribute is the name of the cross-section for a - desired nuclide while the ``xs`` attribute is the cross-section - identifier. One example would be as follows: + desired nuclide. One example would be as follows: .. code-block:: xml - + .. note:: This element is only used in the multi-group :ref:`energy_mode`. @@ -1413,18 +1453,6 @@ Each ``material`` element can have the following attributes or sub-elements: .. _IUPAC Isotopic Compositions of the Elements 2009: http://pac.iupac.org/publications/pac/pdf/2011/pdf/8302x0397.pdf -```` Element ------------------------- - -In some circumstances, the cross-section identifier may be the same for many or -all nuclides in a given problem. In this case, rather than specifying the -``xs=...`` attribute on every nuclide, a ```` element can be used to -set the default cross-section identifier for any nuclide without an identifier -explicitly listed. This element has no attributes and accepts a 3-letter string -that indicates the default cross-section identifier, e.g. "70c". - - *Default*: None - ------------------------------------ Tallies Specification -- tallies.xml ------------------------------------ diff --git a/examples/python/basic/build-xml.py b/examples/python/basic/build-xml.py index 1bfe50b2e..022737fdb 100644 --- a/examples/python/basic/build-xml.py +++ b/examples/python/basic/build-xml.py @@ -25,7 +25,7 @@ moderator = openmc.Material(material_id=41, name='moderator') moderator.set_density('g/cc', 1.0) moderator.add_nuclide(h1, 2.) moderator.add_nuclide(o16, 1.) -moderator.add_s_alpha_beta('c_H_in_H2O', '71t') +moderator.add_s_alpha_beta('c_H_in_H2O') fuel = openmc.Material(material_id=40, name='fuel') fuel.set_density('g/cc', 4.5) @@ -33,7 +33,6 @@ fuel.add_nuclide(u235, 1.) # Instantiate a Materials collection and export to XML materials_file = openmc.Materials([moderator, fuel]) -materials_file.default_xs = '71c' materials_file.export_to_xml() diff --git a/examples/python/boxes/build-xml.py b/examples/python/boxes/build-xml.py index 3eed4059c..308019e7d 100644 --- a/examples/python/boxes/build-xml.py +++ b/examples/python/boxes/build-xml.py @@ -34,11 +34,10 @@ moderator = openmc.Material(material_id=3, name='moderator') moderator.set_density('g/cc', 1.0) moderator.add_nuclide(h1, 2.) moderator.add_nuclide(o16, 1.) -moderator.add_s_alpha_beta('c_H_in_H2O', '71t') +moderator.add_s_alpha_beta('c_H_in_H2O') # Instantiate a Materials collection and export to XML materials_file = openmc.Materials([fuel1, fuel2, moderator]) -materials_file.default_xs = '71c' materials_file.export_to_xml() diff --git a/examples/python/lattice/hexagonal/build-xml.py b/examples/python/lattice/hexagonal/build-xml.py index ba2cac367..cca072ba7 100644 --- a/examples/python/lattice/hexagonal/build-xml.py +++ b/examples/python/lattice/hexagonal/build-xml.py @@ -29,7 +29,7 @@ moderator = openmc.Material(material_id=2, name='moderator') moderator.set_density('g/cc', 1.0) moderator.add_nuclide(h1, 2.) moderator.add_nuclide(o16, 1.) -moderator.add_s_alpha_beta('c_H_in_H2O', '71t') +moderator.add_s_alpha_beta('c_H_in_H2O') iron = openmc.Material(material_id=3, name='iron') iron.set_density('g/cc', 7.9) @@ -37,7 +37,6 @@ iron.add_nuclide(fe56, 1.) # Instantiate a Materials collection and export to XML materials_file = openmc.Materials([moderator, fuel, iron]) -materials_file.default_xs = '71c' materials_file.export_to_xml() diff --git a/examples/python/lattice/nested/build-xml.py b/examples/python/lattice/nested/build-xml.py index edf3ad7b1..3189641e7 100644 --- a/examples/python/lattice/nested/build-xml.py +++ b/examples/python/lattice/nested/build-xml.py @@ -28,11 +28,10 @@ moderator = openmc.Material(material_id=2, name='moderator') moderator.set_density('g/cc', 1.0) moderator.add_nuclide(h1, 2.) moderator.add_nuclide(o16, 1.) -moderator.add_s_alpha_beta('c_H_in_H2O', '71t') +moderator.add_s_alpha_beta('c_H_in_H2O') # Instantiate a Materials collection and export to XML materials_file = openmc.Materials((moderator, fuel)) -materials_file.default_xs = '71c' materials_file.export_to_xml() diff --git a/examples/python/lattice/simple/build-xml.py b/examples/python/lattice/simple/build-xml.py index 5ec1b7ee9..2f1f8e76e 100644 --- a/examples/python/lattice/simple/build-xml.py +++ b/examples/python/lattice/simple/build-xml.py @@ -28,11 +28,10 @@ moderator = openmc.Material(material_id=2, name='moderator') moderator.set_density('g/cc', 1.0) moderator.add_nuclide(h1, 2.) moderator.add_nuclide(o16, 1.) -moderator.add_s_alpha_beta('c_H_in_H2O', '71t') +moderator.add_s_alpha_beta('c_H_in_H2O') # Instantiate a Materials collection and export to XML materials_file = openmc.Materials([moderator, fuel]) -materials_file.default_xs = '71c' materials_file.export_to_xml() diff --git a/examples/python/pincell/build-xml.py b/examples/python/pincell/build-xml.py index 3bda05027..fc91ae693 100644 --- a/examples/python/pincell/build-xml.py +++ b/examples/python/pincell/build-xml.py @@ -98,11 +98,10 @@ borated_water.add_nuclide(h1, 4.9457e-2) borated_water.add_nuclide(h2, 7.4196e-6) borated_water.add_nuclide(o16, 2.4672e-2) borated_water.add_nuclide(o17, 6.0099e-5) -borated_water.add_s_alpha_beta('c_H_in_H2O', '71t') +borated_water.add_s_alpha_beta('c_H_in_H2O') # Instantiate a Materials collection and export to XML materials_file = openmc.Materials([uo2, helium, zircaloy, borated_water]) -materials_file.default_xs = '71c' materials_file.export_to_xml() diff --git a/examples/python/pincell_multigroup/build-xml.py b/examples/python/pincell_multigroup/build-xml.py index 6dbfa336b..2b08e8274 100644 --- a/examples/python/pincell_multigroup/build-xml.py +++ b/examples/python/pincell_multigroup/build-xml.py @@ -19,7 +19,7 @@ groups = openmc.mgxs.EnergyGroups(group_edges=[1E-11, 0.0635E-6, 10.0E-6, 1.0E-4, 1.0E-3, 0.5, 1.0, 20.0]) # Instantiate the 7-group (C5G7) cross section data -uo2_xsdata = openmc.XSdata('UO2.300K', groups) +uo2_xsdata = openmc.XSdata('UO2', groups) uo2_xsdata.order = 0 uo2_xsdata.total = [0.1779492, 0.3298048, 0.4803882, 0.5543674, 0.3118013, 0.3951678, 0.5644058] @@ -41,7 +41,7 @@ uo2_xsdata.nu_fission = [2.005998E-02, 2.027303E-03, 1.570599E-02, uo2_xsdata.chi = [5.8791E-01, 4.1176E-01, 3.3906E-04, 1.1761E-07, 0.0000E+00, 0.0000E+00, 0.0000E+00] -h2o_xsdata = openmc.XSdata('LWTR.300K', groups) +h2o_xsdata = openmc.XSdata('LWTR', groups) h2o_xsdata.order = 0 h2o_xsdata.total = [0.15920605, 0.412969593, 0.59030986, 0.58435, 0.718, 1.2544497, 2.650379] @@ -66,8 +66,8 @@ mg_cross_sections_file.export_to_xml() ############################################################################### # Instantiate some Macroscopic Data -uo2_data = openmc.Macroscopic('UO2', '300K') -h2o_data = openmc.Macroscopic('LWTR', '300K') +uo2_data = openmc.Macroscopic('UO2') +h2o_data = openmc.Macroscopic('LWTR') # Instantiate some Materials and register the appropriate Macroscopic objects uo2 = openmc.Material(material_id=1, name='UO2 fuel') @@ -80,7 +80,6 @@ water.add_macroscopic(h2o_data) # Instantiate a Materials collection and export to XML materials_file = openmc.Materials([uo2, water]) -materials_file.default_xs = '300K' materials_file.export_to_xml() diff --git a/examples/python/reflective/build-xml.py b/examples/python/reflective/build-xml.py index 0e064ab61..af86e446a 100644 --- a/examples/python/reflective/build-xml.py +++ b/examples/python/reflective/build-xml.py @@ -25,7 +25,6 @@ fuel.add_nuclide(u235, 1.) # Instantiate a Materials collection and export to XML materials_file = openmc.Materials([fuel]) -materials_file.default_xs = '71c' materials_file.export_to_xml() diff --git a/examples/xml/basic/materials.xml b/examples/xml/basic/materials.xml index 2f88731ff..606c676df 100644 --- a/examples/xml/basic/materials.xml +++ b/examples/xml/basic/materials.xml @@ -1,8 +1,6 @@ - 71c - @@ -12,7 +10,7 @@ - + diff --git a/examples/xml/boxes/materials.xml b/examples/xml/boxes/materials.xml index c74714a08..1d0ab4a1c 100644 --- a/examples/xml/boxes/materials.xml +++ b/examples/xml/boxes/materials.xml @@ -1,8 +1,6 @@ - 71c - @@ -17,7 +15,7 @@ - + diff --git a/examples/xml/lattice/nested/materials.xml b/examples/xml/lattice/nested/materials.xml index 7f8b06bb1..222272195 100644 --- a/examples/xml/lattice/nested/materials.xml +++ b/examples/xml/lattice/nested/materials.xml @@ -1,8 +1,6 @@ - 71c - @@ -13,7 +11,7 @@ - + diff --git a/examples/xml/lattice/simple/materials.xml b/examples/xml/lattice/simple/materials.xml index 7f8b06bb1..222272195 100644 --- a/examples/xml/lattice/simple/materials.xml +++ b/examples/xml/lattice/simple/materials.xml @@ -1,8 +1,6 @@ - 71c - @@ -13,7 +11,7 @@ - + diff --git a/examples/xml/pincell/materials.xml b/examples/xml/pincell/materials.xml index b6af486d1..9f9afa384 100644 --- a/examples/xml/pincell/materials.xml +++ b/examples/xml/pincell/materials.xml @@ -1,9 +1,6 @@ - - 71c - - 300K - diff --git a/examples/xml/pincell_multigroup/mg_cross_sections.xml b/examples/xml/pincell_multigroup/mg_cross_sections.xml index 9e46a4811..19d319f23 100644 --- a/examples/xml/pincell_multigroup/mg_cross_sections.xml +++ b/examples/xml/pincell_multigroup/mg_cross_sections.xml @@ -11,8 +11,8 @@ --> - UO2.300K - UO2.300K + UO2 + UO2 2.53E-8 0 true @@ -67,8 +67,8 @@ - MOX1.300K - MOX1.300K + MOX1 + MOX1 2.53E-8 0 true @@ -124,8 +124,8 @@ - MOX2.300K - MOX2.300K + MOX2 + MOX2 2.53E-8 0 true @@ -180,8 +180,8 @@ - MOX3.300K - MOX3.300K + MOX3 + MOX3 2.53E-8 0 true @@ -236,8 +236,8 @@ - FC.300K - FC.300K + FC + FC 2.53E-8 0 true @@ -286,8 +286,8 @@ - GT.300K - GT.300K + GT + GT 2.53E-8 0 false @@ -318,8 +318,8 @@ - LWTR.300K - LWTR.300K + LWTR + LWTR 2.53E-8 0 false @@ -351,8 +351,8 @@ - CR.300K - CR.300K + CR + CR 2.53E-8 0 false diff --git a/examples/xml/reflective/materials.xml b/examples/xml/reflective/materials.xml index 13cbf070e..2472a7471 100644 --- a/examples/xml/reflective/materials.xml +++ b/examples/xml/reflective/materials.xml @@ -1,8 +1,6 @@ - 71c - diff --git a/openmc/data/data.py b/openmc/data/data.py index ebc2cba43..574ae541a 100644 --- a/openmc/data/data.py +++ b/openmc/data/data.py @@ -218,3 +218,8 @@ def atomic_mass(isotope): isotope = isotope[:isotope.find('_')] return _ATOMIC_MASS.get(isotope.lower()) + +# The value of the Boltzman constant in units of MeV / K +# Values here are from the Committee on Data for Science and Technology +# (CODATA) 2010 recommendation (doi:10.1103/RevModPhys.84.1527). +K_BOLTZMANN = 8.6173324E-11 diff --git a/openmc/data/neutron.py b/openmc/data/neutron.py index c6621e1b8..456ccee7b 100644 --- a/openmc/data/neutron.py +++ b/openmc/data/neutron.py @@ -1,13 +1,14 @@ from __future__ import division, unicode_literals import sys -from collections import OrderedDict, Iterable, Mapping +from collections import OrderedDict, Iterable, Mapping, MutableMapping +from itertools import chain from numbers import Integral, Real from warnings import warn import numpy as np import h5py -from .data import ATOMIC_SYMBOL, SUM_RULES +from .data import ATOMIC_SYMBOL, SUM_RULES, K_BOLTZMANN from .ace import Table, get_table from .fission_energy import FissionEnergyRelease from .function import Tabulated1D, Sum @@ -21,6 +22,73 @@ if sys.version_info[0] >= 3: basestring = str +def _get_metadata(zaid, metastable_scheme='nndc'): + """Return basic identifying data for a nuclide with a given ZAID. + + Parameters + ---------- + zaid : int + ZAID (1000*Z + A) obtained from a library + metastable_scheme : {'nndc', 'mcnp'} + Determine how ZAID identifiers are to be interpreted in the case of + a metastable nuclide. Because the normal ZAID (=1000*Z + A) does not + encode metastable information, different conventions are used among + different libraries. In MCNP libraries, the convention is to add 400 + for a metastable nuclide except for Am242m, for which 95242 is + metastable and 95642 (or 1095242 in newer libraries) is the ground + state. For NNDC libraries, ZAID is given as 1000*Z + A + 100*m. + + Returns + ------- + name : str + Name of the table + element : str + The atomic symbol of the isotope in the table; e.g., Zr. + Z : int + Number of protons in the nucleus + mass_number : int + Number of nucleons in the nucleus + metastable : int + Metastable state of the nucleus. A value of zero indicates ground state. + + """ + + cv.check_type('zaid', zaid, int) + cv.check_value('metastable_scheme', metastable_scheme, ['nndc', 'mcnp']) + + Z = zaid // 1000 + mass_number = zaid % 1000 + + if metastable_scheme == 'mcnp': + if zaid > 1000000: + # New SZA format + Z = Z % 1000 + if zaid == 1095242: + metastable = 0 + else: + metastable = zaid // 1000000 + else: + if zaid == 95242: + metastable = 1 + elif zaid == 95642: + metastable = 0 + else: + metastable = 1 if mass_number > 300 else 0 + elif metastable_scheme == 'nndc': + metastable = 1 if mass_number > 300 else 0 + + while mass_number > 3 * Z: + mass_number -= 100 + + # Determine name + element = ATOMIC_SYMBOL[Z] + name = '{}{}'.format(element, mass_number) + if metastable > 0: + name += '_m{}'.format(metastable) + + return (name, element, Z, mass_number, metastable) + + class IncidentNeutron(EqualityMixin): """Continuous-energy neutron interaction data. @@ -31,7 +99,7 @@ class IncidentNeutron(EqualityMixin): Parameters ---------- name : str - Name of the table + Name of the nuclide using the GND naming convention atomic_number : int Number of protons in the nucleus mass_number : int @@ -40,8 +108,9 @@ class IncidentNeutron(EqualityMixin): Metastable state of the nucleus. A value of zero indicates ground state. atomic_weight_ratio : float Atomic mass ratio of the target nuclide. - temperature : float - Temperature of the target nuclide in MeV. + kTs : Iterable of float + List of temperatures of the target nuclide in the data set. + The temperatures have units of MeV. Attributes ---------- @@ -51,8 +120,10 @@ class IncidentNeutron(EqualityMixin): Atomic symbol of the nuclide, e.g., 'Zr' atomic_weight_ratio : float Atomic weight ratio of the target nuclide. - energy : numpy.ndarray + energy : dict of numpy.ndarray The energy values (MeV) at which reaction cross-sections are tabulated. + They keys of the dict are the temperature string ('294K') for each + set of energies fission_energy : None or openmc.data.FissionEnergyRelease The energy released by fission, tabulated by component (e.g. prompt neutrons or beta particles) and dependent on incident neutron energy @@ -61,7 +132,7 @@ class IncidentNeutron(EqualityMixin): metastable : int Metastable state of the nucleus. A value of zero indicates ground state. name : str - ZAID identifier of the table, e.g. 92235.70c. + Name of the nuclide using the GND naming convention reactions : collections.OrderedDict Contains the cross sections, secondary angle and energy distributions, and other associated data for each reaction. The keys are the MT values @@ -69,27 +140,32 @@ class IncidentNeutron(EqualityMixin): summed_reactions : collections.OrderedDict Contains summed cross sections, e.g., the total cross section. The keys are the MT values and the values are Reaction objects. - temperature : float - Temperature of the target nuclide in MeV. - urr : None or openmc.data.ProbabilityTables - Unresolved resonance region probability tables + temperatures : list of str + List of string representations the temperatures of the target nuclide + in the data set. The temperatures are strings of the temperature, + rounded to the nearest integer; e.g., '294K' + kTs : Iterable of float + List of temperatures of the target nuclide in the data set. + The temperatures have units of MeV. + urr : dict + Dictionary whose keys are temperatures (e.g., '294K') and values are + unresolved resonance region probability tables. """ def __init__(self, name, atomic_number, mass_number, metastable, - atomic_weight_ratio, temperature): + atomic_weight_ratio, kTs): self.name = name self.atomic_number = atomic_number self.mass_number = mass_number self.metastable = metastable self.atomic_weight_ratio = atomic_weight_ratio - self.temperature = temperature - - self._energy = None + self.kTs = kTs + self.energy = {} self._fission_energy = None self.reactions = OrderedDict() self.summed_reactions = OrderedDict() - self.urr = None + self._urr = {} def __contains__(self, mt): return mt in self.reactions or mt in self.summed_reactions @@ -128,18 +204,10 @@ class IncidentNeutron(EqualityMixin): def atomic_weight_ratio(self): return self._atomic_weight_ratio - @property - def energy(self): - return self._energy - @property def fission_energy(self): return self._fission_energy - @property - def temperature(self): - return self._temperature - @property def reactions(self): return self._reactions @@ -152,6 +220,10 @@ class IncidentNeutron(EqualityMixin): def urr(self): return self._urr + @property + def temperatures(self): + return ["{}K".format(int(round(kT / K_BOLTZMANN))) for kT in self.kTs] + @name.setter def name(self, name): cv.check_type('name', name, basestring) @@ -159,7 +231,7 @@ class IncidentNeutron(EqualityMixin): @property def atomic_symbol(self): - return atomic_symbol[self.atomic_number] + return ATOMIC_SYMBOL[self.atomic_number] @atomic_number.setter def atomic_number(self, atomic_number): @@ -185,17 +257,6 @@ class IncidentNeutron(EqualityMixin): cv.check_greater_than('atomic weight ratio', atomic_weight_ratio, 0.0) self._atomic_weight_ratio = atomic_weight_ratio - @temperature.setter - def temperature(self, temperature): - cv.check_type('temperature', temperature, Real) - cv.check_greater_than('temperature', temperature, 0.0, True) - self._temperature = temperature - - @energy.setter - def energy(self, energy): - cv.check_type('energy grid', energy, Iterable, Real) - self._energy = energy - @fission_energy.setter def fission_energy(self, fission_energy): cv.check_type('fission energy release', fission_energy, @@ -214,10 +275,61 @@ class IncidentNeutron(EqualityMixin): @urr.setter def urr(self, urr): - cv.check_type('probability tables', urr, - (ProbabilityTables, type(None))) + cv.check_type('probability table dictionary', urr, MutableMapping) + for key, value in urr: + cv.check_type('probability table temperature', key, basestring) + cv.check_type('probability tables', value, ProbabilityTables) self._urr = urr + def add_temperature_from_ace(self, ace_or_filename, metastable_scheme='nndc'): + """Append data from an ACE file at a different temperature. + + Parameters + ---------- + ace_or_filename : openmc.data.ace.Table or str + ACE table to read from. If given as a string, it is assumed to be + the filename for the ACE file. + metastable_scheme : {'nndc', 'mcnp'} + Determine how ZAID identifiers are to be interpreted in the case of + a metastable nuclide. Because the normal ZAID (=1000*Z + A) does not + encode metastable information, different conventions are used among + different libraries. In MCNP libraries, the convention is to add 400 + for a metastable nuclide except for Am242m, for which 95242 is + metastable and 95642 (or 1095242 in newer libraries) is the ground + state. For NNDC libraries, ZAID is given as 1000*Z + A + 100*m. + + """ + + data = IncidentNeutron.from_ace(ace_or_filename, metastable_scheme) + + # Check if temprature already exists + strT = data.temperatures[0] + if strT in self.temperatures: + warn('Cross sections at T={} already exist.'.format(strT)) + return + + # Check that name matches + if data.name != self.name: + raise ValueError('Data provided for an incorrect nuclide.') + + # Add temperature + self.kTs += data.kTs + + # Add energy grid + self.energy[strT] = data.energy[strT] + + # Add normal and summed reactions + for mt in chain(data.reactions, data.summed_reactions): + if mt not in self: + raise ValueError("Tried to add cross sections for MT={} at T={}" + " but this reaction doesn't exist.".format( + mt, strT)) + self[mt].xs[strT] = data[mt].xs[strT] + + # Add probability tables + if strT in data.urr: + self.urr[strT] = data.urr[strT] + def get_reaction_components(self, mt): """Determine what reactions make up summed reaction. @@ -271,10 +383,14 @@ class IncidentNeutron(EqualityMixin): g.attrs['A'] = self.mass_number g.attrs['metastable'] = self.metastable g.attrs['atomic_weight_ratio'] = self.atomic_weight_ratio - g.attrs['temperature'] = self.temperature + ktg = g.create_group('kTs') + for i, temperature in enumerate(self.temperatures): + ktg.create_dataset(temperature, data=self.kTs[i]) # Write energy grid - g.create_dataset('energy', data=self.energy) + eg = g.create_group('energy') + for temperature in self.temperatures: + eg.create_dataset(temperature, data=self.energy[temperature]) # Write reaction data rxs_group = g.create_group('reactions') @@ -288,9 +404,11 @@ class IncidentNeutron(EqualityMixin): rx.derived_products[0].to_hdf5(tgroup) # Write unresolved resonance probability tables - if self.urr is not None: + if self.urr: urr_group = g.create_group('urr') - self.urr.to_hdf5(urr_group) + for temperature, urr in self.urr.items(): + tgroup = urr_group.create_group(temperature) + urr.to_hdf5(tgroup) # Write fission energy release data if self.fission_energy is not None: @@ -327,13 +445,18 @@ class IncidentNeutron(EqualityMixin): mass_number = group.attrs['A'] metastable = group.attrs['metastable'] atomic_weight_ratio = group.attrs['atomic_weight_ratio'] - temperature = group.attrs['temperature'] + kTg = group['kTs'] + kTs = [] + for temp in kTg: + kTs.append(kTg[temp].value) data = cls(name, atomic_number, mass_number, metastable, - atomic_weight_ratio, temperature) + atomic_weight_ratio, kTs) # Read energy grid - data.energy = group['energy'].value + e_group = group['energy'] + for temperature, dset in e_group.items(): + data.energy[temperature] = dset.value # Read reaction data rxs_group = group['reactions'] @@ -347,21 +470,21 @@ class IncidentNeutron(EqualityMixin): tgroup = group['total_nu'] rx.derived_products.append(Product.from_hdf5(tgroup)) - # Build summed reactions. Start from the highest MT number because high - # MTs never depend on lower MTs. + # Build summed reactions. Start from the highest MT number because + # high MTs never depend on lower MTs. for mt_sum in sorted(SUM_RULES, reverse=True): if mt_sum not in data: - xs_components = [data[mt].xs for mt in SUM_RULES[mt_sum] - if mt in data] - if len(xs_components) > 0: - rxn = Reaction(mt_sum) - rxn.xs = Sum(xs_components) - data.summed_reactions[mt_sum] = rxn + rxs = [data[mt] for mt in SUM_RULES[mt_sum] if mt in data] + if len(rxs) > 0: + data.summed_reactions[mt_sum] = rx = Reaction(mt_sum) + for T in data.temperatures: + rx.xs[T] = Sum([rx.xs[T] for rx in rxs]) # Read unresolved resonance probability tables if 'urr' in group: urr_group = group['urr'] - data.urr = ProbabilityTables.from_hdf5(urr_group) + for temperature, tgroup in urr_group.items(): + data.urr[temperature] = ProbabilityTables.from_hdf5(tgroup) # Read fission energy release data if 'fission_energy_release' in group: @@ -376,9 +499,9 @@ class IncidentNeutron(EqualityMixin): Parameters ---------- - ace : openmc.data.ace.Table or str - ACE table to read from. If given as a string, it is assumed to be - the filename for the ACE file. + ace_or_filename : openmc.data.ace.Table or str + ACE table to read from. If the value is a string, it is assumed to + be the filename for the ACE file. metastable_scheme : {'nndc', 'mcnp'} Determine how ZAID identifiers are to be interpreted in the case of a metastable nuclide. Because the normal ZAID (=1000*Z + A) does not @@ -394,6 +517,8 @@ class IncidentNeutron(EqualityMixin): Incident neutron continuous-energy data """ + + # First obtain the data for the first provided ACE table/file if isinstance(ace_or_filename, Table): ace = ace_or_filename else: @@ -401,55 +526,35 @@ class IncidentNeutron(EqualityMixin): # If mass number hasn't been specified, make an educated guess zaid, xs = ace.name.split('.') - zaid = int(zaid) - Z = zaid // 1000 - mass_number = zaid % 1000 + name, element, Z, mass_number, metastable = \ + _get_metadata(int(zaid), metastable_scheme) - if metastable_scheme == 'mcnp': - if zaid > 1000000: - # New SZA format - Z = Z % 1000 - if zaid == 1095242: - metastable = 0 - else: - metastable = zaid // 1000000 - else: - if zaid == 95242: - metastable = 1 - elif zaid == 95642: - metastable = 0 - else: - metastable = 1 if mass_number > 300 else 0 - elif metastable_scheme == 'nndc': - metastable = 1 if mass_number > 300 else 0 - - while mass_number > 3*Z: - mass_number -= 100 - - # Determine name for group - element = ATOMIC_SYMBOL[Z] - if metastable > 0: - name = '{}{}_m{}.{}'.format(element, mass_number, metastable, xs) - else: - name = '{}{}.{}'.format(element, mass_number, xs) + # Assign temperature to the running list + kTs = [ace.temperature] data = cls(name, Z, mass_number, metastable, - ace.atomic_weight_ratio, ace.temperature) + ace.atomic_weight_ratio, kTs) + + # Get string of temperature to use as a dictionary key + strT = data.temperatures[0] # Read energy grid n_energy = ace.nxs[3] energy = ace.xss[ace.jxs[1]:ace.jxs[1] + n_energy] - data.energy = energy - total_xs = ace.xss[ace.jxs[1] + n_energy:ace.jxs[1] + 2*n_energy] - absorption_xs = ace.xss[ace.jxs[1] + 2*n_energy:ace.jxs[1] + 3*n_energy] + data.energy[strT] = energy + total_xs = ace.xss[ace.jxs[1] + n_energy:ace.jxs[1] + 2 * n_energy] + absorption_xs = ace.xss[ace.jxs[1] + 2 * n_energy:ace.jxs[1] + + 3 * n_energy] # Create summed reactions (total and absorption) total = Reaction(1) - total.xs = Tabulated1D(energy, total_xs) + total.xs[strT] = Tabulated1D(energy, total_xs) data.summed_reactions[1] = total - absorption = Reaction(27) - absorption.xs = Tabulated1D(energy, absorption_xs) - data.summed_reactions[27] = absorption + + if np.count_nonzero(absorption_xs) > 0: + absorption = Reaction(27) + absorption.xs[strT] = Tabulated1D(energy, absorption_xs) + data.summed_reactions[27] = absorption # Read each reaction n_reaction = ace.nxs[4] + 1 @@ -478,13 +583,16 @@ class IncidentNeutron(EqualityMixin): warn('Photon production is present for MT={} but no ' 'reaction components exist.'.format(mt)) continue - rx.xs = Sum([data.reactions[mt_i].xs for mt_i in mts]) + rx.xs[strT] = Sum([data.reactions[mt_i].xs[strT] + for mt_i in mts]) # Determine summed cross section rx.products += _get_photon_products(ace, rx) data.summed_reactions[mt] = rx # Read unresolved resonance probability tables - data.urr = ProbabilityTables.from_ace(ace) + urr = ProbabilityTables.from_ace(ace) + if urr is not None: + data.urr[strT] = urr return data diff --git a/openmc/data/reaction.py b/openmc/data/reaction.py index e7580ec47..45d668b92 100644 --- a/openmc/data/reaction.py +++ b/openmc/data/reaction.py @@ -1,7 +1,7 @@ from __future__ import division, unicode_literals -from collections import Iterable, Callable +from collections import Iterable, Callable, MutableMapping from copy import deepcopy -from numbers import Real +from numbers import Real, Integral from warnings import warn import numpy as np @@ -11,8 +11,8 @@ from openmc.mixin import EqualityMixin from openmc.stats import Uniform from .angle_distribution import AngleDistribution from .angle_energy import AngleEnergy -from .function import Tabulated1D, Polynomial -from .data import REACTION_NAME +from .function import Tabulated1D, Polynomial, Function1D +from .data import REACTION_NAME, K_BOLTZMANN from .product import Product from .uncorrelated import UncorrelatedAngleEnergy @@ -211,7 +211,7 @@ def _get_photon_products(ace, rx): # Get photon production cross section photon_prod_xs = ace.xss[idx + 2:idx + 2 + n_energy] - neutron_xs = rx.xs(energy) + neutron_xs = list(rx.xs.values())[0](energy) idx = np.where(neutron_xs > 0.) # Calculate photon yield @@ -261,8 +261,7 @@ class Reaction(EqualityMixin): Parameters ---------- mt : int - The ENDF MT number for this reaction. On occasion, MCNP uses MT numbers - that don't correspond exactly to the ENDF specification. + The ENDF MT number for this reaction. Attributes ---------- @@ -274,16 +273,12 @@ class Reaction(EqualityMixin): The ENDF MT number for this reaction. q_value : float The Q-value of this reaction in MeV. - table : openmc.data.ace.Table - The ACE table which contains this reaction. threshold : float Threshold of the reaction in MeV - threshold_idx : int - The index on the energy grid corresponding to the threshold of this - reaction. - xs : callable + xs : dict of str to openmc.data.Function1D Microscopic cross section for this reaction as a function of incident - energy + energy; these cross sections are provided in a dictionary where the key + is the temperature of the cross section set. products : Iterable of openmc.data.Product Reaction products derived_products : Iterable of openmc.data.Product @@ -293,13 +288,13 @@ class Reaction(EqualityMixin): """ def __init__(self, mt): - self.center_of_mass = True + self._center_of_mass = True + self._q_value = 0. + self._xs = {} + self._products = [] + self._derived_products = [] + self.mt = mt - self.q_value = 0. - self.threshold_idx = 0 - self._xs = None - self.products = [] - self.derived_products = [] def __repr__(self): if self.mt in REACTION_NAME: @@ -320,8 +315,8 @@ class Reaction(EqualityMixin): return self._products @property - def threshold(self): - return self.xs.x[0] + def derived_products(self): + return self._derived_products @property def xs(self): @@ -342,12 +337,18 @@ class Reaction(EqualityMixin): cv.check_type('reaction products', products, Iterable, Product) self._products = products + @derived_products.setter + def derived_products(self, derived_products): + cv.check_type('reaction derived products', derived_products, + Iterable, Product) + self._derived_products = derived_products + @xs.setter def xs(self, xs): - cv.check_type('reaction cross section', xs, Callable) - if isinstance(xs, Tabulated1D): - for y in xs.y: - cv.check_greater_than('reaction cross section', y, 0.0, True) + cv.check_type('reaction cross section dictionary', xs, MutableMapping) + for key, value in xs.items(): + cv.check_type('reaction cross section temperature', key, basestring) + cv.check_type('reaction cross section', value, Function1D) self._xs = xs def to_hdf5(self, group): @@ -366,10 +367,16 @@ class Reaction(EqualityMixin): else: group.attrs['label'] = np.string_(self.mt) group.attrs['Q_value'] = self.q_value - group.attrs['threshold_idx'] = self.threshold_idx + 1 group.attrs['center_of_mass'] = 1 if self.center_of_mass else 0 - if self.xs is not None: - group.create_dataset('xs', data=self.xs.y) + for T in self.xs: + Tgroup = group.create_group(T) + if self.xs[T] is not None: + dset = Tgroup.create_dataset('xs', data=self.xs[T].y) + if hasattr(self.xs[T], '_threshold_idx'): + threshold_idx = self.xs[T]._threshold_idx + 1 + else: + threshold_idx = 1 + dset.attrs['threshold_idx'] = threshold_idx for i, p in enumerate(self.products): pgroup = group.create_group('product_{}'.format(i)) p.to_hdf5(pgroup) @@ -382,8 +389,9 @@ class Reaction(EqualityMixin): ---------- group : h5py.Group HDF5 group to write to - energy : Iterable of float - Array of energies at which cross sections are tabulated at + energy : dict + Dictionary whose keys are temperatures (e.g., '300K') and values are + arrays of energies at which cross sections are tabulated at. Returns ------- @@ -391,16 +399,27 @@ class Reaction(EqualityMixin): Reaction data """ + mt = group.attrs['mt'] rx = cls(mt) rx.q_value = group.attrs['Q_value'] - rx.threshold_idx = group.attrs['threshold_idx'] - 1 rx.center_of_mass = bool(group.attrs['center_of_mass']) - # Read cross section - if 'xs' in group: - xs = group['xs'].value - rx.xs = Tabulated1D(energy[rx.threshold_idx:], xs) + # Read cross section at each temperature + for T, Tgroup in group.items(): + if T.endswith('K'): + if 'xs' in Tgroup: + # Make sure temperature has associated energy grid + if T not in energy: + raise ValueError( + 'Could not create reaction cross section for MT={} ' + 'at T={} because no corresponding energy grid ' + 'exists.'.format(mt, T)) + xs = Tgroup['xs'].value + threshold_idx = Tgroup['xs'].attrs['threshold_idx'] - 1 + tabulated_xs = Tabulated1D(energy[T][threshold_idx:], xs) + tabulated_xs._threshold_idx = threshold_idx + rx.xs[T] = tabulated_xs # Determine number of products n_product = 0 @@ -421,6 +440,10 @@ class Reaction(EqualityMixin): n_grid = ace.nxs[3] grid = ace.xss[ace.jxs[1]:ace.jxs[1] + n_grid] + # Convert data temperature to a "300.0K" number for indexing + # temperature data + strT = str(int(round(ace.temperature / K_BOLTZMANN))) + "K" + if i_reaction > 0: mt = int(ace.xss[ace.jxs[3] + i_reaction - 1]) rx = cls(mt) @@ -435,11 +458,11 @@ class Reaction(EqualityMixin): loc = int(ace.xss[ace.jxs[6] + i_reaction - 1]) # Determine starting index on energy grid - rx.threshold_idx = int(ace.xss[ace.jxs[7] + loc - 1]) - 1 + threshold_idx = int(ace.xss[ace.jxs[7] + loc - 1]) - 1 # Determine number of energies in reaction n_energy = int(ace.xss[ace.jxs[7] + loc]) - energy = grid[rx.threshold_idx:rx.threshold_idx + n_energy] + energy = grid[threshold_idx:threshold_idx + n_energy] # Read reaction cross section xs = ace.xss[ace.jxs[7] + loc + 1:ace.jxs[7] + loc + 1 + n_energy] @@ -450,7 +473,9 @@ class Reaction(EqualityMixin): "to zero.".format(rx.mt, ace.name)) xs[xs < 0.0] = 0.0 - rx.xs = Tabulated1D(energy, xs) + tabulated_xs = Tabulated1D(energy, xs) + tabulated_xs._threshold_idx = threshold_idx + rx.xs[strT] = tabulated_xs # ================================================================== # YIELD AND ANGLE-ENERGY DISTRIBUTION @@ -509,7 +534,9 @@ class Reaction(EqualityMixin): "Setting to zero.".format(ace.name)) elastic_xs[elastic_xs < 0.0] = 0.0 - rx.xs = Tabulated1D(grid, elastic_xs) + tabulated_xs = Tabulated1D(grid, elastic_xs) + tabulated_xs._threshold_idx = 0 + rx.xs[strT] = tabulated_xs # No energy distribution for elastic scattering neutron = Product('neutron') diff --git a/openmc/data/thermal.py b/openmc/data/thermal.py index 1551e8ac5..bbdb12dad 100644 --- a/openmc/data/thermal.py +++ b/openmc/data/thermal.py @@ -8,6 +8,7 @@ import h5py import openmc.checkvalue as cv from openmc.mixin import EqualityMixin +from .data import K_BOLTZMANN, ATOMIC_SYMBOL from .ace import Table, get_table from .angle_energy import AngleEnergy from .function import Tabulated1D @@ -89,8 +90,7 @@ class CoherentElastic(EqualityMixin): if isinstance(E, Iterable): E = np.asarray(E) idx = np.searchsorted(self.bragg_edges, E) - return self.factors[idx]/E - + return self.factors[idx] / E def __len__(self): return len(self.bragg_edges) @@ -156,11 +156,12 @@ class ThermalScattering(EqualityMixin): Parameters ---------- name : str - ZAID identifier of the table, e.g. lwtr.10t. + Name of the material using GND convention, e.g. c_H_in_H2O atomic_weight_ratio : float Atomic mass ratio of the target nuclide. - temperature : float - Temperature of the target nuclide in eV. + kTs : Iterable of float + List of temperatures of the target nuclide in the data set. + The temperatures have units of MeV. Attributes ---------- @@ -173,25 +174,33 @@ class ThermalScattering(EqualityMixin): Inelastic scattering cross section derived in the incoherent approximation name : str - Name of the table, e.g. lwtr.20t. - temperature : float - Temperature of the target nuclide in eV. - zaids : Iterable of int - ZAID identifiers that the thermal scattering data applies to + Name of the material using GND convention, e.g. c_H_in_H2O + temperatures : Iterable of str + List of string representations the temperatures of the target nuclide + in the data set. The temperatures are strings of the temperature, + rounded to the nearest integer; e.g., '294K' + kTs : Iterable of float + List of temperatures of the target nuclide in the data set. + The temperatures have units of MeV. + nuclides : Iterable of str + Nuclide names that the thermal scattering data applies to """ - def __init__(self, name, atomic_weight_ratio, temperature): + def __init__(self, name, atomic_weight_ratio, kTs): self.name = name self.atomic_weight_ratio = atomic_weight_ratio - self.temperature = temperature - self.elastic_xs = None - self.elastic_mu_out = None - self.inelastic_xs = None - self.inelastic_e_out = None - self.inelastic_mu_out = None + self.kTs = kTs + self.temperatures = [str(int(round(kT / K_BOLTZMANN))) + "K" + for kT in kTs] + self.elastic_xs = {} + self.elastic_mu_out = {} + self.inelastic_xs = {} + self.inelastic_e_out = {} + self.inelastic_mu_out = {} + self.inelastic_dist = {} self.secondary_mode = None - self.zaids = [] + self.nuclides = [] def __repr__(self): if hasattr(self, 'name'): @@ -217,26 +226,193 @@ class ThermalScattering(EqualityMixin): # Write basic data g = f.create_group(self.name) g.attrs['atomic_weight_ratio'] = self.atomic_weight_ratio - g.attrs['temperature'] = self.temperature - g.attrs['zaids'] = self.zaids + g.attrs['nuclides'] = np.array(self.nuclides, dtype='S') + g.attrs['secondary_mode'] = np.string_(self.secondary_mode) + ktg = g.create_group('kTs') + for i, temperature in enumerate(self.temperatures): + ktg.create_dataset(temperature, data=self.kTs[i]) - # Write thermal elastic scattering - if self.elastic_xs is not None: - elastic_group = g.create_group('elastic') - self.elastic_xs.to_hdf5(elastic_group, 'xs') - if self.elastic_mu_out is not None: - elastic_group.create_dataset('mu_out', data=self.elastic_mu_out) + for T in self.temperatures: + Tg = g.create_group(T) + # Write thermal elastic scattering + if self.elastic_xs: + elastic_group = Tg.create_group('elastic') - # Write thermal inelastic scattering - if self.inelastic_xs is not None: - inelastic_group = g.create_group('inelastic') - self.inelastic_xs.to_hdf5(inelastic_group, 'xs') - inelastic_group.attrs['secondary_mode'] = np.string_(self.secondary_mode) - if self.secondary_mode in ('equal', 'skewed'): - inelastic_group.create_dataset('energy_out', data=self.inelastic_e_out) - inelastic_group.create_dataset('mu_out', data=self.inelastic_mu_out) - elif self.secondary_mode == 'continuous': - self.inelastic_dist.to_hdf5(inelastic_group) + self.elastic_xs[T].to_hdf5(elastic_group, 'xs') + if self.elastic_mu_out: + elastic_group.create_dataset('mu_out', + data=self.elastic_mu_out[T]) + + # Write thermal inelastic scattering + if self.inelastic_xs: + inelastic_group = Tg.create_group('inelastic') + self.inelastic_xs[T].to_hdf5(inelastic_group, 'xs') + if self.secondary_mode in ('equal', 'skewed'): + inelastic_group.create_dataset('energy_out', + data=self.inelastic_e_out[T]) + inelastic_group.create_dataset('mu_out', + data=self.inelastic_mu_out[T]) + elif self.secondary_mode == 'continuous': + self.inelastic_dist[T].to_hdf5(inelastic_group) + + f.close() + + def add_temperature_from_ace(self, ace_or_filename, name=None): + """Add data to the ThermalScattering object from an ACE file at a + different temperature. + + Parameters + ---------- + ace_or_filename : openmc.data.ace.Table or str + ACE table to read from. If given as a string, it is assumed to be + the filename for the ACE file. + name : str + GND-conforming name of the material, e.g. c_H_in_H2O. If none is + passed, the appropriate name is guessed based on the name of the ACE + table. + + Returns + ------- + openmc.data.ThermalScattering + Thermal scattering data + + """ + if isinstance(ace_or_filename, Table): + ace = ace_or_filename + else: + ace = get_table(ace_or_filename) + + # Get new name that is GND-consistent + ace_name, xs = ace.name.split('.') + if name is None: + if ace_name.lower() in _THERMAL_NAMES: + name = _THERMAL_NAMES[ace_name.lower()] + else: + # Make an educated guess? This actually works well for JEFF-3.2 + # which stupidly uses names like lw00.32t, lw01.32t, etc. for + # different temperatures + matches = get_close_matches( + ace_name.lower(), _THERMAL_NAMES.keys(), cutoff=0.5) + if len(matches) > 0: + name = _THERMAL_NAMES[matches[0]] + else: + # OK, we give up. Just use the ACE name. + name = 'c_' + ace.name + warn('Thermal scattering material "{}" is not recognized. ' + 'Assigning a name of {}.'.format(ace.name, name)) + + # If this ACE data matches the data within self then get the data + if ace.temperature not in self.kTs: + if name == self.name: + # Add temperature and kTs + strT = str(int(round(ace.temperature / K_BOLTZMANN))) + "K" + self.temperatures.append(strT) + self.kTs.append(ace.temperature) + + # Incoherent inelastic scattering cross section + idx = ace.jxs[1] + n_energy = int(ace.xss[idx]) + energy = ace.xss[idx + 1: idx + 1 + n_energy] + xs = ace.xss[idx + 1 + n_energy: idx + 1 + 2 * n_energy] + self.inelastic_xs[strT] = Tabulated1D(energy, xs) + + # Make sure secondary_mode is always equal. This should always + # be the case, but to reduce future debugging should something + # change, this will alert the developers to the issue. + if ace.nxs[7] == 0: + secondary_mode = 'equal' + elif ace.nxs[7] == 1: + secondary_mode = 'skewed' + elif ace.nxs[7] == 2: + secondary_mode = 'continuous' + + if secondary_mode != self.secondary_mode: + raise ValueError('Secondary Modes are inconsistent.') + + n_energy_out = ace.nxs[4] + if self.secondary_mode in ('equal', 'skewed'): + n_mu = ace.nxs[3] + idx = ace.jxs[3] + self.inelastic_e_out[strT] = \ + ace.xss[idx:idx + n_energy * n_energy_out * (n_mu + 2): + n_mu + 2] + self.inelastic_e_out[strT].shape = \ + (n_energy, n_energy_out) + + self.inelastic_mu_out[strT] = \ + ace.xss[idx:idx + n_energy * n_energy_out * (n_mu + 2)] + self.inelastic_mu_out[strT].shape = \ + (n_energy, n_energy_out, n_mu + 2) + self.inelastic_mu_out[strT] = \ + self.inelastic_mu_out[strT][:, :, 1:] + else: + n_mu = ace.nxs[3] - 1 + idx = ace.jxs[3] + locc = ace.xss[idx:idx + n_energy].astype(int) + n_energy_out = \ + ace.xss[idx + n_energy:idx + 2 * n_energy].astype(int) + energy_out = [] + mu_out = [] + for i in range(n_energy): + idx = locc[i] + + # Outgoing energy distribution for incoming energy i + e = ace.xss[idx + 1:idx + 1 + n_energy_out[i]*(n_mu + 3): + n_mu + 3] + p = ace.xss[idx + 2:idx + 2 + n_energy_out[i]*(n_mu + 3): + n_mu + 3] + c = ace.xss[idx + 3:idx + 3 + n_energy_out[i]*(n_mu + 3): + n_mu + 3] + eout_i = Tabular(e, p, 'linear-linear', ignore_negative=True) + eout_i.c = c + + # Outgoing angle distribution for each + # (incoming, outgoing) energy pair + mu_i = [] + for j in range(n_energy_out[i]): + mu = ace.xss[idx + 4:idx + 4 + n_mu] + p_mu = 1. / n_mu * np.ones(n_mu) + mu_ij = Discrete(mu, p_mu) + mu_ij.c = np.cumsum(p_mu) + mu_i.append(mu_ij) + idx += 3 + n_mu + + energy_out.append(eout_i) + mu_out.append(mu_i) + + # Create correlated angle-energy distribution + breakpoints = [n_energy] + interpolation = [2] + energy = self.inelastic_xs[strT].x + self.inelastic_dist[strT] = CorrelatedAngleEnergy( + breakpoints, interpolation, energy, energy_out, mu_out) + + # Incoherent/coherent elastic scattering cross section + idx = ace.jxs[4] + if idx != 0: + n_energy = int(ace.xss[idx]) + energy = ace.xss[idx + 1: idx + 1 + n_energy] + P = ace.xss[idx + 1 + n_energy: idx + 1 + 2 * n_energy] + + if ace.nxs[5] == 4: + self.elastic_xs[strT] = CoherentElastic(energy, P) + else: + self.elastic_xs[strT] = Tabulated1D(energy, P) + + # Angular distribution + n_mu = ace.nxs[6] + if n_mu != -1: + idx = ace.jxs[6] + self.elastic_mu_out[strT] = \ + ace.xss[idx:idx + n_energy * n_mu] + self.elastic_mu_out[strT].shape = \ + (n_energy, n_mu) + + else: + raise ValueError('Data provided for an incorrect library') + else: + raise Warning('Temperature data set already within ' + 'IncidentNeutron object') @classmethod def from_hdf5(cls, group_or_filename): @@ -263,35 +439,49 @@ class ThermalScattering(EqualityMixin): name = group.name[1:] atomic_weight_ratio = group.attrs['atomic_weight_ratio'] - temperature = group.attrs['temperature'] - table = cls(name, atomic_weight_ratio, temperature) - table.zaids = group.attrs['zaids'] + kTg = group['kTs'] + kTs = [] + for temp in kTg: + kTs.append(kTg[temp].value) + temperatures = [str(int(round(kT / K_BOLTZMANN))) + "K" for kT in kTs] + + table = cls(name, atomic_weight_ratio, kTs) + table.nuclides = [nuc.decode() for nuc in group.attrs['nuclides']] + table.secondary_mode = group.attrs['secondary_mode'].decode() # Read thermal elastic scattering - if 'elastic' in group: - elastic_group = group['elastic'] + for T in temperatures: + Tgroup = group[T] + if 'elastic' in Tgroup: + elastic_group = Tgroup['elastic'] - # Cross section - elastic_xs_type = elastic_group['xs'].attrs['type'].decode() - if elastic_xs_type == 'tab1': - table.elastic_xs = Tabulated1D.from_hdf5(elastic_group['xs']) - elif elastic_xs_type == 'bragg': - table.elastic_xs = CoherentElastic.from_hdf5(elastic_group['xs']) + # Cross section + elastic_xs_type = elastic_group['xs'].attrs['type'].decode() + if elastic_xs_type == 'Tabulated1D': + table.elastic_xs[T] = \ + Tabulated1D.from_hdf5(elastic_group['xs']) + elif elastic_xs_type == 'bragg': + table.elastic_xs[T] = \ + CoherentElastic.from_hdf5(elastic_group['xs']) - # Angular distribution - if 'mu_out' in elastic_group: - table.elastic_mu_out = elastic_group['mu_out'].value + # Angular distribution + if 'mu_out' in elastic_group: + table.elastic_mu_out[T] = \ + elastic_group['mu_out'].value - # Read thermal inelastic scattering - if 'inelastic' in group: - inelastic_group = group['inelastic'] - table.secondary_mode = inelastic_group.attrs['secondary_mode'].decode() - table.inelastic_xs = Tabulated1D.from_hdf5(inelastic_group['xs']) - if table.secondary_mode in ('equal', 'skewed'): - table.inelastic_e_out = inelastic_group['energy_out'] - table.inelastic_mu_out = inelastic_group['mu_out'] - elif table.secondary_mode == 'continuous': - table.inelastic_dist = AngleEnergy.from_hdf5(inelastic_group) + # Read thermal inelastic scattering + if 'inelastic' in Tgroup: + inelastic_group = Tgroup['inelastic'] + table.inelastic_xs[T] = \ + Tabulated1D.from_hdf5(inelastic_group['xs']) + if table.secondary_mode in ('equal', 'skewed'): + table.inelastic_e_out[T] = \ + inelastic_group['energy_out'] + table.inelastic_mu_out[T] = \ + inelastic_group['mu_out'] + elif table.secondary_mode == 'continuous': + table.inelastic_dist[T] = \ + AngleEnergy.from_hdf5(inelastic_group) return table @@ -301,7 +491,7 @@ class ThermalScattering(EqualityMixin): Parameters ---------- - ace : openmc.data.ace.Table or str + ace_or_filename : openmc.data.ace.Table or str ACE table to read from. If given as a string, it is assumed to be the filename for the ACE file. name : str @@ -324,7 +514,7 @@ class ThermalScattering(EqualityMixin): ace_name, xs = ace.name.split('.') if name is None: if ace_name.lower() in _THERMAL_NAMES: - name = _THERMAL_NAMES[ace_name.lower()] + '.' + xs + name = _THERMAL_NAMES[ace_name.lower()] else: # Make an educated guess?? This actually works well for JEFF-3.2 # which stupidly uses names like lw00.32t, lw01.32t, etc. for @@ -332,21 +522,25 @@ class ThermalScattering(EqualityMixin): matches = get_close_matches( ace_name.lower(), _THERMAL_NAMES.keys(), cutoff=0.5) if len(matches) > 0: - name = _THERMAL_NAMES[matches[0]] + '.' + xs + name = _THERMAL_NAMES[matches[0]] else: # OK, we give up. Just use the ACE name. name = 'c_' + ace.name warn('Thermal scattering material "{}" is not recognized. ' 'Assigning a name of {}.'.format(ace.name, name)) - table = cls(name, ace.atomic_weight_ratio, ace.temperature) + # Assign temperature to the running list + kTs = [ace.temperature] + temperatures = [str(int(round(ace.temperature / K_BOLTZMANN))) + "K"] + + table = cls(name, ace.atomic_weight_ratio, kTs) # Incoherent inelastic scattering cross section idx = ace.jxs[1] n_energy = int(ace.xss[idx]) energy = ace.xss[idx+1 : idx+1+n_energy] xs = ace.xss[idx+1+n_energy : idx+1+2*n_energy] - table.inelastic_xs = Tabulated1D(energy, xs) + table.inelastic_xs[temperatures[0]] = Tabulated1D(energy, xs) if ace.nxs[7] == 0: table.secondary_mode = 'equal' @@ -359,34 +553,45 @@ class ThermalScattering(EqualityMixin): if table.secondary_mode in ('equal', 'skewed'): n_mu = ace.nxs[3] idx = ace.jxs[3] - table.inelastic_e_out = ace.xss[idx:idx+n_energy*n_energy_out*(n_mu+2):n_mu+2] - table.inelastic_e_out.shape = (n_energy, n_energy_out) + table.inelastic_e_out[temperatures[0]] = \ + ace.xss[idx:idx + n_energy * n_energy_out * (n_mu + 2): + n_mu + 2] + table.inelastic_e_out[temperatures[0]].shape = \ + (n_energy, n_energy_out) - table.inelastic_mu_out = ace.xss[idx:idx+n_energy*n_energy_out*(n_mu+2)] - table.inelastic_mu_out.shape = (n_energy, n_energy_out, n_mu+2) - table.inelastic_mu_out = table.inelastic_mu_out[:, :, 1:] + table.inelastic_mu_out[temperatures[0]] = \ + ace.xss[idx:idx + n_energy * n_energy_out * (n_mu + 2)] + table.inelastic_mu_out[temperatures[0]].shape = \ + (n_energy, n_energy_out, n_mu+2) + table.inelastic_mu_out[temperatures[0]] = \ + table.inelastic_mu_out[temperatures[0]][:, :, 1:] else: n_mu = ace.nxs[3] - 1 idx = ace.jxs[3] locc = ace.xss[idx:idx + n_energy].astype(int) - n_energy_out = ace.xss[idx + n_energy:idx + 2*n_energy].astype(int) + n_energy_out = \ + ace.xss[idx + n_energy:idx + 2 * n_energy].astype(int) energy_out = [] mu_out = [] for i in range(n_energy): idx = locc[i] # Outgoing energy distribution for incoming energy i - e = ace.xss[idx + 1:idx + 1 + n_energy_out[i]*(n_mu + 3):n_mu + 3] - p = ace.xss[idx + 2:idx + 2 + n_energy_out[i]*(n_mu + 3):n_mu + 3] - c = ace.xss[idx + 3:idx + 3 + n_energy_out[i]*(n_mu + 3):n_mu + 3] + e = ace.xss[idx + 1:idx + 1 + n_energy_out[i]*(n_mu + 3): + n_mu + 3] + p = ace.xss[idx + 2:idx + 2 + n_energy_out[i]*(n_mu + 3): + n_mu + 3] + c = ace.xss[idx + 3:idx + 3 + n_energy_out[i]*(n_mu + 3): + n_mu + 3] eout_i = Tabular(e, p, 'linear-linear', ignore_negative=True) eout_i.c = c - # Outgoing angle distribution for each (incoming, outgoing) energy pair + # Outgoing angle distribution for each + # (incoming, outgoing) energy pair mu_i = [] for j in range(n_energy_out[i]): mu = ace.xss[idx + 4:idx + 4 + n_mu] - p_mu = 1./n_mu*np.ones(n_mu) + p_mu = 1. / n_mu * np.ones(n_mu) mu_ij = Discrete(mu, p_mu) mu_ij.c = np.cumsum(p_mu) mu_i.append(mu_ij) @@ -398,31 +603,35 @@ class ThermalScattering(EqualityMixin): # Create correlated angle-energy distribution breakpoints = [n_energy] interpolation = [2] - energy = table.inelastic_xs.x - table.inelastic_dist = CorrelatedAngleEnergy( + energy = table.inelastic_xs[temperatures[0]].x + table.inelastic_dist[temperatures[0]] = CorrelatedAngleEnergy( breakpoints, interpolation, energy, energy_out, mu_out) # Incoherent/coherent elastic scattering cross section idx = ace.jxs[4] if idx != 0: n_energy = int(ace.xss[idx]) - energy = ace.xss[idx+1 : idx+1+n_energy] - P = ace.xss[idx+1+n_energy : idx+1+2*n_energy] + energy = ace.xss[idx + 1: idx + 1 + n_energy] + P = ace.xss[idx + 1 + n_energy: idx + 1 + 2 * n_energy] if ace.nxs[5] == 4: - table.elastic_xs = CoherentElastic(energy, P) + table.elastic_xs[temperatures[0]] = CoherentElastic(energy, P) else: - table.elastic_xs = Tabulated1D(energy, P) + table.elastic_xs[temperatures[0]] = Tabulated1D(energy, P) # Angular distribution n_mu = ace.nxs[6] if n_mu != -1: idx = ace.jxs[6] - table.elastic_mu_out = ace.xss[idx:idx + n_energy*n_mu] - table.elastic_mu_out.shape = (n_energy, n_mu) + table.elastic_mu_out[temperatures[0]] = \ + ace.xss[idx:idx + n_energy * n_mu] + table.elastic_mu_out[temperatures[0]].shape = \ + (n_energy, n_mu) - # Get relevant ZAIDs - pairs = np.fromiter(map(lambda p: p[0], ace.pairs), int) - table.zaids = pairs[np.nonzero(pairs)] + # Get relevant nuclides + for zaid, awr in ace.pairs: + if zaid > 0: + Z, A = divmod(zaid, 1000) + table.nuclides.append(ATOMIC_SYMBOL[Z] + str(A)) return table diff --git a/openmc/element.py b/openmc/element.py index ada5726b4..1b1680614 100644 --- a/openmc/element.py +++ b/openmc/element.py @@ -19,38 +19,28 @@ class Element(object): ---------- name : str Chemical symbol of the element, e.g. Pu - xs : str - Cross section identifier, e.g. 71c Attributes ---------- name : str Chemical symbol of the element, e.g. Pu - xs : str - Cross section identifier, e.g. 71c scattering : {'data', 'iso-in-lab', None} The type of angular scattering distribution to use """ - def __init__(self, name='', xs=None): + def __init__(self, name=''): # Initialize class attributes self._name = '' - self._xs = None self._scattering = None # Set class attributes self.name = name - if xs is not None: - self.xs = xs - def __eq__(self, other): if isinstance(other, Element): if self.name != other.name: return False - elif self.xs != other.xs: - return False else: return True elif isinstance(other, basestring) and other == self.name: @@ -72,17 +62,12 @@ class Element(object): def __repr__(self): string = 'Element - {0}\n'.format(self._name) - string += '{0: <16}{1}{2}\n'.format('\tXS', '=\t', self._xs) if self.scattering is not None: string += '{0: <16}{1}{2}\n'.format('\tscattering', '=\t', self.scattering) return string - @property - def xs(self): - return self._xs - @property def name(self): return self._name @@ -91,11 +76,6 @@ class Element(object): def scattering(self): return self._scattering - @xs.setter - def xs(self, xs): - check_type('cross section identifier', xs, basestring) - self._xs = xs - @name.setter def name(self, name): check_type('element name', name, basestring) @@ -127,6 +107,6 @@ class Element(object): isotopes = [] for isotope, abundance in sorted(NATURAL_ABUNDANCE.items()): if re.match(r'{}\d+'.format(self.name), isotope): - nuc = openmc.Nuclide(isotope, self.xs) + nuc = openmc.Nuclide(isotope) isotopes.append((nuc, abundance)) return isotopes diff --git a/openmc/macroscopic.py b/openmc/macroscopic.py index 9f55998e3..a1ca62c9a 100644 --- a/openmc/macroscopic.py +++ b/openmc/macroscopic.py @@ -13,35 +13,25 @@ class Macroscopic(object): ---------- name : str Name of the macroscopic data, e.g. UO2 - xs : str - Cross section identifier, e.g. 71c Attributes ---------- name : str Name of the nuclide, e.g. UO2 - xs : str - Cross section identifier, e.g. 71c """ - def __init__(self, name='', xs=None): + def __init__(self, name=''): # Initialize class attributes self._name = '' - self._xs = None # Set the Macroscopic class attributes self.name = name - if xs is not None: - self.xs = xs - def __eq__(self, other): if isinstance(other, Macroscopic): if self.name != other.name: return False - elif self.xs != other.xs: - return False else: return True elif isinstance(other, basestring) and other == self.name: @@ -53,27 +43,17 @@ class Macroscopic(object): return not self == other def __hash__(self): - return hash((self._name, self._xs)) + return hash((self._name)) def __repr__(self): string = 'Nuclide - {0}\n'.format(self._name) - string += '{0: <16}{1}{2}\n'.format('\tXS', '=\t', self._xs) return string @property def name(self): return self._name - @property - def xs(self): - return self._xs - @name.setter def name(self, name): check_type('name', name, basestring) self._name = name - - @xs.setter - def xs(self, xs): - check_type('cross-section identifier', xs, basestring) - self._xs = xs diff --git a/openmc/material.py b/openmc/material.py index 40dfc1a9b..f56af485a 100644 --- a/openmc/material.py +++ b/openmc/material.py @@ -41,11 +41,19 @@ class Material(object): name : str, optional Name of the material. If not specified, the name will be the empty string. + temperature : str, optional + The temperature identifier applied to this material. The units are + in Kelvin and the temperature rounded to the nearest integer. + For example, a tempreature of 293.6K would be provided as '294K' Attributes ---------- id : int Unique identifier for the material + temperature : str + The temperature identifier applied to this material. The units are + in Kelvin and the temperature rounded to the nearest integer. + For example, a tempreature of 293.6K would be provided as '294K' density : float Density of the material (units defined separately) density_units : str @@ -63,10 +71,11 @@ class Material(object): """ - def __init__(self, material_id=None, name=''): + def __init__(self, material_id=None, name='', temperature=None): # Initialize class attributes self.id = material_id self.name = name + self.temperature = temperature self._density = None self._density_units = '' @@ -80,7 +89,7 @@ class Material(object): # A list of tuples (element, percent, percent type) self._elements = [] - # If specified, a list of tuples of (table name, xs identifier) + # If specified, a list of table names self._sab = [] # If true, the material will be initialized as distributed @@ -120,6 +129,8 @@ class Material(object): string = 'Material\n' string += '{0: <16}{1}{2}\n'.format('\tID', '=\t', self._id) string += '{0: <16}{1}{2}\n'.format('\tName', '=\t', self._name) + string += '{0: <16}{1}{2}\n'.format('\Temperature', '=\t', + self._temperature) string += '{0: <16}{1}{2}'.format('\tDensity', '=\t', self._density) string += ' [{0}]\n'.format(self._density_units) @@ -127,13 +138,12 @@ class Material(object): string += '{0: <16}\n'.format('\tS(a,b) Tables') for sab in self._sab: - string += '{0: <16}{1}[{2}{3}]\n'.format('\tS(a,b)', '=\t', - sab[0], sab[1]) + string += '{0: <16}{1}{2}\n'.format('\tS(a,b)', '=\t', sab) string += '{0: <16}\n'.format('\tNuclides') for nuclide, percent, percent_type in self._nuclides: - string += '{0: <16}'.format('\t{0.name}.{0.xs}'.format(nuclide)) + string += '{0: <16}'.format('\t{0.name}'.format(nuclide)) string += '=\t{0: <12} [{1}]\n'.format(percent, percent_type) if self._macroscopic is not None: @@ -143,7 +153,7 @@ class Material(object): string += '{0: <16}\n'.format('\tElements') for element, percent, percent_type in self._elements: - string += '{0: <16}'.format('\t{0.name}.{0.xs}'.format(element)) + string += '{0: <16}'.format('\t{0.name}'.format(element)) string += '=\t{0: <12} [{1}]\n'.format(percent, percent_type) return string @@ -156,6 +166,10 @@ class Material(object): def name(self): return self._name + @property + def temperature(self): + return self._temperature + @property def density(self): return self._density @@ -201,6 +215,15 @@ class Material(object): else: self._name = '' + @temperature.setter + def temperature(self, temperature): + if temperature is not None: + cv.check_type('Temperature for Material ID="{0}"'.format(self._id), + temperature, basestring) + self._temperature = temperature + else: + self._temperature = '' + def set_density(self, units, density=None): """Set the density of the material @@ -458,15 +481,13 @@ class Material(object): if element == elm: self._nuclides.remove(elm) - def add_s_alpha_beta(self, name, xs): + def add_s_alpha_beta(self, name): r"""Add an :math:`S(\alpha,\beta)` table to the material Parameters ---------- name : str Name of the :math:`S(\alpha,\beta)` table - xs : str - Cross section identifier, e.g. '71t' """ @@ -480,18 +501,14 @@ class Material(object): 'non-string table name "{1}"'.format(self._id, name) raise ValueError(msg) - if not isinstance(xs, basestring): - msg = 'Unable to add an S(a,b) table to Material ID="{0}" with a ' \ - 'non-string cross-section identifier "{1}"'.format(self._id, xs) - raise ValueError(msg) - new_name = openmc.data.get_thermal_name(name) if new_name != name: msg = 'OpenMC S(a,b) tables follow the GND naming convention. ' \ 'Table "{}" is being renamed as "{}".'.format(name, new_name) warnings.warn(msg) - self._sab.append((new_name, xs)) + self._sab.append(new_name) + def make_isotropic_in_lab(self): for nuclide, percent, percent_type in self._nuclides: @@ -554,9 +571,6 @@ class Material(object): else: xml_element.set("wo", str(nuclide[1])) - if nuclide[0].xs is not None: - xml_element.set("xs", nuclide[0].xs) - if not nuclide[0].scattering is None: xml_element.set("scattering", nuclide[0].scattering) @@ -566,9 +580,6 @@ class Material(object): xml_element = ET.Element("macroscopic") xml_element.set("name", macroscopic.name) - if macroscopic.xs is not None: - xml_element.set("xs", macroscopic.xs) - return xml_element def _get_element_xml(self, element, distrib=False): @@ -581,9 +592,6 @@ class Material(object): else: xml_element.set("wo", str(element[1])) - if element[0].xs is not None: - xml_element.set("xs", element[0].xs) - if not element[0].scattering is None: xml_element.set("scattering", element[0].scattering) @@ -622,6 +630,11 @@ class Material(object): if len(self._name) > 0: element.set("name", str(self._name)) + # Create temperature XML subelement + if len(self.temperature) > 0: + subelement = ET.SubElement(element, "temperature") + subelement.text = self.temperature + # Create density XML subelement subelement = ET.SubElement(element, "density") if self._density_units is not 'sum': @@ -686,8 +699,7 @@ class Material(object): if len(self._sab) > 0: for sab in self._sab: subelement = ET.SubElement(element, "sab") - subelement.set("name", sab[0]) - subelement.set("xs", sab[1]) + subelement.set("name", sab) return element @@ -712,30 +724,14 @@ class Materials(cv.CheckedList): materials : Iterable of openmc.Material Materials to add to the collection - Attributes - ---------- - default_xs : str - The default cross section identifier applied to a nuclide when none is - specified - """ def __init__(self, materials=None): super(Materials, self).__init__(Material, 'materials collection') - self._default_xs = None self._materials_file = ET.Element("materials") if materials is not None: self += materials - @property - def default_xs(self): - return self._default_xs - - @default_xs.setter - def default_xs(self, xs): - cv.check_type('default xs', xs, basestring) - self._default_xs = xs - def add_material(self, material): """Append material to collection @@ -817,10 +813,6 @@ class Materials(cv.CheckedList): material.make_isotropic_in_lab() def _create_material_subelements(self): - if self._default_xs is not None: - subelement = ET.SubElement(self._materials_file, "default_xs") - subelement.text = self._default_xs - for material in self: xml_element = material.get_material_xml() self._materials_file.append(xml_element) diff --git a/openmc/mgxs/library.py b/openmc/mgxs/library.py index 9e5dba310..4b68952a6 100644 --- a/openmc/mgxs/library.py +++ b/openmc/mgxs/library.py @@ -822,8 +822,8 @@ class Library(object): return pickle.load(open(full_filename, 'rb')) def get_xsdata(self, domain, xsdata_name, nuclide='total', xs_type='macro', - xs_id='1m', order=None, tabular_legendre=None, - tabular_points=33, subdomain=None): + order=None, tabular_legendre=None, tabular_points=33, + subdomain=None): """Generates an openmc.XSdata object describing a multi-group cross section data set for eventual combination in to an openmc.MGXSLibrary object (i.e., the library). @@ -841,8 +841,6 @@ class Library(object): Provide the macro or micro cross section in units of cm^-1 or barns. Defaults to 'macro'. If the Library object is not tallied by nuclide this will be set to 'macro' regardless. - xs_ids : str - Cross section set identifier. Defaults to '1m'. order : int Scattering order for this data entry. Default is None, which will set the XSdata object to use the order of the @@ -888,7 +886,6 @@ class Library(object): cv.check_type('xsdata_name', xsdata_name, basestring) cv.check_type('nuclide', nuclide, basestring) cv.check_value('xs_type', xs_type, ['macro', 'micro']) - cv.check_type('xs_id', xs_id, basestring) cv.check_type('order', order, (type(None), Integral)) if order is not None: cv.check_greater_than('order', order, 0, equality=True) @@ -915,7 +912,6 @@ class Library(object): name = xsdata_name if nuclide is not 'total': name += '_' + nuclide - name += '.' + xs_id xsdata = openmc.XSdata(name, self.energy_groups) if order is None: @@ -1022,8 +1018,7 @@ class Library(object): return xsdata def create_mg_library(self, xs_type='macro', xsdata_names=None, - xs_ids=None, tabular_legendre=None, - tabular_points=33): + tabular_legendre=None, tabular_points=33): """Creates an openmc.MGXSLibrary object to contain the MGXS data for the Multi-Group mode of OpenMC. @@ -1036,10 +1031,6 @@ class Library(object): xsdata_names : Iterable of str List of names to apply to the "xsdata" entries in the resultant mgxs data file. Defaults to 'set1', 'set2', ... - xs_ids : str or Iterable of str - Cross section set identifier (i.e., '71c') for all - data sets (if only str) or for each individual one - (if iterable of str). Defaults to '1m'. tabular_legendre : None or bool Flag to denote whether or not the Legendre expansion of the scattering angular distribution is to be converted to a tabular @@ -1087,26 +1078,6 @@ class Library(object): # Initialize file mgxs_file = openmc.MGXSLibrary(self.energy_groups) - # Get the number of domains to size arrays with - if self.domain_type is 'mesh': - num_domains = np.sum(d.num_mesh_cells for d in self.domains) - else: - num_domains = len(self.domains) - - # Set id names - if xs_ids is not None: - if isinstance(xs_ids, basestring): - # If we only have a string lets convert it now to a list - # of strings. - all_xs_ids = [xs_ids] * num_domains - else: - cv.check_iterable_type('xs_ids', xs_ids, basestring) - cv.check_length('xs_ids', xs_ids, num_domains, num_domains) - all_xs_ids = xs_ids - - else: - all_xs_ids = ['1m'] * num_domains - if self.domain_type == 'mesh': # Create the xsdata objects and add to the mgxs_file i = 0 @@ -1123,7 +1094,6 @@ class Library(object): # Create XSdata and Macroscopic for this domain xsdata = self.get_xsdata(domain, xsdata_name, - xs_id=all_xs_ids[i], tabular_legendre=tabular_legendre, tabular_points=tabular_points, subdomain=subdomain) @@ -1148,7 +1118,6 @@ class Library(object): xsdata = self.get_xsdata(domain, xsdata_name, nuclide=nuclide, xs_type=xs_type, - xs_id=all_xs_ids[i], tabular_legendre=tabular_legendre, tabular_points=tabular_points) @@ -1156,9 +1125,8 @@ class Library(object): return mgxs_file - def create_mg_mode(self, xsdata_names=None, xs_ids=None, - tabular_legendre=None, tabular_points=33, - bc=['reflective'] * 6): + def create_mg_mode(self, xsdata_names=None, tabular_legendre=None, + tabular_points=33, bc=['reflective'] * 6): """Creates an openmc.MGXSLibrary object to contain the MGXS data for the Multi-Group mode of OpenMC as well as the associated openmc.Materials and openmc.Geometry objects. The created Geometry is the same as that @@ -1172,10 +1140,6 @@ class Library(object): xsdata_names : Iterable of str List of names to apply to the "xsdata" entries in the resultant mgxs data file. Defaults to 'set1', 'set2', ... - xs_ids : str or Iterable of str - Cross section set identifier (i.e., '71c') for all - data sets (if only str) or for each individual one - (if iterable of str). Defaults to '1m'. tabular_legendre : None or bool Flag to denote whether or not the Legendre expansion of the scattering angular distribution is to be converted to a tabular @@ -1234,7 +1198,7 @@ class Library(object): cv.check_length("domains", self.domains, 1, 1) # Get the MGXS File Data - mgxs_file = self.create_mg_library('macro', xsdata_names, xs_ids, + mgxs_file = self.create_mg_library('macro', xsdata_names, tabular_legendre, tabular_points) # Now move on the creating the geometry and assigning materials @@ -1251,10 +1215,10 @@ class Library(object): for i, subdomain in enumerate(self.domains[0].cell_generator()): xsdata = mgxs_file.xsdatas[i] - [name, id] = xsdata.name.split('.') + # Build the macroscopic and assign it to the cell of # interest - macroscopic = openmc.Macroscopic(name=name, xs=id) + macroscopic = openmc.Macroscopic(name=xsdata.name) # Create Material and add to collection material = openmc.Material(name=xsdata.name) @@ -1275,9 +1239,8 @@ class Library(object): # Create the xsdata object and add it to the mgxs_file for i, domain in enumerate(self.domains): xsdata = mgxs_file.xsdatas[i] - [name, id] = xsdata.name.split('.') - macroscopic = openmc.Macroscopic(name=name, xs=id) + macroscopic = openmc.Macroscopic(name=xsdata.name) # Create Material and add to collection material = openmc.Material(name=xsdata.name) diff --git a/openmc/mgxs_library.py b/openmc/mgxs_library.py index a3a2187b7..37ad6c1be 100644 --- a/openmc/mgxs_library.py +++ b/openmc/mgxs_library.py @@ -99,9 +99,6 @@ class XSdata(object): Unique identifier for the xsdata object alias : str Separate unique identifier for the xsdata object - zaid : int - 1000*(atomic number) + mass number. As an example, the zaid of U235 - would be 92235. awr : float Atomic weight ratio of an isotope. That is, the ratio of the mass of the isotope to the mass of a single neutron. @@ -227,7 +224,6 @@ class XSdata(object): self._energy_groups = energy_groups self._representation = representation self._alias = None - self._zaid = None self._awr = None self._kT = None self._fissionable = False @@ -262,10 +258,6 @@ class XSdata(object): def alias(self): return self._alias - @property - def zaid(self): - return self._zaid - @property def awr(self): return self._awr @@ -396,13 +388,6 @@ class XSdata(object): else: self._alias = self._name - @zaid.setter - def zaid(self, zaid): - # Check type and value - check_type('zaid', zaid, Integral) - check_greater_than('zaid', zaid, 0) - self._zaid = zaid - @awr.setter def awr(self, awr): # Check validity of type and that the awr value is > 0 @@ -1013,18 +998,10 @@ class XSdata(object): subelement = ET.SubElement(element, 'kT') subelement.text = str(self._kT) - if self._zaid is not None: - subelement = ET.SubElement(element, 'zaid') - subelement.text = str(self._zaid) - if self._awr is not None: subelement = ET.SubElement(element, 'awr') subelement.text = str(self._awr) - if self._kT is not None: - subelement = ET.SubElement(element, 'kT') - subelement.text = str(self._kT) - if self._fissionable is not None: subelement = ET.SubElement(element, 'fissionable') subelement.text = str(self._fissionable) diff --git a/openmc/nuclide.py b/openmc/nuclide.py index 68f95beb9..11c59e687 100644 --- a/openmc/nuclide.py +++ b/openmc/nuclide.py @@ -15,42 +15,28 @@ class Nuclide(object): ---------- name : str Name of the nuclide, e.g. U235 - xs : str - Cross section identifier, e.g. 71c Attributes ---------- name : str Name of the nuclide, e.g. U235 - xs : str - Cross section identifier, e.g. 71c - zaid : int - 1000*(atomic number) + mass number. As an example, the zaid of U235 - would be 92235. scattering : 'data' or 'iso-in-lab' or None The type of angular scattering distribution to use """ - def __init__(self, name='', xs=None): + def __init__(self, name=''): # Initialize class attributes self._name = '' - self._xs = None - self._zaid = None self._scattering = None # Set the Material class attributes self.name = name - if xs is not None: - self.xs = xs - def __eq__(self, other): if isinstance(other, Nuclide): if self.name != other.name: return False - elif self.xs != other.xs: - return False else: return True elif isinstance(other, basestring) and other == self.name: @@ -72,9 +58,6 @@ class Nuclide(object): def __repr__(self): string = 'Nuclide - {0}\n'.format(self._name) - string += '{0: <16}{1}{2}\n'.format('\tXS', '=\t', self.xs) - if self.zaid is not None: - string += '{0: <16}{1}{2}\n'.format('\tZAID', '=\t', self.zaid) if self.scattering is not None: string += '{0: <16}{1}{2}\n'.format('\tscattering', '=\t', self.scattering) @@ -84,14 +67,6 @@ class Nuclide(object): def name(self): return self._name - @property - def xs(self): - return self._xs - - @property - def zaid(self): - return self._zaid - @property def scattering(self): return self._scattering @@ -111,19 +86,8 @@ class Nuclide(object): '"{}" is being renamed as "{}".'.format(name, self._name) warnings.warn(msg) - @xs.setter - def xs(self, xs): - check_type('cross-section identifier', xs, basestring) - self._xs = xs - - @zaid.setter - def zaid(self, zaid): - check_type('zaid', zaid, Integral) - self._zaid = zaid - @scattering.setter def scattering(self, scattering): - if not scattering in ['data', 'iso-in-lab']: msg = 'Unable to set scattering for Nuclide to {0} ' \ 'which is not "data" or "iso-in-lab"'.format(scattering) diff --git a/openmc/settings.py b/openmc/settings.py index eb56381b0..c7d6debb9 100644 --- a/openmc/settings.py +++ b/openmc/settings.py @@ -1,4 +1,4 @@ -from collections import Iterable, MutableSequence +from collections import Iterable, MutableSequence, Mapping from numbers import Real, Integral import warnings from xml.etree import ElementTree as ET @@ -78,8 +78,6 @@ class Settings(object): cross section library. If it is not set, the :envvar:`OPENMC_MULTIPOLE_LIBRARY` environment variable will be used. A multipole library is optional. - energy_grid : {'nuclide', 'logarithm', 'material-union'} - Set the method used to search energy grids. energy_mode : {'continuous-energy', 'multi-group'} Set whether the calculation should be continuous-energy or multi-group. max_order : int @@ -103,6 +101,14 @@ class Settings(object): Coordinates of the lower-left point of the Shannon entropy mesh entropy_upper_right : tuple or list Coordinates of the upper-right point of the Shannon entropy mesh + temperature : dict + Defines a default temperature and method for treating intermediate + temperatures at which nuclear data doesn't exist. Accepted keys are + 'default', 'method', and 'tolerance'. The value for 'default' should be + a float representing the default temperature in Kelvin. The value for + 'method' should be 'nearest' or 'multipole'. If the method is + 'nearest', 'tolerance' indicates a range of temperature within which + cross sections may be used. trigger_active : bool Indicate whether tally triggers are used trigger_max_batches : int @@ -130,9 +136,6 @@ class Settings(object): Coordinates of the lower-left point of the UFS mesh ufs_upper_right : tuple or list Coordinates of the upper-right point of the UFS mesh - use_windowed_multipole : bool - Whether or not windowed multipole can be used to evaluate resolved - resonance cross sections. resonance_scattering : ResonanceScattering or iterable of ResonanceScattering The elastic scattering model to use for resonant isotopes volume_calculations : VolumeCalculation or iterable of VolumeCalculation @@ -160,7 +163,6 @@ class Settings(object): self._confidence_intervals = None self._cross_sections = None self._multipole_library = None - self._energy_grid = None self._ptables = None self._run_cmfd = None self._seed = None @@ -197,6 +199,8 @@ class Settings(object): self._trace = None self._track = None + self._temperature = {} + # Cutoff subelement self._weight = None self._weight_avg = None @@ -216,7 +220,6 @@ class Settings(object): self._settings_file = ET.Element("settings") self._run_mode_subelement = None - self._multipole_active = None self._resonance_scattering = cv.CheckedList( ResonanceScattering, 'resonance scattering models') @@ -271,10 +274,6 @@ class Settings(object): def multipole_library(self): return self._multipole_library - @property - def energy_grid(self): - return self._energy_grid - @property def ptables(self): return self._ptables @@ -363,6 +362,10 @@ class Settings(object): def verbosity(self): return self._verbosity + @property + def temperature(self): + return self._temperature + @property def trace(self): return self._trace @@ -415,10 +418,6 @@ class Settings(object): def dd_count_interactions(self): return self._dd_count_interactions - @property - def use_windowed_multipole(self): - return self._multipole_active - @property def resonance_scattering(self): return self._resonance_scattering @@ -593,12 +592,6 @@ class Settings(object): cv.check_type('cross sections', multipole_library, basestring) self._multipole_library = multipole_library - @energy_grid.setter - def energy_grid(self, energy_grid): - cv.check_value('energy grid', energy_grid, - ['nuclide', 'logarithm', 'material-union']) - self._energy_grid = energy_grid - @ptables.setter def ptables(self, ptables): cv.check_type('probability tables', ptables, bool) @@ -674,6 +667,21 @@ class Settings(object): cv.check_type('no reduction option', no_reduce, bool) self._no_reduce = no_reduce + @temperature.setter + def temperature(self, temperature): + cv.check_type('temperature settings', temperature, Mapping) + for key, value in temperature.items(): + cv.check_value('temperature key', key, + ['default', 'method', 'tolerance']) + if key == 'default': + cv.check_type('default temperature', value, Real) + elif key == 'method': + cv.check_value('temperature method', value, + ['nearest', 'interpolation', 'multipole']) + elif key == 'tolerance': + cv.check_type('temperature tolerance', value, Real) + self._temperature = temperature + @threads.setter def threads(self, threads): cv.check_type('number of threads', threads, Integral) @@ -801,11 +809,6 @@ class Settings(object): self._dd_count_interactions = interactions - @use_windowed_multipole.setter - def use_windowed_multipole(self, active): - cv.check_type('use_windowed_multipole', active, bool) - self._multipole_active = active - @resonance_scattering.setter def resonance_scattering(self, res): if not isinstance(res, MutableSequence): @@ -963,11 +966,6 @@ class Settings(object): element = ET.SubElement(self._settings_file, "multipole_library") element.text = str(self._multipole_library) - def _create_energy_grid_subelement(self): - if self._energy_grid is not None: - element = ET.SubElement(self._settings_file, "energy_grid") - element.text = str(self._energy_grid) - def _create_ptables_subelement(self): if self._ptables is not None: element = ET.SubElement(self._settings_file, "ptables") @@ -1050,6 +1048,13 @@ class Settings(object): element = ET.SubElement(self._settings_file, "no_reduce") element.text = str(self._no_reduce).lower() + def _create_temperature_subelements(self): + if self.temperature: + for key, value in self.temperature.items(): + element = ET.SubElement(self._settings_file, + "temperature_{}".format(key)) + element.text = str(value) + def _create_threads_subelement(self): if self._threads is not None: element = ET.SubElement(self._settings_file, "threads") @@ -1107,20 +1112,10 @@ class Settings(object): subelement = ET.SubElement(element, "count_interactions") subelement.text = str(self._dd_count_interactions).lower() - def _create_use_multipole_subelement(self): - if self._multipole_active is not None: - element = ET.SubElement(self._settings_file, - "use_windowed_multipole") - element.text = str(self._multipole_active) - def _create_resonance_scattering_subelement(self): if len(self.resonance_scattering) > 0: elem = ET.SubElement(self._settings_file, 'resonance_scattering') for r in self.resonance_scattering: - if r.nuclide.name != r.nuclide_0K.name: - raise ValueError("The nuclide and nuclide_0K attributes of " - "a ResonantScattering object must have " - "identical names.") elem.append(r.to_xml_element()) def export_to_xml(self): @@ -1142,7 +1137,6 @@ class Settings(object): self._create_confidence_intervals() self._create_cross_sections_subelement() self._create_multipole_library_subelement() - self._create_energy_grid_subelement() self._create_energy_mode_subelement() self._create_max_order_subelement() self._create_ptables_subelement() @@ -1155,11 +1149,11 @@ class Settings(object): self._create_no_reduce_subelement() self._create_threads_subelement() self._create_verbosity_subelement() + self._create_temperature_subelements() self._create_trace_subelement() self._create_track_subelement() self._create_ufs_subelement() self._create_dd_subelement() - self._create_use_multipole_subelement() self._create_resonance_scattering_subelement() self._create_volume_calcs_subelement() @@ -1175,14 +1169,26 @@ class Settings(object): class ResonanceScattering(object): """Specification of the elastic scattering model for resonant isotopes + Parameters + ---------- + nuclide : openmc.Nuclide + The nuclide affected by this resonance scattering treatment. + method : {'ARES', 'CXS', 'DBRC', 'WCM'} + The method used to sample outgoing scattering energies. Valid options + are 'ARES', 'CXS' (constant cross section), 'DBRC' (Doppler broadening + rejection correction), and 'WCM' (weight correction method). + E_min : float + The minimum energy above which the specified method is applied. By + default, CXS will be used below E_min. + E_max : float + The maximum energy below which the specified method is applied. By + default, the asymptotic target-at-rest model is applied above E_max. + Attributes ---------- nuclide : openmc.Nuclide The nuclide affected by this resonance scattering treatment. - nuclide_0K : openmc.Nuclide - This should be the same isotope as the nuclide attribute above, but it - should have an xs attribute that identifies 0 Kelvin data. - method : str + method : {'ARES', 'CXS', 'DBRC', 'WCM'} The method used to sample outgoing scattering energies. Valid options are 'ARES', 'CXS' (constant cross section), 'DBRC' (Doppler broadening rejection correction), and 'WCM' (weight correction method). @@ -1195,21 +1201,20 @@ class ResonanceScattering(object): """ - def __init__(self): - self._nuclide = None - self._nuclide_0K = None - self._method = None + def __init__(self, nuclide, method='CXS', E_min=None, E_max=None): self._E_min = None self._E_max = None + self.nuclide = nuclide + self.method = method + if E_min is not None: + self.E_min = E_min + if E_max is not None: + self.E_max = E_max @property def nuclide(self): return self._nuclide - @property - def nuclide_0K(self): - return self._nuclide_0K - @property def method(self): return self._method @@ -1227,11 +1232,6 @@ class ResonanceScattering(object): cv.check_type('nuclide', nuc, Nuclide) self._nuclide = nuc - @nuclide_0K.setter - def nuclide_0K(self, nuc): - cv.check_type('nuclide_0K', nuc, Nuclide) - self._nuclide_0K = nuc - @method.setter def method(self, m): cv.check_value('method', m, ('ARES', 'CXS', 'DBRC', 'WCM')) @@ -1264,10 +1264,6 @@ class ResonanceScattering(object): if self.method is not None: subelement = ET.SubElement(scatterer, 'method') subelement.text = self.method - subelement = ET.SubElement(scatterer, 'xs_label') - subelement.text = '{0.name}.{0.xs}'.format(self.nuclide) - subelement = ET.SubElement(scatterer, 'xs_label_0K') - subelement.text = '{0.name}.{0.xs}'.format(self.nuclide_0K) if self.E_min is not None: subelement = ET.SubElement(scatterer, 'E_min') subelement.text = str(self.E_min) diff --git a/openmc/summary.py b/openmc/summary.py index 6fbace72e..38c0e335c 100644 --- a/openmc/summary.py +++ b/openmc/summary.py @@ -83,11 +83,10 @@ class Summary(object): n_nuclides = self._f['nuclides/n_nuclides_total'].value names = self._f['nuclides/names'].value awrs = self._f['nuclides/awrs'].value - zaids = self._f['nuclides/zaids'].value for n in range(n_nuclides): name = names[n].decode() name = name[:name.find('.')] - self.nuclides[name] = (zaids[n], awrs[n]) + self.nuclides[name] = awrs[n] def _read_geometry(self): # Read in and initialize the Materials and Geometry @@ -124,22 +123,21 @@ class Summary(object): if 'sab_names' in self._f['materials'][key]: sab_tables = self._f['materials'][key]['sab_names'].value for sab_table in sab_tables: - name, xs = sab_table.decode().split('.') - material.add_s_alpha_beta(name, xs) + name = sab_table.decode() + material.add_s_alpha_beta(name) # Set the Material's density to atom/b-cm as used by OpenMC material.set_density(density=density, units='atom/b-cm') # Add all nuclides to the Material for fullname, density in zip(nuclides, nuc_densities): - fullname = fullname.decode().strip() - name, xs = fullname.split('.') + name = fullname.decode().strip() if 'nat' in name: - material.add_element(openmc.Element(name=name, xs=xs), + material.add_element(openmc.Element(name=name), percent=density, percent_type='ao') else: - material.add_nuclide(openmc.Nuclide(name=name, xs=xs), + material.add_nuclide(openmc.Nuclide(name=name), percent=density, percent_type='ao') # Add the Material to the global dictionary of all Materials diff --git a/scripts/openmc-ace-to-hdf5 b/scripts/openmc-ace-to-hdf5 index 05e3aff32..ff8c19962 100755 --- a/scripts/openmc-ace-to-hdf5 +++ b/scripts/openmc-ace-to-hdf5 @@ -115,6 +115,7 @@ elif args.xsdata is not None: else: ace_libraries = args.libraries +nuclides = {} library = openmc.data.DataLibrary() for filename in ace_libraries: @@ -125,46 +126,87 @@ for filename in ace_libraries: lib = openmc.data.ace.Library(filename) for table in lib.tables: - if table.name.endswith('c'): + name, xs = table.name.split('.') + if xs.endswith('c'): # Continuous-energy neutron data - try: - neutron = openmc.data.IncidentNeutron.from_ace( - table, args.metastable) - except Exception as e: - print('Failed to convert {}: {}'.format(table.name, e)) - continue + if name not in nuclides: + try: + neutron = openmc.data.IncidentNeutron.from_ace( + table, args.metastable) + except Exception as e: + print('Failed to convert {}: {}'.format(table.name, e)) + continue - # Fission energy release data, if available - if args.fission_energy_release is not None: - fer = openmc.data.FissionEnergyRelease.from_compact_hdf5( - args.fission_energy_release, neutron) - if fer is not None: - neutron.fission_energy = fer + # Fission energy release data, if available + if args.fission_energy_release is not None: + fer = openmc.data.FissionEnergyRelease.from_compact_hdf5( + args.fission_energy_release, neutron) + if fer is not None: + neutron.fission_energy = fer - print('Converting {} (ACE) to {} (HDF5)'.format(table.name, - neutron.name)) + print('Converting {} (ACE) to {} (HDF5)'.format(table.name, + neutron.name)) - # Determine filename - outfile = os.path.join(args.destination, - neutron.name.replace('.', '_') + '.h5') - neutron.export_to_hdf5(outfile, 'w') + # Determine filename + outfile = os.path.join(args.destination, + neutron.name.replace('.', '_') + '.h5') + neutron.export_to_hdf5(outfile, 'w') - # Register with library - library.register_file(outfile) + # Register with library + library.register_file(outfile) - elif table.name.endswith('t'): + # Add nuclide to list + nuclides[name] = outfile + else: + # Then we only need to append the data + try: + neutron = \ + openmc.data.IncidentNeutron.from_hdf5(nuclides[name]) + print('Converting {} (ACE) to {} (HDF5)'.format(table.name, + neutron.name)) + neutron.add_temperature_from_ace(table, args.metastable) + neutron.export_to_hdf5(nuclides[name] + '_1', 'w') + os.rename(nuclides[name] + '_1', nuclides[name]) + except Exception as e: + print('Failed to convert {}: {}'.format(table.name, e)) + continue + + elif xs.endswith('t'): + # Adjust name to be the new thermal scattering name + name = openmc.data.get_thermal_name(name) # Thermal scattering data - thermal = openmc.data.ThermalScattering.from_ace(table) - print('Converting {} (ACE) to {} (HDF5)'.format(table.name, - thermal.name)) + if name not in nuclides: + try: + thermal = openmc.data.ThermalScattering.from_ace(table) + except Exception as e: + print('Failed to convert {}: {}'.format(table.name, e)) + continue + print('Converting {} (ACE) to {} (HDF5)'.format(table.name, + thermal.name)) - # Determine filename - outfile = os.path.join(args.destination, - thermal.name.replace('.', '_') + '.h5') - thermal.export_to_hdf5(outfile, 'w') + # Determine filename + outfile = os.path.join(args.destination, + thermal.name.replace('.', '_') + '.h5') + thermal.export_to_hdf5(outfile, 'w') - # Register with library - library.register_file(outfile, 'thermal') + # Register with library + library.register_file(outfile, 'thermal') + + # Add data to list + nuclides[name] = outfile + + else: + # Then we only need to append the data + try: + thermal = openmc.data.ThermalScattering.from_hdf5(nuclides[name]) + print('Converting {} (ACE) to {} (HDF5)'.format(table.name, + thermal.name)) + thermal.add_temperature_from_ace(table) + thermal.export_to_hdf5(nuclides[name] + '_1', 'w') + os.rename(nuclides[name] + '_1', nuclides[name]) + except Exception as e: + print('Failed to convert {}: {}'.format(table.name, e)) + continue # Write cross_sections.xml libpath = os.path.join(args.destination, 'cross_sections.xml') diff --git a/src/algorithm.F90 b/src/algorithm.F90 new file mode 100644 index 000000000..101b11b9a --- /dev/null +++ b/src/algorithm.F90 @@ -0,0 +1,275 @@ +module algorithm + + use constants + use stl_vector, only: VectorInt, VectorReal + + implicit none + + integer, parameter :: MAX_ITERATION = 64 + + interface binary_search + module procedure binary_search_real, binary_search_int4, binary_search_int8 + end interface binary_search + + interface sort + module procedure sort_int, sort_real, sort_vector_int, sort_vector_real + end interface sort + + interface find + module procedure find_int, find_real, find_vector_int, find_vector_real + end interface find + +contains + +!=============================================================================== +! BINARY_SEARCH performs a binary search of an array to find where a specific +! value lies in the array. This is used extensively for energy grid searching +!=============================================================================== + + pure function binary_search_real(array, n, val) result(array_index) + + integer, intent(in) :: n + real(8), intent(in) :: array(n) + real(8), intent(in) :: val + integer :: array_index + + integer :: L + integer :: R + integer :: n_iteration + + L = 1 + R = n + + if (val < array(L) .or. val > array(R)) then + array_index = -1 + return + end if + + n_iteration = 0 + do while (R - L > 1) + ! Find values at midpoint + array_index = L + (R - L)/2 + if (val >= array(array_index)) then + L = array_index + else + R = array_index + end if + + ! check for large number of iterations + n_iteration = n_iteration + 1 + if (n_iteration == MAX_ITERATION) then + array_index = -2 + return + end if + end do + + array_index = L + + end function binary_search_real + + pure function binary_search_int4(array, n, val) result(array_index) + + integer, intent(in) :: n + integer, intent(in) :: array(n) + integer, intent(in) :: val + integer :: array_index + + integer :: L + integer :: R + integer :: n_iteration + + L = 1 + R = n + + if (val < array(L) .or. val > array(R)) then + array_index = -1 + return + end if + + n_iteration = 0 + do while (R - L > 1) + ! Find values at midpoint + array_index = L + (R - L)/2 + if (val >= array(array_index)) then + L = array_index + else + R = array_index + end if + + ! check for large number of iterations + n_iteration = n_iteration + 1 + if (n_iteration == MAX_ITERATION) then + array_index = -2 + return + end if + end do + + array_index = L + + end function binary_search_int4 + + pure function binary_search_int8(array, n, val) result(array_index) + + integer, intent(in) :: n + integer(8), intent(in) :: array(n) + integer(8), intent(in) :: val + integer :: array_index + + integer :: L + integer :: R + integer :: n_iteration + + L = 1 + R = n + + if (val < array(L) .or. val > array(R)) then + array_index = -1 + return + end if + + n_iteration = 0 + do while (R - L > 1) + ! Find values at midpoint + array_index = L + (R - L)/2 + if (val >= array(array_index)) then + L = array_index + else + R = array_index + end if + + ! check for large number of iterations + n_iteration = n_iteration + 1 + if (n_iteration == MAX_ITERATION) then + array_index = -2 + return + end if + end do + + array_index = L + + end function binary_search_int8 + +!=============================================================================== +! SORT sorts an array in place using an insertion sort. +!=============================================================================== + + pure subroutine sort_int(array) + integer, intent(inout) :: array(:) + + integer :: k, m + integer :: temp + + if (size(array) > 1) then + SORT: do k = 2, size(array) + ! Save value to move + m = k + temp = array(k) + + MOVE_OVER: do while (m > 1) + ! Check if insertion value is greater than (m-1)th value + if (temp >= array(m - 1)) exit + + ! Move values over until hitting one that's not larger + array(m) = array(m - 1) + m = m - 1 + end do MOVE_OVER + + ! Put the original value into its new position + array(m) = temp + end do SORT + end if + end subroutine sort_int + + pure subroutine sort_real(array) + real(8), intent(inout) :: array(:) + + integer :: k, m + real(8) :: temp + + if (size(array) > 1) then + SORT: do k = 2, size(array) + ! Save value to move + m = k + temp = array(k) + + MOVE_OVER: do while (m > 1) + ! Check if insertion value is greater than (m-1)th value + if (temp >= array(m - 1)) exit + + ! Move values over until hitting one that's not larger + array(m) = array(m - 1) + m = m - 1 + end do MOVE_OVER + + ! Put the original value into its new position + array(m) = temp + end do SORT + end if + end subroutine sort_real + + pure subroutine sort_vector_int(vec) + type(VectorInt), intent(inout) :: vec + + call sort_int(vec % data(1:vec%size())) + end subroutine sort_vector_int + + pure subroutine sort_vector_real(vec) + type(VectorReal), intent(inout) :: vec + + call sort_real(vec % data(1:vec%size())) + end subroutine sort_vector_real + +!=============================================================================== +! FIND determines the index of the first occurrence of a value in an array. If +! the value does not appear in the array, -1 is returned. +!=============================================================================== + + pure function find_int(array, val) result(index) + integer, intent(in) :: array(:) + integer, intent(in) :: val + integer :: index + + integer :: i + + index = -1 + do i = 1, size(array) + if (array(i) == val) then + index = i + exit + end if + end do + end function find_int + + pure function find_real(array, val) result(index) + real(8), intent(in) :: array(:) + real(8), intent(in) :: val + integer :: index + + integer :: i + + index = -1 + do i = 1, size(array) + if (array(i) == val) then + index = i + exit + end if + end do + end function find_real + + pure function find_vector_int(vec, val) result(index) + type(VectorInt), intent(in) :: vec + integer, intent(in) :: val + integer :: index + + index = find_int(vec % data(1:vec % size()), val) + end function find_vector_int + + pure function find_vector_real(vec, val) result(index) + type(VectorReal), intent(in) :: vec + real(8), intent(in) :: val + integer :: index + + index = find_real(vec % data(1:vec % size()), val) + end function find_vector_real + +end module algorithm diff --git a/src/angle_distribution.F90 b/src/angle_distribution.F90 index a4fea6ff7..5d16f7424 100644 --- a/src/angle_distribution.F90 +++ b/src/angle_distribution.F90 @@ -2,12 +2,12 @@ module angle_distribution use hdf5, only: HID_T, HSIZE_T + use algorithm, only: binary_search use constants, only: ZERO, ONE, HISTOGRAM, LINEAR_LINEAR use distribution_univariate, only: DistributionContainer, Tabular use hdf5_interface, only: read_attribute, get_shape, read_dataset, & open_dataset, close_dataset use random_lcg, only: prn - use search, only: binary_search implicit none private diff --git a/src/cmfd_execute.F90 b/src/cmfd_execute.F90 index b7d0cc387..d2631254b 100644 --- a/src/cmfd_execute.F90 +++ b/src/cmfd_execute.F90 @@ -213,13 +213,13 @@ contains subroutine cmfd_reweight(new_weights) + use algorithm, only: binary_search use constants, only: ZERO, ONE use error, only: warning, fatal_error use global, only: meshes, source_bank, work, n_user_meshes, cmfd, & master use mesh_header, only: RegularMesh use mesh, only: count_bank_sites, get_mesh_indices - use search, only: binary_search use string, only: to_str #ifdef MPI diff --git a/src/constants.F90 b/src/constants.F90 index 90003e5fe..5eeb0b2e2 100644 --- a/src/constants.F90 +++ b/src/constants.F90 @@ -268,6 +268,12 @@ module constants JENDL_33 = 7, & JENDL_40 = 8 + ! Temperature treatment method + integer, parameter :: & + TEMPERATURE_NEAREST = 1, & + TEMPERATURE_INTERPOLATION = 2, & + TEMPERATURE_MULTIPOLE = 3 + ! ============================================================================ ! TALLY-RELATED CONSTANTS @@ -407,12 +413,6 @@ module constants integer, parameter :: ERROR_INT = -huge(0) real(8), parameter :: ERROR_REAL = -huge(0.0_8) * 0.917826354_8 - ! Energy grid methods - integer, parameter :: & - GRID_NUCLIDE = 1, & ! unique energy grid for each nuclide - GRID_MAT_UNION = 2, & ! material union grids with pointers - GRID_LOGARITHM = 3 ! lethargy mapping - ! Running modes integer, parameter :: & MODE_FIXEDSOURCE = 1, & ! Fixed source mode diff --git a/src/cross_section.F90 b/src/cross_section.F90 index a8acb25a8..e2cc31d5e 100644 --- a/src/cross_section.F90 +++ b/src/cross_section.F90 @@ -1,7 +1,8 @@ module cross_section + use algorithm, only: binary_search use constants - use energy_grid, only: grid_method, log_spacing + use energy_grid, only: log_spacing use error, only: fatal_error use global use list_header, only: ListElemInt @@ -14,7 +15,6 @@ module cross_section use particle_header, only: Particle use random_lcg, only: prn, future_prn, prn_set_stream use sab_header, only: SAlphaBeta - use search, only: binary_search implicit none @@ -37,7 +37,6 @@ contains ! union grid real(8) :: atom_density ! atom density of a nuclide logical :: check_sab ! should we check for S(a,b) table? - type(Material), pointer :: mat ! current material ! Set all material macroscopic cross sections to zero material_xs % total = ZERO @@ -49,89 +48,83 @@ contains ! Exit subroutine if material is void if (p % material == MATERIAL_VOID) return - mat => materials(p % material) - - ! Find energy index on energy grid - if (grid_method == GRID_MAT_UNION) then - i_grid = find_energy_index(mat, p % E) - else if (grid_method == GRID_LOGARITHM) then + associate (mat => materials(p % material)) + ! Find energy index on energy grid i_grid = int(log(p % E/energy_min_neutron)/log_spacing) - end if - ! Determine if this material has S(a,b) tables - check_sab = (mat % n_sab > 0) + ! Determine if this material has S(a,b) tables + check_sab = (mat % n_sab > 0) - ! Initialize position in i_sab_nuclides - j = 1 + ! Initialize position in i_sab_nuclides + j = 1 - ! Add contribution from each nuclide in material - do i = 1, mat % n_nuclides - ! ======================================================================== - ! CHECK FOR S(A,B) TABLE + ! Add contribution from each nuclide in material + do i = 1, mat % n_nuclides + ! ======================================================================== + ! CHECK FOR S(A,B) TABLE - i_sab = 0 + i_sab = 0 - ! Check if this nuclide matches one of the S(a,b) tables specified -- this - ! relies on i_sab_nuclides being in sorted order - if (check_sab) then - if (i == mat % i_sab_nuclides(j)) then - ! Get index in sab_tables - i_sab = mat % i_sab_tables(j) + ! Check if this nuclide matches one of the S(a,b) tables specified -- this + ! relies on i_sab_nuclides being in sorted order + if (check_sab) then + if (i == mat % i_sab_nuclides(j)) then + ! Get index in sab_tables + i_sab = mat % i_sab_tables(j) - ! If particle energy is greater than the highest energy for the S(a,b) - ! table, don't use the S(a,b) table - if (p % E > sab_tables(i_sab) % threshold_inelastic) i_sab = 0 + ! If particle energy is greater than the highest energy for the S(a,b) + ! table, don't use the S(a,b) table + if (p % E > sab_tables(i_sab) % data(1) % threshold_inelastic) i_sab = 0 - ! Increment position in i_sab_nuclides - j = j + 1 + ! Increment position in i_sab_nuclides + j = j + 1 - ! Don't check for S(a,b) tables if there are no more left - if (j > mat % n_sab) check_sab = .false. + ! Don't check for S(a,b) tables if there are no more left + if (j > mat % n_sab) check_sab = .false. + end if end if - end if - ! ======================================================================== - ! CALCULATE MICROSCOPIC CROSS SECTION + ! ======================================================================== + ! CALCULATE MICROSCOPIC CROSS SECTION - ! Determine microscopic cross sections for this nuclide - i_nuclide = mat % nuclide(i) + ! Determine microscopic cross sections for this nuclide + i_nuclide = mat % nuclide(i) - ! Calculate microscopic cross section for this nuclide - if (p % E /= micro_xs(i_nuclide) % last_E & - .or. p % sqrtkT /= micro_xs(i_nuclide) % last_sqrtkT) then - call calculate_nuclide_xs(i_nuclide, i_sab, p % E, p % material, i, & - i_grid, p % sqrtkT) - else if (i_sab /= micro_xs(i_nuclide) % last_index_sab) then - call calculate_nuclide_xs(i_nuclide, i_sab, p % E, p % material, i, & - i_grid, p % sqrtkT) - end if + ! Calculate microscopic cross section for this nuclide + if (p % E /= micro_xs(i_nuclide) % last_E & + .or. p % sqrtkT /= micro_xs(i_nuclide) % last_sqrtkT) then + call calculate_nuclide_xs(i_nuclide, i_sab, p % E, i_grid, p % sqrtkT) + else if (i_sab /= micro_xs(i_nuclide) % last_index_sab) then + call calculate_nuclide_xs(i_nuclide, i_sab, p % E, i_grid, p % sqrtkT) + end if - ! ======================================================================== - ! ADD TO MACROSCOPIC CROSS SECTION + ! ======================================================================== + ! ADD TO MACROSCOPIC CROSS SECTION - ! Copy atom density of nuclide in material - atom_density = mat % atom_density(i) + ! Copy atom density of nuclide in material + atom_density = mat % atom_density(i) - ! Add contributions to material macroscopic total cross section - material_xs % total = material_xs % total + & - atom_density * micro_xs(i_nuclide) % total + ! Add contributions to material macroscopic total cross section + material_xs % total = material_xs % total + & + atom_density * micro_xs(i_nuclide) % total - ! Add contributions to material macroscopic scattering cross section - material_xs % elastic = material_xs % elastic + & - atom_density * micro_xs(i_nuclide) % elastic + ! Add contributions to material macroscopic scattering cross section + material_xs % elastic = material_xs % elastic + & + atom_density * micro_xs(i_nuclide) % elastic - ! Add contributions to material macroscopic absorption cross section - material_xs % absorption = material_xs % absorption + & - atom_density * micro_xs(i_nuclide) % absorption + ! Add contributions to material macroscopic absorption cross section + material_xs % absorption = material_xs % absorption + & + atom_density * micro_xs(i_nuclide) % absorption - ! Add contributions to material macroscopic fission cross section - material_xs % fission = material_xs % fission + & - atom_density * micro_xs(i_nuclide) % fission + ! Add contributions to material macroscopic fission cross section + material_xs % fission = material_xs % fission + & + atom_density * micro_xs(i_nuclide) % fission - ! Add contributions to material macroscopic nu-fission cross section - material_xs % nu_fission = material_xs % nu_fission + & - atom_density * micro_xs(i_nuclide) % nu_fission - end do + ! Add contributions to material macroscopic nu-fission cross section + material_xs % nu_fission = material_xs % nu_fission + & + atom_density * micro_xs(i_nuclide) % nu_fission + end do + end associate end subroutine calculate_xs @@ -140,169 +133,162 @@ contains ! given index in the nuclides array at the energy of the given particle !=============================================================================== - subroutine calculate_nuclide_xs(i_nuclide, i_sab, E, i_mat, i_nuc_mat, & - i_log_union, sqrtkT) + subroutine calculate_nuclide_xs(i_nuclide, i_sab, E, i_log_union, sqrtkT) integer, intent(in) :: i_nuclide ! index into nuclides array integer, intent(in) :: i_sab ! index into sab_tables array real(8), intent(in) :: E ! energy - integer, intent(in) :: i_mat ! index into materials array - integer, intent(in) :: i_nuc_mat ! index into nuclides array for a material integer, intent(in) :: i_log_union ! index into logarithmic mapping array or ! material union energy grid real(8), intent(in) :: sqrtkT ! Square root of kT, material dependent logical :: use_mp ! true if XS can be calculated with windowed multipole + integer :: i_temp ! index for temperature integer :: i_grid ! index on nuclide energy grid integer :: i_low ! lower logarithmic mapping index integer :: i_high ! upper logarithmic mapping index real(8) :: f ! interp factor on nuclide energy grid + real(8) :: kT ! temperature in MeV real(8) :: sigT, sigA, sigF ! Intermediate multipole variables - type(Nuclide), pointer :: nuc - type(Material), pointer :: mat - ! Set pointer to nuclide and material - nuc => nuclides(i_nuclide) - mat => materials(i_mat) - - ! Check to see if there is multipole data present at this energy - use_mp = .false. - if (nuc % mp_present) then - if (E >= nuc % multipole % start_E/1.0e6_8 .and. & - E <= nuc % multipole % end_E/1.0e6_8) then - use_mp = .true. - end if - end if - - ! Evaluate multipole or interpolate - if (use_mp) then - ! Call multipole kernel - call multipole_eval(nuc % multipole, E, sqrtkT, sigT, sigA, sigF) - - micro_xs(i_nuclide) % total = sigT - micro_xs(i_nuclide) % absorption = sigA - micro_xs(i_nuclide) % elastic = sigT - sigA - - if (nuc % fissionable) then - micro_xs(i_nuclide) % fission = sigF - micro_xs(i_nuclide) % nu_fission = sigF * nuc % nu(E, EMISSION_TOTAL) + associate (nuc => nuclides(i_nuclide)) + ! Check to see if there is multipole data present at this energy + use_mp = .false. + if (nuc % mp_present) then + if (E >= nuc % multipole % start_E/1.0e6_8 .and. & + E <= nuc % multipole % end_E/1.0e6_8) then + use_mp = .true. + else + ! If using multipole data but outside the RRR, pick the nearest + ! temperature. Note that there is no tolerance here, so this + ! temperature could be very far off! + kT = sqrtkT**2 + i_temp = minloc(abs(nuclides(i_nuclide) % kTs - kT), dim=1) + end if else - micro_xs(i_nuclide) % fission = ZERO - micro_xs(i_nuclide) % nu_fission = ZERO + ! If not using multipole data, do a linear search on temperature + kT = sqrtkT**2 + do i_temp = 1, size(nuclides(i_nuclide) % kTs) + if (abs(nuclides(i_nuclide) % kTs(i_temp) - kT) < & + K_BOLTZMANN*temperature_tolerance) exit + end do end if - ! Ensure these values are set - ! Note, the only time either is used is in one of 4 places: - ! 1. physics.F90 - scatter - For inelastic scatter. - ! 2. physics.F90 - sample_fission - For partial fissions. - ! 3. tally.F90 - score_general - For tallying on MTxxx reactions. - ! 4. cross_section.F90 - calculate_urr_xs - For unresolved purposes. - ! It is worth noting that none of these occur in the resolved - ! resonance range, so the value here does not matter. - micro_xs(i_nuclide) % index_grid = 0 - micro_xs(i_nuclide) % interp_factor = ZERO - else - ! Determine index on nuclide energy grid - select case (grid_method) - case (GRID_MAT_UNION) + ! Evaluate multipole or interpolate + if (use_mp) then + ! Call multipole kernel + call multipole_eval(nuc % multipole, E, sqrtkT, sigT, sigA, sigF) - i_grid = mat % nuclide_grid_index(i_nuc_mat, i_log_union) + micro_xs(i_nuclide) % total = sigT + micro_xs(i_nuclide) % absorption = sigA + micro_xs(i_nuclide) % elastic = sigT - sigA - case (GRID_LOGARITHM) - ! Determine the energy grid index using a logarithmic mapping to reduce - ! the energy range over which a binary search needs to be performed - - if (E < nuc % energy(1)) then - i_grid = 1 - elseif (E > nuc % energy(nuc % n_grid)) then - i_grid = nuc % n_grid - 1 + if (nuc % fissionable) then + micro_xs(i_nuclide) % fission = sigF + micro_xs(i_nuclide) % nu_fission = sigF * nuc % nu(E, EMISSION_TOTAL) else - ! Determine bounding indices based on which equal log-spaced interval - ! the energy is in - i_low = nuc % grid_index(i_log_union) - i_high = nuc % grid_index(i_log_union + 1) + 1 - - ! Perform binary search over reduced range - i_grid = binary_search(nuc % energy(i_low:i_high), & - i_high - i_low + 1, E) + i_low - 1 + micro_xs(i_nuclide) % fission = ZERO + micro_xs(i_nuclide) % nu_fission = ZERO end if - case (GRID_NUCLIDE) - ! Perform binary search on the nuclide energy grid in order to determine - ! which points to interpolate between + ! Ensure these values are set + ! Note, the only time either is used is in one of 4 places: + ! 1. physics.F90 - scatter - For inelastic scatter. + ! 2. physics.F90 - sample_fission - For partial fissions. + ! 3. tally.F90 - score_general - For tallying on MTxxx reactions. + ! 4. cross_section.F90 - calculate_urr_xs - For unresolved purposes. + ! It is worth noting that none of these occur in the resolved + ! resonance range, so the value here does not matter. + micro_xs(i_nuclide) % index_temp = i_temp + micro_xs(i_nuclide) % index_grid = 0 + micro_xs(i_nuclide) % interp_factor = ZERO + else + associate (grid => nuc % grid(i_temp), xs => nuc % sum_xs(i_temp)) + ! Determine the energy grid index using a logarithmic mapping to reduce + ! the energy range over which a binary search needs to be performed - if (E <= nuc % energy(1)) then - i_grid = 1 - elseif (E > nuc % energy(nuc % n_grid)) then - i_grid = nuc % n_grid - 1 - else - i_grid = binary_search(nuc % energy, nuc % n_grid, E) + if (E < grid % energy(1)) then + i_grid = 1 + elseif (E > grid % energy(size(grid % energy))) then + i_grid = size(grid % energy) - 1 + else + ! Determine bounding indices based on which equal log-spaced interval + ! the energy is in + i_low = grid % grid_index(i_log_union) + i_high = grid % grid_index(i_log_union + 1) + 1 + + ! Perform binary search over reduced range + i_grid = binary_search(grid % energy(i_low:i_high), & + i_high - i_low + 1, E) + i_low - 1 + end if + + ! check for rare case where two energy points are the same + if (grid % energy(i_grid) == grid % energy(i_grid + 1)) & + i_grid = i_grid + 1 + + ! calculate interpolation factor + f = (E - grid % energy(i_grid)) / & + (grid % energy(i_grid + 1) - grid % energy(i_grid)) + + micro_xs(i_nuclide) % index_temp = i_temp + micro_xs(i_nuclide) % index_grid = i_grid + micro_xs(i_nuclide) % interp_factor = f + + ! Initialize nuclide cross-sections to zero + micro_xs(i_nuclide) % fission = ZERO + micro_xs(i_nuclide) % nu_fission = ZERO + + ! Calculate microscopic nuclide total cross section + micro_xs(i_nuclide) % total = (ONE - f) * xs % total(i_grid) & + + f * xs % total(i_grid + 1) + + ! Calculate microscopic nuclide elastic cross section + micro_xs(i_nuclide) % elastic = (ONE - f) * xs % elastic(i_grid) & + + f * xs % elastic(i_grid + 1) + + ! Calculate microscopic nuclide absorption cross section + micro_xs(i_nuclide) % absorption = (ONE - f) * xs % absorption( & + i_grid) + f * xs % absorption(i_grid + 1) + + if (nuc % fissionable) then + ! Calculate microscopic nuclide total cross section + micro_xs(i_nuclide) % fission = (ONE - f) * xs % fission(i_grid) & + + f * xs % fission(i_grid + 1) + + ! Calculate microscopic nuclide nu-fission cross section + micro_xs(i_nuclide) % nu_fission = (ONE - f) * xs % nu_fission( & + i_grid) + f * xs % nu_fission(i_grid + 1) + end if + end associate + end if + + ! Initialize sab treatment to false + micro_xs(i_nuclide) % index_sab = NONE + micro_xs(i_nuclide) % elastic_sab = ZERO + + ! Initialize URR probability table treatment to false + micro_xs(i_nuclide) % use_ptable = .false. + + ! If there is S(a,b) data for this nuclide, we need to do a few + ! things. Since the total cross section was based on non-S(a,b) data, we + ! need to correct it by subtracting the non-S(a,b) elastic cross section and + ! then add back in the calculated S(a,b) elastic+inelastic cross section. + + if (i_sab > 0) call calculate_sab_xs(i_nuclide, i_sab, E, sqrtkT) + + ! if the particle is in the unresolved resonance range and there are + ! probability tables, we need to determine cross sections from the table + + if (urr_ptables_on .and. nuc % urr_present .and. .not. use_mp) then + if (E > nuc % urr_data(i_temp) % energy(1) .and. E < nuc % & + urr_data(i_temp) % energy(nuc % urr_data(i_temp) % n_energy)) then + call calculate_urr_xs(i_nuclide, i_temp, E) end if - - end select - - ! check for rare case where two energy points are the same - if (nuc % energy(i_grid) == nuc % energy(i_grid+1)) i_grid = i_grid + 1 - - ! calculate interpolation factor - f = (E - nuc%energy(i_grid))/(nuc%energy(i_grid+1) - nuc%energy(i_grid)) - - micro_xs(i_nuclide) % index_grid = i_grid - micro_xs(i_nuclide) % interp_factor = f - - ! Initialize nuclide cross-sections to zero - micro_xs(i_nuclide) % fission = ZERO - micro_xs(i_nuclide) % nu_fission = ZERO - - ! Calculate microscopic nuclide total cross section - micro_xs(i_nuclide) % total = (ONE - f) * nuc % total(i_grid) & - + f * nuc % total(i_grid+1) - - ! Calculate microscopic nuclide elastic cross section - micro_xs(i_nuclide) % elastic = (ONE - f) * nuc % elastic(i_grid) & - + f * nuc % elastic(i_grid+1) - - ! Calculate microscopic nuclide absorption cross section - micro_xs(i_nuclide) % absorption = (ONE - f) * nuc % absorption( & - i_grid) + f * nuc % absorption(i_grid+1) - - if (nuc % fissionable) then - ! Calculate microscopic nuclide total cross section - micro_xs(i_nuclide) % fission = (ONE - f) * nuc % fission(i_grid) & - + f * nuc % fission(i_grid+1) - - ! Calculate microscopic nuclide nu-fission cross section - micro_xs(i_nuclide) % nu_fission = (ONE - f) * nuc % nu_fission( & - i_grid) + f * nuc % nu_fission(i_grid+1) end if - end if - ! Initialize sab treatment to false - micro_xs(i_nuclide) % index_sab = NONE - micro_xs(i_nuclide) % elastic_sab = ZERO - - ! Initialize URR probability table treatment to false - micro_xs(i_nuclide) % use_ptable = .false. - - ! If there is S(a,b) data for this nuclide, we need to do a few - ! things. Since the total cross section was based on non-S(a,b) data, we - ! need to correct it by subtracting the non-S(a,b) elastic cross section and - ! then add back in the calculated S(a,b) elastic+inelastic cross section. - - if (i_sab > 0) call calculate_sab_xs(i_nuclide, i_sab, E) - - ! if the particle is in the unresolved resonance range and there are - ! probability tables, we need to determine cross sections from the table - - if (urr_ptables_on .and. nuc % urr_present) then - if (E > nuc % urr_data % energy(1) .and. & - E < nuc % urr_data % energy(nuc % urr_data % n_energy)) then - call calculate_urr_xs(i_nuclide, E) - end if - end if - - micro_xs(i_nuclide) % last_E = E - micro_xs(i_nuclide) % last_index_sab = i_sab - micro_xs(i_nuclide) % last_sqrtkT = sqrtkT + micro_xs(i_nuclide) % last_E = E + micro_xs(i_nuclide) % last_index_sab = i_sab + micro_xs(i_nuclide) % last_sqrtkT = sqrtkT + end associate end subroutine calculate_nuclide_xs @@ -312,75 +298,85 @@ contains ! whatever data were taken from the normal Nuclide table. !=============================================================================== - subroutine calculate_sab_xs(i_nuclide, i_sab, E) + subroutine calculate_sab_xs(i_nuclide, i_sab, E, sqrtkT) integer, intent(in) :: i_nuclide ! index into nuclides array integer, intent(in) :: i_sab ! index into sab_tables array real(8), intent(in) :: E ! energy + real(8), intent(in) :: sqrtkT ! temperature integer :: i_grid ! index on S(a,b) energy grid + integer :: i_temp ! temperature index real(8) :: f ! interp factor on S(a,b) energy grid real(8) :: inelastic ! S(a,b) inelastic cross section real(8) :: elastic ! S(a,b) elastic cross section - type(SAlphaBeta), pointer :: sab + real(8) :: kT ! Set flag that S(a,b) treatment should be used for scattering micro_xs(i_nuclide) % index_sab = i_sab + ! Determine temperature for S(a,b) table + kT = sqrtkT**2 + do i_temp = 1, size(sab_tables(i_sab) % kTs) + if (abs(sab_tables(i_sab) % kTs(i_temp) - kT) < & + K_BOLTZMANN*temperature_tolerance) exit + end do + ! Get pointer to S(a,b) table - sab => sab_tables(i_sab) + associate (sab => sab_tables(i_sab) % data(i_temp)) - ! Get index and interpolation factor for inelastic grid - if (E < sab % inelastic_e_in(1)) then - i_grid = 1 - f = ZERO - else - i_grid = binary_search(sab % inelastic_e_in, sab % n_inelastic_e_in, E) - f = (E - sab%inelastic_e_in(i_grid)) / & - (sab%inelastic_e_in(i_grid+1) - sab%inelastic_e_in(i_grid)) - end if + ! Get index and interpolation factor for inelastic grid + if (E < sab % inelastic_e_in(1)) then + i_grid = 1 + f = ZERO + else + i_grid = binary_search(sab % inelastic_e_in, sab % n_inelastic_e_in, E) + f = (E - sab%inelastic_e_in(i_grid)) / & + (sab%inelastic_e_in(i_grid+1) - sab%inelastic_e_in(i_grid)) + end if - ! Calculate S(a,b) inelastic scattering cross section - inelastic = (ONE - f) * sab % inelastic_sigma(i_grid) + & - f * sab % inelastic_sigma(i_grid + 1) + ! Calculate S(a,b) inelastic scattering cross section + inelastic = (ONE - f) * sab % inelastic_sigma(i_grid) + & + f * sab % inelastic_sigma(i_grid + 1) - ! Check for elastic data - if (E < sab % threshold_elastic) then - ! Determine whether elastic scattering is given in the coherent or - ! incoherent approximation. For coherent, the cross section is - ! represented as P/E whereas for incoherent, it is simply P + ! Check for elastic data + if (E < sab % threshold_elastic) then + ! Determine whether elastic scattering is given in the coherent or + ! incoherent approximation. For coherent, the cross section is + ! represented as P/E whereas for incoherent, it is simply P - if (sab % elastic_mode == SAB_ELASTIC_EXACT) then - if (E < sab % elastic_e_in(1)) then - ! If energy is below that of the lowest Bragg peak, the elastic - ! cross section will be zero - elastic = ZERO + if (sab % elastic_mode == SAB_ELASTIC_EXACT) then + if (E < sab % elastic_e_in(1)) then + ! If energy is below that of the lowest Bragg peak, the elastic + ! cross section will be zero + elastic = ZERO + else + i_grid = binary_search(sab % elastic_e_in, & + sab % n_elastic_e_in, E) + elastic = sab % elastic_P(i_grid) / E + end if else - i_grid = binary_search(sab % elastic_e_in, & - sab % n_elastic_e_in, E) - elastic = sab % elastic_P(i_grid) / E + ! Determine index on elastic energy grid + if (E < sab % elastic_e_in(1)) then + i_grid = 1 + else + i_grid = binary_search(sab % elastic_e_in, & + sab % n_elastic_e_in, E) + end if + + ! Get interpolation factor for elastic grid + f = (E - sab%elastic_e_in(i_grid))/(sab%elastic_e_in(i_grid+1) - & + sab%elastic_e_in(i_grid)) + + ! Calculate S(a,b) elastic scattering cross section + elastic = (ONE - f) * sab % elastic_P(i_grid) + & + f * sab % elastic_P(i_grid + 1) end if else - ! Determine index on elastic energy grid - if (E < sab % elastic_e_in(1)) then - i_grid = 1 - else - i_grid = binary_search(sab % elastic_e_in, & - sab % n_elastic_e_in, E) - end if - - ! Get interpolation factor for elastic grid - f = (E - sab%elastic_e_in(i_grid))/(sab%elastic_e_in(i_grid+1) - & - sab%elastic_e_in(i_grid)) - - ! Calculate S(a,b) elastic scattering cross section - elastic = (ONE - f) * sab % elastic_P(i_grid) + & - f * sab % elastic_P(i_grid + 1) + ! No elastic data + elastic = ZERO end if - else - ! No elastic data - elastic = ZERO - end if + end associate ! Correct total and elastic cross sections micro_xs(i_nuclide) % total = micro_xs(i_nuclide) % total - & @@ -390,6 +386,9 @@ contains ! Store S(a,b) elastic cross section for sampling later micro_xs(i_nuclide) % elastic_sab = elastic + ! Save temperature index + micro_xs(i_nuclide) % index_temp_sab = i_temp + end subroutine calculate_sab_xs !=============================================================================== @@ -397,9 +396,9 @@ contains ! from probability tables !=============================================================================== - subroutine calculate_urr_xs(i_nuclide, E) - + subroutine calculate_urr_xs(i_nuclide, i_temp, E) integer, intent(in) :: i_nuclide ! index into nuclides array + integer, intent(in) :: i_temp ! temperature index real(8), intent(in) :: E ! energy integer :: i_energy ! index for energy @@ -414,7 +413,7 @@ contains micro_xs(i_nuclide) % use_ptable = .true. - associate (nuc => nuclides(i_nuclide), urr => nuclides(i_nuclide) % urr_data) + associate (nuc => nuclides(i_nuclide), urr => nuclides(i_nuclide) % urr_data(i_temp)) ! determine energy table i_energy = 1 do @@ -433,7 +432,7 @@ contains ! random number for the same nuclide at different temperatures, therefore ! preserving correlation of temperature in probability tables. call prn_set_stream(STREAM_URR_PTABLE) - r = future_prn(int(nuc_zaid_dict % get_key(nuc % zaid), 8)) + r = future_prn(int(i_nuclide, 8)) call prn_set_stream(STREAM_TRACKING) i_low = 1 @@ -497,10 +496,10 @@ contains f = micro_xs(i_nuclide) % interp_factor ! Determine inelastic scattering cross section - associate (rxn => nuc % reactions(nuc % urr_inelastic)) - if (i_energy >= rxn % threshold) then - inelastic = (ONE - f) * rxn % sigma(i_energy - rxn%threshold + 1) + & - f * rxn % sigma(i_energy - rxn%threshold + 2) + associate (xs => nuc % reactions(nuc % urr_inelastic) % xs(i_temp)) + if (i_energy >= xs % threshold) then + inelastic = (ONE - f) * xs % value(i_energy - xs % threshold + 1) + & + f * xs % value(i_energy - xs % threshold + 2) end if end associate end if diff --git a/src/eigenvalue.F90 b/src/eigenvalue.F90 index 9befbe3c3..713bbc351 100644 --- a/src/eigenvalue.F90 +++ b/src/eigenvalue.F90 @@ -4,6 +4,7 @@ module eigenvalue use message_passing #endif + use algorithm, only: binary_search use constants, only: ZERO use error, only: fatal_error, warning use global @@ -11,7 +12,6 @@ module eigenvalue use mesh, only: count_bank_sites use mesh_header, only: RegularMesh use random_lcg, only: prn, set_particle_seed, advance_prn_seed - use search, only: binary_search use string, only: to_str implicit none diff --git a/src/endf_header.F90 b/src/endf_header.F90 index 8d8aefaa3..e9e45ab75 100644 --- a/src/endf_header.F90 +++ b/src/endf_header.F90 @@ -2,10 +2,10 @@ module endf_header use hdf5, only: HID_T, HSIZE_T + use algorithm, only: binary_search use constants, only: ZERO, HISTOGRAM, LINEAR_LINEAR, LINEAR_LOG, & LOG_LINEAR, LOG_LOG use hdf5_interface - use search, only: binary_search implicit none diff --git a/src/energy_distribution.F90 b/src/energy_distribution.F90 index c45762bb0..770da617c 100644 --- a/src/energy_distribution.F90 +++ b/src/energy_distribution.F90 @@ -2,12 +2,12 @@ module energy_distribution use hdf5 + use algorithm, only: binary_search use constants, only: ZERO, ONE, HALF, TWO, PI, HISTOGRAM, LINEAR_LINEAR use endf_header, only: Tabulated1D use hdf5_interface use math, only: maxwell_spectrum, watt_spectrum use random_lcg, only: prn - use search, only: binary_search !=============================================================================== ! ENERGYDISTRIBUTION (abstract) defines an energy distribution that is a diff --git a/src/energy_grid.F90 b/src/energy_grid.F90 index 66419f83c..47408943e 100644 --- a/src/energy_grid.F90 +++ b/src/energy_grid.F90 @@ -13,64 +13,18 @@ module energy_grid contains -!=============================================================================== -! UNIONIZED_GRID creates a unionized energy grid, for the entire problem or for -! each material, composed of the grids from each nuclide in the entire problem, -! or each material, respectively. Right now, the grid for each nuclide is added -! into a linked list one at a time with an effective insertion sort. Could be -! done with a hash for all energy points and then a quicksort at the end (what -! hash function to use?) -!=============================================================================== - - subroutine unionized_grid() - - integer :: i ! index in nuclides array - integer :: j ! index in materials array - type(ListReal) :: list - type(Nuclide), pointer :: nuc - type(Material), pointer :: mat - - call write_message("Creating unionized energy grid...", 5) - - ! add grid points for each nuclide in the material - do j = 1, n_materials - mat => materials(j) - do i = 1, mat % n_nuclides - nuc => nuclides(mat % nuclide(i)) - call add_grid_points(list, nuc % energy) - end do - - ! set size of unionized material energy grid - mat % n_grid = list % size() - - ! create allocated array from linked list - allocate(mat % e_grid(mat % n_grid)) - do i = 1, mat % n_grid - mat % e_grid(i) = list % get_item(i) - end do - - ! delete linked list and dictionary - call list % clear() - end do - - ! Set pointers to unionized energy grid for each nuclide - call grid_pointers() - - end subroutine unionized_grid - !=============================================================================== ! LOGARITHMIC_GRID determines a logarithmic mapping for energies to bounding ! indices on a nuclide energy grid !=============================================================================== subroutine logarithmic_grid() - integer :: i, j, k ! Loop indices + integer :: t ! temperature index integer :: M ! Number of equally log-spaced bins real(8) :: E_max ! Maximum energy in MeV real(8) :: E_min ! Minimum energy in MeV real(8), allocatable :: umesh(:) ! Equally log-spaced energy grid - type(Nuclide), pointer :: nuc ! Set minimum/maximum energies E_max = energy_max_neutron @@ -85,123 +39,29 @@ contains umesh(:) = [(i*log_spacing, i=0, M)] do i = 1, n_nuclides_total - ! Allocate logarithmic mapping for nuclide - nuc => nuclides(i) - allocate(nuc % grid_index(0:M)) + associate (nuc => nuclides(i)) + do t = 1, size(nuc % grid) + ! Allocate logarithmic mapping for nuclide + allocate(nuc % grid(t) % grid_index(0:M)) - ! Determine corresponding indices in nuclide grid to energies on - ! equal-logarithmic grid - j = 1 - do k = 0, M - do while (log(nuc%energy(j + 1)/E_min) <= umesh(k)) - ! Ensure that for isotopes where maxval(nuc % energy) << E_max - ! that there are no out-of-bounds issues. - if (j + 1 == nuc % n_grid) then - exit - end if - j = j + 1 + ! Determine corresponding indices in nuclide grid to energies on + ! equal-logarithmic grid + j = 1 + do k = 0, M + do while (log(nuc % grid(t) % energy(j + 1)/E_min) <= umesh(k)) + ! Ensure that for isotopes where maxval(nuc % energy) << E_max + ! that there are no out-of-bounds issues. + if (j + 1 == size(nuc % grid(t) % energy)) exit + j = j + 1 + end do + nuc % grid(t) % grid_index(k) = j + end do end do - nuc % grid_index(k) = j - end do + end associate end do deallocate(umesh) end subroutine logarithmic_grid -!=============================================================================== -! ADD_GRID_POINTS adds energy points from the 'energy' array into a linked list -! of points already stored from previous arrays. -!=============================================================================== - - subroutine add_grid_points(list, energy) - - type(ListReal) :: list - real(8), intent(in) :: energy(:) - - integer :: i ! index in energy array - integer :: n ! size of energy array - integer :: current ! current index - real(8) :: E ! actual energy value - - i = 1 - n = size(energy) - - ! Set current index to beginning of the list - current = 1 - - do while (i <= n) - E = energy(i) - - ! If we've reached the end of the grid energy list, add the remaining - ! energy points to the end - if (current > list % size()) then - ! Finish remaining energies - do while (i <= n) - call list % append(energy(i)) - i = i + 1 - end do - exit - end if - - if (E < list % get_item(current)) then - - ! Insert new energy in this position - call list % insert(current, E) - - ! Advance index in linked list and in new energy grid - i = i + 1 - current = current + 1 - - elseif (E == list % get_item(current)) then - ! Found the exact same energy, no need to store duplicates so just - ! skip and move to next index - i = i + 1 - current = current + 1 - else - current = current + 1 - end if - - end do - - end subroutine add_grid_points - -!=============================================================================== -! GRID_POINTERS creates an array of pointers (ints) for each nuclide to link -! each point on the nuclide energy grid to one on a unionized energy grid -!=============================================================================== - - subroutine grid_pointers() - - integer :: i ! loop index for nuclides - integer :: j ! loop index for nuclide energy grid - integer :: k ! loop index for materials - integer :: index_e ! index on union energy grid - real(8) :: union_energy ! energy on union grid - real(8) :: energy ! energy on nuclide grid - type(Nuclide), pointer :: nuc - type(Material), pointer :: mat - - do k = 1, n_materials - mat => materials(k) - allocate(mat % nuclide_grid_index(mat % n_nuclides, mat % n_grid)) - do i = 1, mat % n_nuclides - nuc => nuclides(mat % nuclide(i)) - - index_e = 1 - energy = nuc % energy(index_e) - - do j = 1, mat % n_grid - union_energy = mat % e_grid(j) - if (union_energy >= energy .and. index_e < nuc % n_grid) then - index_e = index_e + 1 - energy = nuc % energy(index_e) - end if - mat % nuclide_grid_index(i,j) = index_e - 1 - end do - end do - end do - - end subroutine grid_pointers - end module energy_grid diff --git a/src/geometry.F90 b/src/geometry.F90 index 6d4ca7767..d41ca1447 100644 --- a/src/geometry.F90 +++ b/src/geometry.F90 @@ -248,14 +248,15 @@ contains ! ====================================================================== ! AT LOWEST UNIVERSE, TERMINATE SEARCH - ! Set the particle material + ! Save previous material and temperature p % last_material = p % material - if (size(c % material) == 1) then - ! Only one material for this cell; assign that one to the particle. - p % material = c % material(1) - else - ! Distributed instances of this cell have different materials. - ! Determine which instance this is and assign the matching material. + p % last_sqrtkT = p % sqrtkT + + ! Get distributed offset + if (size(c % material) > 1 .or. size(c % sqrtkT) > 1) then + ! Distributed instances of this cell have different + ! materials/temperatures. Determine which instance this is for + ! assigning the matching material/temperature. distribcell_index = c % distribcell_index offset = 0 do k = 1, p % n_coord @@ -276,37 +277,20 @@ contains end if end if end do - p % material = c % material(offset + 1) end if - ! Set the particle temperature - if (size(c % sqrtkT) == 1) then - ! Only one temperature for this cell; assign that one to the particle. - p % sqrtkT = c % sqrtkT(1) + ! Save the material + if (size(c % material) > 1) then + p % material = c % material(offset + 1) else - ! Distributed instances of this cell have different temperatures. - ! Determine which instance this is and assign the matching temp. - distribcell_index = c % distribcell_index - offset = 0 - do k = 1, p % n_coord - if (cells(p % coord(k) % cell) % type == CELL_FILL) then - offset = offset + cells(p % coord(k) % cell) % & - offset(distribcell_index) - elseif (cells(p % coord(k) % cell) % type == CELL_LATTICE) then - if (lattices(p % coord(k + 1) % lattice) % obj & - % are_valid_indices([& - p % coord(k + 1) % lattice_x, & - p % coord(k + 1) % lattice_y, & - p % coord(k + 1) % lattice_z])) then - offset = offset + lattices(p % coord(k + 1) % lattice) % obj % & - offset(distribcell_index, & - p % coord(k + 1) % lattice_x, & - p % coord(k + 1) % lattice_y, & - p % coord(k + 1) % lattice_z) - end if - end if - end do + p % material = c % material(1) + end if + + ! Save the temperature + if (size(c % sqrtkT) > 1) then p % sqrtkT = c % sqrtkT(offset + 1) + else + p % sqrtkT = c % sqrtkT(1) end if elseif (c % type == CELL_FILL) then CELL_TYPE diff --git a/src/global.F90 b/src/global.F90 index c22fec25c..bea5f61a8 100644 --- a/src/global.F90 +++ b/src/global.F90 @@ -77,9 +77,6 @@ module global ! Dictionaries to look up cross sections and listings type(DictCharInt) :: nuclide_dict - ! Default xs identifier (e.g. 70c or 300K) - character(5):: default_xs - ! ============================================================================ ! CONTINUOUS-ENERGY CROSS SECTION RELATED VARIABLES @@ -102,13 +99,10 @@ module global ! What to assume for expanding natural elements integer :: default_expand = ENDF_BVII1 - ! Whether or not windowed multipole cross sections should be used. - logical :: multipole_active = .false. - - ! Total amount of nuclide ZAID and dictionary of nuclide ZAID and index -- - ! this is used when sampling unresolved resonance probability tables - integer(8) :: n_nuc_zaid_total - type(DictIntInt) :: nuc_zaid_dict + ! Default temperature and method for choosing temperatures + integer :: temperature_method = TEMPERATURE_NEAREST + real(8) :: temperature_tolerance = 10.0_8 + real(8) :: temperature_default = 293.6_8 ! ============================================================================ ! MULTI-GROUP CROSS SECTION RELATED VARIABLES @@ -433,7 +427,6 @@ module global ! Various output options logical :: output_summary = .true. - logical :: output_xs = .false. logical :: output_tallies = .true. ! ============================================================================ diff --git a/src/hdf5_interface.F90 b/src/hdf5_interface.F90 index 6d1c87d7f..136628162 100644 --- a/src/hdf5_interface.F90 +++ b/src/hdf5_interface.F90 @@ -73,6 +73,7 @@ module hdf5_interface module procedure read_attribute_integer_1D module procedure read_attribute_integer_2D module procedure read_attribute_string + module procedure read_attribute_string_1D end interface read_attribute interface write_attribute @@ -95,6 +96,8 @@ module hdf5_interface public :: close_dataset public :: get_shape public :: write_attribute_string + public :: get_groups + public :: get_datasets contains @@ -204,6 +207,82 @@ contains call h5fclose_f(file_id, hdf5_err) end subroutine file_close +!=============================================================================== +! GET_GROUPS Gets a list of all the groups in a given location. +!=============================================================================== + + subroutine get_groups(object_id, names) + integer(HID_T), intent(in) :: object_id + character(len=255), allocatable, intent(out) :: names(:) + + integer :: n_members, i, group_count, type + integer :: hdf5_err + character(len=255) :: name + + + ! Get number of members in this location + call h5gn_members_f(object_id, './', n_members, hdf5_err) + + ! Get the number of groups + group_count = 0 + do i = 0, n_members - 1 + call h5gget_obj_info_idx_f(object_id, "./", i, name, type, hdf5_err) + if (type == H5G_GROUP_F) then + group_count = group_count + 1 + end if + end do + + ! Now we can allocate the storage for the ids + allocate(names(group_count)) + group_count = 0 + do i = 0, n_members - 1 + call h5gget_obj_info_idx_f(object_id, "./", i, name, type, hdf5_err) + if (type == H5G_GROUP_F) then + group_count = group_count + 1 + names(group_count) = trim(name) + end if + end do + + end subroutine get_groups + +!=============================================================================== +! GET_DATASETS Gets a list of all the datasets in a given location. +!=============================================================================== + + subroutine get_datasets(object_id, names) + integer(HID_T), intent(in) :: object_id + character(len=255), allocatable, intent(out) :: names(:) + + integer :: n_members, i, dset_count, type + integer :: hdf5_err + character(len=255) :: name + + + ! Get number of members in this location + call h5gn_members_f(object_id, './', n_members, hdf5_err) + + ! Get the number of datasets + dset_count = 0 + do i = 0, n_members - 1 + call h5gget_obj_info_idx_f(object_id, "./", i, name, type, hdf5_err) + if (type == H5G_DATASET_F ) then + dset_count = dset_count + 1 + end if + end do + + ! Now we can allocate the storage for the ids + allocate(names(dset_count)) + dset_count = 0 + do i = 0, n_members - 1 + call h5gget_obj_info_idx_f(object_id, "./", i, name, type, hdf5_err) + if (type == H5G_DATASET_F ) then + dset_count = dset_count + 1 + names(dset_count) = trim(name) + end if + end do + + end subroutine get_datasets + !=============================================================================== ! OPEN_GROUP opens an existing HDF5 group !=============================================================================== @@ -2347,6 +2426,66 @@ contains call h5tclose_f(memtype, hdf5_err) end subroutine read_attribute_string + subroutine read_attribute_string_1D(buffer, obj_id, name) + character(*), target, allocatable, intent(inout) :: buffer(:) + integer(HID_T), intent(in) :: obj_id + character(*), intent(in) :: name + + integer :: hdf5_err + integer(HID_T) :: space_id + integer(HID_T) :: attr_id + integer(HSIZE_T) :: dims(1) + integer(HSIZE_T) :: maxdims(1) + + call h5aopen_f(obj_id, trim(name), attr_id, hdf5_err) + + if (allocated(buffer)) then + dims(:) = shape(buffer) + else + call h5aget_space_f(attr_id, space_id, hdf5_err) + call h5sget_simple_extent_dims_f(space_id, dims, maxdims, hdf5_err) + allocate(buffer(dims(1))) + call h5sclose_f(space_id, hdf5_err) + end if + + call read_attribute_string_1D_explicit(attr_id, dims, buffer) + call h5aclose_f(attr_id, hdf5_err) + end subroutine read_attribute_string_1D + + subroutine read_attribute_string_1D_explicit(attr_id, dims, buffer) + integer(HID_T), intent(in) :: attr_id + integer(HSIZE_T), intent(in) :: dims(1) + character(*), target, intent(inout) :: buffer(dims(1)) + + integer :: hdf5_err + integer(HID_T) :: filetype + integer(HID_T) :: memtype + integer(SIZE_T) :: size + integer(SIZE_T) :: n + type(c_ptr) :: f_ptr + + ! Make sure buffer is large enough + call h5aget_type_f(attr_id, filetype, hdf5_err) + call h5tget_size_f(filetype, size, hdf5_err) + if (size > len(buffer(1)) + 1) then + call fatal_error("Character buffer is not long enough to & + &read HDF5 string array.") + end if + + ! Get datatype in memory based on Fortran character + n = len(buffer(1)) + call h5tcopy_f(H5T_FORTRAN_S1, memtype, hdf5_err) + call h5tset_size_f(memtype, n, hdf5_err) + + ! Get pointer to start of string + f_ptr = c_loc(buffer(1)(1:1)) + + call h5aread_f(attr_id, memtype, f_ptr, hdf5_err) + + call h5tclose_f(filetype, hdf5_err) + call h5tclose_f(memtype, hdf5_err) + end subroutine read_attribute_string_1D_explicit + subroutine get_shape(obj_id, dims) integer(HID_T), intent(in) :: obj_id integer(HSIZE_T), intent(out) :: dims(:) diff --git a/src/initialize.F90 b/src/initialize.F90 index 99adf967f..2bcf2e01f 100644 --- a/src/initialize.F90 +++ b/src/initialize.F90 @@ -4,7 +4,7 @@ module initialize use constants use dict_header, only: DictIntInt, ElemKeyValueII use set_header, only: SetInt - use energy_grid, only: logarithmic_grid, grid_method, unionized_grid + use energy_grid, only: logarithmic_grid, grid_method use error, only: fatal_error, warning use geometry, only: neighbor_lists, count_instance, calc_offsets, & maximum_levels @@ -17,7 +17,7 @@ module initialize use material_header, only: Material use mgxs_data, only: read_mgxs, create_macro_xs use output, only: title, header, print_version, write_message, & - print_usage, write_xs_summary, print_plot + print_usage, print_plot use random_lcg, only: initialize_prng use state_point, only: load_state_point use string, only: to_str, starts_with, ends_with, str_to_int @@ -111,20 +111,8 @@ contains if (run_mode /= MODE_PLOTTING) then ! Construct information needed for nuclear data if (run_CE) then - ! Set undefined cell temperatures to match the material data. - call lookup_material_temperatures() - - ! Construct unionized or log energy grid for cross-sections - select case (grid_method) - case (GRID_NUCLIDE) - continue - case (GRID_MAT_UNION) - call time_unionize%start() - call unionized_grid() - call time_unionize%stop() - case (GRID_LOGARITHM) - call logarithmic_grid() - end select + ! Construct log energy grid for cross-sections + call logarithmic_grid() else ! Create material macroscopic data for MGXS call time_read_xs%start() @@ -158,9 +146,6 @@ contains else ! Write summary information if (output_summary) call write_summary() - - ! Write cross section information - if (output_xs) call write_xs_summary() end if end if @@ -1005,57 +990,4 @@ contains end subroutine allocate_offsets -!=============================================================================== -! LOOKUP_MATERIAL_TEMPERATURES If any cells have undefined temperatures, try to -! find their temperatures from material data. -!=============================================================================== - - subroutine lookup_material_temperatures() - integer :: i, j, k - real(8) :: min_temp - logical :: warning_given - - warning_given = .false. - do i = 1, n_cells - ! Ignore non-normal cells and cells with defined temperature. - if (cells(i) % type /= CELL_NORMAL) cycle - if (cells(i) % sqrtkT(1) /= ERROR_REAL) cycle - - ! Set the number of temperatures equal to the number of materials. - deallocate(cells(i) % sqrtkT) - allocate(cells(i) % sqrtkT(size(cells(i) % material))) - - ! Check each of the cell materials for temperature data. - do j = 1, size(cells(i) % material) - ! Arbitrarily set void regions to 0K. - if (cells(i) % material(j) == MATERIAL_VOID) then - cells(i) % sqrtkT(j) = ZERO - cycle - end if - - associate (mat => materials(cells(i) % material(j))) - ! Find the temperature of the coldest nuclide. - min_temp = nuclides(mat % nuclide(1)) % kT - do k = 2, mat % n_nuclides - ! Warn the user if the nuclides don't have identical temperatues. - if (nuclides(mat % nuclide(k)) % kT /= min_temp & - .and. .not. warning_given .and. multipole_active) then - call warning("OpenMC cannot & - &identify the temperature of at least one cell. For the & - &purposes of multipole cross section evaluations, all cells & - &with unknown temperature will be set to the coldest & - &temperature found in the nuclear data for that cell's & - &material") - warning_given = .true. - end if - min_temp = min(min_temp, nuclides(mat % nuclide(k)) % kT) - end do - - ! Set the temperature for this cell instance. - cells(i) % sqrtkT(j) = sqrt(min_temp) - end associate - end do - end do - end subroutine lookup_material_temperatures - end module initialize diff --git a/src/input_xml.F90 b/src/input_xml.F90 index f9f805d27..333a8bf20 100644 --- a/src/input_xml.F90 +++ b/src/input_xml.F90 @@ -2,6 +2,7 @@ module input_xml use hdf5 + use algorithm, only: find use cmfd_input, only: configure_cmfd use constants use dict_header, only: DictIntInt, ElemKeyValueCI @@ -23,7 +24,8 @@ module input_xml use set_header, only: SetChar use stl_vector, only: VectorInt, VectorReal, VectorChar use string, only: to_lower, to_str, str_to_int, str_to_real, & - starts_with, ends_with, tokenize, split_string + starts_with, ends_with, tokenize, split_string, & + zero_padded use tally_header, only: TallyObject use tally_filter use tally_initialize, only: add_tallies @@ -359,26 +361,6 @@ contains ! Copy random number seed if specified if (check_for_node(doc, "seed")) call get_node_value(doc, "seed", seed) - ! Energy grid methods - if (check_for_node(doc, "energy_grid")) then - call get_node_value(doc, "energy_grid", temp_str) - else - temp_str = 'logarithm' - end if - select case (trim(temp_str)) - case ('nuclide') - grid_method = GRID_NUCLIDE - case ('material-union', 'union') - grid_method = GRID_MAT_UNION - if (trim(temp_str) == 'union') & - call warning('Energy grids will be unionized by material. Global& - & energy grid unionization is no longer an allowed option.') - case ('logarithm', 'logarithmic', 'log') - grid_method = GRID_LOGARITHM - case default - call fatal_error("Unknown energy grid method: " // trim(temp_str)) - end select - ! Number of bins for logarithmic grid if (check_for_node(doc, "log_grid_bins")) then call get_node_value(doc, "log_grid_bins", n_log_bins) @@ -978,14 +960,6 @@ contains trim(temp_str) == '0') output_summary = .false. end if - ! Check for cross sections option - if (check_for_node(node_output, "cross_sections")) then - call get_node_value(node_output, "cross_sections", temp_str) - temp_str = to_lower(temp_str) - if (trim(temp_str) == 'true' .or. & - trim(temp_str) == '1') output_xs = .true. - end if - ! Check for ASCII tallies output option if (check_for_node(node_output, "tallies")) then call get_node_value(node_output, "tallies", temp_str) @@ -1032,23 +1006,6 @@ contains nuclides_0K(i) % scheme) end if - ! check to make sure xs name for which method is applied is given - if (.not. check_for_node(node_scatterer, "xs_label")) then - call fatal_error("Must specify the temperature dependent name of & - &scatterer " // trim(to_str(i)) & - // " given in cross_sections.xml") - end if - call get_node_value(node_scatterer, "xs_label", & - nuclides_0K(i) % name) - - ! check to make sure 0K xs name for which method is applied is given - if (.not. check_for_node(node_scatterer, "xs_label_0K")) then - call fatal_error("Must specify the 0K name of scatterer " & - // trim(to_str(i)) // " given in cross_sections.xml") - end if - call get_node_value(node_scatterer, "xs_label_0K", & - nuclides_0K(i) % name_0K) - if (check_for_node(node_scatterer, "E_min")) then call get_node_value(node_scatterer, "E_min", & nuclides_0K(i) % E_min) @@ -1073,8 +1030,6 @@ contains nuclides_0K(i) % nuclide = trim(nuclides_0K(i) % nuclide) nuclides_0K(i) % scheme = to_lower(trim(nuclides_0K(i) % scheme)) - nuclides_0K(i) % name = trim(nuclides_0K(i) % name) - nuclides_0K(i) % name_0K = trim(nuclides_0K(i) % name_0K) end do else call fatal_error("No resonant scatterers are specified within the & @@ -1108,20 +1063,6 @@ contains end select end if - ! Check to see if windowed multipole functionality is requested - if (check_for_node(doc, "use_windowed_multipole")) then - call get_node_value(doc, "use_windowed_multipole", temp_str) - select case (to_lower(temp_str)) - case ('true', '1') - multipole_active = .true. - case ('false', '0') - multipole_active = .false. - case default - call fatal_error("Unrecognized value for in & - &settings.xml") - end select - end if - call get_node_list(doc, "volume_calc", node_vol_list) n = get_list_size(node_vol_list) allocate(volume_calcs(n)) @@ -1130,6 +1071,27 @@ contains call volume_calcs(i) % from_xml(node_vol) end do + ! Get temperature settings + if (check_for_node(doc, "temperature_default")) then + call get_node_value(doc, "temperature_default", temperature_default) + end if + if (check_for_node(doc, "temperature_method")) then + call get_node_value(doc, "temperature_method", temp_str) + select case (to_lower(temp_str)) + case ('nearest') + temperature_method = TEMPERATURE_NEAREST + case ('interpolation') + temperature_method = TEMPERATURE_INTERPOLATION + case ('multipole') + temperature_method = TEMPERATURE_MULTIPOLE + case default + call fatal_error("Unknown temperature method: " // trim(temp_str)) + end select + end if + if (check_for_node(doc, "temperature_tolerance")) then + call get_node_value(doc, "temperature_tolerance", temperature_tolerance) + end if + ! Close settings XML file call close_xmldoc(doc) @@ -2069,6 +2031,9 @@ contains integer :: i, j type(DictCharInt) :: library_dict type(Library), allocatable :: libraries(:) + type(VectorReal), allocatable :: nuc_temps(:) ! List of T to read for each nuclide + type(VectorReal), allocatable :: sab_temps(:) ! List of T to read for each S(a,b) + real(8), allocatable :: material_temps(:) if (run_CE) then call read_ce_cross_sections_xml(libraries) @@ -2086,21 +2051,27 @@ contains ! Check that 0K nuclides are listed in the cross_sections.xml file if (allocated(nuclides_0K)) then do i = 1, size(nuclides_0K) - if (.not. library_dict % has_key(to_lower(nuclides_0K(i) % name_0K))) then + if (.not. library_dict % has_key(to_lower(nuclides_0K(i) % nuclide))) then call fatal_error("Could not find resonant scatterer " & - // trim(nuclides_0K(i) % name_0K) & + // trim(nuclides_0K(i) % nuclide) & // " in cross_sections.xml file!") end if end do end if ! Parse data from materials.xml - call read_materials_xml(libraries, library_dict) + call read_materials_xml(libraries, library_dict, material_temps) + + ! Assign temperatures to cells that don't have temperatures already assigned + call assign_temperatures(material_temps) + + ! Determine desired temperatures for each nuclide and S(a,b) table + call get_temperatures(nuc_temps, sab_temps) ! Read continuous-energy cross sections if (run_CE .and. run_mode /= MODE_PLOTTING) then call time_read_xs%start() - call read_ce_cross_sections(libraries, library_dict) + call read_ce_cross_sections(libraries, library_dict, nuc_temps, sab_temps) call time_read_xs%stop() end if @@ -2111,9 +2082,10 @@ contains call library_dict % clear() end subroutine read_materials - subroutine read_materials_xml(libraries, library_dict) + subroutine read_materials_xml(libraries, library_dict, material_temps) type(Library), intent(in) :: libraries(:) type(DictCharInt), intent(inout) :: library_dict + real(8), allocatable, intent(out) :: material_temps(:) integer :: i ! loop index for materials integer :: j ! loop index for nuclides @@ -2159,22 +2131,16 @@ contains &exist!") end if - ! Initialize default cross section variable - default_xs = "" - ! Parse materials.xml file call open_xmldoc(doc, filename) - ! Copy default cross section if present - if (check_for_node(doc, "default_xs")) & - call get_node_value(doc, "default_xs", default_xs) - ! Get pointer to list of XML call get_node_list(doc, "material", node_mat_list) ! Allocate cells array n_materials = get_list_size(node_mat_list) allocate(materials(n_materials)) + allocate(material_temps(n_materials)) ! Initialize count for number of nuclides/S(a,b) tables index_nuclide = 0 @@ -2204,6 +2170,13 @@ contains call get_node_value(node_mat, "name", mat % name) end if + ! Get material default temperature + if (check_for_node(node_mat, "temperature")) then + call get_node_value(node_mat, "temperature", material_temps(i)) + else + material_temps(i) = ERROR_REAL + end if + ! ======================================================================= ! READ AND PARSE TAG @@ -2301,22 +2274,9 @@ contains // trim(to_str(mat % id))) end if - ! Check for cross section - if (.not. check_for_node(node_nuc, "xs")) then - if (default_xs == '') then - call fatal_error("No cross section specified for macroscopic data & - & in material " // trim(to_str(mat % id))) - else - name = to_lower(trim(default_xs)) - end if - end if - - ! store full name - call get_node_value(node_nuc, "name", temp_str) - if (check_for_node(node_nuc, "xs")) & - call get_node_value(node_nuc, "xs", name) - name = trim(temp_str) // "." // trim(name) - name = to_lower(name) + ! store nuclide name + call get_node_value(node_nuc, "name", name) + name = trim(name) ! save name and density to list call names % push_back(name) @@ -2345,16 +2305,6 @@ contains // trim(to_str(mat % id))) end if - ! Check for cross section - if (.not. check_for_node(node_nuc, "xs")) then - if (default_xs == '') then - call fatal_error("No cross section specified for nuclide in & - &material " // trim(to_str(mat % id))) - else - name = to_lower(trim(default_xs)) - end if - end if - ! Check enforced isotropic lab scattering if (run_CE) then if (check_for_node(node_nuc, "scattering")) then @@ -2372,11 +2322,9 @@ contains end if end if - ! store full name - call get_node_value(node_nuc, "name", temp_str) - if (check_for_node(node_nuc, "xs")) & - call get_node_value(node_nuc, "xs", name) - name = trim(temp_str) // "." // trim(name) + ! store nuclide name + call get_node_value(node_nuc, "name", name) + name = trim(name) ! save name and density to list call names % push_back(name) @@ -2424,18 +2372,6 @@ contains end if call get_node_value(node_ele, "name", name) - ! Check for cross section - if (check_for_node(node_ele, "xs")) then - call get_node_value(node_ele, "xs", temp_str) - else - if (default_xs == '') then - call fatal_error("No cross section specified for nuclide in & - &material " // trim(to_str(mat % id))) - else - temp_str = to_lower(trim(default_xs)) - end if - end if - ! Check if no atom/weight percents were specified or if both atom and ! weight percents were specified if (.not. check_for_node(node_ele, "ao") .and. & @@ -2454,7 +2390,7 @@ contains ! Expand element into naturally-occurring isotopes if (check_for_node(node_ele, "ao")) then call get_node_value(node_ele, "ao", temp_dble) - call expand_natural_element(name, temp_str, temp_dble, names, & + call expand_natural_element(name, temp_dble, names, & densities) else call fatal_error("The ability to expand a natural element based on & @@ -2581,14 +2517,11 @@ contains call get_list_item(node_sab_list, j, node_sab) ! Determine name of S(a,b) table - if (.not. check_for_node(node_sab, "name") .or. & - .not. check_for_node(node_sab, "xs")) then - call fatal_error("Need to specify and for S(a,b) & - &table.") + if (.not. check_for_node(node_sab, "name")) then + call fatal_error("Need to specify for S(a,b) table.") end if call get_node_value(node_sab, "name", name) - call get_node_value(node_sab, "xs", temp_str) - name = trim(name) // "." // trim(temp_str) + name = trim(name) mat % sab_names(j) = name ! Check that this nuclide is listed in the cross_sections.xml file @@ -4766,9 +4699,8 @@ contains ! evaluations of particular isotopes don't exist. !=============================================================================== - subroutine expand_natural_element(name, xs, density, names, densities) + subroutine expand_natural_element(name, density, names, densities) character(*), intent(in) :: name - character(*), intent(in) :: xs real(8), intent(in) :: density type(VectorChar), intent(inout) :: names type(VectorReal), intent(inout) :: densities @@ -4779,669 +4711,669 @@ contains select case (to_lower(element_name)) case ('h') - call names % push_back('H1.' // xs) + call names % push_back('H1') call densities % push_back(density * 0.999885_8) - call names % push_back('H2.' // xs) + call names % push_back('H2') call densities % push_back(density * 0.000115_8) case ('he') - call names % push_back('He3.' // xs) + call names % push_back('He3') call densities % push_back(density * 0.00000134_8) - call names % push_back('He4.' // xs) + call names % push_back('He4') call densities % push_back(density * 0.99999866_8) case ('li') - call names % push_back('Li6.' // xs) + call names % push_back('Li6') call densities % push_back(density * 0.0759_8) - call names % push_back('Li7.' // xs) + call names % push_back('Li7') call densities % push_back(density * 0.9241_8) case ('be') - call names % push_back('Be9.' // xs) + call names % push_back('Be9') call densities % push_back(density) case ('b') - call names % push_back('B10.' // xs) + call names % push_back('B10') call densities % push_back(density * 0.199_8) - call names % push_back('B11.' // xs) + call names % push_back('B11') call densities % push_back(density * 0.801_8) case ('c') ! No evaluations split up Carbon into isotopes yet - call names % push_back('C0.' // xs) + call names % push_back('C0') call densities % push_back(density) case ('n') - call names % push_back('N14.' // xs) + call names % push_back('N14') call densities % push_back(density * 0.99636_8) - call names % push_back('N15.' // xs) + call names % push_back('N15') call densities % push_back(density * 0.00364_8) case ('o') if (default_expand == JEFF_32) then - call names % push_back('O16.' // xs) + call names % push_back('O16') call densities % push_back(density * 0.99757_8) - call names % push_back('O17.' // xs) + call names % push_back('O17') call densities % push_back(density * 0.00038_8) - call names % push_back('O18.' // xs) + call names % push_back('O18') call densities % push_back(density * 0.00205_8) elseif (default_expand >= JENDL_32 .and. default_expand <= JENDL_40) then - call names % push_back('O16.' // xs) + call names % push_back('O16') call densities % push_back(density) else - call names % push_back('O16.' // xs) + call names % push_back('O16') call densities % push_back(density * 0.99962_8) - call names % push_back('O17.' // xs) + call names % push_back('O17') call densities % push_back(density * 0.00038_8) end if case ('f') - call names % push_back('F19.' // xs) + call names % push_back('F19') call densities % push_back(density) case ('ne') - call names % push_back('Ne20.' // xs) + call names % push_back('Ne20') call densities % push_back(density * 0.9048_8) - call names % push_back('Ne21.' // xs) + call names % push_back('Ne21') call densities % push_back(density * 0.0027_8) - call names % push_back('Ne22.' // xs) + call names % push_back('Ne22') call densities % push_back(density * 0.0925_8) case ('na') - call names % push_back('Na23.' // xs) + call names % push_back('Na23') call densities % push_back(density) case ('mg') - call names % push_back('Mg24.' // xs) + call names % push_back('Mg24') call densities % push_back(density * 0.7899_8) - call names % push_back('Mg25.' // xs) + call names % push_back('Mg25') call densities % push_back(density * 0.1000_8) - call names % push_back('Mg26.' // xs) + call names % push_back('Mg26') call densities % push_back(density * 0.1101_8) case ('al') - call names % push_back('Al27.' // xs) + call names % push_back('Al27') call densities % push_back(density) case ('si') - call names % push_back('Si28.' // xs) + call names % push_back('Si28') call densities % push_back(density * 0.92223_8) - call names % push_back('Si29.' // xs) + call names % push_back('Si29') call densities % push_back(density * 0.04685_8) - call names % push_back('Si30.' // xs) + call names % push_back('Si30') call densities % push_back(density * 0.03092_8) case ('p') - call names % push_back('P31.' // xs) + call names % push_back('P31') call densities % push_back(density) case ('s') - call names % push_back('S32.' // xs) + call names % push_back('S32') call densities % push_back(density * 0.9499_8) - call names % push_back('S33.' // xs) + call names % push_back('S33') call densities % push_back(density * 0.0075_8) - call names % push_back('S34.' // xs) + call names % push_back('S34') call densities % push_back(density * 0.0425_8) - call names % push_back('S36.' // xs) + call names % push_back('S36') call densities % push_back(density * 0.0001_8) case ('cl') - call names % push_back('Cl35.' // xs) + call names % push_back('Cl35') call densities % push_back(density * 0.7576_8) - call names % push_back('Cl37.' // xs) + call names % push_back('Cl37') call densities % push_back(density * 0.2424_8) case ('ar') - call names % push_back('Ar36.' // xs) + call names % push_back('Ar36') call densities % push_back(density * 0.003336_8) - call names % push_back('Ar38.' // xs) + call names % push_back('Ar38') call densities % push_back(density * 0.000629_8) - call names % push_back('Ar40.' // xs) + call names % push_back('Ar40') call densities % push_back(density * 0.996035_8) case ('k') - call names % push_back('K39.' // xs) + call names % push_back('K39') call densities % push_back(density * 0.932581_8) - call names % push_back('K40.' // xs) + call names % push_back('K40') call densities % push_back(density * 0.000117_8) - call names % push_back('K41.' // xs) + call names % push_back('K41') call densities % push_back(density * 0.067302_8) case ('ca') - call names % push_back('Ca40.' // xs) + call names % push_back('Ca40') call densities % push_back(density * 0.96941_8) - call names % push_back('Ca42.' // xs) + call names % push_back('Ca42') call densities % push_back(density * 0.00647_8) - call names % push_back('Ca43.' // xs) + call names % push_back('Ca43') call densities % push_back(density * 0.00135_8) - call names % push_back('Ca44.' // xs) + call names % push_back('Ca44') call densities % push_back(density * 0.02086_8) - call names % push_back('Ca46.' // xs) + call names % push_back('Ca46') call densities % push_back(density * 0.00004_8) - call names % push_back('Ca48.' // xs) + call names % push_back('Ca48') call densities % push_back(density * 0.00187_8) case ('sc') - call names % push_back('Sc45.' // xs) + call names % push_back('Sc45') call densities % push_back(density) case ('ti') - call names % push_back('Ti46.' // xs) + call names % push_back('Ti46') call densities % push_back(density * 0.0825_8) - call names % push_back('Ti47.' // xs) + call names % push_back('Ti47') call densities % push_back(density * 0.0744_8) - call names % push_back('Ti48.' // xs) + call names % push_back('Ti48') call densities % push_back(density * 0.7372_8) - call names % push_back('Ti49.' // xs) + call names % push_back('Ti49') call densities % push_back(density * 0.0541_8) - call names % push_back('Ti50.' // xs) + call names % push_back('Ti50') call densities % push_back(density * 0.0518_8) case ('v') if (default_expand == ENDF_BVII0 .or. default_expand == JEFF_311 & .or. default_expand == JEFF_32 .or. & (default_expand >= JENDL_32 .and. default_expand <= JENDL_33)) then - call names % push_back('V0.' // xs) + call names % push_back('V0') call densities % push_back(density) else - call names % push_back('V50.' // xs) + call names % push_back('V50') call densities % push_back(density * 0.0025_8) - call names % push_back('V51.' // xs) + call names % push_back('V51') call densities % push_back(density * 0.9975_8) end if case ('cr') - call names % push_back('Cr50.' // xs) + call names % push_back('Cr50') call densities % push_back(density * 0.04345_8) - call names % push_back('Cr52.' // xs) + call names % push_back('Cr52') call densities % push_back(density * 0.83789_8) - call names % push_back('Cr53.' // xs) + call names % push_back('Cr53') call densities % push_back(density * 0.09501_8) - call names % push_back('Cr54.' // xs) + call names % push_back('Cr54') call densities % push_back(density * 0.02365_8) case ('mn') - call names % push_back('Mn55.' // xs) + call names % push_back('Mn55') call densities % push_back(density) case ('fe') - call names % push_back('Fe54.' // xs) + call names % push_back('Fe54') call densities % push_back(density * 0.05845_8) - call names % push_back('Fe56.' // xs) + call names % push_back('Fe56') call densities % push_back(density * 0.91754_8) - call names % push_back('Fe57.' // xs) + call names % push_back('Fe57') call densities % push_back(density * 0.02119_8) - call names % push_back('Fe58.' // xs) + call names % push_back('Fe58') call densities % push_back(density * 0.00282_8) case ('co') - call names % push_back('Co59.' // xs) + call names % push_back('Co59') call densities % push_back(density) case ('ni') - call names % push_back('Ni58.' // xs) + call names % push_back('Ni58') call densities % push_back(density * 0.68077_8) - call names % push_back('Ni60.' // xs) + call names % push_back('Ni60') call densities % push_back(density * 0.26223_8) - call names % push_back('Ni61.' // xs) + call names % push_back('Ni61') call densities % push_back(density * 0.011399_8) - call names % push_back('Ni62.' // xs) + call names % push_back('Ni62') call densities % push_back(density * 0.036346_8) - call names % push_back('Ni64.' // xs) + call names % push_back('Ni64') call densities % push_back(density * 0.009255_8) case ('cu') - call names % push_back('Cu63.' // xs) + call names % push_back('Cu63') call densities % push_back(density * 0.6915_8) - call names % push_back('Cu65.' // xs) + call names % push_back('Cu65') call densities % push_back(density * 0.3085_8) case ('zn') if (default_expand == ENDF_BVII0 .or. default_expand == & JEFF_311 .or. default_expand == JEFF_312) then - call names % push_back('Zn0.' // xs) + call names % push_back('Zn0') call densities % push_back(density) else - call names % push_back('Zn64.' // xs) + call names % push_back('Zn64') call densities % push_back(density * 0.4917_8) - call names % push_back('Zn66.' // xs) + call names % push_back('Zn66') call densities % push_back(density * 0.2773_8) - call names % push_back('Zn67.' // xs) + call names % push_back('Zn67') call densities % push_back(density * 0.0404_8) - call names % push_back('Zn68.' // xs) + call names % push_back('Zn68') call densities % push_back(density * 0.1845_8) - call names % push_back('Zn70.' // xs) + call names % push_back('Zn70') call densities % push_back(density * 0.0061_8) end if case ('ga') if (default_expand == JEFF_311 .or. default_expand == JEFF_312) then - call names % push_back('Ga0.' // xs) + call names % push_back('Ga0') call densities % push_back(density) else - call names % push_back('Ha69.' // xs) + call names % push_back('Ha69') call densities % push_back(density * 0.60108_8) - call names % push_back('Ga71.' // xs) + call names % push_back('Ga71') call densities % push_back(density * 0.39892_8) end if case ('ge') - call names % push_back('Ge70.' // xs) + call names % push_back('Ge70') call densities % push_back(density * 0.2057_8) - call names % push_back('Ge72.' // xs) + call names % push_back('Ge72') call densities % push_back(density * 0.2745_8) - call names % push_back('Ge73.' // xs) + call names % push_back('Ge73') call densities % push_back(density * 0.0775_8) - call names % push_back('Ge74.' // xs) + call names % push_back('Ge74') call densities % push_back(density * 0.3650_8) - call names % push_back('Ge76.' // xs) + call names % push_back('Ge76') call densities % push_back(density * 0.0773_8) case ('as') - call names % push_back('As75.' // xs) + call names % push_back('As75') call densities % push_back(density) case ('se') - call names % push_back('Se74.' // xs) + call names % push_back('Se74') call densities % push_back(density * 0.0089_8) - call names % push_back('Se76.' // xs) + call names % push_back('Se76') call densities % push_back(density * 0.0937_8) - call names % push_back('Se77.' // xs) + call names % push_back('Se77') call densities % push_back(density * 0.0763_8) - call names % push_back('Se78.' // xs) + call names % push_back('Se78') call densities % push_back(density * 0.2377_8) - call names % push_back('Se80.' // xs) + call names % push_back('Se80') call densities % push_back(density * 0.4961_8) - call names % push_back('Se82.' // xs) + call names % push_back('Se82') call densities % push_back(density * 0.0873_8) case ('br') - call names % push_back('Br79.' // xs) + call names % push_back('Br79') call densities % push_back(density * 0.5069_8) - call names % push_back('Br81.' // xs) + call names % push_back('Br81') call densities % push_back(density * 0.4931_8) case ('kr') - call names % push_back('Kr78.' // xs) + call names % push_back('Kr78') call densities % push_back(density * 0.00355_8) - call names % push_back('Kr80.' // xs) + call names % push_back('Kr80') call densities % push_back(density * 0.02286_8) - call names % push_back('Kr82.' // xs) + call names % push_back('Kr82') call densities % push_back(density * 0.11593_8) - call names % push_back('Kr83.' // xs) + call names % push_back('Kr83') call densities % push_back(density * 0.11500_8) - call names % push_back('Kr84.' // xs) + call names % push_back('Kr84') call densities % push_back(density * 0.56987_8) - call names % push_back('Kr86.' // xs) + call names % push_back('Kr86') call densities % push_back(density * 0.17279_8) case ('rb') - call names % push_back('Rb85.' // xs) + call names % push_back('Rb85') call densities % push_back(density * 0.7217_8) - call names % push_back('Rb87.' // xs) + call names % push_back('Rb87') call densities % push_back(density * 0.2783_8) case ('sr') - call names % push_back('Sr84.' // xs) + call names % push_back('Sr84') call densities % push_back(density * 0.0056_8) - call names % push_back('Sr86.' // xs) + call names % push_back('Sr86') call densities % push_back(density * 0.0986_8) - call names % push_back('Sr87.' // xs) + call names % push_back('Sr87') call densities % push_back(density * 0.0700_8) - call names % push_back('Sr88.' // xs) + call names % push_back('Sr88') call densities % push_back(density * 0.8258_8) case ('y') - call names % push_back('Y89.' // xs) + call names % push_back('Y89') call densities % push_back(density) case ('zr') - call names % push_back('Zr90.' // xs) + call names % push_back('Zr90') call densities % push_back(density * 0.5145_8) - call names % push_back('Zr91.' // xs) + call names % push_back('Zr91') call densities % push_back(density * 0.1122_8) - call names % push_back('Zr92.' // xs) + call names % push_back('Zr92') call densities % push_back(density * 0.1715_8) - call names % push_back('Zr94.' // xs) + call names % push_back('Zr94') call densities % push_back(density * 0.1738_8) - call names % push_back('Zr96.' // xs) + call names % push_back('Zr96') call densities % push_back(density * 0.0280_8) case ('nb') - call names % push_back('Nb93.' // xs) + call names % push_back('Nb93') call densities % push_back(density) case ('mo') - call names % push_back('Mo92.' // xs) + call names % push_back('Mo92') call densities % push_back(density * 0.1453_8) - call names % push_back('Mo94.' // xs) + call names % push_back('Mo94') call densities % push_back(density * 0.0915_8) - call names % push_back('Mo95.' // xs) + call names % push_back('Mo95') call densities % push_back(density * 0.1584_8) - call names % push_back('Mo96.' // xs) + call names % push_back('Mo96') call densities % push_back(density * 0.1667_8) - call names % push_back('Mo97.' // xs) + call names % push_back('Mo97') call densities % push_back(density * 0.0960_8) - call names % push_back('Mo98.' // xs) + call names % push_back('Mo98') call densities % push_back(density * 0.2439_8) - call names % push_back('Mo100.' // xs) + call names % push_back('Mo100') call densities % push_back(density * 0.0982_8) case ('ru') - call names % push_back('Ru96.' // xs) + call names % push_back('Ru96') call densities % push_back(density * 0.0554_8) - call names % push_back('Ru98.' // xs) + call names % push_back('Ru98') call densities % push_back(density * 0.0187_8) - call names % push_back('Ru99.' // xs) + call names % push_back('Ru99') call densities % push_back(density * 0.1276_8) - call names % push_back('Ru100.' // xs) + call names % push_back('Ru100') call densities % push_back(density * 0.1260_8) - call names % push_back('Ru101.' // xs) + call names % push_back('Ru101') call densities % push_back(density * 0.1706_8) - call names % push_back('Ru102.' // xs) + call names % push_back('Ru102') call densities % push_back(density * 0.3155_8) - call names % push_back('Ru104.' // xs) + call names % push_back('Ru104') call densities % push_back(density * 0.1862_8) case ('rh') - call names % push_back('Rh103.' // xs) + call names % push_back('Rh103') call densities % push_back(density) case ('pd') - call names % push_back('Pd102.' // xs) + call names % push_back('Pd102') call densities % push_back(density * 0.0102_8) - call names % push_back('Pd104.' // xs) + call names % push_back('Pd104') call densities % push_back(density * 0.1114_8) - call names % push_back('Pd105.' // xs) + call names % push_back('Pd105') call densities % push_back(density * 0.2233_8) - call names % push_back('Pd106.' // xs) + call names % push_back('Pd106') call densities % push_back(density * 0.2733_8) - call names % push_back('Pd108.' // xs) + call names % push_back('Pd108') call densities % push_back(density * 0.2646_8) - call names % push_back('Pd110.' // xs) + call names % push_back('Pd110') call densities % push_back(density * 0.1172_8) case ('ag') - call names % push_back('Ag107.' // xs) + call names % push_back('Ag107') call densities % push_back(density * 0.51839_8) - call names % push_back('Ag109.' // xs) + call names % push_back('Ag109') call densities % push_back(density * 0.48161_8) case ('cd') - call names % push_back('Cd106.' // xs) + call names % push_back('Cd106') call densities % push_back(density * 0.0125_8) - call names % push_back('Cd108.' // xs) + call names % push_back('Cd108') call densities % push_back(density * 0.0089_8) - call names % push_back('Cd110.' // xs) + call names % push_back('Cd110') call densities % push_back(density * 0.1249_8) - call names % push_back('Cd111.' // xs) + call names % push_back('Cd111') call densities % push_back(density * 0.1280_8) - call names % push_back('Cd112.' // xs) + call names % push_back('Cd112') call densities % push_back(density * 0.2413_8) - call names % push_back('Cd113.' // xs) + call names % push_back('Cd113') call densities % push_back(density * 0.1222_8) - call names % push_back('Cd114.' // xs) + call names % push_back('Cd114') call densities % push_back(density * 0.2873_8) - call names % push_back('Cd116.' // xs) + call names % push_back('Cd116') call densities % push_back(density * 0.0749_8) case ('in') - call names % push_back('In113.' // xs) + call names % push_back('In113') call densities % push_back(density * 0.0429_8) - call names % push_back('In115.' // xs) + call names % push_back('In115') call densities % push_back(density * 0.9571_8) case ('sn') - call names % push_back('Sn112.' // xs) + call names % push_back('Sn112') call densities % push_back(density * 0.0097_8) - call names % push_back('Sn114.' // xs) + call names % push_back('Sn114') call densities % push_back(density * 0.0066_8) - call names % push_back('Sn115.' // xs) + call names % push_back('Sn115') call densities % push_back(density * 0.0034_8) - call names % push_back('Sn116.' // xs) + call names % push_back('Sn116') call densities % push_back(density * 0.1454_8) - call names % push_back('Sn117.' // xs) + call names % push_back('Sn117') call densities % push_back(density * 0.0768_8) - call names % push_back('Sn118.' // xs) + call names % push_back('Sn118') call densities % push_back(density * 0.2422_8) - call names % push_back('Sn119.' // xs) + call names % push_back('Sn119') call densities % push_back(density * 0.0859_8) - call names % push_back('Sn120.' // xs) + call names % push_back('Sn120') call densities % push_back(density * 0.3258_8) - call names % push_back('Sn122.' // xs) + call names % push_back('Sn122') call densities % push_back(density * 0.0463_8) - call names % push_back('Sn124.' // xs) + call names % push_back('Sn124') call densities % push_back(density * 0.0579_8) case ('sb') - call names % push_back('Sb121.' // xs) + call names % push_back('Sb121') call densities % push_back(density * 0.5721_8) - call names % push_back('Sb123.' // xs) + call names % push_back('Sb123') call densities % push_back(density * 0.4279_8) case ('te') - call names % push_back('Te120.' // xs) + call names % push_back('Te120') call densities % push_back(density * 0.0009_8) - call names % push_back('Te122.' // xs) + call names % push_back('Te122') call densities % push_back(density * 0.0255_8) - call names % push_back('Te123.' // xs) + call names % push_back('Te123') call densities % push_back(density * 0.0089_8) - call names % push_back('Te124.' // xs) + call names % push_back('Te124') call densities % push_back(density * 0.0474_8) - call names % push_back('Te125.' // xs) + call names % push_back('Te125') call densities % push_back(density * 0.0707_8) - call names % push_back('Te126.' // xs) + call names % push_back('Te126') call densities % push_back(density * 0.1884_8) - call names % push_back('Te128.' // xs) + call names % push_back('Te128') call densities % push_back(density * 0.3174_8) - call names % push_back('Te130.' // xs) + call names % push_back('Te130') call densities % push_back(density * 0.3408_8) case ('i') - call names % push_back('I127.' // xs) + call names % push_back('I127') call densities % push_back(density) case ('xe') - call names % push_back('Xe124.' // xs) + call names % push_back('Xe124') call densities % push_back(density * 0.000952_8) - call names % push_back('Xe126.' // xs) + call names % push_back('Xe126') call densities % push_back(density * 0.000890_8) - call names % push_back('Xe128.' // xs) + call names % push_back('Xe128') call densities % push_back(density * 0.019102_8) - call names % push_back('Xe129.' // xs) + call names % push_back('Xe129') call densities % push_back(density * 0.264006_8) - call names % push_back('Xe130.' // xs) + call names % push_back('Xe130') call densities % push_back(density * 0.040710_8) - call names % push_back('Xe131.' // xs) + call names % push_back('Xe131') call densities % push_back(density * 0.212324_8) - call names % push_back('Xe132.' // xs) + call names % push_back('Xe132') call densities % push_back(density * 0.269086_8) - call names % push_back('Xe134.' // xs) + call names % push_back('Xe134') call densities % push_back(density * 0.104357_8) - call names % push_back('Xe136.' // xs) + call names % push_back('Xe136') call densities % push_back(density * 0.088573_8) case ('cs') - call names % push_back('Cs133.' // xs) + call names % push_back('Cs133') call densities % push_back(density) case ('ba') - call names % push_back('Ba130.' // xs) + call names % push_back('Ba130') call densities % push_back(density * 0.00106_8) - call names % push_back('Ba132.' // xs) + call names % push_back('Ba132') call densities % push_back(density * 0.00101_8) - call names % push_back('Ba134.' // xs) + call names % push_back('Ba134') call densities % push_back(density * 0.02417_8) - call names % push_back('Ba135.' // xs) + call names % push_back('Ba135') call densities % push_back(density * 0.06592_8) - call names % push_back('Ba136.' // xs) + call names % push_back('Ba136') call densities % push_back(density * 0.07854_8) - call names % push_back('Ba137.' // xs) + call names % push_back('Ba137') call densities % push_back(density * 0.11232_8) - call names % push_back('Ba138.' // xs) + call names % push_back('Ba138') call densities % push_back(density * 0.71698_8) case ('la') - call names % push_back('La138.' // xs) + call names % push_back('La138') call densities % push_back(density * 0.0008881_8) - call names % push_back('La139.' // xs) + call names % push_back('La139') call densities % push_back(density * 0.9991119_8) case ('ce') - call names % push_back('Ce136.' // xs) + call names % push_back('Ce136') call densities % push_back(density * 0.00185_8) - call names % push_back('Ce138.' // xs) + call names % push_back('Ce138') call densities % push_back(density * 0.00251_8) - call names % push_back('Ce140.' // xs) + call names % push_back('Ce140') call densities % push_back(density * 0.88450_8) - call names % push_back('Ce142.' // xs) + call names % push_back('Ce142') call densities % push_back(density * 0.11114_8) case ('pr') - call names % push_back('Pr141.' // xs) + call names % push_back('Pr141') call densities % push_back(density) case ('nd') - call names % push_back('Nd142.' // xs) + call names % push_back('Nd142') call densities % push_back(density * 0.27152_8) - call names % push_back('Nd143.' // xs) + call names % push_back('Nd143') call densities % push_back(density * 0.12174_8) - call names % push_back('Nd144.' // xs) + call names % push_back('Nd144') call densities % push_back(density * 0.23798_8) - call names % push_back('Nd145.' // xs) + call names % push_back('Nd145') call densities % push_back(density * 0.08293_8) - call names % push_back('Nd146.' // xs) + call names % push_back('Nd146') call densities % push_back(density * 0.17189_8) - call names % push_back('Nd148.' // xs) + call names % push_back('Nd148') call densities % push_back(density * 0.05756_8) - call names % push_back('Nd150.' // xs) + call names % push_back('Nd150') call densities % push_back(density * 0.05638_8) case ('sm') - call names % push_back('Sm144.' // xs) + call names % push_back('Sm144') call densities % push_back(density * 0.0307_8) - call names % push_back('Sm147.' // xs) + call names % push_back('Sm147') call densities % push_back(density * 0.1499_8) - call names % push_back('Sm148.' // xs) + call names % push_back('Sm148') call densities % push_back(density * 0.1124_8) - call names % push_back('Sm149.' // xs) + call names % push_back('Sm149') call densities % push_back(density * 0.1382_8) - call names % push_back('Sm150.' // xs) + call names % push_back('Sm150') call densities % push_back(density * 0.0738_8) - call names % push_back('Sm152.' // xs) + call names % push_back('Sm152') call densities % push_back(density * 0.2675_8) - call names % push_back('Sm154.' // xs) + call names % push_back('Sm154') call densities % push_back(density * 0.2275_8) case ('eu') - call names % push_back('Eu151.' // xs) + call names % push_back('Eu151') call densities % push_back(density * 0.4781_8) - call names % push_back('Eu153.' // xs) + call names % push_back('Eu153') call densities % push_back(density * 0.5219_8) case ('gd') - call names % push_back('Gd152.' // xs) + call names % push_back('Gd152') call densities % push_back(density * 0.0020_8) - call names % push_back('Gd154.' // xs) + call names % push_back('Gd154') call densities % push_back(density * 0.0218_8) - call names % push_back('Gd155.' // xs) + call names % push_back('Gd155') call densities % push_back(density * 0.1480_8) - call names % push_back('Gd156.' // xs) + call names % push_back('Gd156') call densities % push_back(density * 0.2047_8) - call names % push_back('Gd157.' // xs) + call names % push_back('Gd157') call densities % push_back(density * 0.1565_8) - call names % push_back('Gd158.' // xs) + call names % push_back('Gd158') call densities % push_back(density * 0.2484_8) - call names % push_back('Gd160.' // xs) + call names % push_back('Gd160') call densities % push_back(density * 0.2186_8) case ('tb') - call names % push_back('Tb159.' // xs) + call names % push_back('Tb159') call densities % push_back(density) case ('dy') - call names % push_back('Dy156.' // xs) + call names % push_back('Dy156') call densities % push_back(density * 0.00056_8) - call names % push_back('Dy158.' // xs) + call names % push_back('Dy158') call densities % push_back(density * 0.00095_8) - call names % push_back('Dy160.' // xs) + call names % push_back('Dy160') call densities % push_back(density * 0.02329_8) - call names % push_back('Dy161.' // xs) + call names % push_back('Dy161') call densities % push_back(density * 0.18889_8) - call names % push_back('Dy162.' // xs) + call names % push_back('Dy162') call densities % push_back(density * 0.25475_8) - call names % push_back('Dy163.' // xs) + call names % push_back('Dy163') call densities % push_back(density * 0.24896_8) - call names % push_back('Dy164.' // xs) + call names % push_back('Dy164') call densities % push_back(density * 0.28260_8) case ('ho') - call names % push_back('Ho165.' // xs) + call names % push_back('Ho165') call densities % push_back(density) case ('er') - call names % push_back('Er162.' // xs) + call names % push_back('Er162') call densities % push_back(density * 0.00139_8) - call names % push_back('Er164.' // xs) + call names % push_back('Er164') call densities % push_back(density * 0.01601_8) - call names % push_back('Er166.' // xs) + call names % push_back('Er166') call densities % push_back(density * 0.33503_8) - call names % push_back('Er167.' // xs) + call names % push_back('Er167') call densities % push_back(density * 0.22869_8) - call names % push_back('Er168.' // xs) + call names % push_back('Er168') call densities % push_back(density * 0.26978_8) - call names % push_back('Er170.' // xs) + call names % push_back('Er170') call densities % push_back(density * 0.14910_8) case ('tm') - call names % push_back('Tm169.' // xs) + call names % push_back('Tm169') call densities % push_back(density) case ('yb') - call names % push_back('Yb168.' // xs) + call names % push_back('Yb168') call densities % push_back(density * 0.00123_8) - call names % push_back('Yb170.' // xs) + call names % push_back('Yb170') call densities % push_back(density * 0.02982_8) - call names % push_back('Yb171.' // xs) + call names % push_back('Yb171') call densities % push_back(density * 0.1409_8) - call names % push_back('Yb172.' // xs) + call names % push_back('Yb172') call densities % push_back(density * 0.2168_8) - call names % push_back('Yb173.' // xs) + call names % push_back('Yb173') call densities % push_back(density * 0.16103_8) - call names % push_back('Yb174.' // xs) + call names % push_back('Yb174') call densities % push_back(density * 0.32026_8) - call names % push_back('Yb176.' // xs) + call names % push_back('Yb176') call densities % push_back(density * 0.12996_8) case ('lu') - call names % push_back('Lu175.' // xs) + call names % push_back('Lu175') call densities % push_back(density * 0.97401_8) - call names % push_back('Lu176.' // xs) + call names % push_back('Lu176') call densities % push_back(density * 0.02599_8) case ('hf') - call names % push_back('Hf174.' // xs) + call names % push_back('Hf174') call densities % push_back(density * 0.0016_8) - call names % push_back('Hf176.' // xs) + call names % push_back('Hf176') call densities % push_back(density * 0.0526_8) - call names % push_back('Hf177.' // xs) + call names % push_back('Hf177') call densities % push_back(density * 0.1860_8) - call names % push_back('Hf178.' // xs) + call names % push_back('Hf178') call densities % push_back(density * 0.2728_8) - call names % push_back('Hf179.' // xs) + call names % push_back('Hf179') call densities % push_back(density * 0.1362_8) - call names % push_back('Hf180.' // xs) + call names % push_back('Hf180') call densities % push_back(density * 0.3508_8) case ('ta') if (default_expand == ENDF_BVII0 .or. & (default_expand >= JEFF_311 .and. default_expand <= JEFF_312) .or. & (default_expand >= JENDL_32 .and. default_expand <= JENDL_40)) then - call names % push_back('Ta181.' // xs) + call names % push_back('Ta181') call densities % push_back(density) else - call names % push_back('Ta180.' // xs) + call names % push_back('Ta180') call densities % push_back(density * 0.0001201_8) - call names % push_back('Ta181.' // xs) + call names % push_back('Ta181') call densities % push_back(density * 0.9998799_8) end if @@ -5450,138 +5382,138 @@ contains .or. default_expand == JEFF_312 .or. & (default_expand >= JENDL_32 .and. default_expand <= JENDL_33)) then ! Combine W-180 with W-182 - call names % push_back('W182.' // xs) + call names % push_back('W182') call densities % push_back(density * 0.2662_8) - call names % push_back('W183.' // xs) + call names % push_back('W183') call densities % push_back(density * 0.1431_8) - call names % push_back('W184.' // xs) + call names % push_back('W184') call densities % push_back(density * 0.3064_8) - call names % push_back('W186.' // xs) + call names % push_back('W186') call densities % push_back(density * 0.2843_8) else - call names % push_back('W180.' // xs) + call names % push_back('W180') call densities % push_back(density * 0.0012_8) - call names % push_back('W182.' // xs) + call names % push_back('W182') call densities % push_back(density * 0.2650_8) - call names % push_back('W183.' // xs) + call names % push_back('W183') call densities % push_back(density * 0.1431_8) - call names % push_back('W184.' // xs) + call names % push_back('W184') call densities % push_back(density * 0.3064_8) - call names % push_back('W186.' // xs) + call names % push_back('W186') call densities % push_back(density * 0.2843_8) end if case ('re') - call names % push_back('Re185.' // xs) + call names % push_back('Re185') call densities % push_back(density * 0.3740_8) - call names % push_back('Re187.' // xs) + call names % push_back('Re187') call densities % push_back(density * 0.6260_8) case ('os') if (default_expand == JEFF_311 .or. default_expand == JEFF_312) then - call names % push_back('Os0.' // xs) + call names % push_back('Os0') call densities % push_back(density) else - call names % push_back('Os184.' // xs) + call names % push_back('Os184') call densities % push_back(density * 0.0002_8) - call names % push_back('Os186.' // xs) + call names % push_back('Os186') call densities % push_back(density * 0.0159_8) - call names % push_back('Os187.' // xs) + call names % push_back('Os187') call densities % push_back(density * 0.0196_8) - call names % push_back('Os188.' // xs) + call names % push_back('Os188') call densities % push_back(density * 0.1324_8) - call names % push_back('Os189.' // xs) + call names % push_back('Os189') call densities % push_back(density * 0.1615_8) - call names % push_back('Os190.' // xs) + call names % push_back('Os190') call densities % push_back(density * 0.2626_8) - call names % push_back('Os192.' // xs) + call names % push_back('Os192') call densities % push_back(density * 0.4078_8) end if case ('ir') - call names % push_back('Ir191.' // xs) + call names % push_back('Ir191') call densities % push_back(density * 0.373_8) - call names % push_back('Ir193.' // xs) + call names % push_back('Ir193') call densities % push_back(density * 0.627_8) case ('pt') if (default_expand == JEFF_311 .or. default_expand == JEFF_312) then - call names % push_back('Pt0.' // xs) + call names % push_back('Pt0') call densities % push_back(density) else - call names % push_back('Pt190.' // xs) + call names % push_back('Pt190') call densities % push_back(density * 0.00012_8) - call names % push_back('Pt192.' // xs) + call names % push_back('Pt192') call densities % push_back(density * 0.00782_8) - call names % push_back('Pt194.' // xs) + call names % push_back('Pt194') call densities % push_back(density * 0.3286_8) - call names % push_back('Pt195.' // xs) + call names % push_back('Pt195') call densities % push_back(density * 0.3378_8) - call names % push_back('Pt196.' // xs) + call names % push_back('Pt196') call densities % push_back(density * 0.2521_8) - call names % push_back('Pt198.' // xs) + call names % push_back('Pt198') call densities % push_back(density * 0.07356_8) end if case ('au') - call names % push_back('Au197.' // xs) + call names % push_back('Au197') call densities % push_back(density) case ('hg') - call names % push_back('Hg196.' // xs) + call names % push_back('Hg196') call densities % push_back(density * 0.0015_8) - call names % push_back('Hg198.' // xs) + call names % push_back('Hg198') call densities % push_back(density * 0.0997_8) - call names % push_back('Hg199.' // xs) + call names % push_back('Hg199') call densities % push_back(density * 0.1687_8) - call names % push_back('Hg200.' // xs) + call names % push_back('Hg200') call densities % push_back(density * 0.2310_8) - call names % push_back('Hg201.' // xs) + call names % push_back('Hg201') call densities % push_back(density * 0.1318_8) - call names % push_back('Hg202.' // xs) + call names % push_back('Hg202') call densities % push_back(density * 0.2986_8) - call names % push_back('Hg204.' // xs) + call names % push_back('Hg204') call densities % push_back(density * 0.0687_8) case ('tl') if (default_expand == JEFF_311 .or. default_expand == JEFF_312) then - call names % push_back('Tl0.' // xs) + call names % push_back('Tl0') call densities % push_back(density) else - call names % push_back('Tl203.' // xs) + call names % push_back('Tl203') call densities % push_back(density * 0.2952_8) - call names % push_back('Tl205.' // xs) + call names % push_back('Tl205') call densities % push_back(density * 0.7048_8) end if case ('pb') - call names % push_back('Pb204.' // xs) + call names % push_back('Pb204') call densities % push_back(density * 0.014_8) - call names % push_back('Pb206.' // xs) + call names % push_back('Pb206') call densities % push_back(density * 0.241_8) - call names % push_back('Pb207.' // xs) + call names % push_back('Pb207') call densities % push_back(density * 0.221_8) - call names % push_back('Pb208.' // xs) + call names % push_back('Pb208') call densities % push_back(density * 0.524_8) case ('bi') - call names % push_back('Bi209.' // xs) + call names % push_back('Bi209') call densities % push_back(density) case ('th') - call names % push_back('Th232.' // xs) + call names % push_back('Th232') call densities % push_back(density) case ('pa') - call names % push_back('Pa231.' // xs) + call names % push_back('Pa231') call densities % push_back(density) case ('u') - call names % push_back('U234.' // xs) + call names % push_back('U234') call densities % push_back(density * 0.000054_8) - call names % push_back('U235.' // xs) + call names % push_back('U235') call densities % push_back(density * 0.007204_8) - call names % push_back('U238.' // xs) + call names % push_back('U238') call densities % push_back(density * 0.992742_8) case default @@ -5766,10 +5698,10 @@ contains ASSIGN_SAB: do k = 1, size(mat % i_sab_tables) ! In order to know which nuclide the S(a,b) table applies to, we need ! to search through the list of nuclides for one which has a matching - ! zaid + ! name associate (sab => sab_tables(mat % i_sab_tables(k))) FIND_NUCLIDE: do j = 1, size(mat % nuclide) - if (any(sab % zaid == nuclides(mat % nuclide(j)) % zaid)) then + if (any(sab % nuclides == nuclides(mat % nuclide(j)) % name)) then mat % i_sab_nuclides(k) = j exit FIND_NUCLIDE end if @@ -5821,16 +5753,16 @@ contains end do end subroutine assign_sab_tables - subroutine read_ce_cross_sections(libraries, library_dict) + subroutine read_ce_cross_sections(libraries, library_dict, nuc_temps, sab_temps) type(Library), intent(in) :: libraries(:) type(DictCharInt), intent(inout) :: library_dict + type(VectorReal), intent(in) :: nuc_temps(:) + type(VectorReal), intent(in) :: sab_temps(:) integer :: i, j integer :: i_library integer :: i_nuclide integer :: i_sab - integer :: index_nuc_zaid ! index in nuclide ZAID - integer :: zaid ! ZAID of nuclide integer(HID_T) :: file_id integer(HID_T) :: group_id logical :: mp_found ! if windowed multipole libraries were found @@ -5843,8 +5775,6 @@ contains allocate(micro_xs(n_nuclides_total)) !$omp end parallel - index_nuc_zaid = 0 - ! Read cross sections do i = 1, size(materials) do j = 1, size(materials(i) % names) @@ -5860,7 +5790,8 @@ contains ! Read nuclide data from HDF5 file_id = file_open(libraries(i_library) % path, 'r') group_id = open_group(file_id, name) - call nuclides(i_nuclide) % from_hdf5(group_id) + call nuclides(i_nuclide) % from_hdf5(group_id, nuc_temps(i_nuclide), & + temperature_method, temperature_tolerance) call close_group(group_id) call file_close(file_id) @@ -5870,23 +5801,19 @@ contains ! Determine if minimum/maximum energy for this nuclide is greater/less ! than the previous - energy_min_neutron = max(energy_min_neutron, nuclides(i_nuclide) % energy(1)) - energy_max_neutron = min(energy_max_neutron, nuclides(i_nuclide) % energy(& - size(nuclides(i_nuclide) % energy))) + if (size(nuclides(i_nuclide) % grid) >= 1) then + energy_min_neutron = max(energy_min_neutron, & + nuclides(i_nuclide) % grid(1) % energy(1)) + energy_max_neutron = min(energy_max_neutron, nuclides(i_nuclide) % & + grid(1) % energy(size(nuclides(i_nuclide) % grid(1) % energy))) + end if ! Add name and alias to dictionary call already_read % add(name) - ! Construct dictionary mapping nuclide zaids to [1,N] -- used for - ! unresolved resonance probability tables - zaid = nuclides(i_nuclide) % zaid - if (.not. nuc_zaid_dict % has_key(zaid)) then - index_nuc_zaid = index_nuc_zaid + 1 - call nuc_zaid_dict % add_key(zaid, index_nuc_zaid) - end if - ! Read multipole file into the appropriate entry on the nuclides array - if (multipole_active) call read_multipole_data(i_nuclide) + if (temperature_method == TEMPERATURE_MULTIPOLE) & + call read_multipole_data(i_nuclide) end if ! Check if material is fissionable @@ -5914,7 +5841,8 @@ contains ! Read S(a,b) data from HDF5 file_id = file_open(libraries(i_library) % path, 'r') group_id = open_group(file_id, name) - call sab_tables(i_sab) % from_hdf5(group_id) + call sab_tables(i_sab) % from_hdf5(group_id, sab_temps(i_sab), & + temperature_tolerance) call close_group(group_id) call file_close(file_id) @@ -5924,14 +5852,13 @@ contains end do end do - n_nuc_zaid_total = index_nuc_zaid - ! Associate S(a,b) tables with specific nuclides call assign_sab_tables() ! Show which nuclide results in lowest energy for neutron transport do i = 1, size(nuclides) - if (nuclides(i) % energy(nuclides(i) % n_grid) == energy_max_neutron) then + if (nuclides(i) % grid(1) % energy(size(nuclides(i) % grid(1) % energy)) & + == energy_max_neutron) then call write_message("Maximum neutron transport energy: " // & trim(to_str(energy_max_neutron)) // " MeV for " // & trim(adjustl(nuclides(i) % name)), 6) @@ -5940,7 +5867,7 @@ contains end do ! If the user wants multipole, make sure we found a multipole library. - if (multipole_active) then + if (temperature_method == TEMPERATURE_MULTIPOLE) then mp_found = .false. do i = 1, size(nuclides) if (nuclides(i) % mp_present) then @@ -5956,6 +5883,107 @@ contains end subroutine read_ce_cross_sections +!=============================================================================== +! ASSIGN_TEMPERATURES If any cells have undefined temperatures, try to find +! their temperatures from material or global default temperatures +!=============================================================================== + + subroutine assign_temperatures(material_temps) + real(8), intent(in) :: material_temps(:) + + integer :: i, j + integer :: i_material + + do i = 1, n_cells + ! Ignore non-normal cells and cells with defined temperature. + if (cells(i) % material(1) == NONE) cycle + if (cells(i) % sqrtkT(1) /= ERROR_REAL) cycle + + ! Set the number of temperatures equal to the number of materials. + deallocate(cells(i) % sqrtkT) + allocate(cells(i) % sqrtkT(size(cells(i) % material))) + + ! Check each of the cell materials for temperature data. + do j = 1, size(cells(i) % material) + ! Arbitrarily set void regions to 0K. + if (cells(i) % material(j) == MATERIAL_VOID) then + cells(i) % sqrtkT(j) = ZERO + cycle + end if + + ! Use material default or global default temperature + i_material = material_dict % get_key(cells(i) % material(j)) + if (material_temps(i_material) /= ERROR_REAL) then + cells(i) % sqrtkT(j) = sqrt(K_BOLTZMANN * & + material_temps(i_material)) + else + cells(i) % sqrtkT(j) = sqrt(K_BOLTZMANN * temperature_default) + end if + end do + end do + end subroutine assign_temperatures + +!=============================================================================== +! GET_TEMPERATURES returns a list of temperatures that each nuclide/S(a,b) table +! appears at in the model. Later, this list is used to determine the actual +! temperatures to read (which may be different if interpolation is used) +!=============================================================================== + + subroutine get_temperatures(nuc_temps, sab_temps) + type(VectorReal), allocatable, intent(out) :: nuc_temps(:) + type(VectorReal), allocatable, intent(out) :: sab_temps(:) + + integer :: i, j, k + integer :: i_nuclide ! index in nuclides array + integer :: i_sab ! index in S(a,b) array + integer :: i_material + real(8) :: temperature ! temperature in Kelvin + + allocate(nuc_temps(n_nuclides_total)) + allocate(sab_temps(n_sab_tables)) + + do i = 1, size(cells) + do j = 1, size(cells(i) % material) + ! Skip any non-material cells and void materials + if (cells(i) % material(j) == NONE .or. & + cells(i) % material(j) == MATERIAL_VOID) cycle + + ! Get temperature of cell (rounding to nearest integer) + if (size(cells(i) % sqrtkT) > 1) then + temperature = cells(i) % sqrtkT(j)**2 / K_BOLTZMANN + else + temperature = cells(i) % sqrtkT(1)**2 / K_BOLTZMANN + end if + + i_material = material_dict % get_key(cells(i) % material(j)) + associate (mat => materials(i_material)) + NUC_NAMES_LOOP: do k = 1, size(mat % names) + ! Get index in nuc_temps array + i_nuclide = nuclide_dict % get_key(to_lower(mat % names(k))) + + ! Add temperature if it hasn't already been added + if (find(nuc_temps(i_nuclide), temperature) == -1) then + call nuc_temps(i_nuclide) % push_back(temperature) + end if + end do NUC_NAMES_LOOP + + if (mat % n_sab > 0) then + SAB_NAMES_LOOP: do k = 1, size(mat % sab_names) + ! Get index in nuc_temps array + i_sab = sab_dict % get_key(to_lower(mat % sab_names(k))) + + ! Add temperature if it hasn't already been added + if (find(sab_temps(i_sab), temperature) == -1) then + call sab_temps(i_sab) % push_back(temperature) + end if + end do SAB_NAMES_LOOP + end if + end associate + end do + end do + + end subroutine get_temperatures + !=============================================================================== ! READ_0K_ELASTIC_SCATTERING !=============================================================================== @@ -5972,18 +6000,20 @@ contains real(8) :: xs_cdf_sum character(MAX_WORD_LEN) :: name type(Nuclide) :: resonant_nuc + type(VectorReal) :: temperature + + call temperature % push_back(ZERO) do i = 1, size(nuclides_0K) - if (nuc % name == nuclides_0K(i) % name) then + if (nuc % name == nuclides_0K(i) % nuclide) then ! Copy basic information from settings.xml nuc % resonant = .true. - nuc % name_0K = trim(nuclides_0K(i) % name_0K) nuc % scheme = trim(nuclides_0K(i) % scheme) nuc % E_min = nuclides_0K(i) % E_min nuc % E_max = nuclides_0K(i) % E_max ! Get index in libraries array - name = nuc % name_0K + name = nuc % name i_library = library_dict % get_key(to_lower(name)) call write_message('Reading ' // trim(name) // ' 0K data from ' // & @@ -5992,13 +6022,14 @@ contains ! Read nuclide data from HDF5 file_id = file_open(libraries(i_library) % path, 'r') group_id = open_group(file_id, name) - call resonant_nuc % from_hdf5(group_id) + call resonant_nuc % from_hdf5(group_id, temperature, & + TEMPERATURE_NEAREST, 1000.0_8) call close_group(group_id) call file_close(file_id) ! Copy 0K energy grid and elastic scattering cross section - call move_alloc(TO=nuc % energy_0K, FROM=resonant_nuc % energy) - call move_alloc(TO=nuc % elastic_0K, FROM=resonant_nuc % elastic) + call move_alloc(TO=nuc % energy_0K, FROM=resonant_nuc % grid(1) % energy) + call move_alloc(TO=nuc % elastic_0K, FROM=resonant_nuc % sum_xs(1) % elastic) nuc % n_grid_0K = size(nuc % energy_0K) ! Build CDF for 0K elastic scattering @@ -6033,18 +6064,22 @@ contains integer, intent(in) :: i_table ! index in nuclides/sab_tables - integer :: i logical :: file_exists ! Does multipole library exist? character(7) :: readable ! Is multipole library readable? - character(6) :: zaid_string ! String of the ZAID - character(MAX_FILE_LEN+9) :: filename ! Path to multipole xs library + character(MAX_FILE_LEN) :: filename ! Path to multipole xs library ! For the time being, and I know this is a bit hacky, we just assume - ! that the file will be zaid.h5. + ! that the file will be ZZZAAAmM.h5. associate (nuc => nuclides(i_table)) - write(zaid_string, '(I6.6)') nuc % zaid - filename = trim(path_multipole) // zaid_string // ".h5" + if (nuc % metastable > 0) then + filename = trim(path_multipole) // trim(zero_padded(nuc % Z, 3)) // & + trim(zero_padded(nuc % A, 3)) // 'm' // & + trim(to_str(nuc % metastable)) // ".h5" + else + filename = trim(path_multipole) // trim(zero_padded(nuc % Z, 3)) // & + trim(zero_padded(nuc % A, 3)) // ".h5" + end if ! Check if Multipole library exists and is readable inquire(FILE=filename, EXIST=file_exists, READ=readable) @@ -6065,16 +6100,6 @@ contains call multipole_read(filename, nuc % multipole, i_table) nuc % mp_present = .true. - ! Recreate nu-fission cross section - if (nuc % fissionable) then - do i = 1, size(nuc % energy) - nuc % nu_fission(i) = nuc % nu(nuc % energy(i), EMISSION_TOTAL) * & - nuc % fission(i) - end do - else - nuc % nu_fission(:) = ZERO - end if - end associate end subroutine read_multipole_data diff --git a/src/material_header.F90 b/src/material_header.F90 index be4c860e2..772e3a415 100644 --- a/src/material_header.F90 +++ b/src/material_header.F90 @@ -8,7 +8,7 @@ module material_header type Material integer :: id ! unique identifier - character(len=104) :: name = "" ! User-defined name + character(len=104) :: name = "" ! User-defined name integer :: n_nuclides ! number of nuclides integer, allocatable :: nuclide(:) ! index in nuclides array real(8) :: density ! total atom density in atom/b-cm diff --git a/src/mesh.F90 b/src/mesh.F90 index b6dff1471..64d61eaf9 100644 --- a/src/mesh.F90 +++ b/src/mesh.F90 @@ -1,14 +1,14 @@ module mesh - use constants - use global - use mesh_header - use search, only: binary_search - #ifdef MPI use message_passing #endif + use algorithm, only: binary_search + use constants + use global + use mesh_header + implicit none contains diff --git a/src/mgxs_data.F90 b/src/mgxs_data.F90 index 491bd8409..05d6eb5ec 100644 --- a/src/mgxs_data.F90 +++ b/src/mgxs_data.F90 @@ -89,7 +89,7 @@ contains end do ! ========================================================================== - ! READ ALL ACE CROSS SECTION TABLES + ! READ ALL MGXS CROSS SECTION TABLES ! Loop over all files MATERIAL_LOOP: do i = 1, n_materials diff --git a/src/mgxs_header.F90 b/src/mgxs_header.F90 index 06dd1e213..9409398b3 100644 --- a/src/mgxs_header.F90 +++ b/src/mgxs_header.F90 @@ -19,7 +19,6 @@ module mgxs_header type, abstract :: Mgxs character(len=104) :: name ! name of dataset, e.g. 92235.03c - integer :: zaid ! Z and A identifier, e.g. 92235 real(8) :: awr ! Atomic Weight Ratio real(8) :: kT ! temperature in MeV (k*T) @@ -29,7 +28,6 @@ module mgxs_header contains procedure(mgxs_init_file_), deferred :: init_file ! Initialize the data - procedure(mgxs_print_), deferred :: print ! Writes object info procedure(mgxs_get_xs_), deferred :: get_xs ! Get the requested xs procedure(mgxs_combine_), deferred :: combine ! initializes object ! Sample the outgoing energy from a fission event @@ -64,12 +62,6 @@ module mgxs_header integer, intent(in) :: max_order ! Maximum requested order end subroutine mgxs_init_file_ - subroutine mgxs_print_(this, unit) - import Mgxs - class(Mgxs),intent(in) :: this - integer, optional, intent(in) :: unit - end subroutine mgxs_print_ - pure function mgxs_get_xs_(this,xstype,gin,gout,uvw,mu) result(xs) import Mgxs class(Mgxs), intent(in) :: this @@ -150,7 +142,6 @@ module mgxs_header contains procedure :: init_file => mgxsiso_init_file ! Initialize Nuclidic MGXS Data - procedure :: print => mgxsiso_print ! Writes nuclide info procedure :: get_xs => mgxsiso_get_xs ! Gets Size of Data w/in Object procedure :: combine => mgxsiso_combine ! inits object procedure :: sample_fission_energy => mgxsiso_sample_fission_energy @@ -181,7 +172,6 @@ module mgxs_header contains procedure :: init_file => mgxsang_init_file ! Initialize Nuclidic MGXS Data - procedure :: print => mgxsang_print ! Writes nuclide info procedure :: get_xs => mgxsang_get_xs ! Gets Size of Data w/in Object procedure :: combine => mgxsang_combine ! inits object procedure :: sample_fission_energy => mgxsang_sample_fission_energy @@ -211,11 +201,6 @@ module mgxs_header else this % kT = ZERO end if - if (check_for_node(node_xsdata, "zaid")) then - call get_node_value(node_xsdata, "zaid", this % zaid) - else - this % zaid = 0 - end if if (check_for_node(node_xsdata, "awr")) then call get_node_value(node_xsdata, "awr", this % awr) else @@ -957,164 +942,6 @@ module mgxs_header end subroutine mgxsang_init_file -!=============================================================================== -! MGXS*_PRINT displays information about a continuous-energy neutron -! cross_section table and its reactions and secondary angle/energy distributions -!=============================================================================== - - subroutine mgxs_print(this, unit_) - class(Mgxs), intent(in) :: this - integer, intent(in) :: unit_ - - character(MAX_LINE_LEN) :: temp_str - - ! Basic nuclide information - write(unit_,*) 'MGXS Entry: ' // trim(this % name) - if (this % zaid > 0) then - write(unit_,*) ' ZAID = ' // trim(to_str(this % zaid)) - else if (this % zaid < 0) then - write(unit_,*) ' Material id = ' // trim(to_str(-this % zaid)) - end if - if (this % awr > ZERO) then - write(unit_,*) ' AWR = ' // trim(to_str(this % awr)) - end if - if (this % kT > ZERO) then - write(unit_,*) ' kT = ' // trim(to_str(this % kT)) - end if - if (this % scatt_type == ANGLE_LEGENDRE) then - temp_str = "Legendre" - write(unit_,*) ' Scattering Type = ' // trim(temp_str) - select type(this) - type is (MgxsIso) - temp_str = to_str(size(this % scatter % dist(1) % data,dim=1) - 1) - end select - write(unit_,*) ' Scattering Order = ' // trim(temp_str) - else if (this % scatt_type == ANGLE_HISTOGRAM) then - temp_str = "Histogram" - write(unit_,*) ' Scattering Type = ' // trim(temp_str) - select type(this) - type is (MgxsIso) - temp_str = to_str(size(this % scatter % dist(1) % data,dim=1)) - end select - write(unit_,*) ' Num. Distribution Bins = ' // trim(temp_str) - else if (this % scatt_type == ANGLE_TABULAR) then - temp_str = "Tabular" - write(unit_,*) ' Scattering Type = ' // trim(temp_str) - select type(this) - type is (MgxsIso) - temp_str = to_str(size(this % scatter % dist(1) % data,dim=1)) - end select - write(unit_,*) ' Num. Distribution Points = ' // trim(temp_str) - end if - write(unit_,*) ' Fissionable = ', this % fissionable - - end subroutine mgxs_print - - subroutine mgxsiso_print(this, unit) - - class(MgxsIso), intent(in) :: this - integer, optional, intent(in) :: unit - - integer :: unit_ ! unit to write to - integer :: size_total, size_scattmat, size_mgxs - integer :: gin - - ! set default unit for writing information - if (present(unit)) then - unit_ = unit - else - unit_ = OUTPUT_UNIT - end if - - ! Write Basic Nuclide Information - call mgxs_print(this, unit_) - - ! Determine size of mgxs and scattering matrices - size_scattmat = 0 - do gin = 1, size(this % scatter % energy) - size_scattmat = size_scattmat + & - 2 * size(this % scatter % energy(gin) % data) + & - size(this % scatter % dist(gin) % data) - end do - size_scattmat = size_scattmat + size(this % scatter % scattxs) - size_scattmat = size_scattmat * 8 - - size_mgxs = size(this % total) + size(this % absorption) + & - size(this % nu_fission) + size(this % k_fission) + & - size(this % fission) + size(this % chi) - size_mgxs = size_mgxs * 8 - - ! Calculate total memory - size_total = size_scattmat + size_mgxs - - ! Write memory used - write(unit_,*) ' Memory Requirements' - write(unit_,*) ' Cross sections = ' // trim(to_str(size_mgxs)) // ' bytes' - write(unit_,*) ' Scattering Matrices = ' // & - trim(to_str(size_scattmat)) // ' bytes' - write(unit_,*) ' Total = ' // trim(to_str(size_total)) // ' bytes' - - ! Blank line at end of nuclide - write(unit_,*) - - end subroutine mgxsiso_print - - subroutine mgxsang_print(this, unit) - - class(MgxsAngle), intent(in) :: this - integer, optional, intent(in) :: unit - - integer :: unit_ ! unit to write to - integer :: size_total, size_scattmat, size_mgxs - integer :: ipol, iazi, gin - - ! set default unit for writing information - if (present(unit)) then - unit_ = unit - else - unit_ = OUTPUT_UNIT - end if - - ! Write Basic Nuclide Information - call mgxs_print(this, unit_) - - write(unit_,*) ' # of Polar Angles = ' // trim(to_str(this % n_pol)) - write(unit_,*) ' # of Azimuthal Angles = ' // trim(to_str(this % n_azi)) - - ! Determine size of mgxs and scattering matrices - size_scattmat = 0 - do ipol = 1, this % n_pol - do iazi = 1, this % n_azi - do gin = 1, size(this % scatter(iazi, ipol) % obj % energy) - size_scattmat = size_scattmat + & - 2 * size(this % scatter(iazi, ipol) % obj % energy(gin) % data) + & - size(this % scatter(iazi, ipol) % obj % dist(gin) % data) - end do - size_scattmat = size_scattmat + & - size(this % scatter(iazi, ipol) % obj % scattxs) - end do - end do - size_scattmat = size_scattmat * 8 - - size_mgxs = size(this % total) + size(this % absorption) + & - size(this % nu_fission) + size(this % k_fission) + & - size(this % fission) + size(this % chi) - size_mgxs = size_mgxs * 8 - - ! Calculate total memory - size_total = size_scattmat + size_mgxs - - ! Write memory used - write(unit_,*) ' Memory Requirements' - write(unit_,*) ' Cross sections = ' // trim(to_str(size_mgxs)) // ' bytes' - write(unit_,*) ' Scattering Matrices = ' // & - trim(to_str(size_scattmat)) // ' bytes' - write(unit_,*) ' Total = ' // trim(to_str(size_total)) // ' bytes' - - ! Blank line at end of nuclide - write(unit_,*) - end subroutine mgxsang_print - !=============================================================================== ! MGXS*_GET_XS returns the requested data cross section data !=============================================================================== @@ -1319,7 +1146,6 @@ module mgxs_header else this % name = mat % name end if - this % zaid = -mat % id this % fissionable = mat % fissionable this % scatt_type = scatt_type diff --git a/src/multipole.F90 b/src/multipole.F90 index 770121b9d..a099e5047 100644 --- a/src/multipole.F90 +++ b/src/multipole.F90 @@ -28,13 +28,8 @@ contains integer(HID_T) :: group_id ! Intermediate loading components - character(len=10) :: version - integer :: NMT - integer :: i, j - integer, allocatable :: MT(:) - logical :: accumulated_fission - character(len=24) :: MT_n ! Takes the form '/nuclide/reactions/MT???' integer :: is_fissionable + character(len=10) :: version associate (nuc => nuclides(i_table)) @@ -80,111 +75,8 @@ contains call read_dataset(multipole % curvefit, group_id, "curvefit") - ! Delete ACE pointwise data - call read_dataset(nuc % n_grid, group_id, "n_grid") - - deallocate(nuc % energy) - deallocate(nuc % total) - deallocate(nuc % elastic) - deallocate(nuc % fission) - deallocate(nuc % nu_fission) - deallocate(nuc % absorption) - - allocate(nuc % energy(nuc % n_grid)) - allocate(nuc % total(nuc % n_grid)) - allocate(nuc % elastic(nuc % n_grid)) - allocate(nuc % fission(nuc % n_grid)) - allocate(nuc % nu_fission(nuc % n_grid)) - allocate(nuc % absorption(nuc % n_grid)) - - nuc % total(:) = ZERO - nuc % absorption(:) = ZERO - nuc % fission(:) = ZERO - - ! Read in new energy axis (converting eV to MeV) - call read_dataset(nuc % energy, group_id, "energy_points") - nuc % energy = nuc % energy / 1.0e6_8 - - ! Get count and list of MT tables - call read_dataset(NMT, group_id, "MT_count") - allocate(MT(NMT)) - - call read_dataset(MT, group_id, "MT_list") - call close_group(group_id) - accumulated_fission = .false. - - ! Loop over each MT entry and load it into a reaction. - do i = 1, NMT - write(MT_n, '(A, I3.3)') '/nuclide/reactions/MT', MT(i) - - group_id = open_group(file_id, MT_n) - - ! Each MT needs to be treated slightly differently. - select case (MT(i)) - case(ELASTIC) - call read_dataset(nuc % elastic, group_id, "MT_sigma") - nuc % total(:) = nuc % total + nuc % elastic - case(N_FISSION) - call read_dataset(nuc % fission, group_id, "MT_sigma") - nuc % total(:) = nuc % total + nuc % fission - nuc % absorption(:) = nuc % absorption + nuc % fission - accumulated_fission = .true. - case default - ! Search through all of our secondary reactions - do j = 1, size(nuc % reactions) - if (nuc % reactions(j) % MT == MT(i)) then - ! Match found - - ! Individual Fission components exist, so remove the combined - ! fission cross section. - if ( (MT(i) == N_F .or. MT(i) == N_NF .or. MT(i) == N_2NF & - .or. MT(i) == N_3NF) .and. accumulated_fission) then - nuc % total(:) = nuc % total - nuc % fission - nuc % absorption(:) = nuc % absorption - nuc % fission - nuc % fission(:) = ZERO - accumulated_fission = .false. - end if - - deallocate(nuc % reactions(j) % sigma) - allocate(nuc % reactions(j) % sigma(nuc % n_grid)) - - call read_dataset(nuc % reactions(j) % sigma, & - group_id, "MT_sigma") - call read_dataset(nuc % reactions(j) % Q_value, & - group_id, "Q_value") - call read_dataset(nuc % reactions(j) % threshold, & - group_id, "threshold") - nuc % reactions(j) % threshold = 1 ! TODO: reconsider implications. - nuc % reactions(j) % Q_value = nuc % reactions(j) % Q_value & - / 1.0e6_8 - - ! Accumulate total - if (MT(i) /= N_LEVEL .and. MT(i) <= N_DA) then - nuc % total(:) = nuc % total + nuc % reactions(j) % sigma - end if - - ! Accumulate absorption - if (MT(i) >= N_GAMMA .and. MT(i) <= N_DA) then - nuc % absorption(:) = nuc % absorption & - + nuc % reactions(j) % sigma - end if - - ! Accumulate fission (if needed) - if ( (MT(i) == N_F .or. MT(i) == N_NF .or. MT(i) == N_2NF & - .or. MT(i) == N_3NF) ) then - nuc % fission(:) = nuc % fission + nuc % reactions(j) % sigma - nuc % absorption(:) = nuc % absorption & - + nuc % reactions(j) % sigma - end if - end if - end do - end select - - call close_group(group_id) - end do - ! Close file call file_close(file_id) diff --git a/src/nuclide_header.F90 b/src/nuclide_header.F90 index f32a93030..1fbd691ee 100644 --- a/src/nuclide_header.F90 +++ b/src/nuclide_header.F90 @@ -7,20 +7,21 @@ module nuclide_header h5lget_name_by_idx_f, H5_INDEX_NAME_F, H5_ITER_INC_F use h5lt, only: h5ltpath_valid_f + use algorithm, only: sort, find use constants use dict_header, only: DictIntInt use endf, only: reaction_name, is_fission, is_disappearance use endf_header, only: Function1D, Polynomial, Tabulated1D use error, only: fatal_error, warning use hdf5_interface, only: read_attribute, open_group, close_group, & - open_dataset, read_dataset, close_dataset, get_shape + open_dataset, read_dataset, close_dataset, get_shape, get_datasets use list_header, only: ListInt use math, only: evaluate_legendre use multipole_header, only: MultipoleArray use product_header, only: AngleEnergyContainer use reaction_header, only: Reaction use secondary_uncorrelated, only: UncorrelatedAngleEnergy - use stl_vector, only: VectorInt + use stl_vector, only: VectorInt, VectorReal use string use urr_header, only: UrrData use xml_interface @@ -32,29 +33,37 @@ module nuclide_header ! for continuous-energy neutron transport. !=============================================================================== - type :: Nuclide - ! Nuclide meta-data - character(20) :: name ! name of nuclide, e.g. U235.71c - integer :: zaid ! Z and A identifier, e.g. 92235 - integer :: metastable ! metastable state - real(8) :: awr ! Atomic Weight Ratio - real(8) :: kT ! temperature in MeV (k*T) - - ! Fission information - logical :: fissionable = .false. ! nuclide is fissionable? - - ! Energy grid information - integer :: n_grid ! # of nuclide grid points + type EnergyGrid integer, allocatable :: grid_index(:) ! log grid mapping indices real(8), allocatable :: energy(:) ! energy values corresponding to xs + end type EnergyGrid - ! Microscopic cross sections + type SumXS real(8), allocatable :: total(:) ! total cross section real(8), allocatable :: elastic(:) ! elastic scattering real(8), allocatable :: fission(:) ! fission real(8), allocatable :: nu_fission(:) ! neutron production real(8), allocatable :: absorption(:) ! absorption (MT > 100) real(8), allocatable :: heating(:) ! heating + end type SumXS + + type :: Nuclide + ! Nuclide meta-data + character(20) :: name ! name of nuclide, e.g. U235.71c + integer :: Z ! atomic number + integer :: A ! mass number + integer :: metastable ! metastable state + real(8) :: awr ! Atomic Weight Ratio + real(8), allocatable :: kTs(:) ! temperature in MeV (k*T) + + ! Fission information + logical :: fissionable = .false. ! nuclide is fissionable? + + ! Energy grid for each temperature + type(EnergyGrid), allocatable :: grid(:) + + ! Microscopic cross sections + type(SumXS), allocatable :: sum_xs(:) ! Resonance scattering info logical :: resonant = .false. ! resonant scatterer? @@ -77,7 +86,7 @@ module nuclide_header ! Unresolved resonance data logical :: urr_present = .false. integer :: urr_inelastic - type(UrrData), pointer :: urr_data => null() + type(UrrData), allocatable :: urr_data(:) ! Multipole data logical :: mp_present = .false. @@ -94,7 +103,6 @@ module nuclide_header contains procedure :: clear => nuclide_clear - procedure :: print => nuclide_print procedure :: from_hdf5 => nuclide_from_hdf5 procedure :: nu => nuclide_nu procedure, private :: create_derived => nuclide_create_derived @@ -106,10 +114,8 @@ module nuclide_header !=============================================================================== type Nuclide0K - character(10) :: nuclide ! name of nuclide, e.g. U-238 + character(10) :: nuclide ! name of nuclide, e.g. U238 character(16) :: scheme = 'ares' ! target velocity sampling scheme - character(10) :: name ! name of nuclide, e.g. 92235.03c - character(10) :: name_0K ! name of 0K nuclide, e.g. 92235.00c real(8) :: E_min = 0.01e-6_8 ! lower cutoff energy for res scattering real(8) :: E_max = 1000.0e-6_8 ! upper cutoff energy for res scattering end type Nuclide0K @@ -133,6 +139,7 @@ module nuclide_header ! Information for S(a,b) use integer :: index_sab ! index in sab_tables (zero means no table) integer :: last_index_sab = 0 ! index in sab_tables last used by this nuclide + integer :: index_temp_sab ! temperature index for sab_tables real(8) :: elastic_sab ! microscopic elastic scattering on S(a,b) table ! Information for URR probability table use @@ -175,24 +182,27 @@ module nuclide_header subroutine nuclide_clear(this) class(Nuclide), intent(inout) :: this ! The Nuclide object to clear - if (associated(this % urr_data)) deallocate(this % urr_data) if (associated(this % multipole)) deallocate(this % multipole) end subroutine nuclide_clear - subroutine nuclide_from_hdf5(this, group_id) - class(Nuclide), intent(inout) :: this - integer(HID_T), intent(in) :: group_id + subroutine nuclide_from_hdf5(this, group_id, temperature, method, tolerance) + class(Nuclide), intent(inout) :: this + integer(HID_T), intent(in) :: group_id + type(VectorReal), intent(in) :: temperature ! list of desired temperatures + integer, intent(in) :: method + real(8), intent(in) :: tolerance integer :: i - integer :: Z - integer :: A integer :: storage_type integer :: max_corder integer :: n_links integer :: hdf5_err + integer :: i_closest + integer :: n_temperature integer(HID_T) :: urr_group, nu_group - integer(HID_T) :: energy_dset + integer(HID_T) :: energy_group, energy_dset + integer(HID_T) :: kT_group integer(HID_T) :: rxs_group integer(HID_T) :: rx_group integer(HID_T) :: total_nu @@ -201,9 +211,14 @@ module nuclide_header integer(SIZE_T) :: name_len, name_file_len integer(HSIZE_T) :: j integer(HSIZE_T) :: dims(1) - character(MAX_WORD_LEN) :: temp - type(VectorInt) :: MTs + character(MAX_WORD_LEN) :: temp_str + character(MAX_FILE_LEN), allocatable :: dset_names(:) + real(8), allocatable :: temps_available(:) ! temperatures available + real(8) :: temp_desired + real(8) :: temp_actual logical :: exists + type(VectorInt) :: MTs + type(VectorInt) :: temps_to_read ! Get name of nuclide from group name_len = len(this % name) @@ -212,29 +227,90 @@ module nuclide_header ! Get rid of leading '/' this % name = trim(this % name(2:)) - call read_attribute(Z, group_id, 'Z') - call read_attribute(A, group_id, 'A') + call read_attribute(this % Z, group_id, 'Z') + call read_attribute(this % A, group_id, 'A') call read_attribute(this % metastable, group_id, 'metastable') - this % zaid = 1000*Z + A + 400*this % metastable call read_attribute(this % awr, group_id, 'atomic_weight_ratio') - call read_attribute(this % kT, group_id, 'temperature') + kT_group = open_group(group_id, 'kTs') - ! Read energy grid - energy_dset = open_dataset(group_id, 'energy') - call get_shape(energy_dset, dims) - this % n_grid = int(dims(1), 4) - allocate(this % energy(this % n_grid)) - call read_dataset(this % energy, energy_dset) - call close_dataset(energy_dset) + ! Determine temperatures available + call get_datasets(kT_group, dset_names) + allocate(temps_available(size(dset_names))) + do i = 1, size(dset_names) + ! Read temperature value + call read_dataset(temps_available(i), kT_group, trim(dset_names(i))) + temps_available(i) = temps_available(i) / K_BOLTZMANN + end do + + select case (method) + case (TEMPERATURE_NEAREST) + ! Determine actual temperatures to read + TEMP_LOOP: do i = 1, temperature % size() + temp_desired = temperature % data(i) + i_closest = minloc(abs(temps_available - temp_desired), dim=1) + temp_actual = temps_available(i_closest) + if (abs(temp_actual - temp_desired) < tolerance) then + if (find(temps_to_read, nint(temp_actual)) == -1) then + call temps_to_read % push_back(nint(temp_actual)) + + ! Write warning for resonance scattering data if 0K is not available + if (abs(temp_actual - temp_desired) > 0 .and. temp_desired == 0) then + call warning(trim(this % name) // " does not contain 0K data & + &needed for resonance scattering options selected. Using & + &data at " // trim(to_str(nint(temp_actual))) // " K instead.") + end if + end if + else + call fatal_error("Nuclear data library does not contain cross sections & + &for " // trim(this % name) // " at or near " // & + trim(to_str(nint(temp_desired))) // " K.") + end if + end do TEMP_LOOP + + case (TEMPERATURE_INTERPOLATION) + ! TODO: Get bounding temperatures + call fatal_error("Temperature interpolation not yet implemented") + + case (TEMPERATURE_MULTIPOLE) + ! Add first available temperature + call temps_to_read % push_back(nint(temps_available(1))) + + end select + + ! Sort temperatures to read + call sort(temps_to_read) + + n_temperature = temps_to_read % size() + allocate(this % kTs(n_temperature)) + allocate(this % grid(n_temperature)) + + do i = 1, n_temperature + ! Get temperature as a string + temp_str = trim(to_str(temps_to_read % data(i))) // "K" + + ! Read exact temperature value + call read_dataset(this % kTs(i), kT_group, trim(temp_str)) + + ! Read energy grid + energy_group = open_group(group_id, 'energy') + energy_dset = open_dataset(energy_group, temp_str) + call get_shape(energy_dset, dims) + allocate(this % grid(i) % energy(int(dims(1), 4))) + call read_dataset(this % grid(i) % energy, energy_dset) + call close_dataset(energy_dset) + call close_group(energy_group) + end do + + call close_group(kT_group) ! Get MT values based on group names rxs_group = open_group(group_id, 'reactions') call h5gget_info_f(rxs_group, storage_type, n_links, max_corder, hdf5_err) do j = 0, n_links - 1 call h5lget_name_by_idx_f(rxs_group, ".", H5_INDEX_NAME_F, H5_ITER_INC_F, & - j, temp, hdf5_err, name_len) - if (starts_with(temp, "reaction_")) then - call MTs % push_back(int(str_to_int(temp(10:12)))) + j, temp_str, hdf5_err, name_len) + if (starts_with(temp_str, "reaction_")) then + call MTs % push_back(int(str_to_int(temp_str(10:12)))) end if end do @@ -243,7 +319,8 @@ module nuclide_header do i = 1, size(this % reactions) rx_group = open_group(rxs_group, 'reaction_' // trim(& zero_padded(MTs % data(i), 3))) - call this % reactions(i) % from_hdf5(rx_group) + + call this % reactions(i) % from_hdf5(rx_group, temps_to_read) call close_group(rx_group) end do call close_group(rxs_group) @@ -252,32 +329,42 @@ module nuclide_header call h5ltpath_valid_f(group_id, 'urr', .true., exists, hdf5_err) if (exists) then this % urr_present = .true. - allocate(this % urr_data) - urr_group = open_group(group_id, 'urr') - call this % urr_data % from_hdf5(urr_group) + allocate(this % urr_data(n_temperature)) + + do i = 1, n_temperature + ! Get temperature as a string + temp_str = trim(to_str(temps_to_read % data(i))) // "K" + + ! Read probability tables for i-th temperature + urr_group = open_group(group_id, 'urr/' // trim(temp_str)) + call this % urr_data(i) % from_hdf5(urr_group) + call close_group(urr_group) + + ! Check for negative values + if (any(this % urr_data(i) % prob < ZERO)) then + call warning("Negative value(s) found on probability table & + &for nuclide " // this % name // " at " // trim(temp_str)) + end if + end do ! if the inelastic competition flag indicates that the inelastic cross ! section should be determined from a normal reaction cross section, we ! need to get the index of the reaction - if (this % urr_data % inelastic_flag > 0) then - do i = 1, size(this % reactions) - if (this % reactions(i) % MT == this % urr_data % inelastic_flag) then - this % urr_inelastic = i + if (n_temperature > 0) then + if (this % urr_data(1) % inelastic_flag > 0) then + do i = 1, size(this % reactions) + if (this % reactions(i) % MT == this % urr_data(1) % inelastic_flag) then + this % urr_inelastic = i + end if + end do + + ! Abort if no corresponding inelastic reaction was found + if (this % urr_inelastic == NONE) then + call fatal_error("Could not find inelastic reaction specified on & + &unresolved resonance probability table.") end if - end do - - ! Abort if no corresponding inelastic reaction was found - if (this % urr_inelastic == NONE) then - call fatal_error("Could not find inelastic reaction specified on & - &unresolved resonance probability table.") end if end if - - ! Check for negative values - if (any(this % urr_data % prob < ZERO)) then - call warning("Negative value(s) found on probability table & - &for nuclide " // this % name) - end if end if ! Check for nu-total @@ -287,8 +374,8 @@ module nuclide_header ! Read total nu data total_nu = open_dataset(nu_group, 'yield') - call read_attribute(temp, total_nu, 'type') - select case (temp) + call read_attribute(temp_str, total_nu, 'type') + select case (temp_str) case ('Tabulated1D') allocate(Tabulated1D :: this % total_nu) case ('Polynomial') @@ -308,8 +395,8 @@ module nuclide_header ! Check to see if this is polynomial or tabulated data fer_dset = open_dataset(fer_group, 'q_prompt') - call read_attribute(temp, fer_dset, 'type') - if (temp == 'Polynomial') then + call read_attribute(temp_str, fer_dset, 'type') + if (temp_str == 'Polynomial') then ! Read the prompt Q-value allocate(Polynomial :: this % fission_q_prompt) call this % fission_q_prompt % from_hdf5(fer_dset) @@ -320,7 +407,7 @@ module nuclide_header fer_dset = open_dataset(fer_group, 'q_recoverable') call this % fission_q_recov % from_hdf5(fer_dset) call close_dataset(fer_dset) - else if (temp == 'Tabulated1D') then + else if (temp_str == 'Tabulated1D') then ! Read the prompt Q-value allocate(Tabulated1D :: this % fission_q_prompt) call this % fission_q_prompt % from_hdf5(fer_dset) @@ -345,108 +432,125 @@ module nuclide_header subroutine nuclide_create_derived(this) class(Nuclide), intent(inout) :: this - integer :: i - integer :: j - integer :: k + integer :: i, j, k + integer :: t integer :: m integer :: n + integer :: n_grid integer :: i_fission - type(ListInt) :: MTs + integer :: n_temperature + type(VectorInt) :: MTs - ! Allocate and initialize derived cross sections - allocate(this % total(this % n_grid)) - allocate(this % elastic(this % n_grid)) - allocate(this % fission(this % n_grid)) - allocate(this % nu_fission(this % n_grid)) - allocate(this % absorption(this % n_grid)) - this % total(:) = ZERO - this % elastic(:) = ZERO - this % fission(:) = ZERO - this % nu_fission(:) = ZERO - this % absorption(:) = ZERO + n_temperature = size(this % kTs) + allocate(this % sum_xs(n_temperature)) + + do i = 1, n_temperature + ! Allocate and initialize derived cross sections + n_grid = size(this % grid(i) % energy) + allocate(this % sum_xs(i) % total(n_grid)) + allocate(this % sum_xs(i) % elastic(n_grid)) + allocate(this % sum_xs(i) % fission(n_grid)) + allocate(this % sum_xs(i) % nu_fission(n_grid)) + allocate(this % sum_xs(i) % absorption(n_grid)) + this % sum_xs(i) % total(:) = ZERO + this % sum_xs(i) % elastic(:) = ZERO + this % sum_xs(i) % fission(:) = ZERO + this % sum_xs(i) % nu_fission(:) = ZERO + this % sum_xs(i) % absorption(:) = ZERO + end do i_fission = 0 do i = 1, size(this % reactions) - call MTs % append(this % reactions(i) % MT) + call MTs % push_back(this % reactions(i) % MT) call this % reaction_index % add_key(this % reactions(i) % MT, i) associate (rx => this % reactions(i)) - j = rx % threshold - n = size(rx % sigma) - ! Skip total inelastic level scattering, gas production cross sections ! (MT=200+), etc. if (rx % MT == N_LEVEL .or. rx % MT == N_NONELASTIC) cycle if (rx % MT > N_5N2P .and. rx % MT < N_P0) cycle ! Skip level cross sections if total is available - if (rx % MT >= N_P0 .and. rx % MT <= N_PC .and. MTs % contains(N_P)) cycle - if (rx % MT >= N_D0 .and. rx % MT <= N_DC .and. MTs % contains(N_D)) cycle - if (rx % MT >= N_T0 .and. rx % MT <= N_TC .and. MTs % contains(N_T)) cycle - if (rx % MT >= N_3HE0 .and. rx % MT <= N_3HEC .and. MTs % contains(N_3HE)) cycle - if (rx % MT >= N_A0 .and. rx % MT <= N_AC .and. MTs % contains(N_A)) cycle - if (rx % MT >= N_2N0 .and. rx % MT <= N_2NC .and. MTs % contains(N_2N)) cycle + if (rx % MT >= N_P0 .and. rx % MT <= N_PC .and. find(MTs, N_P) /= -1) cycle + if (rx % MT >= N_D0 .and. rx % MT <= N_DC .and. find(MTs, N_D) /= -1) cycle + if (rx % MT >= N_T0 .and. rx % MT <= N_TC .and. find(MTs, N_T) /= -1) cycle + if (rx % MT >= N_3HE0 .and. rx % MT <= N_3HEC .and. find(MTs, N_3HE) /= -1) cycle + if (rx % MT >= N_A0 .and. rx % MT <= N_AC .and. find(MTs, N_A) /= -1) cycle + if (rx % MT >= N_2N0 .and. rx % MT <= N_2NC .and. find(MTs, N_2N) /= -1) cycle - ! Copy elastic - if (rx % MT == ELASTIC) this % elastic(:) = rx % sigma + do t = 1, n_temperature + j = rx % xs(t) % threshold + n = size(rx % xs(t) % value) - ! Add contribution to total cross section - this % total(j:j+n-1) = this % total(j:j+n-1) + rx % sigma + ! Copy elastic + if (rx % MT == ELASTIC) this % sum_xs(t) % elastic(:) = rx % xs(t) % value - ! Add contribution to absorption cross section - if (is_disappearance(rx % MT)) then - this % absorption(j:j+n-1) = this % absorption(j:j+n-1) + rx % sigma - end if + ! Add contribution to total cross section + this % sum_xs(t) % total(j:j+n-1) = this % sum_xs(t) % total(j:j+n-1) + & + rx % xs(t) % value - ! Information about fission reactions - if (rx % MT == N_FISSION) then - allocate(this % index_fission(1)) - elseif (rx % MT == N_F) then - allocate(this % index_fission(PARTIAL_FISSION_MAX)) - this % has_partial_fission = .true. - end if + ! Add contribution to absorption cross section + if (is_disappearance(rx % MT)) then + this % sum_xs(t) % absorption(j:j+n-1) = this % sum_xs(t) % & + absorption(j:j+n-1) + rx % xs(t) % value + end if - ! Add contribution to fission cross section - if (is_fission(rx % MT)) then - this % fissionable = .true. - this % fission(j:j+n-1) = this % fission(j:j+n-1) + rx % sigma - - ! Also need to add fission cross sections to absorption - this % absorption(j:j+n-1) = this % absorption(j:j+n-1) + rx % sigma - - ! If total fission reaction is present, there's no need to store the - ! reaction cross-section since it was copied to this % fission - if (rx % MT == N_FISSION) deallocate(rx % sigma) - - ! Keep track of this reaction for easy searching later - i_fission = i_fission + 1 - this % index_fission(i_fission) = i - this % n_fission = this % n_fission + 1 - - ! <<<<<<<<<<<<<<<<<<<<<<<<<<<< REMOVE THIS <<<<<<<<<<<<<<<<<<<<<<<<<<< - ! Before the secondary distribution refactor, when the angle/energy - ! distribution was uncorrelated, no angle was actually sampled. With - ! the refactor, an angle is always sampled for an uncorrelated - ! distribution even when no angle distribution exists in the ACE file - ! (isotropic is assumed). To preserve the RNG stream, we explicitly - ! mark fission reactions so that we avoid the angle sampling. - do k = 1, size(rx % products) - if (rx % products(k) % particle == NEUTRON) then - do m = 1, size(rx % products(k) % distribution) - associate (aedist => rx % products(k) % distribution(m) % obj) - select type (aedist) - type is (UncorrelatedAngleEnergy) - aedist % fission = .true. - end select - end associate - end do + ! Information about fission reactions + if (t == 1) then + if (rx % MT == N_FISSION) then + allocate(this % index_fission(1)) + elseif (rx % MT == N_F) then + allocate(this % index_fission(PARTIAL_FISSION_MAX)) + this % has_partial_fission = .true. end if - end do - ! <<<<<<<<<<<<<<<<<<<<<<<<<<<< REMOVE THIS <<<<<<<<<<<<<<<<<<<<<<<<<<< - end if - end associate - end do + end if + + ! Add contribution to fission cross section + if (is_fission(rx % MT)) then + this % fissionable = .true. + this % sum_xs(t) % fission(j:j+n-1) = this % sum_xs(t) % & + fission(j:j+n-1) + rx % xs(t) % value + + ! Also need to add fission cross sections to absorption + this % sum_xs(t) % absorption(j:j+n-1) = this % sum_xs(t) % & + absorption(j:j+n-1) + rx % xs(t) % value + + ! If total fission reaction is present, there's no need to store the + ! reaction cross-section since it was copied to this % fission + if (rx % MT == N_FISSION) deallocate(rx % xs(t) % value) + + ! Keep track of this reaction for easy searching later + if (t == 1) then + i_fission = i_fission + 1 + this % index_fission(i_fission) = i + this % n_fission = this % n_fission + 1 + + ! <<<<<<<<<<<<<<<<<<<<<<<<<<<< REMOVE THIS <<<<<<<<<<<<<<<<<<<<<<<<< + ! Before the secondary distribution refactor, when the angle/energy + ! distribution was uncorrelated, no angle was actually sampled. With + ! the refactor, an angle is always sampled for an uncorrelated + ! distribution even when no angle distribution exists in the ACE file + ! (isotropic is assumed). To preserve the RNG stream, we explicitly + ! mark fission reactions so that we avoid the angle sampling. + do k = 1, size(rx % products) + if (rx % products(k) % particle == NEUTRON) then + do m = 1, size(rx % products(k) % distribution) + associate (aedist => rx % products(k) % distribution(m) % obj) + select type (aedist) + type is (UncorrelatedAngleEnergy) + aedist % fission = .true. + end select + end associate + end do + end if + end do + ! <<<<<<<<<<<<<<<<<<<<<<<<<<<< REMOVE THIS <<<<<<<<<<<<<<<<<<<<<<<<< + end if + end if ! fission + end do ! temperature + end associate ! rx + end do ! reactions ! Determine number of delayed neutron precursors if (this % fissionable) then @@ -459,17 +563,16 @@ module nuclide_header end if ! Calculate nu-fission cross section - if (this % fissionable) then - do i = 1, size(this % energy) - this % nu_fission(i) = this % nu(this % energy(i), EMISSION_TOTAL) * & - this % fission(i) - end do - else - this % nu_fission(:) = ZERO - end if - - ! Clear MTs set - call MTs % clear() + do t = 1, n_temperature + if (this % fissionable) then + do i = 1, size(this % sum_xs(t) % fission) + this % sum_xs(t) % nu_fission(i) = this % nu(this % grid(t) % energy(i), & + EMISSION_TOTAL) * this % sum_xs(t) % fission(i) + end do + else + this % sum_xs(t) % nu_fission(:) = ZERO + end if + end do end subroutine nuclide_create_derived !=============================================================================== @@ -537,86 +640,4 @@ module nuclide_header end function nuclide_nu - -!=============================================================================== -! NUCLIDE*_PRINT displays information about a continuous-energy neutron -! cross_section table and its reactions and secondary angle/energy distributions -!=============================================================================== - - subroutine nuclide_print(this, unit) - class(Nuclide), intent(in) :: this - integer, intent(in), optional :: unit - - integer :: i ! loop index over nuclides - integer :: unit_ ! unit to write to - integer :: size_xs ! memory used for cross-sections (bytes) - integer :: size_urr ! memory used for probability tables (bytes) - - ! set default unit for writing information - if (present(unit)) then - unit_ = unit - else - unit_ = OUTPUT_UNIT - end if - - ! Initialize totals - size_urr = 0 - size_xs = 0 - - ! Basic nuclide information - write(unit_,*) 'Nuclide ' // trim(this % name) - write(unit_,*) ' zaid = ' // trim(to_str(this % zaid)) - write(unit_,*) ' awr = ' // trim(to_str(this % awr)) - write(unit_,*) ' kT = ' // trim(to_str(this % kT)) - write(unit_,*) ' # of grid points = ' // trim(to_str(this % n_grid)) - write(unit_,*) ' Fissionable = ', this % fissionable - write(unit_,*) ' # of fission reactions = ' // trim(to_str(this % n_fission)) - write(unit_,*) ' # of reactions = ' // trim(to_str(size(this % reactions))) - - ! Information on each reaction - write(unit_,*) ' Reaction Q-value COM IE' - do i = 1, size(this % reactions) - associate (rxn => this % reactions(i)) - write(unit_,'(3X,A11,1X,F8.3,3X,L1,3X,I6)') & - reaction_name(rxn % MT), rxn % Q_value, rxn % scatter_in_cm, & - rxn % threshold - - ! Accumulate data size - size_xs = size_xs + (this % n_grid - rxn%threshold + 1) * 8 - end associate - end do - - ! Add memory required for summary reactions (total, absorption, fission, - ! nu-fission) - size_xs = 8 * this % n_grid * 4 - - ! Write information about URR probability tables - size_urr = 0 - if (this % urr_present) then - associate(urr => this % urr_data) - write(unit_,*) ' Unresolved resonance probability table:' - write(unit_,*) ' # of energies = ' // trim(to_str(urr % n_energy)) - write(unit_,*) ' # of probabilities = ' // trim(to_str(urr % n_prob)) - write(unit_,*) ' Interpolation = ' // trim(to_str(urr % interp)) - write(unit_,*) ' Inelastic flag = ' // trim(to_str(urr % inelastic_flag)) - write(unit_,*) ' Absorption flag = ' // trim(to_str(urr % absorption_flag)) - write(unit_,*) ' Multiply by smooth? ', urr % multiply_smooth - write(unit_,*) ' Min energy = ', trim(to_str(urr % energy(1))) - write(unit_,*) ' Max energy = ', trim(to_str(urr % energy(urr % n_energy))) - - ! Calculate memory used by probability tables and add to total - size_urr = urr % n_energy * (urr % n_prob * 6 + 1) * 8 - end associate - end if - - ! Write memory used - write(unit_,*) ' Memory Requirements' - write(unit_,*) ' Cross sections = ' // trim(to_str(size_xs)) // ' bytes' - write(unit_,*) ' Probability Tables = ' // & - trim(to_str(size_urr)) // ' bytes' - - ! Blank line at end of nuclide - write(unit_,*) - end subroutine nuclide_print - end module nuclide_header diff --git a/src/output.F90 b/src/output.F90 index 8a23eb6ad..c8aa53e85 100644 --- a/src/output.F90 +++ b/src/output.F90 @@ -330,57 +330,6 @@ contains end subroutine print_particle -!=============================================================================== -! WRITE_XS_SUMMARY writes information about each nuclide and S(a,b) table to a -! file called cross_sections.out. This file shows the list of reactions as well -! as information about their secondary angle/energy distributions, how much -! memory is consumed, thresholds, etc. -!=============================================================================== - - subroutine write_xs_summary() - - integer :: i ! loop index - integer :: unit_xs ! cross_sections.out file unit - character(MAX_FILE_LEN) :: path ! path of summary file - - ! Create filename for log file - path = trim(path_output) // "cross_sections.out" - - ! Open log file for writing - open(NEWUNIT=unit_xs, FILE=path, STATUS='replace', ACTION='write') - - if (run_CE) then - ! Write header - call header("CROSS SECTION TABLES", unit=unit_xs) - - NUCLIDE_LOOP: do i = 1, n_nuclides_total - ! Print information about nuclide - call nuclides(i) % print(unit=unit_xs) - end do NUCLIDE_LOOP - - SAB_TABLES_LOOP: do i = 1, n_sab_tables - ! Print information about S(a,b) table - call sab_tables(i) % print(unit=unit_xs) - end do SAB_TABLES_LOOP - else - ! Write header - call header("MGXS LIBRARY TABLES", unit=unit_xs) - NuclideMG_LOOP: do i = 1, n_nuclides_total - ! Print information about nuclide - call nuclides_mg(i) % obj % print(unit=unit_xs) - end do NuclideMG_LOOP - call header("MATERIAL MGXS TABLES", unit=unit_xs) - MATERIAL_LOOP: do i = 1, n_materials - ! Print information about Materials - call macro_xs(i) % obj % print(unit=unit_xs) - end do MATERIAL_LOOP - end if - - ! Close cross section summary file - close(unit_xs) - - end subroutine write_xs_summary - !=============================================================================== ! PRINT_COLUMNS displays a header listing what physical values will displayed ! below them diff --git a/src/particle_header.F90 b/src/particle_header.F90 index ee854aea3..53a503ce2 100644 --- a/src/particle_header.F90 +++ b/src/particle_header.F90 @@ -88,6 +88,7 @@ module particle_header ! Temperature of the current cell real(8) :: sqrtkT ! sqrt(k_Boltzmann * temperature) in MeV + real(8) :: last_sqrtKT ! last temperature ! Statistical data integer :: n_collision ! # of collisions @@ -129,6 +130,7 @@ contains this % cell_born = NONE this % material = NONE this % last_material = NONE + this % last_sqrtkT = NONE this % wgt = ONE this % last_wgt = ONE this % absorb_wgt = ZERO diff --git a/src/physics.F90 b/src/physics.F90 index a9f226395..23fb6f1df 100644 --- a/src/physics.F90 +++ b/src/physics.F90 @@ -1,5 +1,6 @@ module physics + use algorithm, only: binary_search use constants use cross_section, only: elastic_xs_0K use endf, only: reaction_name @@ -15,7 +16,6 @@ module physics use physics_common use random_lcg, only: prn, advance_prn_seed, prn_set_stream use reaction_header, only: Reaction - use search, only: binary_search use secondary_uncorrelated, only: UncorrelatedAngleEnergy use string, only: to_str @@ -59,7 +59,7 @@ contains ! Advance URR seed stream 'N' times after energy changes if (p % E /= p % last_E) then call prn_set_stream(STREAM_URR_PTABLE) - call advance_prn_seed(n_nuc_zaid_total) + call advance_prn_seed(size(nuclides, kind=8)) call prn_set_stream(STREAM_TRACKING) endif @@ -200,6 +200,7 @@ contains integer :: i integer :: i_grid + integer :: i_temp real(8) :: f real(8) :: prob real(8) :: cutoff @@ -219,6 +220,7 @@ contains end if ! Get grid index and interpolatoin factor and sample fission cdf + i_temp = micro_xs(i_nuclide) % index_temp i_grid = micro_xs(i_nuclide) % index_grid f = micro_xs(i_nuclide) % interp_factor cutoff = prn() * micro_xs(i_nuclide) % fission @@ -229,13 +231,13 @@ contains FISSION_REACTION_LOOP: do i = 1, nuc % n_fission i_reaction = nuc % index_fission(i) - associate (rxn => nuc % reactions(i_reaction)) + associate (xs => nuc % reactions(i_reaction) % xs(i_temp)) ! if energy is below threshold for this reaction, skip it - if (i_grid < rxn % threshold) cycle + if (i_grid < xs % threshold) cycle ! add to cumulative probability - prob = prob + ((ONE - f)*rxn%sigma(i_grid - rxn%threshold + 1) & - + f*(rxn%sigma(i_grid - rxn%threshold + 2))) + prob = prob + ((ONE - f) * xs % value(i_grid - xs % threshold + 1) & + + f*(xs % value(i_grid - xs % threshold + 2))) end associate ! Create fission bank sites if fission occurs @@ -294,6 +296,7 @@ contains integer, intent(in) :: i_nuc_mat integer :: i + integer :: i_temp integer :: i_grid real(8) :: f real(8) :: prob @@ -301,6 +304,7 @@ contains real(8) :: uvw_new(3) ! outgoing uvw for iso-in-lab scattering real(8) :: uvw_old(3) ! incoming uvw for iso-in-lab scattering real(8) :: phi ! azimuthal angle for iso-in-lab scattering + real(8) :: kT ! temperature in MeV type(Nuclide), pointer :: nuc ! copy incoming direction @@ -308,6 +312,7 @@ contains ! Get pointer to nuclide and grid index/interpolation factor nuc => nuclides(i_nuclide) + i_temp = micro_xs(i_nuclide) % index_temp i_grid = micro_xs(i_nuclide) % index_grid f = micro_xs(i_nuclide) % interp_factor @@ -328,8 +333,15 @@ contains p % E, p % coord(1) % uvw, p % mu) else + ! Determine temperature + if (temperature_method == TEMPERATURE_MULTIPOLE) then + kT = p % sqrtkT**2 + else + kT = nuc % kTs(micro_xs(i_nuclide) % index_temp) + end if + ! Perform collision physics for elastic scattering - call elastic_scatter(i_nuclide, nuc % reactions(1), & + call elastic_scatter(i_nuclide, nuc % reactions(1), kT, & p % E, p % coord(1) % uvw, p % mu, p % wgt) end if @@ -352,22 +364,24 @@ contains &// trim(nuc % name)) end if - associate (rxn => nuc % reactions(i)) + associate (rx => nuc % reactions(i)) ! Skip fission reactions - if (rxn % MT == N_FISSION .or. rxn % MT == N_F .or. rxn % MT == N_NF & - .or. rxn % MT == N_2NF .or. rxn % MT == N_3NF) cycle + if (rx % MT == N_FISSION .or. rx % MT == N_F .or. rx % MT == N_NF & + .or. rx % MT == N_2NF .or. rx % MT == N_3NF) cycle ! some materials have gas production cross sections with MT > 200 that ! are duplicates. Also MT=4 is total level inelastic scattering which ! should be skipped - if (rxn % MT >= 200 .or. rxn % MT == N_LEVEL) cycle + if (rx % MT >= 200 .or. rx % MT == N_LEVEL) cycle - ! if energy is below threshold for this reaction, skip it - if (i_grid < rxn % threshold) cycle + associate (xs => rx % xs(i_temp)) + ! if energy is below threshold for this reaction, skip it + if (i_grid < xs % threshold) cycle - ! add to cumulative probability - prob = prob + ((ONE - f)*rxn%sigma(i_grid - rxn%threshold + 1) & - + f*(rxn%sigma(i_grid - rxn%threshold + 2))) + ! add to cumulative probability + prob = prob + ((ONE - f)*xs % value(i_grid - xs % threshold + 1) & + + f*(xs % value(i_grid - xs % threshold + 2))) + end associate end associate end do @@ -401,9 +415,10 @@ contains ! target. !=============================================================================== - subroutine elastic_scatter(i_nuclide, rxn, E, uvw, mu_lab, wgt) + subroutine elastic_scatter(i_nuclide, rxn, kT, E, uvw, mu_lab, wgt) integer, intent(in) :: i_nuclide type(Reaction), intent(in) :: rxn + real(8), intent(in) :: kT ! temperature in MeV real(8), intent(inout) :: E real(8), intent(inout) :: uvw(3) real(8), intent(out) :: mu_lab @@ -430,7 +445,7 @@ contains ! Sample velocity of target nucleus if (.not. micro_xs(i_nuclide) % use_ptable) then call sample_target_velocity(nuc, v_t, E, uvw, v_n, wgt, & - & micro_xs(i_nuclide) % elastic) + micro_xs(i_nuclide) % elastic, kT) else v_t = ZERO end if @@ -494,6 +509,7 @@ contains integer :: i ! incoming energy bin integer :: j ! outgoing energy bin integer :: k ! outgoing cosine bin + integer :: i_temp ! temperature index integer :: n_energy_out ! number of outgoing energy bins real(8) :: f ! interpolation factor real(8) :: r ! used for skewed sampling & continuous @@ -502,7 +518,6 @@ contains real(8) :: mu_ijk ! outgoing cosine k for E_in(i) and E_out(j) real(8) :: mu_i1jk ! outgoing cosine k for E_in(i+1) and E_out(j) real(8) :: prob ! probability for sampling Bragg edge - type(SAlphaBeta), pointer :: sab ! Following are needed only for SAB_SECONDARY_CONT scattering integer :: l ! sampled incoming E bin (is i or i + 1) real(8) :: E_i_1, E_i_J ! endpoints on outgoing grid i @@ -514,213 +529,216 @@ contains real(8) :: frac ! interpolation factor on outgoing energy real(8) :: r1 ! RNG for outgoing energy + i_temp = micro_xs(i_nuclide) % index_temp_sab + ! Get pointer to S(a,b) table - sab => sab_tables(i_sab) + associate (sab => sab_tables(i_sab) % data(i_temp)) - ! Determine whether inelastic or elastic scattering will occur - if (prn() < micro_xs(i_nuclide) % elastic_sab / & - micro_xs(i_nuclide) % elastic) then - ! elastic scattering + ! Determine whether inelastic or elastic scattering will occur + if (prn() < micro_xs(i_nuclide) % elastic_sab / & + micro_xs(i_nuclide) % elastic) then + ! elastic scattering - ! Get index and interpolation factor for elastic grid - if (E < sab % elastic_e_in(1)) then - i = 1 - f = ZERO - else - i = binary_search(sab % elastic_e_in, sab % n_elastic_e_in, E) - f = (E - sab%elastic_e_in(i)) / & - (sab%elastic_e_in(i+1) - sab%elastic_e_in(i)) - end if - - ! Select treatment based on elastic mode - if (sab % elastic_mode == SAB_ELASTIC_DISCRETE) then - ! With this treatment, we interpolate between two discrete cosines - ! corresponding to neighboring incoming energies. This is used for - ! data derived in the incoherent approximation - - ! Sample outgoing cosine bin - k = 1 + int(prn() * sab % n_elastic_mu) - - ! Determine outgoing cosine corresponding to E_in(i) and E_in(i+1) - mu_ijk = sab % elastic_mu(k,i) - mu_i1jk = sab % elastic_mu(k,i+1) - - ! Cosine of angle between incoming and outgoing neutron - mu = (1 - f)*mu_ijk + f*mu_i1jk - - elseif (sab % elastic_mode == SAB_ELASTIC_EXACT) then - ! This treatment is used for data derived in the coherent - ! approximation, i.e. for crystalline structures that have Bragg - ! edges. - - ! Sample a Bragg edge between 1 and i - prob = prn() * sab % elastic_P(i+1) - if (prob < sab % elastic_P(1)) then - k = 1 + ! Get index and interpolation factor for elastic grid + if (E < sab % elastic_e_in(1)) then + i = 1 + f = ZERO else - k = binary_search(sab % elastic_P(1:i+1), i+1, prob) + i = binary_search(sab % elastic_e_in, sab % n_elastic_e_in, E) + f = (E - sab%elastic_e_in(i)) / & + (sab%elastic_e_in(i+1) - sab%elastic_e_in(i)) end if - ! Characteristic scattering cosine for this Bragg edge - mu = ONE - TWO*sab % elastic_e_in(k) / E + ! Select treatment based on elastic mode + if (sab % elastic_mode == SAB_ELASTIC_DISCRETE) then + ! With this treatment, we interpolate between two discrete cosines + ! corresponding to neighboring incoming energies. This is used for + ! data derived in the incoherent approximation - end if + ! Sample outgoing cosine bin + k = 1 + int(prn() * sab % n_elastic_mu) - ! Outgoing energy is same as incoming energy -- no need to do anything + ! Determine outgoing cosine corresponding to E_in(i) and E_in(i+1) + mu_ijk = sab % elastic_mu(k,i) + mu_i1jk = sab % elastic_mu(k,i+1) - else - ! Perform inelastic calculations + ! Cosine of angle between incoming and outgoing neutron + mu = (1 - f)*mu_ijk + f*mu_i1jk - ! Get index and interpolation factor for inelastic grid - if (E < sab % inelastic_e_in(1)) then - i = 1 - f = ZERO - else - i = binary_search(sab % inelastic_e_in, sab % n_inelastic_e_in, E) - f = (E - sab%inelastic_e_in(i)) / & - (sab%inelastic_e_in(i+1) - sab%inelastic_e_in(i)) - end if + elseif (sab % elastic_mode == SAB_ELASTIC_EXACT) then + ! This treatment is used for data derived in the coherent + ! approximation, i.e. for crystalline structures that have Bragg + ! edges. - ! Now that we have an incoming energy bin, we need to determine the - ! outgoing energy bin. This will depend on the "secondary energy - ! mode". If the mode is 0, then the outgoing energy bin is chosen from a - ! set of equally-likely bins. If the mode is 1, then the first - ! two and last two bins are skewed to have lower probabilities than the - ! other bins (0.1 for the first and last bins and 0.4 for the second and - ! second to last bins, relative to a normal bin probability of 1). - ! Finally, if the mode is 2, then a continuous distribution (with - ! accompanying PDF and CDF is utilized) - - if ((sab % secondary_mode == SAB_SECONDARY_EQUAL) .or. & - (sab % secondary_mode == SAB_SECONDARY_SKEWED)) then - if (sab % secondary_mode == SAB_SECONDARY_EQUAL) then - ! All bins equally likely - - j = 1 + int(prn() * sab % n_inelastic_e_out) - elseif (sab % secondary_mode == SAB_SECONDARY_SKEWED) then - ! Distribution skewed away from edge points - - ! Determine number of outgoing energy and angle bins - n_energy_out = sab % n_inelastic_e_out - - r = prn() * (n_energy_out - 3) - if (r > ONE) then - ! equally likely N-4 middle bins - j = int(r) + 2 - elseif (r > 0.6_8) then - ! second to last bin has relative probability of 0.4 - j = n_energy_out - 1 - elseif (r > HALF) then - ! last bin has relative probability of 0.1 - j = n_energy_out - elseif (r > 0.1_8) then - ! second bin has relative probability of 0.4 - j = 2 + ! Sample a Bragg edge between 1 and i + prob = prn() * sab % elastic_P(i+1) + if (prob < sab % elastic_P(1)) then + k = 1 else - ! first bin has relative probability of 0.1 - j = 1 + k = binary_search(sab % elastic_P(1:i+1), i+1, prob) end if + + ! Characteristic scattering cosine for this Bragg edge + mu = ONE - TWO*sab % elastic_e_in(k) / E + end if - ! Determine outgoing energy corresponding to E_in(i) and E_in(i+1) - E_ij = sab % inelastic_e_out(j,i) - E_i1j = sab % inelastic_e_out(j,i+1) - - ! Outgoing energy - E = (1 - f)*E_ij + f*E_i1j - - ! Sample outgoing cosine bin - k = 1 + int(prn() * sab % n_inelastic_mu) - - ! Determine outgoing cosine corresponding to E_in(i) and E_in(i+1) - mu_ijk = sab % inelastic_mu(k,j,i) - mu_i1jk = sab % inelastic_mu(k,j,i+1) - - ! Cosine of angle between incoming and outgoing neutron - mu = (1 - f)*mu_ijk + f*mu_i1jk - - else if (sab % secondary_mode == SAB_SECONDARY_CONT) then - ! Continuous secondary energy - this is to be similar to - ! Law 61 interpolation on outgoing energy - - ! Sample between ith and (i+1)th bin - r = prn() - if (f > r) then - l = i + 1 - else - l = i - end if - - ! Determine endpoints on grid i - n_energy_out = sab % inelastic_data(i) % n_e_out - E_i_1 = sab % inelastic_data(i) % e_out(1) - E_i_J = sab % inelastic_data(i) % e_out(n_energy_out) - - ! Determine endpoints on grid i + 1 - n_energy_out = sab % inelastic_data(i + 1) % n_e_out - E_i1_1 = sab % inelastic_data(i + 1) % e_out(1) - E_i1_J = sab % inelastic_data(i + 1) % e_out(n_energy_out) - - E_1 = E_i_1 + f * (E_i1_1 - E_i_1) - E_J = E_i_J + f * (E_i1_J - E_i_J) - - ! Determine outgoing energy bin - ! (First reset n_energy_out to the right value) - n_energy_out = sab % inelastic_data(l) % n_e_out - r1 = prn() - c_j = sab % inelastic_data(l) % e_out_cdf(1) - do j = 1, n_energy_out - 1 - c_j1 = sab % inelastic_data(l) % e_out_cdf(j + 1) - if (r1 < c_j1) exit - c_j = c_j1 - end do - - ! check to make sure k is <= n_energy_out - 1 - j = min(j, n_energy_out - 1) - - ! Get the data to interpolate between - E_l_j = sab % inelastic_data(l) % e_out(j) - p_l_j = sab % inelastic_data(l) % e_out_pdf(j) - - ! Next part assumes linear-linear interpolation in standard - E_l_j1 = sab % inelastic_data(l) % e_out(j + 1) - p_l_j1 = sab % inelastic_data(l) % e_out_pdf(j + 1) - - ! Find secondary energy (variable E) - frac = (p_l_j1 - p_l_j) / (E_l_j1 - E_l_j) - if (frac == ZERO) then - E = E_l_j + (r1 - c_j) / p_l_j - else - E = E_l_j + (sqrt(max(ZERO, p_l_j * p_l_j + & - TWO * frac * (r1 - c_j))) - p_l_j) / frac - end if - - ! Now interpolate between incident energy bins i and i + 1 - if (l == i) then - E = E_1 + (E - E_i_1) * (E_J - E_1) / (E_i_J - E_i_1) - else - E = E_1 + (E - E_i1_1) * (E_J - E_1) / (E_i1_J - E_i1_1) - end if - - ! Find angular distribution for closest outgoing energy bin - if (r1 - c_j < c_j1 - r1) then - j = j - else - j = j + 1 - end if - - ! Sample outgoing cosine bin - k = 1 + int(prn() * sab % n_inelastic_mu) - - ! Will use mu from the randomly chosen incoming and closest outgoing - ! energy bins - mu = sab % inelastic_data(l) % mu(k, j) + ! Outgoing energy is same as incoming energy -- no need to do anything else - call fatal_error("Invalid secondary energy mode on S(a,b) table " & - &// trim(sab % name)) - end if ! (inelastic secondary energy treatment) - end if ! (elastic or inelastic) + ! Perform inelastic calculations + + ! Get index and interpolation factor for inelastic grid + if (E < sab % inelastic_e_in(1)) then + i = 1 + f = ZERO + else + i = binary_search(sab % inelastic_e_in, sab % n_inelastic_e_in, E) + f = (E - sab%inelastic_e_in(i)) / & + (sab%inelastic_e_in(i+1) - sab%inelastic_e_in(i)) + end if + + ! Now that we have an incoming energy bin, we need to determine the + ! outgoing energy bin. This will depend on the "secondary energy + ! mode". If the mode is 0, then the outgoing energy bin is chosen from a + ! set of equally-likely bins. If the mode is 1, then the first + ! two and last two bins are skewed to have lower probabilities than the + ! other bins (0.1 for the first and last bins and 0.4 for the second and + ! second to last bins, relative to a normal bin probability of 1). + ! Finally, if the mode is 2, then a continuous distribution (with + ! accompanying PDF and CDF is utilized) + + if ((sab_tables(i_sab) % secondary_mode == SAB_SECONDARY_EQUAL) .or. & + (sab_tables(i_sab) % secondary_mode == SAB_SECONDARY_SKEWED)) then + if (sab_tables(i_sab) % secondary_mode == SAB_SECONDARY_EQUAL) then + ! All bins equally likely + + j = 1 + int(prn() * sab % n_inelastic_e_out) + elseif (sab_tables(i_sab) % secondary_mode == SAB_SECONDARY_SKEWED) then + ! Distribution skewed away from edge points + + ! Determine number of outgoing energy and angle bins + n_energy_out = sab % n_inelastic_e_out + + r = prn() * (n_energy_out - 3) + if (r > ONE) then + ! equally likely N-4 middle bins + j = int(r) + 2 + elseif (r > 0.6_8) then + ! second to last bin has relative probability of 0.4 + j = n_energy_out - 1 + elseif (r > HALF) then + ! last bin has relative probability of 0.1 + j = n_energy_out + elseif (r > 0.1_8) then + ! second bin has relative probability of 0.4 + j = 2 + else + ! first bin has relative probability of 0.1 + j = 1 + end if + end if + + ! Determine outgoing energy corresponding to E_in(i) and E_in(i+1) + E_ij = sab % inelastic_e_out(j,i) + E_i1j = sab % inelastic_e_out(j,i+1) + + ! Outgoing energy + E = (1 - f)*E_ij + f*E_i1j + + ! Sample outgoing cosine bin + k = 1 + int(prn() * sab % n_inelastic_mu) + + ! Determine outgoing cosine corresponding to E_in(i) and E_in(i+1) + mu_ijk = sab % inelastic_mu(k,j,i) + mu_i1jk = sab % inelastic_mu(k,j,i+1) + + ! Cosine of angle between incoming and outgoing neutron + mu = (1 - f)*mu_ijk + f*mu_i1jk + + else if (sab_tables(i_sab) % secondary_mode == SAB_SECONDARY_CONT) then + ! Continuous secondary energy - this is to be similar to + ! Law 61 interpolation on outgoing energy + + ! Sample between ith and (i+1)th bin + r = prn() + if (f > r) then + l = i + 1 + else + l = i + end if + + ! Determine endpoints on grid i + n_energy_out = sab % inelastic_data(i) % n_e_out + E_i_1 = sab % inelastic_data(i) % e_out(1) + E_i_J = sab % inelastic_data(i) % e_out(n_energy_out) + + ! Determine endpoints on grid i + 1 + n_energy_out = sab % inelastic_data(i + 1) % n_e_out + E_i1_1 = sab % inelastic_data(i + 1) % e_out(1) + E_i1_J = sab % inelastic_data(i + 1) % e_out(n_energy_out) + + E_1 = E_i_1 + f * (E_i1_1 - E_i_1) + E_J = E_i_J + f * (E_i1_J - E_i_J) + + ! Determine outgoing energy bin + ! (First reset n_energy_out to the right value) + n_energy_out = sab % inelastic_data(l) % n_e_out + r1 = prn() + c_j = sab % inelastic_data(l) % e_out_cdf(1) + do j = 1, n_energy_out - 1 + c_j1 = sab % inelastic_data(l) % e_out_cdf(j + 1) + if (r1 < c_j1) exit + c_j = c_j1 + end do + + ! check to make sure k is <= n_energy_out - 1 + j = min(j, n_energy_out - 1) + + ! Get the data to interpolate between + E_l_j = sab % inelastic_data(l) % e_out(j) + p_l_j = sab % inelastic_data(l) % e_out_pdf(j) + + ! Next part assumes linear-linear interpolation in standard + E_l_j1 = sab % inelastic_data(l) % e_out(j + 1) + p_l_j1 = sab % inelastic_data(l) % e_out_pdf(j + 1) + + ! Find secondary energy (variable E) + frac = (p_l_j1 - p_l_j) / (E_l_j1 - E_l_j) + if (frac == ZERO) then + E = E_l_j + (r1 - c_j) / p_l_j + else + E = E_l_j + (sqrt(max(ZERO, p_l_j * p_l_j + & + TWO * frac * (r1 - c_j))) - p_l_j) / frac + end if + + ! Now interpolate between incident energy bins i and i + 1 + if (l == i) then + E = E_1 + (E - E_i_1) * (E_J - E_1) / (E_i_J - E_i_1) + else + E = E_1 + (E - E_i1_1) * (E_J - E_1) / (E_i1_J - E_i1_1) + end if + + ! Find angular distribution for closest outgoing energy bin + if (r1 - c_j < c_j1 - r1) then + j = j + else + j = j + 1 + end if + + ! Sample outgoing cosine bin + k = 1 + int(prn() * sab % n_inelastic_mu) + + ! Will use mu from the randomly chosen incoming and closest outgoing + ! energy bins + mu = sab % inelastic_data(l) % mu(k, j) + + else + call fatal_error("Invalid secondary energy mode on S(a,b) table " & + // trim(sab_tables(i_sab) % name)) + end if ! (inelastic secondary energy treatment) + end if ! (elastic or inelastic) + end associate ! Because of floating-point roundoff, it may be possible for mu to be ! outside of the range [-1,1). In these cases, we just set mu to exactly @@ -741,19 +759,19 @@ contains ! implemented here. !=============================================================================== - subroutine sample_target_velocity(nuc, v_target, E, uvw, v_neut, wgt, xs_eff) + subroutine sample_target_velocity(nuc, v_target, E, uvw, v_neut, wgt, xs_eff, kT) type(Nuclide), intent(in) :: nuc ! target nuclide at temperature T real(8), intent(out) :: v_target(3) ! target velocity - real(8), intent(in) :: v_neut(3) ! neutron velocity real(8), intent(in) :: E ! particle energy real(8), intent(in) :: uvw(3) ! direction cosines + real(8), intent(in) :: v_neut(3) ! neutron velocity real(8), intent(inout) :: wgt ! particle weight + real(8), intent(in) :: xs_eff ! effective elastic xs at temperature T + real(8), intent(in) :: kT ! equilibrium temperature of target in MeV real(8) :: awr ! target/neutron mass ratio - real(8) :: kT ! equilibrium temperature of target in MeV real(8) :: E_rel ! trial relative energy real(8) :: xs_0K ! 0K xs at E_rel - real(8) :: xs_eff ! effective elastic xs at temperature T real(8) :: wcf ! weight correction factor real(8) :: E_red ! reduced energy (same as used by Cullen in SIGMA1) real(8) :: E_low ! lowest practical relative energy @@ -782,7 +800,6 @@ contains character(80) :: sampling_scheme ! method of target velocity sampling - kT = nuc % kT awr = nuc % awr ! check if nuclide is a resonant scatterer @@ -817,12 +834,12 @@ contains case ('cxs') ! sample target velocity with the constant cross section (cxs) approx. - call sample_cxs_target_velocity(nuc, v_target, E, uvw) + call sample_cxs_target_velocity(nuc, v_target, E, uvw, kT) case ('wcm') ! sample target velocity with the constant cross section (cxs) approx. - call sample_cxs_target_velocity(nuc, v_target, E, uvw) + call sample_cxs_target_velocity(nuc, v_target, E, uvw, kT) ! adjust weight as prescribed by the weight correction method (wcm) E_rel = dot_product((v_neut - v_target), (v_neut - v_target)) @@ -874,7 +891,7 @@ contains do ! sample target velocity with the constant cross section (cxs) approx. - call sample_cxs_target_velocity(nuc, v_target, E, uvw) + call sample_cxs_target_velocity(nuc, v_target, E, uvw, kT) ! perform Doppler broadening rejection correction (dbrc) E_rel = dot_product((v_neut - v_target), (v_neut - v_target)) @@ -986,13 +1003,13 @@ contains ! can be found in FRA-TM-123. !=============================================================================== - subroutine sample_cxs_target_velocity(nuc, v_target, E, uvw) + subroutine sample_cxs_target_velocity(nuc, v_target, E, uvw, kT) type(Nuclide), intent(in) :: nuc ! target nuclide at temperature real(8), intent(out) :: v_target(3) real(8), intent(in) :: E real(8), intent(in) :: uvw(3) + real(8), intent(in) :: kT ! equilibrium temperature of target in MeV - real(8) :: kT ! equilibrium temperature of target in MeV real(8) :: awr ! target/neutron mass ratio real(8) :: alpha ! probability of sampling f2 over f1 real(8) :: mu ! cosine of angle between neutron and target vel @@ -1004,7 +1021,6 @@ contains real(8) :: beta_vt_sq ! (beta * speed of target)^2 real(8) :: vt ! speed of target - kT = nuc % kT awr = nuc % awr beta_vn = sqrt(awr * E / kT) diff --git a/src/reaction_header.F90 b/src/reaction_header.F90 index 055dcb392..a7896e9ff 100644 --- a/src/reaction_header.F90 +++ b/src/reaction_header.F90 @@ -7,6 +7,7 @@ module reaction_header use hdf5_interface, only: read_attribute, open_group, close_group, & open_dataset, read_dataset, close_dataset, get_shape use product_header, only: ReactionProduct + use stl_vector, only: VectorInt use string, only: to_str, starts_with implicit none @@ -16,12 +17,16 @@ module reaction_header ! distributions for a single reaction in a continuous-energy ACE-format table !=============================================================================== + type TemperatureXS + integer :: threshold ! Energy grid index of threshold + real(8), allocatable :: value(:) ! Cross section values + end type TemperatureXS + type Reaction integer :: MT ! ENDF MT value real(8) :: Q_value ! Reaction Q value - integer :: threshold ! Energy grid index of threshold logical :: scatter_in_cm ! scattering system in center-of-mass? - real(8), allocatable :: sigma(:) ! Cross section values + type(TemperatureXS), allocatable :: xs(:) type(ReactionProduct), allocatable :: products(:) contains procedure :: from_hdf5 => reaction_from_hdf5 @@ -29,9 +34,10 @@ module reaction_header contains - subroutine reaction_from_hdf5(this, group_id) + subroutine reaction_from_hdf5(this, group_id, temperatures) class(Reaction), intent(inout) :: this integer(HID_T), intent(in) :: group_id + type(VectorInt), intent(in) :: temperatures integer :: i integer :: cm @@ -41,24 +47,31 @@ contains integer :: n_links integer :: hdf5_err integer(HID_T) :: pgroup - integer(HID_T) :: xs + integer(HID_T) :: xs, temp_group integer(SIZE_T) :: name_len integer(HSIZE_T) :: dims(1) integer(HSIZE_T) :: j character(MAX_WORD_LEN) :: name + character(MAX_WORD_LEN) :: temp_str ! temperature dataset name, e.g. '294K' call read_attribute(this % Q_value, group_id, 'Q_value') call read_attribute(this % MT, group_id, 'mt') - call read_attribute(this % threshold, group_id, 'threshold_idx') call read_attribute(cm, group_id, 'center_of_mass') this % scatter_in_cm = (cm == 1) - ! Read cross section - xs = open_dataset(group_id, 'xs') - call get_shape(xs, dims) - allocate(this % sigma(dims(1))) - call read_dataset(this % sigma, xs) - call close_dataset(xs) + ! Read cross section and threshold_idx data + allocate(this % xs(temperatures % size())) + do i = 1, temperatures % size() + temp_str = trim(to_str(temperatures % data(i))) // "K" + temp_group = open_group(group_id, temp_str) + xs = open_dataset(temp_group, 'xs') + call read_attribute(this % xs(i) % threshold, xs, 'threshold_idx') + call get_shape(xs, dims) + allocate(this % xs(i) % value(dims(1))) + call read_dataset(this % xs(i) % value, xs) + call close_dataset(xs) + call close_group(temp_group) + end do ! Determine number of products call h5gget_info_f(group_id, storage_type, n_links, max_corder, hdf5_err) diff --git a/src/relaxng/materials.rnc b/src/relaxng/materials.rnc index 1b5b7c705..c5f4efd6f 100644 --- a/src/relaxng/materials.rnc +++ b/src/relaxng/materials.rnc @@ -4,6 +4,8 @@ element materials { (element name { xsd:string { maxLength="52" } } | attribute name { xsd:string { maxLength="52" } })? & + element temperature { xsd:double }? & + element density { (element value { xsd:double } | attribute value { xsd:double })? & (element units { xsd:string { maxLength = "10" } } | @@ -12,8 +14,6 @@ element materials { element nuclide { (element name { xsd:string } | attribute name { xsd:string }) & - (element xs { xsd:string { maxLength = "5" } } | - attribute xs { xsd:string { maxLength = "5" } })? & (element scattering { ( "data" | "iso-in-lab" ) } | attribute scattering { ( "data" | "iso-in-lab" ) })? & ( @@ -24,16 +24,12 @@ element materials { element macroscopic { (element name { xsd:string } | - attribute name { xsd:string }) & - (element xs { xsd:string { maxLength = "5" } } | - attribute xs { xsd:string { maxLength = "5" } }) + attribute name { xsd:string }) }* & element element { (element name { xsd:string { maxLength = "2" } } | attribute name { xsd:string { maxLength = "2" } }) & - (element xs { xsd:string { maxLength = "5" } } | - attribute xs { xsd:string { maxLength = "5" } })? & (element scattering { ( "data" | "iso-in-lab" ) } | attribute scattering { ( "data" | "iso-in-lab" ) })? & ( @@ -43,11 +39,7 @@ element materials { }* & element sab { - (element name { xsd:string } | attribute name { xsd:string }) & - (element xs { xsd:string { maxLength = "5" } } | - attribute xs { xsd:string { maxLength = "5" } })? + (element name { xsd:string } | attribute name { xsd:string }) }* - }+ & - - element default_xs { xsd:string { maxLength = "5" } }? + }+ } diff --git a/src/relaxng/materials.rng b/src/relaxng/materials.rng index e93f20165..3c92dc94a 100644 --- a/src/relaxng/materials.rng +++ b/src/relaxng/materials.rng @@ -1,248 +1,186 @@ - - - - + + + + + + + + + + + + - - + + + 52 + - - + + + 52 + - + + + + + + + + + + + + + + + + + + - + - 52 + 10 - + - 52 + 10 - - + + + + + + + + + + + + - - + + + data + iso-in-lab + - - + + + data + iso-in-lab + - - - 10 - - - - - 10 - - + + + + + + + + + + + + + + + + - - - + + + + + + + + + + + + + + + + + + + + 2 + + + + + 2 + + + + - - + + + data + iso-in-lab + - - + + + data + iso-in-lab + - - - - - 5 - - - - - 5 - - - - - - - - - data - iso-in-lab - - - - - data - iso-in-lab - - - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - + + - - + + - - - 5 - + + - - - 5 - + + - - - - - - - - - - 2 - - - - - 2 - - - - - - - - 5 - - - - - 5 - - - - - - - - - data - iso-in-lab - - - - - data - iso-in-lab - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 5 - - - - - 5 - - - - - - - - - - - - - - 5 - - - - + + + + + + + + + + + + + + + + + + + diff --git a/src/relaxng/settings.rnc b/src/relaxng/settings.rnc index 742e13773..70550a40f 100644 --- a/src/relaxng/settings.rnc +++ b/src/relaxng/settings.rnc @@ -128,6 +128,12 @@ element settings { element survival_biasing { xsd:boolean }? & + element temperature_default { xsd:double }? & + + element temperature_method { xsd:string }? & + + element temperature_tolerance { xsd:double }? & + element threads { xsd:positiveInteger }? & element trace { list { xsd:positiveInteger+ } }? & @@ -170,10 +176,6 @@ element settings { attribute nuclide { xsd:string { maxLength = "12" } }) & (element method { xsd:string { maxLength = "16" } } | attribute method { xsd:string { maxLength = "16" } }) & - (element xs_label { xsd:string { maxLength = "12" } } | - attribute xs_label { xsd:string { maxLength = "12" } }) & - (element xs_label_0K { xsd:string { maxLength = "12" } } | - attribute xs_label_0K { xsd:string { maxLength = "12" } }) & (element E_min { xsd:double } | attribute E_min { xsd:double }) & (element E_max { xsd:double } | diff --git a/src/relaxng/settings.rng b/src/relaxng/settings.rng index 39bed4a62..246c78e68 100644 --- a/src/relaxng/settings.rng +++ b/src/relaxng/settings.rng @@ -565,6 +565,21 @@ + + + + + + + + + + + + + + + @@ -778,30 +793,6 @@ - - - - 12 - - - - - 12 - - - - - - - 12 - - - - - 12 - - - diff --git a/src/sab_header.F90 b/src/sab_header.F90 index 3e9e18fab..147643065 100644 --- a/src/sab_header.F90 +++ b/src/sab_header.F90 @@ -2,14 +2,18 @@ module sab_header use, intrinsic :: ISO_FORTRAN_ENV + use algorithm, only: find, sort use constants + use dict_header, only: DictIntInt use distribution_univariate, only: Tabular - use hdf5, only: HID_T, HSIZE_T - use h5lt, only: h5ltpath_valid_f + use error, only: warning, fatal_error + use hdf5, only: HID_T, HSIZE_T, SIZE_T + use h5lt, only: h5ltpath_valid_f, h5iget_name_f use hdf5_interface, only: read_attribute, get_shape, open_group, close_group, & - open_dataset, read_dataset, close_dataset + open_dataset, read_dataset, close_dataset, get_datasets use secondary_correlated, only: CorrelatedAngleEnergy - use string, only: to_str + use stl_vector, only: VectorInt, VectorReal + use string, only: to_str, str_to_int implicit none @@ -32,13 +36,7 @@ module sab_header ! of light isotopes such as water, graphite, Be, etc !=============================================================================== - type SAlphaBeta - character(100) :: name ! name of table, e.g. lwtr.10t - real(8) :: awr ! weight of nucleus in neutron masses - real(8) :: kT ! temperature in MeV (k*T) - integer :: n_zaid ! Number of valid zaids - integer, allocatable :: zaid(:) ! List of valid Z and A identifiers, e.g. 6012 - + type SabData ! threshold for S(a,b) treatment (usually ~4 eV) real(8) :: threshold_inelastic real(8) :: threshold_elastic = ZERO @@ -47,7 +45,6 @@ module sab_header integer :: n_inelastic_e_in ! # of incoming E for inelastic integer :: n_inelastic_e_out ! # of outgoing E for inelastic integer :: n_inelastic_mu ! # of outgoing angles for inelastic - integer :: secondary_mode ! secondary mode (equal/skewed/continuous) real(8), allocatable :: inelastic_e_in(:) real(8), allocatable :: inelastic_sigma(:) ! The following are used only if secondary_mode is 0 or 1 @@ -66,104 +63,41 @@ module sab_header real(8), allocatable :: elastic_e_in(:) real(8), allocatable :: elastic_P(:) real(8), allocatable :: elastic_mu(:,:) + end type SabData + + type SAlphaBeta + character(100) :: name ! name of table, e.g. lwtr.10t + real(8) :: awr ! weight of nucleus in neutron masses + real(8), allocatable :: kTs(:) ! temperatures in MeV (k*T) + character(10), allocatable :: nuclides(:) ! List of valid nuclides + integer :: secondary_mode ! secondary mode (equal/skewed/continuous) + + ! cross sections and distributions at each temperature + type(SabData), allocatable :: data(:) contains - procedure :: print => salphabeta_print procedure :: from_hdf5 => salphabeta_from_hdf5 end type SAlphaBeta contains -!=============================================================================== -! PRINT_SAB_TABLE displays information about a S(a,b) table containing data -! describing thermal scattering from bound materials such as hydrogen in water. -!=============================================================================== - - subroutine salphabeta_print(this, unit) - class(SAlphaBeta), intent(in) :: this - integer, intent(in), optional :: unit - - integer :: size_sab ! memory used by S(a,b) table - integer :: unit_ ! unit to write to - integer :: i ! Loop counter for parsing through this % zaid - integer :: char_count ! Counter for the number of characters on a line - - ! set default unit for writing information - if (present(unit)) then - unit_ = unit - else - unit_ = OUTPUT_UNIT - end if - - ! Basic S(a,b) table information - write(unit_,*) 'S(a,b) Table ' // trim(this % name) - write(unit_,'(A)',advance="no") ' zaids = ' - ! Initialize the counter based on the above string - char_count = 11 - do i = 1, this % n_zaid - ! Deal with a line thats too long - if (char_count >= 73) then ! 73 = 80 - (5 ZAID chars + 1 space + 1 comma) - ! End the line - write(unit_,*) "" - ! Add 11 leading blanks - write(unit_,'(A)', advance="no") " " - ! reset the counter to 11 - char_count = 11 - end if - if (i < this % n_zaid) then - ! Include a comma - write(unit_,'(A)',advance="no") trim(to_str(this % zaid(i))) // ", " - char_count = char_count + len(trim(to_str(this % zaid(i)))) + 2 - else - ! Don't include a comma, since we are all done - write(unit_,'(A)',advance="no") trim(to_str(this % zaid(i))) - end if - - end do - write(unit_,*) "" ! Move to next line - write(unit_,*) ' awr = ' // trim(to_str(this % awr)) - write(unit_,*) ' kT = ' // trim(to_str(this % kT)) - - ! Inelastic data - write(unit_,*) ' # of Incoming Energies (Inelastic) = ' // & - trim(to_str(this % n_inelastic_e_in)) - write(unit_,*) ' # of Outgoing Energies (Inelastic) = ' // & - trim(to_str(this % n_inelastic_e_out)) - write(unit_,*) ' # of Outgoing Angles (Inelastic) = ' // & - trim(to_str(this % n_inelastic_mu)) - write(unit_,*) ' Threshold for Inelastic = ' // & - trim(to_str(this % threshold_inelastic)) - - ! Elastic data - if (this % n_elastic_e_in > 0) then - write(unit_,*) ' # of Incoming Energies (Elastic) = ' // & - trim(to_str(this % n_elastic_e_in)) - write(unit_,*) ' # of Outgoing Angles (Elastic) = ' // & - trim(to_str(this % n_elastic_mu)) - write(unit_,*) ' Threshold for Elastic = ' // & - trim(to_str(this % threshold_elastic)) - end if - - ! Determine memory used by S(a,b) table and write out - size_sab = 8 * (this % n_inelastic_e_in * (2 + this % n_inelastic_e_out * & - (1 + this % n_inelastic_mu)) + this % n_elastic_e_in * & - (2 + this % n_elastic_mu)) - write(unit_,*) ' Memory Used = ' // trim(to_str(size_sab)) // ' bytes' - - ! Blank line at end - write(unit_,*) - - end subroutine salphabeta_print - - subroutine salphabeta_from_hdf5(this, group_id) + subroutine salphabeta_from_hdf5(this, group_id, temperature, tolerance) class(SAlphaBeta), intent(inout) :: this integer(HID_T), intent(in) :: group_id + type(VectorReal), intent(in) :: temperature ! list of temperatures + real(8), intent(in) :: tolerance integer :: i, j + integer :: t integer :: n_energy, n_energy_out, n_mu + integer :: i_closest + integer :: n_temperature integer :: hdf5_err + integer(SIZE_T) :: name_len, name_file_len + integer(HID_T) :: T_group integer(HID_T) :: elastic_group integer(HID_T) :: inelastic_group integer(HID_T) :: dset_id + integer(HID_T) :: kT_group integer(HSIZE_T) :: dims2(2) integer(HSIZE_T) :: dims3(3) real(8), allocatable :: temp(:,:) @@ -171,143 +105,210 @@ contains logical :: exists type(CorrelatedAngleEnergy) :: correlated_dist + character(MAX_WORD_LEN) :: temp_str + character(MAX_FILE_LEN), allocatable :: dset_names(:) + real(8), allocatable :: temps_available(:) ! temperatures available + real(8) :: temp_desired + real(8) :: temp_actual + type(VectorInt) :: temps_to_read + + ! Get name of table from group + name_len = len(this % name) + call h5iget_name_f(group_id, this % name, name_len, name_file_len, hdf5_err) + + ! Get rid of leading '/' + this % name = trim(this % name(2:)) + call read_attribute(this % awr, group_id, 'atomic_weight_ratio') - call read_attribute(this % kT, group_id, 'temperature') - call read_attribute(this % zaid, group_id, 'zaids') - this % n_zaid = size(this % zaid) + call read_attribute(this % nuclides, group_id, 'nuclides') + call read_attribute(type, group_id, 'secondary_mode') + select case (type) + case ('equal') + this % secondary_mode = SAB_SECONDARY_EQUAL + case ('skewed') + this % secondary_mode = SAB_SECONDARY_SKEWED + case ('continuous') + this % secondary_mode = SAB_SECONDARY_CONT + end select - ! Coherent elastic data - call h5ltpath_valid_f(group_id, 'elastic', .true., exists, hdf5_err) - if (exists) then - ! Read cross section data - elastic_group = open_group(group_id, 'elastic') - dset_id = open_dataset(elastic_group, 'xs') - call read_attribute(type, dset_id, 'type') - call get_shape(dset_id, dims2) - allocate(temp(dims2(1), dims2(2))) - call read_dataset(temp, dset_id) - call close_dataset(dset_id) + ! Read temperatures + kT_group = open_group(group_id, 'kTs') - ! Set cross section data and type - this % n_elastic_e_in = int(dims2(1), 4) - allocate(this % elastic_e_in(this % n_elastic_e_in)) - allocate(this % elastic_P(this % n_elastic_e_in)) - this % elastic_e_in(:) = temp(:, 1) - this % elastic_P(:) = temp(:, 2) - select case (type) - case ('tab1') - this % elastic_mode = SAB_ELASTIC_DISCRETE - case ('bragg') - this % elastic_mode = SAB_ELASTIC_EXACT - end select - deallocate(temp) + ! Determine temperatures available + call get_datasets(kT_group, dset_names) + allocate(temps_available(size(dset_names))) + do i = 1, size(dset_names) + ! Read temperature value + call read_dataset(temps_available(i), kT_group, trim(dset_names(i))) + temps_available(i) = temps_available(i) / K_BOLTZMANN + end do - ! Set elastic threshold - this % threshold_elastic = this % elastic_e_in(this % n_elastic_e_in) - - ! Read angle distribution - if (this % elastic_mode /= SAB_ELASTIC_EXACT) then - dset_id = open_dataset(elastic_group, 'mu_out') - call get_shape(dset_id, dims2) - this % n_elastic_mu = int(dims2(1), 4) - allocate(this % elastic_mu(dims2(1), dims2(2))) - call read_dataset(this % elastic_mu, dset_id) - call close_dataset(dset_id) + ! Determine actual temperatures to read + TEMP_LOOP: do i = 1, temperature % size() + temp_desired = temperature % data(i) + i_closest = minloc(abs(temps_available - temp_desired), dim=1) + temp_actual = temps_available(i_closest) + if (abs(temp_actual - temp_desired) < tolerance) then + if (find(temps_to_read, nint(temp_actual)) == -1) then + call temps_to_read % push_back(nint(temp_actual)) + end if + else + call fatal_error("Nuclear data library does not contain cross sections & + &for " // trim(this % name) // " at or near " // & + trim(to_str(nint(temp_desired))) // " K.") end if + end do TEMP_LOOP - call close_group(elastic_group) - end if + ! TODO: If using interpolation, add a block to add bounding temperatures for + ! each - ! Inelastic data - call h5ltpath_valid_f(group_id, 'inelastic', .true., exists, hdf5_err) - if (exists) then - ! Read type of inelastic data - inelastic_group = open_group(group_id, 'inelastic') - call read_attribute(type, inelastic_group, 'secondary_mode') - select case (type) - case ('equal') - this % secondary_mode = SAB_SECONDARY_EQUAL - case ('skewed') - this % secondary_mode = SAB_SECONDARY_SKEWED - case ('continuous') - this % secondary_mode = SAB_SECONDARY_CONT - end select + ! Sort temperatures to read + call sort(temps_to_read) - ! Read cross section data - dset_id = open_dataset(inelastic_group, 'xs') - call get_shape(dset_id, dims2) - allocate(temp(dims2(1), dims2(2))) - call read_dataset(temp, dset_id) - call close_dataset(dset_id) + n_temperature = temps_to_read % size() + allocate(this % kTs(n_temperature)) + allocate(this % data(n_temperature)) - ! Set cross section data - this % n_inelastic_e_in = int(dims2(1), 4) - allocate(this % inelastic_e_in(this % n_inelastic_e_in)) - allocate(this % inelastic_sigma(this % n_inelastic_e_in)) - this % inelastic_e_in(:) = temp(:, 1) - this % inelastic_sigma(:) = temp(:, 2) - deallocate(temp) + do t = 1, n_temperature + ! Get temperature as a string + temp_str = trim(to_str(temps_to_read % data(t))) // "K" - ! Set inelastic threshold - this % threshold_inelastic = this % inelastic_e_in(this % n_inelastic_e_in) + ! Read exact temperature value + call read_dataset(this % kTs(t), kT_group, temp_str) - if (this % secondary_mode /= SAB_SECONDARY_CONT) then - ! Read energy distribution - dset_id = open_dataset(inelastic_group, 'energy_out') + ! Open group for temperature i + T_group = open_group(group_id, temp_str) + + ! Coherent elastic data + call h5ltpath_valid_f(T_group, 'elastic', .true., exists, hdf5_err) + if (exists) then + ! Read cross section data + elastic_group = open_group(T_group, 'elastic') + dset_id = open_dataset(elastic_group, 'xs') + call read_attribute(type, dset_id, 'type') call get_shape(dset_id, dims2) - this % n_inelastic_e_out = int(dims2(1), 4) - allocate(this % inelastic_e_out(dims2(1), dims2(2))) - call read_dataset(this % inelastic_e_out, dset_id) + allocate(temp(dims2(1), dims2(2))) + call read_dataset(temp, dset_id) call close_dataset(dset_id) + ! Set cross section data and type + this % data(t) % n_elastic_e_in = int(dims2(1), 4) + allocate(this % data(t) % elastic_e_in(this % data(t) % n_elastic_e_in)) + allocate(this % data(t) % elastic_P(this % data(t) % n_elastic_e_in)) + this % data(t) % elastic_e_in(:) = temp(:, 1) + this % data(t) % elastic_P(:) = temp(:, 2) + select case (type) + case ('tab1') + this % data(t) % elastic_mode = SAB_ELASTIC_DISCRETE + case ('bragg') + this % data(t) % elastic_mode = SAB_ELASTIC_EXACT + end select + deallocate(temp) + + ! Set elastic threshold + this % data(t) % threshold_elastic = this % data(t) % elastic_e_in(& + this % data(t) % n_elastic_e_in) + ! Read angle distribution - dset_id = open_dataset(inelastic_group, 'mu_out') - call get_shape(dset_id, dims3) - this % n_inelastic_mu = int(dims3(1), 4) - allocate(this % inelastic_mu(dims3(1), dims3(2), dims3(3))) - call read_dataset(this % inelastic_mu, dset_id) - call close_dataset(dset_id) - else - ! Read correlated angle-energy distribution - call correlated_dist % from_hdf5(inelastic_group) + if (this % data(t) % elastic_mode /= SAB_ELASTIC_EXACT) then + dset_id = open_dataset(elastic_group, 'mu_out') + call get_shape(dset_id, dims2) + this % data(t) % n_elastic_mu = int(dims2(1), 4) + allocate(this % data(t) % elastic_mu(dims2(1), dims2(2))) + call read_dataset(this % data(t) % elastic_mu, dset_id) + call close_dataset(dset_id) + end if - ! Convert to S(a,b) native format - n_energy = size(correlated_dist % energy) - allocate(this % inelastic_data(n_energy)) - do i = 1, n_energy - associate (edist => correlated_dist % distribution(i)) - ! Get number of outgoing energies for incoming energy i - n_energy_out = size(edist % e_out) - this % inelastic_data(i) % n_e_out = n_energy_out - allocate(this % inelastic_data(i) % e_out(n_energy_out)) - allocate(this % inelastic_data(i) % e_out_pdf(n_energy_out)) - allocate(this % inelastic_data(i) % e_out_cdf(n_energy_out)) - - ! Copy outgoing energy distribution - this % inelastic_data(i) % e_out(:) = edist % e_out - this % inelastic_data(i) % e_out_pdf(:) = edist % p - this % inelastic_data(i) % e_out_cdf(:) = edist % c - - do j = 1, n_energy_out - select type (adist => edist % angle(j) % obj) - type is (Tabular) - ! On first pass, allocate space for angles - if (j == 1) then - n_mu = size(adist % x) - this % n_inelastic_mu = n_mu - allocate(this % inelastic_data(i) % mu(n_mu, n_energy_out)) - end if - - ! Copy outgoing angles - this % inelastic_data(i) % mu(:, j) = adist % x - end select - end do - end associate - end do + call close_group(elastic_group) end if - call close_group(inelastic_group) - end if + ! Inelastic data + call h5ltpath_valid_f(T_group, 'inelastic', .true., exists, hdf5_err) + if (exists) then + ! Read type of inelastic data + inelastic_group = open_group(T_group, 'inelastic') + + ! Read cross section data + dset_id = open_dataset(inelastic_group, 'xs') + call get_shape(dset_id, dims2) + allocate(temp(dims2(1), dims2(2))) + call read_dataset(temp, dset_id) + call close_dataset(dset_id) + + ! Set cross section data + this % data(t) % n_inelastic_e_in = int(dims2(1), 4) + allocate(this % data(t) % inelastic_e_in(this % data(t) % n_inelastic_e_in)) + allocate(this % data(t) % inelastic_sigma(this % data(t) % n_inelastic_e_in)) + this % data(t) % inelastic_e_in(:) = temp(:, 1) + this % data(t) % inelastic_sigma(:) = temp(:, 2) + deallocate(temp) + + ! Set inelastic threshold + this % data(t) % threshold_inelastic = this % data(t) % inelastic_e_in(& + this % data(t) % n_inelastic_e_in) + + if (this % secondary_mode /= SAB_SECONDARY_CONT) then + ! Read energy distribution + dset_id = open_dataset(inelastic_group, 'energy_out') + call get_shape(dset_id, dims2) + this % data(t) % n_inelastic_e_out = int(dims2(1), 4) + allocate(this % data(t) % inelastic_e_out(dims2(1), dims2(2))) + call read_dataset(this % data(t) % inelastic_e_out, dset_id) + call close_dataset(dset_id) + + ! Read angle distribution + dset_id = open_dataset(inelastic_group, 'mu_out') + call get_shape(dset_id, dims3) + this % data(t) % n_inelastic_mu = int(dims3(1), 4) + allocate(this % data(t) % inelastic_mu(dims3(1), dims3(2), dims3(3))) + call read_dataset(this % data(t) % inelastic_mu, dset_id) + call close_dataset(dset_id) + else + ! Read correlated angle-energy distribution + call correlated_dist % from_hdf5(inelastic_group) + + ! Convert to S(a,b) native format + n_energy = size(correlated_dist % energy) + allocate(this % data(t) % inelastic_data(n_energy)) + do i = 1, n_energy + associate (edist => correlated_dist % distribution(i)) + ! Get number of outgoing energies for incoming energy i + n_energy_out = size(edist % e_out) + this % data(t) % inelastic_data(i) % n_e_out = n_energy_out + allocate(this % data(t) % inelastic_data(i) % e_out(n_energy_out)) + allocate(this % data(t) % inelastic_data(i) % e_out_pdf(n_energy_out)) + allocate(this % data(t) % inelastic_data(i) % e_out_cdf(n_energy_out)) + + ! Copy outgoing energy distribution + this % data(t) % inelastic_data(i) % e_out(:) = edist % e_out + this % data(t) % inelastic_data(i) % e_out_pdf(:) = edist % p + this % data(t) % inelastic_data(i) % e_out_cdf(:) = edist % c + + do j = 1, n_energy_out + select type (adist => edist % angle(j) % obj) + type is (Tabular) + ! On first pass, allocate space for angles + if (j == 1) then + n_mu = size(adist % x) + this % data(t) % n_inelastic_mu = n_mu + allocate(this % data(t) % inelastic_data(i) % mu(& + n_mu, n_energy_out)) + end if + + ! Copy outgoing angles + this % data(t) % inelastic_data(i) % mu(:, j) = adist % x + end select + end do + end associate + end do + end if + + call close_group(inelastic_group) + end if + call close_group(T_group) + end do + + call close_group(kT_group) end subroutine salphabeta_from_hdf5 end module sab_header diff --git a/src/scattdata_header.F90 b/src/scattdata_header.F90 index 2066b36b9..d4643a072 100644 --- a/src/scattdata_header.F90 +++ b/src/scattdata_header.F90 @@ -1,10 +1,10 @@ module scattdata_header + use algorithm, only: binary_search use constants use error, only: fatal_error use math use random_lcg, only: prn - use search, only: binary_search implicit none diff --git a/src/search.F90 b/src/search.F90 deleted file mode 100644 index f338105f4..000000000 --- a/src/search.F90 +++ /dev/null @@ -1,143 +0,0 @@ -module search - - use constants - - implicit none - - integer, parameter :: MAX_ITERATION = 64 - - interface binary_search - module procedure binary_search_real, binary_search_int4, binary_search_int8 - end interface binary_search - -contains - -!=============================================================================== -! BINARY_SEARCH performs a binary search of an array to find where a specific -! value lies in the array. This is used extensively for energy grid searching -!=============================================================================== - - pure function binary_search_real(array, n, val) result(array_index) - - integer, intent(in) :: n - real(8), intent(in) :: array(n) - real(8), intent(in) :: val - integer :: array_index - - integer :: L - integer :: R - integer :: n_iteration - - L = 1 - R = n - - if (val < array(L) .or. val > array(R)) then - array_index = -1 - return - end if - - n_iteration = 0 - do while (R - L > 1) - ! Find values at midpoint - array_index = L + (R - L)/2 - if (val >= array(array_index)) then - L = array_index - else - R = array_index - end if - - ! check for large number of iterations - n_iteration = n_iteration + 1 - if (n_iteration == MAX_ITERATION) then - array_index = -2 - return - end if - end do - - array_index = L - - end function binary_search_real - - pure function binary_search_int4(array, n, val) result(array_index) - - integer, intent(in) :: n - integer, intent(in) :: array(n) - integer, intent(in) :: val - integer :: array_index - - integer :: L - integer :: R - integer :: n_iteration - - L = 1 - R = n - - if (val < array(L) .or. val > array(R)) then - array_index = -1 - return - end if - - n_iteration = 0 - do while (R - L > 1) - ! Find values at midpoint - array_index = L + (R - L)/2 - if (val >= array(array_index)) then - L = array_index - else - R = array_index - end if - - ! check for large number of iterations - n_iteration = n_iteration + 1 - if (n_iteration == MAX_ITERATION) then - array_index = -2 - return - end if - end do - - array_index = L - - end function binary_search_int4 - - pure function binary_search_int8(array, n, val) result(array_index) - - integer, intent(in) :: n - integer(8), intent(in) :: array(n) - integer(8), intent(in) :: val - integer :: array_index - - integer :: L - integer :: R - integer :: n_iteration - - L = 1 - R = n - - if (val < array(L) .or. val > array(R)) then - array_index = -1 - return - end if - - n_iteration = 0 - do while (R - L > 1) - ! Find values at midpoint - array_index = L + (R - L)/2 - if (val >= array(array_index)) then - L = array_index - else - R = array_index - end if - - ! check for large number of iterations - n_iteration = n_iteration + 1 - if (n_iteration == MAX_ITERATION) then - array_index = -2 - return - end if - end do - - array_index = L - - end function binary_search_int8 - -end module search diff --git a/src/secondary_correlated.F90 b/src/secondary_correlated.F90 index e163fdcc2..a0e203f33 100644 --- a/src/secondary_correlated.F90 +++ b/src/secondary_correlated.F90 @@ -2,13 +2,13 @@ module secondary_correlated use hdf5, only: HID_T, HSIZE_T + use algorithm, only: binary_search use angleenergy_header, only: AngleEnergy use constants, only: ZERO, ONE, HALF, TWO, HISTOGRAM, LINEAR_LINEAR use distribution_univariate, only: DistributionContainer, Tabular use hdf5_interface, only: get_shape, read_attribute, open_dataset, & read_dataset, close_dataset use random_lcg, only: prn - use search, only: binary_search !=============================================================================== ! CORRELATEDANGLEENERGY represents a correlated angle-energy distribution. This diff --git a/src/secondary_kalbach.F90 b/src/secondary_kalbach.F90 index 4b5e690b5..f963cff3f 100644 --- a/src/secondary_kalbach.F90 +++ b/src/secondary_kalbach.F90 @@ -2,12 +2,12 @@ module secondary_kalbach use hdf5, only: HID_T, HSIZE_T + use algorithm, only: binary_search use angleenergy_header, only: AngleEnergy use constants, only: ZERO, HALF, ONE, TWO, HISTOGRAM, LINEAR_LINEAR use hdf5_interface, only: read_attribute, read_dataset, open_dataset, & close_dataset, get_shape use random_lcg, only: prn - use search, only: binary_search !=============================================================================== ! KalbachMann represents a correlated angle-energy distribution with the angular diff --git a/src/source.F90 b/src/source.F90 index 452d8ddfc..9aeccde15 100644 --- a/src/source.F90 +++ b/src/source.F90 @@ -1,5 +1,11 @@ module source + use hdf5, only: HID_T +#ifdef MPI + use message_passing +#endif + + use algorithm, only: binary_search use bank_header, only: Bank use constants use distribution_univariate, only: Discrete @@ -12,17 +18,10 @@ module source use output, only: write_message use particle_header, only: Particle use random_lcg, only: prn, set_particle_seed, prn_set_stream - use search, only: binary_search use string, only: to_str use math use state_point, only: read_source_bank, write_source_bank -#ifdef MPI - use message_passing -#endif - - use hdf5, only: HID_T - implicit none contains diff --git a/src/summary.F90 b/src/summary.F90 index b02336d97..cc0c51758 100644 --- a/src/summary.F90 +++ b/src/summary.F90 @@ -115,36 +115,31 @@ contains integer :: i character(12), allocatable :: nucnames(:) real(8), allocatable :: awrs(:) - integer, allocatable :: zaids(:) ! Write useful data from nuclide objects nuclide_group = create_group(file_id, "nuclides") call write_dataset(nuclide_group, "n_nuclides_total", n_nuclides_total) - ! Build array of nuclide names, awrs, and zaids + ! Build array of nuclide names and awrs allocate(nucnames(n_nuclides_total)) allocate(awrs(n_nuclides_total)) - allocate(zaids(n_nuclides_total)) do i = 1, n_nuclides_total if (run_CE) then nucnames(i) = nuclides(i) % name awrs(i) = nuclides(i) % awr - zaids(i) = nuclides(i) % zaid else nucnames(i) = nuclides_MG(i) % obj % name awrs(i) = nuclides_MG(i) % obj % awr - zaids(i) = nuclides_MG(i) % obj % zaid end if end do - ! Write nuclide names, awrs and zaids + ! Write nuclide names and awrs call write_dataset(nuclide_group, "names", nucnames) call write_dataset(nuclide_group, "awrs", awrs) - call write_dataset(nuclide_group, "zaids", zaids) call close_group(nuclide_group) - deallocate(nucnames, awrs, zaids) + deallocate(nucnames, awrs) end subroutine write_nuclides @@ -527,10 +522,10 @@ contains call write_dataset(material_group, "index", i) ! Write name for this material - call write_dataset(material_group, "name", m%name) + call write_dataset(material_group, "name", m % name) ! Write atom density with units - call write_dataset(material_group, "atom_density", m%density) + call write_dataset(material_group, "atom_density", m % density) call write_attribute_string(material_group, "atom_density", "units", & "atom/b-cm") @@ -572,7 +567,6 @@ contains integer(HID_T), intent(in) :: file_id integer :: i, j, k - integer :: i_xs integer :: n_order ! loop index for moment orders integer :: nm_order ! loop index for Ynm moment orders integer(HID_T) :: tallies_group @@ -635,12 +629,7 @@ contains allocate(str_array(t%n_nuclide_bins)) NUCLIDE_LOOP: do j = 1, t%n_nuclide_bins if (t%nuclide_bins(j) > 0) then - i_xs = index(nuclides(t%nuclide_bins(j))%name, '.') - if (i_xs > 0) then - str_array(j) = nuclides(t%nuclide_bins(j))%name(1 : i_xs-1) - else - str_array(j) = nuclides(t%nuclide_bins(j))%name - end if + str_array(j) = nuclides(t % nuclide_bins(j)) % name else str_array(j) = 'total' end if diff --git a/src/tally.F90 b/src/tally.F90 index e46d0cee7..8f41631ac 100644 --- a/src/tally.F90 +++ b/src/tally.F90 @@ -1,5 +1,10 @@ module tally +#ifdef MPI + use message_passing +#endif + + use algorithm, only: binary_search use constants use error, only: fatal_error use geometry_header @@ -12,15 +17,10 @@ module tally use mesh_header, only: RegularMesh use output, only: header use particle_header, only: LocalCoord, Particle - use search, only: binary_search use string, only: to_str use tally_header, only: TallyResult use tally_filter -#ifdef MPI - use message_passing -#endif - implicit none integer :: position(N_FILTER_TYPES - 3) = 0 ! Tally map positioning array @@ -89,6 +89,7 @@ contains integer :: l ! loop index for nuclides in material integer :: m ! loop index for reactions integer :: q ! loop index for scoring bins + integer :: i_temp ! temperature index integer :: i_nuc ! index in nuclides array (from material) integer :: i_energy ! index in nuclide energy grid integer :: score_bin ! scoring bin, e.g. SCORE_FLUX @@ -888,16 +889,18 @@ contains if (i_nuclide > 0) then if (nuclides(i_nuclide)%reaction_index%has_key(score_bin)) then m = nuclides(i_nuclide)%reaction_index%get_key(score_bin) - associate (rxn => nuclides(i_nuclide) % reactions(m)) - ! Retrieve index on nuclide energy grid and interpolation - ! factor - i_energy = micro_xs(i_nuclide) % index_grid - f = micro_xs(i_nuclide) % interp_factor - if (i_energy >= rxn % threshold) then - score = ((ONE - f) * rxn % sigma(i_energy - & - rxn%threshold + 1) + f * rxn % sigma(i_energy - & - rxn%threshold + 2)) * atom_density * flux + ! Retrieve temperature and energy grid index and interpolation + ! factor + i_temp = micro_xs(i_nuclide) % index_temp + i_energy = micro_xs(i_nuclide) % index_grid + f = micro_xs(i_nuclide) % interp_factor + + associate (xs => nuclides(i_nuclide) % reactions(m) % xs(i_temp)) + if (i_energy >= xs % threshold) then + score = ((ONE - f) * xs % value(i_energy - & + xs % threshold + 1) + f * xs % value(i_energy - & + xs % threshold + 2)) * atom_density * flux end if end associate end if @@ -912,15 +915,18 @@ contains if (nuclides(i_nuc)%reaction_index%has_key(score_bin)) then m = nuclides(i_nuc)%reaction_index%get_key(score_bin) - associate (rxn => nuclides(i_nuc) % reactions(m)) - ! Retrieve index on nuclide energy grid and interpolation - ! factor - i_energy = micro_xs(i_nuc) % index_grid - f = micro_xs(i_nuc) % interp_factor - if (i_energy >= rxn % threshold) then - score = score + ((ONE - f) * rxn % sigma(i_energy - & - rxn%threshold + 1) + f * rxn % sigma(i_energy - & - rxn%threshold + 2)) * atom_density_ * flux + + ! Retrieve temperature and energy grid index and interpolation + ! factor + i_temp = micro_xs(i_nuc) % index_temp + i_energy = micro_xs(i_nuc) % index_grid + f = micro_xs(i_nuc) % interp_factor + + associate (xs => nuclides(i_nuc) % reactions(m) % xs(i_temp)) + if (i_energy >= xs % threshold) then + score = score + ((ONE - f) * xs % value(i_energy - & + xs % threshold + 1) + f * xs % value(i_energy - & + xs % threshold + 2)) * atom_density_ * flux end if end associate end if diff --git a/src/tally_filter.F90 b/src/tally_filter.F90 index b0453f713..51b93ac4c 100644 --- a/src/tally_filter.F90 +++ b/src/tally_filter.F90 @@ -1,5 +1,6 @@ module tally_filter + use algorithm, only: binary_search use constants, only: ONE, NO_BIN_FOUND, FP_PRECISION use dict_header, only: DictIntInt use geometry_header, only: BASE_UNIVERSE, RectLattice, HexLattice @@ -11,7 +12,6 @@ module tally_filter mesh_intersects_1d, mesh_intersects_2d, & mesh_intersects_3d use particle_header, only: Particle - use search, only: binary_search use string, only: to_str use tally_filter_header, only: TallyFilter, TallyFilterContainer diff --git a/src/tracking.F90 b/src/tracking.F90 index 69fb78c35..f2613146e 100644 --- a/src/tracking.F90 +++ b/src/tracking.F90 @@ -84,9 +84,10 @@ contains ! Calculate microscopic and macroscopic cross sections if (run_CE) then - ! If the material is the same as the last material and the energy of the - ! particle hasn't changed, we don't need to lookup cross sections again. - if (p % material /= p % last_material) call calculate_xs(p) + ! If the material is the same as the last material and the temperature + ! hasn't changed, we don't need to lookup cross sections again. + if (p % material /= p % last_material .or. & + p % sqrtkT /= p % last_sqrtkT) call calculate_xs(p) else ! Since the MGXS can be angle dependent, this needs to be done ! After every collision for the MGXS mode diff --git a/tests/1d_mgxs.xml b/tests/1d_mgxs.xml index 33b20464b..8704b49ad 100644 --- a/tests/1d_mgxs.xml +++ b/tests/1d_mgxs.xml @@ -4,8 +4,8 @@ 0.0000000E+00 2.0000000E+01 - uo2_iso.71c - uo2_iso.71c + uo2_iso + uo2_iso 2.5300000E-08 5 true @@ -44,8 +44,8 @@ - clad_iso.71c - clad_iso.71c + clad_iso + clad_iso 2.5300000E-08 5 false @@ -75,8 +75,8 @@ - lwtr_iso.71c - lwtr_iso.71c + lwtr_iso + lwtr_iso 2.5300000E-08 5 false @@ -106,8 +106,8 @@ - uo2_iso_mu.71c - uo2_iso_mu.71c + uo2_iso_mu + uo2_iso_mu 2.5300000E-08 32 true @@ -199,8 +199,8 @@ - clad_iso_mu.71c - clad_iso_mu.71c + clad_iso_mu + clad_iso_mu 2.5300000E-08 32 false @@ -283,8 +283,8 @@ - lwtr_iso_mu.71c - lwtr_iso_mu.71c + lwtr_iso_mu + lwtr_iso_mu 2.5300000E-08 32 false @@ -367,8 +367,8 @@ - uo2_ang.71c - uo2_ang.71c + uo2_ang + uo2_ang 2.5300000E-08 5 true @@ -1246,8 +1246,8 @@ - clad_ang.71c - clad_ang.71c + clad_ang + clad_ang 2.5300000E-08 5 false @@ -1930,8 +1930,8 @@ - lwtr_ang.71c - lwtr_ang.71c + lwtr_ang + lwtr_ang 2.5300000E-08 5 false @@ -2614,8 +2614,8 @@ - uo2_ang_mu.71c - uo2_ang_mu.71c + uo2_ang_mu + uo2_ang_mu 2.5300000E-08 32 true @@ -5158,8 +5158,8 @@ - clad_ang_mu.71c - clad_ang_mu.71c + clad_ang_mu + clad_ang_mu 2.5300000E-08 32 false @@ -7507,8 +7507,8 @@ - lwtr_ang_mu.71c - lwtr_ang_mu.71c + lwtr_ang_mu + lwtr_ang_mu 2.5300000E-08 32 false diff --git a/tests/input_set.py b/tests/input_set.py index 8d650cafb..94576acf0 100644 --- a/tests/input_set.py +++ b/tests/input_set.py @@ -74,7 +74,7 @@ class InputSet(object): cold_water.add_nuclide("O16", 1.0) cold_water.add_nuclide("B10", 6.490e-4) cold_water.add_nuclide("B11", 2.689e-3) - cold_water.add_s_alpha_beta('c_H_in_H2O', '71t') + cold_water.add_s_alpha_beta('c_H_in_H2O') hot_water = openmc.Material(name='Hot borated water', material_id=4) hot_water.set_density('atom/b-cm', 0.06614) @@ -82,7 +82,7 @@ class InputSet(object): hot_water.add_nuclide("O16", 1.0) hot_water.add_nuclide("B10", 6.490e-4) hot_water.add_nuclide("B11", 2.689e-3) - hot_water.add_s_alpha_beta('c_H_in_H2O', '71t') + hot_water.add_s_alpha_beta('c_H_in_H2O') rpv_steel = openmc.Material(name='Reactor pressure vessel steel', material_id=5) @@ -139,7 +139,7 @@ class InputSet(object): lower_rad_ref.add_nuclide("Cr52", 0.145407678031, 'wo') lower_rad_ref.add_nuclide("Cr53", 0.016806340306, 'wo') lower_rad_ref.add_nuclide("Cr54", 0.004261520857, 'wo') - lower_rad_ref.add_s_alpha_beta('c_H_in_H2O', '71t') + lower_rad_ref.add_s_alpha_beta('c_H_in_H2O') upper_rad_ref = openmc.Material(name='Upper radial reflector /' 'Top plate region', material_id=7) @@ -165,7 +165,7 @@ class InputSet(object): upper_rad_ref.add_nuclide("Cr52", 0.146766614995, 'wo') upper_rad_ref.add_nuclide("Cr53", 0.01696340737, 'wo') upper_rad_ref.add_nuclide("Cr54", 0.004301347765, 'wo') - upper_rad_ref.add_s_alpha_beta('c_H_in_H2O', '71t') + upper_rad_ref.add_s_alpha_beta('c_H_in_H2O') bot_plate = openmc.Material(name='Bottom plate region', material_id=8) bot_plate.set_density('g/cm3', 7.184) @@ -190,7 +190,7 @@ class InputSet(object): bot_plate.add_nuclide("Cr52", 0.157390026871, 'wo') bot_plate.add_nuclide("Cr53", 0.018191270146, 'wo') bot_plate.add_nuclide("Cr54", 0.004612692337, 'wo') - bot_plate.add_s_alpha_beta('c_H_in_H2O', '71t') + bot_plate.add_s_alpha_beta('c_H_in_H2O') bot_nozzle = openmc.Material(name='Bottom nozzle region', material_id=9) @@ -216,7 +216,7 @@ class InputSet(object): bot_nozzle.add_nuclide("Cr52", 0.124142524198, 'wo') bot_nozzle.add_nuclide("Cr53", 0.014348496148, 'wo') bot_nozzle.add_nuclide("Cr54", 0.003638294506, 'wo') - bot_nozzle.add_s_alpha_beta('c_H_in_H2O', '71t') + bot_nozzle.add_s_alpha_beta('c_H_in_H2O') top_nozzle = openmc.Material(name='Top nozzle region', material_id=10) top_nozzle.set_density('g/cm3', 1.746) @@ -241,7 +241,7 @@ class InputSet(object): top_nozzle.add_nuclide("Cr52", 0.107931450781, 'wo') top_nozzle.add_nuclide("Cr53", 0.012474806806, 'wo') top_nozzle.add_nuclide("Cr54", 0.003163190107, 'wo') - top_nozzle.add_s_alpha_beta('c_H_in_H2O', '71t') + top_nozzle.add_s_alpha_beta('c_H_in_H2O') top_fa = openmc.Material(name='Top of fuel assemblies', material_id=11) top_fa.set_density('g/cm3', 3.044) @@ -254,7 +254,7 @@ class InputSet(object): top_fa.add_nuclide("Zr92", 0.14759527104, 'wo') top_fa.add_nuclide("Zr94", 0.15280552077, 'wo') top_fa.add_nuclide("Zr96", 0.02511169542, 'wo') - top_fa.add_s_alpha_beta('c_H_in_H2O', '71t') + top_fa.add_s_alpha_beta('c_H_in_H2O') bot_fa = openmc.Material(name='Bottom of fuel assemblies', material_id=12) @@ -268,10 +268,9 @@ class InputSet(object): bot_fa.add_nuclide("Zr92", 0.1274914944, 'wo') bot_fa.add_nuclide("Zr94", 0.1319920622, 'wo') bot_fa.add_nuclide("Zr96", 0.0216912612, 'wo') - bot_fa.add_s_alpha_beta('c_H_in_H2O', '71t') + bot_fa.add_s_alpha_beta('c_H_in_H2O') # Define the materials file. - self.materials.default_xs = '71c' self.materials += (fuel, clad, cold_water, hot_water, rpv_steel, lower_rad_ref, upper_rad_ref, bot_plate, bot_nozzle, top_nozzle, top_fa, bot_fa) @@ -612,10 +611,9 @@ class PinCellInputSet(object): hot_water.add_nuclide("O16", 2.4672e-2) hot_water.add_nuclide("B10", 8.0042e-6) hot_water.add_nuclide("B11", 3.2218e-5) - hot_water.add_s_alpha_beta('c_H_in_H2O', '71t') + hot_water.add_s_alpha_beta('c_H_in_H2O') # Define the materials file. - self.materials.default_xs = '71c' self.materials += (fuel, clad, hot_water) # Instantiate ZCylinder surfaces @@ -714,10 +712,9 @@ class AssemblyInputSet(object): hot_water.add_nuclide("O16", 2.4672e-2) hot_water.add_nuclide("B10", 8.0042e-6) hot_water.add_nuclide("B11", 3.2218e-5) - hot_water.add_s_alpha_beta('c_H_in_H2O', '71t') + hot_water.add_s_alpha_beta('c_H_in_H2O') # Define the materials file. - self.materials.default_xs = '71c' self.materials += (fuel, clad, hot_water) # Instantiate ZCylinder surfaces @@ -829,23 +826,22 @@ class AssemblyInputSet(object): class MGInputSet(InputSet): def build_default_materials_and_geometry(self): # Define materials needed for 1D/1G slab problem - uo2_data = openmc.Macroscopic('uo2_iso', '71c') + 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_ang_mu', '71c') + 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) - water_data = openmc.Macroscopic('lwtr_iso_mu', '71c') + 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) # Define the materials file. - self.materials.default_xs = '71c' self.materials += (uo2, clad, water) # Define surfaces. diff --git a/tests/test_asymmetric_lattice/inputs_true.dat b/tests/test_asymmetric_lattice/inputs_true.dat index d503a3a0b..9d278724f 100644 --- a/tests/test_asymmetric_lattice/inputs_true.dat +++ b/tests/test_asymmetric_lattice/inputs_true.dat @@ -1 +1 @@ -a55899cd2ed0a8ec5d44003139da639f87f5f03ee76b2d6577db6a8c2014849e4277f8e68fa874ac6795e4cbc4eb6e4031d726cafe6e663e84787d1ecd8e7f86 \ No newline at end of file +dfb59bace10a91bb7ffc871d8ee87e91d94754bb8bb002ac6088f80fe0f480741c0489f74b753fc37158d0ff0f1368739ea60638b42083791311eefeac79168e \ No newline at end of file diff --git a/tests/test_cmfd_feed/materials.xml b/tests/test_cmfd_feed/materials.xml index 8f32169d9..70580e3a8 100644 --- a/tests/test_cmfd_feed/materials.xml +++ b/tests/test_cmfd_feed/materials.xml @@ -1,12 +1,12 @@ - + - - - + + + diff --git a/tests/test_cmfd_nofeed/materials.xml b/tests/test_cmfd_nofeed/materials.xml index 8f32169d9..70580e3a8 100644 --- a/tests/test_cmfd_nofeed/materials.xml +++ b/tests/test_cmfd_nofeed/materials.xml @@ -1,12 +1,12 @@ - + - - - + + + diff --git a/tests/test_complex_cell/materials.xml b/tests/test_complex_cell/materials.xml index a9e69b8bc..6edf0a5f9 100644 --- a/tests/test_complex_cell/materials.xml +++ b/tests/test_complex_cell/materials.xml @@ -1,8 +1,6 @@ - 71c - diff --git a/tests/test_confidence_intervals/materials.xml b/tests/test_confidence_intervals/materials.xml index 23d7f969d..0965c8783 100644 --- a/tests/test_confidence_intervals/materials.xml +++ b/tests/test_confidence_intervals/materials.xml @@ -2,8 +2,9 @@ + 294 - + diff --git a/tests/test_density/materials.xml b/tests/test_density/materials.xml index c474c5c65..7b49233ed 100644 --- a/tests/test_density/materials.xml +++ b/tests/test_density/materials.xml @@ -3,24 +3,24 @@ - + - + - + - - - + + + diff --git a/tests/test_distribmat/inputs_true.dat b/tests/test_distribmat/inputs_true.dat index 1212a28e5..d21da2f89 100644 --- a/tests/test_distribmat/inputs_true.dat +++ b/tests/test_distribmat/inputs_true.dat @@ -1 +1 @@ -46df57157980545d90b482acfb01f525b84c0e623fa93a5d9c08a65723d677ef1c092360219a3c7fcf5110c6ba32f1eacbd5c5eaed40be4bfe154f302400c0a4 \ No newline at end of file +6ae54c198e7659503d297e40be746a5bd72b35909fceed4b3ef357876b781946c0ea5021342556ef21f4034fa9e42b2c6014077c0efd3459dc063e6da4b12b59 \ No newline at end of file diff --git a/tests/test_distribmat/test_distribmat.py b/tests/test_distribmat/test_distribmat.py index a8d013996..ec19176c4 100644 --- a/tests/test_distribmat/test_distribmat.py +++ b/tests/test_distribmat/test_distribmat.py @@ -29,7 +29,6 @@ class DistribmatTestHarness(PyAPITestHarness): light_fuel.add_nuclide('U235', 1.0) mats_file = openmc.Materials([moderator, dense_fuel, light_fuel]) - mats_file.default_xs = '71c' mats_file.export_to_xml() diff --git a/tests/test_eigenvalue_genperbatch/materials.xml b/tests/test_eigenvalue_genperbatch/materials.xml index 23d7f969d..2472a7471 100644 --- a/tests/test_eigenvalue_genperbatch/materials.xml +++ b/tests/test_eigenvalue_genperbatch/materials.xml @@ -3,7 +3,7 @@ - + diff --git a/tests/test_eigenvalue_no_inactive/materials.xml b/tests/test_eigenvalue_no_inactive/materials.xml index 23d7f969d..2472a7471 100644 --- a/tests/test_eigenvalue_no_inactive/materials.xml +++ b/tests/test_eigenvalue_no_inactive/materials.xml @@ -3,7 +3,7 @@ - + diff --git a/tests/test_energy_grid/materials.xml b/tests/test_energy_grid/materials.xml index ed9b38d90..87a3b8fe1 100644 --- a/tests/test_energy_grid/materials.xml +++ b/tests/test_energy_grid/materials.xml @@ -3,9 +3,9 @@ - - - + + + diff --git a/tests/test_energy_grid/settings.xml b/tests/test_energy_grid/settings.xml index f925356a9..1e4b5937b 100644 --- a/tests/test_energy_grid/settings.xml +++ b/tests/test_energy_grid/settings.xml @@ -1,7 +1,7 @@ - nuclide + 20000 10 diff --git a/tests/test_energy_laws/materials.xml b/tests/test_energy_laws/materials.xml index c70e071cf..e63f4018c 100644 --- a/tests/test_energy_laws/materials.xml +++ b/tests/test_energy_laws/materials.xml @@ -1,6 +1,5 @@ - 71c diff --git a/tests/test_entropy/materials.xml b/tests/test_entropy/materials.xml index 23d7f969d..2472a7471 100644 --- a/tests/test_entropy/materials.xml +++ b/tests/test_entropy/materials.xml @@ -3,7 +3,7 @@ - + diff --git a/tests/test_filter_distribcell/case-1/materials.xml b/tests/test_filter_distribcell/case-1/materials.xml index 891cc9fd0..e7108b477 100644 --- a/tests/test_filter_distribcell/case-1/materials.xml +++ b/tests/test_filter_distribcell/case-1/materials.xml @@ -1,8 +1,6 @@ - 71c - diff --git a/tests/test_filter_distribcell/case-2/materials.xml b/tests/test_filter_distribcell/case-2/materials.xml index 891cc9fd0..794d410a3 100644 --- a/tests/test_filter_distribcell/case-2/materials.xml +++ b/tests/test_filter_distribcell/case-2/materials.xml @@ -1,9 +1,6 @@ - 71c - - diff --git a/tests/test_filter_distribcell/case-3/materials.xml b/tests/test_filter_distribcell/case-3/materials.xml index 6a5916a83..588912271 100644 --- a/tests/test_filter_distribcell/case-3/materials.xml +++ b/tests/test_filter_distribcell/case-3/materials.xml @@ -1,8 +1,6 @@ - 71c - diff --git a/tests/test_filter_distribcell/case-4/materials.xml b/tests/test_filter_distribcell/case-4/materials.xml index ab9f8688e..2eb744fe6 100644 --- a/tests/test_filter_distribcell/case-4/materials.xml +++ b/tests/test_filter_distribcell/case-4/materials.xml @@ -1,18 +1,19 @@ - 71c - - - + + + - - - - - + + + + + + - - - + + + + diff --git a/tests/test_filter_mesh_2d/materials.xml b/tests/test_filter_mesh_2d/materials.xml index f5a9e61be..8021f5f99 100644 --- a/tests/test_filter_mesh_2d/materials.xml +++ b/tests/test_filter_mesh_2d/materials.xml @@ -1,8 +1,6 @@ - 71c - @@ -59,7 +57,7 @@ - + @@ -69,7 +67,7 @@ - + @@ -128,7 +126,7 @@ - + @@ -155,7 +153,7 @@ - + @@ -182,7 +180,7 @@ - + @@ -209,7 +207,7 @@ - + @@ -236,7 +234,7 @@ - + @@ -251,7 +249,7 @@ - + @@ -266,7 +264,7 @@ - + diff --git a/tests/test_filter_mesh_3d/materials.xml b/tests/test_filter_mesh_3d/materials.xml index f5a9e61be..8021f5f99 100644 --- a/tests/test_filter_mesh_3d/materials.xml +++ b/tests/test_filter_mesh_3d/materials.xml @@ -1,8 +1,6 @@ - 71c - @@ -59,7 +57,7 @@ - + @@ -69,7 +67,7 @@ - + @@ -128,7 +126,7 @@ - + @@ -155,7 +153,7 @@ - + @@ -182,7 +180,7 @@ - + @@ -209,7 +207,7 @@ - + @@ -236,7 +234,7 @@ - + @@ -251,7 +249,7 @@ - + @@ -266,7 +264,7 @@ - + diff --git a/tests/test_fixed_source/materials.xml b/tests/test_fixed_source/materials.xml index 6c52b2501..6e4249da3 100644 --- a/tests/test_fixed_source/materials.xml +++ b/tests/test_fixed_source/materials.xml @@ -3,8 +3,8 @@ - - + + diff --git a/tests/test_fixed_source/settings.xml b/tests/test_fixed_source/settings.xml index 8a0ddb251..1e9b85d5a 100644 --- a/tests/test_fixed_source/settings.xml +++ b/tests/test_fixed_source/settings.xml @@ -6,6 +6,8 @@ 100 + 294 + diff --git a/tests/test_infinite_cell/materials.xml b/tests/test_infinite_cell/materials.xml index 1c2d64942..6acd8df74 100644 --- a/tests/test_infinite_cell/materials.xml +++ b/tests/test_infinite_cell/materials.xml @@ -3,12 +3,12 @@ - + - + diff --git a/tests/test_iso_in_lab/inputs_true.dat b/tests/test_iso_in_lab/inputs_true.dat index 34f522872..310bccb13 100644 --- a/tests/test_iso_in_lab/inputs_true.dat +++ b/tests/test_iso_in_lab/inputs_true.dat @@ -1 +1 @@ -c05fdb7815ccc1dcd2f260429b9139ad96ad4a7d1643e2bb938e3cd61268451363538ef4e41c5eaf73a64dbace43b2bd4489d5ff012a33104c2c1d6fa61146eb \ No newline at end of file +4b3d0270a479e65579b305d1c2339b76971790bc7371c685efa6e2d341980fec301cf0859c34796ae04ae98aa01ab8b4905a8d8a3a916895c36d82ca6b58fb39 \ No newline at end of file diff --git a/tests/test_lattice/materials.xml b/tests/test_lattice/materials.xml index 67240c4c9..971f5c548 100644 --- a/tests/test_lattice/materials.xml +++ b/tests/test_lattice/materials.xml @@ -10,8 +10,6 @@ =============================================================== --> - 71c - @@ -27,7 +25,7 @@ - + @@ -37,7 +35,7 @@ - + @@ -75,7 +73,7 @@ - + @@ -88,9 +86,9 @@ - + - + @@ -128,7 +126,7 @@ - + diff --git a/tests/test_lattice_hex/materials.xml b/tests/test_lattice_hex/materials.xml index 92d10fa81..c7649fcf9 100644 --- a/tests/test_lattice_hex/materials.xml +++ b/tests/test_lattice_hex/materials.xml @@ -1,42 +1,42 @@ - + - - - + + + - + - - - + + + - + - - - - - + + + + + - + - - - - - - - + + + + + + + diff --git a/tests/test_lattice_mixed/materials.xml b/tests/test_lattice_mixed/materials.xml index 92d10fa81..c7649fcf9 100644 --- a/tests/test_lattice_mixed/materials.xml +++ b/tests/test_lattice_mixed/materials.xml @@ -1,42 +1,42 @@ - + - - - + + + - + - - - + + + - + - - - - - + + + + + - + - - - - - - - + + + + + + + diff --git a/tests/test_lattice_multiple/materials.xml b/tests/test_lattice_multiple/materials.xml index f5a9e61be..8021f5f99 100644 --- a/tests/test_lattice_multiple/materials.xml +++ b/tests/test_lattice_multiple/materials.xml @@ -1,8 +1,6 @@ - 71c - @@ -59,7 +57,7 @@ - + @@ -69,7 +67,7 @@ - + @@ -128,7 +126,7 @@ - + @@ -155,7 +153,7 @@ - + @@ -182,7 +180,7 @@ - + @@ -209,7 +207,7 @@ - + @@ -236,7 +234,7 @@ - + @@ -251,7 +249,7 @@ - + @@ -266,7 +264,7 @@ - + diff --git a/tests/test_mg_basic/inputs_true.dat b/tests/test_mg_basic/inputs_true.dat index 3f83de760..fad74ca82 100644 --- a/tests/test_mg_basic/inputs_true.dat +++ b/tests/test_mg_basic/inputs_true.dat @@ -1 +1 @@ -2fdba76bad058eec6e43657692ef759de79c934076067d4ec5c9f2bdb131877e001f67e16b16bb14889e5e0a1ba84c780979b9d6772573aa6f82d979774c2af8 \ No newline at end of file +e843dbee8b989142d68e78f7a3e83309a9982c0127974ba4b6a58c823ce298e8fffc8828b48aa696f045818a2a80ef4003f5a191f33aacef7d7dd72c950855a6 \ No newline at end of file diff --git a/tests/test_mg_max_order/inputs_true.dat b/tests/test_mg_max_order/inputs_true.dat index 63bdaab03..d827cfaa4 100644 --- a/tests/test_mg_max_order/inputs_true.dat +++ b/tests/test_mg_max_order/inputs_true.dat @@ -1 +1 @@ -60a35864ad71646309d7f1687ba0826d4d53a5b2e8babf73614362645205484bad3c0e7bf605ec0b11cadf58474b2e3d0a97bf2d9297f9118682c37ff0269afd \ No newline at end of file +7d508b1f3a2661566b8e8cb76fee61aecb96e8b60d633b06f13c4600bd854ea3366cdebd033c0a71ffb8adb90a9aeb64fe5ac0ef3235260921f5689c93e54305 \ No newline at end of file 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 088f6914b..da699316c 100644 --- a/tests/test_mg_max_order/test_mg_max_order.py +++ b/tests/test_mg_max_order/test_mg_max_order.py @@ -10,23 +10,22 @@ 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', '71c') + 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', '71c') + 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', '71c') + 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.default_xs = '71c' self.materials += (uo2, clad, water) # Define surfaces. diff --git a/tests/test_mg_nuclide/inputs_true.dat b/tests/test_mg_nuclide/inputs_true.dat index e0af3352b..18811f285 100644 --- a/tests/test_mg_nuclide/inputs_true.dat +++ b/tests/test_mg_nuclide/inputs_true.dat @@ -1 +1 @@ -0efba3dd7882fdd38756d0a8f01ff00d7a1abdaab6430b3f090f3339e552448453bbb733852b6bd6ff09608d923c282f168320f942fc2eb3a45610873c588734 \ No newline at end of file +be296da93031694b2915e1a10e3e6fd663d612cdd29a84745e3ccb0065c088b4bcda45f6919962f6ee784efe52ebe178bf7d3ce019859637ae57c2da1e240a04 \ No newline at end of file diff --git a/tests/test_mg_tallies/inputs_true.dat b/tests/test_mg_tallies/inputs_true.dat index 41bbd2136..e1f3385a4 100644 --- a/tests/test_mg_tallies/inputs_true.dat +++ b/tests/test_mg_tallies/inputs_true.dat @@ -1 +1 @@ -6c437c3f9281c52a80a9b166971aa0f5db7ff8b6cf65c79b6d7bf294fad30cc7044f6a665cd9059f8580441bcbb581f7152ff5bccbc21fbcc407847ea6fe3306 \ No newline at end of file +b607875dcaecb7110e396a62100182818b8b2853ec9921194b7ab00d6156373b01394ad8bd729babf7d258e6d9c599f6944c6857cd9d2f65ea98e245ee3cf010 \ No newline at end of file diff --git a/tests/test_mgxs_library_ce_to_mg/inputs_true.dat b/tests/test_mgxs_library_ce_to_mg/inputs_true.dat index 332c2df5f..7b30f9122 100644 --- a/tests/test_mgxs_library_ce_to_mg/inputs_true.dat +++ b/tests/test_mgxs_library_ce_to_mg/inputs_true.dat @@ -1 +1 @@ -fb9c9180f692198548ca14543b29a8b623b382a19932999b2140ca4dd440f2102ba2fdbcb500ede3b8829aa85e1b4498151d280f1422d2d6b1bb5789aff34d71 \ No newline at end of file +5c35e26926a43abf3ddcf782b09d96ce82d447a7db9ee9994c0aa811e431f8c06c11ce022c2a6ccf8d5f79f1cdedee2e8c20ca6d1e7cc5129ebcfae9568b2f87 \ No newline at end of file diff --git a/tests/test_mgxs_library_ce_to_mg/test_mgxs_library_ce_to_mg.py b/tests/test_mgxs_library_ce_to_mg/test_mgxs_library_ce_to_mg.py index 0f7cba4a8..baa54b018 100644 --- a/tests/test_mgxs_library_ce_to_mg/test_mgxs_library_ce_to_mg.py +++ b/tests/test_mgxs_library_ce_to_mg/test_mgxs_library_ce_to_mg.py @@ -83,6 +83,7 @@ class MGXSTestHarness(PyAPITestHarness): returncode = openmc.run(openmc_exec=self._opts.exe) def _cleanup(self): + return super(MGXSTestHarness, self)._cleanup() f = os.path.join(os.getcwd(), 'mgxs.xml') if os.path.exists(f): diff --git a/tests/test_mgxs_library_condense/inputs_true.dat b/tests/test_mgxs_library_condense/inputs_true.dat index e58015868..328d68b05 100644 --- a/tests/test_mgxs_library_condense/inputs_true.dat +++ b/tests/test_mgxs_library_condense/inputs_true.dat @@ -1 +1 @@ -08c5f1c783dd88c5fed51c054718ca09fc4e99aa4560a6f928b3902991948f3a878d055ac46c07548904285c2c5f22dc2a3d8c1bb82b8e73d76dd790820117df \ No newline at end of file +2b2a2f5778b03f87d20fa6da96cc19db0489f69d4d5f0cac02dd407fd8e53a082081bfef35c4310cb2e0651254766d499e89279e711fd6fd93f913c964855839 \ No newline at end of file diff --git a/tests/test_mgxs_library_distribcell/inputs_true.dat b/tests/test_mgxs_library_distribcell/inputs_true.dat index 924c53838..67509bd51 100644 --- a/tests/test_mgxs_library_distribcell/inputs_true.dat +++ b/tests/test_mgxs_library_distribcell/inputs_true.dat @@ -1 +1 @@ -9ce3d6987d67e92b0924916bb54288429d2bd6dfd12a69f86c5dbefb407f7eb72adb0e44d558c09e9a39610ffeb651aee4aedc629cf3a28a181d62ca4cfbcd5a \ No newline at end of file +ad427594bd8a68ad35382bc34b5932e7c78480b6e327caf63782d563fd6e6e5fb4e7b0dfd9094394a5db092f789c473dbb08cb6b3d0c0296edcfc247dbe95d6f \ No newline at end of file diff --git a/tests/test_mgxs_library_hdf5/inputs_true.dat b/tests/test_mgxs_library_hdf5/inputs_true.dat index e58015868..328d68b05 100644 --- a/tests/test_mgxs_library_hdf5/inputs_true.dat +++ b/tests/test_mgxs_library_hdf5/inputs_true.dat @@ -1 +1 @@ -08c5f1c783dd88c5fed51c054718ca09fc4e99aa4560a6f928b3902991948f3a878d055ac46c07548904285c2c5f22dc2a3d8c1bb82b8e73d76dd790820117df \ No newline at end of file +2b2a2f5778b03f87d20fa6da96cc19db0489f69d4d5f0cac02dd407fd8e53a082081bfef35c4310cb2e0651254766d499e89279e711fd6fd93f913c964855839 \ No newline at end of file diff --git a/tests/test_mgxs_library_mesh/inputs_true.dat b/tests/test_mgxs_library_mesh/inputs_true.dat index f62e0aa05..9e2bc06f1 100644 --- a/tests/test_mgxs_library_mesh/inputs_true.dat +++ b/tests/test_mgxs_library_mesh/inputs_true.dat @@ -1 +1 @@ -5f167bdd4d6ae5873d48483e85aceaec8a934239ed5a50ef6f6500ce204f5851ae330621a5007f3b3d6bdab49f2cd627d011c1f6e6983fec958a6984eb9cb7ca \ No newline at end of file +68c7695d7ae0367c59155eab05d3fe859cae895170f2cd32d4463af340a9a2035be16221b1eda8e2a1132bfe1b8163ca8d964fb1b23274c232fb10fd88274aea \ No newline at end of file diff --git a/tests/test_mgxs_library_no_nuclides/inputs_true.dat b/tests/test_mgxs_library_no_nuclides/inputs_true.dat index e58015868..328d68b05 100644 --- a/tests/test_mgxs_library_no_nuclides/inputs_true.dat +++ b/tests/test_mgxs_library_no_nuclides/inputs_true.dat @@ -1 +1 @@ -08c5f1c783dd88c5fed51c054718ca09fc4e99aa4560a6f928b3902991948f3a878d055ac46c07548904285c2c5f22dc2a3d8c1bb82b8e73d76dd790820117df \ No newline at end of file +2b2a2f5778b03f87d20fa6da96cc19db0489f69d4d5f0cac02dd407fd8e53a082081bfef35c4310cb2e0651254766d499e89279e711fd6fd93f913c964855839 \ No newline at end of file diff --git a/tests/test_mgxs_library_nuclides/inputs_true.dat b/tests/test_mgxs_library_nuclides/inputs_true.dat index a15bbee4c..593111f32 100644 --- a/tests/test_mgxs_library_nuclides/inputs_true.dat +++ b/tests/test_mgxs_library_nuclides/inputs_true.dat @@ -1 +1 @@ -e4a5f03ab6167e96462c4ef537533fe33b98d7878ae00824c5619356bda8d548b3c71af01ba8c88d5a9b46dd1471d331e6f678a164af922200f2ee3642be6340 \ No newline at end of file +63f6f8ae24e0d8e23731c903a59e3f5e0edff730933ef6f8836ebf78949db75542c5794a6486c27016ad22e4375b8a18092cd1d1e025162afd01936cac2f205b \ No newline at end of file diff --git a/tests/test_multipole/inputs_true.dat b/tests/test_multipole/inputs_true.dat index 801536d07..930be9536 100644 --- a/tests/test_multipole/inputs_true.dat +++ b/tests/test_multipole/inputs_true.dat @@ -1 +1 @@ -c727431ebef7a5987dade28f4cd940c566142f97b5ce01fbf9343d680caf9056623f0fac550db64f8f1043fa2cd8230155cfcbbcaffd1ae92cede723974596d7 \ No newline at end of file +8462e17d102259b3a48a7e908bc75038a28a19d4a5e8bd38f26579e5baf3998bc2d05d1d3055ac1ed478d0c01bd64868d654919c2e6ca3fea86d79f03eda25ef \ No newline at end of file diff --git a/tests/test_multipole/results_true.dat b/tests/test_multipole/results_true.dat index d138fa16a..4d379b3f4 100644 --- a/tests/test_multipole/results_true.dat +++ b/tests/test_multipole/results_true.dat @@ -1,5 +1,5 @@ k-combined: -1.457760E+00 1.119659E-02 +1.425673E+00 1.779969E-02 Cell ID = 11 Name = diff --git a/tests/test_multipole/test_multipole.py b/tests/test_multipole/test_multipole.py index bd6822bdf..a44489aa5 100644 --- a/tests/test_multipole/test_multipole.py +++ b/tests/test_multipole/test_multipole.py @@ -7,7 +7,6 @@ import openmc from openmc.stats import Box from openmc.source import Source - class MultipoleTestHarness(PyAPITestHarness): def _build_inputs(self): #################### @@ -24,29 +23,20 @@ class MultipoleTestHarness(PyAPITestHarness): dense_fuel.add_nuclide('U235', 1.0) mats_file = openmc.Materials([moderator, dense_fuel]) - mats_file.default_xs = '71c' mats_file.export_to_xml() - #################### # Geometry #################### - c1 = openmc.Cell(cell_id=1) - c1.fill = moderator - mod_univ = openmc.Universe(universe_id=1) - mod_univ.add_cell(c1) + c1 = openmc.Cell(cell_id=1, fill=moderator) + mod_univ = openmc.Universe(universe_id=1, cells=(c1,)) r0 = openmc.ZCylinder(R=0.3) - c11 = openmc.Cell(cell_id=11) - c11.region = -r0 - c11.fill = dense_fuel + c11 = openmc.Cell(cell_id=11, fill=dense_fuel, region=-r0) c11.temperature = [500, 0, 700, 800] - c12 = openmc.Cell(cell_id=12) - c12.region = +r0 - c12.fill = moderator - fuel_univ = openmc.Universe(universe_id=11) - fuel_univ.add_cells((c11, c12)) + c12 = openmc.Cell(cell_id=12, fill=moderator, region=+r0) + fuel_univ = openmc.Universe(universe_id=11, cells=(c11, c12)) lat = openmc.RectLattice(lattice_id=101) lat.dimension = [2, 2] @@ -61,17 +51,12 @@ class MultipoleTestHarness(PyAPITestHarness): y1 = openmc.YPlane(y0=3.0) for s in [x0, x1, y0, y1]: s.boundary_type = 'reflective' - c101 = openmc.Cell(cell_id=101) - c101.region = +x0 & -x1 & +y0 & -y1 - c101.fill = lat - root_univ = openmc.Universe(universe_id=0) - root_univ.add_cell(c101) + c101 = openmc.Cell(cell_id=101, fill=lat, region=+x0 & -x1 & +y0 & -y1) + root_univ = openmc.Universe(universe_id=0, cells=(c101,)) - geometry = openmc.Geometry() - geometry.root_universe = root_univ + geometry = openmc.Geometry(root_univ) geometry.export_to_xml() - #################### # Settings #################### @@ -82,10 +67,9 @@ class MultipoleTestHarness(PyAPITestHarness): sets_file.particles = 1000 sets_file.source = Source(space=Box([-1, -1, -1], [1, 1, 1])) sets_file.output = {'summary': True} - sets_file.use_windowed_multipole=True + sets_file.temperature = {'method': 'multipole'} sets_file.export_to_xml() - #################### # Plots #################### diff --git a/tests/test_natural_element/materials.xml b/tests/test_natural_element/materials.xml index 60d60b81f..6568951f4 100644 --- a/tests/test_natural_element/materials.xml +++ b/tests/test_natural_element/materials.xml @@ -3,8 +3,6 @@ - 71c - diff --git a/tests/test_output/materials.xml b/tests/test_output/materials.xml index 23d7f969d..2472a7471 100644 --- a/tests/test_output/materials.xml +++ b/tests/test_output/materials.xml @@ -3,7 +3,7 @@ - + diff --git a/tests/test_output/settings.xml b/tests/test_output/settings.xml index fef5e2fcf..e2f3fc018 100644 --- a/tests/test_output/settings.xml +++ b/tests/test_output/settings.xml @@ -1,7 +1,7 @@ - + 10 diff --git a/tests/test_output/test_output.py b/tests/test_output/test_output.py index 8e36ead80..81f8f42c8 100644 --- a/tests/test_output/test_output.py +++ b/tests/test_output/test_output.py @@ -19,10 +19,6 @@ class OutputTestHarness(TestHarness): assert summary[0].endswith('h5'),\ 'Summary file is not a HDF5 file.' - # Check for the cross sections. - assert os.path.exists(os.path.join(os.getcwd(), 'cross_sections.out')),\ - 'Cross section output file does not exist.' - def _cleanup(self): TestHarness._cleanup(self) output = glob.glob(os.path.join(os.getcwd(), 'summary.*')) diff --git a/tests/test_particle_restart_eigval/materials.xml b/tests/test_particle_restart_eigval/materials.xml index 5ff4b736f..3aa37fca6 100644 --- a/tests/test_particle_restart_eigval/materials.xml +++ b/tests/test_particle_restart_eigval/materials.xml @@ -3,7 +3,7 @@ - + diff --git a/tests/test_particle_restart_fixed/materials.xml b/tests/test_particle_restart_fixed/materials.xml index f132f9763..f3851d7ef 100644 --- a/tests/test_particle_restart_fixed/materials.xml +++ b/tests/test_particle_restart_fixed/materials.xml @@ -3,7 +3,7 @@ - + diff --git a/tests/test_periodic/inputs_true.dat b/tests/test_periodic/inputs_true.dat index 56d3e01bf..ed1bc7d1b 100644 --- a/tests/test_periodic/inputs_true.dat +++ b/tests/test_periodic/inputs_true.dat @@ -1 +1 @@ -0766f3e0ac9b3d26bf5529eb3c92e0337698994d663b6a68dd8c1340807d6941c7589d777430782bc7b78590adced55f0f55b1de71a7c70d453f78d4ca469d8d \ No newline at end of file +259ea7c22920ddea0bc076ee77d35e76f36d2c7043cb8d036b182a11fd7d0f6524e3cbd9c6b0bf4a1af905ebe10b765d3d43e43e899d3edbb601baf6fd172365 \ No newline at end of file diff --git a/tests/test_periodic/test_periodic.py b/tests/test_periodic/test_periodic.py index 026071104..3883654c1 100644 --- a/tests/test_periodic/test_periodic.py +++ b/tests/test_periodic/test_periodic.py @@ -13,7 +13,7 @@ class PeriodicTest(PyAPITestHarness): water = openmc.Material(1) water.add_nuclide('H1', 2.0) water.add_nuclide('O16', 1.0) - water.add_s_alpha_beta('c_H_in_H2O', '71t') + water.add_s_alpha_beta('c_H_in_H2O') water.set_density('g/cc', 1.0) fuel = openmc.Material(2) @@ -21,7 +21,7 @@ class PeriodicTest(PyAPITestHarness): fuel.set_density('g/cc', 4.5) materials = openmc.Materials((water, fuel)) - materials.default_xs = '71c' + materials.default_temperature = '294K' materials.export_to_xml() # Define geometry diff --git a/tests/test_plot/materials.xml b/tests/test_plot/materials.xml index 826f670a4..90b354267 100644 --- a/tests/test_plot/materials.xml +++ b/tests/test_plot/materials.xml @@ -3,17 +3,17 @@ - + - + - + diff --git a/tests/test_ptables_off/materials.xml b/tests/test_ptables_off/materials.xml index 23d7f969d..2472a7471 100644 --- a/tests/test_ptables_off/materials.xml +++ b/tests/test_ptables_off/materials.xml @@ -3,7 +3,7 @@ - + diff --git a/tests/test_quadric_surfaces/materials.xml b/tests/test_quadric_surfaces/materials.xml index 606253bec..f68768383 100644 --- a/tests/test_quadric_surfaces/materials.xml +++ b/tests/test_quadric_surfaces/materials.xml @@ -3,8 +3,8 @@ - - + + diff --git a/tests/test_reflective_plane/materials.xml b/tests/test_reflective_plane/materials.xml index 23d7f969d..2472a7471 100644 --- a/tests/test_reflective_plane/materials.xml +++ b/tests/test_reflective_plane/materials.xml @@ -3,7 +3,7 @@ - + diff --git a/tests/test_resonance_scattering/inputs_true.dat b/tests/test_resonance_scattering/inputs_true.dat index fdfb2b84e..7b515cd1c 100644 --- a/tests/test_resonance_scattering/inputs_true.dat +++ b/tests/test_resonance_scattering/inputs_true.dat @@ -1 +1 @@ -a97844ec7ab45b9e8c1d5849c99414dfa1408956fd951fa783ffa99f78770cd4644a3fb5abe038b0f835ef233ccea2b014e8bd7448f06769944383035ef38ac6 \ No newline at end of file +15d4ce20d34fbafc757689f1a1f014c42b25efd1cac6bbefdd284c5c1af8bca264c75055fef719441655a61201d0ef098c82cacaa2aeea2b410d3006e983a942 \ No newline at end of file diff --git a/tests/test_resonance_scattering/test_resonance_scattering.py b/tests/test_resonance_scattering/test_resonance_scattering.py index 0d70c0d8d..3daf5a387 100644 --- a/tests/test_resonance_scattering/test_resonance_scattering.py +++ b/tests/test_resonance_scattering/test_resonance_scattering.py @@ -9,16 +9,21 @@ import openmc class ResonanceScatteringTestHarness(PyAPITestHarness): def _build_inputs(self): + # Nuclides + u238 = openmc.Nuclide('U238') + u235 = openmc.Nuclide('U235') + pu239 = openmc.Nuclide('Pu239') + h1 = openmc.Nuclide('H1') + # Materials mat = openmc.Material(material_id=1) mat.set_density('g/cc', 1.0) - mat.add_nuclide('U238', 1.0) - mat.add_nuclide('U235', 0.02) - mat.add_nuclide('Pu239', 0.02) - mat.add_nuclide('H1', 20.0) + mat.add_nuclide(u238, 1.0) + mat.add_nuclide(u235, 0.02) + mat.add_nuclide(pu239, 0.02) + mat.add_nuclide(h1, 20.0) mats_file = openmc.Materials([mat]) - mats_file.default_xs = '71c' mats_file.export_to_xml() # Geometry @@ -37,29 +42,9 @@ class ResonanceScatteringTestHarness(PyAPITestHarness): geometry.export_to_xml() # Settings - nuclide = openmc.Nuclide('U238', '71c') - res_scatt_dbrc = openmc.ResonanceScattering() - res_scatt_dbrc.nuclide = nuclide - res_scatt_dbrc.nuclide_0K = nuclide # This is a bad idea! Just for tests - res_scatt_dbrc.method = 'DBRC' - res_scatt_dbrc.E_min = 1e-6 - res_scatt_dbrc.E_max = 210e-6 - - nuclide = openmc.Nuclide('U235', '71c') - res_scatt_wcm = openmc.ResonanceScattering() - res_scatt_wcm.nuclide = nuclide - res_scatt_wcm.nuclide_0K = nuclide - res_scatt_wcm.method = 'WCM' - res_scatt_wcm.E_min = 1e-6 - res_scatt_wcm.E_max = 210e-6 - - nuclide = openmc.Nuclide('Pu239', '71c') - res_scatt_ares = openmc.ResonanceScattering() - res_scatt_ares.nuclide = nuclide - res_scatt_ares.nuclide_0K = nuclide - res_scatt_ares.method = 'ARES' - res_scatt_ares.E_min = 1e-6 - res_scatt_ares.E_max = 210e-6 + res_scatt_dbrc = openmc.ResonanceScattering(u238, 'DBRC', 1e-6, 210e-6) + res_scatt_wcm = openmc.ResonanceScattering(u235, 'WCM', 1e-6, 210e-6) + res_scatt_ares = openmc.ResonanceScattering(pu239, 'ARES', 1e-6, 210e-6) sets_file = openmc.Settings() sets_file.batches = 10 diff --git a/tests/test_rotation/materials.xml b/tests/test_rotation/materials.xml index 23d7f969d..2472a7471 100644 --- a/tests/test_rotation/materials.xml +++ b/tests/test_rotation/materials.xml @@ -3,7 +3,7 @@ - + diff --git a/tests/test_salphabeta/materials.xml b/tests/test_salphabeta/materials.xml index 2bc401e49..bfe0a6224 100644 --- a/tests/test_salphabeta/materials.xml +++ b/tests/test_salphabeta/materials.xml @@ -1,20 +1,18 @@ - 71c - - + - + @@ -22,8 +20,8 @@ - - + + @@ -36,8 +34,8 @@ - - + + diff --git a/tests/test_score_current/materials.xml b/tests/test_score_current/materials.xml index f5a9e61be..8021f5f99 100644 --- a/tests/test_score_current/materials.xml +++ b/tests/test_score_current/materials.xml @@ -1,8 +1,6 @@ - 71c - @@ -59,7 +57,7 @@ - + @@ -69,7 +67,7 @@ - + @@ -128,7 +126,7 @@ - + @@ -155,7 +153,7 @@ - + @@ -182,7 +180,7 @@ - + @@ -209,7 +207,7 @@ - + @@ -236,7 +234,7 @@ - + @@ -251,7 +249,7 @@ - + @@ -266,7 +264,7 @@ - + diff --git a/tests/test_seed/materials.xml b/tests/test_seed/materials.xml index 23d7f969d..2472a7471 100644 --- a/tests/test_seed/materials.xml +++ b/tests/test_seed/materials.xml @@ -3,7 +3,7 @@ - + diff --git a/tests/test_source/inputs_true.dat b/tests/test_source/inputs_true.dat index f11998e6c..0c8f18194 100644 --- a/tests/test_source/inputs_true.dat +++ b/tests/test_source/inputs_true.dat @@ -1 +1 @@ -27ceb546499a4134eac08ffb22d02ce21d67f12617d43a02991b443e9aca7b7eca818d03e146676c0b352abaef6505423e48edef24cfd7a8fdb148cb3dbcdb1f \ No newline at end of file +b791dc4a37d20599afe375d91a9c6da123d6579cdc3ae7093a4a464c82bce43f2349fc6828f0b5d9f6b11b8a1aa1031459cd19f2771277ef40d775fedb68c00f \ No newline at end of file diff --git a/tests/test_source/test_source.py b/tests/test_source/test_source.py index 09a13efaa..ce9012bc2 100644 --- a/tests/test_source/test_source.py +++ b/tests/test_source/test_source.py @@ -13,9 +13,9 @@ import openmc class SourceTestHarness(PyAPITestHarness): def _build_inputs(self): - mat1 = openmc.Material(material_id=1) + mat1 = openmc.Material(material_id=1, temperature='294') mat1.set_density('g/cm3', 4.5) - mat1.add_nuclide(openmc.Nuclide('U235', '71c'), 1.0) + mat1.add_nuclide(openmc.Nuclide('U235'), 1.0) materials = openmc.Materials([mat1]) materials.export_to_xml() diff --git a/tests/test_source_file/materials.xml b/tests/test_source_file/materials.xml index 23d7f969d..2472a7471 100644 --- a/tests/test_source_file/materials.xml +++ b/tests/test_source_file/materials.xml @@ -3,7 +3,7 @@ - + diff --git a/tests/test_sourcepoint_batch/materials.xml b/tests/test_sourcepoint_batch/materials.xml index 23d7f969d..2472a7471 100644 --- a/tests/test_sourcepoint_batch/materials.xml +++ b/tests/test_sourcepoint_batch/materials.xml @@ -3,7 +3,7 @@ - + diff --git a/tests/test_sourcepoint_interval/materials.xml b/tests/test_sourcepoint_interval/materials.xml index 23d7f969d..2472a7471 100644 --- a/tests/test_sourcepoint_interval/materials.xml +++ b/tests/test_sourcepoint_interval/materials.xml @@ -3,7 +3,7 @@ - + diff --git a/tests/test_sourcepoint_latest/materials.xml b/tests/test_sourcepoint_latest/materials.xml index 23d7f969d..2472a7471 100644 --- a/tests/test_sourcepoint_latest/materials.xml +++ b/tests/test_sourcepoint_latest/materials.xml @@ -3,7 +3,7 @@ - + diff --git a/tests/test_sourcepoint_restart/materials.xml b/tests/test_sourcepoint_restart/materials.xml index 23d7f969d..2472a7471 100644 --- a/tests/test_sourcepoint_restart/materials.xml +++ b/tests/test_sourcepoint_restart/materials.xml @@ -3,7 +3,7 @@ - + diff --git a/tests/test_statepoint_batch/materials.xml b/tests/test_statepoint_batch/materials.xml index 23d7f969d..2472a7471 100644 --- a/tests/test_statepoint_batch/materials.xml +++ b/tests/test_statepoint_batch/materials.xml @@ -3,7 +3,7 @@ - + diff --git a/tests/test_statepoint_interval/materials.xml b/tests/test_statepoint_interval/materials.xml index 23d7f969d..2472a7471 100644 --- a/tests/test_statepoint_interval/materials.xml +++ b/tests/test_statepoint_interval/materials.xml @@ -3,7 +3,7 @@ - + diff --git a/tests/test_statepoint_restart/materials.xml b/tests/test_statepoint_restart/materials.xml index 23d7f969d..2472a7471 100644 --- a/tests/test_statepoint_restart/materials.xml +++ b/tests/test_statepoint_restart/materials.xml @@ -3,7 +3,7 @@ - + diff --git a/tests/test_statepoint_sourcesep/materials.xml b/tests/test_statepoint_sourcesep/materials.xml index 23d7f969d..2472a7471 100644 --- a/tests/test_statepoint_sourcesep/materials.xml +++ b/tests/test_statepoint_sourcesep/materials.xml @@ -3,7 +3,7 @@ - + diff --git a/tests/test_survival_biasing/materials.xml b/tests/test_survival_biasing/materials.xml index facad016b..f271ddee2 100644 --- a/tests/test_survival_biasing/materials.xml +++ b/tests/test_survival_biasing/materials.xml @@ -3,8 +3,8 @@ - - + + diff --git a/tests/test_tallies/inputs_true.dat b/tests/test_tallies/inputs_true.dat index f5390eea1..5f4bebb0d 100644 --- a/tests/test_tallies/inputs_true.dat +++ b/tests/test_tallies/inputs_true.dat @@ -1 +1 @@ -1bef757d276362fdcd9405096b4cdcbd894f9215ed406493486a45193729be446c9a12242c887f89b6e209ec5beaaacb04dee2fd61e72b4f5c6a8712b776ed6e \ No newline at end of file +96d2f92c6017e62d688e3ca245c2ff7904a92816d188d096829440cd8fcfd4f8639dc67c12d54b324081c19e1c7dd2e79c1caeac53d7826399f11766826d5410 \ No newline at end of file diff --git a/tests/test_tally_aggregation/inputs_true.dat b/tests/test_tally_aggregation/inputs_true.dat index 9c7978755..6d2990754 100644 --- a/tests/test_tally_aggregation/inputs_true.dat +++ b/tests/test_tally_aggregation/inputs_true.dat @@ -1 +1 @@ -67daf0d74cddb40ecbbc7e3793a3302866adcb1617fe2dc454dd161c06105e65027523f5e5954d80b961ba6c6abf14114b8be5c4d5b7682eaddffc1288d3e7c8 \ No newline at end of file +4a4e481b9af3612c71bdc93245011555807061bbd9d9be4c5b399f2c38820d38d9ce3ac6255d045415a216737eac65fb0f0b6e331e49b90bf8edc814d0f2f0e8 \ No newline at end of file diff --git a/tests/test_tally_arithmetic/inputs_true.dat b/tests/test_tally_arithmetic/inputs_true.dat index b56c17b6b..b0da0ed24 100644 --- a/tests/test_tally_arithmetic/inputs_true.dat +++ b/tests/test_tally_arithmetic/inputs_true.dat @@ -1 +1 @@ -c8772a174e2162030f0315a318991085f1a5c0b054883a5f071d520e34f9ecf7d309f25700067bea8685e2b6324a19a003bd6f6ab38161ee87c95257b5a6ae69 \ No newline at end of file +6747131dad4c1efd8c87d857ce9127cb16ec883fdf5fabe309d82732d47851424273e9ad4878a335555d8b25bb0c0a15e68ac30e355ae346e9885c499e9ec979 \ No newline at end of file diff --git a/tests/test_tally_assumesep/materials.xml b/tests/test_tally_assumesep/materials.xml index f5a9e61be..8021f5f99 100644 --- a/tests/test_tally_assumesep/materials.xml +++ b/tests/test_tally_assumesep/materials.xml @@ -1,8 +1,6 @@ - 71c - @@ -59,7 +57,7 @@ - + @@ -69,7 +67,7 @@ - + @@ -128,7 +126,7 @@ - + @@ -155,7 +153,7 @@ - + @@ -182,7 +180,7 @@ - + @@ -209,7 +207,7 @@ - + @@ -236,7 +234,7 @@ - + @@ -251,7 +249,7 @@ - + @@ -266,7 +264,7 @@ - + diff --git a/tests/test_tally_nuclides/materials.xml b/tests/test_tally_nuclides/materials.xml index e9667b41f..1f89c7df6 100644 --- a/tests/test_tally_nuclides/materials.xml +++ b/tests/test_tally_nuclides/materials.xml @@ -1,8 +1,6 @@ - 71c - diff --git a/tests/test_tally_slice_merge/inputs_true.dat b/tests/test_tally_slice_merge/inputs_true.dat index 16d11b6d2..7a747e6b5 100644 --- a/tests/test_tally_slice_merge/inputs_true.dat +++ b/tests/test_tally_slice_merge/inputs_true.dat @@ -1 +1 @@ -a17354ce54bcb5ce93e861ae95fd932c45fe60c733d999aa180d5dee636f43130fac5b003c615e23c65d44fe55f376ef4c86596b78603ab217d7e37fd694074d \ No newline at end of file +144dd4059444fad5e2e4fa20681fbdc74c0e5cbf3265104a0b49d87c768798eaeb25e3c6c795bcac2eebdde784c51588006d62c9f25be96dda5c51011a76b7c1 \ No newline at end of file diff --git a/tests/test_trace/materials.xml b/tests/test_trace/materials.xml index 23d7f969d..2472a7471 100644 --- a/tests/test_trace/materials.xml +++ b/tests/test_trace/materials.xml @@ -3,7 +3,7 @@ - + diff --git a/tests/test_track_output/materials.xml b/tests/test_track_output/materials.xml index 017797aa1..5dc9a6475 100644 --- a/tests/test_track_output/materials.xml +++ b/tests/test_track_output/materials.xml @@ -4,92 +4,92 @@ - - - - - + + + + + - - - - - + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - + + + + + + + + - + diff --git a/tests/test_translation/materials.xml b/tests/test_translation/materials.xml index 23d7f969d..2472a7471 100644 --- a/tests/test_translation/materials.xml +++ b/tests/test_translation/materials.xml @@ -3,7 +3,7 @@ - + diff --git a/tests/test_trigger_batch_interval/materials.xml b/tests/test_trigger_batch_interval/materials.xml index e9667b41f..1f89c7df6 100644 --- a/tests/test_trigger_batch_interval/materials.xml +++ b/tests/test_trigger_batch_interval/materials.xml @@ -1,8 +1,6 @@ - 71c - diff --git a/tests/test_trigger_no_batch_interval/materials.xml b/tests/test_trigger_no_batch_interval/materials.xml index e9667b41f..1f89c7df6 100644 --- a/tests/test_trigger_no_batch_interval/materials.xml +++ b/tests/test_trigger_no_batch_interval/materials.xml @@ -1,8 +1,6 @@ - 71c - diff --git a/tests/test_trigger_no_status/materials.xml b/tests/test_trigger_no_status/materials.xml index e9667b41f..1f89c7df6 100644 --- a/tests/test_trigger_no_status/materials.xml +++ b/tests/test_trigger_no_status/materials.xml @@ -1,8 +1,6 @@ - 71c - diff --git a/tests/test_trigger_tallies/materials.xml b/tests/test_trigger_tallies/materials.xml index e9667b41f..1f89c7df6 100644 --- a/tests/test_trigger_tallies/materials.xml +++ b/tests/test_trigger_tallies/materials.xml @@ -1,8 +1,6 @@ - 71c - diff --git a/tests/test_triso/inputs_true.dat b/tests/test_triso/inputs_true.dat index aed053263..561877ad9 100644 --- a/tests/test_triso/inputs_true.dat +++ b/tests/test_triso/inputs_true.dat @@ -1 +1 @@ -792d82b08d5fa6ac19df668d84cb90cbbe178e8769c87b732e9616ffeb70d8cfb4096607e58cda749cb800bb48139ac72f6983e84f38237d7d55711bdd1c6d4d \ No newline at end of file +b22973093e2b0690b30fb1262a11e27004555b796c446d256cb58a1d7329888ab60c1b93729b3d74bb015b98aa434416daa2dc2aee526eb8df0e9052911f94b4 \ No newline at end of file diff --git a/tests/test_triso/test_triso.py b/tests/test_triso/test_triso.py index da5deef00..685034491 100644 --- a/tests/test_triso/test_triso.py +++ b/tests/test_triso/test_triso.py @@ -27,12 +27,12 @@ class TRISOTestHarness(PyAPITestHarness): porous_carbon = openmc.Material() porous_carbon.set_density('g/cm3', 1.0) porous_carbon.add_nuclide('C0', 1.0) - porous_carbon.add_s_alpha_beta('c_Graphite', '71t') + porous_carbon.add_s_alpha_beta('c_Graphite') ipyc = openmc.Material() ipyc.set_density('g/cm3', 1.90) ipyc.add_nuclide('C0', 1.0) - ipyc.add_s_alpha_beta('c_Graphite', '71t') + ipyc.add_s_alpha_beta('c_Graphite') sic = openmc.Material() sic.set_density('g/cm3', 3.20) @@ -42,12 +42,12 @@ class TRISOTestHarness(PyAPITestHarness): opyc = openmc.Material() opyc.set_density('g/cm3', 1.87) opyc.add_nuclide('C0', 1.0) - opyc.add_s_alpha_beta('c_Graphite', '71t') + opyc.add_s_alpha_beta('c_Graphite') graphite = openmc.Material() graphite.set_density('g/cm3', 1.1995) graphite.add_nuclide('C0', 1.0) - graphite.add_s_alpha_beta('c_Graphite', '71t') + graphite.add_s_alpha_beta('c_Graphite') # Create TRISO particles spheres = [openmc.Sphere(R=r*1e-4) @@ -93,7 +93,6 @@ class TRISOTestHarness(PyAPITestHarness): settings.export_to_xml() mats = openmc.Materials([fuel, porous_carbon, ipyc, sic, opyc, graphite]) - mats.default_xs = '71c' mats.export_to_xml() diff --git a/tests/test_uniform_fs/materials.xml b/tests/test_uniform_fs/materials.xml index 23d7f969d..2472a7471 100644 --- a/tests/test_uniform_fs/materials.xml +++ b/tests/test_uniform_fs/materials.xml @@ -3,7 +3,7 @@ - + diff --git a/tests/test_union_energy_grids/geometry.xml b/tests/test_union_energy_grids/geometry.xml deleted file mode 100644 index bc56030e1..000000000 --- a/tests/test_union_energy_grids/geometry.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - diff --git a/tests/test_union_energy_grids/materials.xml b/tests/test_union_energy_grids/materials.xml deleted file mode 100644 index ed9b38d90..000000000 --- a/tests/test_union_energy_grids/materials.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - diff --git a/tests/test_union_energy_grids/results_true.dat b/tests/test_union_energy_grids/results_true.dat deleted file mode 100644 index 0a607592c..000000000 --- a/tests/test_union_energy_grids/results_true.dat +++ /dev/null @@ -1,2 +0,0 @@ -k-combined: -3.330789E-01 2.216495E-03 diff --git a/tests/test_union_energy_grids/settings.xml b/tests/test_union_energy_grids/settings.xml deleted file mode 100644 index 1eb22241c..000000000 --- a/tests/test_union_energy_grids/settings.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - union - - - 10 - 5 - 1000 - - - - - -4 -4 -4 4 4 4 - - - - diff --git a/tests/test_union_energy_grids/test_union_energy_grids.py b/tests/test_union_energy_grids/test_union_energy_grids.py deleted file mode 100644 index 2a595f3e6..000000000 --- a/tests/test_union_energy_grids/test_union_energy_grids.py +++ /dev/null @@ -1,11 +0,0 @@ -#!/usr/bin/env python - -import os -import sys -sys.path.insert(0, os.pardir) -from testing_harness import TestHarness - - -if __name__ == '__main__': - harness = TestHarness('statepoint.10.*') - harness.main() diff --git a/tests/test_universe/materials.xml b/tests/test_universe/materials.xml index 23d7f969d..2472a7471 100644 --- a/tests/test_universe/materials.xml +++ b/tests/test_universe/materials.xml @@ -3,7 +3,7 @@ - + diff --git a/tests/test_void/materials.xml b/tests/test_void/materials.xml index 4768bad0b..f70c3a40f 100644 --- a/tests/test_void/materials.xml +++ b/tests/test_void/materials.xml @@ -3,8 +3,6 @@ - 71c - @@ -41,7 +39,7 @@ - + diff --git a/tests/test_volume_calc/inputs_true.dat b/tests/test_volume_calc/inputs_true.dat index e146703f3..ddfd497de 100644 --- a/tests/test_volume_calc/inputs_true.dat +++ b/tests/test_volume_calc/inputs_true.dat @@ -1 +1 @@ -102569289552d021b6803f404a0c17a9c17a40578fdba43a6ba08b77a731e0368fffa6a8a7abd48555167cb9997c6dba9ec5044c8593b12056957b7e3ec44ed0 \ No newline at end of file +382404d3061d2c847c87654ab12594ba3fbb7e3a82327da872b5fe2029018ef4d5d3376fceba5c2229ea6f85e1fb63650caf54baed3f3b0304137fde61a98d63 \ No newline at end of file diff --git a/tests/test_volume_calc/results_true.dat b/tests/test_volume_calc/results_true.dat index da6dfd2af..efd6395c3 100644 --- a/tests/test_volume_calc/results_true.dat +++ b/tests/test_volume_calc/results_true.dat @@ -3,29 +3,29 @@ Volume calculation 0 Domain 1: 31.4693 +/- 0.0721 cm^3 Domain 2: 2.0933 +/- 0.0310 cm^3 Domain 3: 2.0486 +/- 0.0307 cm^3 - Cell Nuclide Atoms Uncertainty -0 1 U235.71c 3.481769e+23 7.979991e+20 -1 1 Mo99.71c 3.481769e+22 7.979991e+19 -2 2 H1.71c 1.399770e+23 2.072914e+21 -3 2 O16.71c 6.998852e+22 1.036457e+21 -4 2 B10.71c 6.998852e+18 1.036457e+17 -5 3 H1.71c 1.369920e+23 2.051689e+21 -6 3 O16.71c 6.849599e+22 1.025844e+21 -7 3 B10.71c 6.849599e+18 1.025844e+17 + Cell Nuclide Atoms Uncertainty +0 1 U235 3.481769e+23 7.979991e+20 +1 1 Mo99 3.481769e+22 7.979991e+19 +2 2 H1 1.399770e+23 2.072914e+21 +3 2 O16 6.998852e+22 1.036457e+21 +4 2 B10 6.998852e+18 1.036457e+17 +5 3 H1 1.369920e+23 2.051689e+21 +6 3 O16 6.849599e+22 1.025844e+21 +7 3 B10 6.849599e+18 1.025844e+17 Volume calculation 1 Domain 1: 4.1419 +/- 0.0426 cm^3 Domain 2: 31.4693 +/- 0.0721 cm^3 - Material Nuclide Atoms Uncertainty -0 1 H1.71c 2.769690e+23 2.850068e+21 -1 1 O16.71c 1.384845e+23 1.425034e+21 -2 1 B10.71c 1.384845e+19 1.425034e+17 -3 2 U235.71c 3.481769e+23 7.979991e+20 -4 2 Mo99.71c 3.481769e+22 7.979991e+19 + Material Nuclide Atoms Uncertainty +0 1 H1 2.769690e+23 2.850068e+21 +1 1 O16 1.384845e+23 1.425034e+21 +2 1 B10 1.384845e+19 1.425034e+17 +3 2 U235 3.481769e+23 7.979991e+20 +4 2 Mo99 3.481769e+22 7.979991e+19 Volume calculation 2 Domain 0: 35.6112 +/- 0.0664 cm^3 - Universe Nuclide Atoms Uncertainty -0 0 H1.71c 2.769690e+23 2.850068e+21 -1 0 O16.71c 1.384845e+23 1.425034e+21 -2 0 B10.71c 1.384845e+19 1.425034e+17 -3 0 U235.71c 3.481769e+23 7.979991e+20 -4 0 Mo99.71c 3.481769e+22 7.979991e+19 + Universe Nuclide Atoms Uncertainty +0 0 H1 2.769690e+23 2.850068e+21 +1 0 O16 1.384845e+23 1.425034e+21 +2 0 B10 1.384845e+19 1.425034e+17 +3 0 U235 3.481769e+23 7.979991e+20 +4 0 Mo99 3.481769e+22 7.979991e+19 diff --git a/tests/test_volume_calc/test_volume_calc.py b/tests/test_volume_calc/test_volume_calc.py index e2c3eba79..fa267efb6 100644 --- a/tests/test_volume_calc/test_volume_calc.py +++ b/tests/test_volume_calc/test_volume_calc.py @@ -15,7 +15,7 @@ class VolumeTest(PyAPITestHarness): water.add_nuclide('H1', 2.0) water.add_nuclide('O16', 1.0) water.add_nuclide('B10', 0.0001) - water.add_s_alpha_beta('c_H_in_H2O', '71t') + water.add_s_alpha_beta('c_H_in_H2O') water.set_density('g/cc', 1.0) fuel = openmc.Material(2) @@ -24,7 +24,6 @@ class VolumeTest(PyAPITestHarness): fuel.set_density('g/cc', 4.5) materials = openmc.Materials((water, fuel)) - materials.default_xs = '71c' materials.export_to_xml() cyl = openmc.ZCylinder(1, R=1.0, boundary_type='vacuum')